diff --git a/.gitignore b/.gitignore
index 575d88cbe8d54fd9b98226418d0e4d73064c73ed..b124c8d88702c2e05e6568731f3f92889677c98f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,6 +7,7 @@
 *.orig
 *.bak
 \#*\#
+.directory
 
 # CVS recovered versions - anywhere
 .#*
@@ -48,7 +49,9 @@ doc/[Dd]oxygen/man
 # source packages - anywhere
 *.tar.bz2
 *.tar.gz
+*.tar
 *.tgz
+*.gtgz
 
 # ignore the persistent .build tag in the main directory
 /.build
diff --git a/applications/solvers/DNS/dnsFoam/dnsFoam.C b/applications/solvers/DNS/dnsFoam/dnsFoam.C
index ca4e0dcb584b61420b431965e32823ea11e8dd1a..891befab216900e04a1ec5e1c9666182b80d472d 100644
--- a/applications/solvers/DNS/dnsFoam/dnsFoam.C
+++ b/applications/solvers/DNS/dnsFoam/dnsFoam.C
@@ -41,17 +41,16 @@ Description
 
 int main(int argc, char *argv[])
 {
+    #include "setRootCase.H"
 
-#   include "setRootCase.H"
+    #include "createTime.H"
+    #include "createMeshNoClear.H"
+    #include "readTransportProperties.H"
+    #include "createFields.H"
+    #include "readTurbulenceProperties.H"
+    #include "initContinuityErrs.H"
 
-#   include "createTime.H"
-#   include "createMeshNoClear.H"
-#   include "readTransportProperties.H"
-#   include "createFields.H"
-#   include "readTurbulenceProperties.H"
-#   include "initContinuityErrs.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
     Info<< nl << "Starting time loop" << endl;
 
@@ -59,7 +58,7 @@ int main(int argc, char *argv[])
     {
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
-#       include "readPISOControls.H"
+        #include "readPISOControls.H"
 
         force.internalField() = ReImSum
         (
@@ -69,12 +68,12 @@ int main(int argc, char *argv[])
             )
         );
 
-#       include "globalProperties.H"
+        #include "globalProperties.H"
 
         fvVectorMatrix UEqn
         (
-            fvm::ddt(U) 
-          + fvm::div(phi, U) 
+            fvm::ddt(U)
+          + fvm::div(phi, U)
           - fvm::laplacian(nu, U)
          ==
             force
@@ -90,7 +89,7 @@ int main(int argc, char *argv[])
             volScalarField rUA = 1.0/UEqn.A();
 
             U = rUA*UEqn.H();
-            phi = (fvc::interpolate(U) & mesh.Sf()) 
+            phi = (fvc::interpolate(U) & mesh.Sf())
                 + fvc::ddtPhiCorr(rUA, U, phi);
 
             fvScalarMatrix pEqn
@@ -102,7 +101,7 @@ int main(int argc, char *argv[])
 
             phi -= pEqn.flux();
 
-#           include "continuityErrs.H"
+            #include "continuityErrs.H"
 
             U -= rUA*fvc::grad(p);
             U.correctBoundaryConditions();
diff --git a/applications/solvers/Lagrangian/kinematicParcelFoam/Make/files b/applications/solvers/Lagrangian/kinematicParcelFoam/Make/files
deleted file mode 100644
index a63fc64fa7371272e4c6f383b3181174750ea186..0000000000000000000000000000000000000000
--- a/applications/solvers/Lagrangian/kinematicParcelFoam/Make/files
+++ /dev/null
@@ -1,3 +0,0 @@
-kinematicParcelFoam.C
-
-EXE = $(FOAM_APPBIN)/kinematicParcelFoam
diff --git a/applications/solvers/combustion/PDRFoam/Make/options b/applications/solvers/combustion/PDRFoam/Make/options
index e765e61574002156fb224af7f32bcf8d4aef23cf..4e5b8fb9a077888bdd3802f41232ddfb6d7e4618 100644
--- a/applications/solvers/combustion/PDRFoam/Make/options
+++ b/applications/solvers/combustion/PDRFoam/Make/options
@@ -8,7 +8,7 @@ EXE_INC = \
     -I$(LIB_SRC)/sampling/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
-    -I$(LIB_SRC)/thermophysicalModels/combustion/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \
     -I$(LIB_SRC)/turbulenceModels \
     -I$(LIB_SRC)/turbulenceModels/compressible/RAS/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/laminarFlameSpeed/lnInclude \
@@ -23,7 +23,7 @@ EXE_LIBS = \
     -lmeshTools \
     -lcompressibleRASModels \
     -lbasicThermophysicalModels \
-    -lcombustionThermophysicalModels \
+    -lreactionThermophysicalModels \
     -lspecie \
     -llaminarFlameSpeedModels \
     -lfiniteVolume \
diff --git a/applications/solvers/combustion/PDRFoam/PDRFoam.C b/applications/solvers/combustion/PDRFoam/PDRFoam.C
index 89a7b7f956d2d4b5c03e06f28bb4b0ef4dd33cbc..58bea3ed998e6951352a8be4943088bb4a66ec99 100644
--- a/applications/solvers/combustion/PDRFoam/PDRFoam.C
+++ b/applications/solvers/combustion/PDRFoam/PDRFoam.C
@@ -36,7 +36,7 @@ Description
     to be appropriate by comparison with the results from the
     spectral model.
 
-    Strain effects are encorporated directly into the Xi equation
+    Strain effects are incorporated directly into the Xi equation
     but not in the algebraic approximation.  Further work need to be
     done on this issue, particularly regarding the enhanced removal rate
     caused by flame compression.  Analysis using results of the spectral
@@ -70,53 +70,52 @@ Description
 
 int main(int argc, char *argv[])
 {
-#   include "setRootCase.H"
+    #include "setRootCase.H"
 
-#   include "createTime.H"
-#   include "createMesh.H"
-#   include "readCombustionProperties.H"
-#   include "readEnvironmentalProperties.H"
-#   include "createFields.H"
-#   include "readPISOControls.H"
-#   include "initContinuityErrs.H"
-#   include "readTimeControls.H"
-#   include "CourantNo.H"
-#   include "setInitialDeltaT.H"
+    #include "createTime.H"
+    #include "createMesh.H"
+    #include "readCombustionProperties.H"
+    #include "readEnvironmentalProperties.H"
+    #include "createFields.H"
+    #include "initContinuityErrs.H"
+    #include "readTimeControls.H"
+    #include "CourantNo.H"
+    #include "setInitialDeltaT.H"
 
-scalar StCoNum = 0.0;
+    scalar StCoNum = 0.0;
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
     Info<< "\nStarting time loop\n" << endl;
 
     while (runTime.run())
     {
-#       include "readTimeControls.H"
-#       include "readPISOControls.H"
-#       include "CourantNo.H"
-#       include "setDeltaT.H"
+        #include "readTimeControls.H"
+        #include "readPISOControls.H"
+        #include "CourantNo.H"
+        #include "setDeltaT.H"
 
         runTime++;
 
         Info<< "\n\nTime = " << runTime.timeName() << endl;
 
-#       include "rhoEqn.H"
-#       include "UEqn.H"
+        #include "rhoEqn.H"
+        #include "UEqn.H"
 
         // --- PISO loop
         for (int corr=1; corr<=nCorr; corr++)
         {
-#           include "bEqn.H"
-#           include "ftEqn.H"
-#           include "huEqn.H"
-#           include "hEqn.H"
+            #include "bEqn.H"
+            #include "ftEqn.H"
+            #include "huEqn.H"
+            #include "hEqn.H"
 
             if (!ign.ignited())
             {
                 hu == h;
             }
 
-#           include "pEqn.H"
+            #include "pEqn.H"
         }
 
         turbulence->correct();
diff --git a/applications/solvers/combustion/PDRFoam/StCourantNo.H b/applications/solvers/combustion/PDRFoam/StCourantNo.H
index e529409475414941805f21949257eaac574a0f99..18d6e86a941045877155f7d01b3c844984c76965 100644
--- a/applications/solvers/combustion/PDRFoam/StCourantNo.H
+++ b/applications/solvers/combustion/PDRFoam/StCourantNo.H
@@ -31,23 +31,25 @@ Description
 \*---------------------------------------------------------------------------*/
 
 {
-scalar meanStCoNum = 0.0;
+    scalar meanStCoNum = 0.0;
 
-if (mesh.nInternalFaces())
-{
-    surfaceScalarField SfUfbyDelta = 
-        mesh.surfaceInterpolation::deltaCoeffs()
-       *mag(phiSt/fvc::interpolate(rho));
+    if (mesh.nInternalFaces())
+    {
+        surfaceScalarField SfUfbyDelta =
+            mesh.surfaceInterpolation::deltaCoeffs()
+        *mag(phiSt/fvc::interpolate(rho));
 
-    StCoNum = max(SfUfbyDelta/mesh.magSf())
-        .value()*runTime.deltaT().value();
+        StCoNum =
+            max(SfUfbyDelta/mesh.magSf()).value()
+           *runTime.deltaT().value();
 
-    meanStCoNum = (sum(SfUfbyDelta)/sum(mesh.magSf()))
-        .value()*runTime.deltaT().value();
-}
+        meanStCoNum =
+            (sum(SfUfbyDelta)/sum(mesh.magSf())).value()
+        *runTime.deltaT().value();
+    }
 
-Info<< "St courant Number mean: " << meanStCoNum
-    << " max: " << StCoNum << endl;
+    Info<< "St courant Number mean: " << meanStCoNum
+        << " max: " << StCoNum << endl;
 }
 
 // ************************************************************************* //
diff --git a/applications/solvers/combustion/PDRFoam/bEqn.H b/applications/solvers/combustion/PDRFoam/bEqn.H
index 3fd99b65eaeaed0e25ce2c7e90f19fde9ff7ccf1..cb4493154030fc42af097a77dfd9258930ac62ec 100644
--- a/applications/solvers/combustion/PDRFoam/bEqn.H
+++ b/applications/solvers/combustion/PDRFoam/bEqn.H
@@ -1,7 +1,7 @@
 tmp<fv::convectionScheme<scalar> > mvConvection
 (
     fv::convectionScheme<scalar>::New
-    (    
+    (
         mesh,
         fields,
         phi,
@@ -25,7 +25,7 @@ if (ign.ignited())
 
     // Unburnt gas density
     // ~~~~~~~~~~~~~~~~~~~
-    volScalarField rhou = thermo->rhou();
+    volScalarField rhou = thermo.rhou();
 
     // Calculate flame normal etc.
     // ~~~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/applications/solvers/combustion/PDRFoam/createFields.H b/applications/solvers/combustion/PDRFoam/createFields.H
index ba07a6dd4659b3c5e127efa8b96abd634611d42a..74a18ab6f5affe39d56ff90d41f084cd6e09e4f3 100644
--- a/applications/solvers/combustion/PDRFoam/createFields.H
+++ b/applications/solvers/combustion/PDRFoam/createFields.H
@@ -1,10 +1,11 @@
     Info<< "Reading thermophysical properties\n" << endl;
 
-    autoPtr<hhuCombustionThermo> thermo
+    autoPtr<hhuCombustionThermo> pThermo
     (
         hhuCombustionThermo::New(mesh)
     );
-    combustionMixture& composition = thermo->composition();
+    hhuCombustionThermo& thermo = pThermo();
+    basicMultiComponentMixture& composition = thermo.composition();
 
     volScalarField rho
     (
@@ -16,13 +17,13 @@
             IOobject::NO_READ,
             IOobject::AUTO_WRITE
         ),
-        thermo->rho()
+        thermo.rho()
     );
 
-    volScalarField& p = thermo->p();
-    const volScalarField& psi = thermo->psi();
-    volScalarField& h = thermo->h();
-    volScalarField& hu = thermo->hu();
+    volScalarField& p = thermo.p();
+    const volScalarField& psi = thermo.psi();
+    volScalarField& h = thermo.h();
+    volScalarField& hu = thermo.hu();
 
     volScalarField& b = composition.Y("b");
     Info<< "min(b) = " << min(b).value() << endl;
@@ -54,7 +55,7 @@
             rho,
             U,
             phi,
-            thermo()
+            thermo
         )
     );
 
diff --git a/applications/solvers/combustion/PDRFoam/hEqn.H b/applications/solvers/combustion/PDRFoam/hEqn.H
index 807792948793710b37dea4320ffcfb34ec933db2..7f5292d01a903f7931aa0015e81cb26c9250253a 100644
--- a/applications/solvers/combustion/PDRFoam/hEqn.H
+++ b/applications/solvers/combustion/PDRFoam/hEqn.H
@@ -8,5 +8,5 @@
         betav*DpDt
     );
 
-    thermo->correct();
+    thermo.correct();
 }
diff --git a/applications/solvers/combustion/PDRFoam/huEqn.H b/applications/solvers/combustion/PDRFoam/huEqn.H
index 462f271f4b75dd60c6efc390b87b9ffc959e32e6..3467bc6b751177800f70b927250e2b61926ff04b 100644
--- a/applications/solvers/combustion/PDRFoam/huEqn.H
+++ b/applications/solvers/combustion/PDRFoam/huEqn.H
@@ -13,6 +13,6 @@ if (ign.ignited())
     //+ fvm::Sp(fvc::div(muEff*fvc::grad(b)/(b + 0.001)), hu)
 
      ==
-        betav*DpDt*rho/thermo->rhou()
+        betav*DpDt*rho/thermo.rhou()
     );
 }
diff --git a/applications/solvers/combustion/PDRFoam/laminarFlameSpeed/SCOPE/SCOPELaminarFlameSpeed.H b/applications/solvers/combustion/PDRFoam/laminarFlameSpeed/SCOPE/SCOPELaminarFlameSpeed.H
index 1ff6f981bbae09ec27284867cec07f78c0292a97..1931dbbb3554e8b9747fd107b799c6e9f0e4ce4c 100644
--- a/applications/solvers/combustion/PDRFoam/laminarFlameSpeed/SCOPE/SCOPELaminarFlameSpeed.H
+++ b/applications/solvers/combustion/PDRFoam/laminarFlameSpeed/SCOPE/SCOPELaminarFlameSpeed.H
@@ -196,8 +196,7 @@ public:
 
 
     // Destructor
-
-        ~SCOPE();
+    ~SCOPE();
 
 
     // Member functions
diff --git a/applications/solvers/combustion/PDRFoam/pEqn.H b/applications/solvers/combustion/PDRFoam/pEqn.H
index 312de8301a25a9f843956a817d4f1beb5c27c475..524c8eac74935856805699ace15ed3bc019fb29b 100644
--- a/applications/solvers/combustion/PDRFoam/pEqn.H
+++ b/applications/solvers/combustion/PDRFoam/pEqn.H
@@ -1,4 +1,4 @@
-rho = thermo->rho();
+rho = thermo.rho();
 
 volScalarField rUA = 1.0/UEqn.A();
 U = invA & UEqn.H();
@@ -8,7 +8,7 @@ if (transonic)
     surfaceScalarField phid
     (
         "phid",
-        fvc::interpolate(thermo->psi())
+        fvc::interpolate(psi)
        *(
             (fvc::interpolate(U) & mesh.Sf())
           + fvc::ddtPhiCorr(rUA, rho, U, phi)
@@ -34,7 +34,7 @@ if (transonic)
 }
 else
 {
-    phi = 
+    phi =
         fvc::interpolate(rho)*
         (
             (fvc::interpolate(U) & mesh.Sf())
diff --git a/applications/solvers/combustion/XiFoam/Make/options b/applications/solvers/combustion/XiFoam/Make/options
index bc89c0a716e3ef4bcfa3866e2284df73608389d6..c328b2c1b3417b0f8df438317fbf4e0376cdbe0b 100644
--- a/applications/solvers/combustion/XiFoam/Make/options
+++ b/applications/solvers/combustion/XiFoam/Make/options
@@ -2,7 +2,7 @@ EXE_INC = \
     -I$(LIB_SRC)/engine/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
-    -I$(LIB_SRC)/thermophysicalModels/combustion/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \
     -I$(LIB_SRC)/turbulenceModels/compressible/turbulenceModel \
     -I$(LIB_SRC)/thermophysicalModels/laminarFlameSpeed/lnInclude \
     -I$(LIB_SRC)/sampling/lnInclude \
@@ -13,7 +13,7 @@ EXE_LIBS = \
     -lcompressibleRASModels \
     -lcompressibleLESModels \
     -lbasicThermophysicalModels \
-    -lcombustionThermophysicalModels \
+    -lreactionThermophysicalModels \
     -lspecie \
     -llaminarFlameSpeedModels \
     -lfiniteVolume \
diff --git a/applications/solvers/combustion/XiFoam/XiFoam.C b/applications/solvers/combustion/XiFoam/XiFoam.C
index d18ef0d2f4b91086fcd6bcdd93ad12a5942eb523..13a464a7550a5907d680772c21f565537eb37f2c 100644
--- a/applications/solvers/combustion/XiFoam/XiFoam.C
+++ b/applications/solvers/combustion/XiFoam/XiFoam.C
@@ -61,55 +61,54 @@ Description
 
 int main(int argc, char *argv[])
 {
-#   include "setRootCase.H"
-
-#   include "createTime.H"
-#   include "createMesh.H"
-#   include "readCombustionProperties.H"
-#   include "readEnvironmentalProperties.H"
-#   include "createFields.H"
-#   include "readPISOControls.H"
-#   include "initContinuityErrs.H"
-#   include "readTimeControls.H"
-#   include "compressibleCourantNo.H"
-#   include "setInitialDeltaT.H"
+    #include "setRootCase.H"
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+    #include "createTime.H"
+    #include "createMesh.H"
+    #include "readCombustionProperties.H"
+    #include "readEnvironmentalProperties.H"
+    #include "createFields.H"
+    #include "initContinuityErrs.H"
+    #include "readTimeControls.H"
+    #include "compressibleCourantNo.H"
+    #include "setInitialDeltaT.H"
+
+    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
     Info<< "\nStarting time loop\n" << endl;
 
     while (runTime.run())
     {
-#       include "readTimeControls.H"
-#       include "readPISOControls.H"
-#       include "compressibleCourantNo.H"
-#       include "setDeltaT.H"
+        #include "readTimeControls.H"
+        #include "readPISOControls.H"
+        #include "compressibleCourantNo.H"
+        #include "setDeltaT.H"
 
         runTime++;
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
-#       include "rhoEqn.H"
-#       include "UEqn.H"
+        #include "rhoEqn.H"
+        #include "UEqn.H"
 
         // --- PISO loop
         for (int corr=1; corr<=nCorr; corr++)
         {
-#           include "ftEqn.H"
-#           include "bEqn.H"
-#           include "huEqn.H"
-#           include "hEqn.H"
+            #include "ftEqn.H"
+            #include "bEqn.H"
+            #include "huEqn.H"
+            #include "hEqn.H"
 
             if (!ign.ignited())
             {
                 hu == h;
             }
 
-#           include "pEqn.H"
+            #include "pEqn.H"
         }
 
         turbulence->correct();
 
-        rho = thermo->rho();
+        rho = thermo.rho();
 
         runTime.write();
 
diff --git a/applications/solvers/combustion/XiFoam/bEqn.H b/applications/solvers/combustion/XiFoam/bEqn.H
index 739d6987e833f64c06880d7b31d85351a1c77933..33ef24bfe655b2d587b7e403fbd8ee1f5d25b736 100644
--- a/applications/solvers/combustion/XiFoam/bEqn.H
+++ b/applications/solvers/combustion/XiFoam/bEqn.H
@@ -6,7 +6,7 @@ if (ign.ignited())
 
     // Unburnt gas density
     // ~~~~~~~~~~~~~~~~~~~
-    volScalarField rhou = thermo->rhou();
+    volScalarField rhou = thermo.rhou();
 
     // Calculate flame normal etc.
     // ~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -76,7 +76,7 @@ if (ign.ignited())
 
     volScalarField epsilon = pow(uPrimeCoef, 3)*turbulence->epsilon();
 
-    volScalarField tauEta = sqrt(thermo->muu()/(rhou*epsilon));
+    volScalarField tauEta = sqrt(thermo.muu()/(rhou*epsilon));
 
     volScalarField Reta = up/
     (
@@ -180,7 +180,7 @@ if (ign.ignited())
         // with a linear correction function to give a plausible profile for Xi
         // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-        volScalarField XiEqStar = 
+        volScalarField XiEqStar =
             scalar(1.001) + XiCoef*sqrt(up/(Su + SuMin))*Reta;
 
         volScalarField XiEq =
diff --git a/applications/solvers/combustion/XiFoam/createFields.H b/applications/solvers/combustion/XiFoam/createFields.H
index 812188640279377c734494a62d05365bf982f28c..ef16bd615c9bef3cfd86788e8fbd5a8a2bb879f3 100644
--- a/applications/solvers/combustion/XiFoam/createFields.H
+++ b/applications/solvers/combustion/XiFoam/createFields.H
@@ -1,10 +1,11 @@
     Info<< "Reading thermophysical properties\n" << endl;
 
-    autoPtr<hhuCombustionThermo> thermo
+    autoPtr<hhuCombustionThermo> pThermo
     (
         hhuCombustionThermo::New(mesh)
     );
-    combustionMixture& composition = thermo->composition();
+    hhuCombustionThermo& thermo = pThermo();
+    basicMultiComponentMixture& composition = thermo.composition();
 
     volScalarField rho
     (
@@ -16,18 +17,18 @@
             IOobject::NO_READ,
             IOobject::AUTO_WRITE
         ),
-        thermo->rho()
+        thermo.rho()
     );
 
-    volScalarField& p = thermo->p();
-    const volScalarField& psi = thermo->psi();
-    volScalarField& h = thermo->h();
-    volScalarField& hu = thermo->hu();
+    volScalarField& p = thermo.p();
+    const volScalarField& psi = thermo.psi();
+    volScalarField& h = thermo.h();
+    volScalarField& hu = thermo.hu();
 
     volScalarField& b = composition.Y("b");
     Info<< "min(b) = " << min(b).value() << endl;
 
-    const volScalarField& T = thermo->T();
+    const volScalarField& T = thermo.T();
 
 
     Info<< "\nReading field U\n" << endl;
@@ -55,7 +56,7 @@
             rho,
             U,
             phi,
-            thermo()
+            thermo
         )
     );
 
diff --git a/applications/solvers/combustion/XiFoam/hEqn.H b/applications/solvers/combustion/XiFoam/hEqn.H
index 2a5204aa8d21bbc24d91eb0f6d9c29d1f43149a0..ebce30e24e50dee92824de875abfa138f0abf3b1 100644
--- a/applications/solvers/combustion/XiFoam/hEqn.H
+++ b/applications/solvers/combustion/XiFoam/hEqn.H
@@ -8,5 +8,5 @@
         DpDt
     );
 
-    thermo->correct();
+    thermo.correct();
 }
diff --git a/applications/solvers/combustion/XiFoam/huEqn.H b/applications/solvers/combustion/XiFoam/huEqn.H
index 2f001b003265fca1aeeb2be7dd223546bf845bb3..0b4068344bc8b74a46691ba7ed205c6cd4efc9ba 100644
--- a/applications/solvers/combustion/XiFoam/huEqn.H
+++ b/applications/solvers/combustion/XiFoam/huEqn.H
@@ -13,6 +13,6 @@ if (ign.ignited())
     //+ fvm::Sp(fvc::div(muEff*fvc::grad(b)/(b + 0.001)), hu)
 
      ==
-        DpDt*rho/thermo->rhou()
+        DpDt*rho/thermo.rhou()
     );
 }
diff --git a/applications/solvers/combustion/XiFoam/pEqn.H b/applications/solvers/combustion/XiFoam/pEqn.H
index 05db89627dabf5400a98c2e6a37784dcb9cc53cd..9443f909a356699185bfbc8497cf46e26fd1ed3b 100644
--- a/applications/solvers/combustion/XiFoam/pEqn.H
+++ b/applications/solvers/combustion/XiFoam/pEqn.H
@@ -1,4 +1,4 @@
-rho = thermo->rho();
+rho = thermo.rho();
 
 volScalarField rUA = 1.0/UEqn.A();
 U = rUA*UEqn.H();
@@ -8,7 +8,7 @@ if (transonic)
     surfaceScalarField phid
     (
         "phid",
-        fvc::interpolate(thermo->psi())
+        fvc::interpolate(psi)
        *(
             (fvc::interpolate(U) & mesh.Sf())
           + fvc::ddtPhiCorr(rUA, rho, U, phi)
@@ -34,9 +34,9 @@ if (transonic)
 }
 else
 {
-    phi = 
-        fvc::interpolate(rho)*
-        (
+    phi =
+        fvc::interpolate(rho)
+       *(
             (fvc::interpolate(U) & mesh.Sf())
           + fvc::ddtPhiCorr(rUA, rho, U, phi)
         );
diff --git a/applications/solvers/combustion/coldEngineFoam/Make/options b/applications/solvers/combustion/coldEngineFoam/Make/options
index 028498cc6304a59ec1903c7aa206eaac2c4f5cc3..53aa22b25a476812ba4e06f10cf17291d7b031f2 100644
--- a/applications/solvers/combustion/coldEngineFoam/Make/options
+++ b/applications/solvers/combustion/coldEngineFoam/Make/options
@@ -4,7 +4,7 @@ EXE_INC = \
     -I$(LIB_SRC)/engine/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
-    -I$(LIB_SRC)/thermophysicalModels/combustion/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \
     -I$(LIB_SRC)/turbulenceModels/compressible/turbulenceModel \
     -I$(LIB_SRC)/finiteVolume/lnInclude
 
diff --git a/applications/solvers/combustion/coldEngineFoam/coldEngineFoam.C b/applications/solvers/combustion/coldEngineFoam/coldEngineFoam.C
index ddb4c3553009eb6acb7284c01e7c1f6517dfb89e..67def3fb5901fc279f6e51754b2c7070d658b185 100644
--- a/applications/solvers/combustion/coldEngineFoam/coldEngineFoam.C
+++ b/applications/solvers/combustion/coldEngineFoam/coldEngineFoam.C
@@ -33,7 +33,7 @@ Description
 #include "fvCFD.H"
 #include "engineTime.H"
 #include "engineMesh.H"
-#include "basicThermo.H"
+#include "basicPsiThermo.H"
 #include "turbulenceModel.H"
 #include "OFstream.H"
 
@@ -41,27 +41,27 @@ Description
 
 int main(int argc, char *argv[])
 {
-#   include "setRootCase.H"
+    #include "setRootCase.H"
 
-#   include "createEngineTime.H"
-#   include "createEngineMesh.H"
-#   include "createFields.H"
-#   include "initContinuityErrs.H"
-#   include "readEngineTimeControls.H"
-#   include "compressibleCourantNo.H"
-#   include "setInitialDeltaT.H"
-#   include "startSummary.H"
+    #include "createEngineTime.H"
+    #include "createEngineMesh.H"
+    #include "createFields.H"
+    #include "initContinuityErrs.H"
+    #include "readEngineTimeControls.H"
+    #include "compressibleCourantNo.H"
+    #include "setInitialDeltaT.H"
+    #include "startSummary.H"
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
     Info<< "\nStarting time loop\n" << endl;
 
     while (runTime.run())
     {
-#       include "readPISOControls.H"
-#       include "readEngineTimeControls.H"
-#       include "compressibleCourantNo.H"
-#       include "setDeltaT.H"
+        #include "readPISOControls.H"
+        #include "readEngineTimeControls.H"
+        #include "compressibleCourantNo.H"
+        #include "setDeltaT.H"
 
         runTime++;
 
@@ -70,22 +70,22 @@ int main(int argc, char *argv[])
 
         mesh.move();
 
-#       include "rhoEqn.H"
+        #include "rhoEqn.H"
 
-#       include "UEqn.H"
+        #include "UEqn.H"
 
         // --- PISO loop
         for (int corr=1; corr<=nCorr; corr++)
         {
-#           include "hEqn.H"
-#           include "pEqn.H"
+            #include "hEqn.H"
+            #include "pEqn.H"
         }
 
         turbulence->correct();
 
         runTime.write();
 
-#       include "logSummary.H"
+        #include "logSummary.H"
 
         Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s"
             << "  ClockTime = " << runTime.elapsedClockTime() << " s"
diff --git a/applications/solvers/combustion/coldEngineFoam/createFields.H b/applications/solvers/combustion/coldEngineFoam/createFields.H
index 7a369df4721e96dd98cf3d86d3d581d86ba59ef2..6bc3139ce6f070445cc5e55ba3b3df839522ab50 100644
--- a/applications/solvers/combustion/coldEngineFoam/createFields.H
+++ b/applications/solvers/combustion/coldEngineFoam/createFields.H
@@ -1,9 +1,10 @@
     Info<< "Reading thermophysical properties\n" << endl;
 
-    autoPtr<basicThermo> thermo
+    autoPtr<basicPsiThermo> pThermo
     (
-        basicThermo::New(mesh)
+        basicPsiThermo::New(mesh)
     );
+    basicPsiThermo& thermo = pThermo();
 
     volScalarField rho
     (
@@ -15,13 +16,13 @@
             IOobject::NO_READ,
             IOobject::AUTO_WRITE
         ),
-        thermo->rho()
+        thermo.rho()
     );
 
-    volScalarField& p = thermo->p();
-    const volScalarField& psi = thermo->psi();
-    volScalarField& h = thermo->h();
-    const volScalarField& T = thermo->T();
+    volScalarField& p = thermo.p();
+    const volScalarField& psi = thermo.psi();
+    volScalarField& h = thermo.h();
+    const volScalarField& T = thermo.T();
 
 
     Info<< "\nReading field U\n" << endl;
@@ -38,7 +39,7 @@
         mesh
     );
 
-#   include "compressibleCreatePhi.H"
+    #include "compressibleCreatePhi.H"
 
 
     Info<< "Creating turbulence model\n" << endl;
@@ -49,7 +50,7 @@
             rho,
             U,
             phi,
-            thermo()
+            thermo
         )
     );
 
diff --git a/applications/solvers/combustion/coldEngineFoam/hEqn.H b/applications/solvers/combustion/coldEngineFoam/hEqn.H
index f72ef0c89cb973b0150b3ec889b51c5be403b872..ae60d3316ec77061804e629360ed13f6cd891f68 100644
--- a/applications/solvers/combustion/coldEngineFoam/hEqn.H
+++ b/applications/solvers/combustion/coldEngineFoam/hEqn.H
@@ -8,5 +8,5 @@
         DpDt
     );
 
-    thermo->correct();
+    thermo.correct();
 }
diff --git a/applications/solvers/combustion/dieselEngineFoam/Make/options b/applications/solvers/combustion/dieselEngineFoam/Make/options
index 20f008d331ae504b3059652a3e2e9908a373665a..60558513fe28ea936712ecf14e78588ea4a4e1fe 100644
--- a/applications/solvers/combustion/dieselEngineFoam/Make/options
+++ b/applications/solvers/combustion/dieselEngineFoam/Make/options
@@ -7,10 +7,10 @@ EXE_INC = \
     -I$(LIB_SRC)/thermophysicalModels/liquidMixture/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/thermophysicalFunctions/lnInclude \
-    -I$(LIB_SRC)/thermophysicalModels/combustion/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/laminarFlameSpeed/lnInclude \
-    -I$(LIB_SRC)/../applications/solvers/combustion/XiFoam \
+    -I$(LIB_SRC)/../applications/solvers/reactionThermo/XiFoam \
     -I$(LIB_SRC)/thermophysicalModels/chemistryModel/lnInclude \
     -I$(LIB_SRC)/ODE/lnInclude \
     -I$(LIB_SRC)/engine/lnInclude \
@@ -20,7 +20,7 @@ EXE_LIBS = \
     -lengine \
     -lcompressibleRASModels \
     -lcompressibleLESModels \
-    -lcombustionThermophysicalModels \
+    -lreactionThermophysicalModels \
     -lfiniteVolume \
     -llagrangian \
     -ldieselSpray \
diff --git a/applications/solvers/combustion/dieselEngineFoam/YEqn.H b/applications/solvers/combustion/dieselEngineFoam/YEqn.H
index 2f74884bbdec649240d2a0c7c4c93ec43f245d53..9d46c0d6111aa2e759816f385277f8371c3ab538 100644
--- a/applications/solvers/combustion/dieselEngineFoam/YEqn.H
+++ b/applications/solvers/combustion/dieselEngineFoam/YEqn.H
@@ -14,7 +14,7 @@ tmp<fv::convectionScheme<scalar> > mvConvection
     label inertIndex = -1;
     volScalarField Yt = 0.0*Y[0];
 
-    for(label i=0; i<Y.size(); i++)
+    for (label i=0; i<Y.size(); i++)
     {
         if (Y[i].name() != inertSpecie)
         {
@@ -39,8 +39,7 @@ tmp<fv::convectionScheme<scalar> > mvConvection
             inertIndex = i;
         }
     }
-    
+
     Y[inertIndex] = scalar(1) - Yt;
     Y[inertIndex].max(0.0);
-
 }
diff --git a/applications/solvers/combustion/dieselEngineFoam/createFields.H b/applications/solvers/combustion/dieselEngineFoam/createFields.H
index cf0532b0f3a9079454779e4cb04a1054277129b3..9d9229cc3c1dbed27219d4e53ff49af24f78767d 100644
--- a/applications/solvers/combustion/dieselEngineFoam/createFields.H
+++ b/applications/solvers/combustion/dieselEngineFoam/createFields.H
@@ -1,13 +1,17 @@
 Info<< nl << "Reading thermophysicalProperties" << endl;
-autoPtr<hCombustionThermo> thermo
+
+autoPtr<psiChemistryModel> pChemistry
 (
-    hCombustionThermo::New(mesh)
+    psiChemistryModel::New(mesh)
 );
+psiChemistryModel& chemistry = pChemistry();
+
+hCombustionThermo& thermo = chemistry.thermo();
 
-combustionMixture& composition = thermo->composition();
+basicMultiComponentMixture& composition = thermo.composition();
 PtrList<volScalarField>& Y = composition.Y();
 
-word inertSpecie(thermo->lookup("inertSpecie"));
+word inertSpecie(thermo.lookup("inertSpecie"));
 
 volScalarField rho
 (
@@ -17,7 +21,7 @@ volScalarField rho
         runTime.timeName(),
         mesh
     ),
-    thermo->rho()
+    thermo.rho()
 );
 
 Info<< "Reading field U\n" << endl;
@@ -35,10 +39,10 @@ volVectorField U
 );
 
 
-volScalarField& p = thermo->p();
-const volScalarField& psi = thermo->psi();
-const volScalarField& T = thermo->T();
-volScalarField& h = thermo->h();
+volScalarField& p = thermo.p();
+const volScalarField& psi = thermo.psi();
+const volScalarField& T = thermo.T();
+volScalarField& h = thermo.h();
 
 
 #include "compressibleCreatePhi.H"
@@ -65,7 +69,7 @@ autoPtr<compressible::turbulenceModel> turbulence
         rho,
         U,
         phi,
-        thermo()
+        thermo
     )
 );
 
@@ -73,31 +77,11 @@ Info<< "Creating field DpDt\n" << endl;
 volScalarField DpDt =
     fvc::DDt(surfaceScalarField("phiU", phi/fvc::interpolate(rho)), p);
 
-Info << "Constructing chemical mechanism" << endl;
-chemistryModel chemistry
-(
-    thermo(),
-    rho
-);
 
 multivariateSurfaceInterpolationScheme<scalar>::fieldTable fields;
 
-for(label i=0; i<Y.size(); i++)
+forAll (Y, i)
 {
     fields.add(Y[i]);
 }
 fields.add(h);
-
-volScalarField dQ
-(
-    IOobject
-    (
-        "dQ",
-        runTime.timeName(),
-        mesh,
-        IOobject::NO_READ,
-        IOobject::AUTO_WRITE
-    ),
-    mesh,
-    dimensionedScalar("zero", dimensionSet(1,-3,-1,0,0,0,0), 0.0)
-);
diff --git a/applications/solvers/combustion/dieselEngineFoam/createSpray.H b/applications/solvers/combustion/dieselEngineFoam/createSpray.H
index ac473957e5d1e86395509f79c2175c4f8039bc4d..4bc1a32f11becdd7e88f040685a97ae98be7e4e3 100644
--- a/applications/solvers/combustion/dieselEngineFoam/createSpray.H
+++ b/applications/solvers/combustion/dieselEngineFoam/createSpray.H
@@ -1,14 +1,15 @@
 Info << "Constructing Spray" << endl;
 
-PtrList<specieProperties> gasProperties(Y.size());
+PtrList<gasThermoPhysics> gasProperties(Y.size());
 forAll(gasProperties, i)
 {
     gasProperties.set
     (
         i,
-        new specieProperties
+        new gasThermoPhysics
         (
-            dynamic_cast<const reactingMixture&>(thermo()).speciesData()[i]
+            dynamic_cast<const reactingMixture<gasThermoPhysics>&>
+                (thermo).speciesData()[i]
         )
     );
 }
diff --git a/applications/solvers/combustion/dieselEngineFoam/dieselEngineFoam.C b/applications/solvers/combustion/dieselEngineFoam/dieselEngineFoam.C
index 927afe9bc28e486ad50704f7b9ad2daecbe88ba8..ba910bcf56e2bd70d03251deb46429622fb3a0af 100644
--- a/applications/solvers/combustion/dieselEngineFoam/dieselEngineFoam.C
+++ b/applications/solvers/combustion/dieselEngineFoam/dieselEngineFoam.C
@@ -36,40 +36,41 @@ Description
 #include "hCombustionThermo.H"
 #include "turbulenceModel.H"
 #include "spray.H"
-#include "chemistryModel.H"
+#include "psiChemistryModel.H"
 #include "chemistrySolver.H"
 #include "multivariateScheme.H"
 #include "Switch.H"
 #include "OFstream.H"
 #include "volPointInterpolation.H"
+#include "thermoPhysicsTypes.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 int main(int argc, char *argv[])
 {
-#   include "setRootCase.H"
-#   include "createEngineTime.H"
-#   include "createEngineMesh.H"
-#   include "createFields.H"
-#   include "readEnvironmentalProperties.H"
-#   include "readCombustionProperties.H"
-#   include "createSpray.H"
-#   include "initContinuityErrs.H"
-#   include "readEngineTimeControls.H"
-#   include "compressibleCourantNo.H"
-#   include "setInitialDeltaT.H"
-#   include "startSummary.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+    #include "setRootCase.H"
+    #include "createEngineTime.H"
+    #include "createEngineMesh.H"
+    #include "createFields.H"
+    #include "readEnvironmentalProperties.H"
+    #include "readCombustionProperties.H"
+    #include "createSpray.H"
+    #include "initContinuityErrs.H"
+    #include "readEngineTimeControls.H"
+    #include "compressibleCourantNo.H"
+    #include "setInitialDeltaT.H"
+    #include "startSummary.H"
+
+    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
     Info << "\nStarting time loop\n" << endl;
 
     while (runTime.run())
     {
-#       include "readPISOControls.H"
-#       include "readEngineTimeControls.H"
-#       include "compressibleCourantNo.H"
-#       include "setDeltaT.H"
+        #include "readPISOControls.H"
+        #include "readEngineTimeControls.H"
+        #include "compressibleCourantNo.H"
+        #include "setDeltaT.H"
 
         runTime++;
 
@@ -101,27 +102,27 @@ int main(int argc, char *argv[])
             kappa = (runTime.deltaT() + tc)/(runTime.deltaT() + tc + tk);
         }
 
-#       include "rhoEqn.H"
-#       include "UEqn.H"
+        #include "rhoEqn.H"
+        #include "UEqn.H"
 
         for (label ocorr=1; ocorr <= nOuterCorr; ocorr++)
         {
-#           include "YEqn.H"
-#           include "hEqn.H"
+            #include "YEqn.H"
+            #include "hEqn.H"
 
             // --- PISO loop
             for (int corr=1; corr<=nCorr; corr++)
             {
-#               include "pEqn.H"
+                #include "pEqn.H"
             }
         }
 
         turbulence->correct();
 
-#       include "logSummary.H"
-#       include "spraySummary.H"
+        #include "logSummary.H"
+        #include "spraySummary.H"
 
-        rho = thermo->rho();
+        rho = thermo.rho();
 
         runTime.write();
 
diff --git a/applications/solvers/combustion/dieselEngineFoam/hEqn.H b/applications/solvers/combustion/dieselEngineFoam/hEqn.H
index 347fef1a9c33231900aeecc5703f7e120f26fc4c..0406f7fbd492100a3814d0531ef25487636df4c1 100644
--- a/applications/solvers/combustion/dieselEngineFoam/hEqn.H
+++ b/applications/solvers/combustion/dieselEngineFoam/hEqn.H
@@ -9,32 +9,5 @@
      + dieselSpray.heatTransferSource()
     );
 
-    thermo->correct();
-
-    forAll(dQ, i)
-    {
-        dQ[i] = 0.0;
-    }
-
-    scalarField cp(dQ.size(), 0.0);
-
-    forAll(Y, i)
-    {
-        volScalarField RRi = chemistry.RR(i);
-
-        forAll(h, celli)
-        {
-            scalar Ti = T[celli];
-            cp[celli] += Y[i][celli]*chemistry.specieThermo()[i].Cp(Ti);
-            scalar hi = chemistry.specieThermo()[i].h(Ti);
-            scalar RR = RRi[celli];
-            dQ[celli] -= hi*RR;
-        }
-
-    }
-
-    forAll(dQ, celli)
-    {
-        dQ[celli] /= cp[celli];
-    }
+    thermo.correct();
 }
diff --git a/applications/solvers/combustion/dieselEngineFoam/pEqn.H b/applications/solvers/combustion/dieselEngineFoam/pEqn.H
index 0324a47ce01ecdc7496cdacc24b3a137b01fb703..b68ae732962c2e1f26c46876b69efae206eaaa45 100644
--- a/applications/solvers/combustion/dieselEngineFoam/pEqn.H
+++ b/applications/solvers/combustion/dieselEngineFoam/pEqn.H
@@ -1,4 +1,4 @@
-rho = thermo->rho();
+rho = thermo.rho();
 
 volScalarField A = UEqn.A();
 U = UEqn.H()/A;
@@ -8,7 +8,7 @@ if (transonic)
     surfaceScalarField phid
     (
         "phid",
-        fvc::interpolate(thermo->psi())
+        fvc::interpolate(psi)
        *((fvc::interpolate(U) & mesh.Sf()) - fvc::meshPhi(rho, U))
     );
 
diff --git a/applications/solvers/combustion/dieselEngineFoam/rhoEqn.H b/applications/solvers/combustion/dieselEngineFoam/rhoEqn.H
index 396bf33f300d9549874fafa6aa92ae9b28d3a895..dd396486d35d57a7b96baeb69c944e461ab7c11f 100644
--- a/applications/solvers/combustion/dieselEngineFoam/rhoEqn.H
+++ b/applications/solvers/combustion/dieselEngineFoam/rhoEqn.H
@@ -44,7 +44,7 @@ volScalarField Sevap
     dimensionedScalar("zero", dimensionSet(1, -3, -1, 0, 0), 0.0)
 );
 
-for(label i=0; i<Y.size(); i++)
+for (label i=0; i<Y.size(); i++)
 {
     if (dieselSpray.isLiquidFuel()[i])
     {
diff --git a/applications/solvers/combustion/dieselEngineFoam/spraySummary.H b/applications/solvers/combustion/dieselEngineFoam/spraySummary.H
index 5b251e22902437f4b4bf964ee25c3d9c3169e90e..31337d0a77ee0dea6b686bd8f1c2b551d317329a 100644
--- a/applications/solvers/combustion/dieselEngineFoam/spraySummary.H
+++ b/applications/solvers/combustion/dieselEngineFoam/spraySummary.H
@@ -1,30 +1,30 @@
-        label Nparcels = dieselSpray.size();
-        reduce(Nparcels, sumOp<label>());
+    label Nparcels = dieselSpray.size();
+    reduce(Nparcels, sumOp<label>());
 
-        Info<< "\nNumber of parcels in system.... | "
-            << Nparcels << endl
-            << "Injected liquid mass........... | "
-            << 1e6*dieselSpray.injectedMass(runTime.value()) << " mg" << endl
-            << "Liquid Mass in system.......... | "
-            << 1e6*dieselSpray.liquidMass() << " mg" << endl
-            << "SMD, Dmax...................... | "
-            << dieselSpray.smd()*1e6 << " mu, "
-            << dieselSpray.maxD()*1e6 << " mu"
-            << endl;
+    Info<< "\nNumber of parcels in system.... | "
+        << Nparcels << endl
+        << "Injected liquid mass........... | "
+        << 1e6*dieselSpray.injectedMass(runTime.value()) << " mg" << endl
+        << "Liquid Mass in system.......... | "
+        << 1e6*dieselSpray.liquidMass() << " mg" << endl
+        << "SMD, Dmax...................... | "
+        << dieselSpray.smd()*1e6 << " mu, "
+        << dieselSpray.maxD()*1e6 << " mu"
+        << endl;
 
-        scalar evapMass =
-            dieselSpray.injectedMass(runTime.value())
-          - dieselSpray.liquidMass();
+    scalar evapMass =
+        dieselSpray.injectedMass(runTime.value())
+    - dieselSpray.liquidMass();
 
-        scalar gasMass = fvc::domainIntegrate(rho).value();
+    scalar gasMass = fvc::domainIntegrate(rho).value();
 
-        if (dieselSpray.twoD())
-        {
-            gasMass *= 2.0*mathematicalConstant::pi/dieselSpray.angleOfWedge();
-        }
+    if (dieselSpray.twoD())
+    {
+        gasMass *= 2.0*mathematicalConstant::pi/dieselSpray.angleOfWedge();
+    }
 
-        scalar addedMass = gasMass - gasMass0;
+    scalar addedMass = gasMass - gasMass0;
 
-        Info<< "Added gas mass................. | " << 1e6*addedMass << " mg"
-            << nl << "Evaporation Continuity Error... | "
-            << 1e6*(addedMass - evapMass) << " mg" << endl;
+    Info<< "Added gas mass................. | " << 1e6*addedMass << " mg"
+        << nl << "Evaporation Continuity Error... | "
+        << 1e6*(addedMass - evapMass) << " mg" << endl;
diff --git a/applications/solvers/combustion/dieselFoam/Make/options b/applications/solvers/combustion/dieselFoam/Make/options
index 44d527b0628afd5941de71c0cb41ae0b094be99b..28605eb830357a8aedb735b6d9b13a7a0c721897 100644
--- a/applications/solvers/combustion/dieselFoam/Make/options
+++ b/applications/solvers/combustion/dieselFoam/Make/options
@@ -8,17 +8,17 @@ EXE_INC = \
     -I$(LIB_SRC)/thermophysicalModels/liquidMixture/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/thermophysicalFunctions/lnInclude \
-    -I$(LIB_SRC)/thermophysicalModels/combustion/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/laminarFlameSpeed/lnInclude \
-    -I$(LIB_SRC)/../applications/solvers/combustion/XiFoam \
+    -I$(LIB_SRC)/../applications/solvers/reactionThermo/XiFoam \
     -I$(LIB_SRC)/thermophysicalModels/chemistryModel/lnInclude \
     -I$(LIB_SRC)/ODE/lnInclude
 
 EXE_LIBS = \
     -lcompressibleRASModels \
     -lcompressibleLESModels \
-    -lcombustionThermophysicalModels \
+    -lreactionThermophysicalModels \
     -llagrangian \
     -ldieselSpray \
     -lliquids \
diff --git a/applications/solvers/combustion/dieselFoam/dieselFoam.C b/applications/solvers/combustion/dieselFoam/dieselFoam.C
index 31d034bc5734e6807843059dff8eea02e17474a8..11cd91a488e349464b1b7eb8f9dce31c26e3a919 100644
--- a/applications/solvers/combustion/dieselFoam/dieselFoam.C
+++ b/applications/solvers/combustion/dieselFoam/dieselFoam.C
@@ -34,7 +34,7 @@ Description
 #include "hCombustionThermo.H"
 #include "turbulenceModel.H"
 #include "spray.H"
-#include "chemistryModel.H"
+#include "psiChemistryModel.H"
 #include "chemistrySolver.H"
 
 #include "multivariateScheme.H"
@@ -46,28 +46,27 @@ Description
 
 int main(int argc, char *argv[])
 {
-
-#   include "setRootCase.H"
-#   include "createTime.H"
-#   include "createMesh.H"
-#   include "createFields.H"
-#   include "readEnvironmentalProperties.H"
-#   include "readCombustionProperties.H"
-#   include "createSpray.H"
-#   include "initContinuityErrs.H"
-#   include "readTimeControls.H"
-#   include "compressibleCourantNo.H"
-#   include "setInitialDeltaT.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+    #include "setRootCase.H"
+    #include "createTime.H"
+    #include "createMesh.H"
+    #include "createFields.H"
+    #include "readEnvironmentalProperties.H"
+    #include "readCombustionProperties.H"
+    #include "createSpray.H"
+    #include "initContinuityErrs.H"
+    #include "readTimeControls.H"
+    #include "compressibleCourantNo.H"
+    #include "setInitialDeltaT.H"
+
+    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
     Info << "\nStarting time loop\n" << endl;
 
     while (runTime.run())
     {
-#       include "readPISOControls.H"
-#       include "compressibleCourantNo.H"
-#       include "setDeltaT.H"
+        #include "readPISOControls.H"
+        #include "compressibleCourantNo.H"
+        #include "setDeltaT.H"
 
         runTime++;
         Info<< "Time = " << runTime.timeName() << nl << endl;
@@ -94,26 +93,26 @@ int main(int argc, char *argv[])
             kappa = (runTime.deltaT() + tc)/(runTime.deltaT()+tc+tk);
         }
 
-#       include "rhoEqn.H"
-#       include "UEqn.H"
+        #include "rhoEqn.H"
+        #include "UEqn.H"
 
         for (label ocorr=1; ocorr <= nOuterCorr; ocorr++)
         {
-#           include "YEqn.H"
-#           include "hEqn.H"
+            #include "YEqn.H"
+            #include "hEqn.H"
 
             // --- PISO loop
             for (int corr=1; corr<=nCorr; corr++)
             {
-#               include "pEqn.H"
+                #include "pEqn.H"
             }
         }
 
         turbulence->correct();
 
-#       include "spraySummary.H"
+        #include "spraySummary.H"
 
-        rho = thermo->rho();
+        rho = thermo.rho();
 
         runTime.write();
 
diff --git a/applications/solvers/combustion/dieselFoam/pEqn.H b/applications/solvers/combustion/dieselFoam/pEqn.H
index 37e63e8635cfa1bdef7ec2021711add2c9b7b464..d74947fe5305882c8958f9237c17709ce530dbb6 100644
--- a/applications/solvers/combustion/dieselFoam/pEqn.H
+++ b/applications/solvers/combustion/dieselFoam/pEqn.H
@@ -1,4 +1,4 @@
-rho = thermo->rho();
+rho = thermo.rho();
 
 volScalarField rUA = 1.0/UEqn.A();
 U = rUA*UEqn.H();
@@ -8,7 +8,7 @@ if (transonic)
     surfaceScalarField phid
     (
         "phid",
-        fvc::interpolate(thermo->psi())
+        fvc::interpolate(psi)
        *(
             (fvc::interpolate(U) & mesh.Sf())
           + fvc::ddtPhiCorr(rUA, rho, U, phi)
@@ -36,9 +36,9 @@ if (transonic)
 }
 else
 {
-    phi = 
-        fvc::interpolate(rho)*
-        (
+    phi =
+        fvc::interpolate(rho)
+       *(
             (fvc::interpolate(U) & mesh.Sf())
           + fvc::ddtPhiCorr(rUA, rho, U, phi)
         );
diff --git a/applications/solvers/combustion/engineFoam/Make/options b/applications/solvers/combustion/engineFoam/Make/options
index 3ee7cc666f34f1c9356ad4ff1178d1cb7b80be8d..31775e03d63670129e67b82980e8aae38737f19a 100644
--- a/applications/solvers/combustion/engineFoam/Make/options
+++ b/applications/solvers/combustion/engineFoam/Make/options
@@ -3,7 +3,7 @@ EXE_INC = \
     -I$(LIB_SRC)/engine/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
-    -I$(LIB_SRC)/thermophysicalModels/combustion/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \
     -I$(LIB_SRC)/turbulenceModels/compressible/turbulenceModel \
     -I$(LIB_SRC)/thermophysicalModels/laminarFlameSpeed/lnInclude \
     -I$(LIB_SRC)/finiteVolume/lnInclude
@@ -13,7 +13,7 @@ EXE_LIBS = \
     -lcompressibleRASModels \
     -lcompressibleLESModels \
     -lbasicThermophysicalModels \
-    -lcombustionThermophysicalModels \
+    -lreactionThermophysicalModels \
     -lspecie \
     -llaminarFlameSpeedModels \
     -lfiniteVolume
diff --git a/applications/solvers/combustion/engineFoam/engineFoam.C b/applications/solvers/combustion/engineFoam/engineFoam.C
index a835e8ea4295fc3d04efc3665c751c3ec504020c..9adf73cc67c167a7cbbee0474c461aea7afdafb8 100644
--- a/applications/solvers/combustion/engineFoam/engineFoam.C
+++ b/applications/solvers/combustion/engineFoam/engineFoam.C
@@ -63,29 +63,28 @@ Description
 
 int main(int argc, char *argv[])
 {
-#   include "setRootCase.H"
-
-#   include "createEngineTime.H"
-#   include "createEngineMesh.H"
-#   include "readPISOControls.H"
-#   include "readCombustionProperties.H"
-#   include "createFields.H"
-#   include "initContinuityErrs.H"
-#   include "readEngineTimeControls.H"
-#   include "compressibleCourantNo.H"
-#   include "setInitialDeltaT.H"
-#   include "startSummary.H"
+    #include "setRootCase.H"
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+    #include "createEngineTime.H"
+    #include "createEngineMesh.H"
+    #include "readCombustionProperties.H"
+    #include "createFields.H"
+    #include "initContinuityErrs.H"
+    #include "readEngineTimeControls.H"
+    #include "compressibleCourantNo.H"
+    #include "setInitialDeltaT.H"
+    #include "startSummary.H"
+
+    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
     Info << "\nStarting time loop\n" << endl;
 
     while (runTime.run())
     {
-#       include "readPISOControls.H"
-#       include "readEngineTimeControls.H"
-#       include "compressibleCourantNo.H"
-#       include "setDeltaT.H"
+        #include "readPISOControls.H"
+        #include "readEngineTimeControls.H"
+        #include "compressibleCourantNo.H"
+        #include "setDeltaT.H"
 
         runTime++;
 
@@ -93,31 +92,31 @@ int main(int argc, char *argv[])
 
         mesh.move();
 
-#       include "rhoEqn.H"
+        #include "rhoEqn.H"
 
-#       include "UEqn.H"
+        #include "UEqn.H"
 
         // --- PISO loop
         for (int corr=1; corr<=nCorr; corr++)
         {
-#           include "ftEqn.H"
-#           include "bEqn.H"
-#           include "huEqn.H"
-#           include "hEqn.H"
+            #include "ftEqn.H"
+            #include "bEqn.H"
+            #include "huEqn.H"
+            #include "hEqn.H"
 
             if (!ign.ignited())
             {
                 hu == h;
             }
 
-#           include "pEqn.H"
+            #include "pEqn.H"
         }
 
         turbulence->correct();
 
-#       include "logSummary.H"
+        #include "logSummary.H"
 
-        rho = thermo->rho();
+        rho = thermo.rho();
 
         runTime.write();
 
diff --git a/applications/solvers/combustion/engineFoam/pEqn.H b/applications/solvers/combustion/engineFoam/pEqn.H
index 638d952f1753a9ea38a5dd317c23ea543f7cc4d1..39b4967312055a320025d3ca3ba70b809fafe762 100644
--- a/applications/solvers/combustion/engineFoam/pEqn.H
+++ b/applications/solvers/combustion/engineFoam/pEqn.H
@@ -1,4 +1,4 @@
-rho = thermo->rho();
+rho = thermo.rho();
 
 volScalarField rUA = 1.0/UEqn.A();
 U = rUA*UEqn.H();
@@ -8,8 +8,8 @@ if (transonic)
     surfaceScalarField phid
     (
         "phid",
-        fvc::interpolate(thermo->psi())
-        *((fvc::interpolate(U) & mesh.Sf()) - fvc::meshPhi(rho, U))
+        fvc::interpolate(psi)
+       *((fvc::interpolate(U) & mesh.Sf()) - fvc::meshPhi(rho, U))
     );
 
     for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
diff --git a/applications/solvers/combustion/engineFoam/readEngineTimeControls.H b/applications/solvers/combustion/engineFoam/readEngineTimeControls.H
index 2aea3445eb2705ed41469074bcae777250a7f378..8d6d5f28b3b50a9d5fd54f33fd5c0a565e187b84 100644
--- a/applications/solvers/combustion/engineFoam/readEngineTimeControls.H
+++ b/applications/solvers/combustion/engineFoam/readEngineTimeControls.H
@@ -1,3 +1,3 @@
-#include "readTimeControls.H"
+    #include "readTimeControls.H"
 
     maxDeltaT = runTime.userTimeToTime(maxDeltaT);
diff --git a/applications/solvers/combustion/reactingFoam/Make/options b/applications/solvers/combustion/reactingFoam/Make/options
index 908472524a0d648dde43022a8e37bcb31941d483..e982f635a14fefba2fa2a03153961be4e1bf8fca 100644
--- a/applications/solvers/combustion/reactingFoam/Make/options
+++ b/applications/solvers/combustion/reactingFoam/Make/options
@@ -2,7 +2,7 @@ EXE_INC = \
     -I../XiFoam \
     -I$(LIB_SRC)/turbulenceModels/compressible/turbulenceModel \
     -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \
-    -I$(LIB_SRC)/thermophysicalModels/combustion/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/chemistryModel/lnInclude \
     -I$(LIB_SRC)/ODE/lnInclude \
@@ -11,7 +11,7 @@ EXE_INC = \
 EXE_LIBS = \
     -lcompressibleRASModels \
     -lcompressibleLESModels \
-    -lcombustionThermophysicalModels \
+    -lreactionThermophysicalModels \
     -lspecie \
     -lbasicThermophysicalModels \
     -lchemistryModel \
diff --git a/applications/solvers/combustion/reactingFoam/YEqn.H b/applications/solvers/combustion/reactingFoam/YEqn.H
index 873351ac9b4d4c03c6da75e907ab1eea09fdaac6..cda24ec2f72efc49c797a83bbcbb4ba2be6007b5 100644
--- a/applications/solvers/combustion/reactingFoam/YEqn.H
+++ b/applications/solvers/combustion/reactingFoam/YEqn.H
@@ -13,7 +13,7 @@ tmp<fv::convectionScheme<scalar> > mvConvection
     label inertIndex = -1;
     volScalarField Yt = 0.0*Y[0];
 
-    for(label i=0; i<Y.size(); i++)
+    for (label i=0; i<Y.size(); i++)
     {
         if (Y[i].name() != inertSpecie)
         {
@@ -37,7 +37,7 @@ tmp<fv::convectionScheme<scalar> > mvConvection
             inertIndex = i;
         }
     }
-    
+
     Y[inertIndex] = scalar(1) - Yt;
     Y[inertIndex].max(0.0);
 }
diff --git a/applications/solvers/combustion/reactingFoam/createFields.H b/applications/solvers/combustion/reactingFoam/createFields.H
index cf0532b0f3a9079454779e4cb04a1054277129b3..d92766db5498508a45847a41101c7a54f5960701 100644
--- a/applications/solvers/combustion/reactingFoam/createFields.H
+++ b/applications/solvers/combustion/reactingFoam/createFields.H
@@ -1,13 +1,16 @@
 Info<< nl << "Reading thermophysicalProperties" << endl;
-autoPtr<hCombustionThermo> thermo
+autoPtr<psiChemistryModel> pChemistry
 (
-    hCombustionThermo::New(mesh)
+    psiChemistryModel::New(mesh)
 );
+psiChemistryModel& chemistry = pChemistry();
 
-combustionMixture& composition = thermo->composition();
+hCombustionThermo& thermo = chemistry.thermo();
+
+basicMultiComponentMixture& composition = thermo.composition();
 PtrList<volScalarField>& Y = composition.Y();
 
-word inertSpecie(thermo->lookup("inertSpecie"));
+word inertSpecie(thermo.lookup("inertSpecie"));
 
 volScalarField rho
 (
@@ -17,7 +20,7 @@ volScalarField rho
         runTime.timeName(),
         mesh
     ),
-    thermo->rho()
+    thermo.rho()
 );
 
 Info<< "Reading field U\n" << endl;
@@ -35,10 +38,9 @@ volVectorField U
 );
 
 
-volScalarField& p = thermo->p();
-const volScalarField& psi = thermo->psi();
-const volScalarField& T = thermo->T();
-volScalarField& h = thermo->h();
+volScalarField& p = thermo.p();
+const volScalarField& psi = thermo.psi();
+volScalarField& h = thermo.h();
 
 
 #include "compressibleCreatePhi.H"
@@ -65,7 +67,7 @@ autoPtr<compressible::turbulenceModel> turbulence
         rho,
         U,
         phi,
-        thermo()
+        thermo
     )
 );
 
@@ -73,31 +75,11 @@ Info<< "Creating field DpDt\n" << endl;
 volScalarField DpDt =
     fvc::DDt(surfaceScalarField("phiU", phi/fvc::interpolate(rho)), p);
 
-Info << "Constructing chemical mechanism" << endl;
-chemistryModel chemistry
-(
-    thermo(),
-    rho
-);
-
 multivariateSurfaceInterpolationScheme<scalar>::fieldTable fields;
 
-for(label i=0; i<Y.size(); i++)
+forAll (Y, i)
 {
     fields.add(Y[i]);
 }
 fields.add(h);
 
-volScalarField dQ
-(
-    IOobject
-    (
-        "dQ",
-        runTime.timeName(),
-        mesh,
-        IOobject::NO_READ,
-        IOobject::AUTO_WRITE
-    ),
-    mesh,
-    dimensionedScalar("zero", dimensionSet(1,-3,-1,0,0,0,0), 0.0)
-);
diff --git a/applications/solvers/combustion/reactingFoam/reactingFoam.C b/applications/solvers/combustion/reactingFoam/reactingFoam.C
index e915818bdc14525026340f04a7e5339bcd08e740..2a9e34e577395d117645f4f88dd19c90f9add5c2 100644
--- a/applications/solvers/combustion/reactingFoam/reactingFoam.C
+++ b/applications/solvers/combustion/reactingFoam/reactingFoam.C
@@ -33,7 +33,7 @@ Description
 #include "fvCFD.H"
 #include "hCombustionThermo.H"
 #include "turbulenceModel.H"
-#include "chemistryModel.H"
+#include "psiChemistryModel.H"
 #include "chemistrySolver.H"
 #include "multivariateScheme.H"
 
@@ -41,52 +41,52 @@ Description
 
 int main(int argc, char *argv[])
 {
-#   include "setRootCase.H"
-#   include "createTime.H"
-#   include "createMesh.H"
-#   include "readChemistryProperties.H"
-#   include "readEnvironmentalProperties.H"
-#   include "createFields.H"
-#   include "initContinuityErrs.H"
-#   include "readTimeControls.H"
-#   include "compressibleCourantNo.H"
-#   include "setInitialDeltaT.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+    #include "setRootCase.H"
+    #include "createTime.H"
+    #include "createMesh.H"
+    #include "readChemistryProperties.H"
+    #include "readEnvironmentalProperties.H"
+    #include "createFields.H"
+    #include "initContinuityErrs.H"
+    #include "readTimeControls.H"
+    #include "compressibleCourantNo.H"
+    #include "setInitialDeltaT.H"
+
+    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
     Info << "\nStarting time loop\n" << endl;
 
     while (runTime.run())
     {
-#       include "readTimeControls.H"
-#       include "readPISOControls.H"
-#       include "compressibleCourantNo.H"
-#       include "setDeltaT.H"
+        #include "readTimeControls.H"
+        #include "readPISOControls.H"
+        #include "compressibleCourantNo.H"
+        #include "setDeltaT.H"
 
         runTime++;
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
-#       include "chemistry.H"
-#       include "rhoEqn.H"
-#       include "UEqn.H"
+        #include "chemistry.H"
+        #include "rhoEqn.H"
+        #include "UEqn.H"
 
         for (label ocorr=1; ocorr <= nOuterCorr; ocorr++)
         {
-#           include "YEqn.H"
+            #include "YEqn.H"
 
-#           define Db turbulence->alphaEff()
-#           include "hEqn.H"
+            #define Db turbulence->alphaEff()
+            #include "hEqn.H"
 
             // --- PISO loop
             for (int corr=1; corr<=nCorr; corr++)
             {
-#               include "pEqn.H"
+                #include "pEqn.H"
             }
         }
 
         turbulence->correct();
 
-        rho = thermo->rho();
+        rho = thermo.rho();
 
         runTime.write();
 
diff --git a/applications/solvers/combustion/reactingFoam/readChemistryProperties.H b/applications/solvers/combustion/reactingFoam/readChemistryProperties.H
index 1a60e6fb34645a004fd39321f7a54d3bd5b45381..ab51afe28361cdf65bc74af68961a6732535d6b3 100644
--- a/applications/solvers/combustion/reactingFoam/readChemistryProperties.H
+++ b/applications/solvers/combustion/reactingFoam/readChemistryProperties.H
@@ -8,7 +8,8 @@ IOdictionary chemistryProperties
         runTime.constant(),
         mesh,
         IOobject::MUST_READ,
-        IOobject::NO_WRITE
+        IOobject::NO_WRITE,
+        false
     )
 );
 
diff --git a/applications/solvers/combustion/rhoReactingFoam/Make/files b/applications/solvers/combustion/rhoReactingFoam/Make/files
new file mode 100644
index 0000000000000000000000000000000000000000..3a97a48fd60990418bf233232acce5b59a82bbb8
--- /dev/null
+++ b/applications/solvers/combustion/rhoReactingFoam/Make/files
@@ -0,0 +1,3 @@
+rhoReactingFoam.C
+
+EXE = $(FOAM_APPBIN)/rhoReactingFoam
diff --git a/applications/solvers/combustion/rhoReactingFoam/Make/options b/applications/solvers/combustion/rhoReactingFoam/Make/options
new file mode 100644
index 0000000000000000000000000000000000000000..e982f635a14fefba2fa2a03153961be4e1bf8fca
--- /dev/null
+++ b/applications/solvers/combustion/rhoReactingFoam/Make/options
@@ -0,0 +1,19 @@
+EXE_INC = \
+    -I../XiFoam \
+    -I$(LIB_SRC)/turbulenceModels/compressible/turbulenceModel \
+    -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/chemistryModel/lnInclude \
+    -I$(LIB_SRC)/ODE/lnInclude \
+    -I$(LIB_SRC)/finiteVolume/lnInclude
+
+EXE_LIBS = \
+    -lcompressibleRASModels \
+    -lcompressibleLESModels \
+    -lreactionThermophysicalModels \
+    -lspecie \
+    -lbasicThermophysicalModels \
+    -lchemistryModel \
+    -lODE \
+    -lfiniteVolume
diff --git a/applications/solvers/combustion/rhoReactingFoam/YEqn.H b/applications/solvers/combustion/rhoReactingFoam/YEqn.H
new file mode 100644
index 0000000000000000000000000000000000000000..cda24ec2f72efc49c797a83bbcbb4ba2be6007b5
--- /dev/null
+++ b/applications/solvers/combustion/rhoReactingFoam/YEqn.H
@@ -0,0 +1,43 @@
+tmp<fv::convectionScheme<scalar> > mvConvection
+(
+    fv::convectionScheme<scalar>::New
+    (
+        mesh,
+        fields,
+        phi,
+        mesh.divScheme("div(phi,Yi_h)")
+    )
+);
+
+{
+    label inertIndex = -1;
+    volScalarField Yt = 0.0*Y[0];
+
+    for (label i=0; i<Y.size(); i++)
+    {
+        if (Y[i].name() != inertSpecie)
+        {
+            volScalarField& Yi = Y[i];
+
+            solve
+            (
+                fvm::ddt(rho, Yi)
+              + mvConvection->fvmDiv(phi, Yi)
+              - fvm::laplacian(turbulence->muEff(), Yi)
+             ==
+                kappa*chemistry.RR(i),
+                mesh.solver("Yi")
+            );
+
+            Yi.max(0.0);
+            Yt += Yi;
+        }
+        else
+        {
+            inertIndex = i;
+        }
+    }
+
+    Y[inertIndex] = scalar(1) - Yt;
+    Y[inertIndex].max(0.0);
+}
diff --git a/applications/solvers/combustion/rhoReactingFoam/chemistry.H b/applications/solvers/combustion/rhoReactingFoam/chemistry.H
new file mode 100644
index 0000000000000000000000000000000000000000..d059bd9ed34f1a577175a271ef6e77360bf63bb6
--- /dev/null
+++ b/applications/solvers/combustion/rhoReactingFoam/chemistry.H
@@ -0,0 +1,24 @@
+{
+    Info << "Solving chemistry" << endl;
+
+    chemistry.solve
+    (
+        runTime.value() - runTime.deltaT().value(),
+        runTime.deltaT().value()
+    );
+
+    // turbulent time scale
+    if (turbulentReaction)
+    {
+        volScalarField tk =
+                Cmix*sqrt(turbulence->muEff()/rho/turbulence->epsilon());
+        volScalarField tc = chemistry.tc();
+
+        // Chalmers PaSR model
+        kappa = (runTime.deltaT() + tc)/(runTime.deltaT() + tc + tk);
+    }
+    else
+    {
+        kappa = 1.0;
+    }
+}
diff --git a/applications/solvers/combustion/rhoReactingFoam/createFields.H b/applications/solvers/combustion/rhoReactingFoam/createFields.H
new file mode 100644
index 0000000000000000000000000000000000000000..d44b4b9171ef0f8f965b1c4732cb21132600f4d4
--- /dev/null
+++ b/applications/solvers/combustion/rhoReactingFoam/createFields.H
@@ -0,0 +1,85 @@
+Info<< nl << "Reading thermophysicalProperties" << endl;
+autoPtr<rhoChemistryModel> pChemistry
+(
+    rhoChemistryModel::New(mesh)
+);
+rhoChemistryModel& chemistry = pChemistry();
+
+hReactionThermo& thermo = chemistry.thermo();
+
+basicMultiComponentMixture& composition = thermo.composition();
+PtrList<volScalarField>& Y = composition.Y();
+
+word inertSpecie(thermo.lookup("inertSpecie"));
+
+volScalarField rho
+(
+    IOobject
+    (
+        "rho",
+        runTime.timeName(),
+        mesh
+    ),
+    thermo.rho()
+);
+
+Info<< "Reading field U\n" << endl;
+volVectorField U
+(
+    IOobject
+    (
+        "U",
+        runTime.timeName(),
+        mesh,
+        IOobject::MUST_READ,
+        IOobject::AUTO_WRITE
+    ),
+    mesh
+);
+
+
+volScalarField& p = thermo.p();
+const volScalarField& psi = thermo.psi();
+volScalarField& h = thermo.h();
+
+
+#include "compressibleCreatePhi.H"
+
+volScalarField kappa
+(
+    IOobject
+    (
+        "kappa",
+        runTime.timeName(),
+        mesh,
+        IOobject::NO_READ,
+        IOobject::AUTO_WRITE
+    ),
+    mesh,
+    dimensionedScalar("zero", dimless, 0.0)
+);
+
+Info << "Creating turbulence model.\n" << nl;
+autoPtr<compressible::turbulenceModel> turbulence
+(
+    compressible::turbulenceModel::New
+    (
+        rho,
+        U,
+        phi,
+        thermo
+    )
+);
+
+Info<< "Creating field DpDt\n" << endl;
+volScalarField DpDt =
+    fvc::DDt(surfaceScalarField("phiU", phi/fvc::interpolate(rho)), p);
+
+multivariateSurfaceInterpolationScheme<scalar>::fieldTable fields;
+
+forAll (Y, i)
+{
+    fields.add(Y[i]);
+}
+fields.add(h);
+
diff --git a/applications/solvers/combustion/rhoReactingFoam/pEqn.H b/applications/solvers/combustion/rhoReactingFoam/pEqn.H
new file mode 100644
index 0000000000000000000000000000000000000000..a58cd28decb0cf466b393e4dda16144fd2664c54
--- /dev/null
+++ b/applications/solvers/combustion/rhoReactingFoam/pEqn.H
@@ -0,0 +1,93 @@
+{
+    rho = thermo.rho();
+
+    // Thermodynamic density needs to be updated by psi*d(p) after the
+    // pressure solution - done in 2 parts. Part 1:
+    thermo.rho() -= psi*p;
+
+    volScalarField rUA = 1.0/UEqn.A();
+    U = rUA*UEqn.H();
+
+    if (transonic)
+    {
+        surfaceScalarField phiv =
+            (fvc::interpolate(U) & mesh.Sf())
+          + fvc::ddtPhiCorr(rUA, rho, U, phi);
+
+        phi = fvc::interpolate(rho)*phiv;
+
+        surfaceScalarField phid
+        (
+            "phid",
+            fvc::interpolate(thermo.psi())*phiv
+        );
+
+        for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
+        {
+            fvScalarMatrix pEqn
+            (
+                fvc::ddt(rho) + fvc::div(phi)
+              + correction(fvm::ddt(psi, p) + fvm::div(phid, p))
+              - fvm::laplacian(rho*rUA, p)
+            );
+
+            if (ocorr == nOuterCorr && corr == nCorr && nonOrth == nNonOrthCorr)
+            {
+                pEqn.solve(mesh.solver(p.name() + "Final"));
+            }
+            else
+            {
+                pEqn.solve();
+            }
+
+            if (nonOrth == nNonOrthCorr)
+            {
+                phi += pEqn.flux();
+            }
+        }
+    }
+    else
+    {
+        phi =
+            fvc::interpolate(rho)
+           *(
+                (fvc::interpolate(U) & mesh.Sf())
+              + fvc::ddtPhiCorr(rUA, rho, U, phi)
+            );
+
+        for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
+        {
+            fvScalarMatrix pEqn
+            (
+                fvc::ddt(rho) + psi*correction(fvm::ddt(p))
+              + fvc::div(phi)
+              - fvm::laplacian(rho*rUA, p)
+            );
+
+            if (ocorr == nOuterCorr && corr == nCorr && nonOrth == nNonOrthCorr)
+            {
+                pEqn.solve(mesh.solver(p.name() + "Final"));
+            }
+            else
+            {
+                pEqn.solve();
+            }
+
+            if (nonOrth == nNonOrthCorr)
+            {
+                phi += pEqn.flux();
+            }
+        }
+    }
+
+    // Second part of thermodynamic density update
+    thermo.rho() += psi*p;
+
+    #include "rhoEqn.H"
+    #include "compressibleContinuityErrs.H"
+
+    U -= rUA*fvc::grad(p);
+    U.correctBoundaryConditions();
+
+    DpDt = fvc::DDt(surfaceScalarField("phiU", phi/fvc::interpolate(rho)), p);
+}
diff --git a/applications/solvers/combustion/rhoReactingFoam/readChemistryProperties.H b/applications/solvers/combustion/rhoReactingFoam/readChemistryProperties.H
new file mode 100644
index 0000000000000000000000000000000000000000..ab51afe28361cdf65bc74af68961a6732535d6b3
--- /dev/null
+++ b/applications/solvers/combustion/rhoReactingFoam/readChemistryProperties.H
@@ -0,0 +1,23 @@
+Info<< "Reading chemistry properties\n" << endl;
+
+IOdictionary chemistryProperties
+(
+    IOobject
+    (
+        "chemistryProperties",
+        runTime.constant(),
+        mesh,
+        IOobject::MUST_READ,
+        IOobject::NO_WRITE,
+        false
+    )
+);
+
+Switch turbulentReaction(chemistryProperties.lookup("turbulentReaction"));
+
+dimensionedScalar Cmix("Cmix", dimless, 1.0);
+
+if (turbulentReaction)
+{
+    chemistryProperties.lookup("Cmix") >> Cmix;
+}
diff --git a/applications/solvers/combustion/rhoReactingFoam/rhoReactingFoam.C b/applications/solvers/combustion/rhoReactingFoam/rhoReactingFoam.C
new file mode 100644
index 0000000000000000000000000000000000000000..16f49a197fe9d5028a1db860bf7bb58ddbf7244c
--- /dev/null
+++ b/applications/solvers/combustion/rhoReactingFoam/rhoReactingFoam.C
@@ -0,0 +1,102 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Application
+    rhoReactingFoam
+
+Description
+    Chemical reaction code using density based thermodynamics package.
+
+\*---------------------------------------------------------------------------*/
+
+#include "fvCFD.H"
+#include "hReactionThermo.H"
+#include "turbulenceModel.H"
+#include "rhoChemistryModel.H"
+#include "chemistrySolver.H"
+#include "multivariateScheme.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+int main(int argc, char *argv[])
+{
+    #include "setRootCase.H"
+    #include "createTime.H"
+    #include "createMesh.H"
+    #include "readChemistryProperties.H"
+    #include "readEnvironmentalProperties.H"
+    #include "createFields.H"
+    #include "initContinuityErrs.H"
+    #include "readTimeControls.H"
+    #include "compressibleCourantNo.H"
+    #include "setInitialDeltaT.H"
+
+    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+    Info << "\nStarting time loop\n" << endl;
+
+    while (runTime.run())
+    {
+        #include "readTimeControls.H"
+        #include "readPISOControls.H"
+        #include "compressibleCourantNo.H"
+        #include "setDeltaT.H"
+
+        runTime++;
+        Info<< "Time = " << runTime.timeName() << nl << endl;
+
+        #include "chemistry.H"
+        #include "rhoEqn.H"
+        #include "UEqn.H"
+
+        for (label ocorr=1; ocorr <= nOuterCorr; ocorr++)
+        {
+            #include "YEqn.H"
+            #include "hEqn.H"
+
+            // --- PISO loop
+            for (int corr=1; corr<=nCorr; corr++)
+            {
+                #include "pEqn.H"
+            }
+        }
+
+        turbulence->correct();
+
+        rho = thermo.rho();
+
+        runTime.write();
+
+        Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s"
+            << "  ClockTime = " << runTime.elapsedClockTime() << " s"
+            << nl << endl;
+    }
+
+    Info<< "End\n" << endl;
+
+    return 0;
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/compressible/rhoCentralFoam/compressibleCourantNo.H b/applications/solvers/compressible/rhoCentralFoam/compressibleCourantNo.H
index ebec931a54fcda48dd8777c8fc77fac5a42400f8..33b4edc8a7d31da894068a3c7016dc38bf21137e 100644
--- a/applications/solvers/compressible/rhoCentralFoam/compressibleCourantNo.H
+++ b/applications/solvers/compressible/rhoCentralFoam/compressibleCourantNo.H
@@ -38,11 +38,11 @@ if (mesh.nInternalFaces())
     surfaceScalarField amaxSfbyDelta =
         mesh.surfaceInterpolation::deltaCoeffs()*amaxSf;
 
-    CoNum = max(amaxSfbyDelta/mesh.magSf())
-        .value()*runTime.deltaT().value();
+    CoNum = max(amaxSfbyDelta/mesh.magSf()).value()*runTime.deltaT().value();
 
-    meanCoNum = (sum(amaxSfbyDelta)/sum(mesh.magSf()))
-        .value()*runTime.deltaT().value();
+    meanCoNum =
+        (sum(amaxSfbyDelta)/sum(mesh.magSf())).value()
+       *runTime.deltaT().value();
 }
 
 Info<< "Mean and max Courant Numbers = "
diff --git a/applications/solvers/compressible/rhoCentralFoam/createFields.H b/applications/solvers/compressible/rhoCentralFoam/createFields.H
index 3b273bb3dda1ed515b346870e932faa9a73c3123..daf3a88435cc8b9bfbae14ab33085c9dcd72d55e 100644
--- a/applications/solvers/compressible/rhoCentralFoam/createFields.H
+++ b/applications/solvers/compressible/rhoCentralFoam/createFields.H
@@ -1,15 +1,16 @@
 Info<< "Reading thermophysical properties\n" << endl;
 
-autoPtr<basicThermo> thermo
+autoPtr<basicPsiThermo> pThermo
 (
-    basicThermo::New(mesh)
+    basicPsiThermo::New(mesh)
 );
+basicPsiThermo& thermo = pThermo();
 
-volScalarField& p = thermo->p();
-volScalarField& h = thermo->h();
-const volScalarField& T = thermo->T();
-const volScalarField& psi = thermo->psi();
-const volScalarField& mu = thermo->mu();
+volScalarField& p = thermo.p();
+volScalarField& h = thermo.h();
+const volScalarField& T = thermo.T();
+const volScalarField& psi = thermo.psi();
+const volScalarField& mu = thermo.mu();
 
 bool inviscid(true);
 if (max(mu.internalField()) > 0.0)
@@ -42,7 +43,7 @@ volScalarField rho
         IOobject::NO_READ,
         IOobject::AUTO_WRITE
     ),
-    thermo->rho(),
+    thermo.rho(),
     rhoBoundaryTypes
 );
 
diff --git a/applications/solvers/compressible/rhoCentralFoam/rhoBoundaryTypes.H b/applications/solvers/compressible/rhoCentralFoam/rhoBoundaryTypes.H
index c85f49198529d7ae1c3e400a5c1ae93afef47f1a..7118d24fc9247c5ed8f0301d9a7bb837ba278b0b 100644
--- a/applications/solvers/compressible/rhoCentralFoam/rhoBoundaryTypes.H
+++ b/applications/solvers/compressible/rhoCentralFoam/rhoBoundaryTypes.H
@@ -3,10 +3,7 @@ wordList rhoBoundaryTypes = pbf.types();
 
 forAll(rhoBoundaryTypes, patchi)
 {
-    if
-    (
-        rhoBoundaryTypes[patchi] == "waveTransmissive"
-    )
+    if (rhoBoundaryTypes[patchi] == "waveTransmissive")
     {
         rhoBoundaryTypes[patchi] = zeroGradientFvPatchScalarField::typeName;
     }
diff --git a/applications/solvers/compressible/rhoCentralFoam/rhoCentralFoam.C b/applications/solvers/compressible/rhoCentralFoam/rhoCentralFoam.C
index 502406d1322f64edbdd77550ffa90b1f040e1ce1..f418f176374b384112da5f8cd760be97d61efc02 100644
--- a/applications/solvers/compressible/rhoCentralFoam/rhoCentralFoam.C
+++ b/applications/solvers/compressible/rhoCentralFoam/rhoCentralFoam.C
@@ -32,7 +32,7 @@ Description
 \*---------------------------------------------------------------------------*/
 
 #include "fvCFD.H"
-#include "basicThermo.H"
+#include "basicPsiThermo.H"
 #include "zeroGradientFvPatchFields.H"
 #include "fixedRhoFvPatchScalarField.H"
 
@@ -40,18 +40,17 @@ Description
 
 int main(int argc, char *argv[])
 {
+    #include "setRootCase.H"
 
-#   include "setRootCase.H"
+    #include "createTime.H"
+    #include "createMesh.H"
+    #include "createFields.H"
+    #include "readThermophysicalProperties.H"
+    #include "readTimeControls.H"
 
-#   include "createTime.H"
-#   include "createMesh.H"
-#   include "createFields.H"
-#   include "readThermophysicalProperties.H"
-#   include "readTimeControls.H"
+    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-#   include "readFluxScheme.H"
+    #include "readFluxScheme.H"
 
     dimensionedScalar v_zero("v_zero",dimVolume/dimTime, 0.0);
 
@@ -91,7 +90,7 @@ int main(int argc, char *argv[])
         surfaceScalarField phiv_pos = U_pos & mesh.Sf();
         surfaceScalarField phiv_neg = U_neg & mesh.Sf();
 
-        volScalarField c = sqrt(thermo->Cp()/thermo->Cv()*rPsi);
+        volScalarField c = sqrt(thermo.Cp()/thermo.Cv()*rPsi);
         surfaceScalarField cSf_pos = fvc::interpolate(c, pos, "reconstruct(T)")*mesh.magSf();
         surfaceScalarField cSf_neg = fvc::interpolate(c, neg, "reconstruct(T)")*mesh.magSf();
 
@@ -102,9 +101,9 @@ int main(int argc, char *argv[])
 
         surfaceScalarField amaxSf("amaxSf", max(mag(am), mag(ap)));
 
-#       include "compressibleCourantNo.H"
-#       include "readTimeControls.H"
-#       include "setDeltaT.H"
+        #include "compressibleCourantNo.H"
+        #include "readTimeControls.H"
+        #include "setDeltaT.H"
 
         runTime++;
 
@@ -183,7 +182,7 @@ int main(int argc, char *argv[])
 
         h = (rhoE + p)/rho - 0.5*magSqr(U);
         h.correctBoundaryConditions();
-        thermo->correct();
+        thermo.correct();
         rhoE.boundaryField() =
             rho.boundaryField()*
             (
@@ -193,15 +192,15 @@ int main(int argc, char *argv[])
 
         if (!inviscid)
         {
-            volScalarField k("k", thermo->Cp()*mu/Pr);
+            volScalarField k("k", thermo.Cp()*mu/Pr);
             solve
             (
                 fvm::ddt(rho, h) - fvc::ddt(rho, h)
-              - fvm::laplacian(thermo->alpha(), h)
-              + fvc::laplacian(thermo->alpha(), h)
+              - fvm::laplacian(thermo.alpha(), h)
+              + fvc::laplacian(thermo.alpha(), h)
               - fvc::laplacian(k, T)
             );
-            thermo->correct();
+            thermo.correct();
             rhoE = rho*(h + 0.5*magSqr(U)) - p;
         }
 
diff --git a/applications/solvers/compressible/rhoPimpleFoam/createFields.H b/applications/solvers/compressible/rhoPimpleFoam/createFields.H
index e836704cb1fd79e93dd0dffec96d15d0001830e0..1433ea5cc3d7180c4310f7b0710b913025030977 100644
--- a/applications/solvers/compressible/rhoPimpleFoam/createFields.H
+++ b/applications/solvers/compressible/rhoPimpleFoam/createFields.H
@@ -1,13 +1,14 @@
     Info<< "Reading thermophysical properties\n" << endl;
 
-    autoPtr<basicThermo> thermo
+    autoPtr<basicPsiThermo> pThermo
     (
-        basicThermo::New(mesh)
+        basicPsiThermo::New(mesh)
     );
+    basicPsiThermo& thermo = pThermo();
 
-    volScalarField& p = thermo->p();
-    volScalarField& h = thermo->h();
-    const volScalarField& psi = thermo->psi();
+    volScalarField& p = thermo.p();
+    volScalarField& h = thermo.h();
+    const volScalarField& psi = thermo.psi();
 
     volScalarField rho
     (
@@ -19,7 +20,7 @@
             IOobject::READ_IF_PRESENT,
             IOobject::AUTO_WRITE
         ),
-        thermo->rho()
+        thermo.rho()
     );
 
     Info<< "Reading field U\n" << endl;
@@ -51,7 +52,7 @@
             rho,
             U,
             phi,
-            thermo()
+            thermo
         )
     );
 
diff --git a/applications/solvers/compressible/rhoPimpleFoam/hEqn.H b/applications/solvers/compressible/rhoPimpleFoam/hEqn.H
index dbc76740f51da87673524ba4bda189998d837864..e66b99442b87bd6e3a4fdeb4025e94f5f88e09c3 100644
--- a/applications/solvers/compressible/rhoPimpleFoam/hEqn.H
+++ b/applications/solvers/compressible/rhoPimpleFoam/hEqn.H
@@ -19,5 +19,5 @@
         hEqn.solve();
     }
 
-    thermo->correct();
+    thermo.correct();
 }
diff --git a/applications/solvers/compressible/rhoPimpleFoam/pEqn.H b/applications/solvers/compressible/rhoPimpleFoam/pEqn.H
index 7918618404a9653761dff2f60d6b67ce73b91bfb..0f3dfe450bccd217fa4e12925d8a5f082ce31b02 100644
--- a/applications/solvers/compressible/rhoPimpleFoam/pEqn.H
+++ b/applications/solvers/compressible/rhoPimpleFoam/pEqn.H
@@ -1,4 +1,4 @@
-rho = thermo->rho();
+rho = thermo.rho();
 
 volScalarField rUA = 1.0/UEqn().A();
 U = rUA*UEqn().H();
@@ -13,7 +13,7 @@ if (transonic)
     surfaceScalarField phid
     (
         "phid",
-        fvc::interpolate(thermo->psi())
+        fvc::interpolate(psi)
        *(
             (fvc::interpolate(U) & mesh.Sf())
           + fvc::ddtPhiCorr(rUA, rho, U, phi)
@@ -58,8 +58,6 @@ else
         //+ fvc::ddtPhiCorr(rUA, rho, U, phi)
         );
 
-    //bool closedVolume = adjustPhi(phi, U, p);
-
     for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
     {
         // Pressure corrector
@@ -99,7 +97,7 @@ else
     // Explicitly relax pressure for momentum corrector
     p.relax();
 
-    rho = thermo->rho();
+    rho = thermo.rho();
     rho.relax();
     Info<< "rho max/min : " << max(rho).value()
         << " " << min(rho).value() << endl;
@@ -117,7 +115,7 @@ bound(p, pMin);
 /*
 if (closedVolume)
 {
-    p += (initialMass - fvc::domainIntegrate(thermo->psi()*p))
-        /fvc::domainIntegrate(thermo->psi());
+    p += (initialMass - fvc::domainIntegrate(psi*p))
+        /fvc::domainIntegrate(psi);
 }
 */
diff --git a/applications/solvers/compressible/rhoPimpleFoam/rhoPimpleFoam.C b/applications/solvers/compressible/rhoPimpleFoam/rhoPimpleFoam.C
index 8b916b308ef081bc5c90d7695a5bc52df53d4fad..19a26875db50c7d5f224371c229db652adc42ca3 100644
--- a/applications/solvers/compressible/rhoPimpleFoam/rhoPimpleFoam.C
+++ b/applications/solvers/compressible/rhoPimpleFoam/rhoPimpleFoam.C
@@ -35,7 +35,7 @@ Description
 \*---------------------------------------------------------------------------*/
 
 #include "fvCFD.H"
-#include "basicThermo.H"
+#include "basicPsiThermo.H"
 #include "turbulenceModel.H"
 #include "bound.H"
 
diff --git a/applications/solvers/compressible/rhoPisoFoam/createFields.H b/applications/solvers/compressible/rhoPisoFoam/createFields.H
index 614f01702df40cf576ae7b94f5a82cd1405ded64..fdb706a14ce0651bf3722244ea51dae8c0df2d6b 100644
--- a/applications/solvers/compressible/rhoPisoFoam/createFields.H
+++ b/applications/solvers/compressible/rhoPisoFoam/createFields.H
@@ -1,13 +1,14 @@
     Info<< "Reading thermophysical properties\n" << endl;
 
-    autoPtr<basicThermo> thermo
+    autoPtr<basicPsiThermo> pThermo
     (
-        basicThermo::New(mesh)
+        basicPsiThermo::New(mesh)
     );
+    basicPsiThermo& thermo = pThermo();
 
-    volScalarField& p = thermo->p();
-    volScalarField& h = thermo->h();
-    const volScalarField& psi = thermo->psi();
+    volScalarField& p = thermo.p();
+    volScalarField& h = thermo.h();
+    const volScalarField& psi = thermo.psi();
 
     volScalarField rho
     (
@@ -19,7 +20,7 @@
             IOobject::NO_READ,
             IOobject::AUTO_WRITE
         ),
-        thermo->rho()
+        thermo.rho()
     );
 
     Info<< "\nReading field U\n" << endl;
@@ -47,7 +48,7 @@
             rho,
             U,
             phi,
-            thermo()
+            thermo
         )
     );
 
diff --git a/applications/solvers/compressible/rhoPisoFoam/hEqn.H b/applications/solvers/compressible/rhoPisoFoam/hEqn.H
index f72ef0c89cb973b0150b3ec889b51c5be403b872..ae60d3316ec77061804e629360ed13f6cd891f68 100644
--- a/applications/solvers/compressible/rhoPisoFoam/hEqn.H
+++ b/applications/solvers/compressible/rhoPisoFoam/hEqn.H
@@ -8,5 +8,5 @@
         DpDt
     );
 
-    thermo->correct();
+    thermo.correct();
 }
diff --git a/applications/solvers/compressible/rhoPisoFoam/pEqn.H b/applications/solvers/compressible/rhoPisoFoam/pEqn.H
index 05db89627dabf5400a98c2e6a37784dcb9cc53cd..280842ecc3874e9ba634fd997b194fd940635a57 100644
--- a/applications/solvers/compressible/rhoPisoFoam/pEqn.H
+++ b/applications/solvers/compressible/rhoPisoFoam/pEqn.H
@@ -1,4 +1,4 @@
-rho = thermo->rho();
+rho = thermo.rho();
 
 volScalarField rUA = 1.0/UEqn.A();
 U = rUA*UEqn.H();
@@ -8,7 +8,7 @@ if (transonic)
     surfaceScalarField phid
     (
         "phid",
-        fvc::interpolate(thermo->psi())
+        fvc::interpolate(psi)
        *(
             (fvc::interpolate(U) & mesh.Sf())
           + fvc::ddtPhiCorr(rUA, rho, U, phi)
@@ -34,7 +34,7 @@ if (transonic)
 }
 else
 {
-    phi = 
+    phi =
         fvc::interpolate(rho)*
         (
             (fvc::interpolate(U) & mesh.Sf())
diff --git a/applications/solvers/compressible/rhoPisoFoam/rhoPisoFoam.C b/applications/solvers/compressible/rhoPisoFoam/rhoPisoFoam.C
index c349e7520e6ad34fd55550c77574107a6ff9fd13..cd462c28ab0efd926645aede91b206a5fcd423a1 100644
--- a/applications/solvers/compressible/rhoPisoFoam/rhoPisoFoam.C
+++ b/applications/solvers/compressible/rhoPisoFoam/rhoPisoFoam.C
@@ -31,7 +31,7 @@ Description
 \*---------------------------------------------------------------------------*/
 
 #include "fvCFD.H"
-#include "basicThermo.H"
+#include "basicPsiThermo.H"
 #include "turbulenceModel.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -43,14 +43,13 @@ int main(int argc, char *argv[])
     #include "createTime.H"
     #include "createMesh.H"
     #include "createFields.H"
-    #include "readPISOControls.H"
     #include "initContinuityErrs.H"
     #include "readTimeControls.H"
     #include "compressibleCourantNo.H"
     #include "setInitialDeltaT.H"
 
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
     Info<< "\nStarting time loop\n" << endl;
 
@@ -77,7 +76,7 @@ int main(int argc, char *argv[])
 
         turbulence->correct();
 
-        rho = thermo->rho();
+        rho = thermo.rho();
 
         runTime.write();
 
diff --git a/applications/solvers/compressible/rhoPorousSimpleFoam/createFields.H b/applications/solvers/compressible/rhoPorousSimpleFoam/createFields.H
index eee3959a4e0850702aa4ef1a47052aece69971fb..1177cba2a4b86adcdc0081e5305b9095214976a9 100644
--- a/applications/solvers/compressible/rhoPorousSimpleFoam/createFields.H
+++ b/applications/solvers/compressible/rhoPorousSimpleFoam/createFields.H
@@ -1,9 +1,10 @@
     Info<< "Reading thermophysical properties\n" << endl;
 
-    autoPtr<basicThermo> thermo
+    autoPtr<basicPsiThermo> pThermo
     (
-        basicThermo::New(mesh)
+        basicPsiThermo::New(mesh)
     );
+    basicPsiThermo& thermo = pThermo();
 
     volScalarField rho
     (
@@ -15,11 +16,12 @@
             IOobject::READ_IF_PRESENT,
             IOobject::AUTO_WRITE
         ),
-        thermo->rho()
+        thermo.rho()
     );
 
-    volScalarField& p = thermo->p();
-    volScalarField& h = thermo->h();
+    volScalarField& p = thermo.p();
+    volScalarField& h = thermo.h();
+    const volScalarField& psi = thermo.psi();
 
 
     Info<< "Reading field U\n" << endl;
@@ -36,7 +38,7 @@
         mesh
     );
 
-#   include "compressibleCreatePhi.H"
+    #include "compressibleCreatePhi.H"
 
 
     label pRefCell = 0;
@@ -56,7 +58,7 @@
             rho,
             U,
             phi,
-            thermo()
+            thermo
         )
     );
 
diff --git a/applications/solvers/compressible/rhoPorousSimpleFoam/hEqn.H b/applications/solvers/compressible/rhoPorousSimpleFoam/hEqn.H
index 8eb03f95eb46b687a79f9f68c09152bbd269224a..605b8820d1816daeaa6a6b4a2f20965e388a1c8f 100644
--- a/applications/solvers/compressible/rhoPorousSimpleFoam/hEqn.H
+++ b/applications/solvers/compressible/rhoPorousSimpleFoam/hEqn.H
@@ -14,5 +14,5 @@
     eqnResidual = hEqn.solve().initialResidual();
     maxResidual = max(eqnResidual, maxResidual);
 
-    thermo->correct();
+    thermo.correct();
 }
diff --git a/applications/solvers/compressible/rhoPorousSimpleFoam/pEqn.H b/applications/solvers/compressible/rhoPorousSimpleFoam/pEqn.H
index ae41da9e36fd7af8dd172b163b16dd8829a93b8b..4d8e010f7e352464dd92558f23342c10774f6575 100644
--- a/applications/solvers/compressible/rhoPorousSimpleFoam/pEqn.H
+++ b/applications/solvers/compressible/rhoPorousSimpleFoam/pEqn.H
@@ -65,10 +65,10 @@ bound(p, pMin);
 // to obey overall mass continuity
 if (closedVolume)
 {
-    p += (initialMass - fvc::domainIntegrate(thermo->psi()*p))
-        /fvc::domainIntegrate(thermo->psi());
+    p += (initialMass - fvc::domainIntegrate(psi*p))
+        /fvc::domainIntegrate(psi);
 }
 
-rho = thermo->rho();
+rho = thermo.rho();
 rho.relax();
 Info<< "rho max/min : " << max(rho).value() << " " << min(rho).value() << endl;
diff --git a/applications/solvers/compressible/rhoPorousSimpleFoam/rhoPorousSimpleFoam.C b/applications/solvers/compressible/rhoPorousSimpleFoam/rhoPorousSimpleFoam.C
index 0cd144fce23508b23d803c7abf25510f67f17f99..10bfeb61db53b4769d3cfd5b006a12ba587fa4fb 100644
--- a/applications/solvers/compressible/rhoPorousSimpleFoam/rhoPorousSimpleFoam.C
+++ b/applications/solvers/compressible/rhoPorousSimpleFoam/rhoPorousSimpleFoam.C
@@ -27,12 +27,12 @@ Application
 
 Description
     Steady-state solver for turbulent flow of compressible fluids with
-    implicit or explicit porosity treatment
+    RANS turbulence modelling, and implicit or explicit porosity treatment
 
 \*---------------------------------------------------------------------------*/
 
 #include "fvCFD.H"
-#include "basicThermo.H"
+#include "basicPsiThermo.H"
 #include "RASModel.H"
 #include "porousZones.H"
 
@@ -40,14 +40,13 @@ Description
 
 int main(int argc, char *argv[])
 {
+    #include "setRootCase.H"
+    #include "createTime.H"
+    #include "createMesh.H"
+    #include "createFields.H"
+    #include "initContinuityErrs.H"
 
-#   include "setRootCase.H"
-#   include "createTime.H"
-#   include "createMesh.H"
-#   include "createFields.H"
-#   include "initContinuityErrs.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
     Info<< "\nStarting time loop\n" << endl;
 
@@ -55,17 +54,17 @@ int main(int argc, char *argv[])
     {
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
-#       include "readSIMPLEControls.H"
-#       include "initConvergenceCheck.H"
+        #include "readSIMPLEControls.H"
+        #include "initConvergenceCheck.H"
 
         p.storePrevIter();
         rho.storePrevIter();
 
         // Pressure-velocity SIMPLE corrector
         {
-#           include "UEqn.H"
-#           include "hEqn.H"
-#           include "pEqn.H"
+            #include "UEqn.H"
+            #include "hEqn.H"
+            #include "pEqn.H"
         }
 
         turbulence->correct();
@@ -75,7 +74,7 @@ int main(int argc, char *argv[])
             << "  ClockTime = " << runTime.elapsedClockTime() << " s"
             << nl << endl;
 
-#       include "convergenceCheck.H"
+        #include "convergenceCheck.H"
     }
 
     Info<< "End\n" << endl;
diff --git a/applications/solvers/compressible/rhoSimpleFoam/createFields.H b/applications/solvers/compressible/rhoSimpleFoam/createFields.H
index 9c4f446c37ff45885232c1219825f8840fe9cbdb..690b53760d75b22618fc9cd0c1358c015d867854 100644
--- a/applications/solvers/compressible/rhoSimpleFoam/createFields.H
+++ b/applications/solvers/compressible/rhoSimpleFoam/createFields.H
@@ -1,9 +1,10 @@
     Info<< "Reading thermophysical properties\n" << endl;
 
-    autoPtr<basicThermo> thermo
+    autoPtr<basicPsiThermo> pThermo
     (
-        basicThermo::New(mesh)
+        basicPsiThermo::New(mesh)
     );
+    basicPsiThermo& thermo = pThermo();
 
     volScalarField rho
     (
@@ -15,12 +16,12 @@
             IOobject::READ_IF_PRESENT,
             IOobject::AUTO_WRITE
         ),
-        thermo->rho()
+        thermo.rho()
     );
 
-    volScalarField& p = thermo->p();
-    volScalarField& h = thermo->h();
-
+    volScalarField& p = thermo.p();
+    volScalarField& h = thermo.h();
+    const volScalarField& psi = thermo.psi();
 
     Info<< "Reading field U\n" << endl;
     volVectorField U
@@ -56,7 +57,7 @@
             rho,
             U,
             phi,
-            thermo()
+            thermo
         )
     );
 
diff --git a/applications/solvers/compressible/rhoSimpleFoam/hEqn.H b/applications/solvers/compressible/rhoSimpleFoam/hEqn.H
index 6a87bbdf11941f36afe9fb7a43186f92cf554e0f..e299d99f83c9b1e0c0ab95b35d015300f4f18d7b 100644
--- a/applications/solvers/compressible/rhoSimpleFoam/hEqn.H
+++ b/applications/solvers/compressible/rhoSimpleFoam/hEqn.H
@@ -14,5 +14,5 @@
     eqnResidual = hEqn.solve().initialResidual();
     maxResidual = max(eqnResidual, maxResidual);
 
-    thermo->correct();
+    thermo.correct();
 }
diff --git a/applications/solvers/compressible/rhoSimpleFoam/pEqn.H b/applications/solvers/compressible/rhoSimpleFoam/pEqn.H
index e4fbe15aa485869258c231d8aef86f4e49a5c096..f6a433fd6164d0f803098051d4a9c44f4fafa38c 100644
--- a/applications/solvers/compressible/rhoSimpleFoam/pEqn.H
+++ b/applications/solvers/compressible/rhoSimpleFoam/pEqn.H
@@ -1,4 +1,4 @@
-rho = thermo->rho();
+rho = thermo.rho();
 
 volScalarField rUA = 1.0/UEqn().A();
 U = rUA*UEqn().H();
@@ -11,7 +11,7 @@ if (transonic)
     surfaceScalarField phid
     (
         "phid",
-        fvc::interpolate(thermo->psi())*(fvc::interpolate(U) & mesh.Sf())
+        fvc::interpolate(psi)*(fvc::interpolate(U) & mesh.Sf())
     );
 
     for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
@@ -82,7 +82,7 @@ else
 // Explicitly relax pressure for momentum corrector
 p.relax();
 
-rho = thermo->rho();
+rho = thermo.rho();
 rho.relax();
 Info<< "rho max/min : " << max(rho).value() << " " << min(rho).value() << endl;
 
@@ -95,6 +95,6 @@ bound(p, pMin);
 // to obey overall mass continuity
 if (closedVolume)
 {
-    p += (initialMass - fvc::domainIntegrate(thermo->psi()*p))
-        /fvc::domainIntegrate(thermo->psi());
+    p += (initialMass - fvc::domainIntegrate(psi*p))
+        /fvc::domainIntegrate(psi);
 }
diff --git a/applications/solvers/compressible/rhoSimpleFoam/rhoSimpleFoam.C b/applications/solvers/compressible/rhoSimpleFoam/rhoSimpleFoam.C
index bf6a9f24f3386c7c1f93237fc244c30f85e87951..099257e5ae40a7deec364106327f1a82205a935a 100644
--- a/applications/solvers/compressible/rhoSimpleFoam/rhoSimpleFoam.C
+++ b/applications/solvers/compressible/rhoSimpleFoam/rhoSimpleFoam.C
@@ -26,13 +26,13 @@ Application
     rhoSimpleFoam
 
 Description
-    Steady-state SIMPLE solver for laminar or turbulent flow of
+    Steady-state SIMPLE solver for laminar or turbulent RANS flow of
     compressible fluids.
 
 \*---------------------------------------------------------------------------*/
 
 #include "fvCFD.H"
-#include "basicThermo.H"
+#include "basicPsiThermo.H"
 #include "RASModel.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/applications/solvers/compressible/rhopSonicFoam/rhopSonicFoam.C b/applications/solvers/compressible/rhopSonicFoam/rhopSonicFoam.C
index 7cd692b71dce38874e8e4a4555e8e0a449df8390..3d71de6324737b321553dd0945566e76e39372d8 100644
--- a/applications/solvers/compressible/rhopSonicFoam/rhopSonicFoam.C
+++ b/applications/solvers/compressible/rhopSonicFoam/rhopSonicFoam.C
@@ -42,14 +42,13 @@ Description
 
 int main(int argc, char *argv[])
 {
+    #include "setRootCase.H"
+    #include "createTime.H"
+    #include "createMesh.H"
+    #include "readThermodynamicProperties.H"
+    #include "createFields.H"
 
-#   include "setRootCase.H"
-#   include "createTime.H"
-#   include "createMesh.H"
-#   include "readThermodynamicProperties.H"
-#   include "createFields.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
     Info<< "\nStarting time loop\n" << endl;
 
@@ -57,10 +56,10 @@ int main(int argc, char *argv[])
     {
         Info<< "Time = " << runTime.value() << nl << endl;
 
-#       include "readPISOControls.H"
+        #include "readPISOControls.H"
         scalar HbyAblend = readScalar(piso.lookup("HbyAblend"));
 
-#       include "readTimeControls.H"
+        #include "readTimeControls.H"
 
         scalar CoNum = max
         (
@@ -70,7 +69,7 @@ int main(int argc, char *argv[])
 
         Info<< "Max Courant Number = " << CoNum << endl;
 
-#       include "setDeltaT.H"
+        #include "setDeltaT.H"
 
         for (int outerCorr=0; outerCorr<nOuterCorr; outerCorr++)
         {
@@ -145,9 +144,9 @@ int main(int argc, char *argv[])
 
                 phi -= phiGradp;
 
-#               include "resetPhiPatches.H"
+                #include "resetPhiPatches.H"
 
-                surfaceScalarField rhof = 
+                surfaceScalarField rhof =
                     mvConvection.interpolationScheme()()(rho)()
                    .interpolate(rho);
 
@@ -165,7 +164,7 @@ int main(int argc, char *argv[])
 
                 phi += phiGradp + pEqn.flux();
                 rho = psi*p;
-                rhof = 
+                rhof =
                     mvConvection.interpolationScheme()()(rho)()
                    .interpolate(rho);
                 phiv = phi/rhof;
diff --git a/applications/solvers/compressible/sonicDyMFoam/compressibleContinuityErrs.H b/applications/solvers/compressible/sonicDyMFoam/compressibleContinuityErrs.H
index eec8485329cfcb0956c0b49b9a6108ead3cc797e..1d869cc58dae738d345b2448f7dfdcf7a63c36cb 100644
--- a/applications/solvers/compressible/sonicDyMFoam/compressibleContinuityErrs.H
+++ b/applications/solvers/compressible/sonicDyMFoam/compressibleContinuityErrs.H
@@ -1,5 +1,5 @@
 {
-#   include "rhoEqn.H"
+    #include "rhoEqn.H"
 }
 {
     scalar sumLocalContErr =
diff --git a/applications/solvers/compressible/sonicDyMFoam/createFields.H b/applications/solvers/compressible/sonicDyMFoam/createFields.H
index eb45a7c23af7826cd0843adead9e5a3ea74ccfbf..4344a4f5e49451f647a322eb45b08bd07bf062b5 100644
--- a/applications/solvers/compressible/sonicDyMFoam/createFields.H
+++ b/applications/solvers/compressible/sonicDyMFoam/createFields.H
@@ -1,13 +1,14 @@
     Info<< "Reading thermophysical properties\n" << endl;
 
-    autoPtr<basicThermo> thermo
+    autoPtr<basicPsiThermo> pThermo
     (
-        basicThermo::New(mesh)
+        basicPsiThermo::New(mesh)
     );
+    basicPsiThermo& thermo = pThermo();
 
-    volScalarField& p = thermo->p();
-    volScalarField& h = thermo->h();
-    const volScalarField& psi = thermo->psi();
+    volScalarField& p = thermo.p();
+    volScalarField& e = thermo.e();
+    const volScalarField& psi = thermo.psi();
 
     volScalarField rho
     (
@@ -17,7 +18,7 @@
             runTime.timeName(),
             mesh
         ),
-        thermo->rho()
+        thermo.rho()
     );
 
     Info<< "Reading field U\n" << endl;
@@ -45,7 +46,7 @@
             rho,
             U,
             phi,
-            thermo()
+            thermo
         )
     );
 
diff --git a/applications/solvers/compressible/sonicDyMFoam/sonicDyMFoam.C b/applications/solvers/compressible/sonicDyMFoam/sonicDyMFoam.C
index 57b15a0f9ba4e546d59ad17eb9a7129989ca4ad1..cef51b6c58392cb7ebe33657b93784ffc1eb8675 100644
--- a/applications/solvers/compressible/sonicDyMFoam/sonicDyMFoam.C
+++ b/applications/solvers/compressible/sonicDyMFoam/sonicDyMFoam.C
@@ -32,7 +32,7 @@ Description
 \*---------------------------------------------------------------------------*/
 
 #include "fvCFD.H"
-#include "basicThermo.H"
+#include "basicPsiThermo.H"
 #include "turbulenceModel.H"
 #include "motionSolver.H"
 
@@ -72,7 +72,7 @@ int main(int argc, char *argv[])
 
         solve(UEqn == -fvc::grad(p));
 
-        #include "hEqn.H"
+        #include "eEqn.H"
 
 
         // --- PISO loop
@@ -84,8 +84,8 @@ int main(int argc, char *argv[])
             surfaceScalarField phid
             (
                 "phid",
-                fvc::interpolate(psi)*
-                (
+                fvc::interpolate(psi)
+               *(
                     (fvc::interpolate(U) & mesh.Sf()) - fvc::meshPhi(rho, U)
                 )
             );
diff --git a/applications/solvers/compressible/sonicFoam/UEqn.H b/applications/solvers/compressible/sonicFoam/UEqn.H
new file mode 100644
index 0000000000000000000000000000000000000000..25506783aee86c36049d916b0bc349469a6510d4
--- /dev/null
+++ b/applications/solvers/compressible/sonicFoam/UEqn.H
@@ -0,0 +1,8 @@
+fvVectorMatrix UEqn
+(
+    fvm::ddt(rho, U)
+    + fvm::div(phi, U)
+    + turbulence->divDevRhoReff(U)
+);
+
+solve(UEqn == -fvc::grad(p));
diff --git a/applications/solvers/compressible/sonicFoam/compressibleContinuityErrs.H b/applications/solvers/compressible/sonicFoam/compressibleContinuityErrs.H
deleted file mode 100644
index 128d99c94611b88f8c01b3bb683dedcf0f237dc1..0000000000000000000000000000000000000000
--- a/applications/solvers/compressible/sonicFoam/compressibleContinuityErrs.H
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-#   include "rhoEqn.H"
-}
-{
-    scalar sumLocalContErr = (sum(mag(rho - psi*p))/sum(rho)).value();
-    scalar globalContErr = (sum(rho - psi*p)/sum(rho)).value();
-    cumulativeContErr += globalContErr;
-
-    Info<< "time step continuity errors : sum local = " << sumLocalContErr
-         << ", global = " << globalContErr
-         << ", cumulative = " << cumulativeContErr << endl;
-}
diff --git a/applications/solvers/compressible/sonicFoam/createFields.H b/applications/solvers/compressible/sonicFoam/createFields.H
index eb45a7c23af7826cd0843adead9e5a3ea74ccfbf..5d03dd2bb7ccd83fb9f8900e2e2a08f2b3774ba4 100644
--- a/applications/solvers/compressible/sonicFoam/createFields.H
+++ b/applications/solvers/compressible/sonicFoam/createFields.H
@@ -1,13 +1,14 @@
     Info<< "Reading thermophysical properties\n" << endl;
 
-    autoPtr<basicThermo> thermo
+    autoPtr<basicPsiThermo> pThermo
     (
-        basicThermo::New(mesh)
+        basicPsiThermo::New(mesh)
     );
+    basicPsiThermo& thermo = pThermo();
 
-    volScalarField& p = thermo->p();
-    volScalarField& h = thermo->h();
-    const volScalarField& psi = thermo->psi();
+    volScalarField& p = thermo.p();
+    volScalarField& e = thermo.e();
+    const volScalarField& psi = thermo.psi();
 
     volScalarField rho
     (
@@ -17,7 +18,7 @@
             runTime.timeName(),
             mesh
         ),
-        thermo->rho()
+        thermo.rho()
     );
 
     Info<< "Reading field U\n" << endl;
@@ -34,7 +35,7 @@
         mesh
     );
 
-#   include "compressibleCreatePhi.H"
+    #include "compressibleCreatePhi.H"
 
 
     Info<< "Creating turbulence model\n" << endl;
@@ -45,10 +46,6 @@
             rho,
             U,
             phi,
-            thermo()
+            thermo
         )
     );
-
-    Info<< "Creating field DpDt\n" << endl;
-    volScalarField DpDt =
-        fvc::DDt(surfaceScalarField("phiU", phi/fvc::interpolate(rho)), p);
diff --git a/applications/solvers/compressible/sonicFoam/eEqn.H b/applications/solvers/compressible/sonicFoam/eEqn.H
new file mode 100644
index 0000000000000000000000000000000000000000..1d1d6aef0b2d53efa849347af2a0c4d6f9cbf912
--- /dev/null
+++ b/applications/solvers/compressible/sonicFoam/eEqn.H
@@ -0,0 +1,12 @@
+{
+    solve
+    (
+        fvm::ddt(rho, e)
+      + fvm::div(phi, e)
+      - fvm::laplacian(turbulence->alphaEff(), e)
+      ==
+      - p*fvc::div(phi/fvc::interpolate(rho))
+    );
+
+    thermo.correct();
+}
diff --git a/applications/solvers/compressible/sonicFoam/hEqn.H b/applications/solvers/compressible/sonicFoam/hEqn.H
deleted file mode 100644
index 5cb4c48c0883e6fce99b9e9a2e76b277e9cbfef7..0000000000000000000000000000000000000000
--- a/applications/solvers/compressible/sonicFoam/hEqn.H
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-        solve
-        (
-            fvm::ddt(rho, h)
-          + fvm::div(phi, h)
-          - fvm::laplacian(turbulence->alphaEff(), h)
-         ==
-            DpDt
-        );
-
-        thermo->correct();
-}
diff --git a/applications/solvers/compressible/sonicFoam/pEqn.H b/applications/solvers/compressible/sonicFoam/pEqn.H
new file mode 100644
index 0000000000000000000000000000000000000000..96a500d4c2644a1af8220d012f1888f67a297b2c
--- /dev/null
+++ b/applications/solvers/compressible/sonicFoam/pEqn.H
@@ -0,0 +1,37 @@
+rho = thermo.rho();
+
+volScalarField rUA = 1.0/UEqn.A();
+U = rUA*UEqn.H();
+
+surfaceScalarField phid
+(
+    "phid",
+    fvc::interpolate(psi)
+   *(
+        (fvc::interpolate(U) & mesh.Sf())
+      + fvc::ddtPhiCorr(rUA, rho, U, phi)
+    )
+);
+
+for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
+{
+    fvScalarMatrix pEqn
+    (
+        fvm::ddt(psi, p)
+      + fvm::div(phid, p)
+      - fvm::laplacian(rho*rUA, p)
+    );
+
+    pEqn.solve();
+
+    if (nonOrth == nNonOrthCorr)
+    {
+        phi = pEqn.flux();
+    }
+}
+
+#include "rhoEqn.H"
+#include "compressibleContinuityErrs.H"
+
+U -= rUA*fvc::grad(p);
+U.correctBoundaryConditions();
diff --git a/applications/solvers/compressible/sonicFoam/readThermodynamicProperties.H b/applications/solvers/compressible/sonicFoam/readThermodynamicProperties.H
deleted file mode 100644
index 1fc57fc5fdc6ef0a6d8d232922fa06f124314a3a..0000000000000000000000000000000000000000
--- a/applications/solvers/compressible/sonicFoam/readThermodynamicProperties.H
+++ /dev/null
@@ -1,23 +0,0 @@
-    Info<< "Reading thermodynamicProperties\n" << endl;
-
-    IOdictionary thermodynamicProperties
-    (
-        IOobject
-        (
-            "thermodynamicProperties",
-            runTime.constant(),
-            mesh,
-            IOobject::MUST_READ,
-            IOobject::NO_WRITE
-        )
-    );
-
-    dimensionedScalar R
-    (
-        thermodynamicProperties.lookup("R")
-    );
-
-    dimensionedScalar Cv
-    (
-        thermodynamicProperties.lookup("Cv")
-    );
diff --git a/applications/solvers/compressible/sonicFoam/readTransportProperties.H b/applications/solvers/compressible/sonicFoam/readTransportProperties.H
deleted file mode 100644
index 1502e2033a05c54d882dd06ea42731938527d1a8..0000000000000000000000000000000000000000
--- a/applications/solvers/compressible/sonicFoam/readTransportProperties.H
+++ /dev/null
@@ -1,18 +0,0 @@
-    Info<< "Reading transportProperties\n" << endl;
-
-    IOdictionary transportProperties
-    (
-        IOobject
-        (
-            "transportProperties",
-            runTime.constant(),
-            mesh,
-            IOobject::MUST_READ,
-            IOobject::NO_WRITE
-        )
-    );
-
-    dimensionedScalar mu
-    (
-        transportProperties.lookup("mu")
-    );
diff --git a/applications/solvers/compressible/sonicFoam/sonicFoam.C b/applications/solvers/compressible/sonicFoam/sonicFoam.C
index 6ff79607986802a024e450042be2ad286d6d5b12..df100262efbc93a9127978cd0b472c380a7e8a17 100644
--- a/applications/solvers/compressible/sonicFoam/sonicFoam.C
+++ b/applications/solvers/compressible/sonicFoam/sonicFoam.C
@@ -32,7 +32,7 @@ Description
 \*---------------------------------------------------------------------------*/
 
 #include "fvCFD.H"
-#include "basicThermo.H"
+#include "basicPsiThermo.H"
 #include "turbulenceModel.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -58,64 +58,21 @@ int main(int argc, char *argv[])
 
         #include "rhoEqn.H"
 
-        fvVectorMatrix UEqn
-        (
-            fvm::ddt(rho, U)
-          + fvm::div(phi, U)
-          + turbulence->divDevRhoReff(U)
-        );
+        #include "UEqn.H"
 
-        solve(UEqn == -fvc::grad(p));
-
-        #include "hEqn.H"
+        #include "eEqn.H"
 
 
         // --- PISO loop
 
         for (int corr=0; corr<nCorr; corr++)
         {
-            volScalarField rUA = 1.0/UEqn.A();
-            U = rUA*UEqn.H();
-
-            surfaceScalarField phid
-            (
-                "phid",
-                fvc::interpolate(thermo->psi())
-               *(
-                   (fvc::interpolate(U) & mesh.Sf())
-                 + fvc::ddtPhiCorr(rUA, rho, U, phi)
-               )
-            );
-
-            for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
-            {
-                fvScalarMatrix pEqn
-                (
-                    fvm::ddt(psi, p)
-                  + fvm::div(phid, p)
-                  - fvm::laplacian(rho*rUA, p)
-                );
-
-                pEqn.solve();
-
-                if (nonOrth == nNonOrthCorr)
-                {
-                    phi = pEqn.flux();
-                }
-            }
-
-             #include "compressibleContinuityErrs.H"
-
-            U -= rUA*fvc::grad(p);
-            U.correctBoundaryConditions();
+            #include "pEqn.H"
         }
 
-        DpDt =
-            fvc::DDt(surfaceScalarField("phiU", phi/fvc::interpolate(rho)), p);
-
         turbulence->correct();
 
-        rho = psi*p;
+        rho = thermo.rho();
 
         runTime.write();
 
diff --git a/applications/solvers/compressible/sonicLiquidFoam/createFields.H b/applications/solvers/compressible/sonicLiquidFoam/createFields.H
index f419234c7dbf28ee9231ce36837df22d996912ae..1268cbb7b0657b70f8ffa4131204ad516b2e1b79 100644
--- a/applications/solvers/compressible/sonicLiquidFoam/createFields.H
+++ b/applications/solvers/compressible/sonicLiquidFoam/createFields.H
@@ -41,4 +41,4 @@
     );
 
 
-#   include "compressibleCreatePhi.H"
+    #include "compressibleCreatePhi.H"
diff --git a/applications/solvers/compressible/sonicLiquidFoam/sonicLiquidFoam.C b/applications/solvers/compressible/sonicLiquidFoam/sonicLiquidFoam.C
index 0324da8299896476159dca790e388716a8ca8ac3..763e03a4b9759e3210379affa4bc44341e7ea848 100644
--- a/applications/solvers/compressible/sonicLiquidFoam/sonicLiquidFoam.C
+++ b/applications/solvers/compressible/sonicLiquidFoam/sonicLiquidFoam.C
@@ -37,16 +37,15 @@ Description
 
 int main(int argc, char *argv[])
 {
+    #include "setRootCase.H"
+    #include "createTime.H"
+    #include "createMesh.H"
+    #include "readThermodynamicProperties.H"
+    #include "readTransportProperties.H"
+    #include "createFields.H"
+    #include "initContinuityErrs.H"
 
-#   include "setRootCase.H"
-#   include "createTime.H"
-#   include "createMesh.H"
-#   include "readThermodynamicProperties.H"
-#   include "readTransportProperties.H"
-#   include "createFields.H"
-#   include "initContinuityErrs.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
     Info<< "\nStarting time loop\n" << endl;
 
@@ -54,10 +53,10 @@ int main(int argc, char *argv[])
     {
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
-#       include "readPISOControls.H"
-#       include "compressibleCourantNo.H"
+        #include "readPISOControls.H"
+        #include "compressibleCourantNo.H"
 
-#       include "rhoEqn.H"
+        #include "rhoEqn.H"
 
         fvVectorMatrix UEqn
         (
@@ -79,8 +78,8 @@ int main(int argc, char *argv[])
             surfaceScalarField phid
             (
                 "phid",
-                psi*
-                (
+                psi
+               *(
                     (fvc::interpolate(U) & mesh.Sf())
                   + fvc::ddtPhiCorr(rUA, rho, U, phi)
                 )
@@ -100,7 +99,7 @@ int main(int argc, char *argv[])
 
             phi += pEqn.flux();
 
-#           include "compressibleContinuityErrs.H"
+            #include "compressibleContinuityErrs.H"
 
             U -= rUA*fvc::grad(p);
             U.correctBoundaryConditions();
diff --git a/applications/solvers/discreteMethods/dsmc/dsmcFoam/Make/files b/applications/solvers/discreteMethods/dsmc/dsmcFoam/Make/files
old mode 100755
new mode 100644
diff --git a/applications/solvers/discreteMethods/dsmc/dsmcFoam/Make/options b/applications/solvers/discreteMethods/dsmc/dsmcFoam/Make/options
old mode 100755
new mode 100644
diff --git a/applications/solvers/discreteMethods/dsmc/dsmcFoam/dsmcFoam.C b/applications/solvers/discreteMethods/dsmc/dsmcFoam/dsmcFoam.C
index cb068960e8e459dc3c3fc7db1d45e458f649c552..7a4d8ce8b92c7e14a9dfa14eb67a790e7533c3cb 100644
--- a/applications/solvers/discreteMethods/dsmc/dsmcFoam/dsmcFoam.C
+++ b/applications/solvers/discreteMethods/dsmc/dsmcFoam/dsmcFoam.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/applications/solvers/discreteMethods/molecularDynamics/mdEquilibrationFoam/Make/files b/applications/solvers/discreteMethods/molecularDynamics/mdEquilibrationFoam/Make/files
old mode 100755
new mode 100644
diff --git a/applications/solvers/discreteMethods/molecularDynamics/mdEquilibrationFoam/Make/options b/applications/solvers/discreteMethods/molecularDynamics/mdEquilibrationFoam/Make/options
old mode 100755
new mode 100644
diff --git a/applications/solvers/discreteMethods/molecularDynamics/mdEquilibrationFoam/mdEquilibrationFoam.C b/applications/solvers/discreteMethods/molecularDynamics/mdEquilibrationFoam/mdEquilibrationFoam.C
index a124288dc5b64961f7dd48742525216ac3a2e39c..ea10d9129fae5ad178d0f0bb2ade20bf95cfa7fe 100644
--- a/applications/solvers/discreteMethods/molecularDynamics/mdEquilibrationFoam/mdEquilibrationFoam.C
+++ b/applications/solvers/discreteMethods/molecularDynamics/mdEquilibrationFoam/mdEquilibrationFoam.C
@@ -2,7 +2,7 @@
  =========                   |
  \\      /   F ield          | OpenFOAM: The Open Source CFD Toolbox
   \\    /    O peration      |
-   \\  /     A nd            | Copyright (C) 1991-2009 OpenCFD Ltd.
+   \\  /     A nd            | Copyright (C) 2008-2009 OpenCFD Ltd.
     \\/      M anipulation   |
 -------------------------------------------------------------------------------
 License
diff --git a/applications/solvers/discreteMethods/molecularDynamics/mdEquilibrationFoam/readmdEquilibrationDict.H b/applications/solvers/discreteMethods/molecularDynamics/mdEquilibrationFoam/readmdEquilibrationDict.H
index 8289d014b03da3f2519d34be134ab4bcaa6ab2b9..b94745d9df20114094e7b75fdff62d15042164eb 100644
--- a/applications/solvers/discreteMethods/molecularDynamics/mdEquilibrationFoam/readmdEquilibrationDict.H
+++ b/applications/solvers/discreteMethods/molecularDynamics/mdEquilibrationFoam/readmdEquilibrationDict.H
@@ -14,5 +14,5 @@ IOdictionary mdEquilibrationDict
 
 scalar targetTemperature = readScalar
 (
-    mdEquilibrationDict.lookup("equilibrationTargetTemperature")
+    mdEquilibrationDict.lookup("targetTemperature")
 );
diff --git a/applications/solvers/discreteMethods/molecularDynamics/mdFoam/Make/files b/applications/solvers/discreteMethods/molecularDynamics/mdFoam/Make/files
old mode 100755
new mode 100644
diff --git a/applications/solvers/discreteMethods/molecularDynamics/mdFoam/Make/options b/applications/solvers/discreteMethods/molecularDynamics/mdFoam/Make/options
old mode 100755
new mode 100644
diff --git a/applications/solvers/discreteMethods/molecularDynamics/mdFoam/mdFoam.C b/applications/solvers/discreteMethods/molecularDynamics/mdFoam/mdFoam.C
index 287065754e39c115a4c9b3a5a04e61faf631c332..9fafafe1c9e7f4a58a8d7e4c181505e688b96948 100644
--- a/applications/solvers/discreteMethods/molecularDynamics/mdFoam/mdFoam.C
+++ b/applications/solvers/discreteMethods/molecularDynamics/mdFoam/mdFoam.C
@@ -2,7 +2,7 @@
  =========                   |
  \\      /   F ield          | OpenFOAM: The Open Source CFD Toolbox
   \\    /    O peration      |
-   \\  /     A nd            | Copyright (C) 1991-2009 OpenCFD Ltd.
+   \\  /     A nd            | Copyright (C) 2008-2009 OpenCFD Ltd.
     \\/      M anipulation   |
 -------------------------------------------------------------------------------
 License
diff --git a/applications/solvers/electromagnetics/electrostaticFoam/electrostaticFoam.C b/applications/solvers/electromagnetics/electrostaticFoam/electrostaticFoam.C
index ff0b3ad21a0ac248b21e9f4a6926c3e836a1c684..e2a3f3ea39575daa252841621d8fa7e262106aaf 100644
--- a/applications/solvers/electromagnetics/electrostaticFoam/electrostaticFoam.C
+++ b/applications/solvers/electromagnetics/electrostaticFoam/electrostaticFoam.C
@@ -36,14 +36,13 @@ Description
 
 int main(int argc, char *argv[])
 {
+    #include "setRootCase.H"
 
-#   include "setRootCase.H"
+    #include "createTime.H"
+    #include "createMesh.H"
+    #include "createFields.H"
 
-#   include "createTime.H"
-#   include "createMesh.H"
-#   include "createFields.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
     Info<< "\nStarting iteration loop\n" << endl;
 
diff --git a/applications/solvers/electromagnetics/mhdFoam/mhdFoam.C b/applications/solvers/electromagnetics/mhdFoam/mhdFoam.C
index d89b636d04392ffff0dae5344587421aec0278c1..f09b35efc97f93eac30fda4fdf212a436eedd22d 100644
--- a/applications/solvers/electromagnetics/mhdFoam/mhdFoam.C
+++ b/applications/solvers/electromagnetics/mhdFoam/mhdFoam.C
@@ -26,7 +26,7 @@ Application
     mhdFoam
 
 Description
-    Solver for magnetohydrodynamics (MHD): incompressible, laminar flow of a 
+    Solver for magnetohydrodynamics (MHD): incompressible, laminar flow of a
     conducting fluid under the influence of a magnetic field.
 
     An applied magnetic field H acts as a driving force,
@@ -58,27 +58,25 @@ Description
 
 int main(int argc, char *argv[])
 {
+    #include "setRootCase.H"
 
-#   include "setRootCase.H"
+    #include "createTime.H"
+    #include "createMesh.H"
+    #include "createFields.H"
+    #include "initContinuityErrs.H"
 
-#   include "createTime.H"
-#   include "createMesh.H"
-#   include "createFields.H"
-#   include "initContinuityErrs.H"
-
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
     Info<< nl << "Starting time loop" << endl;
 
     while (runTime.loop())
     {
-#       include "readPISOControls.H"
-#       include "readBPISOControls.H"
+        #include "readPISOControls.H"
+        #include "readBPISOControls.H"
 
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
-#       include "CourantNo.H"
+        #include "CourantNo.H"
 
         {
             fvVectorMatrix UEqn
@@ -101,7 +99,7 @@ int main(int argc, char *argv[])
 
                 U = rUA*UEqn.H();
 
-                phi = (fvc::interpolate(U) & mesh.Sf()) 
+                phi = (fvc::interpolate(U) & mesh.Sf())
                     + fvc::ddtPhiCorr(rUA, U, phi);
 
                 for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
@@ -120,7 +118,7 @@ int main(int argc, char *argv[])
                     }
                 }
 
-#               include "continuityErrs.H"
+                #include "continuityErrs.H"
 
                 U -= rUA*fvc::grad(p);
                 U.correctBoundaryConditions();
@@ -154,7 +152,7 @@ int main(int argc, char *argv[])
 
             phiB -= pBEqn.flux();
 
-#           include "magneticFieldErr.H"
+            #include "magneticFieldErr.H"
         }
 
         runTime.write();
diff --git a/applications/solvers/financial/financialFoam/financialFoam.C b/applications/solvers/financial/financialFoam/financialFoam.C
index 86c18e2ac44a516d05f2ce0a9a5a8aaa49ff01e4..4bbb74e95f28bf9dcf176180f06f6cf12a4ae27a 100644
--- a/applications/solvers/financial/financialFoam/financialFoam.C
+++ b/applications/solvers/financial/financialFoam/financialFoam.C
@@ -38,14 +38,13 @@ Description
 
 int main(int argc, char *argv[])
 {
+    #include "setRootCase.H"
 
-#include "setRootCase.H"
+    #include "createTime.H"
+    #include "createMesh.H"
+    #include "createFields.H"
 
-#include "createTime.H"
-#include "createMesh.H"
-#include "createFields.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
     Info<< nl << "Calculating value(price of comodities)" << endl;
 
diff --git a/applications/solvers/heatTransfer/buoyantBoussinesqPisoFoam/Make/options b/applications/solvers/heatTransfer/buoyantBoussinesqPisoFoam/Make/options
index a53061a93cc503d9368d9d3a900ac6ef801015ba..041d2e0605468bb86b7eee749a4be8de8076f910 100644
--- a/applications/solvers/heatTransfer/buoyantBoussinesqPisoFoam/Make/options
+++ b/applications/solvers/heatTransfer/buoyantBoussinesqPisoFoam/Make/options
@@ -1,4 +1,5 @@
 EXE_INC = \
+    -I../buoyantBoussinesqSimpleFoam \
     -I$(LIB_SRC)/finiteVolume/lnInclude \
     -I$(LIB_SRC)/turbulenceModels \
     -I$(LIB_SRC)/turbulenceModels/incompressible/RAS/lnInclude \
diff --git a/applications/solvers/heatTransfer/buoyantBoussinesqPisoFoam/TEqn.H b/applications/solvers/heatTransfer/buoyantBoussinesqPisoFoam/TEqn.H
index e2a89d1441582292fcb5a33ec7e092eac455a5a5..ece4b8ffe5c70d80f68e7093baffe960d5e76433 100644
--- a/applications/solvers/heatTransfer/buoyantBoussinesqPisoFoam/TEqn.H
+++ b/applications/solvers/heatTransfer/buoyantBoussinesqPisoFoam/TEqn.H
@@ -2,7 +2,7 @@
     volScalarField kappaEff
     (
         "kappaEff",
-        turbulence->nu() + turbulence->nut()/Prt
+        turbulence->nu()/Pr + turbulence->nut()/Prt
     );
 
     fvScalarMatrix TEqn
@@ -15,4 +15,6 @@
     TEqn.relax();
 
     TEqn.solve();
+
+    rhok = 1.0 - beta*(T - TRef);
 }
diff --git a/applications/solvers/heatTransfer/buoyantBoussinesqPisoFoam/UEqn.H b/applications/solvers/heatTransfer/buoyantBoussinesqPisoFoam/UEqn.H
index 3b5b5be24923c1b410d47c34fd14da319e117026..35387f4ff40468426b6ebc31a6fb517553759fe4 100644
--- a/applications/solvers/heatTransfer/buoyantBoussinesqPisoFoam/UEqn.H
+++ b/applications/solvers/heatTransfer/buoyantBoussinesqPisoFoam/UEqn.H
@@ -1,23 +1,26 @@
     // Solve the momentum equation
 
-    tmp<fvVectorMatrix> UEqn
+    fvVectorMatrix UEqn
     (
         fvm::ddt(U)
       + fvm::div(phi, U)
       + turbulence->divDevReff(U)
     );
 
-    UEqn().relax();
+    UEqn.relax();
 
-    solve
-    (
-        UEqn()
-      ==
-       -fvc::reconstruct
+    if (momentumPredictor)
+    {
+        solve
         (
+            UEqn
+         ==
+            fvc::reconstruct
             (
-                fvc::snGrad(pd)
-              - betaghf*fvc::snGrad(T)
-            ) * mesh.magSf()
-        )
-    );
+                (
+                    fvc::interpolate(rhok)*(g & mesh.Sf())
+                  - fvc::snGrad(p)*mesh.magSf()
+                )
+            )
+        );
+    }
diff --git a/applications/solvers/heatTransfer/buoyantBoussinesqPisoFoam/buoyantBoussinesqPisoFoam.C b/applications/solvers/heatTransfer/buoyantBoussinesqPisoFoam/buoyantBoussinesqPisoFoam.C
index bd0ce2ac373a09d4c8816ad5fc990244d31a51d7..a8ff18374220e04a17c01dcd59325f030ea38361 100644
--- a/applications/solvers/heatTransfer/buoyantBoussinesqPisoFoam/buoyantBoussinesqPisoFoam.C
+++ b/applications/solvers/heatTransfer/buoyantBoussinesqPisoFoam/buoyantBoussinesqPisoFoam.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -30,18 +30,18 @@ Description
 
     Uses the Boussinesq approximation:
     \f[
-        rho_{eff} = 1 - beta(T - T_{ref})
+        rho_{k} = 1 - beta(T - T_{ref})
     \f]
 
     where:
-        \f$ rho_{eff} \f$ = the effective (driving) density
+        \f$ rho_{k} \f$ = the effective (driving) kinematic density
         beta = thermal expansion coefficient [1/K]
         T = temperature [K]
         \f$ T_{ref} \f$ = reference temperature [K]
 
     Valid when:
     \f[
-        rho_{eff} << 1
+        rho_{k} << 1
     \f]
 
 \*---------------------------------------------------------------------------*/
@@ -54,18 +54,17 @@ Description
 
 int main(int argc, char *argv[])
 {
-
-#   include "setRootCase.H"
-#   include "createTime.H"
-#   include "createMesh.H"
-#   include "readEnvironmentalProperties.H"
-#   include "createFields.H"
-#   include "initContinuityErrs.H"
-#   include "readTimeControls.H"
-#   include "CourantNo.H"
-#   include "setInitialDeltaT.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+    #include "setRootCase.H"
+    #include "createTime.H"
+    #include "createMesh.H"
+    #include "readEnvironmentalProperties.H"
+    #include "createFields.H"
+    #include "initContinuityErrs.H"
+    #include "readTimeControls.H"
+    #include "CourantNo.H"
+    #include "setInitialDeltaT.H"
+
+    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
     Info<< "\nStarting time loop\n" << endl;
 
@@ -73,26 +72,23 @@ int main(int argc, char *argv[])
     {
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
-#       include "readTimeControls.H"
-#       include "readPISOControls.H"
-#       include "CourantNo.H"
-#       include "setDeltaT.H"
+        #include "readTimeControls.H"
+        #include "readPISOControls.H"
+        #include "CourantNo.H"
+        #include "setDeltaT.H"
 
-#       include "UEqn.H"
+        #include "UEqn.H"
+        #include "TEqn.H"
 
         // --- PISO loop
         for (int corr=0; corr<nCorr; corr++)
         {
-#           include "TEqn.H"
-#           include "pdEqn.H"
+            #include "pEqn.H"
         }
 
         turbulence->correct();
 
-        if (runTime.write())
-        {
-#           include "writeAdditionalFields.H"
-        }
+        runTime.write();
 
         Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s"
             << "  ClockTime = " << runTime.elapsedClockTime() << " s"
diff --git a/applications/solvers/heatTransfer/buoyantBoussinesqPisoFoam/createFields.H b/applications/solvers/heatTransfer/buoyantBoussinesqPisoFoam/createFields.H
index 5f3f13626db0a860d7058e76ce5a90f397558c95..dde0e38b339348ac1693d4bfdf3da9889610a354 100644
--- a/applications/solvers/heatTransfer/buoyantBoussinesqPisoFoam/createFields.H
+++ b/applications/solvers/heatTransfer/buoyantBoussinesqPisoFoam/createFields.H
@@ -14,13 +14,12 @@
         mesh
     );
 
-    // kinematic pd
-    Info<< "Reading field pd\n" << endl;
-    volScalarField pd
+    Info<< "Reading field p\n" << endl;
+    volScalarField p
     (
         IOobject
         (
-            "pd",
+            "p",
             runTime.timeName(),
             mesh,
             IOobject::MUST_READ,
@@ -53,15 +52,25 @@
         incompressible::RASModel::New(U, phi, laminarTransport)
     );
 
-    Info<< "Calculating field beta*(g.h)\n" << endl;
-    surfaceScalarField betaghf("betagh", beta*(g & mesh.Cf()));
-
-    label pdRefCell = 0;
-    scalar pdRefValue = 0.0;
+    label pRefCell = 0;
+    scalar pRefValue = 0.0;
     setRefCell
     (
-        pd,
-        mesh.solutionDict().subDict("SIMPLE"),
-        pdRefCell,
-        pdRefValue
+        p,
+        mesh.solutionDict().subDict("PISO"),
+        pRefCell,
+        pRefValue
+    );
+
+
+    // Kinematic density for buoyancy force
+    volScalarField rhok
+    (
+        IOobject
+        (
+            "rhok",
+            runTime.timeName(),
+            mesh
+        ),
+        1.0 - beta*(T - TRef)
     );
diff --git a/applications/solvers/heatTransfer/buoyantBoussinesqPisoFoam/pdEqn.H b/applications/solvers/heatTransfer/buoyantBoussinesqPisoFoam/pEqn.H
similarity index 55%
rename from applications/solvers/heatTransfer/buoyantBoussinesqPisoFoam/pdEqn.H
rename to applications/solvers/heatTransfer/buoyantBoussinesqPisoFoam/pEqn.H
index 25e2a9817fbe680f3b52b91b5a7fc187d52a3643..ff0c26f05893f6e625e7a8a5193c2f6a08882bc5 100644
--- a/applications/solvers/heatTransfer/buoyantBoussinesqPisoFoam/pdEqn.H
+++ b/applications/solvers/heatTransfer/buoyantBoussinesqPisoFoam/pEqn.H
@@ -1,9 +1,8 @@
 {
-    volScalarField rUA("rUA", 1.0/UEqn().A());
+    volScalarField rUA("rUA", 1.0/UEqn.A());
     surfaceScalarField rUAf("(1|A(U))", fvc::interpolate(rUA));
 
-    U = rUA*UEqn().H();
-    UEqn.clear();
+    U = rUA*UEqn.H();
 
     surfaceScalarField phiU
     (
@@ -11,31 +10,31 @@
       + fvc::ddtPhiCorr(rUA, U, phi)
     );
 
-    phi = phiU + betaghf*fvc::snGrad(T)*rUAf*mesh.magSf();
+    phi = phiU + rUAf*fvc::interpolate(rhok)*(g & mesh.Sf());
 
     for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
     {
-        fvScalarMatrix pdEqn
+        fvScalarMatrix pEqn
         (
-            fvm::laplacian(rUAf, pd) == fvc::div(phi)
+            fvm::laplacian(rUAf, p) == fvc::div(phi)
         );
 
         if (corr == nCorr-1 && nonOrth == nNonOrthCorr)
         {
-            pdEqn.solve(mesh.solver(pd.name() + "Final"));
+            pEqn.solve(mesh.solver(p.name() + "Final"));
         }
         else
         {
-            pdEqn.solve(mesh.solver(pd.name()));
+            pEqn.solve(mesh.solver(p.name()));
         }
 
         if (nonOrth == nNonOrthCorr)
         {
-            phi += pdEqn.flux();
+            phi -= pEqn.flux();
         }
     }
 
-    U -= rUA*fvc::reconstruct((phi - phiU)/rUAf);
+    U += rUA*fvc::reconstruct((phi - phiU)/rUAf);
     U.correctBoundaryConditions();
 
     #include "continuityErrs.H"
diff --git a/applications/solvers/heatTransfer/buoyantBoussinesqPisoFoam/readTransportProperties.H b/applications/solvers/heatTransfer/buoyantBoussinesqPisoFoam/readTransportProperties.H
deleted file mode 100644
index 585128dfdeb7d5e5212f9412d9b415c05c15b752..0000000000000000000000000000000000000000
--- a/applications/solvers/heatTransfer/buoyantBoussinesqPisoFoam/readTransportProperties.H
+++ /dev/null
@@ -1,13 +0,0 @@
-    singlePhaseTransportModel laminarTransport(U, phi);
-
-    // thermal expansion coefficient [1/K]
-    dimensionedScalar beta(laminarTransport.lookup("beta"));
-
-    // reference temperature [K]
-    dimensionedScalar TRef(laminarTransport.lookup("TRef"));
-
-    // reference kinematic pressure [m2/s2]
-    dimensionedScalar pRef(laminarTransport.lookup("pRef"));
-
-    // turbulent Prandtl number
-    dimensionedScalar Prt(laminarTransport.lookup("Prt"));
diff --git a/applications/solvers/heatTransfer/buoyantBoussinesqPisoFoam/writeAdditionalFields.H b/applications/solvers/heatTransfer/buoyantBoussinesqPisoFoam/writeAdditionalFields.H
deleted file mode 100644
index 20f7c6ae1dcff80630dc2ca21253b1e824ea5d77..0000000000000000000000000000000000000000
--- a/applications/solvers/heatTransfer/buoyantBoussinesqPisoFoam/writeAdditionalFields.H
+++ /dev/null
@@ -1,29 +0,0 @@
-{
-    volScalarField rhoEff
-    (
-        IOobject
-        (
-            "rhoEff",
-            runTime.timeName(),
-            mesh,
-            IOobject::NO_READ,
-            IOobject::AUTO_WRITE
-        ),
-        1.0 - beta*(T - TRef)
-    );
-    rhoEff.write();
-
-    volScalarField p
-    (
-        IOobject
-        (
-            "p",
-            runTime.timeName(),
-            mesh,
-            IOobject::NO_READ,
-            IOobject::AUTO_WRITE
-        ),
-        pd + rhoEff*(g & mesh.C()) + pRef
-    );
-    p.write();
-}
diff --git a/applications/solvers/heatTransfer/buoyantBoussinesqSimpleFoam/TEqn.H b/applications/solvers/heatTransfer/buoyantBoussinesqSimpleFoam/TEqn.H
index d00f0877eaf592058b956d3c9f78979d91d6dbc1..7452a0495adf2207ffb0f66e9e4484e1e7c9bad2 100644
--- a/applications/solvers/heatTransfer/buoyantBoussinesqSimpleFoam/TEqn.H
+++ b/applications/solvers/heatTransfer/buoyantBoussinesqSimpleFoam/TEqn.H
@@ -2,7 +2,7 @@
     volScalarField kappaEff
     (
         "kappaEff",
-        turbulence->nu() + turbulence->nut()/Prt
+        turbulence->nu()/Pr + turbulence->nut()/Prt
     );
 
     fvScalarMatrix TEqn
@@ -16,4 +16,6 @@
 
     eqnResidual = TEqn.solve().initialResidual();
     maxResidual = max(eqnResidual, maxResidual);
+
+    rhok = 1.0 - beta*(T - TRef);
 }
diff --git a/applications/solvers/heatTransfer/buoyantBoussinesqSimpleFoam/UEqn.H b/applications/solvers/heatTransfer/buoyantBoussinesqSimpleFoam/UEqn.H
index cf5c4a197893afff99ffec01847b2ce9bbd57b3e..a813a2d8b7aab17f8a45dfc9295e9ee6f161a683 100644
--- a/applications/solvers/heatTransfer/buoyantBoussinesqSimpleFoam/UEqn.H
+++ b/applications/solvers/heatTransfer/buoyantBoussinesqSimpleFoam/UEqn.H
@@ -13,12 +13,12 @@
     (
         UEqn()
       ==
-       -fvc::reconstruct
+        fvc::reconstruct
         (
             (
-                fvc::snGrad(pd)
-              - betaghf*fvc::snGrad(T)
-            ) * mesh.magSf()
+                fvc::interpolate(rhok)*(g & mesh.Sf())
+              - fvc::snGrad(p)*mesh.magSf()
+            )
         )
     ).initialResidual();
 
diff --git a/applications/solvers/heatTransfer/buoyantBoussinesqSimpleFoam/buoyantBoussinesqSimpleFoam.C b/applications/solvers/heatTransfer/buoyantBoussinesqSimpleFoam/buoyantBoussinesqSimpleFoam.C
index 26e732cf9c17b30ac63d080b03470a3678290aa0..63b938fa3625c2a15475b5ab5eb2157ce4cd9416 100644
--- a/applications/solvers/heatTransfer/buoyantBoussinesqSimpleFoam/buoyantBoussinesqSimpleFoam.C
+++ b/applications/solvers/heatTransfer/buoyantBoussinesqSimpleFoam/buoyantBoussinesqSimpleFoam.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -54,15 +54,14 @@ Description
 
 int main(int argc, char *argv[])
 {
+    #include "setRootCase.H"
+    #include "createTime.H"
+    #include "createMesh.H"
+    #include "readEnvironmentalProperties.H"
+    #include "createFields.H"
+    #include "initContinuityErrs.H"
 
-#   include "setRootCase.H"
-#   include "createTime.H"
-#   include "createMesh.H"
-#   include "readEnvironmentalProperties.H"
-#   include "createFields.H"
-#   include "initContinuityErrs.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
     Info<< "\nStarting time loop\n" << endl;
 
@@ -70,30 +69,27 @@ int main(int argc, char *argv[])
     {
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
-#       include "readSIMPLEControls.H"
-#       include "initConvergenceCheck.H"
+        #include "readSIMPLEControls.H"
+        #include "initConvergenceCheck.H"
 
-        pd.storePrevIter();
+        p.storePrevIter();
 
         // Pressure-velocity SIMPLE corrector
         {
-#           include "UEqn.H"
-#           include "TEqn.H"
-#           include "pdEqn.H"
+            #include "UEqn.H"
+            #include "TEqn.H"
+            #include "pEqn.H"
         }
 
         turbulence->correct();
 
-        if (runTime.write())
-        {
-#           include "writeAdditionalFields.H"
-        }
+        runTime.write();
 
         Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s"
             << "  ClockTime = " << runTime.elapsedClockTime() << " s"
             << nl << endl;
 
-#       include "convergenceCheck.H"
+        #include "convergenceCheck.H"
     }
 
     Info<< "End\n" << endl;
diff --git a/applications/solvers/heatTransfer/buoyantBoussinesqSimpleFoam/createFields.H b/applications/solvers/heatTransfer/buoyantBoussinesqSimpleFoam/createFields.H
index 5f3f13626db0a860d7058e76ce5a90f397558c95..0e668e9d987c132605e1aa28daee9e9aa0bf9a94 100644
--- a/applications/solvers/heatTransfer/buoyantBoussinesqSimpleFoam/createFields.H
+++ b/applications/solvers/heatTransfer/buoyantBoussinesqSimpleFoam/createFields.H
@@ -14,13 +14,12 @@
         mesh
     );
 
-    // kinematic pd
-    Info<< "Reading field pd\n" << endl;
-    volScalarField pd
+    Info<< "Reading field p\n" << endl;
+    volScalarField p
     (
         IOobject
         (
-            "pd",
+            "p",
             runTime.timeName(),
             mesh,
             IOobject::MUST_READ,
@@ -56,12 +55,25 @@
     Info<< "Calculating field beta*(g.h)\n" << endl;
     surfaceScalarField betaghf("betagh", beta*(g & mesh.Cf()));
 
-    label pdRefCell = 0;
-    scalar pdRefValue = 0.0;
+    label pRefCell = 0;
+    scalar pRefValue = 0.0;
     setRefCell
     (
-        pd,
+        p,
         mesh.solutionDict().subDict("SIMPLE"),
-        pdRefCell,
-        pdRefValue
+        pRefCell,
+        pRefValue
+    );
+
+
+    // Kinematic density for buoyancy force
+    volScalarField rhok
+    (
+        IOobject
+        (
+            "rhok",
+            runTime.timeName(),
+            mesh
+        ),
+        1.0 - beta*(T - TRef)
     );
diff --git a/applications/solvers/heatTransfer/buoyantBoussinesqSimpleFoam/pdEqn.H b/applications/solvers/heatTransfer/buoyantBoussinesqSimpleFoam/pEqn.H
similarity index 64%
rename from applications/solvers/heatTransfer/buoyantBoussinesqSimpleFoam/pdEqn.H
rename to applications/solvers/heatTransfer/buoyantBoussinesqSimpleFoam/pEqn.H
index e782d26c8dc5ad4374d1b5a76ab7dfd72f6b9601..6408c7ccc80754426579d2feab91af7e744a7bb8 100644
--- a/applications/solvers/heatTransfer/buoyantBoussinesqSimpleFoam/pdEqn.H
+++ b/applications/solvers/heatTransfer/buoyantBoussinesqSimpleFoam/pEqn.H
@@ -6,41 +6,43 @@
     UEqn.clear();
 
     phi = fvc::interpolate(U) & mesh.Sf();
-    adjustPhi(phi, U, pd);
-    surfaceScalarField buoyancyPhi = -betaghf*fvc::snGrad(T)*rUAf*mesh.magSf();
-    phi -= buoyancyPhi;
+    adjustPhi(phi, U, p);
+
+    surfaceScalarField buoyancyPhi =
+        rUAf*fvc::interpolate(rhok)*(g & mesh.Sf());
+    phi += buoyancyPhi;
 
     for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
     {
-        fvScalarMatrix pdEqn
+        fvScalarMatrix pEqn
         (
-            fvm::laplacian(rUAf, pd) == fvc::div(phi)
+            fvm::laplacian(rUAf, p) == fvc::div(phi)
         );
 
-        pdEqn.setReference(pdRefCell, pdRefValue);
+        pEqn.setReference(pRefCell, pRefValue);
 
         // retain the residual from the first iteration
         if (nonOrth == 0)
         {
-            eqnResidual = pdEqn.solve().initialResidual();
+            eqnResidual = pEqn.solve().initialResidual();
             maxResidual = max(eqnResidual, maxResidual);
         }
         else
         {
-            pdEqn.solve();
+            pEqn.solve();
         }
 
         if (nonOrth == nNonOrthCorr)
         {
             // Calculate the conservative fluxes
-            phi -= pdEqn.flux();
+            phi -= pEqn.flux();
 
             // Explicitly relax pressure for momentum corrector
-            pd.relax();
+            p.relax();
 
             // Correct the momentum source with the pressure gradient flux
             // calculated from the relaxed pressure
-            U -= rUA*fvc::reconstruct((buoyancyPhi + pdEqn.flux())/rUAf);
+            U += rUA*fvc::reconstruct((buoyancyPhi - pEqn.flux())/rUAf);
             U.correctBoundaryConditions();
         }
     }
diff --git a/applications/solvers/heatTransfer/buoyantBoussinesqSimpleFoam/readTransportProperties.H b/applications/solvers/heatTransfer/buoyantBoussinesqSimpleFoam/readTransportProperties.H
index 585128dfdeb7d5e5212f9412d9b415c05c15b752..82d101d8c1b18d88c41af9ffd0f7e4d10fa89cd2 100644
--- a/applications/solvers/heatTransfer/buoyantBoussinesqSimpleFoam/readTransportProperties.H
+++ b/applications/solvers/heatTransfer/buoyantBoussinesqSimpleFoam/readTransportProperties.H
@@ -1,13 +1,13 @@
     singlePhaseTransportModel laminarTransport(U, phi);
 
-    // thermal expansion coefficient [1/K]
+    // Thermal expansion coefficient [1/K]
     dimensionedScalar beta(laminarTransport.lookup("beta"));
 
-    // reference temperature [K]
+    // Reference temperature [K]
     dimensionedScalar TRef(laminarTransport.lookup("TRef"));
 
-    // reference kinematic pressure [m2/s2]
-    dimensionedScalar pRef(laminarTransport.lookup("pRef"));
+    // Laminar Prandtl number
+    dimensionedScalar Pr(laminarTransport.lookup("Pr"));
 
-    // turbulent Prandtl number
+    // Turbulent Prandtl number
     dimensionedScalar Prt(laminarTransport.lookup("Prt"));
diff --git a/applications/solvers/heatTransfer/buoyantBoussinesqSimpleFoam/writeAdditionalFields.H b/applications/solvers/heatTransfer/buoyantBoussinesqSimpleFoam/writeAdditionalFields.H
deleted file mode 100644
index 20f7c6ae1dcff80630dc2ca21253b1e824ea5d77..0000000000000000000000000000000000000000
--- a/applications/solvers/heatTransfer/buoyantBoussinesqSimpleFoam/writeAdditionalFields.H
+++ /dev/null
@@ -1,29 +0,0 @@
-{
-    volScalarField rhoEff
-    (
-        IOobject
-        (
-            "rhoEff",
-            runTime.timeName(),
-            mesh,
-            IOobject::NO_READ,
-            IOobject::AUTO_WRITE
-        ),
-        1.0 - beta*(T - TRef)
-    );
-    rhoEff.write();
-
-    volScalarField p
-    (
-        IOobject
-        (
-            "p",
-            runTime.timeName(),
-            mesh,
-            IOobject::NO_READ,
-            IOobject::AUTO_WRITE
-        ),
-        pd + rhoEff*(g & mesh.C()) + pRef
-    );
-    p.write();
-}
diff --git a/applications/solvers/heatTransfer/buoyantPisoFoam/UEqn.H b/applications/solvers/heatTransfer/buoyantPisoFoam/UEqn.H
index 24cfbf4f685a291b1a836fc0dfd931f9bfc526d1..d4878d063dab6ee8ed4243c61d529832d3dd9c6a 100644
--- a/applications/solvers/heatTransfer/buoyantPisoFoam/UEqn.H
+++ b/applications/solvers/heatTransfer/buoyantPisoFoam/UEqn.H
@@ -15,12 +15,10 @@
         (
             UEqn
          ==
-           -fvc::reconstruct
+            fvc::reconstruct
             (
-                (
-                    fvc::snGrad(pd)
-                  + ghf*fvc::snGrad(rho)
-                ) * mesh.magSf()
+                fvc::interpolate(rho)*(g & mesh.Sf())
+              - fvc::snGrad(p)*mesh.magSf()
             )
         );
     }
diff --git a/applications/solvers/heatTransfer/buoyantPisoFoam/buoyantPisoFoam.C b/applications/solvers/heatTransfer/buoyantPisoFoam/buoyantPisoFoam.C
index 83527f8215130271882402bac0f6d5769ba4f860..b5055812c40e362d420c08ab862c9db91e2469c5 100644
--- a/applications/solvers/heatTransfer/buoyantPisoFoam/buoyantPisoFoam.C
+++ b/applications/solvers/heatTransfer/buoyantPisoFoam/buoyantPisoFoam.C
@@ -27,13 +27,13 @@ Application
 
 Description
     Transient Solver for buoyant, turbulent flow of compressible fluids for
-    ventilation and heat-transfer.  Turbulence is modelled using a run-time
-    selectable compressible RAS model.
+    ventilation and heat-transfer. Turbulence is modelled using a run-time
+    selectable compressible RAS or LES model.
 
 \*---------------------------------------------------------------------------*/
 
 #include "fvCFD.H"
-#include "basicThermo.H"
+#include "basicRhoThermo.H"
 #include "turbulenceModel.H"
 #include "fixedGradientFvPatchFields.H"
 
@@ -81,6 +81,8 @@ int main(int argc, char *argv[])
 
         turbulence->correct();
 
+        rho = thermo.rho();
+
         runTime.write();
 
         Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s"
diff --git a/applications/solvers/heatTransfer/buoyantPisoFoam/createFields.H b/applications/solvers/heatTransfer/buoyantPisoFoam/createFields.H
index 103b3ea3bb531684ed48fc5fe74ac8ec588f4d99..b8ac5595e47cec77aa257c54a1710f91b08f20f7 100644
--- a/applications/solvers/heatTransfer/buoyantPisoFoam/createFields.H
+++ b/applications/solvers/heatTransfer/buoyantPisoFoam/createFields.H
@@ -1,9 +1,10 @@
     Info<< "Reading thermophysical properties\n" << endl;
 
-    autoPtr<basicThermo> thermo
+    autoPtr<basicRhoThermo> pThermo
     (
-        basicThermo::New(mesh)
+        basicRhoThermo::New(mesh)
     );
+    basicRhoThermo& thermo = pThermo();
 
     volScalarField rho
     (
@@ -15,12 +16,12 @@
             IOobject::NO_READ,
             IOobject::NO_WRITE
         ),
-        thermo->rho()
+        thermo.rho()
     );
 
-    volScalarField& p = thermo->p();
-    volScalarField& h = thermo->h();
-    const volScalarField& psi = thermo->psi();
+    volScalarField& p = thermo.p();
+    volScalarField& h = thermo.h();
+    const volScalarField& psi = thermo.psi();
 
 
     Info<< "Reading field U\n" << endl;
@@ -37,7 +38,7 @@
         mesh
     );
 
-#   include "compressibleCreatePhi.H"
+    #include "compressibleCreatePhi.H"
 
 
     Info<< "Creating turbulence model\n" << endl;
@@ -48,7 +49,7 @@
             rho,
             U,
             phi,
-            thermo()
+            thermo
         )
     );
 
@@ -59,27 +60,8 @@
         fvc::DDt(surfaceScalarField("phiU", phi/fvc::interpolate(rho)), p)
     );
 
-    Info<< "Calculating field g.h\n" << endl;
-    volScalarField gh("gh", g & mesh.C());
-    surfaceScalarField ghf("ghf", g & mesh.Cf());
-
-    dimensionedScalar pRef("pRef", p.dimensions(), thermo->lookup("pRef"));
-
-    Info<< "Creating field pd\n" << endl;
-    volScalarField pd
-    (
-        IOobject
-        (
-            "pd",
-            runTime.timeName(),
-            mesh,
-            IOobject::MUST_READ,
-            IOobject::AUTO_WRITE
-        ),
-        mesh
-    );
-
-    p = pd + rho*gh + pRef;
-    thermo->correct();
+    thermo.correct();
 
     dimensionedScalar initialMass = fvc::domainIntegrate(rho);
+
+    dimensionedScalar totalVolume = sum(mesh.V());
diff --git a/applications/solvers/heatTransfer/buoyantPisoFoam/hEqn.H b/applications/solvers/heatTransfer/buoyantPisoFoam/hEqn.H
index f1a87c6a798229100ff3493a194d73ccfdd601b9..3125cc3ffa86ce120e7dbbf774c9b46941105418 100644
--- a/applications/solvers/heatTransfer/buoyantPisoFoam/hEqn.H
+++ b/applications/solvers/heatTransfer/buoyantPisoFoam/hEqn.H
@@ -11,5 +11,5 @@
     hEqn.relax();
     hEqn.solve();
 
-    thermo->correct();
+    thermo.correct();
 }
diff --git a/applications/solvers/heatTransfer/buoyantPisoFoam/pEqn.H b/applications/solvers/heatTransfer/buoyantPisoFoam/pEqn.H
index 53f6688a6a8438f11c91816941e5d78b5bd47c14..c954c0ecb193a86033981bc7123725bc9335a9cc 100644
--- a/applications/solvers/heatTransfer/buoyantPisoFoam/pEqn.H
+++ b/applications/solvers/heatTransfer/buoyantPisoFoam/pEqn.H
@@ -1,7 +1,11 @@
 {
-    bool closedVolume = pd.needReference();
+    bool closedVolume = p.needReference();
 
-    rho = thermo->rho();
+    rho = thermo.rho();
+
+    // Thermodynamic density needs to be updated by psi*d(p) after the
+    // pressure solution - done in 2 parts. Part 1:
+    thermo.rho() -= psi*p;
 
     volScalarField rUA = 1.0/UEqn.A();
     surfaceScalarField rhorUAf("(rho*(1|A(U)))", fvc::interpolate(rho*rUA));
@@ -17,38 +21,38 @@
         )
     );
 
-    phi = phiU - ghf*fvc::snGrad(rho)*rhorUAf*mesh.magSf();
+    phi = phiU + rhorUAf*fvc::interpolate(rho)*(g & mesh.Sf());
 
     for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
     {
-        fvScalarMatrix pdEqn
+        fvScalarMatrix pEqn
         (
-            fvm::ddt(psi, pd)
-          + fvc::ddt(psi)*pRef
-          + fvc::ddt(psi, rho)*gh
+            fvc::ddt(rho) + psi*correction(fvm::ddt(p))
           + fvc::div(phi)
-          - fvm::laplacian(rhorUAf, pd)
+          - fvm::laplacian(rhorUAf, p)
         );
 
         if (corr == nCorr-1 && nonOrth == nNonOrthCorr)
         {
-            pdEqn.solve(mesh.solver(pd.name() + "Final"));
+            pEqn.solve(mesh.solver(p.name() + "Final"));
         }
         else
         {
-            pdEqn.solve(mesh.solver(pd.name()));
+            pEqn.solve(mesh.solver(p.name()));
         }
 
         if (nonOrth == nNonOrthCorr)
         {
-            phi += pdEqn.flux();
+            phi += pEqn.flux();
         }
     }
 
+    // Second part of thermodynamic density update
+    thermo.rho() += psi*p;
+
     U += rUA*fvc::reconstruct((phi - phiU)/rhorUAf);
     U.correctBoundaryConditions();
 
-    p == pd + rho*gh + pRef;
     DpDt = fvc::DDt(surfaceScalarField("phiU", phi/fvc::interpolate(rho)), p);
 
     #include "rhoEqn.H"
@@ -58,10 +62,10 @@
     // to obey overall mass continuity
     if (closedVolume)
     {
-        p += (initialMass - fvc::domainIntegrate(thermo->psi()*p))
-            /fvc::domainIntegrate(thermo->psi());
-        rho = thermo->rho();
+        p +=
+            (initialMass - fvc::domainIntegrate(psi*p))
+            /fvc::domainIntegrate(psi);
+        thermo.rho() = psi*p;
+        rho += (initialMass - fvc::domainIntegrate(rho))/totalVolume;
     }
-
-    pd == p - (rho*gh + pRef);
 }
diff --git a/applications/solvers/heatTransfer/buoyantSimpleFoam/UEqn.H b/applications/solvers/heatTransfer/buoyantSimpleFoam/UEqn.H
index 71a57cd2a930c3affd56ba48b809e455d2a93e6c..aa476b4dc808f46619dd5c94fd9d8defaa10c55d 100644
--- a/applications/solvers/heatTransfer/buoyantSimpleFoam/UEqn.H
+++ b/applications/solvers/heatTransfer/buoyantSimpleFoam/UEqn.H
@@ -13,14 +13,11 @@
     (
         UEqn()
      ==
-       -fvc::reconstruct
+        fvc::reconstruct
         (
-            (
-                fvc::snGrad(pd)
-              + ghf*fvc::snGrad(rho)
-            ) * mesh.magSf()
+            fvc::interpolate(rho)*(g & mesh.Sf())
+          - fvc::snGrad(p)*mesh.magSf()
         )
     ).initialResidual();
 
     maxResidual = max(eqnResidual, maxResidual);
-
diff --git a/applications/solvers/heatTransfer/buoyantSimpleFoam/buoyantSimpleFoam.C b/applications/solvers/heatTransfer/buoyantSimpleFoam/buoyantSimpleFoam.C
index d91b6398f27144233a20adab7983689e3d000c24..52f915bd7abe4b59a89aa7b30f1e40de0279e07c 100644
--- a/applications/solvers/heatTransfer/buoyantSimpleFoam/buoyantSimpleFoam.C
+++ b/applications/solvers/heatTransfer/buoyantSimpleFoam/buoyantSimpleFoam.C
@@ -31,7 +31,7 @@ Description
 \*---------------------------------------------------------------------------*/
 
 #include "fvCFD.H"
-#include "basicThermo.H"
+#include "basicPsiThermo.H"
 #include "RASModel.H"
 #include "fixedGradientFvPatchFields.H"
 
@@ -39,15 +39,14 @@ Description
 
 int main(int argc, char *argv[])
 {
+    #include "setRootCase.H"
+    #include "createTime.H"
+    #include "createMesh.H"
+    #include "readEnvironmentalProperties.H"
+    #include "createFields.H"
+    #include "initContinuityErrs.H"
 
-#   include "setRootCase.H"
-#   include "createTime.H"
-#   include "createMesh.H"
-#   include "readEnvironmentalProperties.H"
-#   include "createFields.H"
-#   include "initContinuityErrs.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
     Info<< "\nStarting time loop\n" << endl;
 
@@ -55,17 +54,17 @@ int main(int argc, char *argv[])
     {
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
-#       include "readSIMPLEControls.H"
-#       include "initConvergenceCheck.H"
+        #include "readSIMPLEControls.H"
+        #include "initConvergenceCheck.H"
 
-        pd.storePrevIter();
+        p.storePrevIter();
         rho.storePrevIter();
 
         // Pressure-velocity SIMPLE corrector
         {
-#           include "UEqn.H"
-#           include "hEqn.H"
-#           include "pEqn.H"
+            #include "UEqn.H"
+            #include "hEqn.H"
+            #include "pEqn.H"
         }
 
         turbulence->correct();
@@ -76,7 +75,7 @@ int main(int argc, char *argv[])
             << "  ClockTime = " << runTime.elapsedClockTime() << " s"
             << nl << endl;
 
-#       include "convergenceCheck.H"
+        #include "convergenceCheck.H"
     }
 
     Info<< "End\n" << endl;
diff --git a/applications/solvers/heatTransfer/buoyantSimpleFoam/createFields.H b/applications/solvers/heatTransfer/buoyantSimpleFoam/createFields.H
index 879ee722b98ec4c6ab21ca66518c22fc31a9105c..b304ace1046bbb82fff0318762b17848835cce1d 100644
--- a/applications/solvers/heatTransfer/buoyantSimpleFoam/createFields.H
+++ b/applications/solvers/heatTransfer/buoyantSimpleFoam/createFields.H
@@ -1,9 +1,10 @@
     Info<< "Reading thermophysical properties\n" << endl;
 
-    autoPtr<basicThermo> thermo
+    autoPtr<basicPsiThermo> pThermo
     (
-        basicThermo::New(mesh)
+        basicPsiThermo::New(mesh)
     );
+    basicPsiThermo& thermo = pThermo();
 
     volScalarField rho
     (
@@ -15,11 +16,12 @@
             IOobject::NO_READ,
             IOobject::NO_WRITE
         ),
-        thermo->rho()
+        thermo.rho()
     );
 
-    volScalarField& p = thermo->p();
-    volScalarField& h = thermo->h();
+    volScalarField& p = thermo.p();
+    volScalarField& h = thermo.h();
+    const volScalarField& psi = thermo.psi();
 
 
     Info<< "Reading field U\n" << endl;
@@ -36,7 +38,7 @@
         mesh
     );
 
-#   include "compressibleCreatePhi.H"
+    #include "compressibleCreatePhi.H"
 
 
     Info<< "Creating turbulence model\n" << endl;
@@ -47,42 +49,20 @@
             rho,
             U,
             phi,
-            thermo()
+            thermo
         )
     );
 
-    Info<< "Calculating field g.h\n" << endl;
-    volScalarField gh("gh", g & mesh.C());
-    surfaceScalarField ghf("ghf", g & mesh.Cf());
+    thermo.correct();
 
-    dimensionedScalar pRef("pRef", p.dimensions(), thermo->lookup("pRef"));
-
-    Info<< "Creating field pd\n" << endl;
-    volScalarField pd
-    (
-        IOobject
-        (
-            "pd",
-            runTime.timeName(),
-            mesh,
-            IOobject::MUST_READ,
-            IOobject::AUTO_WRITE
-        ),
-        mesh
-    );
-
-    p = pd + rho*gh + pRef;
-    thermo->correct();
-
-
-    label pdRefCell = 0;
-    scalar pdRefValue = 0.0;
+    label pRefCell = 0;
+    scalar pRefValue = 0.0;
     setRefCell
     (
-        pd,
+        p,
         mesh.solutionDict().subDict("SIMPLE"),
-        pdRefCell,
-        pdRefValue
+        pRefCell,
+        pRefValue
     );
 
 
diff --git a/applications/solvers/heatTransfer/buoyantSimpleFoam/hEqn.H b/applications/solvers/heatTransfer/buoyantSimpleFoam/hEqn.H
index dad078c2193a6797d2f08ed9751cdac4ca4ff157..0c507ce3d18bff29619626d62d5570c67e415cc2 100644
--- a/applications/solvers/heatTransfer/buoyantSimpleFoam/hEqn.H
+++ b/applications/solvers/heatTransfer/buoyantSimpleFoam/hEqn.H
@@ -14,5 +14,5 @@
     eqnResidual = hEqn.solve().initialResidual();
     maxResidual = max(eqnResidual, maxResidual);
 
-    thermo->correct();
+    thermo.correct();
 }
diff --git a/applications/solvers/heatTransfer/buoyantSimpleFoam/initConvergenceCheck.H b/applications/solvers/heatTransfer/buoyantSimpleFoam/initConvergenceCheck.H
index b56197f22a50cfd07b04fc14d40b9a5454da8c5b..c920b6708d044d177227d79973ed61bc7f2658fc 100644
--- a/applications/solvers/heatTransfer/buoyantSimpleFoam/initConvergenceCheck.H
+++ b/applications/solvers/heatTransfer/buoyantSimpleFoam/initConvergenceCheck.H
@@ -1,4 +1,4 @@
-// initialize values for convergence checks
+    // initialize values for convergence checks
 
     scalar eqnResidual = 1, maxResidual = 0;
     scalar convergenceCriterion = 0;
diff --git a/applications/solvers/heatTransfer/buoyantSimpleFoam/pEqn.H b/applications/solvers/heatTransfer/buoyantSimpleFoam/pEqn.H
index 8d97ad9048a5a6e145d9fa0184629534df3a61e3..4bbb449df7250b144f84ac84ecaed6682c84be12 100644
--- a/applications/solvers/heatTransfer/buoyantSimpleFoam/pEqn.H
+++ b/applications/solvers/heatTransfer/buoyantSimpleFoam/pEqn.H
@@ -1,4 +1,6 @@
 {
+    rho = thermo.rho();
+
     volScalarField rUA = 1.0/UEqn().A();
     surfaceScalarField rhorUAf("(rho*(1|A(U)))", fvc::interpolate(rho*rUA));
 
@@ -7,60 +9,58 @@
 
     phi = fvc::interpolate(rho)*(fvc::interpolate(U) & mesh.Sf());
     bool closedVolume = adjustPhi(phi, U, p);
-    surfaceScalarField buoyancyPhi = ghf*fvc::snGrad(rho)*rhorUAf*mesh.magSf();
-    phi -= buoyancyPhi;
+
+    surfaceScalarField buoyancyPhi =
+        rhorUAf*fvc::interpolate(rho)*(g & mesh.Sf());
+    phi += buoyancyPhi;
 
     for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
     {
-        fvScalarMatrix pdEqn
+        fvScalarMatrix pEqn
         (
-            fvm::laplacian(rhorUAf, pd) == fvc::div(phi)
+            fvm::laplacian(rhorUAf, p) == fvc::div(phi)
         );
 
-        pdEqn.setReference(pdRefCell, pdRefValue);
+        pEqn.setReference(pRefCell, p[pRefCell]);
 
         // retain the residual from the first iteration
         if (nonOrth == 0)
         {
-            eqnResidual = pdEqn.solve().initialResidual();
+            eqnResidual = pEqn.solve().initialResidual();
             maxResidual = max(eqnResidual, maxResidual);
         }
         else
         {
-            pdEqn.solve();
+            pEqn.solve();
         }
 
         if (nonOrth == nNonOrthCorr)
         {
+            // For closed-volume cases adjust the pressure and density levels
+            // to obey overall mass continuity
+            if (closedVolume)
+            {
+                p += (initialMass - fvc::domainIntegrate(psi*p))
+                    /fvc::domainIntegrate(psi);
+            }
+
             // Calculate the conservative fluxes
-            phi -= pdEqn.flux();
+            phi -= pEqn.flux();
 
             // Explicitly relax pressure for momentum corrector
-            pd.relax();
+            p.relax();
 
             // Correct the momentum source with the pressure gradient flux
             // calculated from the relaxed pressure
-            U -= rUA*fvc::reconstruct((buoyancyPhi + pdEqn.flux())/rhorUAf);
+            U += rUA*fvc::reconstruct((buoyancyPhi - pEqn.flux())/rhorUAf);
             U.correctBoundaryConditions();
         }
     }
 
     #include "continuityErrs.H"
 
-    p == pd + rho*gh + pRef;
-
-    // For closed-volume cases adjust the pressure and density levels
-    // to obey overall mass continuity
-    if (closedVolume)
-    {
-        p += (initialMass - fvc::domainIntegrate(thermo->psi()*p))
-            /fvc::domainIntegrate(thermo->psi());
-    }
-
-    rho = thermo->rho();
+    rho = thermo.rho();
     rho.relax();
     Info<< "rho max/min : " << max(rho).value() << " " << min(rho).value()
         << endl;
-
-    pd == p - (rho*gh + pRef);
 }
diff --git a/applications/solvers/heatTransfer/buoyantSimpleRadiationFoam/buoyantSimpleRadiationFoam.C b/applications/solvers/heatTransfer/buoyantSimpleRadiationFoam/buoyantSimpleRadiationFoam.C
index 5996e6be23b5fe4d1845f46ea34965ada35422dd..c869eff89956a1b4e581fcdf6e1adf4643ecbfe4 100644
--- a/applications/solvers/heatTransfer/buoyantSimpleRadiationFoam/buoyantSimpleRadiationFoam.C
+++ b/applications/solvers/heatTransfer/buoyantSimpleRadiationFoam/buoyantSimpleRadiationFoam.C
@@ -32,7 +32,7 @@ Description
 \*---------------------------------------------------------------------------*/
 
 #include "fvCFD.H"
-#include "basicThermo.H"
+#include "basicPsiThermo.H"
 #include "RASModel.H"
 #include "fixedGradientFvPatchFields.H"
 #include "radiationModel.H"
@@ -41,16 +41,15 @@ Description
 
 int main(int argc, char *argv[])
 {
+    #include "setRootCase.H"
+    #include "createTime.H"
+    #include "createMesh.H"
+    #include "readEnvironmentalProperties.H"
+    #include "createFields.H"
+    #include "createRadiationModel.H"
+    #include "initContinuityErrs.H"
 
-#   include "setRootCase.H"
-#   include "createTime.H"
-#   include "createMesh.H"
-#   include "readEnvironmentalProperties.H"
-#   include "createFields.H"
-#   include "createRadiationModel.H"
-#   include "initContinuityErrs.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
     Info<< "\nStarting time loop\n" << endl;
 
@@ -58,17 +57,17 @@ int main(int argc, char *argv[])
     {
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
-#       include "readSIMPLEControls.H"
-#       include "initConvergenceCheck.H"
+        #include "readSIMPLEControls.H"
+        #include "initConvergenceCheck.H"
 
-        pd.storePrevIter();
+        p.storePrevIter();
         rho.storePrevIter();
 
         // Pressure-velocity SIMPLE corrector
         {
-#           include "UEqn.H"
-#           include "hEqn.H"
-#           include "pEqn.H"
+            #include "UEqn.H"
+            #include "hEqn.H"
+            #include "pEqn.H"
         }
 
         turbulence->correct();
@@ -79,7 +78,7 @@ int main(int argc, char *argv[])
             << "  ClockTime = " << runTime.elapsedClockTime() << " s"
             << nl << endl;
 
-#       include "convergenceCheck.H"
+        #include "convergenceCheck.H"
     }
 
     Info<< "End\n" << endl;
diff --git a/applications/solvers/heatTransfer/buoyantSimpleRadiationFoam/hEqn.H b/applications/solvers/heatTransfer/buoyantSimpleRadiationFoam/hEqn.H
index 31462927b94bdd60bba71db3718e6d98a7e9defb..24b17645d2c3f62b38cdca9a4c7b908a8e08931f 100644
--- a/applications/solvers/heatTransfer/buoyantSimpleRadiationFoam/hEqn.H
+++ b/applications/solvers/heatTransfer/buoyantSimpleRadiationFoam/hEqn.H
@@ -7,7 +7,7 @@
      ==
         fvc::div(phi/fvc::interpolate(rho)*fvc::interpolate(p))
       - p*fvc::div(phi/fvc::interpolate(rho))
-      + radiation->Sh(thermo())
+      + radiation->Sh(thermo)
     );
 
     hEqn.relax();
@@ -15,7 +15,7 @@
     eqnResidual = hEqn.solve().initialResidual();
     maxResidual = max(eqnResidual, maxResidual);
 
-    thermo->correct();
+    thermo.correct();
 
     radiation->correct();
 }
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/Make/files b/applications/solvers/heatTransfer/chtMultiRegionFoam/Make/files
index 9d9152930a9c359695a4e969886336ce38466f62..9b95197f541bfa2b20797804bf04054db815eb9f 100644
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/Make/files
+++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/Make/files
@@ -1,10 +1,6 @@
 regionProperties/regionProperties.C
 
-coupleManager/coupleManager.C
-
 derivedFvPatchFields/solidWallHeatFluxTemperature/solidWallHeatFluxTemperatureFvPatchScalarField.C
-derivedFvPatchFields/solidWallHeatFluxTemperatureCoupled/solidWallHeatFluxTemperatureCoupledFvPatchScalarField.C
-derivedFvPatchFields/solidWallTemperatureCoupled/solidWallTemperatureCoupledFvPatchScalarField.C
 derivedFvPatchFields/solidWallMixedTemperatureCoupled/solidWallMixedTemperatureCoupledFvPatchScalarField.C
 
 fluid/compressibleCourantNo.C
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/Make/options b/applications/solvers/heatTransfer/chtMultiRegionFoam/Make/options
index a8797ca4564489292b11cf720b6ce80816a67192..12316d6bc7b7f06ed9d1f31316b9fd5c616d7e4e 100644
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/Make/options
+++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/Make/options
@@ -2,9 +2,7 @@ EXE_INC = \
     -Ifluid \
     -Isolid \
     -IregionProperties \
-    -IcoupleManager \
-    -IderivedFvPatchFields/solidWallTemperatureCoupled \
-    -IderivedFvPatchFields/solidWallHeatFluxTemperatureCoupled \
+    -I$(LIB_SRC)/meshTools/lnInclude \
     -I$(LIB_SRC)/finiteVolume/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
     -I$(LIB_SRC)/turbulenceModels/compressible/turbulenceModel
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionFoam.C b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionFoam.C
index faff0edba042b2976c9fca21ec5fb09a0d8d6bca..54e1c8cb1840d4719b1f2f360a7ab3d4ba81b052 100644
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionFoam.C
+++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionFoam.C
@@ -32,7 +32,7 @@ Description
 \*---------------------------------------------------------------------------*/
 
 #include "fvCFD.H"
-#include "basicThermo.H"
+#include "basicPsiThermo.H"
 #include "turbulenceModel.H"
 #include "fixedGradientFvPatchFields.H"
 #include "regionProperties.H"
@@ -42,58 +42,72 @@ Description
 
 int main(int argc, char *argv[])
 {
-
-#   include "setRootCase.H"
-#   include "createTime.H"
+    #include "setRootCase.H"
+    #include "createTime.H"
 
     regionProperties rp(runTime);
 
-#   include "createFluidMeshes.H"
-#   include "createSolidMeshes.H"
+    #include "createFluidMeshes.H"
+    #include "createSolidMeshes.H"
 
-#   include "createFluidFields.H"
-#   include "createSolidFields.H"
+    #include "createFluidFields.H"
+    #include "createSolidFields.H"
 
-#   include "initContinuityErrs.H"
+    #include "initContinuityErrs.H"
 
-#   include "readTimeControls.H"
+    #include "readTimeControls.H"
 
     if (fluidRegions.size())
     {
-#       include "compressibleMultiRegionCourantNo.H"
-#       include "setInitialDeltaT.H"
+        #include "compressibleMultiRegionCourantNo.H"
+        #include "setInitialDeltaT.H"
     }
 
     while (runTime.run())
     {
-#       include "readTimeControls.H"
+        #include "readTimeControls.H"
+        #include "readPIMPLEControls.H"
 
         if (fluidRegions.size())
         {
-#           include "compressibleMultiRegionCourantNo.H"
-#           include "setDeltaT.H"
+            #include "compressibleMultiRegionCourantNo.H"
+            #include "setDeltaT.H"
         }
 
         runTime++;
 
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
-        forAll(fluidRegions, i)
+        if (nOuterCorr != 1)
         {
-            Info<< "\nSolving for fluid region "
-                << fluidRegions[i].name() << endl;
-#           include "setRegionFluidFields.H"
-#           include "readFluidMultiRegionPISOControls.H"
-#           include "solveFluid.H"
+            forAll(fluidRegions, i)
+            {
+                #include "setRegionFluidFields.H"
+                #include "storeOldFluidFields.H"
+            }
         }
 
-        forAll(solidRegions, i)
+
+        // --- PIMPLE loop
+        for (int oCorr=0; oCorr<nOuterCorr; oCorr++)
         {
-            Info<< "\nSolving for solid region "
-                << solidRegions[i].name() << endl;
-#           include "setRegionSolidFields.H"
-#           include "readSolidMultiRegionPISOControls.H"
-#           include "solveSolid.H"
+            forAll(fluidRegions, i)
+            {
+                Info<< "\nSolving for fluid region "
+                    << fluidRegions[i].name() << endl;
+                #include "setRegionFluidFields.H"
+                #include "readFluidMultiRegionPIMPLEControls.H"
+                #include "solveFluid.H"
+            }
+
+            forAll(solidRegions, i)
+            {
+                Info<< "\nSolving for solid region "
+                    << solidRegions[i].name() << endl;
+                #include "setRegionSolidFields.H"
+                #include "readSolidMultiRegionPIMPLEControls.H"
+                #include "solveSolid.H"
+            }
         }
 
         runTime.write();
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/coupleManager/coupleManager.C b/applications/solvers/heatTransfer/chtMultiRegionFoam/coupleManager/coupleManager.C
deleted file mode 100644
index 1668e1144c46f13024e37813296b96642fbcbc92..0000000000000000000000000000000000000000
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/coupleManager/coupleManager.C
+++ /dev/null
@@ -1,186 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by the
-    Free Software Foundation; either version 2 of the License, or (at your
-    option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM; if not, write to the Free Software Foundation,
-    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-\*---------------------------------------------------------------------------*/
-
-#include "coupleManager.H"
-#include "OFstream.H"
-#include "regionProperties.H"
-
-// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
-
-Foam::coupleManager::coupleManager(const fvPatch& patch)
-:
-    patch_(patch),
-    neighbourRegionName_("undefined-neighbourRegionName"),
-    neighbourPatchName_("undefined-neighbourPatchName"),
-    neighbourFieldName_("undefined-neighbourFieldName"),
-    localRegion_(patch_.boundaryMesh().mesh())
-{}
-
-
-Foam::coupleManager::coupleManager
-(
-    const fvPatch& patch,
-    const dictionary& dict
-)
-:
-    patch_(patch),
-    neighbourRegionName_(dict.lookup("neighbourRegionName")),
-    neighbourPatchName_(dict.lookup("neighbourPatchName")),
-    neighbourFieldName_(dict.lookup("neighbourFieldName")),
-    localRegion_(patch_.boundaryMesh().mesh())
-{}
-
-
-Foam::coupleManager::coupleManager
-(
-    const coupleManager& cm
-)
-:
-    patch_(cm.patch()),
-    neighbourRegionName_(cm.neighbourRegionName()),
-    neighbourPatchName_(cm.neighbourPatchName()),
-    neighbourFieldName_(cm.neighbourFieldName()),
-    localRegion_(patch_.boundaryMesh().mesh())
-{}
-
-
-// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
-
-Foam::coupleManager::~coupleManager()
-{}
-
-
-// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
-
-bool Foam::coupleManager::regionOwner() const
-{
-    const fvMesh& nbrRegion = neighbourRegion();
-
-    const regionProperties& props =
-        localRegion_.objectRegistry::parent().lookupObject<regionProperties>
-        (
-            "regionProperties"
-        );
-
-    label myIndex = findIndex(props.fluidRegionNames(), localRegion_.name());
-    if (myIndex == -1)
-    {
-        label i = findIndex(props.solidRegionNames(), localRegion_.name());
-
-        if (i == -1)
-        {
-            FatalErrorIn("coupleManager::regionOwner() const")
-                << "Cannot find region " << localRegion_.name()
-                << " neither in fluids " << props.fluidRegionNames()
-                << " nor in solids " << props.solidRegionNames()
-                << exit(FatalError);
-        }
-        myIndex = props.fluidRegionNames().size() + i;
-    }
-    label nbrIndex = findIndex(props.fluidRegionNames(), nbrRegion.name());
-    if (nbrIndex == -1)
-    {
-        label i = findIndex(props.solidRegionNames(), nbrRegion.name());
-
-        if (i == -1)
-        {
-            FatalErrorIn("coupleManager::regionOwner() const")
-                << "Cannot find region " << nbrRegion.name()
-                << " neither in fluids " << props.fluidRegionNames()
-                << " nor in solids " << props.solidRegionNames()
-                << exit(FatalError);
-        }
-        nbrIndex = props.fluidRegionNames().size() + i;
-    }
-
-    return myIndex < nbrIndex;
-}
-
-
-void Foam::coupleManager::checkCouple() const
-{
-    Info<< "neighbourRegionName_ = " << neighbourRegionName_ << endl;
-    Info<< "neighbourPatchName_ = " << neighbourPatchName_ << endl;
-    Info<< "neighbourFieldName_ = " << neighbourFieldName_ << endl;
-
-    const fvPatch& nPatch = neighbourPatch();
-
-    if (patch_.size() != nPatch.size())
-    {
-        FatalErrorIn("Foam::coupleManager::checkCouple()")
-            << "Unequal patch sizes:" << nl
-            << "    patch name (size) = " << patch_.name()
-            << "(" << patch_.size() << ")" << nl
-            << "    neighbour patch name (size) = "
-            << nPatch.name() << "(" << patch_.size() << ")" << nl
-            << abort(FatalError);
-    }
-}
-
-
-void Foam::coupleManager::coupleToObj() const
-{
-    const fvPatch& nPatch = neighbourPatch();
-
-    OFstream obj
-        (
-             patch_.name() + "_to_" + nPatch.name() + "_couple.obj"
-        );
-    const vectorField& c1 = patch_.Cf();
-    const vectorField& c2 = neighbourPatch().Cf();
-
-    if (c1.size() != c2.size())
-    {
-        FatalErrorIn("coupleManager::coupleToObj() const")
-            << "Coupled patches are of unequal size:" << nl
-            << "    patch0 = " << patch_.name()
-            << "(" << patch_.size() <<  ")" << nl
-            << "    patch1 = " << nPatch.name()
-            << "(" << nPatch.size() <<  ")" << nl
-            << abort(FatalError);
-    }
-
-    forAll(c1, i)
-    {
-        obj << "v " << c1[i].x() << " " << c1[i].y() << " " << c1[i].z() << nl
-            << "v " << c2[i].x() << " " << c2[i].y() << " " << c2[i].z() << nl
-            << "l " << (2*i + 1) << " " << (2*i + 2) << endl;
-    }
-}
-
-
-void Foam::coupleManager::writeEntries(Ostream& os) const
-{
-    os.writeKeyword("neighbourRegionName");
-    os << neighbourRegionName_ << token::END_STATEMENT << nl;
-    os.writeKeyword("neighbourPatchName");
-    os << neighbourPatchName_ << token::END_STATEMENT << nl;
-    os.writeKeyword("neighbourFieldName");
-    os << neighbourFieldName_ << token::END_STATEMENT << nl;
-}
-
-
-// ************************************************************************* //
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/coupleManager/coupleManager.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/coupleManager/coupleManager.H
deleted file mode 100644
index f1f73d23efe8505664cb5886dd3b37a5dc6727d2..0000000000000000000000000000000000000000
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/coupleManager/coupleManager.H
+++ /dev/null
@@ -1,170 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by the
-    Free Software Foundation; either version 2 of the License, or (at your
-    option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM; if not, write to the Free Software Foundation,
-    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-Class
-    coupleManager
-
-Description
-    Object to handle the coupling of region patches. It can be queried to
-    return the neighbour information.
-
-SourceFiles
-    coupleManager.C
-
-\*---------------------------------------------------------------------------*/
-
-#ifndef coupleManager_H
-#define coupleManager_H
-
-#include "Ostream.H"
-#include "dictionary.H"
-#include "fvPatch.H"
-#include "fvMesh.H"
-#include "Time.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-
-/*---------------------------------------------------------------------------*\
-                         Class coupleManager Declaration
-\*---------------------------------------------------------------------------*/
-
-class coupleManager
-{
-    // Private data
-
-        //- Reference to the local fvPatch
-        const fvPatch& patch_;
-
-        //- Name of neighbour region
-        word neighbourRegionName_;
-
-        //- Name of patch on the neighbour region
-        word neighbourPatchName_;
-
-        //- Name of field on the neighbour region
-        word neighbourFieldName_;
-
-        //- Reference to the local region
-        const fvMesh& localRegion_;
-
-
-    // Private Member Functions
-
-        //- Disallow default bitwise assignment
-        void operator=(const coupleManager&);
-
-
-public:
-
-    // Constructors
-
-        //- Construct from fvPatch
-        coupleManager(const fvPatch& patch);
-
-        //- Construct from fvPatch and dictionary
-        coupleManager(const fvPatch& patch, const dictionary& dict);
-
-        //- Copy constructor
-        coupleManager(const coupleManager& cm);
-
-
-    // Destructor
-
-        ~coupleManager();
-
-
-    // Member Functions
-
-        // Access
-
-            //- Return a reference to the local patch
-            inline const fvPatch& patch() const;
-
-            //- Return the name of the neighbour region
-            inline const word& neighbourRegionName() const;
-
-            //- Return the name of the patch on the neighbour region
-            inline const word& neighbourPatchName() const;
-
-            //- Return the name of the field on the neighbour region
-            inline const word& neighbourFieldName() const;
-
-            //- Return a reference to the neighbour mesh
-            inline const fvMesh& neighbourRegion() const;
-
-            //- Return the neighbour patch ID
-            inline label neighbourPatchID() const;
-
-            //- Return a reference to the neighbour patch
-            inline const fvPatch& neighbourPatch() const;
-
-            //- Return a reference to the neighbour patch field
-            template<class Type>
-            inline const fvPatchField<Type>& neighbourPatchField() const;
-
-            //- Am I owner (= first to evaluate) of this region interface? 
-            bool regionOwner() const;
-
-            //- Check that the couple is valid
-            void checkCouple() const;
-
-
-        // Edit
-
-            //- Return the name of the neighbour region
-            word& neighbourRegionName();
-
-            //- Return the name of the patch on the neighbour region
-            word& neighbourPatchName();
-
-            //- Return the name of the field on the neighbour region
-            word& neighbourFieldName();
-
-
-        // Write
-
-           //- Write couple to obj file
-           void coupleToObj() const;
-
-           //- Write entries for patches
-           void writeEntries(Ostream& os) const;
-};
-
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-} // End namespace Foam
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-#include "coupleManagerI.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-#endif
-
-// ************************************************************************* //
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/coupleManager/coupleManagerI.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/coupleManager/coupleManagerI.H
deleted file mode 100644
index 45e059ebae27d425e90403927352f7f36c5e8cde..0000000000000000000000000000000000000000
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/coupleManager/coupleManagerI.H
+++ /dev/null
@@ -1,98 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by the
-    Free Software Foundation; either version 2 of the License, or (at your
-    option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM; if not, write to the Free Software Foundation,
-    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-\*---------------------------------------------------------------------------*/
-
-inline const Foam::fvPatch& Foam::coupleManager::patch() const
-{
-    return patch_;
-};
-
-
-inline const Foam::word& Foam::coupleManager::neighbourRegionName() const
-{
-    return neighbourRegionName_;
-};
-
-
-inline const Foam::word& Foam::coupleManager::neighbourPatchName() const
-{
-    return neighbourPatchName_;
-};
-
-
-inline const Foam::word& Foam::coupleManager::neighbourFieldName() const
-{
-     return neighbourFieldName_;
-};
-
-
-inline const Foam::fvMesh& Foam::coupleManager::neighbourRegion() const
-{
-    return localRegion_.objectRegistry::parent()
-        .lookupObject<fvMesh>(neighbourRegionName_);
-}
-
-
-inline Foam::label Foam::coupleManager::neighbourPatchID() const
-{
-    return neighbourRegion().boundaryMesh().findPatchID(neighbourPatchName_);
-}
-
-
-inline const Foam::fvPatch& Foam::coupleManager::neighbourPatch() const
-{
-    return neighbourRegion().boundary()[neighbourPatchID()];
-}
-
-
-template<class Type>
-inline const Foam::fvPatchField<Type>&
-Foam::coupleManager::neighbourPatchField() const
-{
-    return neighbourPatch().lookupPatchField
-        <GeometricField<Type, fvPatchField, volMesh>, Type>
-            (neighbourFieldName_);
-}
-
-
-inline Foam::word& Foam::coupleManager::neighbourRegionName()
-{
-    return neighbourRegionName_;
-};
-
-
-inline Foam::word& Foam::coupleManager::neighbourPatchName()
-{
-    return neighbourPatchName_;
-};
-
-
-inline Foam::word& Foam::coupleManager::neighbourFieldName()
-{
-    return neighbourFieldName_;
-};
-
-
-// ************************************************************************* //
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/derivedFvPatchFields/solidWallHeatFluxTemperatureCoupled/solidWallHeatFluxTemperatureCoupledFvPatchScalarField.C b/applications/solvers/heatTransfer/chtMultiRegionFoam/derivedFvPatchFields/solidWallHeatFluxTemperatureCoupled/solidWallHeatFluxTemperatureCoupledFvPatchScalarField.C
deleted file mode 100644
index 07bcac29a683edc4dcb95805f63df358f7613d77..0000000000000000000000000000000000000000
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/derivedFvPatchFields/solidWallHeatFluxTemperatureCoupled/solidWallHeatFluxTemperatureCoupledFvPatchScalarField.C
+++ /dev/null
@@ -1,150 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by the
-    Free Software Foundation; either version 2 of the License, or (at your
-    option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM; if not, write to the Free Software Foundation,
-    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-\*---------------------------------------------------------------------------*/
-
-#include "solidWallHeatFluxTemperatureCoupledFvPatchScalarField.H"
-#include "addToRunTimeSelectionTable.H"
-#include "fvPatchFieldMapper.H"
-#include "volFields.H"
-
-#include "solidWallTemperatureCoupledFvPatchScalarField.H"
-
-// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
-
-Foam::solidWallHeatFluxTemperatureCoupledFvPatchScalarField::
-solidWallHeatFluxTemperatureCoupledFvPatchScalarField
-(
-    const fvPatch& p,
-    const DimensionedField<scalar, volMesh>& iF
-)
-:
-    fixedGradientFvPatchScalarField(p, iF),
-    coupleManager_(p),
-    KName_("undefined-K")
-{}
-
-
-Foam::solidWallHeatFluxTemperatureCoupledFvPatchScalarField::
-solidWallHeatFluxTemperatureCoupledFvPatchScalarField
-(
-    const solidWallHeatFluxTemperatureCoupledFvPatchScalarField& ptf,
-    const fvPatch& p,
-    const DimensionedField<scalar, volMesh>& iF,
-    const fvPatchFieldMapper& mapper
-)
-:
-    fixedGradientFvPatchScalarField(ptf, p, iF, mapper),
-    coupleManager_(ptf.coupleManager_),
-    KName_(ptf.KName_)
-{}
-
-
-Foam::solidWallHeatFluxTemperatureCoupledFvPatchScalarField::
-solidWallHeatFluxTemperatureCoupledFvPatchScalarField
-(
-    const fvPatch& p,
-    const DimensionedField<scalar, volMesh>& iF,
-    const dictionary& dict
-)
-:
-    fixedGradientFvPatchScalarField(p, iF),
-    coupleManager_(p, dict),
-    KName_(dict.lookup("K"))
-{
-    if (dict.found("value"))
-    {
-        fvPatchField<scalar>::operator=
-        (
-            scalarField("value", dict, p.size())
-        );
-    }
-    else
-    {
-        evaluate();
-    }
-}
-
-
-Foam::solidWallHeatFluxTemperatureCoupledFvPatchScalarField::
-solidWallHeatFluxTemperatureCoupledFvPatchScalarField
-(
-    const solidWallHeatFluxTemperatureCoupledFvPatchScalarField& whftcsf,
-    const DimensionedField<scalar, volMesh>& iF
-)
-:
-    fixedGradientFvPatchScalarField(whftcsf, iF),
-    coupleManager_(whftcsf.coupleManager_),
-    KName_(whftcsf.KName_)
-{}
-
-
-// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
-
-void Foam::solidWallHeatFluxTemperatureCoupledFvPatchScalarField::updateCoeffs()
-{
-    if (updated())
-    {
-        return;
-    }
-
-    const fvPatchField<scalar>& neighbourField =
-        coupleManager_.neighbourPatchField<scalar>();
-
-    const fvPatchField<scalar>& K =
-        patch().lookupPatchField<volScalarField, scalar>(KName_);
-
-    gradient() = -refCast<const solidWallTemperatureCoupledFvPatchScalarField>
-        (neighbourField).flux()/K;
-
-    fixedGradientFvPatchScalarField::updateCoeffs();
-}
-
-
-void Foam::solidWallHeatFluxTemperatureCoupledFvPatchScalarField::write
-(
-    Ostream& os
-) const
-{
-    fvPatchScalarField::write(os);
-    coupleManager_.writeEntries(os);
-    os.writeKeyword("K") << KName_ << token::END_STATEMENT << nl;
-    writeEntry("value", os);
-}
-
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-
-makePatchTypeField
-(
-    fvPatchScalarField,
-    solidWallHeatFluxTemperatureCoupledFvPatchScalarField
-);
-
-} // End namespace Foam
-
-// ************************************************************************* //
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/derivedFvPatchFields/solidWallHeatFluxTemperatureCoupled/solidWallHeatFluxTemperatureCoupledFvPatchScalarField.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/derivedFvPatchFields/solidWallHeatFluxTemperatureCoupled/solidWallHeatFluxTemperatureCoupledFvPatchScalarField.H
deleted file mode 100644
index b7867ca8ce4a125415906382d43c43cedb916339..0000000000000000000000000000000000000000
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/derivedFvPatchFields/solidWallHeatFluxTemperatureCoupled/solidWallHeatFluxTemperatureCoupledFvPatchScalarField.H
+++ /dev/null
@@ -1,165 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by the
-    Free Software Foundation; either version 2 of the License, or (at your
-    option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM; if not, write to the Free Software Foundation,
-    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-Class
-    solidWallHeatFluxTemperatureCoupledFvPatchScalarField
-
-Description
-    Fixed heat-flux boundary condition for temperature, to be used by the
-    conjugate heat transfer solver.
-
-    Example usage:
-        myInterfacePatchName
-        {
-            type                solidWallHeatFluxTemperatureCoupled;
-            neighbourRegionName fluid;
-            neighbourPatchName  fluidSolidInterface;
-            neighbourFieldName  T;
-            K                   K;
-            value               uniform 300;
-        }
-
-SourceFiles
-    solidWallHeatFluxTemperatureCoupledFvPatchScalarField.C
-
-\*---------------------------------------------------------------------------*/
-
-#ifndef solidWallHeatFluxTemperatureCoupledFvPatchScalarField_H
-#define solidWallHeatFluxTemperatureCoupledFvPatchScalarField_H
-
-#include "fvPatchFields.H"
-#include "fixedGradientFvPatchFields.H"
-#include "coupleManager.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-
-/*---------------------------------------------------------------------------*\
-   Class solidWallHeatFluxTemperatureCoupledFvPatchScalarField Declaration
-\*---------------------------------------------------------------------------*/
-
-class solidWallHeatFluxTemperatureCoupledFvPatchScalarField
-:
-    public fixedGradientFvPatchScalarField
-{
-    // Private data
-
-        //- Couple manager object
-        coupleManager coupleManager_;
-
-        //- Name of thermal conductivity field
-        word KName_;
-
-
-public:
-
-    //- Runtime type information
-    TypeName("solidWallHeatFluxTemperatureCoupled");
-
-
-    // Constructors
-
-        //- Construct from patch and internal field
-        solidWallHeatFluxTemperatureCoupledFvPatchScalarField
-        (
-            const fvPatch&,
-            const DimensionedField<scalar, volMesh>&
-        );
-
-        //- Construct from patch, internal field and dictionary
-        solidWallHeatFluxTemperatureCoupledFvPatchScalarField
-        (
-            const fvPatch&,
-            const DimensionedField<scalar, volMesh>&,
-            const dictionary&
-        );
-
-        //- Construct by mapping given
-        // solidWallHeatFluxTemperatureCoupledFvPatchScalarField
-        //  onto a new patch
-        solidWallHeatFluxTemperatureCoupledFvPatchScalarField
-        (
-            const solidWallHeatFluxTemperatureCoupledFvPatchScalarField&,
-            const fvPatch&,
-            const DimensionedField<scalar, volMesh>&,
-            const fvPatchFieldMapper&
-        );
-
-        //- Construct and return a clone
-        virtual tmp<fvPatchScalarField> clone() const
-        {
-            return tmp<fvPatchScalarField>
-            (
-                new solidWallHeatFluxTemperatureCoupledFvPatchScalarField
-                    (
-                        *this
-                    )
-            );
-        }
-
-        //- Construct as copy setting internal field reference
-        solidWallHeatFluxTemperatureCoupledFvPatchScalarField
-        (
-            const solidWallHeatFluxTemperatureCoupledFvPatchScalarField&,
-            const DimensionedField<scalar, volMesh>&
-        );
-
-        //- Construct and return a clone setting internal field reference
-        virtual tmp<fvPatchScalarField> clone
-        (
-            const DimensionedField<scalar, volMesh>& iF
-        ) const
-        {
-            return tmp<fvPatchScalarField>
-            (
-                new solidWallHeatFluxTemperatureCoupledFvPatchScalarField
-                    (
-                        *this,
-                        iF
-                    )
-            );
-        }
-
-
-    // Member functions
-
-        //- Update the coefficients associated with the patch field
-        virtual void updateCoeffs();
-
-        //- Write
-        virtual void write(Ostream&) const;
-};
-
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-} // End namespace Foam
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-#endif
-
-// ************************************************************************* //
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/derivedFvPatchFields/solidWallMixedTemperatureCoupled/solidWallMixedTemperatureCoupledFvPatchScalarField.C b/applications/solvers/heatTransfer/chtMultiRegionFoam/derivedFvPatchFields/solidWallMixedTemperatureCoupled/solidWallMixedTemperatureCoupledFvPatchScalarField.C
index b6bcfffa3f63f947ec0a84734b12df7ff39893a4..5bec5673108e4cd0c0684e041b6443f769c0ff55 100644
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/derivedFvPatchFields/solidWallMixedTemperatureCoupled/solidWallMixedTemperatureCoupledFvPatchScalarField.C
+++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/derivedFvPatchFields/solidWallMixedTemperatureCoupled/solidWallMixedTemperatureCoupledFvPatchScalarField.C
@@ -28,8 +28,62 @@ License
 #include "addToRunTimeSelectionTable.H"
 #include "fvPatchFieldMapper.H"
 #include "volFields.H"
+#include "directMappedPatchBase.H"
 #include "regionProperties.H"
 
+// * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
+
+bool Foam::solidWallMixedTemperatureCoupledFvPatchScalarField::interfaceOwner
+(
+    const polyMesh& nbrRegion
+) const
+{
+    const fvMesh& myRegion = patch().boundaryMesh().mesh();
+
+    const regionProperties& props =
+        myRegion.objectRegistry::parent().lookupObject<regionProperties>
+        (
+            "regionProperties"
+        );
+
+    label myIndex = findIndex(props.fluidRegionNames(), myRegion.name());
+    if (myIndex == -1)
+    {
+        label i = findIndex(props.solidRegionNames(), myRegion.name());
+
+        if (i == -1)
+        {
+            FatalErrorIn
+            (
+                "solidWallMixedTemperatureCoupledFvPatchScalarField"
+                "::interfaceOwner(const polyMesh&) const"
+            )   << "Cannot find region " << myRegion.name()
+                << " neither in fluids " << props.fluidRegionNames()
+                << " nor in solids " << props.solidRegionNames()
+                << exit(FatalError);
+        }
+        myIndex = props.fluidRegionNames().size() + i;
+    }
+    label nbrIndex = findIndex(props.fluidRegionNames(), nbrRegion.name());
+    if (nbrIndex == -1)
+    {
+        label i = findIndex(props.solidRegionNames(), nbrRegion.name());
+
+        if (i == -1)
+        {
+            FatalErrorIn("coupleManager::interfaceOwner(const polyMesh&) const")
+                << "Cannot find region " << nbrRegion.name()
+                << " neither in fluids " << props.fluidRegionNames()
+                << " nor in solids " << props.solidRegionNames()
+                << exit(FatalError);
+        }
+        nbrIndex = props.fluidRegionNames().size() + i;
+    }
+
+    return myIndex < nbrIndex;
+}
+
+
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
 Foam::solidWallMixedTemperatureCoupledFvPatchScalarField::
@@ -40,7 +94,7 @@ solidWallMixedTemperatureCoupledFvPatchScalarField
 )
 :
     mixedFvPatchScalarField(p, iF),
-    coupleManager_(p),
+    neighbourFieldName_("undefined-neighbourFieldName"),
     KName_("undefined-K")
 {
     this->refValue() = 0.0;
@@ -60,7 +114,7 @@ solidWallMixedTemperatureCoupledFvPatchScalarField
 )
 :
     mixedFvPatchScalarField(ptf, p, iF, mapper),
-    coupleManager_(ptf.coupleManager_),
+    neighbourFieldName_(ptf.neighbourFieldName_),
     KName_(ptf.KName_),
     fixesValue_(ptf.fixesValue_)
 {}
@@ -75,14 +129,46 @@ solidWallMixedTemperatureCoupledFvPatchScalarField
 )
 :
     mixedFvPatchScalarField(p, iF),
-    coupleManager_(p, dict),
+    neighbourFieldName_(dict.lookup("neighbourFieldName")),
     KName_(dict.lookup("K"))
 {
+    if (!isA<directMappedPatchBase>(this->patch().patch()))
+    {
+        FatalErrorIn
+        (
+            "solidWallMixedTemperatureCoupledFvPatchScalarField::"
+            "solidWallMixedTemperatureCoupledFvPatchScalarField\n"
+            "(\n"
+            "    const fvPatch& p,\n"
+            "    const DimensionedField<scalar, volMesh>& iF,\n"
+            "    const dictionary& dict\n"
+            ")\n"
+        )   << "\n    patch type '" << p.type()
+            << "' not type '" << directMappedPatchBase::typeName << "'"
+            << "\n    for patch " << p.name()
+            << " of field " << dimensionedInternalField().name()
+            << " in file " << dimensionedInternalField().objectPath()
+            << exit(FatalError);
+    }
+
     fvPatchScalarField::operator=(scalarField("value", dict, p.size()));
-    refValue() = static_cast<scalarField>(*this);
-    refGrad() = 0.0;
-    valueFraction() = 1.0;
-    fixesValue_ = true;
+
+    if (dict.found("refValue"))
+    {
+        // Full restart
+        refValue() = scalarField("refValue", dict, p.size());
+        refGrad() = scalarField("refGradient", dict, p.size());
+        valueFraction() = scalarField("valueFraction", dict, p.size());
+        fixesValue_ = readBool(dict.lookup("fixesValue"));
+    }
+    else
+    {
+        // Start from user entered data. Assume fixedValue.
+        refValue() = *this;
+        refGrad() = 0.0;
+        valueFraction() = 1.0;
+        fixesValue_ = true;
+    }
 }
 
 
@@ -94,7 +180,7 @@ solidWallMixedTemperatureCoupledFvPatchScalarField
 )
 :
     mixedFvPatchScalarField(wtcsf, iF),
-    coupleManager_(wtcsf.coupleManager_),
+    neighbourFieldName_(wtcsf.neighbourFieldName_),
     KName_(wtcsf.KName_),
     fixesValue_(wtcsf.fixesValue_)
 {}
@@ -116,33 +202,111 @@ void Foam::solidWallMixedTemperatureCoupledFvPatchScalarField::updateCoeffs()
         return;
     }
 
+    // Get the coupling information from the directMappedPatchBase
+    const directMappedPatchBase& mpp = refCast<const directMappedPatchBase>
+    (
+        patch().patch()
+    );
+    const polyMesh& nbrMesh = mpp.sampleMesh();
+
     tmp<scalarField> intFld = patchInternalField();
 
+    if (interfaceOwner(nbrMesh))
+    {
+        // Note: other side information could be cached - it only needs
+        // to be updated the first time round the iteration (i.e. when
+        // switching regions) but unfortunately we don't have this information.
+
+        const mapDistribute& distMap = mpp.map();
+        const fvPatch& nbrPatch = refCast<const fvMesh>
+        (
+            nbrMesh
+        ).boundary()[mpp.samplePolyPatch().index()];
+
+
+        // Calculate the temperature by harmonic averaging
+        // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+        const solidWallMixedTemperatureCoupledFvPatchScalarField& nbrField =
+        refCast<const solidWallMixedTemperatureCoupledFvPatchScalarField>
+        (
+            nbrPatch.lookupPatchField<volScalarField, scalar>
+            (
+                neighbourFieldName_
+            )
+        );
+
+        // Swap to obtain full local values of neighbour internal field
+        scalarField nbrIntFld = nbrField.patchInternalField();
+        mapDistribute::distribute
+        (
+            Pstream::defaultCommsType,
+            distMap.schedule(),
+            distMap.constructSize(),
+            distMap.subMap(),           // what to send
+            distMap.constructMap(),     // what to receive
+            nbrIntFld
+        );
+
+        // Swap to obtain full local values of neighbour K*delta
+        scalarField nbrKDelta = nbrField.K()*nbrPatch.deltaCoeffs();
+        mapDistribute::distribute
+        (
+            Pstream::defaultCommsType,
+            distMap.schedule(),
+            distMap.constructSize(),
+            distMap.subMap(),           // what to send
+            distMap.constructMap(),     // what to receive
+            nbrKDelta
+        );
+
+
+        tmp<scalarField> myKDelta = K()*patch().deltaCoeffs();
+
+        // Calculate common wall temperature. Reuse *this to store common value.
+        scalarField Twall
+        (
+            (myKDelta()*intFld() + nbrKDelta*nbrIntFld)
+          / (myKDelta() + nbrKDelta)
+        );
+        // Assign to me
+        fvPatchScalarField::operator=(Twall);
+        // Distribute back and assign to neighbour
+        mapDistribute::distribute
+        (
+            Pstream::defaultCommsType,
+            distMap.schedule(),
+            nbrField.size(),
+            distMap.constructMap(),     // reverse : what to send
+            distMap.subMap(),
+            Twall
+        );
+        const_cast<solidWallMixedTemperatureCoupledFvPatchScalarField&>
+        (
+            nbrField
+        ).fvPatchScalarField::operator=(Twall);
+    }
+
+
+    // Switch between fixed value (of harmonic avg) or gradient
+    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
     label nFixed = 0;
 
     // Like snGrad but bypass switching on refValue/refGrad.
-    tmp<scalarField> normalGradient =
-        (*this-intFld())
-      * patch().deltaCoeffs();
+    tmp<scalarField> normalGradient = (*this-intFld())*patch().deltaCoeffs();
 
     if (debug)
     {
+        scalar Q = gSum(K()*patch().magSf()*normalGradient());
+
         Info<< "solidWallMixedTemperatureCoupledFvPatchScalarField::"
             << "updateCoeffs() :"
             << " patch:" << patch().name()
+            << " heatFlux:" << Q
             << " walltemperature "
-            << " min:"
-            <<  returnReduce
-                (
-                    (this->size() > 0 ? min(*this) : VGREAT),
-                    minOp<scalar>()
-                )
-            << " max:"
-            <<  returnReduce
-                (
-                    (this->size() > 0 ? max(*this) : -VGREAT),
-                    maxOp<scalar>()
-                )
+            << " min:" << gMin(*this)
+            << " max:" << gMax(*this)
             << " avg:" << gAverage(*this)
             << endl;
     }
@@ -150,7 +314,7 @@ void Foam::solidWallMixedTemperatureCoupledFvPatchScalarField::updateCoeffs()
     forAll(*this, i)
     {
         // if outgoing flux use fixed value.
-        if (intFld()[i] > operator[](i))
+        if (normalGradient()[i] < 0.0)
         {
             this->refValue()[i] = operator[](i);
             this->refGrad()[i] = 0.0;   // not used
@@ -185,80 +349,16 @@ void Foam::solidWallMixedTemperatureCoupledFvPatchScalarField::updateCoeffs()
 }
 
 
-void Foam::solidWallMixedTemperatureCoupledFvPatchScalarField::evaluate
-(
-    const Pstream::commsTypes
-)
-{
-    if (!this->updated())
-    {
-        this->updateCoeffs();
-    }
-
-    if (!coupleManager_.regionOwner())
-    {
-        // I am the last one to evaluate.
-
-        tmp<scalarField> intFld = patchInternalField();
-
-        const fvPatch& nbrPatch = coupleManager_.neighbourPatch();
-
-        solidWallMixedTemperatureCoupledFvPatchScalarField& nbrField =
-        refCast<solidWallMixedTemperatureCoupledFvPatchScalarField>
-        (
-            const_cast<fvPatchField<scalar>&>
-            (
-                coupleManager_.neighbourPatchField<scalar>()
-            )
-        );
-        tmp<scalarField> nbrIntFld = nbrField.patchInternalField();
-        tmp<scalarField> myKDelta = K()*patch().deltaCoeffs();
-        tmp<scalarField> nbrKDelta = nbrField.K()*nbrPatch.deltaCoeffs();
-
-        // Calculate common wall temperature and assign to both sides
-        scalarField::operator=
-        (
-            (myKDelta()*intFld + nbrKDelta()*nbrIntFld)
-          / (myKDelta() + nbrKDelta())
-        );
-
-        nbrField.scalarField::operator=(*this);
-
-        if (debug)
-        {
-            Info<< "solidWallMixedTemperatureCoupledFvPatchScalarField::"
-                << "updateCoeffs() :"
-                << " patch:" << patch().name()
-                << " setting master and slave to wall temperature "
-                << " min:"
-                <<  returnReduce
-                    (
-                        (this->size() > 0 ? min(*this) : VGREAT),
-                        minOp<scalar>()
-                    )
-                << " max:"
-                <<  returnReduce
-                    (
-                        (this->size() > 0 ? max(*this) : -VGREAT),
-                        maxOp<scalar>()
-                    )
-                << " avg:" << gAverage(*this)
-                << endl;
-        }
-    }
-
-    fvPatchScalarField::evaluate();
-}
-
-
 void Foam::solidWallMixedTemperatureCoupledFvPatchScalarField::write
 (
     Ostream& os
 ) const
 {
     mixedFvPatchScalarField::write(os);
-    coupleManager_.writeEntries(os);
+    os.writeKeyword("neighbourFieldName")<< neighbourFieldName_
+        << token::END_STATEMENT << nl;
     os.writeKeyword("K") << KName_ << token::END_STATEMENT << nl;
+    os.writeKeyword("fixesValue") << fixesValue_ << token::END_STATEMENT << nl;
 }
 
 
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/derivedFvPatchFields/solidWallMixedTemperatureCoupled/solidWallMixedTemperatureCoupledFvPatchScalarField.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/derivedFvPatchFields/solidWallMixedTemperatureCoupled/solidWallMixedTemperatureCoupledFvPatchScalarField.H
index 34c32b1abf4204864d1cc7268ecf3e5874a25d36..f4abacf648aad7283f04baa44b8ad29f856a54db 100644
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/derivedFvPatchFields/solidWallMixedTemperatureCoupled/solidWallMixedTemperatureCoupledFvPatchScalarField.H
+++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/derivedFvPatchFields/solidWallMixedTemperatureCoupled/solidWallMixedTemperatureCoupledFvPatchScalarField.H
@@ -37,13 +37,22 @@ Description
         myInterfacePatchName
         {
             type                solidWallMixedTemperatureCoupled;
-            neighbourRegionName fluid;
-            neighbourPatchName  fluidSolidInterface;
             neighbourFieldName  T;
             K                   K;
             value               uniform 300;
         }
 
+    Needs to be on underlying directMapped(Wall)FvPatch.
+
+    Note: runs in parallel with arbitrary decomposition. Uses directMapped
+    functionality to calculate exchange.
+
+    Note: lags interface data so both sides use same data.
+    - problem: schedule to calculate average would interfere
+    with standard processor swaps.
+    - so: updateCoeffs sets both to same Twall. Only need to do
+    this for last outer iteration but don't have access to this.
+
 SourceFiles
     solidWallMixedTemperatureCoupledFvPatchScalarField.C
 
@@ -54,7 +63,6 @@ SourceFiles
 
 #include "fvPatchFields.H"
 #include "mixedFvPatchFields.H"
-#include "coupleManager.H"
 #include "fvPatch.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -72,14 +80,21 @@ class solidWallMixedTemperatureCoupledFvPatchScalarField
 {
     // Private data
 
-        //- Couple manager object
-        coupleManager coupleManager_;
-
+        //- Name of field on the neighbour region
+        const word neighbourFieldName_;
+        
         //- Name of thermal conductivity field
-        word KName_;
+        const word KName_;
 
         bool fixesValue_;
 
+
+    // Private Member Functions
+
+        //- Am I or neighbour owner of interface
+        bool interfaceOwner(const polyMesh& nbrRegion) const;
+
+
 public:
 
     //- Runtime type information
@@ -162,12 +177,6 @@ public:
         //- Update the coefficients associated with the patch field
         virtual void updateCoeffs();
 
-        //- Evaluate the patch field
-        virtual void evaluate
-        (
-            const Pstream::commsTypes commsType=Pstream::blocking
-        );
-
         //- Write
         virtual void write(Ostream&) const;
 };
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/derivedFvPatchFields/solidWallTemperatureCoupled/solidWallTemperatureCoupledFvPatchScalarField.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/derivedFvPatchFields/solidWallTemperatureCoupled/solidWallTemperatureCoupledFvPatchScalarField.H
deleted file mode 100644
index 22fd168175134eb812ac447caac3d397dee21df3..0000000000000000000000000000000000000000
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/derivedFvPatchFields/solidWallTemperatureCoupled/solidWallTemperatureCoupledFvPatchScalarField.H
+++ /dev/null
@@ -1,160 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by the
-    Free Software Foundation; either version 2 of the License, or (at your
-    option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM; if not, write to the Free Software Foundation,
-    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-Class
-    solidWallHeatFluxCoupledFvPatchScalarField
-
-Description
-    Fixed value boundary condition for temperature, to be used by the
-    conjugate heat transfer solver.
-
-    Example usage:
-        myInterfacePatchName
-        {
-            type                solidWallTemperatureCoupled;
-            neighbourRegionName fluid;
-            neighbourPatchName  fluidSolidInterface;
-            neighbourFieldName  T;
-            K                   K;
-            value               uniform 300;
-        }
-
-SourceFiles
-    solidWallTemperatureCoupledFvPatchScalarField.C
-
-\*---------------------------------------------------------------------------*/
-
-#ifndef solidWallTemperatureCoupledFvPatchScalarField_H
-#define solidWallTemperatureCoupledFvPatchScalarField_H
-
-#include "fvPatchFields.H"
-#include "fixedValueFvPatchFields.H"
-#include "coupleManager.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-
-/*---------------------------------------------------------------------------*\
-        Class solidWallTemperatureCoupledFvPatchScalarField Declaration
-\*---------------------------------------------------------------------------*/
-
-class solidWallTemperatureCoupledFvPatchScalarField
-:
-    public fixedValueFvPatchScalarField
-{
-    // Private data
-
-        //- Couple manager object
-        coupleManager coupleManager_;
-
-        //- Name of thermal conductivity field
-        word KName_;
-
-
-public:
-
-    //- Runtime type information
-    TypeName("solidWallTemperatureCoupled");
-
-
-    // Constructors
-
-        //- Construct from patch and internal field
-        solidWallTemperatureCoupledFvPatchScalarField
-        (
-            const fvPatch&,
-            const DimensionedField<scalar, volMesh>&
-        );
-
-        //- Construct from patch, internal field and dictionary
-        solidWallTemperatureCoupledFvPatchScalarField
-        (
-            const fvPatch&,
-            const DimensionedField<scalar, volMesh>&,
-            const dictionary&
-        );
-
-        //- Construct by mapping given solidWallTemperatureCoupledFvPatchScalarField
-        //  onto a new patch
-        solidWallTemperatureCoupledFvPatchScalarField
-        (
-            const solidWallTemperatureCoupledFvPatchScalarField&,
-            const fvPatch&,
-            const DimensionedField<scalar, volMesh>&,
-            const fvPatchFieldMapper&
-        );
-
-        //- Construct and return a clone
-        virtual tmp<fvPatchScalarField> clone() const
-        {
-            return tmp<fvPatchScalarField>
-            (
-                new solidWallTemperatureCoupledFvPatchScalarField(*this)
-            );
-        }
-
-        //- Construct as copy setting internal field reference
-        solidWallTemperatureCoupledFvPatchScalarField
-        (
-            const solidWallTemperatureCoupledFvPatchScalarField&,
-            const DimensionedField<scalar, volMesh>&
-        );
-
-        //- Construct and return a clone setting internal field reference
-        virtual tmp<fvPatchScalarField> clone
-        (
-            const DimensionedField<scalar, volMesh>& iF
-        ) const
-        {
-            return tmp<fvPatchScalarField>
-            (
-                new solidWallTemperatureCoupledFvPatchScalarField(*this, iF)
-            );
-        }
-
-
-    // Member functions
-
-        //- (intensive) flux
-        tmp<scalarField> flux() const;
-
-        //- Update the coefficients associated with the patch field
-        virtual void updateCoeffs();
-
-        //- Write
-        virtual void write(Ostream&) const;
-};
-
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-} // End namespace Foam
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-#endif
-
-// ************************************************************************* //
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/UEqn.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/UEqn.H
index e719d92433926797b7850dc356ade232228ba502..65467f80864609f9225e9d058b9568890c500988 100644
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/UEqn.H
+++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/UEqn.H
@@ -14,12 +14,10 @@
          (
             UEqn()
          ==
-           -fvc::reconstruct
+            fvc::reconstruct
             (
-                (
-                    fvc::snGrad(pd)
-                  + ghf*fvc::snGrad(rho)
-                ) * mesh.magSf()
+                fvc::interpolate(rho)*(g & mesh.Sf())
+              - fvc::snGrad(p)*mesh.magSf()
             )
         );
     }
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/createFluidFields.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/createFluidFields.H
index 1f6e50de0a3872b76c239e920f054d5e1cb54ea2..7aa01dee7939de0bf5ce3595f0cefc73a5d7653f 100644
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/createFluidFields.H
+++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/createFluidFields.H
@@ -1,53 +1,25 @@
     // Initialise fluid field pointer lists
-    PtrList<basicThermo> thermoFluid(fluidRegions.size());
+    PtrList<basicPsiThermo> thermoFluid(fluidRegions.size());
     PtrList<volScalarField> rhoFluid(fluidRegions.size());
     PtrList<volScalarField> KFluid(fluidRegions.size());
     PtrList<volVectorField> UFluid(fluidRegions.size());
     PtrList<surfaceScalarField> phiFluid(fluidRegions.size());
     PtrList<compressible::turbulenceModel> turbulence(fluidRegions.size());
     PtrList<volScalarField> DpDtFluid(fluidRegions.size());
-    PtrList<volScalarField> ghFluid(fluidRegions.size());
-    PtrList<surfaceScalarField> ghfFluid(fluidRegions.size());
-    PtrList<volScalarField> pdFluid(fluidRegions.size());
 
     List<scalar> initialMassFluid(fluidRegions.size());
 
-    dimensionedScalar pRef
-    (
-        "pRef",
-        dimensionSet(1, -1, -2, 0, 0),
-        rp.lookup("pRef")
-    );
-
     // Populate fluid field pointer lists
     forAll(fluidRegions, i)
     {
         Info<< "*** Reading fluid mesh thermophysical properties for region "
             << fluidRegions[i].name() << nl << endl;
 
-        Info<< "    Adding to pdFluid\n" << endl;
-        pdFluid.set
-        (
-            i,
-            new volScalarField
-            (
-                IOobject
-                (
-                    "pd",
-                    runTime.timeName(),
-                    fluidRegions[i],
-                    IOobject::MUST_READ,
-                    IOobject::AUTO_WRITE
-                ),
-                fluidRegions[i]
-            )
-        );
-
         Info<< "    Adding to thermoFluid\n" << endl;
         thermoFluid.set
         (
             i,
-            basicThermo::New(fluidRegions[i]).ptr()
+            basicPsiThermo::New(fluidRegions[i]).ptr()
         );
 
         Info<< "    Adding to rhoFluid\n" << endl;
@@ -145,6 +117,7 @@
             i,
             new volScalarField
             (
+                "DpDt",
                 fvc::DDt
                 (
                     surfaceScalarField
@@ -157,36 +130,5 @@
             )
         );
 
-        const dictionary& environmentalProperties =
-            fluidRegions[i].lookupObject<IOdictionary>
-                ("environmentalProperties");
-        dimensionedVector g(environmentalProperties.lookup("g"));
-
-        Info<< "    Adding to ghFluid\n" << endl;
-        ghFluid.set
-        (
-            i,
-            new volScalarField
-            (
-                "gh",
-                 g & fluidRegions[i].C()
-            )
-        );
-        ghfFluid.set
-        (
-            i,
-            new surfaceScalarField
-            (
-                "ghf",
-                 g & fluidRegions[i].Cf()
-            )
-        );
-
-        Info<< "    Updating p from pd\n" << endl;
-        thermoFluid[i].p() == pdFluid[i] + rhoFluid[i]*ghFluid[i] + pRef;
-        thermoFluid[i].correct();
-
         initialMassFluid[i] = fvc::domainIntegrate(rhoFluid[i]).value();
     }
-
-
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/hEqn.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/hEqn.H
index 7f2202d5937d4e17ab988aef292979339269aabb..e070537db2c701e27baafd6cf64ef015e3898100 100644
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/hEqn.H
+++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/hEqn.H
@@ -1,5 +1,5 @@
 {
-    tmp<fvScalarMatrix> hEqn
+    fvScalarMatrix hEqn
     (
         fvm::ddt(rho, h)
       + fvm::div(phi, h)
@@ -7,8 +7,16 @@
      ==
         DpDt
     );
-    hEqn().relax();
-    hEqn().solve();
+    if (oCorr == nOuterCorr-1)
+    {
+        hEqn.relax();
+        hEqn.solve(mesh.solver("hFinal"));
+    }
+    else
+    {
+        hEqn.relax();
+        hEqn.solve();
+    }
 
     thermo.correct();
 
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/pEqn.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/pEqn.H
index e297989809aaa930b9c0be00e3049842869e44aa..a264b68fe5eab2388d38ca1aaf75a3f416db2330 100644
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/pEqn.H
+++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/pEqn.H
@@ -1,5 +1,5 @@
 {
-    bool closedVolume = pd.needReference();
+    bool closedVolume = p.needReference();
 
     rho = thermo.rho();
 
@@ -17,31 +17,34 @@
         )
     );
 
-    phi = phiU - ghf*fvc::snGrad(rho)*rhorUAf*mesh.magSf();
+    phi = phiU + fvc::interpolate(rho)*(g & mesh.Sf())*rhorUAf;
 
     for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
     {
-        fvScalarMatrix pdEqn
+        fvScalarMatrix pEqn
         (
-            fvm::ddt(psi, pd)
-          + fvc::ddt(psi)*pRef
-          + fvc::ddt(psi, rho)*gh
+            fvm::ddt(psi, p)
           + fvc::div(phi)
-          - fvm::laplacian(rho*rUA, pd)
+          - fvm::laplacian(rhorUAf, p)
         );
 
-        if (corr == nCorr-1 && nonOrth == nNonOrthCorr)
+        if
+        (
+            oCorr == nOuterCorr-1
+         && corr == nCorr-1
+         && nonOrth == nNonOrthCorr
+        )
         {
-            pdEqn.solve(mesh.solver(pd.name() + "Final"));
+            pEqn.solve(mesh.solver(p.name() + "Final"));
         }
         else
         {
-            pdEqn.solve(mesh.solver(pd.name()));
+            pEqn.solve(mesh.solver(p.name()));
         }
 
         if (nonOrth == nNonOrthCorr)
         {
-            phi += pdEqn.flux();
+            phi += pEqn.flux();
         }
     }
 
@@ -49,27 +52,24 @@
     U += rUA*fvc::reconstruct((phi - phiU)/rhorUAf);
     U.correctBoundaryConditions();
 
-    // Update pressure field (including bc)
-    p == pd + rho*gh + pRef;
+    // Update pressure substantive derivative
     DpDt = fvc::DDt(surfaceScalarField("phiU", phi/fvc::interpolate(rho)), p);
 
     // Solve continuity
-#   include "rhoEqn.H"
+    #include "rhoEqn.H"
 
     // Update continuity errors
-#   include "compressibleContinuityErrors.H"
+    #include "compressibleContinuityErrors.H"
 
     // For closed-volume cases adjust the pressure and density levels
     // to obey overall mass continuity
     if (closedVolume)
     {
-        p += (massIni - fvc::domainIntegrate(psi*p))/fvc::domainIntegrate(psi);
+        p += (massIni - fvc::domainIntegrate(psi*p))
+            /fvc::domainIntegrate(psi);
         rho = thermo.rho();
     }
 
     // Update thermal conductivity
     K = thermoFluid[i].Cp()*turb.alphaEff();
-
-    // Update pd (including bc)
-    pd == p - (rho*gh + pRef);
 }
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/readFluidMultiRegionPIMPLEControls.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/readFluidMultiRegionPIMPLEControls.H
new file mode 100644
index 0000000000000000000000000000000000000000..413c0225f0a34a82b3af1751011d7e8af7b935ba
--- /dev/null
+++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/readFluidMultiRegionPIMPLEControls.H
@@ -0,0 +1,9 @@
+    const dictionary& pimple = mesh.solutionDict().subDict("PIMPLE");
+
+    int nCorr(readInt(pimple.lookup("nCorrectors")));
+
+    int nNonOrthCorr =
+        pimple.lookupOrDefault<int>("nNonOrthogonalCorrectors", 0);
+
+    bool momentumPredictor =
+        pimple.lookupOrDefault<Switch>("momentumPredictor", true);
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/rhoEqn.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/rhoEqn.H
deleted file mode 100644
index a6b0ac9fe1c0c27d1f2479f27ab3715c87537cd9..0000000000000000000000000000000000000000
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/rhoEqn.H
+++ /dev/null
@@ -1 +0,0 @@
-    solve(fvm::ddt(rho) + fvc::div(phi));
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/setRegionFluidFields.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/setRegionFluidFields.H
index 35a64418a8c6cbd1d488970f1d665420a2f752b6..29aea044664c8a7c2045525c5e94d94e0c0b1e48 100644
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/setRegionFluidFields.H
+++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/setRegionFluidFields.H
@@ -1,18 +1,21 @@
     const fvMesh& mesh = fluidRegions[i];
 
-    basicThermo& thermo = thermoFluid[i];
+    basicPsiThermo& thermo = thermoFluid[i];
     volScalarField& rho = rhoFluid[i];
     volScalarField& K = KFluid[i];
     volVectorField& U = UFluid[i];
     surfaceScalarField& phi = phiFluid[i];
     compressible::turbulenceModel& turb = turbulence[i];
     volScalarField& DpDt = DpDtFluid[i];
-    const volScalarField& gh = ghFluid[i];
-    const surfaceScalarField& ghf = ghfFluid[i];
-    volScalarField& pd = pdFluid[i];
 
     volScalarField& p = thermo.p();
     const volScalarField& psi = thermo.psi();
     volScalarField& h = thermo.h();
 
     const dimensionedScalar massIni("massIni", dimMass, initialMassFluid[i]);
+
+    const dictionary& environmentalProperties =
+        fluidRegions[i].lookupObject<IOdictionary>
+        ("environmentalProperties");
+
+    const dimensionedVector g(environmentalProperties.lookup("g"));
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/solveFluid.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/solveFluid.H
index 19ec50cac253986322e9155df1c2bcc0d7632c4a..86dd4344c15310f219bfb9bda406b22f2ffe7585 100644
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/solveFluid.H
+++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/solveFluid.H
@@ -1,15 +1,18 @@
-#   include "rhoEqn.H"
-    for (int ocorr=0; ocorr<nOuterCorr; ocorr++)
-    {
-    #   include "UEqn.H"
+if (oCorr == 0)
+{
+    #include "rhoEqn.H"
+}
 
-    #   include "hEqn.H"
+#include "UEqn.H"
 
-     // --- PISO loop
+#include "hEqn.H"
 
-        for (int corr=0; corr<nCorr; corr++)
-        {
-    #       include "pEqn.H"
-        }
-    }
-    turb.correct();
+// --- PISO loop
+for (int corr=0; corr<nCorr; corr++)
+{
+    #include "pEqn.H"
+}
+
+turb.correct();
+
+rho = thermo.rho();
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/storeOldFluidFields.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/storeOldFluidFields.H
new file mode 100644
index 0000000000000000000000000000000000000000..f63e85458e25253209094f92995e0c3c91858fc5
--- /dev/null
+++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/storeOldFluidFields.H
@@ -0,0 +1,2 @@
+    p.storePrevIter();
+    rho.storePrevIter();
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/readPIMPLEControls.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/readPIMPLEControls.H
new file mode 100644
index 0000000000000000000000000000000000000000..42793d9b9fdb82a890b5994673f07ade7745a659
--- /dev/null
+++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/readPIMPLEControls.H
@@ -0,0 +1,7 @@
+    // We do not have a top-level mesh. Construct the fvSolution for
+    // the runTime instead.
+    fvSolution solutionDict(runTime);
+
+    const dictionary& pimple = solutionDict.subDict("PIMPLE");
+
+    int nOuterCorr(readInt(pimple.lookup("nOuterCorrectors")));
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/readSolidMultiRegionPIMPLEControls.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/readSolidMultiRegionPIMPLEControls.H
new file mode 100644
index 0000000000000000000000000000000000000000..e23883c5fae11f298e0459feaacacc4c73af8dbe
--- /dev/null
+++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/readSolidMultiRegionPIMPLEControls.H
@@ -0,0 +1,4 @@
+    const dictionary& pimple = mesh.solutionDict().subDict("PIMPLE");
+
+    int nNonOrthCorr =
+        pimple.lookupOrDefault<int>("nNonOrthogonalCorrectors", 0);
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/readSolidMultiRegionPISOControls.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/readSolidMultiRegionPISOControls.H
index 6373e79d49c0869238a30a138aef81a7af905d05..ce6a1c5bb2626f82eb411bc20b4f57b64e3271ff 100644
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/readSolidMultiRegionPISOControls.H
+++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/readSolidMultiRegionPISOControls.H
@@ -1,4 +1,4 @@
-    dictionary piso = solidRegions[i].solutionDict().subDict("PISO");
+    const dictionary& piso = solidRegions[i].solutionDict().subDict("PISO");
 
     int nNonOrthCorr = 0;
     if (piso.found("nNonOrthogonalCorrectors"))
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/setRegionSolidFields.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/setRegionSolidFields.H
index 04c90d2c4c108f479145e86e64c980f7d6296cba..f9e80e3d72385e7f6ae80107cc3b65921904c35f 100644
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/setRegionSolidFields.H
+++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/setRegionSolidFields.H
@@ -1,4 +1,4 @@
-//    fvMesh& mesh = solidRegions[i];
+    fvMesh& mesh = solidRegions[i];
 
     volScalarField& rho = rhos[i];
     volScalarField& cp = cps[i];
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/solveSolid.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/solveSolid.H
index 5fa731824f375adfeb3e2175f280de55da5cd4b2..ce8b1d0f408d4ec033f88c37846a8c7ab80e61b0 100644
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/solveSolid.H
+++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/solveSolid.H
@@ -1,10 +1,13 @@
 {
     for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
     {
-        solve
+        tmp<fvScalarMatrix> TEqn
         (
-            fvm::ddt(rho*cp, T) - fvm::laplacian(K, T)
+            fvm::ddt(rho*cp, T)
+          - fvm::laplacian(K, T)
         );
+        TEqn().relax();
+        TEqn().solve();
     }
 
     Info<< "Min/max T:" << min(T) << ' ' << max(T) << endl;
diff --git a/applications/solvers/incompressible/boundaryFoam/boundaryFoam.C b/applications/solvers/incompressible/boundaryFoam/boundaryFoam.C
index ab10aab8d47e9359e9ca395e28d2315aef190f62..2ee69c120e09b41acb0edb4f9e8f6a736cd0d783 100644
--- a/applications/solvers/incompressible/boundaryFoam/boundaryFoam.C
+++ b/applications/solvers/incompressible/boundaryFoam/boundaryFoam.C
@@ -47,14 +47,13 @@ Description
 
 int main(int argc, char *argv[])
 {
+    #include "setRootCase.H"
 
-#   include "setRootCase.H"
+    #include "createTime.H"
+    #include "createMesh.H"
+    #include "createFields.H"
 
-#   include "createTime.H"
-#   include "createMesh.H"
-#   include "createFields.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
     Info<< "\nStarting time loop\n" << endl;
 
diff --git a/applications/solvers/incompressible/channelFoam/readTransportProperties.H b/applications/solvers/incompressible/channelFoam/readTransportProperties.H
index c99d0ae4b5b97f4ed18765efe9a69103ba08e2c3..87c93c9195880f243c7ac035020345c283fd2450 100644
--- a/applications/solvers/incompressible/channelFoam/readTransportProperties.H
+++ b/applications/solvers/incompressible/channelFoam/readTransportProperties.H
@@ -7,7 +7,8 @@
             runTime.constant(),
             mesh,
             IOobject::MUST_READ,
-            IOobject::NO_WRITE
+            IOobject::NO_WRITE,
+            false
         )
     );
 
diff --git a/applications/solvers/incompressible/icoFoam/icoFoam.C b/applications/solvers/incompressible/icoFoam/icoFoam.C
index 9ac6bd4fa6fcacb849ab033471623d499e978b52..fef690f831a08a6db3da3c936caa96c35ac5c445 100644
--- a/applications/solvers/incompressible/icoFoam/icoFoam.C
+++ b/applications/solvers/incompressible/icoFoam/icoFoam.C
@@ -36,15 +36,14 @@ Description
 
 int main(int argc, char *argv[])
 {
+    #include "setRootCase.H"
 
-#   include "setRootCase.H"
+    #include "createTime.H"
+    #include "createMesh.H"
+    #include "createFields.H"
+    #include "initContinuityErrs.H"
 
-#   include "createTime.H"
-#   include "createMesh.H"
-#   include "createFields.H"
-#   include "initContinuityErrs.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
     Info<< "\nStarting time loop\n" << endl;
 
@@ -52,8 +51,8 @@ int main(int argc, char *argv[])
     {
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
-#       include "readPISOControls.H"
-#       include "CourantNo.H"
+        #include "readPISOControls.H"
+        #include "CourantNo.H"
 
         fvVectorMatrix UEqn
         (
@@ -92,7 +91,7 @@ int main(int argc, char *argv[])
                 }
             }
 
-#           include "continuityErrs.H"
+            #include "continuityErrs.H"
 
             U -= rUA*fvc::grad(p);
             U.correctBoundaryConditions();
diff --git a/applications/solvers/incompressible/nonNewtonianIcoFoam/nonNewtonianIcoFoam.C b/applications/solvers/incompressible/nonNewtonianIcoFoam/nonNewtonianIcoFoam.C
index c5d2b0576c6e2acd547a1d2abf6bd94cf249964d..fb7ff1c8904c263cabb3a8dfcdb39266cbefb45d 100644
--- a/applications/solvers/incompressible/nonNewtonianIcoFoam/nonNewtonianIcoFoam.C
+++ b/applications/solvers/incompressible/nonNewtonianIcoFoam/nonNewtonianIcoFoam.C
@@ -37,15 +37,14 @@ Description
 
 int main(int argc, char *argv[])
 {
+    #include "setRootCase.H"
 
-#   include "setRootCase.H"
+    #include "createTime.H"
+    #include "createMeshNoClear.H"
+    #include "createFields.H"
+    #include "initContinuityErrs.H"
 
-#   include "createTime.H"
-#   include "createMeshNoClear.H"
-#   include "createFields.H"
-#   include "initContinuityErrs.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
     Info<< "\nStarting time loop\n" << endl;
 
@@ -53,8 +52,8 @@ int main(int argc, char *argv[])
     {
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
-#       include "readPISOControls.H"
-#       include "CourantNo.H"
+        #include "readPISOControls.H"
+        #include "CourantNo.H"
 
         fluid.correct();
 
@@ -95,7 +94,7 @@ int main(int argc, char *argv[])
                 }
             }
 
-#           include "continuityErrs.H"
+            #include "continuityErrs.H"
 
             U -= rUA*fvc::grad(p);
             U.correctBoundaryConditions();
diff --git a/applications/solvers/incompressible/pimpleDyMFoam/correctPhi.H b/applications/solvers/incompressible/pimpleDyMFoam/correctPhi.H
index 493c4e09297dda164af75b9c29b846be3ccf68e8..023ecc6d5a7e8afa95465df9db34b9a816d860e8 100644
--- a/applications/solvers/incompressible/pimpleDyMFoam/correctPhi.H
+++ b/applications/solvers/incompressible/pimpleDyMFoam/correctPhi.H
@@ -1,5 +1,9 @@
 {
-    wordList pcorrTypes(p.boundaryField().types());
+    wordList pcorrTypes
+    (
+        p.boundaryField().size(),
+        zeroGradientFvPatchScalarField::typeName
+    );
 
     for (label i=0; i<p.boundaryField().size(); i++)
     {
diff --git a/applications/solvers/incompressible/pimpleDyMFoam/pimpleDyMFoam.C b/applications/solvers/incompressible/pimpleDyMFoam/pimpleDyMFoam.C
index 66692cc4a854491f4d6339ccce0e4ab11e194e25..a9bcb42b451303ce7ea2c541a0eddde2f228da76 100644
--- a/applications/solvers/incompressible/pimpleDyMFoam/pimpleDyMFoam.C
+++ b/applications/solvers/incompressible/pimpleDyMFoam/pimpleDyMFoam.C
@@ -42,29 +42,28 @@ Description
 
 int main(int argc, char *argv[])
 {
+    #include "setRootCase.H"
 
-#   include "setRootCase.H"
+    #include "createTime.H"
+    #include "createDynamicFvMesh.H"
+    #include "readPIMPLEControls.H"
+    #include "initContinuityErrs.H"
+    #include "createFields.H"
+    #include "readTimeControls.H"
 
-#   include "createTime.H"
-#   include "createDynamicFvMesh.H"
-#   include "readPIMPLEControls.H"
-#   include "initContinuityErrs.H"
-#   include "createFields.H"
-#   include "readTimeControls.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
     Info<< "\nStarting time loop\n" << endl;
 
     while (runTime.run())
     {
-#       include "readControls.H"
-#       include "CourantNo.H"
+        #include "readControls.H"
+        #include "CourantNo.H"
 
         // Make the fluxes absolute
         fvc::makeAbsolute(phi, U);
 
-#       include "setDeltaT.H"
+        #include "setDeltaT.H"
 
         runTime++;
 
@@ -74,7 +73,7 @@ int main(int argc, char *argv[])
 
         if (mesh.changing() && correctPhi)
         {
-#           include "correctPhi.H"
+            #include "correctPhi.H"
         }
 
         // Make the fluxes relative to the mesh motion
@@ -82,7 +81,7 @@ int main(int argc, char *argv[])
 
         if (mesh.changing() && checkMeshCourantNo)
         {
-#           include "meshCourantNo.H"
+            #include "meshCourantNo.H"
         }
 
         // --- PIMPLE loop
@@ -93,7 +92,7 @@ int main(int argc, char *argv[])
                 p.storePrevIter();
             }
 
-#           include "UEqn.H"
+            #include "UEqn.H"
 
             // --- PISO loop
             for (int corr=0; corr<nCorr; corr++)
@@ -138,7 +137,7 @@ int main(int argc, char *argv[])
                     }
                 }
 
-#               include "continuityErrs.H"
+                #include "continuityErrs.H"
 
                 // Explicitly relax pressure for momentum corrector
                 if (ocorr != nOuterCorr-1)
diff --git a/applications/solvers/incompressible/simpleFoam/simpleFoam.C b/applications/solvers/incompressible/simpleFoam/simpleFoam.C
index b5ac02c563c533dfb80b50e4afb1cab762f1b59d..4828bd507f61a4dc8a6c40932b2607e7e19b5d46 100644
--- a/applications/solvers/incompressible/simpleFoam/simpleFoam.C
+++ b/applications/solvers/incompressible/simpleFoam/simpleFoam.C
@@ -38,14 +38,13 @@ Description
 
 int main(int argc, char *argv[])
 {
+    #include "setRootCase.H"
+    #include "createTime.H"
+    #include "createMesh.H"
+    #include "createFields.H"
+    #include "initContinuityErrs.H"
 
-#   include "setRootCase.H"
-#   include "createTime.H"
-#   include "createMesh.H"
-#   include "createFields.H"
-#   include "initContinuityErrs.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
     Info<< "\nStarting time loop\n" << endl;
 
@@ -53,15 +52,15 @@ int main(int argc, char *argv[])
     {
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
-#       include "readSIMPLEControls.H"
-#       include "initConvergenceCheck.H"
+        #include "readSIMPLEControls.H"
+        #include "initConvergenceCheck.H"
 
         p.storePrevIter();
 
         // Pressure-velocity SIMPLE corrector
         {
-#           include "UEqn.H"
-#           include "pEqn.H"
+            #include "UEqn.H"
+            #include "pEqn.H"
         }
 
         turbulence->correct();
@@ -72,7 +71,7 @@ int main(int argc, char *argv[])
             << "  ClockTime = " << runTime.elapsedClockTime() << " s"
             << nl << endl;
 
-#       include "convergenceCheck.H"
+        #include "convergenceCheck.H"
     }
 
     Info<< "End\n" << endl;
diff --git a/applications/solvers/lagrangian/coalChemistryFoam/Make/files b/applications/solvers/lagrangian/coalChemistryFoam/Make/files
new file mode 100644
index 0000000000000000000000000000000000000000..552d73450173870f57cee6a4b126b16fd63d08be
--- /dev/null
+++ b/applications/solvers/lagrangian/coalChemistryFoam/Make/files
@@ -0,0 +1,3 @@
+coalChemistryFoam.C
+
+EXE = $(FOAM_APPBIN)/coalChemistryFoam
diff --git a/applications/solvers/lagrangian/coalChemistryFoam/Make/options b/applications/solvers/lagrangian/coalChemistryFoam/Make/options
new file mode 100644
index 0000000000000000000000000000000000000000..b7abd77a175372229b37f37bd8151117e904f3c2
--- /dev/null
+++ b/applications/solvers/lagrangian/coalChemistryFoam/Make/options
@@ -0,0 +1,39 @@
+EXE_INC = \
+    -I$(LIB_SRC)/finiteVolume/lnInclude \
+    -I${LIB_SRC}/meshTools/lnInclude \
+    -I$(LIB_SRC)/turbulenceModels/compressible/turbulenceModel \
+    -I$(LIB_SRC)/lagrangian/basic/lnInclude \
+    -I$(LIB_SRC)/lagrangian/intermediate/lnInclude \
+    -I$(LIB_SRC)/lagrangian/coalCombustion/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/pdfs/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/liquids/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/liquidMixture/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/solids/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/solidMixture/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/thermophysicalFunctions/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/chemistryModel/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/radiation/lnInclude \
+    -I$(LIB_SRC)/ODE/lnInclude
+
+EXE_LIBS = \
+    -lfiniteVolume \
+    -lmeshTools \
+    -lcompressibleRASModels \
+    -lcompressibleLESModels \
+    -llagrangian \
+    -llagrangianIntermediate \
+    -lcoalCombustion\
+    -lspecie \
+    -lbasicThermophysicalModels \
+    -lliquids \
+    -lliquidMixture \
+    -lsolids \
+    -lsolidMixture \
+    -lthermophysicalFunctions \
+    -lreactionThermophysicalModels \
+    -lchemistryModel \
+    -lradiation \
+    -lODE
diff --git a/applications/solvers/lagrangian/coalChemistryFoam/UEqn.H b/applications/solvers/lagrangian/coalChemistryFoam/UEqn.H
new file mode 100644
index 0000000000000000000000000000000000000000..b02a7c61e86523217ddf733841a2084e46cc2673
--- /dev/null
+++ b/applications/solvers/lagrangian/coalChemistryFoam/UEqn.H
@@ -0,0 +1,17 @@
+    fvVectorMatrix UEqn
+    (
+        fvm::ddt(rho, U)
+      + fvm::div(phi, U)
+      + turbulence->divDevRhoReff(U)
+     ==
+        rho.dimensionedInternalField()*g
+      + coalParcels.SU()
+      + limestoneParcels.SU()
+    );
+
+    UEqn.relax();
+
+    if (momentumPredictor)
+    {
+        solve(UEqn == -fvc::grad(p));
+    }
diff --git a/applications/solvers/lagrangian/coalChemistryFoam/YEqn.H b/applications/solvers/lagrangian/coalChemistryFoam/YEqn.H
new file mode 100644
index 0000000000000000000000000000000000000000..5c84cfdb3f5eae620a53dd50b8a0d32e6abb1fac
--- /dev/null
+++ b/applications/solvers/lagrangian/coalChemistryFoam/YEqn.H
@@ -0,0 +1,43 @@
+tmp<fv::convectionScheme<scalar> > mvConvection
+(
+    fv::convectionScheme<scalar>::New
+    (
+        mesh,
+        fields,
+        phi,
+        mesh.divScheme("div(phi,Yi_h)")
+    )
+);
+
+
+{
+    label inertIndex = -1;
+    volScalarField Yt = 0.0*Y[0];
+
+    for (label i=0; i<Y.size(); i++)
+    {
+        if (Y[i].name() != inertSpecie)
+        {
+            volScalarField& Yi = Y[i];
+            solve
+            (
+                fvm::ddt(rho, Yi)
+              + mvConvection->fvmDiv(phi, Yi)
+              - fvm::laplacian(turbulence->muEff(), Yi)
+              ==
+                coalParcels.Srho(i)
+              + kappa*chemistry.RR(i)().dimensionedInternalField()
+            );
+
+            Yi.max(0.0);
+            Yt += Yi;
+        }
+        else
+        {
+            inertIndex = i;
+        }
+    }
+
+    Y[inertIndex] = scalar(1) - Yt;
+    Y[inertIndex].max(0.0);
+}
diff --git a/applications/solvers/lagrangian/coalChemistryFoam/chemistry.H b/applications/solvers/lagrangian/coalChemistryFoam/chemistry.H
new file mode 100644
index 0000000000000000000000000000000000000000..07b1e9953b0db867186f6c668d27a9415a26c265
--- /dev/null
+++ b/applications/solvers/lagrangian/coalChemistryFoam/chemistry.H
@@ -0,0 +1,25 @@
+{
+    Info << "Solving chemistry" << endl;
+
+    chemistry.solve
+    (
+        runTime.value() - runTime.deltaT().value(),
+        runTime.deltaT().value()
+    );
+
+    // turbulent time scale
+    if (turbulentReaction)
+    {
+        DimensionedField<scalar, volMesh> tk =
+            Cmix*sqrt(turbulence->muEff()/rho/turbulence->epsilon());
+        DimensionedField<scalar, volMesh> tc =
+            chemistry.tc()().dimensionedInternalField();
+
+        // Chalmers PaSR model
+        kappa = (runTime.deltaT() + tc)/(runTime.deltaT() + tc + tk);
+    }
+    else
+    {
+        kappa = 1.0;
+    }
+}
diff --git a/applications/solvers/lagrangian/coalChemistryFoam/coalChemistryFoam.C b/applications/solvers/lagrangian/coalChemistryFoam/coalChemistryFoam.C
new file mode 100644
index 0000000000000000000000000000000000000000..0791c2e3583ccfc940772b2fc0f78bec15be0aca
--- /dev/null
+++ b/applications/solvers/lagrangian/coalChemistryFoam/coalChemistryFoam.C
@@ -0,0 +1,130 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Application
+    coalChemistryFoam
+
+Description
+    Transient solver for compressible, turbulent flow with coal and
+    limestone parcel injections, and combustion.
+
+\*---------------------------------------------------------------------------*/
+
+#include "fvCFD.H"
+#include "hCombustionThermo.H"
+#include "turbulenceModel.H"
+#include "basicThermoCloud.H"
+#include "CoalCloud.H"
+#include "psiChemistryModel.H"
+#include "chemistrySolver.H"
+#include "thermoPhysicsTypes.H"
+#include "timeActivatedExplicitCellSource.H"
+#include "radiationModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+int main(int argc, char *argv[])
+{
+    #include "setRootCase.H"
+
+    #include "createTime.H"
+    #include "createMesh.H"
+    #include "readChemistryProperties.H"
+    #include "readEnvironmentalProperties.H"
+    #include "createFields.H"
+    #include "createClouds.H"
+    #include "createRadiationModel.H"
+    #include "initContinuityErrs.H"
+    #include "readTimeControls.H"
+    #include "compressibleCourantNo.H"
+    #include "setInitialDeltaT.H"
+
+    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+    Info<< "\nStarting time loop\n" << endl;
+
+    while (runTime.run())
+    {
+        #include "readTimeControls.H"
+        #include "readPISOControls.H"
+        #include "compressibleCourantNo.H"
+        #include "setDeltaT.H"
+
+        runTime++;
+
+        Info<< "Time = " << runTime.timeName() << nl << endl;
+
+        rhoEffLagrangian = coalParcels.rhoEff() + limestoneParcels.rhoEff();
+        pDyn = 0.5*rho*magSqr(U);
+
+        coalParcels.evolve();
+
+        coalParcels.info();
+
+        Info<< endl;
+
+        limestoneParcels.evolve();
+
+        limestoneParcels.info();
+
+        Info<< endl;
+
+        #include "chemistry.H"
+        #include "rhoEqn.H"
+
+        // --- PIMPLE loop
+        for (int ocorr=1; ocorr<=nOuterCorr; ocorr++)
+        {
+            #include "UEqn.H"
+            #include "YEqn.H"
+            #include "hEqn.H"
+
+            // --- PISO loop
+            for (int corr=1; corr<=nCorr; corr++)
+            {
+                #include "pEqn.H"
+            }
+
+            Info<< "T gas min/max   = " << min(T).value() << ", "
+                << max(T).value() << endl;
+        }
+
+        turbulence->correct();
+
+        rho = thermo.rho();
+
+        runTime.write();
+
+        Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s"
+            << "  ClockTime = " << runTime.elapsedClockTime() << " s"
+            << nl << endl;
+    }
+
+    Info<< "End\n" << endl;
+
+    return(0);
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/lagrangian/coalChemistryFoam/createClouds.H b/applications/solvers/lagrangian/coalChemistryFoam/createClouds.H
new file mode 100644
index 0000000000000000000000000000000000000000..0a5fd91b756b58ec1b2bbadae9b72751a1ce2813
--- /dev/null
+++ b/applications/solvers/lagrangian/coalChemistryFoam/createClouds.H
@@ -0,0 +1,19 @@
+Info<< "\nConstructing coal cloud" << endl;
+CoalCloud<gasThermoPhysics> coalParcels
+(
+    "coalCloud1",
+    rho,
+    U,
+    g,
+    thermo
+);
+
+Info<< "\nConstructing limestone cloud" << endl;
+basicThermoCloud limestoneParcels
+(
+    "limestoneCloud1",
+    rho,
+    U,
+    g,
+    thermo
+);
diff --git a/applications/solvers/lagrangian/coalChemistryFoam/createFields.H b/applications/solvers/lagrangian/coalChemistryFoam/createFields.H
new file mode 100644
index 0000000000000000000000000000000000000000..bba39fe8627d330b08eab8f586835fbe37449e39
--- /dev/null
+++ b/applications/solvers/lagrangian/coalChemistryFoam/createFields.H
@@ -0,0 +1,128 @@
+    Info<< "Reading thermophysical properties\n" << endl;
+
+    autoPtr<psiChemistryModel> pChemistry
+    (
+        psiChemistryModel::New(mesh)
+    );
+    psiChemistryModel& chemistry = pChemistry();
+
+    hCombustionThermo& thermo = chemistry.thermo();
+
+    basicMultiComponentMixture& composition = thermo.composition();
+    PtrList<volScalarField>& Y = composition.Y();
+
+    word inertSpecie(thermo.lookup("inertSpecie"));
+
+    volScalarField& p = thermo.p();
+    volScalarField& h = thermo.h();
+    const volScalarField& T = thermo.T();
+    const volScalarField& psi = thermo.psi();
+
+    multivariateSurfaceInterpolationScheme<scalar>::fieldTable fields;
+
+    forAll (Y, i)
+    {
+        fields.add(Y[i]);
+    }
+    fields.add(h);
+
+    volScalarField rho
+    (
+        IOobject
+        (
+            "rho",
+            runTime.timeName(),
+            mesh,
+            IOobject::NO_READ,
+            IOobject::AUTO_WRITE
+        ),
+        thermo.rho()
+    );
+
+    // lagrangian effective density field - used externally (optional)
+    volScalarField rhoEffLagrangian
+    (
+        IOobject
+        (
+            "rhoEffLagrangian",
+            runTime.timeName(),
+            mesh,
+            IOobject::NO_READ,
+            IOobject::AUTO_WRITE
+        ),
+        mesh,
+        dimensionedScalar("zero", dimDensity, 0.0)
+    );
+
+    // dynamic pressure field - used externally (optional)
+    volScalarField pDyn
+    (
+        IOobject
+        (
+            "pDyn",
+            runTime.timeName(),
+            mesh,
+            IOobject::NO_READ,
+            IOobject::AUTO_WRITE
+        ),
+        mesh,
+        dimensionedScalar("zero", dimPressure, 0.0)
+    );
+
+
+    Info<< "\nReading field U\n" << endl;
+    volVectorField U
+    (
+        IOobject
+        (
+            "U",
+            runTime.timeName(),
+            mesh,
+            IOobject::MUST_READ,
+            IOobject::AUTO_WRITE
+        ),
+        mesh
+    );
+
+    #include "compressibleCreatePhi.H"
+
+    DimensionedField<scalar, volMesh> kappa
+    (
+        IOobject
+        (
+            "kappa",
+            runTime.timeName(),
+            mesh,
+            IOobject::NO_READ,
+            IOobject::AUTO_WRITE
+        ),
+        mesh,
+        dimensionedScalar("zero", dimless, 0.0)
+    );
+
+    Info<< "Creating turbulence model\n" << endl;
+    autoPtr<compressible::turbulenceModel> turbulence
+    (
+        compressible::turbulenceModel::New
+        (
+            rho,
+            U,
+            phi,
+            thermo
+        )
+    );
+
+    Info<< "Creating field DpDt\n" << endl;
+    volScalarField DpDt
+    (
+        "DpDt",
+        fvc::DDt(surfaceScalarField("phiU", phi/fvc::interpolate(rho)), p)
+    );
+
+    Info<< "\nConstructing explicit enthalpy cell source" << endl;
+    timeActivatedExplicitCellSource enthalpySource
+    (
+        "enthalpySource",
+        mesh,
+        h.dimensions()*phi.dimensions()/mesh.V().dimensions()
+    );
diff --git a/applications/solvers/lagrangian/coalChemistryFoam/hEqn.H b/applications/solvers/lagrangian/coalChemistryFoam/hEqn.H
new file mode 100644
index 0000000000000000000000000000000000000000..2eaf6315cfb9fabe9f4f2ae6e1149fbd111c9739
--- /dev/null
+++ b/applications/solvers/lagrangian/coalChemistryFoam/hEqn.H
@@ -0,0 +1,22 @@
+{
+    fvScalarMatrix hEqn
+    (
+        fvm::ddt(rho, h)
+      + mvConvection->fvmDiv(phi, h)
+      - fvm::laplacian(turbulence->alphaEff(), h)
+     ==
+        DpDt
+     +  coalParcels.Sh()
+     +  limestoneParcels.Sh()
+     +  enthalpySource.Su()
+     +  radiation->Sh(thermo)
+    );
+
+    hEqn.relax();
+
+    hEqn.solve();
+
+    thermo.correct();
+
+    radiation->correct();
+}
diff --git a/applications/solvers/lagrangian/coalChemistryFoam/pEqn.H b/applications/solvers/lagrangian/coalChemistryFoam/pEqn.H
new file mode 100644
index 0000000000000000000000000000000000000000..b31ad45ed4529b30d6d0dbc6c32c1b1e7f5ca6f0
--- /dev/null
+++ b/applications/solvers/lagrangian/coalChemistryFoam/pEqn.H
@@ -0,0 +1,72 @@
+rho = thermo.rho();
+
+volScalarField rUA = 1.0/UEqn.A();
+U = rUA*UEqn.H();
+
+if (transonic)
+{
+    surfaceScalarField phid
+    (
+        "phid",
+        fvc::interpolate(psi)
+       *(
+            (fvc::interpolate(U) & mesh.Sf())
+          + fvc::ddtPhiCorr(rUA, rho, U, phi)
+        )
+    );
+
+    for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
+    {
+        fvScalarMatrix pEqn
+        (
+            fvm::ddt(psi, p)
+          + fvm::div(phid, p)
+          - fvm::laplacian(rho*rUA, p)
+         ==
+            coalParcels.Srho()
+        );
+
+        pEqn.solve();
+
+        if (nonOrth == nNonOrthCorr)
+        {
+            phi == pEqn.flux();
+        }
+    }
+}
+else
+{
+    phi =
+        fvc::interpolate(rho)*
+        (
+            (fvc::interpolate(U) & mesh.Sf())
+          + fvc::ddtPhiCorr(rUA, rho, U, phi)
+        );
+
+    for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
+    {
+        fvScalarMatrix pEqn
+        (
+            fvm::ddt(psi, p)
+          + fvc::div(phi)
+          - fvm::laplacian(rho*rUA, p)
+         ==
+            coalParcels.Srho()
+        );
+
+        pEqn.solve();
+
+        if (nonOrth == nNonOrthCorr)
+        {
+            phi += pEqn.flux();
+        }
+    }
+}
+
+#include "rhoEqn.H"
+#include "compressibleContinuityErrs.H"
+
+U -= rUA*fvc::grad(p);
+U.correctBoundaryConditions();
+
+DpDt = fvc::DDt(surfaceScalarField("phiU", phi/fvc::interpolate(rho)), p);
diff --git a/applications/solvers/lagrangian/coalChemistryFoam/readChemistryProperties.H b/applications/solvers/lagrangian/coalChemistryFoam/readChemistryProperties.H
new file mode 100644
index 0000000000000000000000000000000000000000..ab51afe28361cdf65bc74af68961a6732535d6b3
--- /dev/null
+++ b/applications/solvers/lagrangian/coalChemistryFoam/readChemistryProperties.H
@@ -0,0 +1,23 @@
+Info<< "Reading chemistry properties\n" << endl;
+
+IOdictionary chemistryProperties
+(
+    IOobject
+    (
+        "chemistryProperties",
+        runTime.constant(),
+        mesh,
+        IOobject::MUST_READ,
+        IOobject::NO_WRITE,
+        false
+    )
+);
+
+Switch turbulentReaction(chemistryProperties.lookup("turbulentReaction"));
+
+dimensionedScalar Cmix("Cmix", dimless, 1.0);
+
+if (turbulentReaction)
+{
+    chemistryProperties.lookup("Cmix") >> Cmix;
+}
diff --git a/src/finiteVolume/fvMesh/extendedStencil/extendedStencilMeshObjects/upwindCFCStencilObject.C b/applications/solvers/lagrangian/coalChemistryFoam/rhoEqn.H
similarity index 83%
rename from src/finiteVolume/fvMesh/extendedStencil/extendedStencilMeshObjects/upwindCFCStencilObject.C
rename to applications/solvers/lagrangian/coalChemistryFoam/rhoEqn.H
index 81292b002ece8bb5f58d8bf69642305f4152a30a..ce337f5acf76fdf2f21080c15ce27973d4fc93cf 100644
--- a/src/finiteVolume/fvMesh/extendedStencil/extendedStencilMeshObjects/upwindCFCStencilObject.C
+++ b/applications/solvers/lagrangian/coalChemistryFoam/rhoEqn.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2007 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -22,17 +22,22 @@ License
     along with OpenFOAM; if not, write to the Free Software Foundation,
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
-\*---------------------------------------------------------------------------*/
-
-#include "upwindCFCStencilObject.H"
+Global
+    rhoEqn
 
+Description
+    Solve the continuity for density.
 
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+\*---------------------------------------------------------------------------*/
 
-namespace Foam
 {
-    defineTypeNameAndDebug(upwindCFCStencilObject, 0);
+    solve
+    (
+        fvm::ddt(rho)
+      + fvc::div(phi)
+      ==
+        coalParcels.Srho()
+    );
 }
 
-
 // ************************************************************************* //
diff --git a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/Make/files b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/Make/files
new file mode 100644
index 0000000000000000000000000000000000000000..dfee7d7d19ff7f3015c4ea903a462dec1200e73a
--- /dev/null
+++ b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/Make/files
@@ -0,0 +1,3 @@
+porousExplicitSourceReactingParcelFoam.C
+
+EXE = $(FOAM_APPBIN)/porousExplicitSourceReactingParcelFoam
diff --git a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/Make/options b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/Make/options
new file mode 100644
index 0000000000000000000000000000000000000000..76bc8b084f460664af2e459e21f691c45be205e4
--- /dev/null
+++ b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/Make/options
@@ -0,0 +1,38 @@
+EXE_INC = \
+    -I$(LIB_SRC)/finiteVolume/lnInclude \
+    -I${LIB_SRC}/meshTools/lnInclude \
+    -I$(LIB_SRC)/turbulenceModels/compressible/turbulenceModel \
+    -I$(LIB_SRC)/lagrangian/basic/lnInclude \
+    -I$(LIB_SRC)/lagrangian/intermediate/lnInclude \
+    -I$(LIB_SRC)/lagrangian/coalCombustion/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/pdfs/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/liquids/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/liquidMixture/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/solids/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/solidMixture/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/thermophysicalFunctions/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/chemistryModel/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/radiation/lnInclude \
+    -I$(LIB_SRC)/ODE/lnInclude
+
+EXE_LIBS = \
+    -lfiniteVolume \
+    -lmeshTools \
+    -lcompressibleRASModels \
+    -lcompressibleLESModels \
+    -llagrangian \
+    -llagrangianIntermediate \
+    -lspecie \
+    -lbasicThermophysicalModels \
+    -lliquids \
+    -lliquidMixture \
+    -lsolids \
+    -lsolidMixture \
+    -lthermophysicalFunctions \
+    -lreactionThermophysicalModels \
+    -lchemistryModel \
+    -lradiation \
+    -lODE
diff --git a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/UEqn.H b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/UEqn.H
new file mode 100644
index 0000000000000000000000000000000000000000..b408709aed902619ce7a316b11d0049a1f0e9948
--- /dev/null
+++ b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/UEqn.H
@@ -0,0 +1,18 @@
+    fvVectorMatrix UEqn
+    (
+//        fvm::ddt(rho, U)
+        pZones.ddt(rho, U)
+      + fvm::div(phi, U)
+      + turbulence->divDevRhoReff(U)
+     ==
+        rho.dimensionedInternalField()*g
+      + parcels.SU()
+    );
+
+    pZones.addResistance(UEqn);
+
+    if (momentumPredictor)
+    {
+        solve(UEqn == -fvc::grad(p));
+    }
+
diff --git a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/YEqn.H b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/YEqn.H
new file mode 100644
index 0000000000000000000000000000000000000000..e802fdfe0d85929101f5e6723080b6666dfa2fb4
--- /dev/null
+++ b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/YEqn.H
@@ -0,0 +1,46 @@
+
+tmp<fv::convectionScheme<scalar> > mvConvection
+(
+    fv::convectionScheme<scalar>::New
+    (
+        mesh,
+        fields,
+        phi,
+        mesh.divScheme("div(phi,Yi_h)")
+    )
+);
+
+
+{
+    label inertIndex = -1;
+    volScalarField Yt = 0.0*Y[0];
+
+    for (label i=0; i<Y.size(); i++)
+    {
+        if (Y[i].name() != inertSpecie)
+        {
+            volScalarField& Yi = Y[i];
+            solve
+            (
+                fvm::ddt(rho, Yi)
+              + mvConvection->fvmDiv(phi, Yi)
+              - fvm::laplacian(turbulence->muEff(), Yi)
+              ==
+                parcels.Srho(i)
+              + kappa*chemistry.RR(i)().dimensionedInternalField()
+              + pointMassSources.Su(i),
+                mesh.solver("Yi")
+            );
+
+            Yi.max(0.0);
+            Yt += Yi;
+        }
+        else
+        {
+            inertIndex = i;
+        }
+    }
+
+    Y[inertIndex] = scalar(1) - Yt;
+    Y[inertIndex].max(0.0);
+}
diff --git a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/chemistry.H b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/chemistry.H
new file mode 100644
index 0000000000000000000000000000000000000000..07b1e9953b0db867186f6c668d27a9415a26c265
--- /dev/null
+++ b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/chemistry.H
@@ -0,0 +1,25 @@
+{
+    Info << "Solving chemistry" << endl;
+
+    chemistry.solve
+    (
+        runTime.value() - runTime.deltaT().value(),
+        runTime.deltaT().value()
+    );
+
+    // turbulent time scale
+    if (turbulentReaction)
+    {
+        DimensionedField<scalar, volMesh> tk =
+            Cmix*sqrt(turbulence->muEff()/rho/turbulence->epsilon());
+        DimensionedField<scalar, volMesh> tc =
+            chemistry.tc()().dimensionedInternalField();
+
+        // Chalmers PaSR model
+        kappa = (runTime.deltaT() + tc)/(runTime.deltaT() + tc + tk);
+    }
+    else
+    {
+        kappa = 1.0;
+    }
+}
diff --git a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/createClouds.H b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/createClouds.H
new file mode 100644
index 0000000000000000000000000000000000000000..728e605e572d043b2b0158ebe8a57f5741e3fe09
--- /dev/null
+++ b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/createClouds.H
@@ -0,0 +1,9 @@
+Info<< "\nConstructing reacting cloud" << endl;
+BasicReactingCloud<icoPoly8ThermoPhysics> parcels
+(
+    "reactingCloud1",
+    rho,
+    U,
+    g,
+    thermo
+);
diff --git a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/createFields.H b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/createFields.H
new file mode 100644
index 0000000000000000000000000000000000000000..a3054db0f5853192df84abadd77f6a3e3fed6687
--- /dev/null
+++ b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/createFields.H
@@ -0,0 +1,83 @@
+    Info<< "Reading thermophysical properties\n" << endl;
+
+    autoPtr<rhoChemistryModel> pChemistry
+    (
+        rhoChemistryModel::New(mesh)
+    );
+    rhoChemistryModel& chemistry = pChemistry();
+
+    hReactionThermo& thermo = chemistry.thermo();
+
+    basicMultiComponentMixture& composition = thermo.composition();
+    PtrList<volScalarField>& Y = composition.Y();
+
+    word inertSpecie(thermo.lookup("inertSpecie"));
+
+    volScalarField& p = thermo.p();
+    volScalarField& h = thermo.h();
+    const volScalarField& T = thermo.T();
+    const volScalarField& psi = thermo.psi();
+
+    volScalarField rho
+    (
+        IOobject
+        (
+            "rho",
+            runTime.timeName(),
+            mesh,
+            IOobject::NO_READ,
+            IOobject::AUTO_WRITE
+        ),
+        thermo.rho()
+    );
+
+    Info<< "\nReading field U\n" << endl;
+    volVectorField U
+    (
+        IOobject
+        (
+            "U",
+            runTime.timeName(),
+            mesh,
+            IOobject::MUST_READ,
+            IOobject::AUTO_WRITE
+        ),
+        mesh
+    );
+
+    #include "compressibleCreatePhi.H"
+
+    DimensionedField<scalar, volMesh> kappa
+    (
+        IOobject
+        (
+            "kappa",
+            runTime.timeName(),
+            mesh,
+            IOobject::NO_READ,
+            IOobject::AUTO_WRITE
+        ),
+        mesh,
+        dimensionedScalar("zero", dimless, 0.0)
+    );
+
+    Info<< "Creating turbulence model\n" << endl;
+    autoPtr<compressible::turbulenceModel> turbulence
+    (
+        compressible::turbulenceModel::New
+        (
+            rho,
+            U,
+            phi,
+            thermo
+        )
+    );
+
+    Info<< "Creating multi-variate interpolation scheme\n" << endl;
+    multivariateSurfaceInterpolationScheme<scalar>::fieldTable fields;
+
+    forAll (Y, i)
+    {
+        fields.add(Y[i]);
+    }
+    fields.add(h);
diff --git a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/createMulticomponentPointSources.H b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/createMulticomponentPointSources.H
new file mode 100644
index 0000000000000000000000000000000000000000..52de65dc5050296f6aca81542b733afe5252e704
--- /dev/null
+++ b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/createMulticomponentPointSources.H
@@ -0,0 +1,8 @@
+Info<< "\nConstructing multi-component mass flow rate point sources" << endl;
+timeActivatedExplicitMulticomponentPointSource pointMassSources
+(
+    "pointMassSources",
+    mesh,
+    Y,
+    dimMass/dimVolume/dimTime
+);
diff --git a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/createPorousZones.H b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/createPorousZones.H
new file mode 100644
index 0000000000000000000000000000000000000000..90506856d2a072cad5ee3b4be584ee0aa42fda81
--- /dev/null
+++ b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/createPorousZones.H
@@ -0,0 +1,3 @@
+    Info<< "Creating porous zones" << nl << endl;
+
+    porousZones pZones(mesh);
diff --git a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/hEqn.H b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/hEqn.H
new file mode 100644
index 0000000000000000000000000000000000000000..6e6b0c763ae85dbde75e0745e8c27b2899598fe3
--- /dev/null
+++ b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/hEqn.H
@@ -0,0 +1,51 @@
+{
+    tmp<volScalarField> pWork
+    (
+        new volScalarField
+        (
+            IOobject
+            (
+                "pWork",
+                runTime.timeName(),
+                mesh,
+                IOobject::NO_READ,
+                IOobject::NO_WRITE
+            ),
+            mesh,
+            dimensionedScalar("zero", dimensionSet(1, -1, -3, 0, 0), 0.0)
+        )
+    );
+
+    if (dpdt)
+    {
+        pWork() += fvc::ddt(p);
+    }
+    if (eWork)
+    {
+        pWork() = -p*fvc::div(phi/fvc::interpolate(rho));
+    }
+    if (hWork)
+    {
+        pWork() += fvc::div(phi/fvc::interpolate(rho)*fvc::interpolate(p));
+    }
+
+    {
+        solve
+        (
+            fvm::ddt(rho, h)
+          + mvConvection->fvmDiv(phi, h)
+          - fvm::laplacian(turbulence->alphaEff(), h)
+         ==
+            pWork()
+          + parcels.Sh()
+          + radiation->Sh(thermo)
+        );
+
+        thermo.correct();
+
+        radiation->correct();
+
+        Info<< "T gas min/max   = " << min(T).value() << ", "
+            << max(T).value() << endl;
+    }
+}
diff --git a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/pEqn.H b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/pEqn.H
new file mode 100644
index 0000000000000000000000000000000000000000..32657588b0f594133d47d0b886a88be1a21907ac
--- /dev/null
+++ b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/pEqn.H
@@ -0,0 +1,61 @@
+{
+    rho = thermo.rho();
+
+    // Thermodynamic density needs to be updated by psi*d(p) after the
+    // pressure solution - done in 2 parts. Part 1:
+    thermo.rho() -= psi*p;
+
+    volScalarField rAU = 1.0/UEqn.A();
+    U = rAU*UEqn.H();
+
+    if (pZones.size() > 0)
+    {
+        // ddtPhiCorr not well defined for cases with porosity
+        phi = fvc::interpolate(rho)*(fvc::interpolate(U) & mesh.Sf());
+    }
+    else
+    {
+        phi =
+            fvc::interpolate(rho)
+           *(
+                (fvc::interpolate(U) & mesh.Sf())
+              + fvc::ddtPhiCorr(rAU, rho, U, phi)
+            );
+    }
+
+    for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
+    {
+        fvScalarMatrix pEqn
+        (
+            fvc::ddt(rho) + psi*correction(fvm::ddt(p))
+          + fvc::div(phi)
+          - fvm::laplacian(rho*rAU, p)
+        ==
+            parcels.Srho()
+          + pointMassSources.Su()
+        );
+
+        if (corr == nCorr-1 && nonOrth == nNonOrthCorr)
+        {
+            pEqn.solve(mesh.solver("pFinal"));
+        }
+        else
+        {
+            pEqn.solve();
+        }
+
+        if (nonOrth == nNonOrthCorr)
+        {
+            phi += pEqn.flux();
+        }
+    }
+
+    // Second part of thermodynamic density update
+    thermo.rho() += psi*p;
+
+    #include "rhoEqn.H"
+    #include "compressibleContinuityErrs.H"
+
+    U -= rAU*fvc::grad(p);
+    U.correctBoundaryConditions();
+}
diff --git a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/porousExplicitSourceReactingParcelFoam.C b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/porousExplicitSourceReactingParcelFoam.C
new file mode 100644
index 0000000000000000000000000000000000000000..760627de80fc83d1785dc29ab3956688679c57eb
--- /dev/null
+++ b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/porousExplicitSourceReactingParcelFoam.C
@@ -0,0 +1,120 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Application
+    porousExplicitSourceReactingParcelFoam
+
+Description
+    - reacting parcel cloud
+    - porous media
+    - point mass sources
+    - polynomial based, incompressible thermodynamics (f(T))
+
+    Note: ddtPhiCorr not used here when porous zones are active
+    - not well defined for porous calcs
+
+\*---------------------------------------------------------------------------*/
+
+#include "fvCFD.H"
+#include "hReactionThermo.H"
+#include "turbulenceModel.H"
+#include "BasicReactingCloud.H"
+#include "rhoChemistryModel.H"
+#include "chemistrySolver.H"
+#include "thermoPhysicsTypes.H"
+#include "radiationModel.H"
+#include "porousZones.H"
+#include "timeActivatedExplicitMulticomponentPointSource.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+int main(int argc, char *argv[])
+{
+    #include "setRootCase.H"
+
+    #include "createTime.H"
+    #include "createMesh.H"
+    #include "readChemistryProperties.H"
+    #include "readEnvironmentalProperties.H"
+    #include "createFields.H"
+    #include "createRadiationModel.H"
+    #include "createClouds.H"
+    #include "createMulticomponentPointSources.H"
+    #include "createPorousZones.H"
+    #include "initContinuityErrs.H"
+    #include "readTimeControls.H"
+    #include "compressibleCourantNo.H"
+    #include "setInitialDeltaT.H"
+
+    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+    Info<< "\nStarting time loop\n" << endl;
+
+    while (runTime.run())
+    {
+        #include "readTimeControls.H"
+        #include "readPISOControls.H"
+        #include "readAdditionalSolutionControls.H"
+        #include "compressibleCourantNo.H"
+        #include "setDeltaT.H"
+
+        runTime++;
+
+        Info<< "Time = " << runTime.timeName() << nl << endl;
+
+        parcels.evolve();
+
+        parcels.info();
+
+        #include "chemistry.H"
+        #include "rhoEqn.H"
+        #include "UEqn.H"
+        #include "YEqn.H"
+        #include "hEqn.H"
+
+        // --- PISO loop
+        for (int corr=0; corr<nCorr; corr++)
+        {
+            #include "pEqn.H"
+        }
+
+
+        turbulence->correct();
+
+        rho = thermo.rho();
+
+        runTime.write();
+
+        Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s"
+            << "  ClockTime = " << runTime.elapsedClockTime() << " s"
+            << nl << endl;
+    }
+
+    Info<< "End\n" << endl;
+
+    return(0);
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/readAdditionalSolutionControls.H b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/readAdditionalSolutionControls.H
new file mode 100644
index 0000000000000000000000000000000000000000..8159205caee0a202b8fc1be04130bf4a0b4d5c46
--- /dev/null
+++ b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/readAdditionalSolutionControls.H
@@ -0,0 +1,20 @@
+dictionary additional = mesh.solutionDict().subDict("additional");
+
+bool dpdt = true;
+if (additional.found("dpdt"))
+{
+    additional.lookup("dpdt") >> dpdt;
+}
+
+bool eWork = true;
+if (additional.found("eWork"))
+{
+    additional.lookup("eWork") >> eWork;
+}
+
+bool hWork = true;
+if (additional.found("hWork"))
+{
+    additional.lookup("hWork") >> hWork;
+}
+
diff --git a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/readChemistryProperties.H b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/readChemistryProperties.H
new file mode 100644
index 0000000000000000000000000000000000000000..ab51afe28361cdf65bc74af68961a6732535d6b3
--- /dev/null
+++ b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/readChemistryProperties.H
@@ -0,0 +1,23 @@
+Info<< "Reading chemistry properties\n" << endl;
+
+IOdictionary chemistryProperties
+(
+    IOobject
+    (
+        "chemistryProperties",
+        runTime.constant(),
+        mesh,
+        IOobject::MUST_READ,
+        IOobject::NO_WRITE,
+        false
+    )
+);
+
+Switch turbulentReaction(chemistryProperties.lookup("turbulentReaction"));
+
+dimensionedScalar Cmix("Cmix", dimless, 1.0);
+
+if (turbulentReaction)
+{
+    chemistryProperties.lookup("Cmix") >> Cmix;
+}
diff --git a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/rhoEqn.H b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/rhoEqn.H
new file mode 100644
index 0000000000000000000000000000000000000000..5bc5e120a01dee5c2ac7434c3700503b66fe4e8e
--- /dev/null
+++ b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/rhoEqn.H
@@ -0,0 +1,48 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Global
+    rhoEqn
+
+Description
+    Solve the continuity for density.
+
+\*---------------------------------------------------------------------------*/
+
+{
+    fvScalarMatrix rhoEqn
+    (
+        fvm::ddt(rho)
+      + fvc::div(phi)
+      ==
+        parcels.Srho()
+      + pointMassSources.Su()
+    );
+
+    rhoEqn.relax();
+
+    rhoEqn.solve();
+}
+
+// ************************************************************************* //
diff --git a/applications/solvers/lagrangian/reactingParcelFoam/Make/files b/applications/solvers/lagrangian/reactingParcelFoam/Make/files
new file mode 100644
index 0000000000000000000000000000000000000000..3710ca4e2df104e37cd2c720455d658fd102d2d0
--- /dev/null
+++ b/applications/solvers/lagrangian/reactingParcelFoam/Make/files
@@ -0,0 +1,3 @@
+reactingParcelFoam.C
+
+EXE = $(FOAM_APPBIN)/reactingParcelFoam
diff --git a/applications/solvers/lagrangian/reactingParcelFoam/Make/options b/applications/solvers/lagrangian/reactingParcelFoam/Make/options
new file mode 100644
index 0000000000000000000000000000000000000000..d10253a8fa3615ecf3f0d435390af869fb16a743
--- /dev/null
+++ b/applications/solvers/lagrangian/reactingParcelFoam/Make/options
@@ -0,0 +1,37 @@
+EXE_INC = \
+    -I$(LIB_SRC)/finiteVolume/lnInclude \
+    -I${LIB_SRC}/meshTools/lnInclude \
+    -I$(LIB_SRC)/turbulenceModels/compressible/turbulenceModel \
+    -I$(LIB_SRC)/lagrangian/basic/lnInclude \
+    -I$(LIB_SRC)/lagrangian/intermediate/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/pdfs/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/liquids/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/liquidMixture/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/solids/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/solidMixture/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/thermophysicalFunctions/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/chemistryModel/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/radiation/lnInclude \
+    -I$(LIB_SRC)/ODE/lnInclude
+
+EXE_LIBS = \
+    -lfiniteVolume \
+    -lmeshTools \
+    -lcompressibleRASModels \
+    -lcompressibleLESModels \
+    -llagrangian \
+    -llagrangianIntermediate \
+    -lspecie \
+    -lbasicThermophysicalModels \
+    -lliquids \
+    -lliquidMixture \
+    -lsolids \
+    -lsolidMixture \
+    -lthermophysicalFunctions \
+    -lreactionThermophysicalModels \
+    -lchemistryModel \
+    -lradiation \
+    -lODE
diff --git a/applications/solvers/lagrangian/reactingParcelFoam/UEqn.H b/applications/solvers/lagrangian/reactingParcelFoam/UEqn.H
new file mode 100644
index 0000000000000000000000000000000000000000..3c4a927091a474e5b8d0d4e50b2794a26202cc8a
--- /dev/null
+++ b/applications/solvers/lagrangian/reactingParcelFoam/UEqn.H
@@ -0,0 +1,16 @@
+    fvVectorMatrix UEqn
+    (
+        fvm::ddt(rho, U)
+      + fvm::div(phi, U)
+      + turbulence->divDevRhoReff(U)
+     ==
+        rho.dimensionedInternalField()*g
+      + parcels.SU()
+    );
+
+    UEqn.relax();
+
+    if (momentumPredictor)
+    {
+        solve(UEqn == -fvc::grad(p));
+    }
diff --git a/applications/solvers/lagrangian/reactingParcelFoam/YEqn.H b/applications/solvers/lagrangian/reactingParcelFoam/YEqn.H
new file mode 100644
index 0000000000000000000000000000000000000000..5cf44cb09fef5500b0813c099abc57c433cee9cc
--- /dev/null
+++ b/applications/solvers/lagrangian/reactingParcelFoam/YEqn.H
@@ -0,0 +1,44 @@
+tmp<fv::convectionScheme<scalar> > mvConvection
+(
+    fv::convectionScheme<scalar>::New
+    (
+        mesh,
+        fields,
+        phi,
+        mesh.divScheme("div(phi,Yi_h)")
+    )
+);
+
+
+{
+    label inertIndex = -1;
+    volScalarField Yt = 0.0*Y[0];
+
+    for (label i=0; i<Y.size(); i++)
+    {
+        if (Y[i].name() != inertSpecie)
+        {
+            volScalarField& Yi = Y[i];
+            solve
+            (
+                fvm::ddt(rho, Yi)
+              + mvConvection->fvmDiv(phi, Yi)
+              - fvm::laplacian(turbulence->muEff(), Yi)
+              ==
+                parcels.Srho(i)
+              + kappa*chemistry.RR(i)().dimensionedInternalField(),
+                mesh.solver("Yi")
+            );
+
+            Yi.max(0.0);
+            Yt += Yi;
+        }
+        else
+        {
+            inertIndex = i;
+        }
+    }
+
+    Y[inertIndex] = scalar(1) - Yt;
+    Y[inertIndex].max(0.0);
+}
diff --git a/applications/solvers/lagrangian/reactingParcelFoam/chemistry.H b/applications/solvers/lagrangian/reactingParcelFoam/chemistry.H
new file mode 100644
index 0000000000000000000000000000000000000000..07b1e9953b0db867186f6c668d27a9415a26c265
--- /dev/null
+++ b/applications/solvers/lagrangian/reactingParcelFoam/chemistry.H
@@ -0,0 +1,25 @@
+{
+    Info << "Solving chemistry" << endl;
+
+    chemistry.solve
+    (
+        runTime.value() - runTime.deltaT().value(),
+        runTime.deltaT().value()
+    );
+
+    // turbulent time scale
+    if (turbulentReaction)
+    {
+        DimensionedField<scalar, volMesh> tk =
+            Cmix*sqrt(turbulence->muEff()/rho/turbulence->epsilon());
+        DimensionedField<scalar, volMesh> tc =
+            chemistry.tc()().dimensionedInternalField();
+
+        // Chalmers PaSR model
+        kappa = (runTime.deltaT() + tc)/(runTime.deltaT() + tc + tk);
+    }
+    else
+    {
+        kappa = 1.0;
+    }
+}
diff --git a/applications/solvers/lagrangian/reactingParcelFoam/createClouds.H b/applications/solvers/lagrangian/reactingParcelFoam/createClouds.H
new file mode 100644
index 0000000000000000000000000000000000000000..4ae0633ab7bc74f993286571c10f3c52f645e7e4
--- /dev/null
+++ b/applications/solvers/lagrangian/reactingParcelFoam/createClouds.H
@@ -0,0 +1,9 @@
+Info<< "\nConstructing reacting cloud" << endl;
+BasicReactingCloud<gasThermoPhysics> parcels
+(
+    "reactingCloud1",
+    rho,
+    U,
+    g,
+    thermo
+);
diff --git a/applications/solvers/lagrangian/reactingParcelFoam/createFields.H b/applications/solvers/lagrangian/reactingParcelFoam/createFields.H
new file mode 100644
index 0000000000000000000000000000000000000000..ec820fa5e364dcc3a56781d08bf9ac2dc7925ad0
--- /dev/null
+++ b/applications/solvers/lagrangian/reactingParcelFoam/createFields.H
@@ -0,0 +1,89 @@
+    Info<< "Reading thermophysical properties\n" << endl;
+
+    autoPtr<psiChemistryModel> pChemistry
+    (
+        psiChemistryModel::New(mesh)
+    );
+    psiChemistryModel& chemistry = pChemistry();
+
+    hCombustionThermo& thermo = chemistry.thermo();
+
+    basicMultiComponentMixture& composition = thermo.composition();
+    PtrList<volScalarField>& Y = composition.Y();
+
+    word inertSpecie(thermo.lookup("inertSpecie"));
+
+    volScalarField& p = thermo.p();
+    volScalarField& h = thermo.h();
+    const volScalarField& T = thermo.T();
+    const volScalarField& psi = thermo.psi();
+
+    volScalarField rho
+    (
+        IOobject
+        (
+            "rho",
+            runTime.timeName(),
+            mesh,
+            IOobject::NO_READ,
+            IOobject::AUTO_WRITE
+        ),
+        thermo.rho()
+    );
+
+    Info<< "\nReading field U\n" << endl;
+    volVectorField U
+    (
+        IOobject
+        (
+            "U",
+            runTime.timeName(),
+            mesh,
+            IOobject::MUST_READ,
+            IOobject::AUTO_WRITE
+        ),
+        mesh
+    );
+
+    #include "compressibleCreatePhi.H"
+
+    DimensionedField<scalar, volMesh> kappa
+    (
+        IOobject
+        (
+            "kappa",
+            runTime.timeName(),
+            mesh,
+            IOobject::NO_READ,
+            IOobject::AUTO_WRITE
+        ),
+        mesh,
+        dimensionedScalar("zero", dimless, 0.0)
+    );
+
+    Info<< "Creating turbulence model\n" << endl;
+    autoPtr<compressible::turbulenceModel> turbulence
+    (
+        compressible::turbulenceModel::New
+        (
+            rho,
+            U,
+            phi,
+            thermo
+        )
+    );
+
+    Info<< "Creating field DpDt\n" << endl;
+    volScalarField DpDt
+    (
+        "DpDt",
+        fvc::DDt(surfaceScalarField("phiU", phi/fvc::interpolate(rho)), p)
+    );
+
+    multivariateSurfaceInterpolationScheme<scalar>::fieldTable fields;
+
+    forAll (Y, i)
+    {
+        fields.add(Y[i]);
+    }
+    fields.add(h);
diff --git a/applications/solvers/lagrangian/reactingParcelFoam/hEqn.H b/applications/solvers/lagrangian/reactingParcelFoam/hEqn.H
new file mode 100644
index 0000000000000000000000000000000000000000..d686e452f46f053c7b52f7b19872f964d9c054ef
--- /dev/null
+++ b/applications/solvers/lagrangian/reactingParcelFoam/hEqn.H
@@ -0,0 +1,20 @@
+{
+    fvScalarMatrix hEqn
+    (
+        fvm::ddt(rho, h)
+      + mvConvection->fvmDiv(phi, h)
+      - fvm::laplacian(turbulence->alphaEff(), h)
+     ==
+        DpDt
+     +  parcels.Sh()
+     +  radiation->Sh(thermo)
+    );
+
+    hEqn.relax();
+
+    hEqn.solve();
+
+    thermo.correct();
+
+    radiation->correct();
+}
diff --git a/applications/solvers/lagrangian/reactingParcelFoam/pEqn.H b/applications/solvers/lagrangian/reactingParcelFoam/pEqn.H
new file mode 100644
index 0000000000000000000000000000000000000000..d27afcce8ac2464b63b09e05645bcb5de6aa1282
--- /dev/null
+++ b/applications/solvers/lagrangian/reactingParcelFoam/pEqn.H
@@ -0,0 +1,72 @@
+rho = thermo.rho();
+
+volScalarField rUA = 1.0/UEqn.A();
+U = rUA*UEqn.H();
+
+if (transonic)
+{
+    surfaceScalarField phid
+    (
+        "phid",
+        fvc::interpolate(psi)
+       *(
+            (fvc::interpolate(U) & mesh.Sf())
+          + fvc::ddtPhiCorr(rUA, rho, U, phi)
+        )
+    );
+
+    for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
+    {
+        fvScalarMatrix pEqn
+        (
+            fvm::ddt(psi, p)
+          + fvm::div(phid, p)
+          - fvm::laplacian(rho*rUA, p)
+         ==
+            parcels.Srho()
+        );
+
+        pEqn.solve();
+
+        if (nonOrth == nNonOrthCorr)
+        {
+            phi == pEqn.flux();
+        }
+    }
+}
+else
+{
+    phi =
+        fvc::interpolate(rho)
+       *(
+            (fvc::interpolate(U) & mesh.Sf())
+          + fvc::ddtPhiCorr(rUA, rho, U, phi)
+        );
+
+    for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
+    {
+        fvScalarMatrix pEqn
+        (
+            fvm::ddt(psi, p)
+          + fvc::div(phi)
+          - fvm::laplacian(rho*rUA, p)
+         ==
+            parcels.Srho()
+        );
+
+        pEqn.solve();
+
+        if (nonOrth == nNonOrthCorr)
+        {
+            phi += pEqn.flux();
+        }
+    }
+}
+
+#include "rhoEqn.H"
+#include "compressibleContinuityErrs.H"
+
+U -= rUA*fvc::grad(p);
+U.correctBoundaryConditions();
+
+DpDt = fvc::DDt(surfaceScalarField("phiU", phi/fvc::interpolate(rho)), p);
diff --git a/applications/solvers/lagrangian/reactingParcelFoam/reactingParcelFoam.C b/applications/solvers/lagrangian/reactingParcelFoam/reactingParcelFoam.C
new file mode 100644
index 0000000000000000000000000000000000000000..8c26cb652829a95fb6a9e74733c9759798a9d345
--- /dev/null
+++ b/applications/solvers/lagrangian/reactingParcelFoam/reactingParcelFoam.C
@@ -0,0 +1,117 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Application
+    reactingParcelFoam
+
+Description
+    Transient PISO solver for compressible, laminar or turbulent flow with
+    reacting Lagrangian parcels.
+
+\*---------------------------------------------------------------------------*/
+
+#include "fvCFD.H"
+#include "hCombustionThermo.H"
+#include "turbulenceModel.H"
+#include "BasicReactingCloud.H"
+#include "psiChemistryModel.H"
+#include "chemistrySolver.H"
+#include "thermoPhysicsTypes.H"
+#include "radiationModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+int main(int argc, char *argv[])
+{
+    #include "setRootCase.H"
+
+    #include "createTime.H"
+    #include "createMesh.H"
+    #include "readChemistryProperties.H"
+    #include "readEnvironmentalProperties.H"
+    #include "createFields.H"
+    #include "createClouds.H"
+    #include "createRadiationModel.H"
+    #include "initContinuityErrs.H"
+    #include "readTimeControls.H"
+    #include "compressibleCourantNo.H"
+    #include "setInitialDeltaT.H"
+
+    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+    Info<< "\nStarting time loop\n" << endl;
+
+    while (runTime.run())
+    {
+        #include "readTimeControls.H"
+        #include "readPISOControls.H"
+        #include "compressibleCourantNo.H"
+        #include "setDeltaT.H"
+
+        runTime++;
+
+        Info<< "Time = " << runTime.timeName() << nl << endl;
+
+        parcels.evolve();
+
+        parcels.info();
+
+        #include "chemistry.H"
+        #include "rhoEqn.H"
+
+        // --- PIMPLE loop
+        for (int ocorr=1; ocorr<=nOuterCorr; ocorr++)
+        {
+            #include "UEqn.H"
+            #include "YEqn.H"
+
+            // --- PISO loop
+            for (int corr=1; corr<=nCorr; corr++)
+            {
+                #include "hEqn.H"
+                #include "pEqn.H"
+            }
+
+            Info<< "T gas min/max   = " << min(T).value() << ", "
+                << max(T).value() << endl;
+        }
+
+        turbulence->correct();
+
+        rho = thermo.rho();
+
+        runTime.write();
+
+        Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s"
+            << "  ClockTime = " << runTime.elapsedClockTime() << " s"
+            << nl << endl;
+    }
+
+    Info<< "End\n" << endl;
+
+    return(0);
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/lagrangian/reactingParcelFoam/readChemistryProperties.H b/applications/solvers/lagrangian/reactingParcelFoam/readChemistryProperties.H
new file mode 100644
index 0000000000000000000000000000000000000000..ab51afe28361cdf65bc74af68961a6732535d6b3
--- /dev/null
+++ b/applications/solvers/lagrangian/reactingParcelFoam/readChemistryProperties.H
@@ -0,0 +1,23 @@
+Info<< "Reading chemistry properties\n" << endl;
+
+IOdictionary chemistryProperties
+(
+    IOobject
+    (
+        "chemistryProperties",
+        runTime.constant(),
+        mesh,
+        IOobject::MUST_READ,
+        IOobject::NO_WRITE,
+        false
+    )
+);
+
+Switch turbulentReaction(chemistryProperties.lookup("turbulentReaction"));
+
+dimensionedScalar Cmix("Cmix", dimless, 1.0);
+
+if (turbulentReaction)
+{
+    chemistryProperties.lookup("Cmix") >> Cmix;
+}
diff --git a/src/finiteVolume/fvMesh/extendedStencil/extendedStencilMeshObjects/upwindCPCStencilObject.C b/applications/solvers/lagrangian/reactingParcelFoam/rhoEqn.H
similarity index 83%
rename from src/finiteVolume/fvMesh/extendedStencil/extendedStencilMeshObjects/upwindCPCStencilObject.C
rename to applications/solvers/lagrangian/reactingParcelFoam/rhoEqn.H
index 36f0c19b34d715ca71e287ea4b094429524b346d..131c144114eb2b6f04bfd0798ec2facac0516ef0 100644
--- a/src/finiteVolume/fvMesh/extendedStencil/extendedStencilMeshObjects/upwindCPCStencilObject.C
+++ b/applications/solvers/lagrangian/reactingParcelFoam/rhoEqn.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -22,17 +22,22 @@ License
     along with OpenFOAM; if not, write to the Free Software Foundation,
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
-\*---------------------------------------------------------------------------*/
-
-#include "upwindCPCStencilObject.H"
+Global
+    rhoEqn
 
+Description
+    Solve the continuity for density.
 
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+\*---------------------------------------------------------------------------*/
 
-namespace Foam
 {
-    defineTypeNameAndDebug(upwindCPCStencilObject, 0);
+    solve
+    (
+        fvm::ddt(rho)
+      + fvc::div(phi)
+      ==
+        parcels.Srho()
+    );
 }
 
-
 // ************************************************************************* //
diff --git a/applications/solvers/lagrangian/uncoupledKinematicParcelFoam/Make/files b/applications/solvers/lagrangian/uncoupledKinematicParcelFoam/Make/files
new file mode 100644
index 0000000000000000000000000000000000000000..387367f16917a0b06d8665f690daff7f4e4f93db
--- /dev/null
+++ b/applications/solvers/lagrangian/uncoupledKinematicParcelFoam/Make/files
@@ -0,0 +1,3 @@
+uncoupledKinematicParcelFoam.C
+
+EXE = $(FOAM_APPBIN)/uncoupledKinematicParcelFoam
diff --git a/applications/solvers/Lagrangian/kinematicParcelFoam/Make/options b/applications/solvers/lagrangian/uncoupledKinematicParcelFoam/Make/options
similarity index 80%
rename from applications/solvers/Lagrangian/kinematicParcelFoam/Make/options
rename to applications/solvers/lagrangian/uncoupledKinematicParcelFoam/Make/options
index c9727abd52c16029478cb71f8ab0d1754f17d9a8..83ef9251c59430f44264fc1a6733d120a19135a5 100644
--- a/applications/solvers/Lagrangian/kinematicParcelFoam/Make/options
+++ b/applications/solvers/lagrangian/uncoupledKinematicParcelFoam/Make/options
@@ -3,10 +3,11 @@ EXE_INC = \
     -I$(LIB_SRC)/lagrangian/intermediate/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
-    -I$(LIB_SRC)/thermophysicalModels/combustion/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/radiation/lnInclude \
     -I$(LIB_SRC)/turbulenceModels/compressible/turbulenceModel \
-    -I$(LIB_SRC)/finiteVolume/lnInclude
+    -I$(LIB_SRC)/finiteVolume/lnInclude \
+    -I$(LIB_SRC)/meshTools/lnInclude \
 
 EXE_LIBS = \
     -llagrangian \
diff --git a/applications/solvers/Lagrangian/kinematicParcelFoam/createFields.H b/applications/solvers/lagrangian/uncoupledKinematicParcelFoam/createFields.H
similarity index 86%
rename from applications/solvers/Lagrangian/kinematicParcelFoam/createFields.H
rename to applications/solvers/lagrangian/uncoupledKinematicParcelFoam/createFields.H
index c76a81ca4666d882442b8c8f09663be378a134d0..78b0e8b552f8a9b63fce0a2bf52b545200d944f4 100644
--- a/applications/solvers/Lagrangian/kinematicParcelFoam/createFields.H
+++ b/applications/solvers/lagrangian/uncoupledKinematicParcelFoam/createFields.H
@@ -1,9 +1,10 @@
     Info<< "Reading thermophysical properties\n" << endl;
 
-    autoPtr<basicThermo> thermo
+    autoPtr<basicPsiThermo> pThermo
     (
-        basicThermo::New(mesh)
+        basicPsiThermo::New(mesh)
     );
+    basicPsiThermo& thermo = pThermo();
 
     volScalarField rho
     (
@@ -15,7 +16,7 @@
             IOobject::NO_READ,
             IOobject::AUTO_WRITE
         ),
-        thermo->rho()
+        thermo.rho()
     );
 
     Info<< "\nReading field U\n" << endl;
@@ -42,7 +43,7 @@
             rho,
             U,
             phi,
-            thermo()
+            thermo
         )
     );
 
@@ -55,6 +56,6 @@
         kinematicCloudName,
         rho,
         U,
-        thermo().mu(),
+        thermo.mu(),
         g
     );
diff --git a/applications/solvers/Lagrangian/kinematicParcelFoam/kinematicParcelFoam.C b/applications/solvers/lagrangian/uncoupledKinematicParcelFoam/uncoupledKinematicParcelFoam.C
similarity index 96%
rename from applications/solvers/Lagrangian/kinematicParcelFoam/kinematicParcelFoam.C
rename to applications/solvers/lagrangian/uncoupledKinematicParcelFoam/uncoupledKinematicParcelFoam.C
index 786146219b622aa7a8b7ec6625080ec6f148f22c..2039346411b21b7ac84a633416040c4e1ecc71d0 100644
--- a/applications/solvers/Lagrangian/kinematicParcelFoam/kinematicParcelFoam.C
+++ b/applications/solvers/lagrangian/uncoupledKinematicParcelFoam/uncoupledKinematicParcelFoam.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -32,7 +32,7 @@ Description
 \*---------------------------------------------------------------------------*/
 
 #include "fvCFD.H"
-#include "basicThermo.H"
+#include "basicPsiThermo.H"
 #include "turbulenceModel.H"
 #include "basicKinematicCloud.H"
 
diff --git a/applications/solvers/multiphase/bubbleFoam/bubbleFoam.C b/applications/solvers/multiphase/bubbleFoam/bubbleFoam.C
index 66df8cfb9f260d31d788d24f20819ee5ed208629..af6de6def0bb1d6561b24052aee46724b67a2f54 100644
--- a/applications/solvers/multiphase/bubbleFoam/bubbleFoam.C
+++ b/applications/solvers/multiphase/bubbleFoam/bubbleFoam.C
@@ -26,7 +26,7 @@ Application
     bubbleFoam
 
 Description
-    Solver for a system of 2 incompressible fluid phases with one phase 
+    Solver for a system of 2 incompressible fluid phases with one phase
     dispersed, e.g. gas bubbles in a liquid.
 
 \*---------------------------------------------------------------------------*/
@@ -40,16 +40,15 @@ Description
 
 int main(int argc, char *argv[])
 {
+    #include "setRootCase.H"
 
-#   include "setRootCase.H"
+    #include "createTime.H"
+    #include "createMesh.H"
+    #include "readEnvironmentalProperties.H"
+    #include "createFields.H"
+    #include "initContinuityErrs.H"
 
-#   include "createTime.H"
-#   include "createMesh.H"
-#   include "readEnvironmentalProperties.H"
-#   include "createFields.H"
-#   include "initContinuityErrs.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
     Info<< "\nStarting time loop\n" << endl;
 
@@ -57,30 +56,30 @@ int main(int argc, char *argv[])
     {
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
-#       include "readBubbleFoamControls.H"
-#       include "CourantNo.H"
+        #include "readBubbleFoamControls.H"
+        #include "CourantNo.H"
 
-#       include "alphaEqn.H"
-#       include "liftDragCoeffs.H"
-#       include "UEqns.H"
+        #include "alphaEqn.H"
+        #include "liftDragCoeffs.H"
+        #include "UEqns.H"
 
         // --- PISO loop
 
         for (int corr=0; corr<nCorr; corr++)
         {
-#           include "pEqn.H"
+            #include "pEqn.H"
 
             if (correctAlpha)
             {
-#               include "alphaEqn.H"
+                #include "alphaEqn.H"
             }
         }
 
-#       include "DDtU.H"
+        #include "DDtU.H"
 
-#       include "kEpsilon.H"
+        #include "kEpsilon.H"
 
-#       include "write.H"
+        #include "write.H"
 
         Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s"
             << "  ClockTime = " << runTime.elapsedClockTime() << " s"
diff --git a/applications/solvers/multiphase/bubbleFoam/createFields.H b/applications/solvers/multiphase/bubbleFoam/createFields.H
index 875a4f1be13550588c393b2d52e17a19e3990a4a..9aca6933fc300f754f064f3b2ad95c05168e7fdd 100644
--- a/applications/solvers/multiphase/bubbleFoam/createFields.H
+++ b/applications/solvers/multiphase/bubbleFoam/createFields.H
@@ -141,8 +141,8 @@
         transportProperties.lookup("Ct")
     );
 
-#   include "createPhia.H"
-#   include "createPhib.H"
+    #include "createPhia.H"
+    #include "createPhib.H"
 
     surfaceScalarField phi
     (
@@ -157,7 +157,7 @@
     );
 
 
-#   include "createRASTurbulence.H"
+    #include "createRASTurbulence.H"
 
     Info<< "Calculating field DDtUa and DDtUb\n" << endl;
 
diff --git a/applications/solvers/multiphase/bubbleFoam/kEpsilon.H b/applications/solvers/multiphase/bubbleFoam/kEpsilon.H
index 016d1f4488c43c53bb22e11802bff96667712220..b1c8951b04ab389de71cbdf1a5efbc9193c734fb 100644
--- a/applications/solvers/multiphase/bubbleFoam/kEpsilon.H
+++ b/applications/solvers/multiphase/bubbleFoam/kEpsilon.H
@@ -9,7 +9,7 @@ if(turbulence)
     volScalarField G = 2*nutb*(tgradUb() && dev(symm(tgradUb())));
     tgradUb.clear();
 
-#   include "wallFunctions.H"
+    #include "wallFunctions.H"
 
     // Dissipation equation
     fvScalarMatrix epsEqn
@@ -22,7 +22,7 @@ if(turbulence)
        - fvm::Sp(C2*beta*epsilon/k, epsilon)
     );
 
-#   include "wallDissipation.H"
+    #include "wallDissipation.H"
 
     epsEqn.relax();
     epsEqn.solve();
@@ -48,8 +48,7 @@ if(turbulence)
     //- Re-calculate turbulence viscosity
     nutb = Cmu*sqr(k)/epsilon;
 
-#   include "wallViscosity.H"
-
+    #include "wallViscosity.H"
 }
 
 nuEffa = sqr(Ct)*nutb + nua;
diff --git a/applications/solvers/multiphase/cavitatingFoam/cavitatingFoam.C b/applications/solvers/multiphase/cavitatingFoam/cavitatingFoam.C
index 12a8f4d49991b3e8f280bcef7f3274f05498a921..62aa7a076fbff1fb215ce1cda8f04cfd88119c13 100644
--- a/applications/solvers/multiphase/cavitatingFoam/cavitatingFoam.C
+++ b/applications/solvers/multiphase/cavitatingFoam/cavitatingFoam.C
@@ -41,40 +41,39 @@ Description
 
 int main(int argc, char *argv[])
 {
+    #include "setRootCase.H"
 
-#   include "setRootCase.H"
+    #include "createTime.H"
+    #include "createMesh.H"
+    #include "readThermodynamicProperties.H"
+    #include "readControls.H"
+    #include "createFields.H"
+    #include "initContinuityErrs.H"
+    #include "compressibleCourantNo.H"
+    #include "setInitialDeltaT.H"
 
-#   include "createTime.H"
-#   include "createMesh.H"
-#   include "readThermodynamicProperties.H"
-#   include "readControls.H"
-#   include "createFields.H"
-#   include "initContinuityErrs.H"
-#   include "compressibleCourantNo.H"
-#   include "setInitialDeltaT.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
     Info<< "\nStarting time loop\n" << endl;
 
     while (runTime.run())
     {
-#       include "readControls.H"
-#       include "CourantNo.H"
-#       include "setDeltaT.H"
+        #include "readControls.H"
+        #include "CourantNo.H"
+        #include "setDeltaT.H"
 
         runTime++;
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
         for (int outerCorr=0; outerCorr<nOuterCorr; outerCorr++)
         {
-#           include "rhoEqn.H"
-#           include "gammaPsi.H"
-#           include "UEqn.H"
+            #include "rhoEqn.H"
+            #include "gammaPsi.H"
+            #include "UEqn.H"
 
             for (int corr=0; corr<nCorr; corr++)
             {
-#               include "pEqn.H"
+                #include "pEqn.H"
             }
         }
 
diff --git a/applications/solvers/multiphase/cavitatingFoam/createFields.H b/applications/solvers/multiphase/cavitatingFoam/createFields.H
index dc2f5e696129edaac8b20e59effedc957c975a24..49c7de1473355e69429cf309091dc81aaea5a563 100644
--- a/applications/solvers/multiphase/cavitatingFoam/createFields.H
+++ b/applications/solvers/multiphase/cavitatingFoam/createFields.H
@@ -71,8 +71,8 @@
         mesh
     );
 
-#   include "createPhiv.H"
-#   include "compressibleCreatePhi.H"
+    #include "createPhiv.H"
+    #include "compressibleCreatePhi.H"
 
     Info<< "Reading transportProperties\n" << endl;
 
diff --git a/applications/solvers/multiphase/cavitatingFoam/pEqn.H b/applications/solvers/multiphase/cavitatingFoam/pEqn.H
index c22aa76479a0d503d22bc60af591a82a7733d850..979834717be78414443c08afdf542d4355eb5b64 100644
--- a/applications/solvers/multiphase/cavitatingFoam/pEqn.H
+++ b/applications/solvers/multiphase/cavitatingFoam/pEqn.H
@@ -24,7 +24,7 @@
 
     phiv -= phiGradp/rhof;
 
-#   include "resetPhivPatches.H"
+    #include "resetPhivPatches.H"
 
     for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
     {
@@ -82,6 +82,5 @@
     Info<< "max-min rho: " << max(rho).value()
         << " " << min(rho).value() << endl;
 
-#   include "gammaPsi.H"
-
+    #include "gammaPsi.H"
 }
diff --git a/applications/solvers/multiphase/compressibleInterDyMFoam/UEqn.H b/applications/solvers/multiphase/compressibleInterDyMFoam/UEqn.H
index 1576f6ba787b037d97c84368836912f0c7d129dd..138e58fc7f72b23abdcba18deef3da53e3b6b951 100644
--- a/applications/solvers/multiphase/compressibleInterDyMFoam/UEqn.H
+++ b/applications/solvers/multiphase/compressibleInterDyMFoam/UEqn.H
@@ -24,10 +24,10 @@
          ==
             fvc::reconstruct
             (
-                (
+                fvc::interpolate(rho)*(g & mesh.Sf())
+              + (
                     fvc::interpolate(interface.sigmaK())*fvc::snGrad(alpha1)
-                  - ghf*fvc::snGrad(rho)
-                  - fvc::snGrad(pd)
+                  - fvc::snGrad(p)
                 ) * mesh.magSf()
             )
         );
diff --git a/applications/solvers/multiphase/compressibleInterDyMFoam/compressibleInterDyMFoam.C b/applications/solvers/multiphase/compressibleInterDyMFoam/compressibleInterDyMFoam.C
index 65afde39c2dedd071b59d6dd39880e18880e486d..176900f0c63aaa65a7b8db19d0a2da8e1330614b 100644
--- a/applications/solvers/multiphase/compressibleInterDyMFoam/compressibleInterDyMFoam.C
+++ b/applications/solvers/multiphase/compressibleInterDyMFoam/compressibleInterDyMFoam.C
@@ -104,12 +104,6 @@ int main(int argc, char *argv[])
             #include "meshCourantNo.H"
         }
 
-        if (mesh.changing())
-        {
-            gh = g & mesh.C();
-            ghf = g & mesh.Cf();
-        }
-
         turbulence->correct();
 
         // --- Outer-corrector loop
diff --git a/applications/solvers/multiphase/compressibleInterDyMFoam/correctPhi.H b/applications/solvers/multiphase/compressibleInterDyMFoam/correctPhi.H
index 4152105784639530f725c53b7b561841b798c624..d82a03edb59a2d419420700638404e6f90b197c8 100644
--- a/applications/solvers/multiphase/compressibleInterDyMFoam/correctPhi.H
+++ b/applications/solvers/multiphase/compressibleInterDyMFoam/correctPhi.H
@@ -12,7 +12,7 @@
             IOobject::NO_WRITE
         ),
         mesh,
-        dimensionedScalar("pcorr", pd.dimensions(), 0.0),
+        dimensionedScalar("pcorr", p.dimensions(), 0.0),
         pcorrTypes
     );
 
diff --git a/applications/solvers/multiphase/compressibleInterDyMFoam/createFields.H b/applications/solvers/multiphase/compressibleInterDyMFoam/createFields.H
index dc04fb454680bbeadec55c8946227270601651c7..3da1b5e9c19d85ba9dede2bcdb85f346a5610c9e 100644
--- a/applications/solvers/multiphase/compressibleInterDyMFoam/createFields.H
+++ b/applications/solvers/multiphase/compressibleInterDyMFoam/createFields.H
@@ -1,9 +1,9 @@
-    Info<< "Reading field pd\n" << endl;
-    volScalarField pd
+    Info<< "Reading field p\n" << endl;
+    volScalarField p
     (
         IOobject
         (
-            "pd",
+            "p",
             runTime.timeName(),
             mesh,
             IOobject::MUST_READ,
@@ -46,11 +46,6 @@
     #include "createPhi.H"
 
 
-    Info<< "Calculating field g.h\n" << endl;
-    volScalarField gh("gh", g & mesh.C());
-    surfaceScalarField ghf("ghf", g & mesh.Cf());
-
-
     Info<< "Reading transportProperties\n" << endl;
     twoPhaseMixture twoPhaseProperties(U, phi);
 
@@ -88,24 +83,6 @@
 
     dimensionedScalar pMin(twoPhaseProperties.lookup("pMin"));
 
-    volScalarField p
-    (
-        IOobject
-        (
-            "p",
-            runTime.timeName(),
-            mesh,
-            IOobject::NO_READ,
-            IOobject::AUTO_WRITE
-        ),
-        max
-        (
-            (pd + gh*(alpha1*rho10 + alpha2*rho20))
-           /(1.0 - gh*(alpha1*psi1 + alpha2*psi2)),
-            pMin
-        )
-    );
-
     volScalarField rho1 = rho10 + psi1*p;
     volScalarField rho2 = rho20 + psi2*p;
 
@@ -152,11 +129,15 @@
     );
 
 
-    wordList pcorrTypes(pd.boundaryField().types());
+    wordList pcorrTypes
+    (
+        p.boundaryField().size(),
+        zeroGradientFvPatchScalarField::typeName
+    );
 
-    for (label i=0; i<pd.boundaryField().size(); i++)
+    for (label i=0; i<p.boundaryField().size(); i++)
     {
-        if (pd.boundaryField()[i].fixesValue())
+        if (p.boundaryField()[i].fixesValue())
         {
             pcorrTypes[i] = fixedValueFvPatchScalarField::typeName;
         }
diff --git a/applications/solvers/multiphase/compressibleInterDyMFoam/pEqn.H b/applications/solvers/multiphase/compressibleInterDyMFoam/pEqn.H
index 7e4b37061fdede3fccc625875cc38c447657a198..e6004eb9de9f6d157dd5a42637540fa3d70c6ddb 100644
--- a/applications/solvers/multiphase/compressibleInterDyMFoam/pEqn.H
+++ b/applications/solvers/multiphase/compressibleInterDyMFoam/pEqn.H
@@ -2,17 +2,17 @@
     volScalarField rUA = 1.0/UEqn.A();
     surfaceScalarField rUAf = fvc::interpolate(rUA);
 
-    tmp<fvScalarMatrix> pdEqnComp;
+    tmp<fvScalarMatrix> pEqnComp;
 
     if (transonic)
     {
-        pdEqnComp =
-            (fvm::ddt(pd) + fvm::div(phi, pd) - fvm::Sp(fvc::div(phi), pd));
+        pEqnComp =
+            (fvm::ddt(p) + fvm::div(phi, p) - fvm::Sp(fvc::div(phi), p));
     }
     else
     {
-        pdEqnComp =
-            (fvm::ddt(pd) + fvc::div(phi, pd) - fvc::Sp(fvc::div(phi), pd));
+        pEqnComp =
+            (fvm::ddt(p) + fvc::div(phi, p) - fvc::Sp(fvc::div(phi), p));
     }
 
 
@@ -26,16 +26,16 @@
 
     phi = phiU +
         (
-            fvc::interpolate(interface.sigmaK())*fvc::snGrad(alpha1)
-          - ghf*fvc::snGrad(rho)
-        )*rUAf*mesh.magSf();
+            fvc::interpolate(interface.sigmaK())*fvc::snGrad(alpha1)*mesh.magSf()
+          + fvc::interpolate(rho)*(g & mesh.Sf())
+        )*rUAf;
 
     for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
     {
-        fvScalarMatrix pdEqnIncomp
+        fvScalarMatrix pEqnIncomp
         (
             fvc::div(phi)
-          - fvm::laplacian(rUAf, pd)
+          - fvm::laplacian(rUAf, p)
         );
 
         if
@@ -51,9 +51,9 @@
                     max(alpha1, scalar(0))*(psi1/rho1)
                   + max(alpha2, scalar(0))*(psi2/rho2)
                 )
-               *pdEqnComp()
-              + pdEqnIncomp,
-                mesh.solver(pd.name() + "Final")
+               *pEqnComp()
+              + pEqnIncomp,
+                mesh.solver(p.name() + "Final")
             );
         }
         else
@@ -64,8 +64,8 @@
                     max(alpha1, scalar(0))*(psi1/rho1)
                   + max(alpha2, scalar(0))*(psi2/rho2)
                 )
-               *pdEqnComp()
-              + pdEqnIncomp
+               *pEqnComp()
+              + pEqnIncomp
             );
         }
 
@@ -73,26 +73,21 @@
         {
             dgdt =
                 (pos(alpha2)*(psi2/rho2) - pos(alpha1)*(psi1/rho1))
-               *(pdEqnComp & pd);
-            phi += pdEqnIncomp.flux();
+               *(pEqnComp & p);
+            phi += pEqnIncomp.flux();
         }
     }
 
     U += rUA*fvc::reconstruct((phi - phiU)/rUAf);
     U.correctBoundaryConditions();
 
-    p = max
-        (
-            (pd + gh*(alpha1*rho10 + alpha2*rho20))
-           /(1.0 - gh*(alpha1*psi1 + alpha2*psi2)),
-            pMin
-        );
+    p.max(pMin);
 
     rho1 = rho10 + psi1*p;
     rho2 = rho20 + psi2*p;
 
     Info<< "max(U) " << max(mag(U)).value() << endl;
-    Info<< "min(pd) " << min(pd).value() << endl;
+    Info<< "min(p) " << min(p).value() << endl;
 
     // Make the fluxes relative to the mesh motion
     fvc::makeRelative(phi, U);
diff --git a/applications/solvers/multiphase/compressibleInterFoam/UEqn.H b/applications/solvers/multiphase/compressibleInterFoam/UEqn.H
index 528e0aaafd892c2995fa94848c0d59b66af41942..0b1a9ac029d776dbd57da20f91c14da8ee88f5a7 100644
--- a/applications/solvers/multiphase/compressibleInterFoam/UEqn.H
+++ b/applications/solvers/multiphase/compressibleInterFoam/UEqn.H
@@ -24,10 +24,10 @@
          ==
             fvc::reconstruct
             (
-                (
+                fvc::interpolate(rho)*(g & mesh.Sf())
+              + (
                     fvc::interpolate(interface.sigmaK())*fvc::snGrad(alpha1)
-                  - ghf*fvc::snGrad(rho)
-                  - fvc::snGrad(pd)
+                  - fvc::snGrad(p)
                 ) * mesh.magSf()
             )
         );
diff --git a/applications/solvers/multiphase/compressibleInterFoam/createFields.H b/applications/solvers/multiphase/compressibleInterFoam/createFields.H
index 1f579d245bdcac21f647ac2a90a516b5f612b3c9..3e6904d383e677c976ac8daacd110b31af414f75 100644
--- a/applications/solvers/multiphase/compressibleInterFoam/createFields.H
+++ b/applications/solvers/multiphase/compressibleInterFoam/createFields.H
@@ -1,9 +1,9 @@
-    Info<< "Reading field pd\n" << endl;
-    volScalarField pd
+    Info<< "Reading field p\n" << endl;
+    volScalarField p
     (
         IOobject
         (
-            "pd",
+            "p",
             runTime.timeName(),
             mesh,
             IOobject::MUST_READ,
@@ -46,11 +46,6 @@
     #include "createPhi.H"
 
 
-    Info<< "Calculating field g.h\n" << endl;
-    volScalarField gh("gh", g & mesh.C());
-    surfaceScalarField ghf("ghf", g & mesh.Cf());
-
-
     Info<< "Reading transportProperties\n" << endl;
     twoPhaseMixture twoPhaseProperties(U, phi);
 
@@ -88,24 +83,6 @@
 
     dimensionedScalar pMin(twoPhaseProperties.lookup("pMin"));
 
-    volScalarField p
-    (
-        IOobject
-        (
-            "p",
-            runTime.timeName(),
-            mesh,
-            IOobject::NO_READ,
-            IOobject::AUTO_WRITE
-        ),
-        max
-        (
-            (pd + gh*(alpha1*rho10 + alpha2*rho20))
-           /(1.0 - gh*(alpha1*psi1 + alpha2*psi2)),
-            pMin
-        )
-    );
-
     volScalarField rho1 = rho10 + psi1*p;
     volScalarField rho2 = rho20 + psi2*p;
 
diff --git a/applications/solvers/multiphase/compressibleInterFoam/pEqn.H b/applications/solvers/multiphase/compressibleInterFoam/pEqn.H
index ebf24498ade0bd1d1572d6055da8b5bccd369ffa..9d2dc23916babb9c6c94acd2b53125c8cfee1dad 100644
--- a/applications/solvers/multiphase/compressibleInterFoam/pEqn.H
+++ b/applications/solvers/multiphase/compressibleInterFoam/pEqn.H
@@ -2,17 +2,17 @@
     volScalarField rUA = 1.0/UEqn.A();
     surfaceScalarField rUAf = fvc::interpolate(rUA);
 
-    tmp<fvScalarMatrix> pdEqnComp;
+    tmp<fvScalarMatrix> pEqnComp;
 
     if (transonic)
     {
-        pdEqnComp =
-            (fvm::ddt(pd) + fvm::div(phi, pd) - fvm::Sp(fvc::div(phi), pd));
+        pEqnComp =
+            (fvm::ddt(p) + fvm::div(phi, p) - fvm::Sp(fvc::div(phi), p));
     }
     else
     {
-        pdEqnComp =
-            (fvm::ddt(pd) + fvc::div(phi, pd) - fvc::Sp(fvc::div(phi), pd));
+        pEqnComp =
+            (fvm::ddt(p) + fvc::div(phi, p) - fvc::Sp(fvc::div(phi), p));
     }
 
 
@@ -26,16 +26,16 @@
 
     phi = phiU +
         (
-            fvc::interpolate(interface.sigmaK())*fvc::snGrad(alpha1)
-          - ghf*fvc::snGrad(rho)
-        )*rUAf*mesh.magSf();
+            fvc::interpolate(interface.sigmaK())*fvc::snGrad(alpha1)*mesh.magSf()
+          + fvc::interpolate(rho)*(g & mesh.Sf())
+        )*rUAf;
 
     for(int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
     {
-        fvScalarMatrix pdEqnIncomp
+        fvScalarMatrix pEqnIncomp
         (
             fvc::div(phi)
-          - fvm::laplacian(rUAf, pd)
+          - fvm::laplacian(rUAf, p)
         );
 
         solve
@@ -44,31 +44,27 @@
                 max(alpha1, scalar(0))*(psi1/rho1)
               + max(alpha2, scalar(0))*(psi2/rho2)
             )
-           *pdEqnComp()
-          + pdEqnIncomp
+           *pEqnComp()
+          + pEqnIncomp
         );
 
         if (nonOrth == nNonOrthCorr)
         {
             dgdt =
                 (pos(alpha2)*(psi2/rho2) - pos(alpha1)*(psi1/rho1))
-               *(pdEqnComp & pd);
-            phi += pdEqnIncomp.flux();
+               *(pEqnComp & p);
+            phi += pEqnIncomp.flux();
         }
     }
 
     U += rUA*fvc::reconstruct((phi - phiU)/rUAf);
     U.correctBoundaryConditions();
 
-    p = max
-        (
-            (pd + gh*(alpha1*rho10 + alpha2*rho20))/(1.0 - gh*(alpha1*psi1 + alpha2*psi2)),
-            pMin
-        );
+    p.max(pMin);
 
     rho1 = rho10 + psi1*p;
     rho2 = rho20 + psi2*p;
 
     Info<< "max(U) " << max(mag(U)).value() << endl;
-    Info<< "min(pd) " << min(pd).value() << endl;
+    Info<< "min(p) " << min(p).value() << endl;
 }
diff --git a/applications/solvers/multiphase/interDyMFoam/correctPhi.H b/applications/solvers/multiphase/interDyMFoam/correctPhi.H
index c975c9b37416e10a066bb578ac05b531a4217473..0854a68b8e3ae1b941dbdad26c244017efc04d8e 100644
--- a/applications/solvers/multiphase/interDyMFoam/correctPhi.H
+++ b/applications/solvers/multiphase/interDyMFoam/correctPhi.H
@@ -1,5 +1,5 @@
 {
-#   include "continuityErrs.H"
+    #include "continuityErrs.H"
 
     volScalarField pcorr
     (
@@ -12,7 +12,7 @@
             IOobject::NO_WRITE
         ),
         mesh,
-        dimensionedScalar("pcorr", pd.dimensions(), 0.0),
+        dimensionedScalar("pcorr", p.dimensions(), 0.0),
         pcorrTypes
     );
 
@@ -27,7 +27,7 @@
             fvm::laplacian(rAUf, pcorr) == fvc::div(phi)
         );
 
-        pcorrEqn.setReference(pdRefCell, pdRefValue);
+        pcorrEqn.setReference(pRefCell, pRefValue);
         pcorrEqn.solve();
 
         if (nonOrth == nNonOrthCorr)
@@ -36,5 +36,5 @@
         }
     }
 
-#   include "continuityErrs.H"
+    #include "continuityErrs.H"
 }
diff --git a/applications/solvers/multiphase/interDyMFoam/createFields.H b/applications/solvers/multiphase/interDyMFoam/createFields.H
index bcceb9d748193843a3124b585b538497b61e9d22..905ba0d64656e7be4b5fa0acdcefd6710d31999f 100644
--- a/applications/solvers/multiphase/interDyMFoam/createFields.H
+++ b/applications/solvers/multiphase/interDyMFoam/createFields.H
@@ -1,9 +1,9 @@
-    Info<< "Reading field pd\n" << endl;
-    volScalarField pd
+    Info<< "Reading field p\n" << endl;
+    volScalarField p
     (
         IOobject
         (
-            "pd",
+            "p",
             runTime.timeName(),
             mesh,
             IOobject::MUST_READ,
@@ -92,47 +92,21 @@
         incompressible::turbulenceModel::New(U, phi, twoPhaseProperties)
     );
 
-    wordList pcorrTypes(pd.boundaryField().types());
+    wordList pcorrTypes
+    (
+        p.boundaryField().size(),
+        zeroGradientFvPatchScalarField::typeName
+    );
 
-    for (label i=0; i<pd.boundaryField().size(); i++)
+    for (label i=0; i<p.boundaryField().size(); i++)
     {
-        if (pd.boundaryField()[i].fixesValue())
+        if (p.boundaryField()[i].fixesValue())
         {
             pcorrTypes[i] = fixedValueFvPatchScalarField::typeName;
         }
     }
 
 
-    volScalarField p
-    (
-        IOobject
-        (
-            "p",
-            runTime.timeName(),
-            mesh,
-            IOobject::NO_READ,
-            IOobject::AUTO_WRITE
-        ),
-        pd + rho*(g & mesh.C())
-    );
-
-    label pdRefCell = 0;
-    scalar pdRefValue = 0.0;
-    setRefCell(pd, mesh.solutionDict().subDict("PISO"), pdRefCell, pdRefValue);
-
+    label pRefCell = 0;
     scalar pRefValue = 0.0;
-
-    if (pd.needReference())
-    {
-        pRefValue = readScalar
-        (
-            mesh.solutionDict().subDict("PISO").lookup("pRefValue")
-        );
-
-        p += dimensionedScalar
-        (
-            "p",
-            p.dimensions(),
-            pRefValue - getRefCellValue(p, pdRefCell)
-        );
-    }
+    setRefCell(p, mesh.solutionDict().subDict("PISO"), pRefCell, pRefValue);
diff --git a/applications/solvers/multiphase/interDyMFoam/interDyMFoam.C b/applications/solvers/multiphase/interDyMFoam/interDyMFoam.C
index 046503a8c459abc2f1c6caeb958c39a2ee985668..466333ff3014a6fa3942a556846e6edd7ae49316 100644
--- a/applications/solvers/multiphase/interDyMFoam/interDyMFoam.C
+++ b/applications/solvers/multiphase/interDyMFoam/interDyMFoam.C
@@ -86,9 +86,6 @@ int main(int argc, char *argv[])
                 << " s" << endl;
         }
 
-        volScalarField gh("gh", g & mesh.C());
-        surfaceScalarField ghf("ghf", g & mesh.Cf());
-
         if (mesh.changing() && correctPhi)
         {
             #include "correctPhi.H"
@@ -114,18 +111,6 @@ int main(int argc, char *argv[])
             #include "pEqn.H"
         }
 
-        p = pd + rho*gh;
-
-        if (pd.needReference())
-        {
-            p += dimensionedScalar
-            (
-                "p",
-                p.dimensions(),
-                pRefValue - getRefCellValue(p, pdRefCell)
-            );
-        }
-
         turbulence->correct();
 
         runTime.write();
diff --git a/applications/solvers/multiphase/interDyMFoam/pEqn.H b/applications/solvers/multiphase/interDyMFoam/pEqn.H
index f8ff18f60631c3cd66f02a8b9b4e8adc5ceb19e9..2af289a76f31beb1654acfde23592bb299346f1c 100644
--- a/applications/solvers/multiphase/interDyMFoam/pEqn.H
+++ b/applications/solvers/multiphase/interDyMFoam/pEqn.H
@@ -5,40 +5,40 @@
     U = rAU*UEqn.H();
     surfaceScalarField phiU("phiU", (fvc::interpolate(U) & mesh.Sf()));
 
-    phi = phiU +
-    (
-        fvc::interpolate(interface.sigmaK())*fvc::snGrad(alpha1)
-      - ghf*fvc::snGrad(rho)
-    )*rAUf*mesh.magSf();
-
-    if (pd.needReference())
+    if (p.needReference())
     {
-        fvc::makeRelative(phi, U);
-        adjustPhi(phi, U, pd);
-        fvc::makeAbsolute(phi, U);
+        fvc::makeRelative(phiU, U);
+        adjustPhi(phiU, U, p);
+        fvc::makeAbsolute(phiU, U);
     }
 
+    phi = phiU +
+    (
+        fvc::interpolate(interface.sigmaK())*fvc::snGrad(alpha1)*mesh.magSf()
+      + fvc::interpolate(rho)*(g & mesh.Sf())
+    )*rAUf;
+
     for(int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
     {
-        fvScalarMatrix pdEqn
+        fvScalarMatrix pEqn
         (
-            fvm::laplacian(rAUf, pd) == fvc::div(phi)
+            fvm::laplacian(rAUf, p) == fvc::div(phi)
         );
 
-        pdEqn.setReference(pdRefCell, pdRefValue);
+        pEqn.setReference(pRefCell, pRefValue);
 
         if (corr == nCorr-1 && nonOrth == nNonOrthCorr)
         {
-            pdEqn.solve(mesh.solver(pd.name() + "Final"));
+            pEqn.solve(mesh.solver(p.name() + "Final"));
         }
         else
         {
-            pdEqn.solve(mesh.solver(pd.name()));
+            pEqn.solve(mesh.solver(p.name()));
         }
 
         if (nonOrth == nNonOrthCorr)
         {
-            phi -= pdEqn.flux();
+            phi -= pEqn.flux();
         }
     }
 
diff --git a/applications/solvers/multiphase/interFoam/UEqn.H b/applications/solvers/multiphase/interFoam/UEqn.H
index 528e0aaafd892c2995fa94848c0d59b66af41942..0b1a9ac029d776dbd57da20f91c14da8ee88f5a7 100644
--- a/applications/solvers/multiphase/interFoam/UEqn.H
+++ b/applications/solvers/multiphase/interFoam/UEqn.H
@@ -24,10 +24,10 @@
          ==
             fvc::reconstruct
             (
-                (
+                fvc::interpolate(rho)*(g & mesh.Sf())
+              + (
                     fvc::interpolate(interface.sigmaK())*fvc::snGrad(alpha1)
-                  - ghf*fvc::snGrad(rho)
-                  - fvc::snGrad(pd)
+                  - fvc::snGrad(p)
                 ) * mesh.magSf()
             )
         );
diff --git a/applications/solvers/multiphase/interFoam/correctPhi.H b/applications/solvers/multiphase/interFoam/correctPhi.H
index 171e1670f47dbdf29d3904c47af7d196b706296e..0274b7e9ed8dc75b372db31efa743722a7dafc56 100644
--- a/applications/solvers/multiphase/interFoam/correctPhi.H
+++ b/applications/solvers/multiphase/interFoam/correctPhi.H
@@ -1,11 +1,15 @@
 {
-#   include "continuityErrs.H"
+    #include "continuityErrs.H"
 
-    wordList pcorrTypes(pd.boundaryField().types());
+    wordList pcorrTypes
+    (
+        p.boundaryField().size(),
+        zeroGradientFvPatchScalarField::typeName
+    );
 
-    for (label i=0; i<pd.boundaryField().size(); i++)
+    for (label i=0; i<p.boundaryField().size(); i++)
     {
-        if (pd.boundaryField()[i].fixesValue())
+        if (p.boundaryField()[i].fixesValue())
         {
             pcorrTypes[i] = fixedValueFvPatchScalarField::typeName;
         }
@@ -22,7 +26,7 @@
             IOobject::NO_WRITE
         ),
         mesh,
-        dimensionedScalar("pcorr", pd.dimensions(), 0.0),
+        dimensionedScalar("pcorr", p.dimensions(), 0.0),
         pcorrTypes
     );
 
@@ -37,7 +41,7 @@
             fvm::laplacian(rUAf, pcorr) == fvc::div(phi)
         );
 
-        pcorrEqn.setReference(pdRefCell, pdRefValue);
+        pcorrEqn.setReference(pRefCell, pRefValue);
         pcorrEqn.solve();
 
         if (nonOrth == nNonOrthCorr)
@@ -46,5 +50,5 @@
         }
     }
 
-#   include "continuityErrs.H"
+    #include "continuityErrs.H"
 }
diff --git a/applications/solvers/multiphase/interFoam/createFields.H b/applications/solvers/multiphase/interFoam/createFields.H
index 70637747528a9851a51dad21b021fead0adc3761..622d5d578c977d745f94419f993145222842d8a9 100644
--- a/applications/solvers/multiphase/interFoam/createFields.H
+++ b/applications/solvers/multiphase/interFoam/createFields.H
@@ -1,9 +1,9 @@
-    Info<< "Reading field pd\n" << endl;
-    volScalarField pd
+    Info<< "Reading field p\n" << endl;
+    volScalarField p
     (
         IOobject
         (
-            "pd",
+            "p",
             runTime.timeName(),
             mesh,
             IOobject::MUST_READ,
@@ -83,45 +83,9 @@
     );
 
 
-    Info<< "Calculating field g.h\n" << endl;
-    volScalarField gh("gh", g & mesh.C());
-    surfaceScalarField ghf("ghf", g & mesh.Cf());
-
-
-    volScalarField p
-    (
-        IOobject
-        (
-            "p",
-            runTime.timeName(),
-            mesh,
-            IOobject::NO_READ,
-            IOobject::AUTO_WRITE
-        ),
-        pd + rho*gh
-    );
-
-
-    label pdRefCell = 0;
-    scalar pdRefValue = 0.0;
-    setRefCell(pd, mesh.solutionDict().subDict("PISO"), pdRefCell, pdRefValue);
-
+    label pRefCell = 0;
     scalar pRefValue = 0.0;
-
-    if (pd.needReference())
-    {
-        pRefValue = readScalar
-        (
-            mesh.solutionDict().subDict("PISO").lookup("pRefValue")
-        );
-
-        p += dimensionedScalar
-        (
-            "p",
-            p.dimensions(),
-            pRefValue - getRefCellValue(p, pdRefCell)
-        );
-    }
+    setRefCell(p, mesh.solutionDict().subDict("PISO"), pRefCell, pRefValue);
 
 
     // Construct interface from alpha1 distribution
diff --git a/applications/solvers/multiphase/interFoam/interFoam.C b/applications/solvers/multiphase/interFoam/interFoam.C
index 4dd86bd8f72fafbdbcb9db63cea841d79b6d1d26..b111351c39dbaef4cbb3eaaa3ef08707221baf14 100644
--- a/applications/solvers/multiphase/interFoam/interFoam.C
+++ b/applications/solvers/multiphase/interFoam/interFoam.C
@@ -89,18 +89,6 @@ int main(int argc, char *argv[])
 
         #include "continuityErrs.H"
 
-        p = pd + rho*gh;
-
-        if (pd.needReference())
-        {
-            p += dimensionedScalar
-            (
-                "p",
-                p.dimensions(),
-                pRefValue - getRefCellValue(p, pdRefCell)
-            );
-        }
-
         turbulence->correct();
 
         runTime.write();
diff --git a/applications/solvers/multiphase/interFoam/pEqn.H b/applications/solvers/multiphase/interFoam/pEqn.H
index e5afbb8e4f24606318afe045faac8554960b04e5..7aa172b858473b0f5e5c0934e5690233ef60755a 100644
--- a/applications/solvers/multiphase/interFoam/pEqn.H
+++ b/applications/solvers/multiphase/interFoam/pEqn.H
@@ -7,38 +7,39 @@
     surfaceScalarField phiU
     (
         "phiU",
-        (fvc::interpolate(U) & mesh.Sf()) + fvc::ddtPhiCorr(rUA, rho, U, phi)
+        (fvc::interpolate(U) & mesh.Sf())
+      + fvc::ddtPhiCorr(rUA, rho, U, phi)
     );
 
+    adjustPhi(phiU, U, p);
+
     phi = phiU +
         (
-            fvc::interpolate(interface.sigmaK())*fvc::snGrad(alpha1)
-          - ghf*fvc::snGrad(rho)
-        )*rUAf*mesh.magSf();
-
-    adjustPhi(phi, U, pd);
+            fvc::interpolate(interface.sigmaK())*fvc::snGrad(alpha1)*mesh.magSf()
+          + fvc::interpolate(rho)*(g & mesh.Sf())
+        )*rUAf;
 
     for(int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
     {
-        fvScalarMatrix pdEqn
+        fvScalarMatrix pEqn
         (
-            fvm::laplacian(rUAf, pd) == fvc::div(phi)
+            fvm::laplacian(rUAf, p) == fvc::div(phi)
         );
 
-        pdEqn.setReference(pdRefCell, pdRefValue);
+        pEqn.setReference(pRefCell, pRefValue);
 
         if (corr == nCorr-1 && nonOrth == nNonOrthCorr)
         {
-            pdEqn.solve(mesh.solver(pd.name() + "Final"));
+            pEqn.solve(mesh.solver(p.name() + "Final"));
         }
         else
         {
-            pdEqn.solve(mesh.solver(pd.name()));
+            pEqn.solve(mesh.solver(p.name()));
         }
 
         if (nonOrth == nNonOrthCorr)
         {
-            phi -= pdEqn.flux();
+            phi -= pEqn.flux();
         }
     }
 
diff --git a/applications/solvers/multiphase/interPhaseChangeFoam/UEqn.H b/applications/solvers/multiphase/interPhaseChangeFoam/UEqn.H
index c59137c7b87a9be3c799e03567dc8209341798f5..757e37a2cfdc7d9dbdacd0621120452219ac2a2c 100644
--- a/applications/solvers/multiphase/interPhaseChangeFoam/UEqn.H
+++ b/applications/solvers/multiphase/interPhaseChangeFoam/UEqn.H
@@ -25,10 +25,10 @@
          ==
             fvc::reconstruct
             (
-                (
+                fvc::interpolate(rho)*(g & mesh.Sf())
+              + (
                     fvc::interpolate(interface.sigmaK())*fvc::snGrad(alpha1)
-                  - ghf*fvc::snGrad(rho)
-                  - fvc::snGrad(pd)
+                  - fvc::snGrad(p)
                 ) * mesh.magSf()
             )
         );
diff --git a/applications/solvers/multiphase/interPhaseChangeFoam/correctPhi.H b/applications/solvers/multiphase/interPhaseChangeFoam/correctPhi.H
index 171e1670f47dbdf29d3904c47af7d196b706296e..17377302f0ecd97c2ee04e98cea8bcfc88ab4921 100644
--- a/applications/solvers/multiphase/interPhaseChangeFoam/correctPhi.H
+++ b/applications/solvers/multiphase/interPhaseChangeFoam/correctPhi.H
@@ -1,11 +1,15 @@
 {
-#   include "continuityErrs.H"
+    #include "continuityErrs.H"
 
-    wordList pcorrTypes(pd.boundaryField().types());
+    wordList pcorrTypes
+    (
+        p.boundaryField().size(),
+        zeroGradientFvPatchScalarField::typeName
+    );
 
-    for (label i=0; i<pd.boundaryField().size(); i++)
+    for (label i=0; i<p.boundaryField().size(); i++)
     {
-        if (pd.boundaryField()[i].fixesValue())
+        if (p.boundaryField()[i].fixesValue())
         {
             pcorrTypes[i] = fixedValueFvPatchScalarField::typeName;
         }
@@ -22,7 +26,7 @@
             IOobject::NO_WRITE
         ),
         mesh,
-        dimensionedScalar("pcorr", pd.dimensions(), 0.0),
+        dimensionedScalar("pcorr", p.dimensions(), 0.0),
         pcorrTypes
     );
 
@@ -37,7 +41,7 @@
             fvm::laplacian(rUAf, pcorr) == fvc::div(phi)
         );
 
-        pcorrEqn.setReference(pdRefCell, pdRefValue);
+        pcorrEqn.setReference(pRefCell, pRefValue);
         pcorrEqn.solve();
 
         if (nonOrth == nNonOrthCorr)
diff --git a/applications/solvers/multiphase/interPhaseChangeFoam/createFields.H b/applications/solvers/multiphase/interPhaseChangeFoam/createFields.H
index 5e727dea3eca4828580cadaf9a10531a7719fd62..98d166214b2ca5d34fa2aa554dfab679e16df7ee 100644
--- a/applications/solvers/multiphase/interPhaseChangeFoam/createFields.H
+++ b/applications/solvers/multiphase/interPhaseChangeFoam/createFields.H
@@ -1,9 +1,9 @@
-    Info<< "Reading field pd\n" << endl;
-    volScalarField pd
+    Info<< "Reading field p\n" << endl;
+    volScalarField p
     (
         IOobject
         (
-            "pd",
+            "p",
             runTime.timeName(),
             mesh,
             IOobject::MUST_READ,
@@ -66,26 +66,9 @@
     rho.oldTime();
 
 
-    label pdRefCell = 0;
-    scalar pdRefValue = 0.0;
-    setRefCell(pd, mesh.solutionDict().subDict("PISO"), pdRefCell, pdRefValue);
-
-    Info<< "Calculating field g.h" << endl;
-    volScalarField gh("gh", g & mesh.C());
-    surfaceScalarField ghf("ghf", g & mesh.Cf());
-
-    volScalarField p
-    (
-        IOobject
-        (
-            "p",
-            runTime.timeName(),
-            mesh,
-            IOobject::NO_READ,
-            IOobject::AUTO_WRITE
-        ),
-        pd + rho*gh
-    );
+    label pRefCell = 0;
+    scalar pRefValue = 0.0;
+    setRefCell(p, mesh.solutionDict().subDict("PISO"), pRefCell, pRefValue);
 
 
     // Construct interface from alpha1 distribution
diff --git a/applications/solvers/multiphase/interPhaseChangeFoam/pEqn.H b/applications/solvers/multiphase/interPhaseChangeFoam/pEqn.H
index 0037d71cf52ce5dd50dd298767b27987d4e03e38..3c164cc574311612e838abda97310fd3959e9e72 100644
--- a/applications/solvers/multiphase/interPhaseChangeFoam/pEqn.H
+++ b/applications/solvers/multiphase/interPhaseChangeFoam/pEqn.H
@@ -11,13 +11,13 @@
       + fvc::ddtPhiCorr(rUA, rho, U, phi)
     );
 
+    adjustPhi(phiU, U, p);
+
     phi = phiU +
         (
-            fvc::interpolate(interface.sigmaK())*fvc::snGrad(alpha1)
-          - ghf*fvc::snGrad(rho)
-        )*rUAf*mesh.magSf();
-
-    adjustPhi(phi, U, pd);
+            fvc::interpolate(interface.sigmaK())*fvc::snGrad(alpha1)*mesh.magSf()
+          + fvc::interpolate(rho)*(g & mesh.Sf())
+        )*rUAf;
 
     Pair<tmp<volScalarField> > vDotP = twoPhaseProperties->vDotP();
     const volScalarField& vDotcP = vDotP[0]();
@@ -25,31 +25,29 @@
 
     for(int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
     {
-        fvScalarMatrix pdEqn
+        fvScalarMatrix pEqn
         (
-            fvc::div(phi) - fvm::laplacian(rUAf, pd)
-          + (vDotvP - vDotcP)*(rho*gh - pSat) + fvm::Sp(vDotvP - vDotcP, pd)
+            fvc::div(phi) - fvm::laplacian(rUAf, p)
+          - (vDotvP - vDotcP)*pSat + fvm::Sp(vDotvP - vDotcP, p)
         );
 
-        pdEqn.setReference(pdRefCell, pdRefValue);
+        pEqn.setReference(pRefCell, pRefValue);
 
         if (corr == nCorr-1 && nonOrth == nNonOrthCorr)
         {
-            pdEqn.solve(mesh.solver(pd.name() + "Final"));
+            pEqn.solve(mesh.solver(p.name() + "Final"));
         }
         else
         {
-            pdEqn.solve(mesh.solver(pd.name()));
+            pEqn.solve(mesh.solver(p.name()));
         }
 
         if (nonOrth == nNonOrthCorr)
         {
-            phi += pdEqn.flux();
+            phi += pEqn.flux();
         }
     }
 
-    p = pd + rho*gh;
-
     U += rUA*fvc::reconstruct((phi - phiU)/rUAf);
     U.correctBoundaryConditions();
 }
diff --git a/applications/solvers/multiphase/multiphaseInterFoam/UEqn.H b/applications/solvers/multiphase/multiphaseInterFoam/UEqn.H
index 5ce0c0c08847df8fd9b99161e8feb3962b3006bf..17686b592c4750443414cec36260eaa98f1a3205 100644
--- a/applications/solvers/multiphase/multiphaseInterFoam/UEqn.H
+++ b/applications/solvers/multiphase/multiphaseInterFoam/UEqn.H
@@ -24,10 +24,10 @@
          ==
             fvc::reconstruct
             (
-                (
+                fvc::interpolate(rho)*(g & mesh.Sf())
+              + (
                     mixture.surfaceTensionForce()
-                  - ghf*fvc::snGrad(rho)
-                  - fvc::snGrad(pd)
+                  - fvc::snGrad(p)
                 ) * mesh.magSf()
             )
         );
diff --git a/applications/solvers/multiphase/multiphaseInterFoam/createFields.H b/applications/solvers/multiphase/multiphaseInterFoam/createFields.H
index 07650fd4ddaf26054f94c303fdb1259f525244a3..fb6449629402a36f340e711e6ef89d7b64da8d96 100644
--- a/applications/solvers/multiphase/multiphaseInterFoam/createFields.H
+++ b/applications/solvers/multiphase/multiphaseInterFoam/createFields.H
@@ -1,9 +1,9 @@
-    Info<< "Reading field pd\n" << endl;
-    volScalarField pd
+    Info<< "Reading field p\n" << endl;
+    volScalarField p
     (
         IOobject
         (
-            "pd",
+            "p",
             runTime.timeName(),
             mesh,
             IOobject::MUST_READ,
@@ -45,45 +45,9 @@
     rho.oldTime();
 
 
-    Info<< "Calculating field g.h\n" << endl;
-    volScalarField gh("gh", g & mesh.C());
-    surfaceScalarField ghf("ghf", g & mesh.Cf());
-
-
-    volScalarField p
-    (
-        IOobject
-        (
-            "p",
-            runTime.timeName(),
-            mesh,
-            IOobject::NO_READ,
-            IOobject::AUTO_WRITE
-        ),
-        pd + rho*gh
-    );
-
-
-    label pdRefCell = 0;
-    scalar pdRefValue = 0.0;
-    setRefCell(pd, mesh.solutionDict().subDict("PISO"), pdRefCell, pdRefValue);
-
+    label pRefCell = 0;
     scalar pRefValue = 0.0;
-
-    if (pd.needReference())
-    {
-        pRefValue = readScalar
-        (
-            mesh.solutionDict().subDict("PISO").lookup("pRefValue")
-        );
-
-        p += dimensionedScalar
-        (
-            "p",
-            p.dimensions(),
-            pRefValue - getRefCellValue(p, pdRefCell)
-        );
-    }
+    setRefCell(p, mesh.solutionDict().subDict("PISO"), pRefCell, pRefValue);
 
 
     // Construct incompressible turbulence model
diff --git a/applications/solvers/multiphase/multiphaseInterFoam/multiphaseInterFoam.C b/applications/solvers/multiphase/multiphaseInterFoam/multiphaseInterFoam.C
index c5fdb5f3c2e36d8ae693a7aead0ee0a71168d482..b6968ca1a11c4a8b664b2c1721c0d608a884dad4 100644
--- a/applications/solvers/multiphase/multiphaseInterFoam/multiphaseInterFoam.C
+++ b/applications/solvers/multiphase/multiphaseInterFoam/multiphaseInterFoam.C
@@ -81,18 +81,6 @@ int main(int argc, char *argv[])
 
         #include "continuityErrs.H"
 
-        p = pd + rho*gh;
-
-        if (pd.needReference())
-        {
-            p += dimensionedScalar
-            (
-                "p",
-                p.dimensions(),
-                pRefValue - getRefCellValue(p, pdRefCell)
-            );
-        }
-
         turbulence->correct();
 
         runTime.write();
diff --git a/applications/solvers/multiphase/multiphaseInterFoam/pEqn.H b/applications/solvers/multiphase/multiphaseInterFoam/pEqn.H
index 3fd1e3e60614032c75793b4b5767387e6ac9ab84..4bec77f950d54fadbefe8507abe3ed8699476c54 100644
--- a/applications/solvers/multiphase/multiphaseInterFoam/pEqn.H
+++ b/applications/solvers/multiphase/multiphaseInterFoam/pEqn.H
@@ -10,35 +10,35 @@
         (fvc::interpolate(U) & mesh.Sf()) + fvc::ddtPhiCorr(rUA, rho, U, phi)
     );
 
+    adjustPhi(phiU, U, p);
+
     phi = phiU +
         (
-            mixture.surfaceTensionForce()
-          - ghf*fvc::snGrad(rho)
-        )*rUAf*mesh.magSf();
-
-    adjustPhi(phi, U, pd);
+            mixture.surfaceTensionForce()*mesh.magSf()
+          + fvc::interpolate(rho)*(g & mesh.Sf())
+        )*rUAf;
 
     for(int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
     {
-        fvScalarMatrix pdEqn
+        fvScalarMatrix pEqn
         (
-            fvm::laplacian(rUAf, pd) == fvc::div(phi)
+            fvm::laplacian(rUAf, p) == fvc::div(phi)
         );
 
-        pdEqn.setReference(pdRefCell, pdRefValue);
+        pEqn.setReference(pRefCell, pRefValue);
 
         if (corr == nCorr-1)
         {
-            pdEqn.solve(mesh.solver(pd.name() + "Final"));
+            pEqn.solve(mesh.solver(p.name() + "Final"));
         }
         else
         {
-            pdEqn.solve(mesh.solver(pd.name()));
+            pEqn.solve(mesh.solver(p.name()));
         }
 
         if (nonOrth == nNonOrthCorr)
         {
-            phi -= pdEqn.flux();
+            phi -= pEqn.flux();
         }
     }
 
diff --git a/applications/solvers/multiphase/settlingFoam/UEqn.H b/applications/solvers/multiphase/settlingFoam/UEqn.H
index ac4c18ab19dc4b70fe0770f23e0a24bc4af3eebd..04e9194363d9ee4edc6aaa65e032fcebcaeddfca 100644
--- a/applications/solvers/multiphase/settlingFoam/UEqn.H
+++ b/applications/solvers/multiphase/settlingFoam/UEqn.H
@@ -22,10 +22,8 @@
           ==
             fvc::reconstruct
             (
-                (
-                  - ghf*fvc::snGrad(rho)
-                  - fvc::snGrad(p)
-                )*mesh.magSf()
+                fvc::interpolate(rho)*(g & mesh.Sf())
+              - fvc::snGrad(p)*mesh.magSf()
             )
         );
     }
diff --git a/applications/solvers/multiphase/settlingFoam/createFields.H b/applications/solvers/multiphase/settlingFoam/createFields.H
index b13649c3124ddaf5ba06c5e13e3b090b746798ec..916acde39ed5264a9f7bc765d3ec445b83519637 100644
--- a/applications/solvers/multiphase/settlingFoam/createFields.H
+++ b/applications/solvers/multiphase/settlingFoam/createFields.H
@@ -128,7 +128,7 @@
         alpha.boundaryField().types()
     );
 
-#   include "compressibleCreatePhi.H"
+    #include "compressibleCreatePhi.H"
 
 
     label pRefCell = 0;
@@ -337,6 +337,3 @@
         ),
         mut + mul
     );
-
-    Info<< "Calculating field (g.h)f\n" << endl;
-    surfaceScalarField ghf = surfaceScalarField("ghf", g & mesh.Cf());
diff --git a/applications/solvers/multiphase/settlingFoam/pEqn.H b/applications/solvers/multiphase/settlingFoam/pEqn.H
index 65b954c6da84e1fe6b98ee5a99f295f7a14ff324..b4fc05b32ab56f04646427310478e9cc92429b11 100644
--- a/applications/solvers/multiphase/settlingFoam/pEqn.H
+++ b/applications/solvers/multiphase/settlingFoam/pEqn.H
@@ -15,7 +15,7 @@ phi =
     );
 
 surfaceScalarField phiU("phiU", phi);
-phi -= ghf*fvc::snGrad(rho)*rUAf*mesh.magSf();
+phi += fvc::interpolate(rho)*(g & mesh.Sf())*rUAf;
 
 for(int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
 {
diff --git a/applications/solvers/multiphase/settlingFoam/settlingFoam.C b/applications/solvers/multiphase/settlingFoam/settlingFoam.C
index ad8dbe3646cf2deb96e6affbdf75d155f2c90d37..e68ddbb0f0710ab911cc6855763e624c818c9883 100644
--- a/applications/solvers/multiphase/settlingFoam/settlingFoam.C
+++ b/applications/solvers/multiphase/settlingFoam/settlingFoam.C
@@ -43,17 +43,15 @@ Description
 
 int main(int argc, char *argv[])
 {
+    #include "setRootCase.H"
 
-#   include "setRootCase.H"
+    #include "createTime.H"
+    #include "createMesh.H"
+    #include "readEnvironmentalProperties.H"
+    #include "createFields.H"
+    #include "initContinuityErrs.H"
 
-#   include "createTime.H"
-#   include "createMesh.H"
-#   include "readEnvironmentalProperties.H"
-#   include "createFields.H"
-#   include "initContinuityErrs.H"
-
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
     Info<< "\nStarting time loop\n" << endl;
 
@@ -61,27 +59,27 @@ int main(int argc, char *argv[])
     {
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
-#       include "readPISOControls.H"
-#       include "compressibleCourantNo.H"
+        #include "readPISOControls.H"
+        #include "compressibleCourantNo.H"
 
-#       include "rhoEqn.H"
+        #include "rhoEqn.H"
 
-#       include "calcVdj.H"
+        #include "calcVdj.H"
 
-#       include "UEqn.H"
+        #include "UEqn.H"
 
-#       include "alphaEqn.H"
+        #include "alphaEqn.H"
 
-#       include "correctViscosity.H"
+        #include "correctViscosity.H"
 
 
         // --- PISO loop
         for (int corr=0; corr<nCorr; corr++)
         {
-#           include "pEqn.H"
+            #include "pEqn.H"
         }
 
-#       include "kEpsilon.H"
+        #include "kEpsilon.H"
 
         runTime.write();
 
diff --git a/applications/solvers/multiphase/twoLiquidMixingFoam/UEqn.H b/applications/solvers/multiphase/twoLiquidMixingFoam/UEqn.H
index 5a945697caa2ffa30846b7fc1831c8b92dbde7fb..18b915b16bde8f4f8bda4b5a13daf8d99b3b74cb 100644
--- a/applications/solvers/multiphase/twoLiquidMixingFoam/UEqn.H
+++ b/applications/solvers/multiphase/twoLiquidMixingFoam/UEqn.H
@@ -14,7 +14,14 @@
     //- fvc::div(muEff*(fvc::interpolate(dev(fvc::grad(U))) & mesh.Sf()))
     );
 
-    UEqn.relax();
+    if (oCorr == nOuterCorr-1)
+    {
+        UEqn.relax(1);
+    }
+    else
+    {
+        UEqn.relax();
+    }
 
     if (momentumPredictor)
     {
@@ -22,9 +29,11 @@
         (
             UEqn
          ==
-           -fvc::reconstruct
+            fvc::reconstruct
             (
-                mesh.magSf()*(fvc::snGrad(pd) + ghf*fvc::snGrad(rho))
-            )
+                fvc::interpolate(rho)*(g & mesh.Sf())
+              - mesh.magSf()*fvc::snGrad(p)
+            ),
+            mesh.solver(oCorr == nOuterCorr-1 ? "UFinal" : "U")
         );
     }
diff --git a/applications/solvers/multiphase/twoLiquidMixingFoam/alphaEqn.H b/applications/solvers/multiphase/twoLiquidMixingFoam/alphaEqn.H
index c12602536870ab39e1a63a81062b143d5d360c00..8194753c8fca0674fc224b189f88851e4cb24d34 100644
--- a/applications/solvers/multiphase/twoLiquidMixingFoam/alphaEqn.H
+++ b/applications/solvers/multiphase/twoLiquidMixingFoam/alphaEqn.H
@@ -3,7 +3,12 @@
     (
         fvm::ddt(alpha1)
       + fvm::div(phi, alpha1)
-      - fvm::laplacian(Dab, alpha1)
+      //- fvm::Sp(fvc::div(phi), alpha1)
+      - fvm::laplacian
+        (
+            Dab + alphatab*turbulence->nut(), alpha1,
+            "laplacian(Dab,alpha1)"
+        )
     );
 
     alpha1Eqn.solve();
diff --git a/applications/solvers/multiphase/twoLiquidMixingFoam/createFields.H b/applications/solvers/multiphase/twoLiquidMixingFoam/createFields.H
index a38135dc19a968cd10cf38beec6b3a35a4e4165b..b94bf6c23e65cb80f5557f2bccd1ecd8e4c23946 100644
--- a/applications/solvers/multiphase/twoLiquidMixingFoam/createFields.H
+++ b/applications/solvers/multiphase/twoLiquidMixingFoam/createFields.H
@@ -1,9 +1,9 @@
-    Info<< "Reading field pd\n" << endl;
-    volScalarField pd
+    Info<< "Reading field p\n" << endl;
+    volScalarField p
     (
         IOobject
         (
-            "pd",
+            "p",
             runTime.timeName(),
             mesh,
             IOobject::MUST_READ,
@@ -40,7 +40,7 @@
         mesh
     );
 
-#   include "createPhi.H"
+    #include "createPhi.H"
 
     Info<< "Reading transportProperties\n" << endl;
     twoPhaseMixture twoPhaseProperties(U, phi);
@@ -50,6 +50,9 @@
 
     dimensionedScalar Dab(twoPhaseProperties.lookup("Dab"));
 
+    // Read the reciprocal of the turbulent Schmidt number
+    dimensionedScalar alphatab(twoPhaseProperties.lookup("alphatab"));
+
     // Need to store rho for ddt(rho, U)
     volScalarField rho("rho", alpha1*rho1 + (scalar(1) - alpha1)*rho2);
     rho.oldTime();
@@ -72,45 +75,9 @@
     );
 
 
-    Info<< "Calculating field g.h\n" << endl;
-    volScalarField gh("gh", g & mesh.C());
-    surfaceScalarField ghf("gh", g & mesh.Cf());
-
-
-    volScalarField p
-    (
-        IOobject
-        (
-            "p",
-            runTime.timeName(),
-            mesh,
-            IOobject::NO_READ,
-            IOobject::AUTO_WRITE
-        ),
-        pd + rho*gh
-    );
-
-
-    label pdRefCell = 0;
-    scalar pdRefValue = 0.0;
-    setRefCell(pd, mesh.solutionDict().subDict("PISO"), pdRefCell, pdRefValue);
-
+    label pRefCell = 0;
     scalar pRefValue = 0.0;
-
-    if (pd.needReference())
-    {
-        pRefValue = readScalar
-        (
-            mesh.solutionDict().subDict("PISO").lookup("pRefValue")
-        );
-
-        p += dimensionedScalar
-        (
-            "p",
-            p.dimensions(),
-            pRefValue - getRefCellValue(p, pdRefCell)
-        );
-    }
+    setRefCell(p, mesh.solutionDict().subDict("PIMPLE"), pRefCell, pRefValue);
 
 
     // Construct incompressible turbulence model
diff --git a/applications/solvers/multiphase/twoLiquidMixingFoam/pEqn.H b/applications/solvers/multiphase/twoLiquidMixingFoam/pEqn.H
index eaa0cef6294ad14b8b4bfdc7b54201ae811ae26d..7ba3cdba8a6a2badce20af6292008e62487f23b7 100644
--- a/applications/solvers/multiphase/twoLiquidMixingFoam/pEqn.H
+++ b/applications/solvers/multiphase/twoLiquidMixingFoam/pEqn.H
@@ -7,26 +7,37 @@
     surfaceScalarField phiU
     (
         "phiU",
-        (fvc::interpolate(U) & mesh.Sf()) + fvc::ddtPhiCorr(rUA, rho, U, phi)
+        (fvc::interpolate(U) & mesh.Sf())
+      + fvc::ddtPhiCorr(rUA, rho, U, phi)
     );
 
-    phi = phiU - ghf*fvc::snGrad(rho)*rUAf*mesh.magSf();
-
-    adjustPhi(phi, U, pd);
+    phi = phiU + fvc::interpolate(rho)*(g & mesh.Sf())*rUAf;
 
     for(int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
     {
-        fvScalarMatrix pdEqn
+        fvScalarMatrix pEqn
         (
-            fvm::laplacian(rUAf, pd) == fvc::div(phi)
+            fvm::laplacian(rUAf, p) == fvc::div(phi)
         );
 
-        pdEqn.setReference(pdRefCell, pdRefValue);
-        pdEqn.solve();
+        pEqn.setReference(pRefCell, pRefValue);
+
+        if
+        (
+            corr == nCorr-1
+         && nonOrth == nNonOrthCorr
+        )
+        {
+            pEqn.solve(mesh.solver(p.name() + "Final"));
+        }
+        else
+        {
+            pEqn.solve(mesh.solver(p.name()));
+        }
 
         if (nonOrth == nNonOrthCorr)
         {
-            phi -= pdEqn.flux();
+            phi -= pEqn.flux();
         }
     }
 
diff --git a/applications/solvers/multiphase/twoLiquidMixingFoam/twoLiquidMixingFoam.C b/applications/solvers/multiphase/twoLiquidMixingFoam/twoLiquidMixingFoam.C
index 1caf455708079ff2f4f04733c388aa070393ba8a..63991f149e513901c1e15dda5effeeda7567ca28 100644
--- a/applications/solvers/multiphase/twoLiquidMixingFoam/twoLiquidMixingFoam.C
+++ b/applications/solvers/multiphase/twoLiquidMixingFoam/twoLiquidMixingFoam.C
@@ -40,53 +40,52 @@ Description
 
 int main(int argc, char *argv[])
 {
-
-#   include "setRootCase.H"
-#   include "createTime.H"
-#   include "createMesh.H"
-#   include "readEnvironmentalProperties.H"
-#   include "initContinuityErrs.H"
-#   include "createFields.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+    #include "setRootCase.H"
+    #include "createTime.H"
+    #include "createMesh.H"
+    #include "readEnvironmentalProperties.H"
+    #include "readPIMPLEControls.H"
+    #include "initContinuityErrs.H"
+    #include "createFields.H"
+    #include "readTimeControls.H"
+    #include "CourantNo.H"
+    #include "setInitialDeltaT.H"
+
+    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
     Info<< "\nStarting time loop\n" << endl;
 
-    while (runTime.loop())
+    while (runTime.run())
     {
-        Info<< "Time = " << runTime.timeName() << nl << endl;
+        #include "readPIMPLEControls.H"
+        #include "readTimeControls.H"
+        #include "CourantNo.H"
+        #include "setDeltaT.H"
 
-#       include "readPISOControls.H"
-#       include "CourantNo.H"
+        runTime++;
 
-        twoPhaseProperties.correct();
+        Info<< "Time = " << runTime.timeName() << nl << endl;
 
-#       include "alphaEqn.H"
+        // --- Pressure-velocity PIMPLE corrector loop
+        for (int oCorr=0; oCorr<nOuterCorr; oCorr++)
+        {
+            twoPhaseProperties.correct();
 
-#       include "UEqn.H"
+            #include "alphaEqn.H"
 
-        // --- PISO loop
-        for (int corr=0; corr<nCorr; corr++)
-        {
-#           include "pEqn.H"
-        }
+            #include "UEqn.H"
 
-#       include "continuityErrs.H"
+            // --- PISO loop
+            for (int corr=0; corr<nCorr; corr++)
+            {
+                #include "pEqn.H"
+            }
 
-        p = pd + rho*gh;
+            #include "continuityErrs.H"
 
-        if (pd.needReference())
-        {
-            p += dimensionedScalar
-            (
-                "p",
-                p.dimensions(),
-                pRefValue - getRefCellValue(p, pdRefCell)
-            );
+            turbulence->correct();
         }
 
-        turbulence->correct();
-
         runTime.write();
 
         Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s"
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/twoPhaseEulerFoam.C b/applications/solvers/multiphase/twoPhaseEulerFoam/twoPhaseEulerFoam.C
index ce3fb2aa551eeb45011a373277d6d8e169c01b7e..a28d929578081eb03bee4d6599b6575dc40341b7 100644
--- a/applications/solvers/multiphase/twoPhaseEulerFoam/twoPhaseEulerFoam.C
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/twoPhaseEulerFoam.C
@@ -47,59 +47,58 @@ Description
 
 int main(int argc, char *argv[])
 {
+    #include "setRootCase.H"
 
-#   include "setRootCase.H"
+    #include "createTime.H"
+    #include "createMesh.H"
+    #include "readEnvironmentalProperties.H"
+    #include "createFields.H"
+    #include "readPPProperties.H"
+    #include "initContinuityErrs.H"
+    #include "readTimeControls.H"
+    #include "CourantNo.H"
+    #include "setInitialDeltaT.H"
 
-#   include "createTime.H"
-#   include "createMesh.H"
-#   include "readEnvironmentalProperties.H"
-#   include "createFields.H"
-#   include "readPPProperties.H"
-#   include "initContinuityErrs.H"
-#   include "readTimeControls.H"
-#   include "CourantNo.H"
-#   include "setInitialDeltaT.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
     Info<< "\nStarting time loop\n" << endl;
 
     while (runTime.run())
     {
-#       include "readTwoPhaseEulerFoamControls.H"
-#       include "CourantNos.H"
-#       include "setDeltaT.H"
+        #include "readTwoPhaseEulerFoamControls.H"
+        #include "CourantNos.H"
+        #include "setDeltaT.H"
 
         runTime++;
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
-#       include "alphaEqn.H"
+        #include "alphaEqn.H"
 
-#       include "liftDragCoeffs.H"
+        #include "liftDragCoeffs.H"
 
-#       include "UEqns.H"
+        #include "UEqns.H"
 
         // --- PISO loop
         for (int corr=0; corr<nCorr; corr++)
         {
-#           include "pEqn.H"
+            #include "pEqn.H"
 
             if (correctAlpha && corr<nCorr-1)
             {
-#               include "alphaEqn.H"
+                #include "alphaEqn.H"
             }
         }
 
-#       include "DDtU.H"
+        #include "DDtU.H"
 
-#       include "kEpsilon.H"
+        #include "kEpsilon.H"
 
         if (kineticTheory.on())
         {
             kineticTheory.solve();
             nuEffa += kineticTheory.mua()/rhoa;
         }
-#       include "write.H"
+        #include "write.H"
 
         Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s"
             << "  ClockTime = " << runTime.elapsedClockTime() << " s"
diff --git a/applications/solvers/stressAnalysis/solidDisplacementFoam/solidDisplacementFoam.C b/applications/solvers/stressAnalysis/solidDisplacementFoam/solidDisplacementFoam.C
index 4574ef7f1c5cc46bf4ddbee646b4f8ed4eb9e003..e7f432d29d8f25b3ddb8837309c371ddbe5435ee 100644
--- a/applications/solvers/stressAnalysis/solidDisplacementFoam/solidDisplacementFoam.C
+++ b/applications/solvers/stressAnalysis/solidDisplacementFoam/solidDisplacementFoam.C
@@ -43,17 +43,16 @@ Description
 
 int main(int argc, char *argv[])
 {
+    #include "setRootCase.H"
 
-#   include "setRootCase.H"
+    #include "createTime.H"
+    #include "createMesh.H"
+    #include "readMechanicalProperties.H"
+    #include "readThermalProperties.H"
+    #include "readSolidDisplacementFoamControls.H"
+    #include "createFields.H"
 
-#   include "createTime.H"
-#   include "createMesh.H"
-#   include "readMechanicalProperties.H"
-#   include "readThermalProperties.H"
-#   include "readSolidDisplacementFoamControls.H"
-#   include "createFields.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
     Info<< "\nCalculating displacement field\n" << endl;
 
@@ -61,7 +60,7 @@ int main(int argc, char *argv[])
     {
         Info<< "Iteration: " << runTime.value() << nl << endl;
 
-#       include "readSolidDisplacementFoamControls.H"
+        #include "readSolidDisplacementFoamControls.H"
 
         int iCorr = 0;
         scalar initialResidual = 0;
@@ -91,7 +90,7 @@ int main(int argc, char *argv[])
                     const volScalarField& T = Tptr();
                     DEqn += fvc::grad(threeKalpha*T);
                 }
-                
+
                 //DEqn.setComponentReference(1, 0, vector::X, 0);
                 //DEqn.setComponentReference(1, 0, vector::Z, 0);
 
@@ -123,7 +122,7 @@ int main(int argc, char *argv[])
 
         } while (initialResidual > convergenceTolerance && ++iCorr < nCorr);
 
-#       include "calculateStress.H"
+        #include "calculateStress.H"
 
         Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s"
             << "  ClockTime = " << runTime.elapsedClockTime() << " s"
diff --git a/applications/test/DynamicField/DynamicFieldTest.C b/applications/test/DynamicField/DynamicFieldTest.C
new file mode 100644
index 0000000000000000000000000000000000000000..19ba78109d84db17ccdd443ac409db03bc5e30c2
--- /dev/null
+++ b/applications/test/DynamicField/DynamicFieldTest.C
@@ -0,0 +1,80 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Description
+
+\*---------------------------------------------------------------------------*/
+
+#include "DynamicField.H"
+#include "IOstreams.H"
+#include "labelField.H"
+
+using namespace Foam;
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// Main program:
+
+int main(int argc, char *argv[])
+{
+    {
+        DynamicField<label> dl(10);
+        Pout<< "null construct dl:" << dl << endl;
+        dl.append(3);
+        dl.append(2);
+        dl.append(1);
+        Pout<< "appending : dl:" << dl << endl;
+    }
+
+    {
+        DynamicField<label> dl(IStringStream("(1 2 3)")());
+        Pout<< "reading : dl:" << dl << endl;
+    }
+
+    {
+        labelField lf(3);
+        lf[0] = 1;
+        lf[1] = 2;
+        lf[2] = 3;
+        DynamicField<label> dl;
+        dl = lf;
+        Pout<< "assigning from labelField : dl:" << dl << endl;
+    }
+
+    {
+        labelField lf(3);
+        lf[0] = 1;
+        lf[1] = 2;
+        lf[2] = 3;
+        DynamicField<label> dl(lf);
+        Pout<< "constructing from labelField dl:" << dl << endl;
+    }
+
+
+    Info<< "\nEnd\n";
+
+    return 0;
+}
+
+
+// ************************************************************************* //
diff --git a/applications/test/DynamicField/Make/files b/applications/test/DynamicField/Make/files
new file mode 100644
index 0000000000000000000000000000000000000000..bcf6af7eceec7845507b794f6183bc83694839b6
--- /dev/null
+++ b/applications/test/DynamicField/Make/files
@@ -0,0 +1,3 @@
+DynamicFieldTest.C
+
+EXE = $(FOAM_USER_APPBIN)/DynamicFieldTest
diff --git a/applications/test/DynamicField/Make/options b/applications/test/DynamicField/Make/options
new file mode 100644
index 0000000000000000000000000000000000000000..6a9e9810b3d5ce6684bdaf03143933480ff45e42
--- /dev/null
+++ b/applications/test/DynamicField/Make/options
@@ -0,0 +1,2 @@
+/* EXE_INC = -I$(LIB_SRC)/cfdTools/include */
+/* EXE_LIBS = -lfiniteVolume */
diff --git a/applications/test/directMappedPatch/Make/files b/applications/test/directMappedPatch/Make/files
new file mode 100644
index 0000000000000000000000000000000000000000..65f39a47b8e09776cb7c8259d27f73a15663e335
--- /dev/null
+++ b/applications/test/directMappedPatch/Make/files
@@ -0,0 +1,4 @@
+
+testDirectMappedPatch.C
+
+EXE = $(FOAM_USER_APPBIN)/testDirectMappedPatch
diff --git a/applications/test/directMappedPatch/Make/options b/applications/test/directMappedPatch/Make/options
new file mode 100644
index 0000000000000000000000000000000000000000..d76bd10c8fa52345df9ce1be79cdeae2b41dde84
--- /dev/null
+++ b/applications/test/directMappedPatch/Make/options
@@ -0,0 +1,6 @@
+EXE_INC = \
+    -I$(LIB_SRC)/meshTools/lnInclude \
+    -I$(LIB_SRC)/finiteVolume/lnInclude
+
+EXE_LIBS = \
+    -lfiniteVolume
diff --git a/applications/test/directMappedPatch/testDirectMappedPatch.C b/applications/test/directMappedPatch/testDirectMappedPatch.C
new file mode 100644
index 0000000000000000000000000000000000000000..dd27ff6955d92b5adf9023913b2966b0ee38f748
--- /dev/null
+++ b/applications/test/directMappedPatch/testDirectMappedPatch.C
@@ -0,0 +1,127 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2007 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Application
+    testDirectMappedPatch
+
+Description
+    Test direct mapped b.c. by mapping face centres (mesh.C().boundaryField()).
+
+\*---------------------------------------------------------------------------*/
+
+
+#include "argList.H"
+#include "fvMesh.H"
+#include "volFields.H"
+#include "meshTools.H"
+#include "Time.H"
+#include "OFstream.H"
+#include "volFields.H"
+#include "directMappedFixedValueFvPatchFields.H"
+
+using namespace Foam;
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+
+// Main program:
+
+int main(int argc, char *argv[])
+{
+#   include "addTimeOptions.H"
+#   include "setRootCase.H"
+#   include "createTime.H"
+#   include "createMesh.H"
+
+    wordList patchFieldTypes
+    (
+        mesh.boundaryMesh().size(),
+        calculatedFvPatchVectorField::typeName
+    );
+
+    forAll(mesh.boundaryMesh(), patchI)
+    {
+        if (isA<directMappedPolyPatch>(mesh.boundaryMesh()[patchI]))
+        {
+            patchFieldTypes[patchI] =
+                directMappedFixedValueFvPatchVectorField::typeName;
+        }
+    }
+
+    Pout<< "patchFieldTypes:" << patchFieldTypes << endl;
+
+    volVectorField cc
+    (
+        IOobject
+        (
+            "cc",
+            runTime.timeName(),
+            mesh,
+            IOobject::NO_READ,
+            IOobject::AUTO_WRITE
+        ),
+        mesh,
+        dimensionedVector("zero", dimLength, vector::zero),
+        patchFieldTypes
+    );
+    
+    cc.internalField() = mesh.C().internalField();
+    cc.boundaryField().updateCoeffs();
+
+    forAll(cc.boundaryField(), patchI)
+    {
+        if
+        (
+            isA<directMappedFixedValueFvPatchVectorField>
+            (
+                cc.boundaryField()[patchI]
+            )
+        )
+        {
+            Pout<< "Detected a directMapped patch:" << patchI << endl;
+
+            OFstream str(mesh.boundaryMesh()[patchI].name() + ".obj");
+            Pout<< "Writing mapped values to " << str.name() << endl;
+
+            label vertI = 0;
+            const fvPatchVectorField& fvp = cc.boundaryField()[patchI];
+
+            forAll(fvp, i)
+            {
+                meshTools::writeOBJ(str, fvp.patch().Cf()[i]);
+                vertI++;
+                meshTools::writeOBJ(str, fvp[i]);
+                vertI++;
+                str << "l " << vertI-1 << ' ' << vertI << nl;
+            }
+        }
+    }
+
+    Info<< "End\n" << endl;
+
+    return 0;
+}
+
+
+// ************************************************************************* //
diff --git a/applications/test/extendedStencil/Make/files b/applications/test/extendedStencil/Make/files
new file mode 100644
index 0000000000000000000000000000000000000000..236668cde8f9c8da6ac1f75d1e0d9de0f36ad04f
--- /dev/null
+++ b/applications/test/extendedStencil/Make/files
@@ -0,0 +1,4 @@
+
+testExtendedStencil.C
+
+EXE = $(FOAM_USER_APPBIN)/testExtendedStencil
diff --git a/applications/test/extendedStencil/Make/options b/applications/test/extendedStencil/Make/options
new file mode 100644
index 0000000000000000000000000000000000000000..b733f6ac04019776e5ae1378c65835fcd6209972
--- /dev/null
+++ b/applications/test/extendedStencil/Make/options
@@ -0,0 +1,6 @@
+EXE_INC = \
+    -I$(LIB_SRC)/finiteVolume/lnInclude \
+    -I$(LIB_SRC)/meshTools/lnInclude
+
+EXE_LIBS = \
+    -lfiniteVolume
diff --git a/applications/test/extendedStencil/testExtendedStencil.C b/applications/test/extendedStencil/testExtendedStencil.C
new file mode 100644
index 0000000000000000000000000000000000000000..b8db2b89bf993552dd8582ba0c77c2cef58b121a
--- /dev/null
+++ b/applications/test/extendedStencil/testExtendedStencil.C
@@ -0,0 +1,499 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2007 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Application
+    testExtendedStencil
+
+Description
+    Test app for determining extended stencil.
+
+\*---------------------------------------------------------------------------*/
+
+#include "argList.H"
+#include "fvMesh.H"
+#include "volFields.H"
+#include "Time.H"
+#include "mapDistribute.H"
+#include "OFstream.H"
+#include "meshTools.H"
+//#include "FECCellToFaceStencil.H"
+//#include "CFCCellToFaceStencil.H"
+//#include "CPCCellToFaceStencil.H"
+//#include "CECCellToFaceStencil.H"
+//#include "extendedCentredCellToFaceStencil.H"
+//#include "extendedUpwindCellToFaceStencil.H"
+
+//#include "centredCFCCellToFaceStencilObject.H"
+//#include "centredFECCellToFaceStencilObject.H"
+//#include "centredCPCCellToFaceStencilObject.H"
+//#include "centredCECCellToFaceStencilObject.H"
+
+//#include "upwindFECCellToFaceStencilObject.H"
+//#include "upwindCPCCellToFaceStencilObject.H"
+//#include "upwindCECCellToFaceStencilObject.H"
+
+//#include "upwindCFCCellToFaceStencilObject.H"
+#include "centredCFCFaceToCellStencilObject.H"
+
+using namespace Foam;
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+void writeStencilOBJ
+(
+    const fileName& fName,
+    const point& fc,
+    const List<point>& stencilCc
+)
+{
+    OFstream str(fName);
+    label vertI = 0;
+
+    meshTools::writeOBJ(str, fc);
+    vertI++;
+
+    forAll(stencilCc, i)
+    {
+        meshTools::writeOBJ(str, stencilCc[i]);
+        vertI++;
+        str << "l 1 " << vertI << nl;
+    }
+}
+
+
+// Stats
+void writeStencilStats(const labelListList& stencil)
+{
+    label sumSize = 0;
+    label nSum = 0;
+    label minSize = labelMax;
+    label maxSize = labelMin;
+
+    forAll(stencil, i)
+    {
+        const labelList& sCells = stencil[i];
+
+        if (sCells.size() > 0)
+        {
+            sumSize += sCells.size();
+            nSum++;
+            minSize = min(minSize, sCells.size());
+            maxSize = max(maxSize, sCells.size());
+        }
+    }
+    reduce(sumSize, sumOp<label>());
+    reduce(nSum, sumOp<label>());
+    sumSize /= nSum;
+
+    reduce(minSize, minOp<label>());
+    reduce(maxSize, maxOp<label>());
+
+    Info<< "Stencil size :" << nl
+        << "    average : " << sumSize << nl
+        << "    min     : " << minSize << nl
+        << "    max     : " << maxSize << nl
+        << endl;
+}
+
+
+// Main program:
+
+int main(int argc, char *argv[])
+{
+#   include "addTimeOptions.H"
+#   include "setRootCase.H"
+#   include "createTime.H"
+
+    // Get times list
+    instantList Times = runTime.times();
+#   include "checkTimeOptions.H"
+    runTime.setTime(Times[startTime], startTime);
+#   include "createMesh.H"
+
+    // Force calculation of extended edge addressing
+    const labelListList& edgeFaces = mesh.edgeFaces();
+    const labelListList& edgeCells = mesh.edgeCells();
+    const labelListList& pointCells = mesh.pointCells();
+    Info<< "dummy:" << edgeFaces.size() + edgeCells.size() + pointCells.size()
+        << endl;
+
+
+    // Centred, semi-extended stencil (edge cells only)
+    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+//    {
+//        //const FECCellToFaceStencil cfcStencil(mesh);
+//        //const extendedCentredCellToFaceStencil addressing
+//        //(
+//        //    cfcStencil
+//        //);
+//        const extendedCentredStencil& addressing =
+//        centredFECCellToFaceStencilObject::New
+//        (
+//            mesh
+//        );
+//
+//        Info<< "faceEdgeCell:" << endl;
+//        writeStencilStats(addressing.stencil());
+//
+//        // Collect stencil cell centres
+//        List<List<point> > stencilPoints(mesh.nFaces());
+//        addressing.collectData
+//        (
+//            mesh.C(),
+//            stencilPoints
+//        );
+//
+//        forAll(stencilPoints, faceI)
+//        {
+//            writeStencilOBJ
+//            (
+//                runTime.path()/"faceEdgeCell" + Foam::name(faceI) + ".obj",
+//                mesh.faceCentres()[faceI],
+//                stencilPoints[faceI]
+//            );
+//        }
+//    }
+
+
+
+
+//    // Centred, face stencil
+//    // ~~~~~~~~~~~~~~~~~~~~~
+//
+//    {
+//        const extendedCentredCellToFaceStencil& addressing =
+//        centredCFCCellToFaceStencilObject::New
+//        (
+//            mesh
+//        );
+//        
+//        Info<< "cellFaceCell:" << endl;
+//        writeStencilStats(addressing.stencil());
+//        
+//        
+//        //// Do some interpolation.
+//        //{
+//        //    const labelListList& stencil = addressing.stencil();
+//        //    List<List<scalar> > stencilWeights(stencil.size());
+//        //    forAll(stencil, faceI)
+//        //    {
+//        //        const labelList& fStencil = stencil[faceI];
+//        //
+//        //        if (fStencil.size() > 0)
+//        //        {
+//        //            // Uniform weights
+//        //            stencilWeights[faceI] = scalarList
+//        //            (
+//        //                fStencil.size(),
+//        //                1.0/fStencil.size()
+//        //            );
+//        //        }
+//        //    }
+//        //
+//        //    tmp<surfaceVectorField> tfc
+//        //    (
+//        //        addressing.weightedSum(mesh.C(), stencilWeights)
+//        //    );
+//        //}
+//
+//
+//        // Collect stencil cell centres
+//        List<List<point> > stencilPoints(mesh.nFaces());
+//        addressing.collectData
+//        (
+//            mesh.C(),
+//            stencilPoints
+//        );
+//        
+//        forAll(stencilPoints, faceI)
+//        {
+//            if (stencilPoints[faceI].size() >= 15)
+//            {
+//                writeStencilOBJ
+//                (
+//                    runTime.path()/"centredFace" + Foam::name(faceI) + ".obj",
+//                    mesh.faceCentres()[faceI],
+//                    stencilPoints[faceI]
+//                );
+//            }
+//        }
+//    }
+
+
+//    // Centred, point stencil
+//    // ~~~~~~~~~~~~~~~~~~~~~~
+//
+//    {
+//        //const extendedCentredCellToFaceStencil& addressing =
+//        //centredCPCStencilObject::New
+//        //(
+//        //    mesh
+//        //);
+//        //
+//        //Info<< "cellPointCell:" << endl;
+//        //writeStencilStats(addressing.stencil());
+//        //
+//        //
+//        //// Collect stencil cell centres
+//        //List<List<point> > stencilPoints(mesh.nFaces());
+//        //addressing.collectData
+//        //(
+//        //    mesh.C(),
+//        //    stencilPoints
+//        //);
+//        //
+//        //forAll(stencilPoints, faceI)
+//        //{
+//        //    writeStencilOBJ
+//        //    (
+//        //        runTime.path()/"centredPoint" + Foam::name(faceI) + ".obj",
+//        //        mesh.faceCentres()[faceI],
+//        //        stencilPoints[faceI]
+//        //    );
+//        //}
+//    }
+
+
+
+//    // Centred, edge stencil
+//    // ~~~~~~~~~~~~~~~~~~~~~~
+//
+//    {
+//        //const extendedCentredCellToFaceStencil& addressing =
+//        //centredCECStencilObject::New
+//        //(
+//        //    mesh
+//        //);
+//        //
+//        //Info<< "cellEdgeCell:" << endl;
+//        //writeStencilStats(addressing.stencil());
+//        //
+//        //
+//        //// Collect stencil cell centres
+//        //List<List<point> > stencilPoints(mesh.nFaces());
+//        //addressing.collectData
+//        //(
+//        //    mesh.C(),
+//        //    stencilPoints
+//        //);
+//        //
+//        //forAll(stencilPoints, faceI)
+//        //{
+//        //    writeStencilOBJ
+//        //    (
+//        //        runTime.path()/"centredEdge" + Foam::name(faceI) + ".obj",
+//        //        mesh.faceCentres()[faceI],
+//        //        stencilPoints[faceI]
+//        //    );
+//        //}
+//    }
+
+
+
+    // Upwind, semi-extended stencil
+    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+    //{
+    //    const extendedUpwindCellToFaceStencil& addressing =
+    //    upwindFECCellToFaceStencilObject::New
+    //    (
+    //        mesh,
+    //        0.5
+    //    );
+    //
+    //    Info<< "upwind-faceEdgeCell:" << endl;
+    //    writeStencilStats(addressing.ownStencil());
+    //
+    //    {
+    //        // Collect stencil cell centres
+    //        List<List<point> > ownPoints(mesh.nFaces());
+    //        addressing.collectData
+    //        (
+    //            addressing.ownMap(),
+    //            addressing.ownStencil(),
+    //            mesh.C(),
+    //            ownPoints
+    //        );
+    //
+    //        forAll(ownPoints, faceI)
+    //        {
+    //            writeStencilOBJ
+    //            (
+    //                runTime.path()/"ownFEC" + Foam::name(faceI) + ".obj",
+    //                mesh.faceCentres()[faceI],
+    //                ownPoints[faceI]
+    //            );
+    //        }
+    //    }
+    //    {
+    //        // Collect stencil cell centres
+    //        List<List<point> > neiPoints(mesh.nFaces());
+    //        addressing.collectData
+    //        (
+    //            addressing.neiMap(),
+    //            addressing.neiStencil(),
+    //            mesh.C(),
+    //            neiPoints
+    //        );
+    //
+    //        forAll(neiPoints, faceI)
+    //        {
+    //            writeStencilOBJ
+    //            (
+    //                runTime.path()/"neiFEC" + Foam::name(faceI) + ".obj",
+    //                mesh.faceCentres()[faceI],
+    //                neiPoints[faceI]
+    //            );
+    //        }
+    //    }
+    //}
+
+
+
+    // Upwind, extended stencil
+    // ~~~~~~~~~~~~~~~~~~~~~~~~
+
+    //{
+    //    const extendedUpwindCellToFaceStencil& addressing =
+    //    upwindCFCCellToFaceStencilObject::New
+    //    (
+    //        mesh,
+    //        0.5
+    //    );
+    //
+    //    Info<< "upwind-cellFaceCell:" << endl;
+    //    writeStencilStats(addressing.ownStencil());
+    //
+    //    {
+    //        // Collect stencil cell centres
+    //        List<List<point> > ownPoints(mesh.nFaces());
+    //        addressing.collectData
+    //        (
+    //            addressing.ownMap(),
+    //            addressing.ownStencil(),
+    //            mesh.C(),
+    //            ownPoints
+    //        );
+    //
+    //        forAll(ownPoints, faceI)
+    //        {
+    //            writeStencilOBJ
+    //            (
+    //                runTime.path()/"ownCFC" + Foam::name(faceI) + ".obj",
+    //                mesh.faceCentres()[faceI],
+    //                ownPoints[faceI]
+    //            );
+    //        }
+    //    }
+    //    {
+    //        // Collect stencil cell centres
+    //        List<List<point> > neiPoints(mesh.nFaces());
+    //        addressing.collectData
+    //        (
+    //            addressing.neiMap(),
+    //            addressing.neiStencil(),
+    //            mesh.C(),
+    //            neiPoints
+    //        );
+    //
+    //        forAll(neiPoints, faceI)
+    //        {
+    //            writeStencilOBJ
+    //            (
+    //                runTime.path()/"neiCFC" + Foam::name(faceI) + ".obj",
+    //                mesh.faceCentres()[faceI],
+    //                neiPoints[faceI]
+    //            );
+    //        }
+    //    }
+    //}
+
+
+
+    //---- CELL CENTRED STENCIL -----
+
+    // Centred, cell stencil
+    // ~~~~~~~~~~~~~~~~~~~~~
+
+    {
+        const extendedCentredFaceToCellStencil& addressing =
+        centredCFCFaceToCellStencilObject::New
+        (
+            mesh
+        );
+        
+        Info<< "cellFaceCell:" << endl;
+        writeStencilStats(addressing.stencil());
+        
+        // Collect stencil face centres
+        List<List<point> > stencilPoints(mesh.nCells());
+        addressing.collectData
+        (
+            mesh.Cf(),
+            stencilPoints
+        );
+        
+        forAll(stencilPoints, cellI)
+        {
+            writeStencilOBJ
+            (
+                runTime.path()/"centredCell" + Foam::name(cellI) + ".obj",
+                mesh.cellCentres()[cellI],
+                stencilPoints[cellI]
+            );
+        }
+    }
+
+
+//XXXXXX
+//    // Evaluate
+//    List<List<scalar> > stencilData(faceStencils.size());
+//    collectStencilData
+//    (
+//        distMap,
+//        faceStencils,
+//        vf,
+//        stencilData
+//    );
+//    for(label faci = 0; faci < mesh.nInternalFaces(); faci++)
+//    {
+//        const scalarList& stData = stencilData[faceI];
+//        const scalarList& stWeight = fit[faceI];
+//
+//        forAll(stData, i)
+//        {
+//            sf[faceI] += stWeight[i]*stData[i];
+//        }
+//    }
+//    See finiteVolume/lnInclude/leastSquaresGrad.C
+//XXXXXX
+
+    Pout<< "End\n" << endl;
+
+    return 0;
+}
+
+
+// ************************************************************************* //
diff --git a/applications/test/ptrList/Make/files b/applications/test/ptrList/Make/files
deleted file mode 100644
index 2a4e0ad01b0034628d241506a8a8919e9b30b214..0000000000000000000000000000000000000000
--- a/applications/test/ptrList/Make/files
+++ /dev/null
@@ -1,3 +0,0 @@
-ptrListTest.C
-
-EXE = $(FOAM_USER_APPBIN)/ptrListTest
diff --git a/applications/test/readCHEMKINIII/Make/options b/applications/test/readCHEMKINIII/Make/options
index dcc48758d3cc8768ef85a9c2e542f6503dcc63b6..233d9fa2ef5a1b20403b69c5470f3a5db127765a 100644
--- a/applications/test/readCHEMKINIII/Make/options
+++ b/applications/test/readCHEMKINIII/Make/options
@@ -1,8 +1,8 @@
 EXE_INC = \
     -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \
-    -I$(LIB_SRC)/thermophysicalModels/combustion/lnInclude
+    -I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude
 
 EXE_LIBS = \
     -lspecie \
     -lbasicThermophysicalModels \
-    -lcombustionThermophysicalModels
+    -lreactionThermophysicalModels
diff --git a/applications/test/speed/Make/files b/applications/test/speed/Make/files
deleted file mode 100644
index 84a6d2fa6202cc1e7fb7482bfc9e23dc718b406d..0000000000000000000000000000000000000000
--- a/applications/test/speed/Make/files
+++ /dev/null
@@ -1,3 +0,0 @@
-speedTest.C
-
-EXE = $(FOAM_USER_APPBIN)/speedTest
diff --git a/applications/test/speed/Make/options b/applications/test/speed/Make/options
deleted file mode 100644
index e68056198750cebb50fea02c6fffbf8db9220261..0000000000000000000000000000000000000000
--- a/applications/test/speed/Make/options
+++ /dev/null
@@ -1 +0,0 @@
-EXE_INC = /* -ffast-math -mtune=core2 */
diff --git a/applications/test/speed/scalarSpeedTest/Make/files b/applications/test/speed/scalarSpeedTest/Make/files
new file mode 100644
index 0000000000000000000000000000000000000000..dae64db89f8cb8366067016721994cf8b3d09b82
--- /dev/null
+++ b/applications/test/speed/scalarSpeedTest/Make/files
@@ -0,0 +1,3 @@
+scalarSpeedTest.C
+
+EXE = $(FOAM_USER_APPBIN)/scalarSpeedTest
diff --git a/applications/test/ptrList/Make/options b/applications/test/speed/scalarSpeedTest/Make/options
similarity index 100%
rename from applications/test/ptrList/Make/options
rename to applications/test/speed/scalarSpeedTest/Make/options
diff --git a/applications/test/speed/scalarSpeedTest/scalarSpeedTest.C b/applications/test/speed/scalarSpeedTest/scalarSpeedTest.C
new file mode 100644
index 0000000000000000000000000000000000000000..e1858e2d42bf578d54a747c469019fedbd1a3bdd
--- /dev/null
+++ b/applications/test/speed/scalarSpeedTest/scalarSpeedTest.C
@@ -0,0 +1,192 @@
+#include "primitiveFields.H"
+#include "Random.H"
+#include "cpuTime.H"
+#include "IOstreams.H"
+#include "OFstream.H"
+
+using namespace Foam;
+
+int main()
+{
+    Info<< "Initialising fields" << endl;
+
+    const label nIter = 100;
+    const label size = 10000000;
+    const label rndAddrSkip = 40;
+    const label redFac = 6;
+    const label redSize = size/redFac;
+    Random genAddr(100);
+
+    double* f1 = new double[size];
+    double* f2 = new double[size];
+    double* f3 = new double[size];
+    double* f4 = new double[size];
+    double* fr = new double[redSize];
+    label*  addr = new label[size];
+    label*  redAddr = new label[size];
+    label*  redAddr2 = new label[size];
+
+    for (register label i=0; i<size; i++)
+    {
+        f1[i] = 1.0;
+        f2[i] = 1.0;
+        f3[i] = 1.0;
+        addr[i] = i;
+        redAddr[i] = i/redFac;
+        redAddr2[i] = (size - i - 1)/redFac;
+    }
+
+    for (register label i=0; i<size; i+=rndAddrSkip)
+    {
+        addr[i] = genAddr.integer(0, size-1);
+    }
+
+    for (register label i=0; i<redSize; i++)
+    {
+        fr[i] = 1.0;
+    }
+
+    Info<< "Done\n" <<endl;
+
+    {
+        Info<< "Single loop combined operation (expression templates)"
+            << endl;
+
+        cpuTime executionTime;
+
+        for (int j=0; j<nIter; j++)
+        {
+            for (register label i=0; i<size; i++)
+            {
+                f4[i] = f1[i] + f2[i] - f3[i];
+            }
+        }
+
+        Info<< "ExecutionTime = "
+            << executionTime.elapsedCpuTime()
+            << " s\n" << endl;
+
+        Snull<< f4[1] << endl << endl;
+    }
+
+    {
+        Info<< "Single loop combined operation with indirect addressing"
+            << endl;
+
+        cpuTime executionTime;
+
+        for (int j=0; j<nIter; j++)
+        {
+            for (register label i=0; i<size; i++)
+            {
+                f4[addr[i]] = f1[addr[i]] + f2[addr[i]] - f3[addr[i]];
+            }
+        }
+
+        Info<< "ExecutionTime = "
+            << executionTime.elapsedCpuTime()
+            << " s\n" << endl;
+
+        Snull<< f4[1] << endl << endl;
+    }
+
+    {
+        Info<< "Single loop reduction operation"
+            << endl;
+
+        cpuTime executionTime;
+        label redOffset = (size - 1)/redFac;
+
+        for (int j=0; j<nIter; j++)
+        {
+            for (register label i=0; i<size; i++)
+            {
+                label j = i/redFac;
+                fr[j] += f1[i];
+                fr[redOffset - j] -= f2[i];
+            }
+        }
+
+        Info<< "ExecutionTime = "
+            << executionTime.elapsedCpuTime()
+            << " s\n" << endl;
+
+        Snull<< fr[1] << endl << endl;
+    }
+
+    {
+        Info<< "Single loop reduction operation with indirect addressing"
+            << endl;
+
+        cpuTime executionTime;
+
+        for (int j=0; j<nIter; j++)
+        {
+            for (register label i=0; i<size; i++)
+            {
+                fr[redAddr[i]] += f1[i];
+                fr[redAddr2[i]] -= f2[i];
+            }
+        }
+
+        Info<< "ExecutionTime = "
+            << executionTime.elapsedCpuTime()
+            << " s\n" << endl;
+
+        Snull<< fr[1] << endl << endl;
+    }
+
+    {
+        Info<< "Separate loops ?= operations" << endl;
+
+        cpuTime executionTime;
+
+        for (int j=0; j<nIter; j++)
+        {
+            for (register label i=0; i<size; i++)
+            {
+                f4[i] = f1[i];
+            }
+            for (register label i=0; i<size; i++)
+            {
+                f4[i] += f2[i];
+            }
+            for (register label i=0; i<size; i++)
+            {
+                f4[i] -= f3[i];
+            }
+        }
+
+        Info<< "ExecutionTime = "
+            << executionTime.elapsedCpuTime()
+            << " s\n" << endl;
+
+        Snull<< f4[1] << endl << endl;
+    }
+
+    {
+        Info<< "OpenFOAM field algebra" << endl;
+
+        scalarField
+            sf1(size, 1.0),
+            sf2(size, 1.0),
+            sf3(size, 1.0),
+            sf4(size);
+
+        cpuTime executionTime;
+
+        for (int j=0; j<nIter; j++)
+        {
+            //sf4 = sf1 + sf2 - sf3;
+            sf4 = sf1;
+            sf4 += sf2;
+            sf4 -= sf3;
+        }
+
+        Info<< "ExecutionTime = "
+            << executionTime.elapsedCpuTime()
+            << " s\n" << endl;
+
+        Snull<< sf4[1] << endl << endl;
+    }
+}
diff --git a/applications/test/speed/speedTest.C b/applications/test/speed/speedTest.C
deleted file mode 100644
index 052514359190204cbf8d9cab1fab1470461f9f2d..0000000000000000000000000000000000000000
--- a/applications/test/speed/speedTest.C
+++ /dev/null
@@ -1,99 +0,0 @@
-#include "primitiveFields.H"
-#include "cpuTime.H"
-#include "IOstreams.H"
-
-using namespace Foam;
-
-int main()
-{
-    const label nIter = 10;
-    const label size = 10000000;
-
-    double* f1 = new double[size];
-    double* f2 = new double[size];
-    double* f3 = new double[size];
-    double* f4 = new double[size];
-
-    for (register label i=0; i<size; i++)
-    {
-        f1[i] = 1.0;
-        f2[i] = 1.0;
-        f3[i] = 1.0;
-    }
-
-    cpuTime executionTime1;
-
-    for (int j=0; j<nIter; j++)
-    {
-        for (register label i=0; i<size; i++)
-        {
-            f4[i] = f1[i] + f2[i] - f3[i];
-        }
-    }
-
-    Info<< "ExecutionTime = "
-        << executionTime1.elapsedCpuTime()
-        << " s\n" << endl;
-
-    Info << f4[1] << endl << endl;
-
-
-    scalarField sf1(size, 1.0), sf2(size, 1.0), sf3(size, 1.0), sf4(size);
-
-    cpuTime executionTime2;
-
-    for (register int j=0; j<nIter; j++)
-    {
-        sf4 = sf1 + sf2 - sf3;
-        //sf4 = sf1;
-        //sf4 += sf2;
-        //sf4 -= sf3;
-    }
-
-    Info<< "ExecutionTime = "
-        << executionTime2.elapsedCpuTime()
-        << " s\n" << endl;
-
-    Info << sf4[1] << endl << endl;
-
-
-    vectorField 
-        vf1(size, vector::one),
-        vf2(size, vector::one),
-        vf3(size, vector::one),
-        vf4(size);
-
-    cpuTime executionTime3;
-
-    for (register int j=0; j<nIter; j++)
-    {
-        vf4 = vf1 + vf2 - vf3;
-    }
-
-    Info<< "ExecutionTime = "
-        << executionTime3.elapsedCpuTime()
-        << " s\n" << endl;
-
-    Info << vf4[1] << endl << endl;
-
-    cpuTime executionTime4;
-
-    scalarField sf11(size, 1.0), sf12(size, 1.0), sf13(size, 1.0), sf14(size);
-    scalarField sf21(size, 1.0), sf22(size, 1.0), sf23(size, 1.0), sf24(size);
-    scalarField sf31(size, 1.0), sf32(size, 1.0), sf33(size, 1.0), sf34(size);
-
-    for (register int j=0; j<nIter; j++)
-    {
-        sf14 = sf11 + sf12 - sf13;
-        sf24 = sf21 + sf22 - sf23;
-        sf34 = sf31 + sf32 - sf33;
-    }
-
-    Info<< "ExecutionTime = "
-        << executionTime4.elapsedCpuTime()
-        << " s\n" << endl;
-
-    Info << sf14[1] << sf24[1] << sf34[1] << endl << endl;
-
-
-}
diff --git a/applications/test/speed/vectorSpeedTest/Make/files b/applications/test/speed/vectorSpeedTest/Make/files
new file mode 100644
index 0000000000000000000000000000000000000000..ccb0187615ed49e981498b9ad532c2f7b7b55326
--- /dev/null
+++ b/applications/test/speed/vectorSpeedTest/Make/files
@@ -0,0 +1,3 @@
+vectorSpeedTest.C
+
+EXE = $(FOAM_USER_APPBIN)/vectorSpeedTest
diff --git a/applications/test/speed/vectorSpeedTest/Make/options b/applications/test/speed/vectorSpeedTest/Make/options
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/applications/test/speed/vectorSpeedTest/vectorSpeedTest.C b/applications/test/speed/vectorSpeedTest/vectorSpeedTest.C
new file mode 100644
index 0000000000000000000000000000000000000000..da802bab20e7c39767f97318d484536f127f5a40
--- /dev/null
+++ b/applications/test/speed/vectorSpeedTest/vectorSpeedTest.C
@@ -0,0 +1,39 @@
+#include "primitiveFields.H"
+#include "cpuTime.H"
+#include "IOstreams.H"
+#include "OFstream.H"
+
+using namespace Foam;
+
+int main()
+{
+    const label nIter = 100;
+    const label size = 1000000;
+
+    Info<< "Initialising fields" << endl;
+
+    vectorField
+        vf1(size, vector::one),
+        vf2(size, vector::one),
+        vf3(size, vector::one),
+        vf4(size);
+
+    Info<< "Done\n" << endl;
+
+    {
+        cpuTime executionTime;
+
+        Info<< "vectorField algebra" << endl;
+
+        for (register int j=0; j<nIter; j++)
+        {
+            vf4 = vf1 + vf2 - vf3;
+        }
+
+        Info<< "ExecutionTime = "
+            << executionTime.elapsedCpuTime()
+            << " s\n" << endl;
+
+        Snull<< vf4[1] << endl << endl;
+    }
+}
diff --git a/applications/utilities/mesh/conversion/fluent3DMeshToFoam/fluent3DMeshToFoam.L b/applications/utilities/mesh/conversion/fluent3DMeshToFoam/fluent3DMeshToFoam.L
index bbaab8b01d5aaa463e01049c03dab2306326ce9f..89477520816024a4934fab977c33523148eab2d9 100644
--- a/applications/utilities/mesh/conversion/fluent3DMeshToFoam/fluent3DMeshToFoam.L
+++ b/applications/utilities/mesh/conversion/fluent3DMeshToFoam/fluent3DMeshToFoam.L
@@ -816,6 +816,8 @@ int main(int argc, char *argv[])
 
     // Pre-filtering: flip "owner" boundary or wrong oriented internal
     // faces and move to neighbour
+
+    boolList fm(faces.size(), false);
     forAll (faces, facei)
     {
         if
@@ -824,6 +826,7 @@ int main(int argc, char *argv[])
          || (neighbour[facei] != -1 && owner[facei] > neighbour[facei])
         )
         {
+            fm[facei] = true;
             faces[facei] = faces[facei].reverseFace();
             Swap(owner[facei], neighbour[facei]);
         }
@@ -1175,7 +1178,7 @@ int main(int argc, char *argv[])
                     false,              // flipFaceFlux
                     -1,                 // patchID
                     faceZonei,          // zoneID
-                    false               // zoneFlip
+                    fm[facei]           // zoneFlip
                 );
             }
 
diff --git a/applications/utilities/mesh/conversion/gmshToFoam/gmshToFoam.C b/applications/utilities/mesh/conversion/gmshToFoam/gmshToFoam.C
index 68eb9c46cfc2cb6b3d22b26e1d4c960382cee03e..23aec54cd871425b943c4efbd233a7e5c0e51022 100644
--- a/applications/utilities/mesh/conversion/gmshToFoam/gmshToFoam.C
+++ b/applications/utilities/mesh/conversion/gmshToFoam/gmshToFoam.C
@@ -657,6 +657,16 @@ void readCells
     << "    tet  :" << nTet << endl
     << endl;
 
+    if (cells.size() == 0)
+    {
+        FatalErrorIn("readCells(..)")
+            << "No cells read from file " << inFile.name() << nl
+            << "Does your file specify any 3D elements (hex=" << MSHHEX
+            << ", prism=" << MSHPRISM << ", pyramid=" << MSHPYR
+            << ", tet=" << MSHTET << ")?" << nl
+            << "Perhaps you have not exported the 3D elements?"
+            << exit(FatalError);
+    }
 
     Info<< "CellZones:" << nl
         << "Zone\tSize" << endl;
diff --git a/applications/utilities/mesh/conversion/ideasUnvToFoam/Make/files b/applications/utilities/mesh/conversion/ideasUnvToFoam/Make/files
old mode 100755
new mode 100644
diff --git a/applications/utilities/mesh/conversion/ideasUnvToFoam/Make/options b/applications/utilities/mesh/conversion/ideasUnvToFoam/Make/options
old mode 100755
new mode 100644
diff --git a/applications/utilities/mesh/conversion/polyDualMesh/meshDualiser.C b/applications/utilities/mesh/conversion/polyDualMesh/meshDualiser.C
index ad7affddaeec4ed9d1ba8dbb4ea1a09fca6e0643..dfc1fbb20e651bb85c0ea2edee738d3e111234ae 100644
--- a/applications/utilities/mesh/conversion/polyDualMesh/meshDualiser.C
+++ b/applications/utilities/mesh/conversion/polyDualMesh/meshDualiser.C
@@ -1077,7 +1077,7 @@ void Foam::meshDualiser::setRefinement
     {
         label pointI = multiCellFeaturePoints[i];
 
-        if (pointToDualCells_[pointI].size())
+        if (pointToDualCells_[pointI].size() > 0)
         {
             FatalErrorIn
             (
diff --git a/applications/utilities/mesh/conversion/polyDualMesh/polyDualMeshApp.C b/applications/utilities/mesh/conversion/polyDualMesh/polyDualMeshApp.C
index e2bf673ce26375af9422b21a9e5ca3451988c247..a410c1d8922b14000fedc606a662eb82e5b07bb4 100644
--- a/applications/utilities/mesh/conversion/polyDualMesh/polyDualMeshApp.C
+++ b/applications/utilities/mesh/conversion/polyDualMesh/polyDualMeshApp.C
@@ -25,22 +25,34 @@ License
 Description
     Calculate the dual of a polyMesh. Adheres to all the feature&patch edges.
 
-    Feature angle:
-    convex features : point becomes single boundary cell with multiple
-                      boundary faces.
-    concave features: point becomes multiple boundary cells.
 
-    -splitAllFaces:
+Usage
+
+    - polyDualMesh featureAngle
+
+    Detects any boundary edge > angle and creates multiple boundary faces
+    for it. Normal behaviour is to have each point become a cell
+    (1.5 behaviour)
+
+    @param -concaveMultiCells
+    Creates multiple cells for each point on a concave edge. Might limit
+    the amount of distortion on some meshes.
+
+    @param -splitAllFaces
     Normally only constructs a single face between two cells. This single face
     might be too distorted. splitAllFaces will create a single face for every
     original cell the face passes through. The mesh will thus have
     multiple faces inbetween two cells! (so is not strictly upper-triangular
     anymore - checkMesh will complain)
-    -doNotPreserveFaceZones:
+
+    @param -doNotPreserveFaceZones:
     By default all faceZones are preserved by marking all faces, edges and
     points on them as features. The -doNotPreserveFaceZones disables this
     behaviour.
 
+    Note: is just a driver for meshDualiser. Substitute your own
+    simpleMarkFeatures to have different behaviour.
+
 \*---------------------------------------------------------------------------*/
 
 #include "argList.H"
@@ -70,6 +82,7 @@ void simpleMarkFeatures
     const polyMesh& mesh,
     const PackedBoolList& isBoundaryEdge,
     const scalar featureAngle,
+    const bool concaveMultiCells,
     const bool doNotPreserveFaceZones,
 
     labelList& featureFaces,
@@ -182,7 +195,7 @@ void simpleMarkFeatures
                   - allBoundary[f0].centre(allBoundary.points())
                 );
 
-                if ((c1c0 & n0) > SMALL)
+                if (concaveMultiCells && (c1c0 & n0) > SMALL)
                 {
                     // Found concave edge. Make into multiCell features
                     Info<< "Detected concave feature edge:" << edgeI
@@ -230,7 +243,7 @@ void simpleMarkFeatures
 
     if (doNotPreserveFaceZones)
     {
-        if (faceZones.size())
+        if (faceZones.size() > 0)
         {
             WarningIn("simpleMarkFeatures(..)")
                 << "Detected " << faceZones.size()
@@ -240,7 +253,7 @@ void simpleMarkFeatures
     }
     else
     {
-        if (faceZones.size())
+        if (faceZones.size() > 0)
         {
             Info<< "Detected " << faceZones.size()
                 << " faceZones. Preserving these by marking their"
@@ -345,6 +358,7 @@ int main(int argc, char *argv[])
 
     argList::validArgs.append("feature angle[0-180]");
     argList::validOptions.insert("splitAllFaces", "");
+    argList::validOptions.insert("concaveMultiCells", "");
     argList::validOptions.insert("doNotPreserveFaceZones", "");
     argList::validOptions.insert("overwrite", "");
 
@@ -381,11 +395,25 @@ int main(int argc, char *argv[])
 
 
     const bool splitAllFaces = args.optionFound("splitAllFaces");
+    if (splitAllFaces)
+    {
+        Info<< "Splitting all internal faces to create multiple faces"
+            << " between two cells." << nl
+            << endl;
+    }
+
     const bool overwrite = args.optionFound("overwrite");
     const bool doNotPreserveFaceZones = args.optionFound
     (
         "doNotPreserveFaceZones"
     );
+    const bool concaveMultiCells = args.optionFound("concaveMultiCells");
+    if (concaveMultiCells)
+    {
+        Info<< "Generating multiple cells for points on concave feature edges."
+            << nl << endl;
+    }
+
 
     // Face(centre)s that need inclusion in the dual mesh
     labelList featureFaces;
@@ -393,7 +421,7 @@ int main(int argc, char *argv[])
     labelList featureEdges;
     // Points (that become a single cell) that need inclusion in the dual mesh
     labelList singleCellFeaturePoints;
-    // Points (that become a mulitple cells)        ,,
+    // Points (that become a multiple cells)        ,,
     labelList multiCellFeaturePoints;
 
     // Sample implementation of feature detection.
@@ -402,6 +430,7 @@ int main(int argc, char *argv[])
         mesh,
         isBoundaryEdge,
         featureAngle,
+        concaveMultiCells,
         doNotPreserveFaceZones,
 
         featureFaces,
diff --git a/applications/utilities/mesh/generation/blockMesh/blockMeshApp.C b/applications/utilities/mesh/generation/blockMesh/blockMeshApp.C
index 1bcee69984d1f8b32fed33fc9be7b434e78f2954..1d034714efe91a489d0f6a90b5f8c2d67988ea6c 100644
--- a/applications/utilities/mesh/generation/blockMesh/blockMeshApp.C
+++ b/applications/utilities/mesh/generation/blockMesh/blockMeshApp.C
@@ -243,14 +243,7 @@ int main(int argc, char *argv[])
             meshDict.lookup("mergePatchPairs")
         );
 
-        if (mergePatchPairs.size())
-        {
-            FatalErrorIn(args.executable())
-                << "mergePatchPairs not currently supported."
-                << exit(FatalError);
-        }
-
-        //// #include "mergePatchPairs.H"
+#       include "mergePatchPairs.H"
     }
     else
     {
diff --git a/applications/utilities/mesh/generation/blockMesh/mergePatchPairs.C b/applications/utilities/mesh/generation/blockMesh/mergePatchPairs.H
similarity index 98%
rename from applications/utilities/mesh/generation/blockMesh/mergePatchPairs.C
rename to applications/utilities/mesh/generation/blockMesh/mergePatchPairs.H
index 3347db180bbe769eefeb5a41762550409e5b16e2..aeb3137adfe091daaabbda9490016527a066afe9 100644
--- a/applications/utilities/mesh/generation/blockMesh/mergePatchPairs.C
+++ b/applications/utilities/mesh/generation/blockMesh/mergePatchPairs.H
@@ -1,7 +1,7 @@
-        Info<< "Creating merge patch pairs" << nl << endl;
-
         if (mergePatchPairs.size())
         {
+            Info<< "Creating merge patch pairs" << nl << endl;
+
             // Create and add point and face zones and mesh modifiers
             List<pointZone*> pz(mergePatchPairs.size());
             List<faceZone*> fz(3*mergePatchPairs.size());
diff --git a/applications/utilities/mesh/generation/extrudeMesh/extrudeMesh.C b/applications/utilities/mesh/generation/extrudeMesh/extrudeMesh.C
index 95ec6c5b8ae8e12a02dd5df4b63cbefc9537eac2..69dc36bccf838d9659e4f8c01d7a89f8efccf66b 100644
--- a/applications/utilities/mesh/generation/extrudeMesh/extrudeMesh.C
+++ b/applications/utilities/mesh/generation/extrudeMesh/extrudeMesh.C
@@ -23,7 +23,8 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Description
-    Extrude mesh from existing patch or from patch read from file.
+    Extrude mesh from existing patch (flipped so has inwards pointing
+    normals) or from patch read from file.
     Note: Merges close points so be careful.
 
     Type of extrusion prescribed by run-time selectable model.
@@ -52,43 +53,35 @@ using namespace Foam;
 
 int main(int argc, char *argv[])
 {
-    #include "setRoots.H"
+    #include "setRootCase.H"
     #include "createTimeExtruded.H"
 
-    if (args.optionFound("sourceCase") == args.optionFound("surface"))
-    {
-        FatalErrorIn(args.executable())
-            << "Specify either -sourceCase and -sourcePatch"
-               " or -surface options\n"
-               "    to specify the source of the patch to extrude"
-            << exit(FatalError);
-    }
-
     autoPtr<extrudedMesh> meshPtr(NULL);
 
-    autoPtr<extrudeModel> model
+    IOdictionary dict
     (
-        extrudeModel::New
+        IOobject
         (
-            IOdictionary
-            (
-                IOobject
-                (
-                    "extrudeProperties",
-                    runTimeExtruded.constant(),
-                    runTimeExtruded,
-                    IOobject::MUST_READ
-                )
-            )
+            "extrudeProperties",
+            runTimeExtruded.constant(),
+            runTimeExtruded,
+            IOobject::MUST_READ
         )
     );
 
-    if (args.optionFound("sourceCase"))
+    autoPtr<extrudeModel> model(extrudeModel::New(dict));
+
+    const word sourceType(dict.lookup("constructFrom"));
+
+    autoPtr<faceMesh> fMesh;
+
+    if (sourceType == "patch")
     {
-        fileName sourceCasePath(args.option("sourceCase"));
+        fileName sourceCasePath(dict.lookup("sourceCase"));
+        sourceCasePath.expand();
         fileName sourceRootDir = sourceCasePath.path();
         fileName sourceCaseDir = sourceCasePath.name();
-        word patchName(args.option("sourcePatch"));
+        word patchName(dict.lookup("sourcePatch"));
 
         Info<< "Extruding patch " << patchName
             << " on mesh " << sourceCasePath << nl
@@ -114,75 +107,69 @@ int main(int argc, char *argv[])
         }
 
         const polyPatch& pp = mesh.boundaryMesh()[patchID];
+        fMesh.reset(new faceMesh(pp.localFaces(), pp.localPoints()));
+        fMesh().flip();
 
         {
             fileName surfName(patchName + ".sMesh");
 
-            Info<< "Writing patch as surfaceMesh to " << surfName << nl << endl;
-
-            faceMesh fMesh(pp.localFaces(), pp.localPoints());
+            Info<< "Writing (flipped) patch as surfaceMesh to "
+                << surfName << nl << endl;
 
             OFstream os(surfName);
-            os << fMesh << nl;
+            os << fMesh() << nl;
         }
-
-        meshPtr.reset
-        (
-            new extrudedMesh
-            (
-                IOobject
-                (
-                    extrudedMesh::defaultRegion,
-                    runTimeExtruded.constant(),
-                    runTimeExtruded
-                ),
-                pp,
-                model()
-            )
-        );
     }
-    else
+    else if (sourceType == "surface")
     {
         // Read from surface
-        fileName surfName(args.option("surface"));
+        fileName surfName(dict.lookup("surface"));
 
         Info<< "Extruding surfaceMesh read from file " << surfName << nl
             << endl;
 
         IFstream is(surfName);
 
-        faceMesh fMesh(is);
+        fMesh.reset(new faceMesh(is));
 
-        Info<< "Read patch from file " << surfName << ':' << nl
-            << "    points : " << fMesh.points().size() << nl
-            << "    faces  : " << fMesh.size() << nl
+        Info<< "Read patch from file " << surfName << nl
             << endl;
+    }
+    else
+    {
+        FatalErrorIn(args.executable())
+            << "Illegal 'constructFrom' specification. Should either be "
+            << "patch or surface." << exit(FatalError);
+    }
 
-        meshPtr.reset
+
+    Info<< "Extruding patch with :" << nl
+            << "    points     : " << fMesh().points().size() << nl
+            << "    faces      : " << fMesh().size() << nl
+            << "    normals[0] : " << fMesh().faceNormals()[0]
+            << nl
+            << endl;
+
+    extrudedMesh mesh
+    (
+        IOobject
         (
-            new extrudedMesh
-            (
-                IOobject
-                (
-                    extrudedMesh::defaultRegion,
-                    runTimeExtruded.constant(),
-                    runTimeExtruded
-                ),
-                fMesh,
-                model()
-            )
-        );
-    }
-    extrudedMesh& mesh = meshPtr();
+            extrudedMesh::defaultRegion,
+            runTimeExtruded.constant(),
+            runTimeExtruded
+        ),
+        fMesh(),
+        model()
+    );
 
 
     const boundBox& bb = mesh.globalData().bb();
     const vector span = bb.span();
     const scalar mergeDim = 1E-4 * bb.minDim();
 
-    Info<< "Mesh bounding box:" << bb << nl
-        << "        with span:" << span << nl
-        << "Merge distance   :" << mergeDim << nl
+    Info<< "Mesh bounding box : " << bb << nl
+        << "        with span : " << span << nl
+        << "Merge distance    : " << mergeDim << nl
         << endl;
 
     const polyBoundaryMesh& patches = mesh.boundaryMesh();
@@ -250,7 +237,8 @@ int main(int argc, char *argv[])
     // Merging front and back patch faces
     // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-    if (args.optionFound("mergeFaces"))
+    Switch mergeFaces(dict.lookup("mergeFaces"));
+    if (mergeFaces)
     {
         Info<< "Assuming full 360 degree axisymmetric case;"
             << " stitching faces on patches "
diff --git a/applications/utilities/mesh/generation/extrudeMesh/extrudeModel/wedge/wedge.C b/applications/utilities/mesh/generation/extrudeMesh/extrudeModel/wedge/wedge.C
index 6da971a1bf0e2d048976c808abbaa0dea944908c..3d2c883ea1901edb740f8afdd7de3c9b634858a2 100644
--- a/applications/utilities/mesh/generation/extrudeMesh/extrudeModel/wedge/wedge.C
+++ b/applications/utilities/mesh/generation/extrudeMesh/extrudeModel/wedge/wedge.C
@@ -88,7 +88,8 @@ point wedge::operator()
     }
     else
     {
-        sliceAngle = angle_*(layer + 1)/nLayers_;
+        //sliceAngle = angle_*(layer + 1)/nLayers_;
+        sliceAngle = angle_*layer/nLayers_;
     }
 
     // Find projection onto axis (or rather decompose surfacePoint
diff --git a/applications/utilities/mesh/generation/extrudeMesh/extrudeProperties b/applications/utilities/mesh/generation/extrudeMesh/extrudeProperties
index ecbe160a150ab5f1b16ecad4e5fd423a64edc278..20de7b21524b083cf6cc37a684a971bcda890059 100644
--- a/applications/utilities/mesh/generation/extrudeMesh/extrudeProperties
+++ b/applications/utilities/mesh/generation/extrudeMesh/extrudeProperties
@@ -14,23 +14,41 @@ FoamFile
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-extrudeModel        wedge;
+// Where to get surface from: either from surface ('surface') or
+// from (flipped) patch of existing case ('patch')
+constructFrom patch;    //surface;
+
+// If construct from (flipped) patch
+sourceCase "../cavity";
+sourcePatch movingWall;
+
+// If construct from surface
+surface "movingWall.sMesh";
+
+
+// Do front and back need to be merged?
+mergeFaces false;
+
+//- Linear extrusion in point-normal direction
 //extrudeModel        linearNormal;
+//- Wedge extrusion. If nLayers is 1 assumes symmetry around plane.
+extrudeModel        wedge;
+//- Extrudes into sphere around (0 0 0)
 //extrudeModel        linearRadial;
 //extrudeModel        sigmaRadial;
 
-nLayers             1;
+nLayers             6;
 
 wedgeCoeffs
 {
-    axisPt          (0 0 0);
-    axis            (0 -1 0);
-    angle           2.0;
+    axisPt      (0 0.1 0);
+    axis        (1 0 0);
+    angle       90.0;   // For nLayers=1 assume symmetry so angle/2 on each side
 }
 
 linearNormalCoeffs
 {
-    thickness       0.1;
+    thickness       0.05;
 }
 
 linearRadialCoeffs
@@ -47,3 +65,4 @@ sigmaRadialCoeffs
 
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
diff --git a/applications/utilities/mesh/generation/extrudeMesh/extrudedMesh/extrudedMesh.C b/applications/utilities/mesh/generation/extrudeMesh/extrudedMesh/extrudedMesh.C
index bcbcb3ddb78c20a6ee0ca35055a13d5488945310..b258c594451332958c13cdda37c9bbfeb28dd459 100644
--- a/applications/utilities/mesh/generation/extrudeMesh/extrudedMesh/extrudedMesh.C
+++ b/applications/utilities/mesh/generation/extrudeMesh/extrudedMesh/extrudedMesh.C
@@ -117,7 +117,7 @@ Foam::Xfer<Foam::faceList> Foam::extrudedMesh::extrudedFaces
             quad[2] = surfaceEdges[i][0] + nextLayerOffset;
             quad[3] = surfaceEdges[i][1] + nextLayerOffset;
 
-            eFaces[facei++] = face(quad);
+            eFaces[facei++] = face(quad).reverseFace();
         }
 
         // Faces between layer and layer+1
@@ -130,7 +130,7 @@ Foam::Xfer<Foam::faceList> Foam::extrudedMesh::extrudedFaces
                     (
                         surfaceFaces[i].reverseFace()
                       + nextLayerOffset
-                    );
+                    ).reverseFace();
             }
         }
     }
@@ -152,7 +152,7 @@ Foam::Xfer<Foam::faceList> Foam::extrudedMesh::extrudedFaces
 
             label ownerFace = extrudePatch.edgeFaces()[i][0];
 
-            if (!sameOrder(surfaceFaces[ownerFace], e))
+            if (sameOrder(surfaceFaces[ownerFace], e))
             {
                 reverse(quad);
             }
@@ -164,7 +164,7 @@ Foam::Xfer<Foam::faceList> Foam::extrudedMesh::extrudedFaces
     // Top faces
     forAll(surfaceFaces, i)
     {
-        eFaces[facei++] = face(surfaceFaces[i]);
+        eFaces[facei++] = face(surfaceFaces[i]).reverseFace();
     }
 
     // Bottom faces
@@ -175,7 +175,7 @@ Foam::Xfer<Foam::faceList> Foam::extrudedMesh::extrudedFaces
             (
                 surfaceFaces[i].reverseFace()
               + nLayers*surfacePoints.size()
-            );
+            ).reverseFace();
     }
 
     // return points for transferring
diff --git a/applications/utilities/mesh/generation/extrudeMesh/faceMesh.H b/applications/utilities/mesh/generation/extrudeMesh/faceMesh.H
index 818ce58f00e80a363432e08f19bc919e5e1042cf..c8e1075f52e5f31ceba4f8930ad6be4dbab9158e 100644
--- a/applications/utilities/mesh/generation/extrudeMesh/faceMesh.H
+++ b/applications/utilities/mesh/generation/extrudeMesh/faceMesh.H
@@ -78,6 +78,18 @@ public:
         {}
 
 
+    // Member Functions
+
+        void flip()
+        {
+            forAll(*this, i)
+            {
+                face& f = operator[](i);
+                f = f.reverseFace();
+            }
+            clearOut();
+        }
+
     // IOstream Operators
 
         friend Ostream& operator<<(Ostream& os, const faceMesh& fm)
@@ -85,7 +97,8 @@ public:
             return os
                 << fm.points()
                 << token::NL
-                << static_cast<PrimitivePatch<face, Foam::List, pointField> >(fm);
+                << static_cast<PrimitivePatch<face, Foam::List, pointField> >
+                   (fm);
         }
 };
 
diff --git a/applications/utilities/mesh/generation/extrudeMesh/setRoots.H b/applications/utilities/mesh/generation/extrudeMesh/setRoots.H
deleted file mode 100644
index 9c13db28d19f93ec3fc4bb9b7be943bc721eed33..0000000000000000000000000000000000000000
--- a/applications/utilities/mesh/generation/extrudeMesh/setRoots.H
+++ /dev/null
@@ -1,16 +0,0 @@
-    argList::validArgs.clear();
-    argList::noParallel();
-
-    argList::validOptions.insert("sourceCase", "source case");
-    argList::validOptions.insert("sourcePatch", "source patch");
-
-    argList::validOptions.insert("surface", "surface file");
-
-    argList::validOptions.insert("mergeFaces", "");
-
-    argList args(argc, argv);
-
-    if (!args.check())
-    {
-         FatalError.exit();
-    }
diff --git a/applications/utilities/mesh/generation/snappyHexMesh/snappyHexMesh.C b/applications/utilities/mesh/generation/snappyHexMesh/snappyHexMesh.C
index 706866bd2a1df6def0525cd0b00366edeec313c7..6f086523dd2204170a516d19f0955cc6e68f5e1f 100644
--- a/applications/utilities/mesh/generation/snappyHexMesh/snappyHexMesh.C
+++ b/applications/utilities/mesh/generation/snappyHexMesh/snappyHexMesh.C
@@ -96,7 +96,7 @@ void writeMesh
     const fvMesh& mesh = meshRefiner.mesh();
 
     meshRefiner.printMeshInfo(debug, msg);
-    Info<< "Writing mesh to time " << mesh.time().timeName() << endl;
+    Info<< "Writing mesh to time " << meshRefiner.timeName() << endl;
 
     meshRefiner.write(meshRefinement::MESH|meshRefinement::SCALARLEVELS, "");
     if (debug & meshRefinement::OBJINTERSECTIONS)
@@ -104,7 +104,7 @@ void writeMesh
         meshRefiner.write
         (
             meshRefinement::OBJINTERSECTIONS,
-            mesh.time().path()/mesh.time().timeName()
+            mesh.time().path()/meshRefiner.timeName()
         );
     }
     Info<< "Written mesh in = "
@@ -115,6 +115,7 @@ void writeMesh
 
 int main(int argc, char *argv[])
 {
+    argList::validOptions.insert("overwrite", "");
 #   include "setRootCase.H"
 #   include "createTime.H"
     runTime.functionObjects().off();
@@ -123,6 +124,9 @@ int main(int argc, char *argv[])
     Info<< "Read mesh in = "
         << runTime.cpuTimeIncrement() << " s" << endl;
 
+    const bool overwrite = args.optionFound("overwrite");
+
+
     // Check patches and faceZones are synchronised
     mesh.boundaryMesh().checkParallelSync(true);
     meshRefinement::checkCoupledFaceZones(mesh);
@@ -170,6 +174,13 @@ int main(int argc, char *argv[])
     const dictionary& layerDict = meshDict.subDict("addLayersControls");
 
 
+    const scalar mergeDist = getMergeDistance
+    (
+        mesh,
+        readScalar(meshDict.lookup("mergeTolerance"))
+    );
+
+
 
     // Debug
     // ~~~~~
@@ -192,8 +203,9 @@ int main(int argc, char *argv[])
         IOobject
         (
             "abc",                      // dummy name
-            mesh.time().constant(),     // directory
-            "triSurface",               // instance
+            //mesh.time().constant(),     // instance
+            mesh.time().findInstance("triSurface", word::null),// instance
+            "triSurface",               // local
             mesh.time(),                // registry
             IOobject::MUST_READ,
             IOobject::NO_WRITE
@@ -235,6 +247,34 @@ int main(int argc, char *argv[])
         << mesh.time().cpuTimeIncrement() << " s" << nl << endl;
 
 
+    // Refinement engine
+    // ~~~~~~~~~~~~~~~~~
+
+    Info<< nl
+        << "Determining initial surface intersections" << nl
+        << "-----------------------------------------" << nl
+        << endl;
+
+    // Main refinement engine
+    meshRefinement meshRefiner
+    (
+        mesh,
+        mergeDist,          // tolerance used in sorting coordinates
+        overwrite,          // overwrite mesh files?
+        surfaces,           // for surface intersection refinement
+        shells              // for volume (inside/outside) refinement
+    );
+    Info<< "Calculated surface intersections in = "
+        << mesh.time().cpuTimeIncrement() << " s" << nl << endl;
+
+    // Some stats
+    meshRefiner.printMeshInfo(debug, "Initial mesh");
+
+    meshRefiner.write
+    (
+        debug&meshRefinement::OBJINTERSECTIONS,
+        mesh.time().path()/meshRefiner.timeName()
+    );
 
 
     // Add all the surface regions as patches
@@ -265,9 +305,8 @@ int main(int argc, char *argv[])
 
             forAll(regNames, i)
             {
-                label patchI = meshRefinement::addPatch
+                label patchI = meshRefiner.addMeshedPatch
                 (
-                    mesh,
                     regNames[i],
                     wallPolyPatch::typeName
                 );
@@ -308,45 +347,10 @@ int main(int argc, char *argv[])
             << exit(FatalError);
     }
 
-    const scalar mergeDist = getMergeDistance
-    (
-        mesh,
-        readScalar(meshDict.lookup("mergeTolerance"))
-    );
-
-
     // Mesh distribution engine (uses tolerance to reconstruct meshes)
     fvMeshDistribute distributor(mesh, mergeDist);
 
 
-    // Refinement engine
-    // ~~~~~~~~~~~~~~~~~
-
-    Info<< nl
-        << "Determining initial surface intersections" << nl
-        << "-----------------------------------------" << nl
-        << endl;
-
-    // Main refinement engine
-    meshRefinement meshRefiner
-    (
-        mesh,
-        mergeDist,          // tolerance used in sorting coordinates
-        surfaces,           // for surface intersection refinement
-        shells              // for volume (inside/outside) refinement
-    );
-    Info<< "Calculated surface intersections in = "
-        << mesh.time().cpuTimeIncrement() << " s" << nl << endl;
-
-    // Some stats
-    meshRefiner.printMeshInfo(debug, "Initial mesh");
-
-    meshRefiner.write
-    (
-        debug&meshRefinement::OBJINTERSECTIONS,
-        mesh.time().path()/mesh.time().timeName()
-    );
-
 
 
 
@@ -370,6 +374,11 @@ int main(int argc, char *argv[])
         // Refinement parameters
         refinementParameters refineParams(refineDict);
 
+        if (!overwrite)
+        {
+            const_cast<Time&>(mesh.time())++;
+        }
+
         refineDriver.doRefine(refineDict, refineParams, wantSnap, motionDict);
 
         writeMesh
@@ -391,6 +400,11 @@ int main(int argc, char *argv[])
         // Snap parameters
         snapParameters snapParams(snapDict);
 
+        if (!overwrite)
+        {
+            const_cast<Time&>(mesh.time())++;
+        }
+
         snapDriver.doSnap(snapDict, motionDict, snapParams);
 
         writeMesh
@@ -403,15 +417,16 @@ int main(int argc, char *argv[])
 
     if (wantLayers)
     {
-        autoLayerDriver layerDriver
-        (
-            meshRefiner,
-            globalToPatch
-        );
+        autoLayerDriver layerDriver(meshRefiner);
 
         // Layer addition parameters
         layerParameters layerParams(layerDict, mesh.boundaryMesh());
 
+        if (!overwrite)
+        {
+            const_cast<Time&>(mesh.time())++;
+        }
+
         layerDriver.doLayers
         (
             layerDict,
@@ -435,7 +450,7 @@ int main(int argc, char *argv[])
 
     Info<< "End\n" << endl;
 
-    return 0;
+    return(0);
 }
 
 
diff --git a/applications/utilities/mesh/generation/snappyHexMesh/snappyHexMeshDict b/applications/utilities/mesh/generation/snappyHexMesh/snappyHexMeshDict
index 205c767600bede32ffba05d4a2bd0873598b7511..b19b207124979ab412a80fcb8e88506be8f98c77 100644
--- a/applications/utilities/mesh/generation/snappyHexMesh/snappyHexMeshDict
+++ b/applications/utilities/mesh/generation/snappyHexMesh/snappyHexMeshDict
@@ -209,6 +209,10 @@ snapControls
 // Settings for the layer addition.
 addLayersControls
 {
+    // Are the thickness parameters below relative to the undistorted
+    // size of the refined cell outside layer (true) or absolute sizes (false).
+    relativeSizes true;
+
     // Per final patch (so not geometry!) the layer information
     layers
     {
@@ -226,15 +230,15 @@ addLayersControls
     // Expansion factor for layer mesh
     expansionRatio 1.0;
 
+
     //- Wanted thickness of final added cell layer. If multiple layers
-    //  is the
-    //  thickness of the layer furthest away from the wall.
-    //  Relative to undistorted size of cell outside layer.
-    finalLayerRatio 0.3;
+    //  is the thickness of the layer furthest away from the wall.
+    //  See relativeSizes parameter.
+    finalLayerThickness 0.3;
 
     //- Minimum thickness of cell layer. If for any reason layer
     //  cannot be above minThickness do not add layer.
-    //  Relative to undistorted size of cell outside layer.
+    //  See relativeSizes parameter.
     minThickness 0.25;
 
     //- If points get not extruded do nGrow layers of connected faces that are
diff --git a/applications/utilities/mesh/manipulation/cellSet/cellSetDict b/applications/utilities/mesh/manipulation/cellSet/cellSetDict
index 95465d8f5421d2316b2a74f0404ea79e10700010..fd11ab871d9b66a0bb4b3c89feb0d7d8015b40c4 100644
--- a/applications/utilities/mesh/manipulation/cellSet/cellSetDict
+++ b/applications/utilities/mesh/manipulation/cellSet/cellSetDict
@@ -26,12 +26,31 @@ action new;
 
 topoSetSources
 (
+    // Select by explicitly providing cell labels
+    labelToCell
+    {
+        value (12 13 56);   // labels of cells
+    }
+
     // Copy elements from cellSet
     cellToCell
     {
         set c1;
     }
 
+    // Cells in cell zone
+    zoneToCell
+    {
+        name ".*Zone";      // Name of cellZone, regular expressions allowed
+    }
+
+    // Cells on master or slave side of faceZone
+    faceZoneToCell
+    {
+        name ".*Zone";      // Name of faceZone, regular expressions allowed
+        option master;      // master/slave
+    }
+
     // Select based on faceSet
     faceToCell
     {
@@ -51,12 +70,6 @@ topoSetSources
         //option all;       // cell with all points in pointSet
     }
 
-    // Select by explicitly providing cell labels
-    labelToCell
-    {
-        value (12 13 56);   // labels of cells
-    }
-
     // Select based on cellShape
     shapeToCell
     {
@@ -87,7 +100,6 @@ topoSetSources
        radius   5.0;
     }
 
-
     // Cells with centre within sphere
     sphereToCell
     {
@@ -95,20 +107,6 @@ topoSetSources
        radius   5.0;
     }
 
-    // Cells in cell zone
-    zoneToCell
-    {
-        name ".*Zone";      // Name of cellZone, regular expressions allowed
-    }
-
-    // values of field within certain range
-    fieldToCell
-    {
-        fieldName   U;      // Note: uses mag(U) since volVectorField
-        min         0.1;
-        max         0.5;
-    }
-
     // Cells with cellCentre nearest to coordinates
     nearestToCell
     {
@@ -129,6 +127,22 @@ topoSetSources
                                             // and near surf curvature
                                             // (set to -100 if not used)
     }
+
+    // values of field within certain range
+    fieldToCell
+    {
+        fieldName   U;      // Note: uses mag(U) since volVectorField
+        min         0.1;
+        max         0.5;
+    }
+
+    // Mesh region (non-face connected part of (subset of)mesh)
+    regionToCell
+    {
+        set         c0;         // name of cellSet giving mesh subset
+        insidePoint (1 2 3);    // point inside region to select
+    }
+
 );
 
 
diff --git a/applications/utilities/mesh/manipulation/checkMesh/checkTopology.C b/applications/utilities/mesh/manipulation/checkMesh/checkTopology.C
index 14f57048365684cd02cdb66cb879dcd868c37cb2..9ce34cda1c73f4638439af2c837f24b1a89eb23e 100644
--- a/applications/utilities/mesh/manipulation/checkMesh/checkTopology.C
+++ b/applications/utilities/mesh/manipulation/checkMesh/checkTopology.C
@@ -7,6 +7,31 @@
 #include "pointSet.H"
 #include "IOmanip.H"
 
+bool Foam::checkSync(const wordList& names)
+{
+    List<wordList> allNames(Pstream::nProcs());
+    allNames[Pstream::myProcNo()] = names;
+    Pstream::gatherList(allNames);
+
+    bool hasError = false;
+
+    for (label procI = 1; procI < allNames.size(); procI++)
+    {
+        if (allNames[procI] != allNames[0])
+        {
+            hasError = true;
+
+            Info<< " ***Inconsistent zones across processors, "
+                   "processor 0 has zones:" << allNames[0]
+                << ", processor " << procI << " has zones:"
+                << allNames[procI]
+                << endl;
+        }
+    }
+    return hasError;
+}
+
+
 Foam::label Foam::checkTopology
 (
     const polyMesh& mesh,
@@ -24,6 +49,31 @@ Foam::label Foam::checkTopology
     // Check if the boundary processor patches are correct
     mesh.boundaryMesh().checkParallelSync(true);
 
+    // Check names of zones are equal
+    if (checkSync(mesh.cellZones().names()))
+    {
+        noFailedChecks++;
+    }
+    if (checkSync(mesh.faceZones().names()))
+    {
+        noFailedChecks++;
+    }
+    if (checkSync(mesh.pointZones().names()))
+    {
+        noFailedChecks++;
+    }
+
+    // Check contents of faceZones consistent
+    {
+        forAll(mesh.faceZones(), zoneI)
+        {
+            if (mesh.faceZones()[zoneI].checkParallelSync(true))
+            {
+                noFailedChecks++;
+            }
+        }
+    }
+
     {
         pointSet points(mesh, "unusedPoints", mesh.nPoints()/100);
         if (mesh.checkPoints(true, &points))
diff --git a/applications/utilities/mesh/manipulation/checkMesh/checkTopology.H b/applications/utilities/mesh/manipulation/checkMesh/checkTopology.H
index 787aa4318d21cbe49eb162932f74f94ff5444757..4790765d16e408c18d9ada199da97235e4c82975 100644
--- a/applications/utilities/mesh/manipulation/checkMesh/checkTopology.H
+++ b/applications/utilities/mesh/manipulation/checkMesh/checkTopology.H
@@ -1,8 +1,11 @@
 #include "label.H"
+#include "wordList.H"
 
 namespace Foam
 {
     class polyMesh;
 
+    bool checkSync(const wordList& names);
+
     label checkTopology(const polyMesh&, const bool, const bool);
 }
diff --git a/applications/utilities/mesh/manipulation/checkMesh/printMeshStats.C b/applications/utilities/mesh/manipulation/checkMesh/printMeshStats.C
index 9a2c9396afba0a645483f86eec3d65239372cb43..269656594c5c6524c6508c7c602967ac419173df 100644
--- a/applications/utilities/mesh/manipulation/checkMesh/printMeshStats.C
+++ b/applications/utilities/mesh/manipulation/checkMesh/printMeshStats.C
@@ -69,13 +69,13 @@ void Foam::printMeshStats(const polyMesh& mesh, const bool allTopology)
         << "    cells:            "
         << returnReduce(mesh.cells().size(), sumOp<label>()) << nl
         << "    boundary patches: "
-        << returnReduce(mesh.boundaryMesh().size(), sumOp<label>()) << nl
+        << mesh.boundaryMesh().size() << nl
         << "    point zones:      "
-        << returnReduce(mesh.pointZones().size(), sumOp<label>()) << nl
+        << mesh.pointZones().size() << nl
         << "    face zones:       "
-        << returnReduce(mesh.faceZones().size(), sumOp<label>()) << nl
+        << mesh.faceZones().size() << nl
         << "    cell zones:       "
-        << returnReduce(mesh.cellZones().size(), sumOp<label>()) << nl
+        << mesh.cellZones().size() << nl
         << endl;
 
 
diff --git a/applications/utilities/mesh/manipulation/createBaffles/createBaffles.C b/applications/utilities/mesh/manipulation/createBaffles/createBaffles.C
index 1fb8cc64efe26da5a52ac4f31de7a293d6d7274f..88af3a1f2915628a05fe5b70306c4b3daa770fae 100644
--- a/applications/utilities/mesh/manipulation/createBaffles/createBaffles.C
+++ b/applications/utilities/mesh/manipulation/createBaffles/createBaffles.C
@@ -43,16 +43,89 @@ Description
 #include "ReadFields.H"
 #include "volFields.H"
 #include "surfaceFields.H"
+#include "ZoneIDs.H"
 
 using namespace Foam;
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+void modifyOrAddFace
+(
+    polyTopoChange& meshMod,
+    const face& f,
+    const label faceI,
+    const label own,
+    const bool flipFaceFlux,
+    const label newPatchI,
+    const label zoneID,
+    const bool zoneFlip,
+
+    PackedBoolList& modifiedFace
+)
+{
+    if (!modifiedFace[faceI])
+    {
+        // First usage of face. Modify.
+        meshMod.setAction
+        (
+            polyModifyFace
+            (
+                f,                          // modified face
+                faceI,                      // label of face
+                own,                        // owner
+                -1,                         // neighbour
+                flipFaceFlux,               // face flip
+                newPatchI,                  // patch for face
+                false,                      // remove from zone
+                zoneID,                     // zone for face
+                zoneFlip                    // face flip in zone
+            )
+        );
+        modifiedFace[faceI] = 1;
+    }
+    else
+    {
+        // Second or more usage of face. Add.
+        meshMod.setAction
+        (
+            polyAddFace
+            (
+                f,                          // modified face
+                own,                        // owner
+                -1,                         // neighbour
+                -1,                         // master point
+                -1,                         // master edge
+                faceI,                      // master face
+                flipFaceFlux,               // face flip
+                newPatchI,                  // patch for face
+                zoneID,                     // zone for face
+                zoneFlip                    // face flip in zone
+            )
+        );
+    }
+}
+
+
+label findPatchID(const polyMesh& mesh, const word& name)
+{
+    label patchI = mesh.boundaryMesh().findPatchID(name);
+
+    if (patchI == -1)
+    {
+        FatalErrorIn("findPatchID(const polyMesh&, const word&)")
+            << "Cannot find patch " << name << endl
+            << "Valid patches are " << mesh.boundaryMesh().names()
+            << exit(FatalError);
+    }
+    return patchI;
+}
+
+
 // Main program:
 
 int main(int argc, char *argv[])
 {
-    argList::validArgs.append("set");
+    argList::validArgs.append("faceZone");
     argList::validArgs.append("patch");
     argList::validOptions.insert("additionalPatches", "(patch2 .. patchN)");
     argList::validOptions.insert("overwrite", "");
@@ -67,30 +140,28 @@ int main(int argc, char *argv[])
     const faceZoneMesh& faceZones = mesh.faceZones();
 
     // Faces to baffle
-    word setName(args.additionalArgs()[0]);
-    Info<< "Reading faceSet from " << setName << nl << endl;
-    faceSet facesToSplit(mesh, setName);
-    // Make sure set is synchronised across couples
-    facesToSplit.sync(mesh);
-    Info<< "Read " << returnReduce(facesToSplit.size(), sumOp<label>())
-        << " faces from " << setName << nl << endl;
+    faceZoneID zoneID(args.additionalArgs()[0], faceZones);
+
+    Info<< "Converting faces on zone " << zoneID.name()
+        << " into baffles." << nl << endl;
+
+    const faceZone& fZone = faceZones[zoneID.index()];
+
+    Info<< "Found " << returnReduce(fZone.size(), sumOp<label>())
+        << " faces on zone " << zoneID.name() << nl << endl;
 
+    // Make sure patches and zoneFaces are synchronised across couples
+    patches.checkParallelSync(true);
+    fZone.checkParallelSync(true);
 
     // Patches to put baffles into
     DynamicList<label> newPatches(1);
 
     word patchName(args.additionalArgs()[1]);
-    newPatches.append(patches.findPatchID(patchName));
-    Pout<< "Using patch " << patchName
+    newPatches.append(findPatchID(mesh, patchName));
+    Info<< "Using patch " << patchName
         << " at index " << newPatches[0] << endl;
 
-    if (newPatches[0] == -1)
-    {
-        FatalErrorIn(args.executable())
-            << "Cannot find patch " << patchName << endl
-            << "Valid patches are " << patches.names() << exit(FatalError);
-    }
-
 
     // Additional patches
     if (args.optionFound("additionalPatches"))
@@ -103,19 +174,9 @@ int main(int argc, char *argv[])
         newPatches.reserve(patchNames.size() + 1);
         forAll(patchNames, i)
         {
-            label patchI = patches.findPatchID(patchNames[i]);
+            newPatches.append(findPatchID(mesh, patchNames[i]));
             Info<< "Using additional patch " << patchNames[i]
-                << " at index " << patchI << endl;
-
-            if (patchI == -1)
-            {
-                FatalErrorIn(args.executable())
-                    << "Cannot find patch " << patchNames[i] << endl
-                    << "Valid patches are " << patches.names()
-                    << exit(FatalError);
-            }
-
-            newPatches.append(patchI);
+                << " at index " << newPatches[newPatches.size()-1] << endl;
         }
     }
 
@@ -166,111 +227,112 @@ int main(int argc, char *argv[])
     polyTopoChange meshMod(mesh);
 
 
-    // Do the actual changes
-    // Note order in which faces are modified/added is so they end up correctly
-    // for cyclic patches (original faces first and then reversed faces)
-    // since otherwise it will have trouble matching baffles.
+    // Do the actual changes. Note:
+    // - loop in incrementing face order (not necessary if faceZone ordered).
+    //   Preserves any existing ordering on patch faces.
+    // - two passes, do non-flip faces first and flip faces second. This
+    //   guarantees that when e.g. creating a cyclic all faces from one
+    //   side come first and faces from the other side next.
 
-    label nBaffled = 0;
+    PackedBoolList modifiedFace(mesh.nFaces());
 
     forAll(newPatches, i)
     {
         label newPatchI = newPatches[i];
 
+        // Pass 1. Do selected side of zone
+        // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
         for (label faceI = 0; faceI < mesh.nInternalFaces(); faceI++)
         {
-            if (facesToSplit.found(faceI))
-            {
-                const face& f = mesh.faces()[faceI];
-                label zoneID = faceZones.whichZone(faceI);
-                bool zoneFlip = false;
-                if (zoneID >= 0)
-                {
-                    const faceZone& fZone = faceZones[zoneID];
-                    zoneFlip = fZone.flipMap()[fZone.whichFace(faceI)];
-                }
+            label zoneFaceI = fZone.whichFace(faceI);
 
-                if (i == 0)
+            if (zoneFaceI != -1)
+            {
+                if (!fZone.flipMap()[zoneFaceI])
                 {
-                    // First usage of face. Modify.
-                    meshMod.setAction
+                    // Use owner side of face
+                    modifyOrAddFace
                     (
-                        polyModifyFace
-                        (
-                            f,                          // modified face
-                            faceI,                      // label of face
-                            mesh.faceOwner()[faceI],    // owner
-                            -1,                         // neighbour
-                            false,                      // face flip
-                            newPatchI,                  // patch for face
-                            false,                      // remove from zone
-                            zoneID,                     // zone for face
-                            zoneFlip                    // face flip in zone
-                        )
+                        meshMod,
+                        mesh.faces()[faceI],    // modified face
+                        faceI,                  // label of face
+                        mesh.faceOwner()[faceI],// owner
+                        false,                  // face flip
+                        newPatchI,              // patch for face
+                        zoneID.index(),         // zone for face
+                        false,                  // face flip in zone
+                        modifiedFace            // modify or add status
                     );
                 }
                 else
                 {
-                    // Second or more usage of face. Add.
-                    meshMod.setAction
+                    // Use neighbour side of face
+                    modifyOrAddFace
                     (
-                        polyAddFace
-                        (
-                            f,                          // modified face
-                            mesh.faceOwner()[faceI],    // owner
-                            -1,                         // neighbour
-                            -1,                         // master point
-                            -1,                         // master edge
-                            faceI,                      // master face
-                            false,                      // face flip
-                            newPatchI,                  // patch for face
-                            zoneID,                     // zone for face
-                            zoneFlip                    // face flip in zone
-                        )
+                        meshMod,
+                        mesh.faces()[faceI].reverseFace(),  // modified face
+                        faceI,                      // label of face
+                        mesh.faceNeighbour()[faceI],// owner
+                        true,                       // face flip
+                        newPatchI,                  // patch for face
+                        zoneID.index(),             // zone for face
+                        true,                       // face flip in zone
+                        modifiedFace                // modify or add status
                     );
                 }
-
-                nBaffled++;
             }
         }
 
-        // Add the reversed face.
+
+        // Pass 2. Do other side of zone
+        // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
         for (label faceI = 0; faceI < mesh.nInternalFaces(); faceI++)
         {
-            if (facesToSplit.found(faceI))
+            label zoneFaceI = fZone.whichFace(faceI);
+
+            if (zoneFaceI != -1)
             {
-                const face& f = mesh.faces()[faceI];
-                label zoneID = faceZones.whichZone(faceI);
-                bool zoneFlip = false;
-                if (zoneID >= 0)
+                if (!fZone.flipMap()[zoneFaceI])
                 {
-                    const faceZone& fZone = faceZones[zoneID];
-                    zoneFlip = fZone.flipMap()[fZone.whichFace(faceI)];
+                    // Use neighbour side of face
+                    modifyOrAddFace
+                    (
+                        meshMod,
+                        mesh.faces()[faceI].reverseFace(),  // modified face
+                        faceI,                              // label of face
+                        mesh.faceNeighbour()[faceI],        // owner
+                        true,                               // face flip
+                        newPatchI,                          // patch for face
+                        zoneID.index(),                     // zone for face
+                        true,                               // face flip in zone
+                        modifiedFace                        // modify or add
+                    );
                 }
-                label nei = mesh.faceNeighbour()[faceI];
-
-                meshMod.setAction
-                (
-                    polyAddFace
+                else
+                {
+                    // Use owner side of face
+                    modifyOrAddFace
                     (
-                        f.reverseFace(),            // modified face
-                        nei,                        // owner
-                        -1,                         // neighbour
-                        -1,                         // masterPointID
-                        -1,                         // masterEdgeID
-                        faceI,                      // masterFaceID,
-                        true,                       // face flip
-                        newPatchI,                  // patch for face
-                        zoneID,                     // zone for face
-                        zoneFlip                    // face flip in zone
-                    )
-                );
-
-                nBaffled++;
+                        meshMod,
+                        mesh.faces()[faceI],    // modified face
+                        faceI,                  // label of face
+                        mesh.faceOwner()[faceI],// owner
+                        false,                  // face flip
+                        newPatchI,              // patch for face
+                        zoneID.index(),         // zone for face
+                        false,                  // face flip in zone
+                        modifiedFace            // modify or add status
+                    );
+                }
             }
         }
 
+
         // Modify any boundary faces
+        // ~~~~~~~~~~~~~~~~~~~~~~~~~
+
         forAll(patches, patchI)
         {
             const polyPatch& pp = patches[patchI];
@@ -286,58 +348,22 @@ int main(int argc, char *argv[])
                 {
                     label faceI = pp.start()+i;
 
-                    if (facesToSplit.found(faceI))
+                    label zoneFaceI = fZone.whichFace(faceI);
+
+                    if (zoneFaceI != -1)
                     {
-                        const face& f = mesh.faces()[faceI];
-                        label zoneID = faceZones.whichZone(faceI);
-                        bool zoneFlip = false;
-                        if (zoneID >= 0)
-                        {
-                            const faceZone& fZone = faceZones[zoneID];
-                            zoneFlip = fZone.flipMap()[fZone.whichFace(faceI)];
-                        }
-
-                        if (i == 0)
-                        {
-                            // First usage of face. Modify.
-                            meshMod.setAction
-                            (
-                                polyModifyFace
-                                (
-                                    f,                      // modified face
-                                    faceI,                  // label of face
-                                    mesh.faceOwner()[faceI],// owner
-                                    -1,                     // neighbour
-                                    false,                  // face flip
-                                    newPatchI,              // patch for face
-                                    false,                  // remove from zone
-                                    zoneID,                 // zone for face
-                                    zoneFlip                // face flip in zone
-                                )
-                            );
-                        }
-                        else
-                        {
-                            // Second or more usage of face. Add.
-                            meshMod.setAction
-                            (
-                                polyAddFace
-                                (
-                                    f,                      // modified face
-                                    mesh.faceOwner()[faceI],// owner
-                                    -1,                     // neighbour
-                                    -1,                     // master point
-                                    -1,                     // master edge
-                                    faceI,                  // master face
-                                    false,                  // face flip
-                                    newPatchI,              // patch for face
-                                    zoneID,                 // zone for face
-                                    zoneFlip                // face flip in zone
-                                )
-                            );
-                        }
-
-                        nBaffled++;
+                        modifyOrAddFace
+                        (
+                            meshMod,
+                            mesh.faces()[faceI],        // modified face
+                            faceI,                      // label of face
+                            mesh.faceOwner()[faceI],    // owner
+                            false,                      // face flip
+                            newPatchI,                  // patch for face
+                            zoneID.index(),             // zone for face
+                            fZone.flipMap()[zoneFaceI], // face flip in zone
+                            modifiedFace                // modify or add status
+                        );
                     }
                 }
             }
@@ -345,7 +371,7 @@ int main(int argc, char *argv[])
     }
 
 
-    Info<< "Converted " << returnReduce(nBaffled, sumOp<label>())
+    Info<< "Converted " << returnReduce(modifiedFace.count(), sumOp<label>())
         << " faces into boundary faces on patch " << patchName << nl << endl;
 
     if (!overwrite)
diff --git a/applications/utilities/mesh/manipulation/createPatch/createPatch.C b/applications/utilities/mesh/manipulation/createPatch/createPatch.C
index 3c799ca5a4b0a66d6017f956d53bdade480b7c0b..7d74e7208c2e552d4bf0cc3af9d05b19ec8c64ef 100644
--- a/applications/utilities/mesh/manipulation/createPatch/createPatch.C
+++ b/applications/utilities/mesh/manipulation/createPatch/createPatch.C
@@ -73,23 +73,6 @@ public:
 };
 
 
-
-label getPatch(const polyBoundaryMesh& patches, const word& patchName)
-{
-    label patchI = patches.findPatchID(patchName);
-
-    if (patchI == -1)
-    {
-        FatalErrorIn("createPatch(const polyBoundaryMesh&, const word&)")
-            << "Cannot find source patch " << patchName
-            << endl << "Valid patch names are " << patches.names()
-            << exit(FatalError);
-    }
-
-    return patchI;
-}
-
-
 void changePatchID
 (
     const polyMesh& mesh,
@@ -704,14 +687,12 @@ int main(int argc, char *argv[])
 
         if (sourceType == "patches")
         {
-            wordList patchSources(dict.lookup("patches"));
+            labelHashSet patchSources(patches.patchSet(dict.lookup("patches")));
 
             // Repatch faces of the patches.
-            forAll(patchSources, sourceI)
+            forAllConstIter(labelHashSet, patchSources, iter)
             {
-                label patchI = getPatch(patches, patchSources[sourceI]);
-
-                const polyPatch& pp = patches[patchI];
+                const polyPatch& pp = patches[iter.key()];
 
                 Info<< "Moving faces from patch " << pp.name()
                     << " to patch " << destPatchI << endl;
diff --git a/applications/utilities/mesh/manipulation/createPatch/createPatchDict b/applications/utilities/mesh/manipulation/createPatch/createPatchDict
index 9052daa0a8d56c2ab9c82be8d3ccc42511089532..7dc93d5abaf160ff2b6a37b0b095efe3ad069066 100644
--- a/applications/utilities/mesh/manipulation/createPatch/createPatchDict
+++ b/applications/utilities/mesh/manipulation/createPatch/createPatchDict
@@ -69,8 +69,8 @@ patches
         // How to construct: either from 'patches' or 'set'
         constructFrom patches;
 
-        // If constructFrom = patches : names of patches
-        patches (periodic-1 periodic-2);
+        // If constructFrom = patches : names of patches. Wildcards allowed.
+        patches ("periodic.*");
 
         // If constructFrom = set : name of faceSet
         set f0;
diff --git a/applications/utilities/mesh/manipulation/pointSet/pointSetDict b/applications/utilities/mesh/manipulation/pointSet/pointSetDict
index 1c704a1868fe88c46be3e5d7f53a7eb184eae708..895dcd7f0aec3d01e875c335962a85ae0c6211f7 100644
--- a/applications/utilities/mesh/manipulation/pointSet/pointSetDict
+++ b/applications/utilities/mesh/manipulation/pointSet/pointSetDict
@@ -51,18 +51,24 @@ topoSetSources
         value (12 13 56);   // labels of points
     }
 
-    // Points with coordinate within box
-    boxToPoint
-    {
-       box   (0 0 0) (1 1 1);
-    }
-
     // All points in pointzone
     zoneToPoint
     {
         name ".*Zone";      // name of pointZone, regular expressions allowed
     }
 
+    // Points nearest to coordinates
+    nearestToPoint
+    {
+       points ((0 0 0) (1 1 1));
+    }
+
+    // Points with coordinate within box
+    boxToPoint
+    {
+       box   (0 0 0) (1 1 1);
+    }
+
     // Select based on surface
     surfaceToPoint
     {
diff --git a/applications/utilities/mesh/manipulation/setSet/setSet.C b/applications/utilities/mesh/manipulation/setSet/setSet.C
index d79d516806e040de45f70483eec4cdd195bacd04..42ad6110ea9bf258e29b23c075755bfa66e321a9 100644
--- a/applications/utilities/mesh/manipulation/setSet/setSet.C
+++ b/applications/utilities/mesh/manipulation/setSet/setSet.C
@@ -367,7 +367,7 @@ bool doCommand
         {
             r = IOobject::NO_READ;
 
-            backup(mesh, setName, setName + "_old");
+            //backup(mesh, setName, setName + "_old");
 
             currentSetPtr = topoSet::New(setType, mesh, setName, typSize);
         }
@@ -399,11 +399,11 @@ bool doCommand
                 << "  Action:" << actionName
                 << endl;
 
-            if ((r == IOobject::MUST_READ) && (action != topoSetSource::LIST))
-            {
-                // currentSet has been read so can make copy.
-                backup(mesh, setName, currentSet, setName + "_old");
-            }
+            //if ((r == IOobject::MUST_READ) && (action != topoSetSource::LIST))
+            //{
+            //    // currentSet has been read so can make copy.
+            //    backup(mesh, setName, currentSet, setName + "_old");
+            //}
 
             switch (action)
             {
@@ -558,7 +558,8 @@ void printMesh(const Time& runTime, const polyMesh& mesh)
         << "  cells:" << mesh.nCells()
         << "  faces:" << mesh.nFaces()
         << "  points:" << mesh.nPoints()
-        << "  patches:" << mesh.boundaryMesh().size() << nl;
+        << "  patches:" << mesh.boundaryMesh().size()
+        << "  bb:" << mesh.bounds() << nl;
 }
 
 
diff --git a/applications/utilities/mesh/manipulation/setsToZones/setsToZones.C b/applications/utilities/mesh/manipulation/setsToZones/setsToZones.C
index dfd7262fd17ba65a287bd041289dbcc95475c7df..a369a195b8c8dcf1d22b6bb60656993fe04c5417 100644
--- a/applications/utilities/mesh/manipulation/setsToZones/setsToZones.C
+++ b/applications/utilities/mesh/manipulation/setsToZones/setsToZones.C
@@ -28,8 +28,8 @@ Description
 
     There is one catch: for faceZones you also need to specify a flip
     condition which basically denotes the side of the face. In this app
-    it reads a cellSet (xxxCells if 'xxx' is the name of the faceSet) and
-    any face whose neighbour is in the cellSet gets a flip=true.
+    it reads a cellSet (xxxCells if 'xxx' is the name of the faceSet) which
+    is the masterCells of the zone.
     There are lots of situations in which this will go wrong but it is the
     best I can think of for now.
 
@@ -87,7 +87,7 @@ int main(int argc, char *argv[])
         polyMesh::meshSubDir/"sets"
     );
 
-    Pout<< "Searched : " << mesh.pointsInstance()/polyMesh::meshSubDir/"sets"
+    Info<< "Searched : " << mesh.pointsInstance()/polyMesh::meshSubDir/"sets"
         << nl
         << "Found    : " << objects.names() << nl
         << endl;
@@ -95,7 +95,7 @@ int main(int argc, char *argv[])
 
     IOobjectList pointObjects(objects.lookupClass(pointSet::typeName));
 
-    Pout<< "pointSets:" << pointObjects.names() << endl;
+    //Pout<< "pointSets:" << pointObjects.names() << endl;
 
     for
     (
@@ -126,6 +126,7 @@ int main(int argc, char *argv[])
                 )
             );
             mesh.pointZones().writeOpt() = IOobject::AUTO_WRITE;
+            mesh.pointZones().instance() = mesh.facesInstance();
         }
         else
         {
@@ -133,57 +134,17 @@ int main(int argc, char *argv[])
                 << " with that of set " << set.name() << "." << endl;
             mesh.pointZones()[zoneID] = pointLabels;
             mesh.pointZones().writeOpt() = IOobject::AUTO_WRITE;
+            mesh.pointZones().instance() = mesh.facesInstance();
         }
     }
 
 
-    IOobjectList cellObjects(objects.lookupClass(cellSet::typeName));
-
-    Pout<< "cellSets:" << cellObjects.names() << endl;
-
-    for
-    (
-        IOobjectList::const_iterator iter = cellObjects.begin();
-        iter != cellObjects.end();
-        ++iter
-    )
-    {
-        // Not in memory. Load it.
-        cellSet set(*iter());
-        SortableList<label> cellLabels(set.toc());
-
-        label zoneID = mesh.cellZones().findZoneID(set.name());
-        if (zoneID == -1)
-        {
-            Info<< "Adding set " << set.name() << " as a cellZone." << endl;
-            label sz = mesh.cellZones().size();
-            mesh.cellZones().setSize(sz+1);
-            mesh.cellZones().set
-            (
-                sz,
-                new cellZone
-                (
-                    set.name(),             //name
-                    cellLabels,             //addressing
-                    sz,                     //index
-                    mesh.cellZones()        //pointZoneMesh
-                )
-            );
-            mesh.cellZones().writeOpt() = IOobject::AUTO_WRITE;
-        }
-        else
-        {
-            Info<< "Overwriting contents of existing cellZone " << zoneID
-                << " with that of set " << set.name() << "." << endl;
-            mesh.cellZones()[zoneID] = cellLabels;
-            mesh.cellZones().writeOpt() = IOobject::AUTO_WRITE;
-        }
-    }
-
 
     IOobjectList faceObjects(objects.lookupClass(faceSet::typeName));
 
-    Pout<< "faceSets:" << faceObjects.names() << endl;
+    HashSet<word> slaveCellSets;
+
+    //Pout<< "faceSets:" << faceObjects.names() << endl;
 
     for
     (
@@ -201,14 +162,11 @@ int main(int argc, char *argv[])
 
         if (!noFlipMap)
         {
-            word setName(set.name() + "Cells");
-
-            Pout<< "Trying to load cellSet " << setName
-                << " to find out the flipMap." << nl
-                << "If the neighbour side of the face is in the cellSet"
-                << " the flipMap becomes true," << nl
-                << "in all other cases it stays false."
-                << " If you do not care about the flipMap"
+            word setName(set.name() + "SlaveCells");
+
+            Info<< "Trying to load cellSet " << setName
+                << " to find out the slave side of the zone." << nl
+                << "If you do not care about the flipMap"
                 << " (i.e. do not use the sideness)" << nl
                 << "use the -noFlipMap command line option."
                 << endl;
@@ -216,6 +174,9 @@ int main(int argc, char *argv[])
             // Load corresponding cells
             cellSet cells(mesh, setName);
 
+            // Store setName to exclude from cellZones further on
+            slaveCellSets.insert(setName);
+
             forAll(faceLabels, i)
             {
                 label faceI = faceLabels[i];
@@ -302,6 +263,7 @@ int main(int argc, char *argv[])
                 )
             );
             mesh.faceZones().writeOpt() = IOobject::AUTO_WRITE;
+            mesh.faceZones().instance() = mesh.facesInstance();
         }
         else
         {
@@ -313,10 +275,63 @@ int main(int argc, char *argv[])
                 flipMap.shrink()
             );
             mesh.faceZones().writeOpt() = IOobject::AUTO_WRITE;
+            mesh.faceZones().instance() = mesh.facesInstance();
+        }
+    }
+
+
+
+    IOobjectList cellObjects(objects.lookupClass(cellSet::typeName));
+
+    //Pout<< "cellSets:" << cellObjects.names() << endl;
+
+    for
+    (
+        IOobjectList::const_iterator iter = cellObjects.begin();
+        iter != cellObjects.end();
+        ++iter
+    )
+    {
+        if (!slaveCellSets.found(iter.key()))
+        {
+            // Not in memory. Load it.
+            cellSet set(*iter());
+            SortableList<label> cellLabels(set.toc());
+
+            label zoneID = mesh.cellZones().findZoneID(set.name());
+            if (zoneID == -1)
+            {
+                Info<< "Adding set " << set.name() << " as a cellZone." << endl;
+                label sz = mesh.cellZones().size();
+                mesh.cellZones().setSize(sz+1);
+                mesh.cellZones().set
+                (
+                    sz,
+                    new cellZone
+                    (
+                        set.name(),             //name
+                        cellLabels,             //addressing
+                        sz,                     //index
+                        mesh.cellZones()        //pointZoneMesh
+                    )
+                );
+                mesh.cellZones().writeOpt() = IOobject::AUTO_WRITE;
+                mesh.cellZones().instance() = mesh.facesInstance();
+            }
+            else
+            {
+                Info<< "Overwriting contents of existing cellZone " << zoneID
+                    << " with that of set " << set.name() << "." << endl;
+                mesh.cellZones()[zoneID] = cellLabels;
+                mesh.cellZones().writeOpt() = IOobject::AUTO_WRITE;
+                mesh.cellZones().instance() = mesh.facesInstance();
+            }
         }
     }
 
-    Pout<< "Writing mesh." << endl;
+
+
+    Info<< "Writing mesh." << endl;
 
     if (!mesh.write())
     {
@@ -325,7 +340,7 @@ int main(int argc, char *argv[])
             << exit(FatalError);
     }
 
-    Pout << nl << "End" << endl;
+    Info<< nl << "End" << endl;
 
     return 0;
 }
diff --git a/applications/utilities/mesh/manipulation/stitchMesh/stitchMesh.C b/applications/utilities/mesh/manipulation/stitchMesh/stitchMesh.C
index e3536a5ad05862bd0370cf9e000992673797d944..859ddf20a277f137d522f75bc779f6bd98f7623d 100644
--- a/applications/utilities/mesh/manipulation/stitchMesh/stitchMesh.C
+++ b/applications/utilities/mesh/manipulation/stitchMesh/stitchMesh.C
@@ -63,6 +63,7 @@ Description
 #include "slidingInterface.H"
 #include "perfectInterface.H"
 #include "IOobjectList.H"
+#include "ReadFields.H"
 
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -90,34 +91,6 @@ void checkPatch(const polyBoundaryMesh& bMesh, const word& name)
 }
 
 
-// Read field
-template<class GeoField>
-void readFields
-(
-    const fvMesh& mesh,
-    const IOobjectList& objects,
-    PtrList<GeoField>& fields
-)
-{
-    // Search list of objects for volScalarFields
-    IOobjectList fieldObjects(objects.lookupClass(GeoField::typeName));
-
-    // Construct the vol scalar fields
-    fields.setSize(fieldObjects.size());
-
-    label fieldi = 0;
-    for
-    (
-        IOobjectList::iterator iter = fieldObjects.begin();
-        iter != fieldObjects.end();
-        ++iter
-    )
-    {
-        fields.set(fieldi++, new GeoField(*iter(), mesh));
-    }
-}
-
-
 // Main program:
 
 int main(int argc, char *argv[])
@@ -343,7 +316,8 @@ int main(int argc, char *argv[])
                 cutZoneName,
                 masterPatchName,
                 slavePatchName,
-                tom                   // integral or partial
+                tom,                    // integral or partial
+                true                    // couple/decouple mode
             )
         );
     }
@@ -355,30 +329,30 @@ int main(int argc, char *argv[])
     // Read all current fvFields so they will get mapped
     Info<< "Reading all current volfields" << endl;
     PtrList<volScalarField> volScalarFields;
-    readFields(mesh, objects, volScalarFields);
+    ReadFields(mesh, objects, volScalarFields);
 
     PtrList<volVectorField> volVectorFields;
-    readFields(mesh, objects, volVectorFields);
+    ReadFields(mesh, objects, volVectorFields);
 
     PtrList<volSphericalTensorField> volSphericalTensorFields;
-    readFields(mesh, objects, volSphericalTensorFields);
+    ReadFields(mesh, objects, volSphericalTensorFields);
 
     PtrList<volSymmTensorField> volSymmTensorFields;
-    readFields(mesh, objects, volSymmTensorFields);
+    ReadFields(mesh, objects, volSymmTensorFields);
 
     PtrList<volTensorField> volTensorFields;
-    readFields(mesh, objects, volTensorFields);
+    ReadFields(mesh, objects, volTensorFields);
 
     //- uncomment if you want to interpolate surface fields (usually bad idea)
     //Info<< "Reading all current surfaceFields" << endl;
     //PtrList<surfaceScalarField> surfaceScalarFields;
-    //readFields(mesh, objects, surfaceScalarFields);
+    //ReadFields(mesh, objects, surfaceScalarFields);
     //
     //PtrList<surfaceVectorField> surfaceVectorFields;
-    //readFields(mesh, objects, surfaceVectorFields);
+    //ReadFields(mesh, objects, surfaceVectorFields);
     //
     //PtrList<surfaceTensorField> surfaceTensorFields;
-    //readFields(mesh, objects, surfaceTensorFields);
+    //ReadFields(mesh, objects, surfaceTensorFields);
 
     if (!overwrite)
     {
@@ -394,11 +368,22 @@ int main(int argc, char *argv[])
     if (overwrite)
     {
         mesh.setInstance(oldInstance);
+        stitcher.instance() = oldInstance;
     }
     Info << nl << "Writing polyMesh to time " << runTime.timeName() << endl;
 
     IOstream::defaultPrecision(10);
-    if (!mesh.write())
+
+    // Bypass runTime write (since only writes at outputTime)
+    if
+    (
+       !runTime.objectRegistry::writeObject
+        (
+            runTime.writeFormat(),
+            IOstream::currentVersion,
+            runTime.writeCompression()
+        )
+    )
     {
         FatalErrorIn(args.executable())
             << "Failed writing polyMesh."
diff --git a/applications/utilities/miscellaneous/foamDebugSwitches/Make/options b/applications/utilities/miscellaneous/foamDebugSwitches/Make/options
index de8242a89ffbb56259d8dec06155de72e98cb29e..ed65d154376ca5fb02e4738b07af1e0541e0d749 100644
--- a/applications/utilities/miscellaneous/foamDebugSwitches/Make/options
+++ b/applications/utilities/miscellaneous/foamDebugSwitches/Make/options
@@ -1,7 +1,7 @@
 EXE_LIBS = \
     -lbasicThermophysicalModels \
     -lchemistryModel \
-    -lcombustionThermophysicalModels \
+    -lreactionThermophysicalModels \
     -lcompressibleLESModels \
     -ldecompositionMethods \
     -ldieselSpray \
diff --git a/applications/utilities/miscellaneous/foamFormatConvert/foamFormatConvert.C b/applications/utilities/miscellaneous/foamFormatConvert/foamFormatConvert.C
index c8dd69c4428c67f13d95915f2016c7ad29b6186b..0140ba4e232affb451fc499b1ba2048fa7361ab0 100644
--- a/applications/utilities/miscellaneous/foamFormatConvert/foamFormatConvert.C
+++ b/applications/utilities/miscellaneous/foamFormatConvert/foamFormatConvert.C
@@ -41,6 +41,7 @@ Description
 #include "pointFields.H"
 #include "cellIOList.H"
 #include "IOobjectList.H"
+#include "IOPtrList.H"
 
 #include "writeMeshObject.H"
 #include "fieldDictionary.H"
@@ -49,6 +50,14 @@ using namespace Foam;
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+namespace Foam
+{
+    defineTemplateTypeNameAndDebug(IOPtrList<entry>, 0);
+}
+
+
+// Main program:
+
 int main(int argc, char *argv[])
 {
     timeSelector::addOptions();
@@ -67,6 +76,9 @@ int main(int argc, char *argv[])
         writeMeshObject<labelIOList>("neighbour", runTime);
         writeMeshObject<faceIOList>("faces", runTime);
         writeMeshObject<pointIOField>("points", runTime);
+        writeMeshObject<IOPtrList<entry> >("cellZones", runTime);
+        writeMeshObject<IOPtrList<entry> >("faceZones", runTime);
+        writeMeshObject<IOPtrList<entry> >("pointZones", runTime);
 
         // Get list of objects from the database
         IOobjectList objects(runTime, runTime.timeName());
diff --git a/applications/utilities/miscellaneous/foamFormatConvert/writeMeshObject.H b/applications/utilities/miscellaneous/foamFormatConvert/writeMeshObject.H
index 383154223eb76b9c83d32565efa97f86a2fbfd66..10b6d83d90e18e9e2ae8816db78f679b19c0c8f7 100644
--- a/applications/utilities/miscellaneous/foamFormatConvert/writeMeshObject.H
+++ b/applications/utilities/miscellaneous/foamFormatConvert/writeMeshObject.H
@@ -61,8 +61,17 @@ inline bool writeMeshObject(const word& name, Time& runTime)
         Info<< "        Reading " << io.headerClassName()
             << " : " << name << endl;
 
+        // Switch off type checking (for reading e.g. faceZones as
+        // generic list of dictionaries).
+        const word oldTypeName = T::typeName;
+        const_cast<word&>(T::typeName) = word::null;
+
         T meshObject(io);
 
+        const_cast<word&>(T::typeName) = oldTypeName;
+        // Fake type back to what was in field
+        const_cast<word&>(meshObject.type()) = io.headerClassName();
+
         Info<< "        Writing " << name << endl;
         writeOk = meshObject.regIOobject::write();
     }
diff --git a/applications/utilities/parallelProcessing/decomposePar/decomposePar.C b/applications/utilities/parallelProcessing/decomposePar/decomposePar.C
index 65dd679ecd73fc3bd6688aecb0964566465bf042..a26179507a167b9ec254643ebcab8cadde3ed420 100644
--- a/applications/utilities/parallelProcessing/decomposePar/decomposePar.C
+++ b/applications/utilities/parallelProcessing/decomposePar/decomposePar.C
@@ -566,7 +566,7 @@ int main(int argc, char *argv[])
             IOobject
             (
                 "cellProcAddressing",
-                "constant",
+                procMesh.facesInstance(),
                 procMesh.meshSubDir,
                 procMesh,
                 IOobject::MUST_READ,
@@ -579,7 +579,7 @@ int main(int argc, char *argv[])
             IOobject
             (
                 "boundaryProcAddressing",
-                "constant",
+                procMesh.facesInstance(),
                 procMesh.meshSubDir,
                 procMesh,
                 IOobject::MUST_READ,
@@ -603,7 +603,7 @@ int main(int argc, char *argv[])
                 IOobject
                 (
                     "faceProcAddressing",
-                    "constant",
+                    procMesh.facesInstance(),
                     procMesh.meshSubDir,
                     procMesh,
                     IOobject::MUST_READ,
@@ -645,7 +645,7 @@ int main(int argc, char *argv[])
                 IOobject
                 (
                     "pointProcAddressing",
-                    "constant",
+                    procMesh.facesInstance(),
                     procMesh.meshSubDir,
                     procMesh,
                     IOobject::MUST_READ,
diff --git a/applications/utilities/parallelProcessing/decomposePar/decomposeParDict b/applications/utilities/parallelProcessing/decomposePar/decomposeParDict
index 0c566d50812ffcdbd856d09f12ebac9244177468..aad15ee459b6e01cdf6fabba08eb2fa5b8c2a4dd 100644
--- a/applications/utilities/parallelProcessing/decomposePar/decomposeParDict
+++ b/applications/utilities/parallelProcessing/decomposePar/decomposeParDict
@@ -55,7 +55,17 @@ metisCoeffs
 }
 
 scotchCoeffs
-{}
+{
+    //processorWeights
+    //(
+    //    1
+    //    1
+    //    1
+    //    1
+    //);
+    //writeGraph  true;
+    //strategy "b";
+}
 
 manualCoeffs
 {
diff --git a/applications/utilities/parallelProcessing/decomposePar/domainDecomposition.C b/applications/utilities/parallelProcessing/decomposePar/domainDecomposition.C
index 2940577d163722f8dcabbd761ef70215f252d77b..e310cc758f0809cc6ae1e49fe95add7c5614bae3 100644
--- a/applications/utilities/parallelProcessing/decomposePar/domainDecomposition.C
+++ b/applications/utilities/parallelProcessing/decomposePar/domainDecomposition.C
@@ -269,7 +269,7 @@ bool domainDecomposition::writeDecomposition()
             IOobject
             (
                 this->polyMesh::name(),  // region name of undecomposed mesh
-                "constant",
+                pointsInstance(),
                 processorDb
             ),
             xferMove(procPoints),
@@ -620,7 +620,7 @@ bool domainDecomposition::writeDecomposition()
             IOobject
             (
                 "pointProcAddressing",
-                "constant",
+                procMesh.facesInstance(),
                 procMesh.meshSubDir,
                 procMesh,
                 IOobject::NO_READ,
@@ -635,7 +635,7 @@ bool domainDecomposition::writeDecomposition()
             IOobject
             (
                 "faceProcAddressing",
-                "constant",
+                procMesh.facesInstance(),
                 procMesh.meshSubDir,
                 procMesh,
                 IOobject::NO_READ,
@@ -650,7 +650,7 @@ bool domainDecomposition::writeDecomposition()
             IOobject
             (
                 "cellProcAddressing",
-                "constant",
+                procMesh.facesInstance(),
                 procMesh.meshSubDir,
                 procMesh,
                 IOobject::NO_READ,
@@ -665,7 +665,7 @@ bool domainDecomposition::writeDecomposition()
             IOobject
             (
                 "boundaryProcAddressing",
-                "constant",
+                procMesh.facesInstance(),
                 procMesh.meshSubDir,
                 procMesh,
                 IOobject::NO_READ,
diff --git a/applications/utilities/parallelProcessing/decomposePar/fvFieldDecomposer.C b/applications/utilities/parallelProcessing/decomposePar/fvFieldDecomposer.C
index 15eb039bfd847dbeddb8dd6414c57711d72cad5b..f5a6451c1266b6a0e02c165c3501c037c7f85b64 100644
--- a/applications/utilities/parallelProcessing/decomposePar/fvFieldDecomposer.C
+++ b/applications/utilities/parallelProcessing/decomposePar/fvFieldDecomposer.C
@@ -56,13 +56,12 @@ processorVolPatchFieldDecomposer
     const unallocLabelList& addressingSlice
 )
 :
-    addressing_(addressingSlice.size()),
-    weights_(addressingSlice.size())
+    directAddressing_(addressingSlice.size())
 {
     const labelList& own = mesh.faceOwner();
     const labelList& neighb = mesh.faceNeighbour();
 
-    forAll (addressing_, i)
+    forAll (directAddressing_, i)
     {
         // Subtract one to align addressing.  
         label ai = mag(addressingSlice[i]) - 1;
@@ -74,18 +73,14 @@ processorVolPatchFieldDecomposer
             // on the parallel boundary.
             // Give face the value of the neighbour.
 
-            addressing_[i].setSize(1);
-            weights_[i].setSize(1);
-            weights_[i][0] = 1.0;
-
             if (addressingSlice[i] >= 0)
             {
                 // I have the owner so use the neighbour value
-                addressing_[i][0] = neighb[ai];
+                directAddressing_[i] = neighb[ai];
             }
             else
             {
-                addressing_[i][0] = own[ai];
+                directAddressing_[i] = own[ai];
             }
         }
         else
@@ -96,12 +91,7 @@ processorVolPatchFieldDecomposer
             // up the different (face) list of data), so I will
             // just grab the value from the owner cell
 
-            addressing_[i].setSize(1);
-            weights_[i].setSize(1);
-
-            addressing_[i][0] = own[ai];
-
-            weights_[i][0] = 1.0;
+            directAddressing_[i] = own[ai];
         }
     }
 }
diff --git a/applications/utilities/parallelProcessing/decomposePar/fvFieldDecomposer.H b/applications/utilities/parallelProcessing/decomposePar/fvFieldDecomposer.H
index 9641bf031b86af158c15d3c5b6078404be782c14..89b69a17813895772c74686a47c921fcff44b277 100644
--- a/applications/utilities/parallelProcessing/decomposePar/fvFieldDecomposer.H
+++ b/applications/utilities/parallelProcessing/decomposePar/fvFieldDecomposer.H
@@ -96,15 +96,16 @@ public:
         };
 
 
-        //- Processor patch field decomposer class
+        //- Processor patch field decomposer class. Maps either owner or
+        //  neighbour data (no interpolate anymore - processorFvPatchField
+        //  holds neighbour data)
         class processorVolPatchFieldDecomposer
         :
             public fvPatchFieldMapper
         {
             // Private data
 
-                labelListList addressing_;
-                scalarListList weights_;
+                labelList directAddressing_;
 
         public:
 
@@ -120,27 +121,23 @@ public:
 
                 label size() const
                 {
-                    return addressing_.size();
+                    return directAddressing_.size();
                 }
 
                 bool direct() const
                 {
-                    return false;
-                }
-
-                const labelListList& addressing() const
-                {
-                    return addressing_;
+                    return true;
                 }
 
-                const scalarListList& weights() const
+                const unallocLabelList& directAddressing() const
                 {
-                    return weights_;
+                    return directAddressing_;
                 }
         };
 
 
-        //- Processor patch field decomposer class
+        //- Processor patch field decomposer class. Surface field is assumed
+        //  to have direction (so manipulates sign when mapping)
         class processorSurfacePatchFieldDecomposer
         :
             public fvPatchFieldMapper
diff --git a/applications/utilities/postProcessing/dataConversion/foamToEnsight/ensightField.C b/applications/utilities/postProcessing/dataConversion/foamToEnsight/ensightField.C
index 64452a05f70c00bffbfc7ab792e545a4cda369a7..90a597e57888a3e2155b7deba0efb09e90f04a12 100644
--- a/applications/utilities/postProcessing/dataConversion/foamToEnsight/ensightField.C
+++ b/applications/utilities/postProcessing/dataConversion/foamToEnsight/ensightField.C
@@ -178,7 +178,6 @@ void writeAllDataBinary
 }
 
 
-
 template<class Type>
 void writeAllFaceData
 (
@@ -275,7 +274,7 @@ template<class Type>
 bool writePatchField
 (
     const Foam::Field<Type>& pf,
-    const Foam::label patchI,
+    const Foam::label patchi,
     const Foam::label ensightPatchI,
     const Foam::faceSets& boundaryFaceSet,
     const Foam::ensightMesh::nFacePrimitives& nfp,
@@ -335,7 +334,7 @@ template<class Type>
 bool writePatchFieldBinary
 (
     const Foam::Field<Type>& pf,
-    const Foam::label patchI,
+    const Foam::label patchi,
     const Foam::label ensightPatchI,
     const Foam::faceSets& boundaryFaceSet,
     const Foam::ensightMesh::nFacePrimitives& nfp,
@@ -406,34 +405,27 @@ void writePatchField
     const Time& runTime = eMesh.mesh().time();
 
     const List<faceSets>& boundaryFaceSets = eMesh.boundaryFaceSets();
-    const HashTable<labelList>& allPatchNames = eMesh.allPatchNames();
-    const HashTable<label>& patchIndices = eMesh.patchIndices();
+    const wordList& allPatchNames = eMesh.allPatchNames();
+    const List<labelList>& allPatchProcs = eMesh.allPatchProcs();
     const HashTable<ensightMesh::nFacePrimitives>&
         nPatchPrims = eMesh.nPatchPrims();
 
-    label patchI = -1;
-
-    if (patchIndices.found(patchName))
-    {
-        patchI = patchIndices.find(patchName)();
-    }
-
     label ensightPatchI = eMesh.patchPartOffset();
 
-    for
-    (
-        HashTable<labelList>::const_iterator iter =
-            allPatchNames.begin();
-        iter != allPatchNames.end();
-        ++iter
-    )
+    label patchi = -1;
+
+    forAll(allPatchNames, i)
     {
-        if (iter.key() == patchName) break;
+        if (allPatchNames[i] == patchName)
+        {
+            patchi = i;
+            break;
+        }
         ensightPatchI++;
     }
 
 
-    const labelList& patchProcessors = allPatchNames.find(patchName)();
+    const labelList& patchProcessors = allPatchProcs[patchi];
 
     word pfName = patchName + '.' + fieldName;
 
@@ -472,14 +464,14 @@ void writePatchField
         ensightFile << pTraits<Type>::typeName << nl;
     }
 
-    if (patchI >= 0)
+    if (patchi >= 0)
     {
         writePatchField
         (
             pf,
-            patchI,
+            patchi,
             ensightPatchI,
-            boundaryFaceSets[patchI],
+            boundaryFaceSets[patchi],
             nPatchPrims.find(patchName)(),
             patchProcessors,
             ensightFile
@@ -507,6 +499,7 @@ void writePatchField
     }
 }
 
+
 template<class Type>
 void ensightFieldAscii
 (
@@ -527,8 +520,8 @@ void ensightFieldAscii
 
     const cellSets& meshCellSets = eMesh.meshCellSets();
     const List<faceSets>& boundaryFaceSets = eMesh.boundaryFaceSets();
-    const HashTable<labelList>& allPatchNames = eMesh.allPatchNames();
-    const HashTable<label>& patchIndices = eMesh.patchIndices();
+    const wordList& allPatchNames = eMesh.allPatchNames();
+    const List<labelList>& allPatchProcs = eMesh.allPatchProcs();
     const wordHashSet& patchNames = eMesh.patchNames();
     const HashTable<ensightMesh::nFacePrimitives>&
         nPatchPrims = eMesh.nPatchPrims();
@@ -623,30 +616,23 @@ void ensightFieldAscii
 
     label ensightPatchI = eMesh.patchPartOffset();
 
-    for
-    (
-        HashTable<labelList>::const_iterator iter = allPatchNames.begin();
-        iter != allPatchNames.end();
-        ++iter
-    )
+    forAll(allPatchNames, patchi)
     {
-        const word& patchName = iter.key();
-        const labelList& patchProcessors = iter();
+        const word& patchName = allPatchNames[patchi];
+        const labelList& patchProcessors = allPatchProcs[patchi];
 
         if (patchNames.empty() || patchNames.found(patchName))
         {
-            if (patchIndices.found(patchName))
+            if (mesh.boundary()[patchi].size())
             {
-                label patchI = patchIndices.find(patchName)();
-
                 if
                 (
                     writePatchField
                     (
-                        vf.boundaryField()[patchI],
-                        patchI,
+                        vf.boundaryField()[patchi],
+                        patchi,
                         ensightPatchI,
-                        boundaryFaceSets[patchI],
+                        boundaryFaceSets[patchi],
                         nPatchPrims.find(patchName)(),
                         patchProcessors,
                         ensightFile
@@ -708,8 +694,8 @@ void ensightFieldBinary
 
     const cellSets& meshCellSets = eMesh.meshCellSets();
     const List<faceSets>& boundaryFaceSets = eMesh.boundaryFaceSets();
-    const HashTable<labelList>& allPatchNames = eMesh.allPatchNames();
-    const HashTable<label>& patchIndices = eMesh.patchIndices();
+    const wordList& allPatchNames = eMesh.allPatchNames();
+    const List<labelList>& allPatchProcs = eMesh.allPatchProcs();
     const wordHashSet& patchNames = eMesh.patchNames();
     const HashTable<ensightMesh::nFacePrimitives>&
         nPatchPrims = eMesh.nPatchPrims();
@@ -726,7 +712,11 @@ void ensightFieldBinary
     {
         // set the filename of the ensight file
         fileName ensightFileName(timeFile + "." + fieldObject.name());
-        ensightFilePtr = new std::ofstream((postProcPath/ensightFileName).c_str(), ios_base::out | ios_base::binary | ios_base::trunc);
+        ensightFilePtr = new std::ofstream
+        (
+            (postProcPath/ensightFileName).c_str(),
+            ios_base::out | ios_base::binary | ios_base::trunc
+        );
         // Check on file opened?
     }
 
@@ -787,38 +777,62 @@ void ensightFieldBinary
             }
         }
 
-        writeAllDataBinary("penta6", vf, prisms, meshCellSets.nPrisms, ensightFile);
-        writeAllDataBinary("pyramid5", vf, pyrs, meshCellSets.nPyrs, ensightFile);
-        writeAllDataBinary("tetra4", vf, tets, meshCellSets.nTets, ensightFile);
-        writeAllDataBinary("nfaced", vf, polys, meshCellSets.nPolys, ensightFile);
+        writeAllDataBinary
+        (
+            "penta6",
+            vf,
+            prisms,
+            meshCellSets.nPrisms,
+            ensightFile
+        );
+
+        writeAllDataBinary
+        (
+            "pyramid5",
+            vf,
+            pyrs,
+            meshCellSets.nPyrs,
+            ensightFile
+        );
+
+        writeAllDataBinary
+        (
+            "tetra4",
+            vf,
+            tets,
+            meshCellSets.nTets,
+            ensightFile
+        );
+
+        writeAllDataBinary
+        (
+            "nfaced",
+            vf,
+            polys,
+            meshCellSets.nPolys,
+            ensightFile
+        );
     }
 
     label ensightPatchI = eMesh.patchPartOffset();
 
-    for
-    (
-        HashTable<labelList>::const_iterator iter = allPatchNames.begin();
-        iter != allPatchNames.end();
-        ++iter
-    )
+    forAll(allPatchNames, patchi)
     {
-        const word& patchName = iter.key();
-        const labelList& patchProcessors = iter();
+        const word& patchName = allPatchNames[patchi];
+        const labelList& patchProcessors = allPatchProcs[patchi];
 
         if (patchNames.empty() || patchNames.found(patchName))
         {
-            if (patchIndices.found(patchName))
+            if (mesh.boundary()[patchi].size())
             {
-                label patchI = patchIndices.find(patchName)();
-
                 if
                 (
                     writePatchFieldBinary
                     (
-                        vf.boundaryField()[patchI],
-                        patchI,
+                        vf.boundaryField()[patchi],
+                        patchi,
                         ensightPatchI,
-                        boundaryFaceSets[patchI],
+                        boundaryFaceSets[patchi],
                         nPatchPrims.find(patchName)(),
                         patchProcessors,
                         ensightFile
@@ -859,6 +873,7 @@ void ensightFieldBinary
     }
 }
 
+
 template<class Type>
 void ensightField
 (
diff --git a/applications/utilities/postProcessing/dataConversion/foamToEnsight/ensightMesh.C b/applications/utilities/postProcessing/dataConversion/foamToEnsight/ensightMesh.C
index 079145a0c567597811b54295430bf454d350c24e..c3262e6b9c4d3d98e1eacb8d5f50af6cb45fedb9 100644
--- a/applications/utilities/postProcessing/dataConversion/foamToEnsight/ensightMesh.C
+++ b/applications/utilities/postProcessing/dataConversion/foamToEnsight/ensightMesh.C
@@ -28,6 +28,7 @@ License
 #include "Time.H"
 #include "ensightMesh.H"
 #include "fvMesh.H"
+#include "globalMeshData.H"
 #include "PstreamCombineReduceOps.H"
 #include "processorPolyPatch.H"
 #include "cellModeller.H"
@@ -40,43 +41,37 @@ License
 
 namespace Foam
 {
+    //- Proxy-class to hold the patch processor list combination operator
+    class concatPatchProcs
+    {
 
-class concatPatchNames
-{
-
-public:
+    public:
 
-    void operator()
-    (
-        HashTable<labelList>& x,
-        const HashTable<labelList>& y
-    ) const
-    {
-        forAllConstIter(HashTable<labelList>, y, iter)
+        void operator()
+        (
+            List<labelList>& x,
+            const List<labelList>& y
+        ) const
         {
-            HashTable<labelList>::iterator xiter = x.find(iter.key());
-
-            if (xiter == x.end())
-            {
-                x.insert(iter.key(), iter());
-            }
-            else
+            forAll(y, i)
             {
-                labelList& xPatches = xiter();
-                const labelList& yPatches = iter();
-
-                label offset = xPatches.size();
-                xPatches.setSize(offset + yPatches.size());
+                const labelList& yPatches = y[i];
 
-                forAll(yPatches, i)
+                if (yPatches.size())
                 {
-                    xPatches[i + offset] = yPatches[i];
+                    labelList& xPatches = x[i];
+
+                    label offset = xPatches.size();
+                    xPatches.setSize(offset + yPatches.size());
+
+                    forAll(yPatches, i)
+                    {
+                        xPatches[i + offset] = yPatches[i];
+                    }
                 }
             }
         }
-    }
-};
-
+    };
 } // End namespace Foam
 
 
@@ -95,7 +90,7 @@ Foam::ensightMesh::ensightMesh
     meshCellSets_(mesh_.nCells()),
     boundaryFaceSets_(mesh_.boundary().size()),
     allPatchNames_(0),
-    patchIndices_(0),
+    allPatchProcs_(0),
     patchNames_(0),
     nPatchPrims_(0)
 {
@@ -109,32 +104,24 @@ Foam::ensightMesh::ensightMesh
 
     if (!args.optionFound("noPatches"))
     {
-        forAll (mesh_.boundaryMesh(), patchI)
+        allPatchNames_ = wordList::subList
+        (
+            mesh_.boundaryMesh().names(), mesh_.boundary().size()
+          - mesh_.globalData().processorPatches().size()
+        );
+
+        allPatchProcs_.setSize(allPatchNames_.size());
+
+        forAll (allPatchProcs_, patchi)
         {
-            if
-            (
-                typeid(mesh_.boundaryMesh()[patchI])
-             != typeid(processorPolyPatch)
-            )
+            if (mesh_.boundary()[patchi].size())
             {
-                if (!allPatchNames_.found(mesh_.boundaryMesh()[patchI].name()))
-                {
-                    allPatchNames_.insert
-                    (
-                        mesh_.boundaryMesh()[patchI].name(),
-                        labelList(1, Pstream::myProcNo())
-                    );
-
-                    patchIndices_.insert
-                    (
-                        mesh_.boundaryMesh()[patchI].name(),
-                        patchI
-                    );
-                }
+                allPatchProcs_[patchi].setSize(1);
+                allPatchProcs_[patchi][0] = Pstream::myProcNo();
             }
         }
 
-        combineReduce(allPatchNames_, concatPatchNames());
+        combineReduce(allPatchProcs_, concatPatchProcs());
 
         if (args.optionFound("patches"))
         {
@@ -142,7 +129,7 @@ Foam::ensightMesh::ensightMesh
 
             if (patchNameList.empty())
             {
-                patchNameList = allPatchNames_.toc();
+                patchNameList = allPatchNames_;
             }
 
             forAll (patchNameList, i)
@@ -230,15 +217,15 @@ Foam::ensightMesh::ensightMesh
 
     if (!args.optionFound("noPatches"))
     {
-        forAll (mesh.boundary(), patchI)
+        forAll (mesh.boundary(), patchi)
         {
-            if (mesh.boundary()[patchI].size())
+            if (mesh.boundary()[patchi].size())
             {
-                const polyPatch& p = mesh.boundaryMesh()[patchI];
+                const polyPatch& p = mesh.boundaryMesh()[patchi];
 
-                labelList& tris = boundaryFaceSets_[patchI].tris;
-                labelList& quads = boundaryFaceSets_[patchI].quads;
-                labelList& polys = boundaryFaceSets_[patchI].polys;
+                labelList& tris = boundaryFaceSets_[patchi].tris;
+                labelList& quads = boundaryFaceSets_[patchi].quads;
+                labelList& polys = boundaryFaceSets_[patchi].polys;
 
                 tris.setSize(p.size());
                 quads.setSize(p.size());
@@ -274,21 +261,19 @@ Foam::ensightMesh::ensightMesh
     }
 
 
-    forAllConstIter(HashTable<labelList>, allPatchNames_, iter)
+    forAll(allPatchNames_, patchi)
     {
-        const word& patchName = iter.key();
+        const word& patchName = allPatchNames_[patchi];
         nFacePrimitives nfp;
 
         if (patchNames_.empty() || patchNames_.found(patchName))
         {
-            if (patchIndices_.found(patchName))
+            if (mesh.boundary()[patchi].size())
             {
-                label patchI = patchIndices_.find(patchName)();
-
-                nfp.nPoints = mesh.boundaryMesh()[patchI].localPoints().size();
-                nfp.nTris   = boundaryFaceSets_[patchI].tris.size();
-                nfp.nQuads  = boundaryFaceSets_[patchI].quads.size();
-                nfp.nPolys  = boundaryFaceSets_[patchI].polys.size();
+                nfp.nPoints = mesh.boundaryMesh()[patchi].localPoints().size();
+                nfp.nTris   = boundaryFaceSets_[patchi].tris.size();
+                nfp.nQuads  = boundaryFaceSets_[patchi].quads.size();
+                nfp.nPolys  = boundaryFaceSets_[patchi].polys.size();
             }
         }
 
@@ -1052,13 +1037,13 @@ void Foam::ensightMesh::writeAscii
 
     label ensightPatchI = patchPartOffset_;
 
-    forAllConstIter(HashTable<labelList>, allPatchNames_, iter)
+    forAll(allPatchNames_, patchi)
     {
-        const labelList& patchProcessors = iter();
+        const word& patchName = allPatchNames_[patchi];
+        const labelList& patchProcessors = allPatchProcs_[patchi];
 
-        if (patchNames_.empty() || patchNames_.found(iter.key()))
+        if (patchNames_.empty() || patchNames_.found(patchName))
         {
-            const word& patchName = iter.key();
             const nFacePrimitives& nfp = nPatchPrims_.find(patchName)();
 
             const labelList *trisPtr  = NULL;
@@ -1068,14 +1053,13 @@ void Foam::ensightMesh::writeAscii
             const pointField *patchPointsPtr = NULL;
             const faceList *patchFacesPtr = NULL;
 
-            if (patchIndices_.found(iter.key()))
+            if (mesh_.boundary()[patchi].size())
             {
-                label patchI = patchIndices_.find(iter.key())();
-                const polyPatch& p = mesh_.boundaryMesh()[patchI];
+                const polyPatch& p = mesh_.boundaryMesh()[patchi];
 
-                trisPtr  = &boundaryFaceSets_[patchI].tris;
-                quadsPtr = &boundaryFaceSets_[patchI].quads;
-                polysPtr = &boundaryFaceSets_[patchI].polys;
+                trisPtr  = &boundaryFaceSets_[patchi].tris;
+                quadsPtr = &boundaryFaceSets_[patchi].quads;
+                polysPtr = &boundaryFaceSets_[patchi].polys;
 
                 patchPointsPtr = &(p.localPoints());
                 patchFacesPtr  = &(p.localFaces());
@@ -1265,7 +1249,7 @@ void Foam::ensightMesh::writeBinary
         {
             writeEnsDataBinary("part",ensightGeometryFile);
             writeEnsDataBinary(1,ensightGeometryFile);
-            writeEnsDataBinary("FOAM cells",ensightGeometryFile);
+            writeEnsDataBinary("internalMesh",ensightGeometryFile);
             writeEnsDataBinary("coordinates",ensightGeometryFile);
             writeEnsDataBinary(nPoints,ensightGeometryFile);
 
@@ -1379,14 +1363,14 @@ void Foam::ensightMesh::writeBinary
     label ensightPatchI = patchPartOffset_;
     label iCount = 0;
 
-    forAllConstIter(HashTable<labelList>, allPatchNames_, iter)
+    forAll(allPatchNames_, patchi)
     {
         iCount ++;
-        const labelList& patchProcessors = iter();
+        const word& patchName = allPatchNames_[patchi];
+        const labelList& patchProcessors = allPatchProcs_[patchi];
 
-        if (patchNames_.empty() || patchNames_.found(iter.key()))
+        if (patchNames_.empty() || patchNames_.found(patchName))
         {
-            const word& patchName = iter.key();
             const nFacePrimitives& nfp = nPatchPrims_.find(patchName)();
 
             const labelList *trisPtr = NULL;
@@ -1396,14 +1380,13 @@ void Foam::ensightMesh::writeBinary
             const pointField *patchPointsPtr = NULL;
             const faceList *patchFacesPtr = NULL;
 
-            if (patchIndices_.found(iter.key()))
+            if (mesh_.boundary()[patchi].size())
             {
-                label patchI = patchIndices_.find(iter.key())();
-                const polyPatch& p = mesh_.boundaryMesh()[patchI];
+                const polyPatch& p = mesh_.boundaryMesh()[patchi];
 
-                trisPtr = &boundaryFaceSets_[patchI].tris;
-                quadsPtr = &boundaryFaceSets_[patchI].quads;
-                polysPtr = &boundaryFaceSets_[patchI].polys;
+                trisPtr = &boundaryFaceSets_[patchi].tris;
+                quadsPtr = &boundaryFaceSets_[patchi].quads;
+                polysPtr = &boundaryFaceSets_[patchi].polys;
 
                 patchPointsPtr = &(p.localPoints());
                 patchFacesPtr = &(p.localFaces());
@@ -1424,7 +1407,7 @@ void Foam::ensightMesh::writeBinary
                     writeEnsDataBinary("part",ensightGeometryFile);
                     writeEnsDataBinary(ensightPatchI++,ensightGeometryFile);
                     //writeEnsDataBinary(patchName.c_str(),ensightGeometryFile);
-                    writeEnsDataBinary(iter.key().c_str(),ensightGeometryFile);
+                    writeEnsDataBinary(patchName.c_str(),ensightGeometryFile);
                     writeEnsDataBinary("coordinates",ensightGeometryFile);
                     writeEnsDataBinary(nfp.nPoints,ensightGeometryFile);
 
diff --git a/applications/utilities/postProcessing/dataConversion/foamToEnsight/ensightMesh.H b/applications/utilities/postProcessing/dataConversion/foamToEnsight/ensightMesh.H
index 6a3cb824708bb7a3e7543f327acc69fc2c918379..4ddb084d3d054c34961fb8e1d4c3a5a3bcb3db52 100644
--- a/applications/utilities/postProcessing/dataConversion/foamToEnsight/ensightMesh.H
+++ b/applications/utilities/postProcessing/dataConversion/foamToEnsight/ensightMesh.H
@@ -91,9 +91,9 @@ class ensightMesh
 
         List<faceSets> boundaryFaceSets_;
 
-        HashTable<labelList> allPatchNames_;
+        wordList allPatchNames_;
 
-        HashTable<label> patchIndices_;
+        List<labelList> allPatchProcs_;
 
         wordHashSet patchNames_;
 
@@ -269,14 +269,14 @@ public:
                 return boundaryFaceSets_;
             }
 
-            const HashTable<labelList>& allPatchNames() const
+            const wordList& allPatchNames() const
             {
                 return allPatchNames_;
             }
 
-            const HashTable<label>& patchIndices() const
+            const List<labelList>& allPatchProcs() const
             {
-                return patchIndices_;
+                return allPatchProcs_;
             }
 
             const wordHashSet& patchNames() const
diff --git a/applications/utilities/postProcessing/dataConversion/foamToVTK/foamToVTK.C b/applications/utilities/postProcessing/dataConversion/foamToVTK/foamToVTK.C
index 9bce0df59f259b5849ab9209e2ef6a94c78c264b..74ac3c5676bbeac0ae3b6da5d57348f6ff7d83a3 100644
--- a/applications/utilities/postProcessing/dataConversion/foamToVTK/foamToVTK.C
+++ b/applications/utilities/postProcessing/dataConversion/foamToVTK/foamToVTK.C
@@ -90,6 +90,9 @@ Usage
     The quoting is required to avoid shell expansions and to pass the
     information as a single argument.
 
+    @param -useTimeName \n
+    use the time index in the VTK file name instead of the time index
+
 Note
     mesh subset is handled by vtkMesh. Slight inconsistency in
     interpolation: on the internal field it interpolates the whole volfield
@@ -242,6 +245,7 @@ int main(int argc, char *argv[])
     argList::validOptions.insert("excludePatches","patches to exclude");
     argList::validOptions.insert("noFaceZones","");
     argList::validOptions.insert("noLinks","");
+    argList::validOptions.insert("useTimeName","");
 
 #   include "setRootCase.H"
 #   include "createTime.H"
@@ -250,6 +254,7 @@ int main(int argc, char *argv[])
     bool doFaceZones     = !args.optionFound("noFaceZones");
     bool doLinks         = !args.optionFound("noLinks");
     bool binary          = !args.optionFound("ascii");
+    bool useTimeName     = args.optionFound("useTimeName");
 
     if (binary && (sizeof(floatScalar) != 4 || sizeof(label) != 4))
     {
@@ -359,6 +364,16 @@ int main(int argc, char *argv[])
 
         Info<< "Time: " << runTime.timeName() << endl;
 
+        word timeDesc = "";
+        if (useTimeName)
+        {
+            timeDesc = runTime.timeName();
+        }
+        else
+        {
+            timeDesc = name(runTime.timeIndex());
+        }
+
         // Check for new polyMesh/ and update mesh, fvMeshSubset and cell
         // decomposition.
         polyMesh::readUpdateState meshState = vMesh.readUpdate();
@@ -388,7 +403,7 @@ int main(int argc, char *argv[])
             (
                 fvPath/set.name()/set.name()
               + "_"
-              + name(timeI)
+              + timeDesc
               + ".vtk"
             );
 
@@ -411,7 +426,7 @@ int main(int argc, char *argv[])
             (
                 fvPath/set.name()/set.name()
               + "_"
-              + name(timeI)
+              + timeDesc
               + ".vtk"
             );
 
@@ -548,7 +563,7 @@ int main(int argc, char *argv[])
             (
                 fvPath/vtkName
               + "_"
-              + name(timeI)
+              + timeDesc
               + ".vtk"
             );
 
@@ -654,8 +669,8 @@ int main(int argc, char *argv[])
                     fvPath
                    /"surfaceFields"
                    /"surfaceFields"
-	           + "_"
-                   + name(timeI)
+                   + "_"
+                   + timeDesc
                    + ".vtk"
                 );
 
@@ -689,7 +704,7 @@ int main(int argc, char *argv[])
                 patchFileName =
                     fvPath/"allPatches"/cellSetName
                   + "_"
-                  + name(timeI)
+                  + timeDesc
                   + ".vtk";
             }
             else
@@ -697,7 +712,7 @@ int main(int argc, char *argv[])
                 patchFileName =
                     fvPath/"allPatches"/"allPatches"
                   + "_"
-                  + name(timeI)
+                  + timeDesc
                   + ".vtk";
             }
 
@@ -767,7 +782,7 @@ int main(int argc, char *argv[])
                         patchFileName =
                             fvPath/pp.name()/cellSetName
                           + "_"
-                          + name(timeI)
+                          + timeDesc
                           + ".vtk";
                     }
                     else
@@ -775,7 +790,7 @@ int main(int argc, char *argv[])
                         patchFileName =
                             fvPath/pp.name()/pp.name()
                           + "_"
-                          + name(timeI)
+                          + timeDesc
                           + ".vtk";
                     }
 
@@ -867,7 +882,7 @@ int main(int argc, char *argv[])
                     patchFileName =
                         fvPath/pp.name()/cellSetName
                       + "_"
-                      + name(timeI)
+                      + timeDesc
                       + ".vtk";
                 }
                 else
@@ -875,7 +890,7 @@ int main(int argc, char *argv[])
                     patchFileName =
                         fvPath/pp.name()/pp.name()
                       + "_"
-                      + name(timeI)
+                      + timeDesc
                       + ".vtk";
                 }
 
@@ -931,7 +946,7 @@ int main(int argc, char *argv[])
                 fileName lagrFileName
                 (
                     fvPath/cloud::prefix/cloudDirs[i]/cloudDirs[i]
-                  + "_" + name(timeI) + ".vtk"
+                  + "_" + timeDesc + ".vtk"
                 );
 
                 Info<< "    Lagrangian: " << lagrFileName << endl;
diff --git a/applications/utilities/postProcessing/graphics/PV3FoamReader/PV3FoamReader/CMakeLists.txt b/applications/utilities/postProcessing/graphics/PV3FoamReader/PV3FoamReader/CMakeLists.txt
index 17be614da4d2e9db4390f247b195c4f92f351bd9..670b78c33d80f3f2e1db2e6f4ce3ac7e0f0551cf 100644
--- a/applications/utilities/postProcessing/graphics/PV3FoamReader/PV3FoamReader/CMakeLists.txt
+++ b/applications/utilities/postProcessing/graphics/PV3FoamReader/PV3FoamReader/CMakeLists.txt
@@ -23,7 +23,7 @@ INCLUDE_DIRECTORIES(
 )
 
 ADD_DEFINITIONS(
-    -D$ENV{WM_PRECISION_OPTION}
+    -DWM_$ENV{WM_PRECISION_OPTION}
 )
 
 # Set output library destination to plugin folder
diff --git a/applications/utilities/postProcessing/graphics/PVFoamReader/PVFoamReader/CMakeLists.txt b/applications/utilities/postProcessing/graphics/PVFoamReader/PVFoamReader/CMakeLists.txt
index acbe2254eb0a63be837caad19a7727dc231c0160..1c88efbbfff2b768cc1cdb3938bc190d54d7e45e 100644
--- a/applications/utilities/postProcessing/graphics/PVFoamReader/PVFoamReader/CMakeLists.txt
+++ b/applications/utilities/postProcessing/graphics/PVFoamReader/PVFoamReader/CMakeLists.txt
@@ -22,7 +22,7 @@ INCLUDE_DIRECTORIES(
     $ENV{ParaView_INST_DIR}/include
     ../vtkFoam/lnInclude
 )
-ADD_DEFINITIONS(-D$ENV{WM_PRECISION_OPTION})
+ADD_DEFINITIONS(-DWM_$ENV{WM_PRECISION_OPTION})
 
 #-----------------------------------------------------------------------------
 # Most users should not need to change anything below this line.
diff --git a/applications/utilities/postProcessing/lagrangian/particleTracks/Make/files b/applications/utilities/postProcessing/lagrangian/particleTracks/Make/files
new file mode 100644
index 0000000000000000000000000000000000000000..316b0f6ade74d966f2dd2aa14124e4701c2ec5dc
--- /dev/null
+++ b/applications/utilities/postProcessing/lagrangian/particleTracks/Make/files
@@ -0,0 +1,3 @@
+particleTracks.C
+
+EXE = $(FOAM_APPBIN)/particleTracks
diff --git a/applications/utilities/postProcessing/lagrangian/particleTracks/Make/options b/applications/utilities/postProcessing/lagrangian/particleTracks/Make/options
new file mode 100644
index 0000000000000000000000000000000000000000..1adeeefa12999bb91513d9e0b16a0a52a9fc15d2
--- /dev/null
+++ b/applications/utilities/postProcessing/lagrangian/particleTracks/Make/options
@@ -0,0 +1,7 @@
+EXE_INC = \
+    -I$(LIB_SRC)/finiteVolume/lnInclude \
+    -I$(LIB_SRC)/lagrangian/basic/lnInclude
+
+EXE_LIBS = \
+    -lfiniteVolume \
+    -llagrangian
diff --git a/applications/utilities/postProcessing/lagrangian/particleTracks/createFields.H b/applications/utilities/postProcessing/lagrangian/particleTracks/createFields.H
new file mode 100644
index 0000000000000000000000000000000000000000..aef0139de1db22ae157c16f641ec0b2e54947d47
--- /dev/null
+++ b/applications/utilities/postProcessing/lagrangian/particleTracks/createFields.H
@@ -0,0 +1,22 @@
+IOdictionary propsDict
+(
+    IOobject
+    (
+        "particleTrackProperties",
+        runTime.constant(),
+        mesh,
+        IOobject::MUST_READ
+    )
+);
+
+word cloudName(propsDict.lookup("cloudName"));
+
+label sampleFrequency(readLabel(propsDict.lookup("sampleFrequency")));
+
+// outputMode: compositeFile, filePerTrack
+//word outputmode(propsDict.lookup("outputMode"))
+
+label maxPositions(readLabel(propsDict.lookup("maxPositions")));
+
+// outputFormat: raw, vtk
+//word outputFormat(propsDict.lookup("outputFormat"));
diff --git a/applications/utilities/postProcessing/lagrangian/particleTracks/particleTracks.C b/applications/utilities/postProcessing/lagrangian/particleTracks/particleTracks.C
new file mode 100644
index 0000000000000000000000000000000000000000..3ad01ef870cbed3bad0679237c047cff41b22df7
--- /dev/null
+++ b/applications/utilities/postProcessing/lagrangian/particleTracks/particleTracks.C
@@ -0,0 +1,238 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Application
+    particleTracks
+
+Description
+    Generates a VTK file of particle tracks for cases that were computed using
+    a tracked-parcel-type cloud
+
+\*---------------------------------------------------------------------------*/
+
+#include "argList.H"
+#include "Cloud.H"
+#include "IOdictionary.H"
+#include "fvMesh.H"
+#include "Time.H"
+#include "timeSelector.H"
+#include "OFstream.H"
+#include "passiveParticleCloud.H"
+
+using namespace Foam;
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+int main(int argc, char *argv[])
+{
+    timeSelector::addOptions();
+    #include "addRegionOption.H"
+
+    #include "setRootCase.H"
+
+    #include "createTime.H"
+    instantList timeDirs = timeSelector::select0(runTime, args);
+    #include "createNamedMesh.H"
+    #include "createFields.H"
+
+    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+    fileName vtkPath(runTime.path()/"VTK");
+    mkDir(vtkPath);
+
+    Info<< "Scanning times to determine track data for cloud " << cloudName
+        << nl << endl;
+
+    labelList maxIds(Pstream::nProcs(), -1);
+    forAll(timeDirs, timeI)
+    {
+        runTime.setTime(timeDirs[timeI], timeI);
+        Info<< "Time = " << runTime.timeName() << endl;
+
+        Info<< "    Reading particle positions" << endl;
+        passiveParticleCloud myCloud(mesh, cloudName);
+        Info<< "    Read " << returnReduce(myCloud.size(), sumOp<label>())
+            << " particles" << endl;
+
+        forAllConstIter(passiveParticleCloud, myCloud, iter)
+        {
+            label origId = iter().origId();
+            label origProc = iter().origProc();
+
+            maxIds[origProc] = max(maxIds[origProc], origId);
+        }
+    }
+    Pstream::listCombineGather(maxIds, maxEqOp<label>());
+    Pstream::listCombineScatter(maxIds);
+
+    labelList numIds = maxIds + 1;
+
+    Info<< nl << "Particle statistics:" << endl;
+    forAll(maxIds, procI)
+    {
+        Info<< "    Found " << numIds[procI] << " particles originating"
+            << " from processor " << procI << endl;
+    }
+    Info<< nl << endl;
+
+
+    // calc starting ids for particles on each processor
+    List<label> startIds(numIds.size(), 0);
+    for (label i = 0; i < numIds.size()-1; i++)
+    {
+        startIds[i+1] += startIds[i] + numIds[i];
+    }
+    label nParticle = startIds[startIds.size()-1] + numIds[startIds.size()-1];
+
+
+
+    // number of tracks to generate
+    label nTracks = nParticle/sampleFrequency;
+
+    // storage for all particle tracks
+    List<DynamicList<vector> > allTracks(nTracks);
+
+    Info<< "\nGenerating " << nTracks << " particle tracks for cloud "
+        << cloudName << nl << endl;
+
+    forAll(timeDirs, timeI)
+    {
+        runTime.setTime(timeDirs[timeI], timeI);
+        Info<< "Time = " << runTime.timeName() << endl;
+
+        List<pointField> allPositions(Pstream::nProcs());
+        List<labelField> allOrigIds(Pstream::nProcs());
+        List<labelField> allOrigProcs(Pstream::nProcs());
+
+        // Read particles. Will be size 0 if no particles.
+        Info<< "    Reading particle positions" << endl;
+        passiveParticleCloud myCloud(mesh, cloudName);
+
+        // collect the track data on all processors that have positions
+        allPositions[Pstream::myProcNo()].setSize
+        (
+            myCloud.size(),
+            point::zero
+        );
+        allOrigIds[Pstream::myProcNo()].setSize(myCloud.size(), 0);
+        allOrigProcs[Pstream::myProcNo()].setSize(myCloud.size(), 0);
+
+        label i = 0;
+        forAllConstIter(passiveParticleCloud, myCloud, iter)
+        {
+            allPositions[Pstream::myProcNo()][i] = iter().position();
+            allOrigIds[Pstream::myProcNo()][i] = iter().origId();
+            allOrigProcs[Pstream::myProcNo()][i] = iter().origProc();
+            i++;
+        }
+
+        // collect the track data on the master processor
+        Pstream::gatherList(allPositions);
+        Pstream::gatherList(allOrigIds);
+        Pstream::gatherList(allOrigProcs);
+
+        Info<< "    Constructing tracks" << nl << endl;
+        if (Pstream::master())
+        {
+            forAll(allPositions, procI)
+            {
+                forAll(allPositions[procI], i)
+                {
+                    label globalId =
+                        startIds[allOrigProcs[procI][i]]
+                      + allOrigIds[procI][i];
+
+                    if (globalId % sampleFrequency == 0)
+                    {
+                        label trackId = globalId/sampleFrequency;
+                        if (allTracks[trackId].size() < maxPositions)
+                        {
+                            allTracks[trackId].append
+                            (
+                                allPositions[procI][i]
+                            );
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    if (Pstream::master())
+    {
+        OFstream vtkTracks(vtkPath/"particleTracks.vtk");
+
+        Info<< "\nWriting particle tracks to " << vtkTracks.name()
+            << nl << endl;
+
+        // Total number of points in tracks + 1 per track
+        label nPoints = 0;
+        forAll(allTracks, trackI)
+        {
+            nPoints += allTracks[trackI].size();
+        }
+
+        vtkTracks
+            << "# vtk DataFile Version 2.0" << nl
+            << "particleTracks" << nl
+            << "ASCII" << nl
+            << "DATASET POLYDATA" << nl
+            << "POINTS " << nPoints << " float" << nl;
+
+        // Write track points to file
+        forAll(allTracks, trackI)
+        {
+            forAll(allTracks[trackI], i)
+            {
+                const vector& pt = allTracks[trackI][i];
+                vtkTracks << pt.x() << ' ' << pt.y() << ' ' << pt.z() << nl;
+            }
+        }
+
+        // write track (line) connectivity to file
+        vtkTracks << "LINES " << nTracks << ' ' << nPoints+nTracks << nl;
+
+        // Write ids of track points to file
+        label globalPtI = 0;
+        forAll(allTracks, trackI)
+        {
+            vtkTracks << allTracks[trackI].size();
+
+            forAll(allTracks[trackI], i)
+            {
+                vtkTracks << ' ' << globalPtI;
+                globalPtI++;
+            }
+
+            vtkTracks << nl;
+        }
+
+        Info<< "end" << endl;
+    }
+
+    return 0;
+}
+
+
+// ************************************************************************* //
diff --git a/applications/utilities/postProcessing/miscellaneous/dsmcFieldsCalc/Make/files b/applications/utilities/postProcessing/miscellaneous/dsmcFieldsCalc/Make/files
old mode 100755
new mode 100644
diff --git a/applications/utilities/postProcessing/miscellaneous/dsmcFieldsCalc/Make/options b/applications/utilities/postProcessing/miscellaneous/dsmcFieldsCalc/Make/options
old mode 100755
new mode 100644
diff --git a/applications/utilities/postProcessing/miscellaneous/dsmcFieldsCalc/dsmcFieldsCalc.C b/applications/utilities/postProcessing/miscellaneous/dsmcFieldsCalc/dsmcFieldsCalc.C
index 15c1153db5b17dec5191b50311c85937d588e88b..95077df225fbae93d2ac8db5d3584c81dbe68a60 100644
--- a/applications/utilities/postProcessing/miscellaneous/dsmcFieldsCalc/dsmcFieldsCalc.C
+++ b/applications/utilities/postProcessing/miscellaneous/dsmcFieldsCalc/dsmcFieldsCalc.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/applications/utilities/postProcessing/miscellaneous/execFlowFunctionObjects/execFlowFunctionObjects.C b/applications/utilities/postProcessing/miscellaneous/execFlowFunctionObjects/execFlowFunctionObjects.C
index 0843f3acf3b72ea161cfb5958493373792787fac..b9310ffc92c5a51be55475d778465399da550a32 100644
--- a/applications/utilities/postProcessing/miscellaneous/execFlowFunctionObjects/execFlowFunctionObjects.C
+++ b/applications/utilities/postProcessing/miscellaneous/execFlowFunctionObjects/execFlowFunctionObjects.C
@@ -42,7 +42,7 @@ Description
 #include "incompressible/RAS/RASModel/RASModel.H"
 #include "incompressible/LES/LESModel/LESModel.H"
 
-#include "basicThermo.H"
+#include "basicPsiThermo.H"
 #include "compressible/RAS/RASModel/RASModel.H"
 #include "compressible/LES/LESModel/LESModel.H"
 
@@ -194,7 +194,7 @@ void Foam::calc(const argList& args, const Time& runTime, const fvMesh& mesh)
     }
     else if (phi.dimensions() == dimensionSet(1, 0, -1, 0, 0))
     {
-        autoPtr<basicThermo> thermo(basicThermo::New(mesh));
+        autoPtr<basicPsiThermo> thermo(basicPsiThermo::New(mesh));
 
         volScalarField rho
         (
diff --git a/applications/utilities/postProcessing/patch/patchIntegrate/patchIntegrate.C b/applications/utilities/postProcessing/patch/patchIntegrate/patchIntegrate.C
index dc92aade57b699d0a6b4816c1825684b304b2575..54acae002582bfa1dcb5e09c5c20255be2c7bac4 100644
--- a/applications/utilities/postProcessing/patch/patchIntegrate/patchIntegrate.C
+++ b/applications/utilities/postProcessing/patch/patchIntegrate/patchIntegrate.C
@@ -78,7 +78,7 @@ int main(int argc, char *argv[])
             // Give patch area
             if (isType<cyclicPolyPatch>(mesh.boundaryMesh()[patchi]))
             {
-                Info<< "    Cyclic patch area: " << nl;
+                Info<< "    Cyclic patch vector area: " << nl;
                 label nFaces = mesh.boundaryMesh()[patchi].size();
                 vector sum1 = vector::zero;
                 vector sum2 = vector::zero;
@@ -92,12 +92,18 @@ int main(int argc, char *argv[])
                 Info<< "    - half 1 = " << sum1 << ", " << mag(sum1) << nl
                     << "    - half 2 = " << sum2 << ", " << mag(sum2) << nl
                     << "    - total  = " << (sum1 + sum2) << ", "
-                    << mag(sum1 + sum2) << endl;;
+                    << mag(sum1 + sum2) << endl;
+                Info<< "    Cyclic patch area magnitude = "
+                    << gSum(mesh.magSf().boundaryField()[patchi])/2.0 << endl;
             }
             else
             {
-                Info<< "    Patch area = "
+                Info<< "    Area vector of patch "
+                    << patchName << '[' << patchi << ']' << " = "
                     << gSum(mesh.Sf().boundaryField()[patchi]) << endl;
+                Info<< "    Area magnitude of patch "
+                    << patchName << '[' << patchi << ']' << " = "
+                    << gSum(mesh.magSf().boundaryField()[patchi]) << endl;
             }
 
             // Read field and calc integral
@@ -107,15 +113,26 @@ int main(int argc, char *argv[])
                     << fieldName << endl;
 
                 volScalarField field(fieldHeader, mesh);
-                vector sumField = gSum
-                (
-                    mesh.Sf().boundaryField()[patchi]
-                   *field.boundaryField()[patchi]
-                );
 
-                Info<< "    Integral of " << fieldName << " over patch "
+                Info<< "    Integral of " << fieldName
+                    << " over vector area of patch "
                     << patchName << '[' << patchi << ']' << " = "
-                    << sumField << nl;
+                    << gSum
+                       (
+                           mesh.Sf().boundaryField()[patchi]
+                          *field.boundaryField()[patchi]
+                       )
+                    << nl;
+
+                Info<< "    Integral of " << fieldName
+                    << " over area magnitude of patch "
+                    << patchName << '[' << patchi << ']' << " = "
+                    << gSum
+                       (
+                           mesh.magSf().boundaryField()[patchi]
+                          *field.boundaryField()[patchi]
+                       )
+                    << nl;
             }
             else if
             (
diff --git a/applications/utilities/postProcessing/velocityField/Mach/Mach.C b/applications/utilities/postProcessing/velocityField/Mach/Mach.C
index daa4aa2ccf3d7aef33eef506761f46cb7c168a1c..2e7c517e9d0358f7bbdb37ea0e121384b755f356 100644
--- a/applications/utilities/postProcessing/velocityField/Mach/Mach.C
+++ b/applications/utilities/postProcessing/velocityField/Mach/Mach.C
@@ -33,7 +33,7 @@ Description
 \*---------------------------------------------------------------------------*/
 
 #include "calc.H"
-#include "basicThermo.H"
+#include "basicPsiThermo.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 void Foam::calc(const argList& args, const Time& runTime, const fvMesh& mesh)
@@ -66,9 +66,9 @@ void Foam::calc(const argList& args, const Time& runTime, const fvMesh& mesh)
         if (isFile(runTime.constantPath()/"thermophysicalProperties"))
         {
             // thermophysical Mach
-            autoPtr<basicThermo> thermo
+            autoPtr<basicPsiThermo> thermo
             (
-                basicThermo::New(mesh)
+                basicPsiThermo::New(mesh)
             );
 
             volScalarField Cp = thermo->Cp();
diff --git a/applications/utilities/postProcessing/velocityField/Mach/thermophysicalMach.H b/applications/utilities/postProcessing/velocityField/Mach/thermophysicalMach.H
index 4e4ea81b3d87463b4c8d91fb115e0ea465e4b41b..7283802f7790a6c0cf209195a9273e51697fc017 100644
--- a/applications/utilities/postProcessing/velocityField/Mach/thermophysicalMach.H
+++ b/applications/utilities/postProcessing/velocityField/Mach/thermophysicalMach.H
@@ -18,9 +18,9 @@
         {
             volVectorField U(Uheader, mesh);
 
-            autoPtr<basicThermo> thermo
+            autoPtr<basicPsiThermo> thermo
             (
-                basicThermo::New(mesh)
+                basicPsiThermo::New(mesh)
             );
 
             volScalarField Cp = thermo->Cp();
diff --git a/applications/utilities/postProcessing/velocityField/Pe/Pe.C b/applications/utilities/postProcessing/velocityField/Pe/Pe.C
index 905074131d9f32b2d3d199dc8f12aae410343cb1..05c9ca1a0d2488dcd717df604e96f230f9cb9c7b 100644
--- a/applications/utilities/postProcessing/velocityField/Pe/Pe.C
+++ b/applications/utilities/postProcessing/velocityField/Pe/Pe.C
@@ -39,7 +39,7 @@ Description
 #include "incompressible/singlePhaseTransportModel/singlePhaseTransportModel.H"
 #include "incompressible/RAS/RASModel/RASModel.H"
 #include "incompressible/LES/LESModel/LESModel.H"
-#include "basicThermo.H"
+#include "basicPsiThermo.H"
 #include "compressible/RAS/RASModel/RASModel.H"
 #include "compressible/LES/LESModel/LESModel.H"
 
@@ -204,7 +204,7 @@ void Foam::calc(const argList& args, const Time& runTime, const fvMesh& mesh)
             {
                 IOdictionary RASProperties(RASPropertiesHeader);
 
-                autoPtr<basicThermo> thermo(basicThermo::New(mesh));
+                autoPtr<basicPsiThermo> thermo(basicPsiThermo::New(mesh));
 
                 volScalarField rho
                 (
@@ -252,7 +252,7 @@ void Foam::calc(const argList& args, const Time& runTime, const fvMesh& mesh)
             {
                 IOdictionary LESProperties(LESPropertiesHeader);
 
-                autoPtr<basicThermo> thermo(basicThermo::New(mesh));
+                autoPtr<basicPsiThermo> thermo(basicPsiThermo::New(mesh));
 
                 volScalarField rho
                 (
diff --git a/applications/utilities/postProcessing/wall/wallHeatFlux/Make/options b/applications/utilities/postProcessing/wall/wallHeatFlux/Make/options
index 64ac8299174fe95e6954bf6c3f74967bbdd80004..8cdfe23fd1daf63d9c8e782f084eb202d891dd6e 100644
--- a/applications/utilities/postProcessing/wall/wallHeatFlux/Make/options
+++ b/applications/utilities/postProcessing/wall/wallHeatFlux/Make/options
@@ -2,13 +2,13 @@ EXE_INC = \
     -I$(LIB_SRC)/turbulenceModels \
     -I$(LIB_SRC)/turbulenceModels/compressible/RAS/RASModel \
     -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \
-    -I$(LIB_SRC)/thermophysicalModels/combustion/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
     -I$(LIB_SRC)/finiteVolume/lnInclude
 
 EXE_LIBS = \
     -lcompressibleRASModels \
-    -lcombustionThermophysicalModels \
+    -lreactionThermophysicalModels \
     -lfiniteVolume \
     -lspecie \
     -lbasicThermophysicalModels
diff --git a/applications/utilities/postProcessing/wall/yPlusLES/Make/options b/applications/utilities/postProcessing/wall/yPlusLES/Make/options
index 79fbbac91eff3fd29abdd775aa543a905a0c1162..f6131ce41c17a8d8d5b852fe0e1f07e1d62308f6 100644
--- a/applications/utilities/postProcessing/wall/yPlusLES/Make/options
+++ b/applications/utilities/postProcessing/wall/yPlusLES/Make/options
@@ -1,4 +1,5 @@
 EXE_INC = \
+    -I$(LIB_SRC)/meshTools/lnInclude \
     -I$(LIB_SRC)/turbulenceModels \
     -I$(LIB_SRC)/turbulenceModels/incompressible/LES/LESModel \
     -I$(LIB_SRC)/turbulenceModels/LES/LESdeltas/lnInclude \
diff --git a/applications/utilities/postProcessing/wall/yPlusLES/yPlusLES.C b/applications/utilities/postProcessing/wall/yPlusLES/yPlusLES.C
index 82ee27fa0ab6580cfcece3f9854718ded7abe196..67dc0df3f0e8c333fb2996255b047c34f8455f3c 100644
--- a/applications/utilities/postProcessing/wall/yPlusLES/yPlusLES.C
+++ b/applications/utilities/postProcessing/wall/yPlusLES/yPlusLES.C
@@ -34,6 +34,7 @@ Description
 #include "incompressible/singlePhaseTransportModel/singlePhaseTransportModel.H"
 #include "LESModel.H"
 #include "nearWallDist.H"
+#include "wallDist.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -49,7 +50,18 @@ int main(int argc, char *argv[])
     {
         runTime.setTime(timeDirs[timeI], timeI);
         Info<< "Time = " << runTime.timeName() << endl;
-        mesh.readUpdate();
+        fvMesh::readUpdateState state = mesh.readUpdate();
+
+        // Wall distance
+        if (timeI == 0 || state != fvMesh::UNCHANGED)
+        {
+            Info<< "Calculating wall distance\n" << endl;
+            wallDist y(mesh, true);
+            Info<< "Writing wall distance to field "
+                << y.name() << nl << endl;
+            y.write();
+        }
+
 
         volScalarField yPlus
         (
@@ -116,6 +128,9 @@ int main(int argc, char *argv[])
             }
         }
 
+        Info<< "Writing yPlus to field "
+            << yPlus.name() << nl << endl;
+
         yPlus.write();
     }
 
diff --git a/applications/utilities/postProcessing/wall/yPlusRAS/Make/options b/applications/utilities/postProcessing/wall/yPlusRAS/Make/options
index 89632547e0815e442b8f0082777fabb715fbc981..9ec5fca52baaa1f55b00483950ab4cf2ad1f9909 100644
--- a/applications/utilities/postProcessing/wall/yPlusRAS/Make/options
+++ b/applications/utilities/postProcessing/wall/yPlusRAS/Make/options
@@ -1,4 +1,5 @@
 EXE_INC = \
+    -I$(LIB_SRC)/meshTools/lnInclude \
     -I$(LIB_SRC)/transportModels \
     -I$(LIB_SRC)/turbulenceModels \
     -I$(LIB_SRC)/turbulenceModels/incompressible/RAS/RASModel \
diff --git a/applications/utilities/postProcessing/wall/yPlusRAS/yPlusRAS.C b/applications/utilities/postProcessing/wall/yPlusRAS/yPlusRAS.C
index 7d1e4796f2b5f75ae740b31169a522bbc9dfbd9d..a93712263e6aafbc375270c815609afc5aae904f 100644
--- a/applications/utilities/postProcessing/wall/yPlusRAS/yPlusRAS.C
+++ b/applications/utilities/postProcessing/wall/yPlusRAS/yPlusRAS.C
@@ -34,6 +34,7 @@ Description
 #include "incompressible/singlePhaseTransportModel/singlePhaseTransportModel.H"
 #include "RASModel.H"
 #include "wallFvPatch.H"
+#include "wallDist.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -49,7 +50,17 @@ int main(int argc, char *argv[])
     {
         runTime.setTime(timeDirs[timeI], timeI);
         Info<< "Time = " << runTime.timeName() << endl;
-        mesh.readUpdate();
+        fvMesh::readUpdateState state = mesh.readUpdate();
+
+        // Wall distance
+        if (timeI == 0 || state != fvMesh::UNCHANGED)
+        {
+            Info<< "Calculating wall distance\n" << endl;
+            wallDist y(mesh, true);
+            Info<< "Writing wall distance to field "
+                << y.name() << nl << endl;
+            y.write();
+        }
 
         volScalarField yPlus
         (
@@ -106,6 +117,9 @@ int main(int argc, char *argv[])
             }
         }
 
+        Info<< "Writing yPlus to field "
+            << yPlus.name() << nl << endl;
+
         yPlus.write();
     }
 
diff --git a/applications/utilities/preProcessing/dsmcInitialise/Make/files b/applications/utilities/preProcessing/dsmcInitialise/Make/files
old mode 100755
new mode 100644
diff --git a/applications/utilities/preProcessing/dsmcInitialise/Make/options b/applications/utilities/preProcessing/dsmcInitialise/Make/options
old mode 100755
new mode 100644
diff --git a/applications/utilities/preProcessing/dsmcInitialise/dsmcInitialise.C b/applications/utilities/preProcessing/dsmcInitialise/dsmcInitialise.C
index c2f797c17e0d027bcdfc6ccd86770f03c6a4ae4d..f8b831001df83cdafbfb6998a79312ed03176049 100644
--- a/applications/utilities/preProcessing/dsmcInitialise/dsmcInitialise.C
+++ b/applications/utilities/preProcessing/dsmcInitialise/dsmcInitialise.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/applications/utilities/preProcessing/mdInitialise/Make/files b/applications/utilities/preProcessing/mdInitialise/Make/files
old mode 100755
new mode 100644
diff --git a/applications/utilities/preProcessing/mdInitialise/Make/options b/applications/utilities/preProcessing/mdInitialise/Make/options
old mode 100755
new mode 100644
diff --git a/applications/utilities/preProcessing/mdInitialise/mdInitialise.C b/applications/utilities/preProcessing/mdInitialise/mdInitialise.C
index 2f06531e335727955a2c8ac97d908da5d71c1937..ecd0221957f1a6836a9b98f838917a907e3d7149 100644
--- a/applications/utilities/preProcessing/mdInitialise/mdInitialise.C
+++ b/applications/utilities/preProcessing/mdInitialise/mdInitialise.C
@@ -2,7 +2,7 @@
  =========                   |
  \\      /   F ield          | OpenFOAM: The Open Source CFD Toolbox
   \\    /    O peration      |
-   \\  /     A nd            | Copyright (C) 1991-2009 OpenCFD Ltd.
+   \\  /     A nd            | Copyright (C) 2008-2009 OpenCFD Ltd.
     \\/      M anipulation   |
 -------------------------------------------------------------------------------
 License
diff --git a/applications/utilities/preProcessing/mdInitialise/molConfig_old/Make/files b/applications/utilities/preProcessing/mdInitialise/molConfig_old/Make/files
deleted file mode 100755
index 6501e68426960c755a310e7a12b7b53548ddeb98..0000000000000000000000000000000000000000
--- a/applications/utilities/preProcessing/mdInitialise/molConfig_old/Make/files
+++ /dev/null
@@ -1,8 +0,0 @@
-latticeStructures = latticeStructures
-velocityDistributions = velocityDistributions
-
-createMolecules.C
-molConfig.C
-genMolConfig.C
-
-EXE = $(FOAM_APPBIN)/molConfig
diff --git a/applications/utilities/preProcessing/mdInitialise/molConfig_old/Make/options b/applications/utilities/preProcessing/mdInitialise/molConfig_old/Make/options
deleted file mode 100755
index aab9a2ca4f7e9119ebfa389b5b14b74911317f1a..0000000000000000000000000000000000000000
--- a/applications/utilities/preProcessing/mdInitialise/molConfig_old/Make/options
+++ /dev/null
@@ -1,17 +0,0 @@
-EXE_INC = \
-    -I$(latticeStructures) \
-    -I$(velocityDistributions) \
-    -I$(LIB_SRC)/meshTools/lnInclude \
-    -I$(LIB_SRC)/dynamicMesh/lnInclude \
-    -I$(LIB_SRC)/lagrangian/molecularDynamics/molecule/lnInclude \
-    -I$(LIB_SRC)/lagrangian/molecularDynamics/potential/lnInclude \
-    -I$(LIB_SRC)/lagrangian/basic/lnInclude \
-    -I$(LIB_SRC)/finiteVolume/lnInclude
-
-EXE_LIBS = \
-    -lmeshTools \
-    -ldynamicMesh \
-    -lfiniteVolume \
-    -llagrangian \
-    -lmolecule \
-    -lpotential
diff --git a/applications/utilities/preProcessing/mdInitialise/molConfig_old/correctVelocities.H b/applications/utilities/preProcessing/mdInitialise/molConfig_old/correctVelocities.H
deleted file mode 100644
index 0c69f15c7cda7cff0fa4387196c1dbea09c096e1..0000000000000000000000000000000000000000
--- a/applications/utilities/preProcessing/mdInitialise/molConfig_old/correctVelocities.H
+++ /dev/null
@@ -1,21 +0,0 @@
-for (molN = totalMols; molN < totalMols + totalZoneMols; molN++)
-{
-
-    // Remove bulk momentum introduced by random numbers and add
-    // desired bulk velocity
-
-    // For systems with molecules of significantly differing masses, this may
-    // need to be an iterative process or employ a better algorithm for
-    // removing an appropriate share of the excess momentum from each molecule.
-
-    initialVelocities(molN) += bulkVelocity - momentumSum/totalZoneMols/mass;
-}
-
-// momentumSum = vector::zero;
-//
-// for (molN = totalMols; molN < totalMols + totalZoneMols; molN++)
-// {
-//     momentumSum += mass*initialVelocities(molN);
-// }
-//
-// Info << "Check momentum adjustment: " << momentumSum << endl;
diff --git a/applications/utilities/preProcessing/mdInitialise/molConfig_old/createMolecules.C b/applications/utilities/preProcessing/mdInitialise/molConfig_old/createMolecules.C
deleted file mode 100644
index dbb0f680ce2ee87e3e0846f9a4c8b50b3ca4c876..0000000000000000000000000000000000000000
--- a/applications/utilities/preProcessing/mdInitialise/molConfig_old/createMolecules.C
+++ /dev/null
@@ -1,253 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by the
-    Free Software Foundation; either version 2 of the License, or (at your
-    option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM; if not, write to the Free Software Foundation,
-    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-\*----------------------------------------------------------------------------*/
-
-#include "molConfig.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-void Foam::molConfig::createMolecules()
-{
-    Info<< nl << "Creating molecules from zone specifications\n" << endl;
-
-    DynamicList<vector> initialPositions(0);
-
-    DynamicList<label> initialIds(0);
-
-    DynamicList<scalar> initialMasses(0);
-
-    DynamicList<label> initialCelli(0);
-
-    DynamicList<vector> initialVelocities(0);
-
-    DynamicList<vector> initialAccelerations(0);
-
-    DynamicList<label> initialTethered(0);
-
-    DynamicList<vector> initialTetherPositions(0);
-
-    label totalMols = 0;
-
-    label idAssign;
-
-    Random rand(clock::getTime());
-
-// * * * * * * * * Building the IdList * * * * * * * * * //
-
-//Notes: - each processor will have an identical idList_.
-//       - The order of id's inside the idList_ depends on the order
-//         of subDicts inside the molConigDict.
-
-    Info<< "Building the idList: " ;
-
-    forAll(molConfigDescription_.toc(), cZs)
-    {
-        word subDictName (molConfigDescription_.toc()[cZs]);
-
-        word iD (molConfigDescription_.subDict(subDictName).lookup("id"));
-
-        if (findIndex(idList_,iD) == -1)
-        {
-            idList_.append(iD);
-        }
-    }
-
-    forAll(idList_, i)
-    {
-        Info << " " << idList_[i];
-    }
-
-    Info << nl << endl;
-
-// * * * * * * * * Filling the Mesh * * * * * * * * * //
-
-    const cellZoneMesh& cellZoneI = mesh_.cellZones();
-
-    if (cellZoneI.size())
-    {
-        Info<< "Filling the zones with molecules." << nl << endl;
-    }
-    else
-    {
-        FatalErrorIn("void createMolecules()\n")
-            << "No cellZones found in mesh description."
-            << abort(FatalError);
-    }
-
-    forAll (cellZoneI, cZ)
-    {
-        if (cellZoneI[cZ].size())
-        {
-            if (!molConfigDescription_.found(cellZoneI[cZ].name()))
-            {
-                Info << "Zone specification subDictionary: "
-                    << cellZoneI[cZ].name() << " not found." << endl;
-            }
-            else
-            {
-                label n = 0;
-
-                label totalZoneMols = 0;
-
-                label molsPlacedThisIteration;
-
-#               include "readZoneSubDict.H"
-
-                idAssign = findIndex(idList_,id);
-
-#               include "startingPoint.H"
-
-                // Continue trying to place molecules as long as at
-                // least one molecule is placed in each iteration.
-                // The "|| totalZoneMols == 0" condition means that the
-                // algorithm will continue if the origin is outside the
-                // zone - it will cause an infinite loop if no molecules
-                // are ever placed by the algorithm.
-
-                if (latticeStructure != "empty")
-                {
-
-                    while
-                    (
-                        molsPlacedThisIteration != 0
-                     || totalZoneMols == 0
-                    )
-                    {
-                        molsPlacedThisIteration = 0;
-
-                        bool partOfLayerInBounds = false;
-
-#                       include "createPositions.H"
-
-                        if
-                        (
-                            totalZoneMols == 0
-                         && !partOfLayerInBounds
-                        )
-                        {
-                            WarningIn("molConfig::createMolecules()")
-                                << "A whole layer of unit cells was placed "
-                                << "outside the bounds of the mesh, but no "
-                                << "molecules have been placed in zone '"
-                                << cellZoneI[cZ].name()
-                                << "'.  This is likely to be because the zone "
-                                << "has few cells ("
-                                << cellZoneI[cZ].size()
-                                << " in this case) and no lattice position "
-                                << "fell inside them.  "
-                                << "Aborting filling this zone."
-                                << endl;
-
-                            break;
-                        }
-
-                        totalZoneMols += molsPlacedThisIteration;
-
-                        n++;
-                    }
-
-                    label molN;
-
-                    for
-                    (
-                        molN = totalMols;
-                        molN < totalMols + totalZoneMols;
-                        molN++
-                    )
-                    {
-                        initialIds.append(idAssign);
-
-                        initialMasses.append(mass);
-
-                        initialAccelerations.append(vector::zero);
-
-                        if (tethered)
-                        {
-                            initialTethered.append(1);
-
-                            initialTetherPositions.append
-                            (
-                                initialPositions[molN]
-                            );
-                        }
-
-                        else
-                        {
-                            initialTethered.append(0);
-
-                            initialTetherPositions.append(vector::zero);
-                        }
-                    }
-
-#                   include "createVelocities.H"
-
-#                   include "correctVelocities.H"
-
-                }
-
-                totalMols += totalZoneMols;
-            }
-        }
-    }
-
-    idList_.shrink();
-
-    positions_ = initialPositions;
-
-    positions_.setSize(initialPositions.size());
-
-    id_ = initialIds;
-
-    id_.setSize(initialIds.size());
-
-    mass_ = initialMasses;
-
-    mass_.setSize(initialMasses.size());
-
-    cells_ = initialCelli;
-
-    cells_.setSize(initialCelli.size());
-
-    U_ = initialVelocities;
-
-    U_.setSize(initialVelocities.size());
-
-    A_ = initialAccelerations;
-
-    A_.setSize(initialAccelerations.size());
-
-    tethered_ = initialTethered;
-
-    tethered_.setSize(initialTethered.size());
-
-    tetherPositions_ = initialTetherPositions;
-
-    tetherPositions_.setSize(initialTetherPositions.size());
-
-    nMol_ = totalMols;
-}
-
-
-// ************************************************************************* //
diff --git a/applications/utilities/preProcessing/mdInitialise/molConfig_old/createPositions.H b/applications/utilities/preProcessing/mdInitialise/molConfig_old/createPositions.H
deleted file mode 100644
index b26486338caf7228188244aac4e989fb9380cb0d..0000000000000000000000000000000000000000
--- a/applications/utilities/preProcessing/mdInitialise/molConfig_old/createPositions.H
+++ /dev/null
@@ -1,26 +0,0 @@
-vector latticePosition;
-
-vector globalPosition;
-
-if (latticeStructure == "SC")
-{
-#   include "SC.H"
-}
-
-else if (latticeStructure == "FCC")
-{
-#   include "FCC.H"
-}
-
-else if (latticeStructure == "BCC")
-{
-#   include "BCC.H"
-}
-
-else
-{
-    FatalErrorIn("createPositions.H\n")
-        << "latticeStructure " << latticeStructure
-        << " not supported."
-        << abort(FatalError);
-}
diff --git a/applications/utilities/preProcessing/mdInitialise/molConfig_old/createVelocities.H b/applications/utilities/preProcessing/mdInitialise/molConfig_old/createVelocities.H
deleted file mode 100644
index d014ffd146044db0be9307b511e793ee490f0464..0000000000000000000000000000000000000000
--- a/applications/utilities/preProcessing/mdInitialise/molConfig_old/createVelocities.H
+++ /dev/null
@@ -1,13 +0,0 @@
-vector velocity;
-
-vector momentumSum = vector::zero;
-
-if (velocityDistribution == "uniform")
-{
-#    include "uniform.H"
-}
-
-if (velocityDistribution == "maxwellian")
-{
-#    include "maxwellian.H"
-}
diff --git a/applications/utilities/preProcessing/mdInitialise/molConfig_old/genMolConfig.C b/applications/utilities/preProcessing/mdInitialise/molConfig_old/genMolConfig.C
deleted file mode 100644
index 7df9ce562228a12973103ba1ea7ce7d95b7d47e3..0000000000000000000000000000000000000000
--- a/applications/utilities/preProcessing/mdInitialise/molConfig_old/genMolConfig.C
+++ /dev/null
@@ -1,129 +0,0 @@
-/*---------------------------------------------------------------------------*\
- =========                   |
- \\      /   F ield          | OpenFOAM: The Open Source CFD Toolbox
-  \\    /    O peration      |
-   \\  /     A nd            | Copyright (C) 1991-2009 OpenCFD Ltd.
-    \\/      M anipulation   |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by the
-    Free Software Foundation; either version 2 of the License, or (at your
-    option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM; if not, write to the Free Software Foundation,
-    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-\*---------------------------------------------------------------------------*/
-
-#include "molConfig.H"
-#include "fvCFD.H"
-
-using namespace Foam;
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-// Main program:
-
-int main(int argc, char *argv[])
-{
-#   include "setRootCase.H"
-#   include "createTime.H"
-#   include "createMesh.H"
-
-    Info<< nl << "Reading molecular configuration description dictionary"
-        << endl;
-
-    IOobject molConfigDescriptionIOobject
-    (
-        "molConfigDict",
-        runTime.system(),
-        runTime,
-        IOobject::MUST_READ,
-        IOobject::NO_WRITE,
-        false
-    );
-
-    if (!molConfigDescriptionIOobject.headerOk())
-    {
-        FatalErrorIn(args.executable())
-            << "Cannot find molConfig description file " << nl
-            << args.caseName()/runTime.system()/"molConfig"/"molConfigDict"
-            << nl << exit(FatalError);
-    }
-
-    IOdictionary molConfigDescription(molConfigDescriptionIOobject);
-
-
-    // Create molCloud, registering object with mesh
-
-    Info<< nl << "Creating molecular configuration" << endl;
-
-    molConfig molecules(molConfigDescription, mesh);
-
-    label totalMolecules = molecules.nMol();
-
-    if (Pstream::parRun())
-    {
-        reduce(totalMolecules, sumOp<label>());
-    }
-
-    Info<< nl << "Total number of molecules added: " << totalMolecules
-        << nl << endl;
-
-    moleculeCloud molCloud
-    (
-        mesh,
-        molecules.nMol(),
-        molecules.id(),
-        molecules.mass(),
-        molecules.positions(),
-        molecules.cells(),
-        molecules.U(),
-        molecules.A(),
-        molecules.tethered(),
-        molecules.tetherPositions()
-    );
-
-    IOdictionary idListDict
-    (
-        IOobject
-        (
-            "idList",
-            mesh.time().constant(),
-            mesh,
-            IOobject::NO_READ,
-            IOobject::AUTO_WRITE
-        )
-    );
-
-    idListDict.add("idList", molecules.molIdList());
-
-    IOstream::defaultPrecision(12);
-
-    Info << nl << "Writing molecular configuration" << endl;
-
-    if (!mesh.write())
-    {
-        FatalErrorIn(args.executable())
-            << "Failed writing moleculeCloud."
-            << nl << exit(FatalError);
-    }
-
-    Info<< nl << "ClockTime = " << runTime.elapsedClockTime() << " s"
-        << nl << endl;
-
-    Info << nl << "End\n" << endl;
-
-    return 0;
-}
-
-
-// ************************************************************************* //
diff --git a/applications/utilities/preProcessing/mdInitialise/molConfig_old/latticeStructures/BCC.H b/applications/utilities/preProcessing/mdInitialise/molConfig_old/latticeStructures/BCC.H
deleted file mode 100644
index cd3cbdf100ba1c7fcafecca68e2c730ebfc2b97c..0000000000000000000000000000000000000000
--- a/applications/utilities/preProcessing/mdInitialise/molConfig_old/latticeStructures/BCC.H
+++ /dev/null
@@ -1,179 +0,0 @@
-labelVector iN(0,0,0);
-
-vector gap = (vector::one)*pow((numberDensity/2.0),-(1.0/3.0));
-
-#include "origin.H"
-
-// Info<< "gap = " << gap << endl;
-
-// Special treatment is required for the first position, i.e. iteration zero.
-
-if (n == 0)
-{
-    latticePosition.x() = (iN.x()*gap.x());
-
-    latticePosition.y() = (iN.y()*gap.y());
-
-    latticePosition.z() = (iN.z()*gap.z());
-
-    // Placing 2 molecules in each unit cell, using the algorithm from
-    // D. Rapaport, The Art of Molecular Dynamics Simulation, 2nd Ed, p68
-
-    for (label iU = 0; iU < 2; iU++)
-    {
-        vector unitCellLatticePosition = latticePosition;
-
-        if (iU == 1)
-        {
-            unitCellLatticePosition += 0.5 * gap;
-        }
-
-        if (originSpecifies == "corner")
-        {
-            unitCellLatticePosition -= 0.25*gap;
-        }
-
-//         Info << nl << n << ", " << unitCellLatticePosition;
-
-        globalPosition =
-            origin + transform(latticeToGlobal,unitCellLatticePosition);
-
-        partOfLayerInBounds = mesh_.bounds().contains(globalPosition);
-
-        if
-        (
-             findIndex(mesh_.cellZones()[cZ], mesh_.findCell(globalPosition))
-           != -1
-        )
-        {
-            molsPlacedThisIteration++;
-
-            initialPositions.append(globalPosition);
-
-            initialCelli.append(mesh_.findCell(globalPosition));
-        }
-    }
-}
-else
-{
-    // Place top and bottom caps.
-
-    for (iN.z() = -n; iN.z() <= n; iN.z() += 2*n)
-    {
-        for (iN.y() = -n; iN.y() <= n; iN.y()++)
-        {
-            for (iN.x() = -n; iN.x() <= n; iN.x()++)
-            {
-                latticePosition.x() = (iN.x() * gap.x());
-
-                latticePosition.y() = (iN.y() * gap.y());
-
-                latticePosition.z() = (iN.z() * gap.z());
-
-                for (label iU = 0; iU < 2; iU++)
-                {
-                    vector unitCellLatticePosition = latticePosition;
-
-                    if (iU == 1)
-                    {
-                        unitCellLatticePosition += 0.5*gap;
-                    }
-
-                    if(originSpecifies == "corner")
-                    {
-                        unitCellLatticePosition -= 0.25*gap;
-                    }
-
-//                     Info << nl << iN << ", " << unitCellLatticePosition;
-
-                    globalPosition =
-                        origin
-                      + transform(latticeToGlobal,unitCellLatticePosition);
-
-                    partOfLayerInBounds =
-                        mesh_.bounds().contains(globalPosition);
-
-                    if
-                    (
-                        findIndex
-                        (
-                             mesh_.cellZones()[cZ],
-                             mesh_.findCell(globalPosition)
-                        )
-                     != -1)
-                    {
-                        molsPlacedThisIteration++;
-
-                        initialPositions.append(globalPosition);
-
-                        initialCelli.append(mesh_.findCell(globalPosition));
-                    }
-                }
-            }
-        }
-    }
-
-//     Placing sides
-
-    for (iN.z() = -(n-1); iN.z() <= (n-1); iN.z()++)
-    {
-        for (label iR = 0; iR <= 2*n -1; iR++)
-        {
-            latticePosition.x() = (n*gap.x());
-
-            latticePosition.y() = ((-n + (iR + 1))*gap.y());
-
-            latticePosition.z() = (iN.z() * gap.z());
-
-            for (label iK = 0; iK < 4; iK++)
-            {
-                for (label iU = 0; iU < 2; iU++)
-                {
-                    vector unitCellLatticePosition = latticePosition;
-
-                    if (iU == 1)
-                    {
-                        unitCellLatticePosition += 0.5 * gap;
-                    }
-
-                    if (originSpecifies == "corner")
-                    {
-                        unitCellLatticePosition -= 0.25*gap;
-                    }
-
-                    globalPosition =
-                        origin
-                      + transform(latticeToGlobal,unitCellLatticePosition);
-
-                    partOfLayerInBounds =
-                        mesh_.bounds().contains(globalPosition);
-
-                    if
-                    (
-                        findIndex
-                         (
-                             mesh_.cellZones()[cZ],
-                             mesh_.findCell(globalPosition)
-                         )
-                      != -1
-                    )
-                    {
-                        molsPlacedThisIteration++;
-
-                        initialPositions.append(globalPosition);
-
-                        initialCelli.append(mesh_.findCell(globalPosition));
-                    }
-                }
-
-                latticePosition =
-                    vector
-                    (
-                      - latticePosition.y(),
-                        latticePosition.x(),
-                        latticePosition.z()
-                    );
-            }
-        }
-    }
-}
diff --git a/applications/utilities/preProcessing/mdInitialise/molConfig_old/latticeStructures/FCC.H b/applications/utilities/preProcessing/mdInitialise/molConfig_old/latticeStructures/FCC.H
deleted file mode 100644
index 313ebf96cb89bf2b1111b45fe1de462133fb5197..0000000000000000000000000000000000000000
--- a/applications/utilities/preProcessing/mdInitialise/molConfig_old/latticeStructures/FCC.H
+++ /dev/null
@@ -1,217 +0,0 @@
-labelVector iN(0,0,0);
-
-vector gap = (vector::one)*pow((numberDensity/4.0),-(1.0/3.0));
-
-#include "origin.H"
-
-// Info<< "gap = " << gap << endl;
-
-// Special treatment is required for the first position, i.e. iteration zero.
-
-if (n == 0)
-{
-    latticePosition.x() = (iN.x() * gap.x());
-
-    latticePosition.y() = (iN.y() * gap.y());
-
-    latticePosition.z() = (iN.z() * gap.z());
-
-    // Placing 4 molecules in each unit cell, using the algorithm from
-    // D. Rapaport, The Art of Molecular Dynamics Simulation, 2nd Ed, p68
-
-    for (label iU = 0; iU < 4; iU++)
-    {
-        vector unitCellLatticePosition = latticePosition;
-
-        if (iU != 3)
-        {
-            if (iU != 0)
-            {
-                unitCellLatticePosition.x() += 0.5 * gap.x();
-            }
-
-            if (iU != 1)
-            {
-                unitCellLatticePosition.y() += 0.5 * gap.y();
-            }
-
-            if (iU != 2)
-            {
-                unitCellLatticePosition.z() += 0.5 * gap.z();
-            }
-        }
-
-        if (originSpecifies == "corner")
-        {
-            unitCellLatticePosition -= 0.25*gap;
-        }
-
-//         Info << nl << n << ", " << unitCellLatticePosition;
-
-        globalPosition =
-            origin + transform(latticeToGlobal,unitCellLatticePosition);
-
-        partOfLayerInBounds = mesh_.bounds().contains(globalPosition);
-
-        if
-        (
-            findIndex(mesh_.cellZones()[cZ], mesh_.findCell(globalPosition))
-          != -1
-        )
-        {
-            molsPlacedThisIteration++;
-
-            initialPositions.append(globalPosition);
-
-            initialCelli.append(mesh_.findCell(globalPosition));
-        }
-    }
-}
-else
-{
-    // Place top and bottom caps.
-
-    for (iN.z() = -n; iN.z() <= n; iN.z() += 2*n)
-    {
-        for (iN.y() = -n; iN.y() <= n; iN.y()++)
-        {
-            for (iN.x() = -n; iN.x() <= n; iN.x()++)
-            {
-                latticePosition.x() = (iN.x() * gap.x());
-
-                latticePosition.y() = (iN.y() * gap.y());
-
-                latticePosition.z() = (iN.z() * gap.z());
-
-                for (label iU = 0; iU < 4; iU++)
-                {
-                    vector unitCellLatticePosition = latticePosition;
-
-                    if (iU != 3)
-                    {
-                        if (iU != 0)
-                        {
-                            unitCellLatticePosition.x() += 0.5 * gap.x();
-                        }
-
-                        if (iU != 1)
-                        {
-                            unitCellLatticePosition.y() += 0.5 * gap.y();
-                        }
-
-                        if (iU != 2)
-                        {
-                            unitCellLatticePosition.z() += 0.5 * gap.z();
-                        }
-                    }
-
-                    if (originSpecifies == "corner")
-                    {
-                        unitCellLatticePosition -= 0.25*gap;
-                    }
-
-                    globalPosition =
-                        origin
-                      + transform(latticeToGlobal,unitCellLatticePosition);
-
-                    partOfLayerInBounds =
-                        mesh_.bounds().contains(globalPosition);
-
-                    if
-                    (
-                        findIndex
-                        (
-                            mesh_.cellZones()[cZ],
-                            mesh_.findCell(globalPosition)
-                        )
-                     != -1
-                    )
-                    {
-                        molsPlacedThisIteration++;
-
-                        initialPositions.append(globalPosition);
-
-                        initialCelli.append(mesh_.findCell(globalPosition));
-                    }
-                }
-            }
-        }
-    }
-
-//     Placing sides
-
-    for (iN.z() = -(n-1); iN.z() <= (n-1); iN.z()++)
-    {
-        for (label iR = 0; iR <= 2*n -1; iR++)
-        {
-            latticePosition.x() = (n * gap.x());
-
-            latticePosition.y() = ((-n + (iR + 1)) * gap.y());
-
-            latticePosition.z() = (iN.z() * gap.z());
-
-            for (label iK = 0; iK < 4; iK++)
-            {
-                for (label iU = 0; iU < 4; iU++)
-                {
-                    vector unitCellLatticePosition = latticePosition;
-
-                    if (iU != 3)
-                    {
-                        if (iU != 0)
-                        {
-                            unitCellLatticePosition.x() += 0.5 * gap.x();
-                        }
-
-                        if (iU != 1)
-                        {
-                            unitCellLatticePosition.y() += 0.5 * gap.y();
-                        }
-
-                        if (iU != 2)
-                        {
-                            unitCellLatticePosition.z() += 0.5 * gap.z();
-                        }
-                    }
-
-                    if (originSpecifies == "corner")
-                    {
-                        unitCellLatticePosition -= 0.25*gap;
-                    }
-
-                    globalPosition =
-                        origin
-                      + transform(latticeToGlobal,unitCellLatticePosition);
-
-                    partOfLayerInBounds =
-                        mesh_.bounds().contains(globalPosition);
-
-                    if
-                    (
-                        findIndex
-                        (
-                            mesh_.cellZones()[cZ],
-                            mesh_.findCell(globalPosition)
-                        )
-                     != -1
-                    )
-                    {
-                        molsPlacedThisIteration++;
-
-                        initialPositions.append(globalPosition);
-
-                        initialCelli.append(mesh_.findCell(globalPosition));
-                    }
-                }
-
-                latticePosition =
-                    vector
-                    (
-                      - latticePosition.y(),
-                        latticePosition.x(),
-                        latticePosition.z()
-                    );
-            }
-        }
-    }
-}
diff --git a/applications/utilities/preProcessing/mdInitialise/molConfig_old/latticeStructures/SC.H b/applications/utilities/preProcessing/mdInitialise/molConfig_old/latticeStructures/SC.H
deleted file mode 100644
index dd0ff7c00f67453884b5693ed32003566f90b1b0..0000000000000000000000000000000000000000
--- a/applications/utilities/preProcessing/mdInitialise/molConfig_old/latticeStructures/SC.H
+++ /dev/null
@@ -1,127 +0,0 @@
-labelVector iN(0,0,0);
-
-vector gap = (vector::one)*pow(numberDensity, -(1.0/3.0));
-
-#include "origin.H"
-
-// Info<< "gap = " << gap << endl;
-
-// Special treatment is required for the first position, i.e. iteration zero.
-
-if (n == 0)
-{
-    latticePosition = vector::zero;
-
-    if (originSpecifies == "corner")
-    {
-        latticePosition += 0.5*gap;
-    }
-
-    globalPosition = origin + transform(latticeToGlobal,latticePosition);
-
-    partOfLayerInBounds = mesh_.bounds().contains(globalPosition);
-
-    if (findIndex(mesh_.cellZones()[cZ], mesh_.findCell(globalPosition)) != -1)
-    {
-        molsPlacedThisIteration++;
-
-        initialPositions.append(globalPosition);
-
-        initialCelli.append(mesh_.findCell(globalPosition));
-    }
-}
-else
-{
-    for (iN.z() = -n; iN.z() <= n; iN.z() += 2*n)
-    {
-        for (iN.y() = -n; iN.y() <= n; iN.y()++)
-        {
-            for (iN.x() = -n; iN.x() <= n; iN.x()++)
-            {
-                latticePosition.x() = (iN.x() * gap.x());
-
-                latticePosition.y() = (iN.y() * gap.y());
-
-                latticePosition.z() = (iN.z() * gap.z());
-
-                if (originSpecifies == "corner")
-                {
-                    latticePosition += 0.5*gap;
-                }
-
-                globalPosition =
-                    origin + transform(latticeToGlobal,latticePosition);
-
-                partOfLayerInBounds = mesh_.bounds().contains(globalPosition);
-
-                if
-                (
-                    findIndex
-                    (
-                        mesh_.cellZones()[cZ],
-                        mesh_.findCell(globalPosition)
-                    )
-                 != -1
-                )
-                {
-                    molsPlacedThisIteration++;
-
-                    initialPositions.append(globalPosition);
-
-                    initialCelli.append(mesh_.findCell(globalPosition));
-                }
-            }
-        }
-    }
-
-    tensor quarterRotate(EulerCoordinateRotation(-90, 0, 0, true).R());
-
-    iN.x() = n;
-    for (iN.z() = -(n-1); iN.z() <= (n-1); iN.z()++)
-    {
-        for (iN.y() = -(n-1); iN.y() <= n; iN.y()++)
-        {
-            latticePosition.x() = (iN.x()*gap.x());
-
-            latticePosition.y() = (iN.y()*gap.y());
-
-            latticePosition.z() = (iN.z()*gap.z());
-
-            for (label iR = 0; iR < 4; iR++)
-            {
-                vector offsetCorrectedLatticePosition = latticePosition;
-
-                if (originSpecifies == "corner")
-                {
-                    offsetCorrectedLatticePosition += 0.5*gap;
-                }
-
-                globalPosition =
-                    origin
-                  + transform(latticeToGlobal,offsetCorrectedLatticePosition);
-
-                partOfLayerInBounds = mesh_.bounds().contains(globalPosition);
-
-                if
-                (
-                    findIndex
-                    (
-                        mesh_.cellZones()[cZ],
-                        mesh_.findCell(globalPosition)
-                    )
-                 != -1
-                )
-                {
-                    molsPlacedThisIteration++;
-
-                    initialPositions.append(globalPosition);
-
-                    initialCelli.append(mesh_.findCell(globalPosition));
-                }
-
-                latticePosition = transform(quarterRotate,latticePosition);
-            }
-        }
-    }
-}
-
diff --git a/applications/utilities/preProcessing/mdInitialise/molConfig_old/origin.H b/applications/utilities/preProcessing/mdInitialise/molConfig_old/origin.H
deleted file mode 100644
index 24bc994d34fe8eaee58b7c77a71613d1bf8bc004..0000000000000000000000000000000000000000
--- a/applications/utilities/preProcessing/mdInitialise/molConfig_old/origin.H
+++ /dev/null
@@ -1,49 +0,0 @@
-// Please refer to notes
-
-// 1. Determine the unit cell dimensions: xU, yU and zU
-
-const scalar xU = gap.x();
-const scalar yU = gap.y();
-const scalar zU = gap.z();
-
-// 2. Determine the anchorPoint co-ordinates: xA, yA  and zA
-
-const scalar xA = anchorPoint.x();
-const scalar yA = anchorPoint.y();
-const scalar zA = anchorPoint.z();
-
-// 3. Determine the vector rAB from global co-ordinate system:
-
-const vector rAB((xMid - xA), (yMid - yA), (zMid - zA));
-
-// 4. Transform vector rAS into lattice co-ordinate system:
-
-const vector rASTransf = transform(latticeToGlobal.T(), rAB);
-
-// Info << "The vector rAS = " << rAS << endl;
-// Info << "The vector rAStransf = " << rAStransf << endl;
-
-// 5. Calculate the integer values: ni, nj and nk
-scalar nIscalar = rASTransf.x()/xU;
-scalar nJscalar = rASTransf.y()/yU;
-scalar nKscalar = rASTransf.z()/zU;
-
-// Info << "The nI, nJ, nK values before are: " << nIscalar <<" "<< nJscalar <<" "<< nKscalar << endl;
-
-label nI = label(nIscalar + 0.5*sign(nIscalar));
-label nJ = label(nJscalar + 0.5*sign(nJscalar));
-label nK = label(nKscalar + 0.5*sign(nKscalar));
-
-// Info << "The nI, nJ, nK values after are: " << nI <<" "<< nJ <<" "<< nK << endl;
-
-// 6. Calculate the corrected starting point, rAC (in the lattice co-ordinate system):
-const vector rAC((nI*xU), (nJ*yU), (nK*zU));
-
-// 7. Transform the corrected starting point in the global co-ordinate system, rC:
-const vector rC = anchorPoint + transform(latticeToGlobal, rAC);
-
-
-const vector& origin = rC;
-
-// Pout << "The Corrected Starting Point: " << origin << endl;
-
diff --git a/applications/utilities/preProcessing/mdInitialise/molConfig_old/readZoneSubDict.H b/applications/utilities/preProcessing/mdInitialise/molConfig_old/readZoneSubDict.H
deleted file mode 100644
index 72705c761e2650f4ec4f7faa72078235e1f288df..0000000000000000000000000000000000000000
--- a/applications/utilities/preProcessing/mdInitialise/molConfig_old/readZoneSubDict.H
+++ /dev/null
@@ -1,93 +0,0 @@
-
-// Info << "Zone description subDict " << cZ <<": "  << cellZoneI[cZ].name() << endl;
-
-const dictionary& subDictI =
-    molConfigDescription_.subDict(cellZoneI[cZ].name());
-
-const scalar temperature(readScalar(subDictI.lookup("temperature")));
-
-const word velocityDistribution(subDictI.lookup("velocityDistribution"));
-
-const vector bulkVelocity(subDictI.lookup("bulkVelocity"));
-
-const word id(subDictI.lookup("id"));
-
-const scalar mass(readScalar(subDictI.lookup("mass")));
-
-scalar numberDensity_read(0.0);
-
-if (subDictI.found("numberDensity"))
-{
-    numberDensity_read = readScalar(subDictI.lookup("numberDensity"));
-}
-else if (subDictI.found("massDensity"))
-{
-    numberDensity_read = readScalar(subDictI.lookup("massDensity"))/mass;
-}
-else
-{
-    FatalErrorIn("readZoneSubDict.H\n")
-        << "massDensity or numberDensity not specified " << nl
-        << abort(FatalError);
-}
-
-const scalar numberDensity(numberDensity_read);
-
-const word latticeStructure(subDictI.lookup("latticeStructure"));
-
-const vector anchorPoint(subDictI.lookup("anchor"));
-
-const word originSpecifies(subDictI.lookup("anchorSpecifies"));
-
-if
-(
-    originSpecifies != "corner"
- && originSpecifies != "molecule"
-)
-{
-    FatalErrorIn("readZoneSubDict.H\n")
-        << "anchorSpecifies must be either 'corner' or 'molecule', found "
-        << originSpecifies << nl
-        << abort(FatalError);
-}
-
-bool tethered = false;
-
-if (subDictI.found("tethered"))
-{
-    tethered = Switch(subDictI.lookup("tethered"));
-}
-
-const vector orientationAngles(subDictI.lookup("orientationAngles"));
-
-scalar phi(orientationAngles.x()*mathematicalConstant::pi/180.0);
-scalar theta(orientationAngles.y()*mathematicalConstant::pi/180.0);
-scalar psi(orientationAngles.z()*mathematicalConstant::pi/180.0);
-
-const tensor latticeToGlobal
-(
-    cos(psi)*cos(phi) - cos(theta)*sin(phi)*sin(psi),
-    cos(psi)*sin(phi) + cos(theta)*cos(phi)*sin(psi),
-    sin(psi)*sin(theta),
-  - sin(psi)*cos(phi) - cos(theta)*sin(phi)*cos(psi),
-  - sin(psi)*sin(phi) + cos(theta)*cos(phi)*cos(psi),
-    cos(psi)*sin(theta),
-    sin(theta)*sin(phi),
-  - sin(theta)*cos(phi),
-    cos(theta)
-);
-
-// Info << "\tcells: " << cellZoneI[cZ].size() << endl;
-// Info << "\tnumberDensity: " << numberDensity << endl;
-// Info << "\ttemperature: " << temperature << endl;
-// Info << "\tvelocityDistribution: " << velocityDistribution << endl;
-// Info << "\tbulkVelocity: " << bulkVelocity << endl;
-// Info << "\tid: " << id << endl;
-// Info << "\tmass: " << mass << endl;
-// Info << "\tlatticeStructure: " << latticeStructure << endl;
-// Info << "\tanchor: " << anchorPoint << endl;
-// Info << "\toriginSpecifies: " << originSpecifies << endl;
-// Info << "\ttethered: " << tethered << endl;
-// Info << "\torientationAngles: " << orientationAngles << endl;
-// Info << "\tlatticeToGlobal: " << latticeToGlobal << endl;
-
diff --git a/applications/utilities/preProcessing/mdInitialise/molConfig_old/startingPoint.H b/applications/utilities/preProcessing/mdInitialise/molConfig_old/startingPoint.H
deleted file mode 100644
index 6ae01c83f11039a01d4307816c08951f1ad33d1c..0000000000000000000000000000000000000000
--- a/applications/utilities/preProcessing/mdInitialise/molConfig_old/startingPoint.H
+++ /dev/null
@@ -1,97 +0,0 @@
-scalar xMax = 0;
-
-scalar yMax = 0;
-
-scalar zMax = 0;
-
-scalar xMin = 0;
-
-scalar yMin = 0;
-
-scalar zMin = 0;
-
-label xMaxPtLabel = 0;
-
-label yMaxPtLabel = 0;
-
-label zMaxPtLabel = 0;
-
-label xMinPtLabel = 0;
-
-label yMinPtLabel = 0;
-
-label zMinPtLabel = 0;
-
-forAll (cellZoneI[cZ], nC)
-{
-    const labelList& cellPointsJ = mesh_.cellPoints()[cellZoneI[cZ][nC]];
-
-    forAll(cellPointsJ, nP)
-    {
-        const point& ptI = mesh_.points()[cellPointsJ[nP]];
-
-        const label& ptILabel = cellPointsJ[nP];
-
-        if (ptI.x() > xMax || nC == 0)
-        {
-            xMax = ptI.x();
-            xMaxPtLabel = ptILabel;
-        }
-        if (ptI.y() > yMax || nC == 0)
-        {
-            yMax = ptI.y();
-            yMaxPtLabel = ptILabel;
-        }
-        if (ptI.z() > zMax || nC == 0)
-        {
-            zMax = ptI.z();
-            zMaxPtLabel = ptILabel;
-        }
-        if (ptI.x() < xMin || nC == 0)
-        {
-            xMin = ptI.x();
-            xMinPtLabel = ptILabel;
-        }
-        if (ptI.y() < yMin || nC == 0)
-        {
-            yMin = ptI.y();
-            yMinPtLabel = ptILabel;
-        }
-        if (ptI.z() < zMin || nC == 0)
-        {
-            zMin = ptI.z();
-            zMinPtLabel = ptILabel;
-        }
-    }
-}
-
-// Info << "Xmax: label = " << xMaxPtLabel2 << "; vector = " <<mesh_.points()[xMaxPtLabel2]
-//      <<"; x-component = " << mesh_.points()[xMaxPtLabel2].x() << endl;
-// Info << "Ymax: label = " << yMaxPtLabel2 << "; vector = " <<mesh_.points()[yMaxPtLabel2]
-//      <<"; y-component = " << mesh_.points()[yMaxPtLabel2].y() << endl;
-// Info << "Zmax: label = " << zMaxPtLabel2 << "; vector = " <<mesh_.points()[zMaxPtLabel2]
-//      <<"; z-component = " << mesh_.points()[zMaxPtLabel2].z() << endl;
-//
-// Info << "Xmin: label = " << xMinPtLabel << "; vector = " <<mesh_.points()[xMinPtLabel]
-//      <<"; x-component = " << mesh_.points()[xMinPtLabel].x() << endl;
-// Info << "Ymin: label = " << yMinPtLabel << "; vector = " <<mesh_.points()[yMinPtLabel]
-//      <<"; y-component = " << mesh_.points()[yMinPtLabel].y() << endl;
-// Info << "Zmin: label = " << zMinPtLabel << "; vector = " <<mesh_.points()[zMinPtLabel]
-//      <<"; z-component = " << mesh_.points()[zMinPtLabel].z() << endl;
-
-scalar xMid =
-    (mesh_.points()[xMaxPtLabel].x()
-  + mesh_.points()[xMinPtLabel].x()) / 2;
-
-scalar yMid =
-    (mesh_.points()[yMaxPtLabel].y()
-  + mesh_.points()[yMinPtLabel].y()) / 2;
-
-scalar zMid =
-    (mesh_.points()[zMaxPtLabel].z()
-  + mesh_.points()[zMinPtLabel].z()) / 2;
-
-vector rS(xMid, yMid, zMid);
-
-// Info << "\t The Estimated Starting Point: " << rS << endl;
-
diff --git a/applications/utilities/preProcessing/mdInitialise/molConfig_old/velocityDistributions/maxwellian.H b/applications/utilities/preProcessing/mdInitialise/molConfig_old/velocityDistributions/maxwellian.H
deleted file mode 100644
index 01c3ff87168fc1a4057b4512472f58afec0bb5e0..0000000000000000000000000000000000000000
--- a/applications/utilities/preProcessing/mdInitialise/molConfig_old/velocityDistributions/maxwellian.H
+++ /dev/null
@@ -1,26 +0,0 @@
-scalar velCmptMag = sqrt(moleculeCloud::kb*temperature/mass);
-
-for (molN = totalMols; molN < totalMols + totalZoneMols; molN++)
-{
-    // Assign velocity: random direction, magnitude determined by desired
-    // maxwellian distribution at temperature
-
-    // Temperature gradients could be created by specifying a gradient in the
-    // zone subDict, or by reading a field from a mesh.
-
-    // The velocities are treated on a zone-by-zone basis for the purposes of
-    // removal of bulk momentum - hence nMols becomes totalZoneMols
-
-    velocity = vector
-    (
-        velCmptMag*rand.GaussNormal(),
-        velCmptMag*rand.GaussNormal(),
-        velCmptMag*rand.GaussNormal()
-    );
-
-    momentumSum += mass*velocity;
-
-    initialVelocities.append(velocity);
-}
-
-
diff --git a/applications/utilities/preProcessing/mdInitialise/molConfig_old/velocityDistributions/uniform.H b/applications/utilities/preProcessing/mdInitialise/molConfig_old/velocityDistributions/uniform.H
deleted file mode 100644
index 9c178af262aabb88a239f9711b1c334cdd39e4e1..0000000000000000000000000000000000000000
--- a/applications/utilities/preProcessing/mdInitialise/molConfig_old/velocityDistributions/uniform.H
+++ /dev/null
@@ -1,27 +0,0 @@
-scalar initVelMag =
-    sqrt
-    (
-        3.0*(1.0 - 1.0 / totalZoneMols)
-       *moleculeCloud::kb*temperature
-       /mass
-    );
-
-for (molN = totalMols; molN < totalMols + totalZoneMols; molN++)
-{
-    // Assign velocity: random direction, magnitude determined by desired
-    // temperature
-
-    // Temperature gradients could be created by specifying a gradient in the
-    // zone subDict, or by reading a field from a mesh.
-
-    // The velocities are treated on a zone-by-zone basis for the purposes of
-    // removal of bulk momentum - hence nMols becomes totalZoneMols
-
-    velocity = (2.0*rand.vector01() - vector::one);
-
-    velocity *= initVelMag/mag(velocity);
-
-    momentumSum += mass*velocity;
-
-    initialVelocities.append(velocity);
-}
diff --git a/applications/utilities/surface/surfaceMeshTriangulate/surfaceMeshTriangulate.C b/applications/utilities/surface/surfaceMeshTriangulate/surfaceMeshTriangulate.C
index 3ea9e07a82e02f278f2d70275014151d50796a1f..53f726ac5cd675498182376308400aa2735fbcf1 100644
--- a/applications/utilities/surface/surfaceMeshTriangulate/surfaceMeshTriangulate.C
+++ b/applications/utilities/surface/surfaceMeshTriangulate/surfaceMeshTriangulate.C
@@ -50,9 +50,8 @@ using namespace Foam;
 int main(int argc, char *argv[])
 {
     argList::validArgs.append("output file");
-
+#   include "addRegionOption.H"
     argList::validOptions.insert("excludeProcPatches", "");
-
     argList::validOptions.insert("patches", "(patch0 .. patchN)");
 
 #   include "setRootCase.H"
@@ -65,7 +64,7 @@ int main(int argc, char *argv[])
 
     Pout<< "Reading mesh from time " << runTime.value() << endl;
 
-#   include "createPolyMesh.H"
+#   include "createNamedPolyMesh.H"
 
     bool includeProcPatches =
        !(
diff --git a/applications/utilities/surface/surfaceRedistributePar/Make/files b/applications/utilities/surface/surfaceRedistributePar/Make/files
new file mode 100644
index 0000000000000000000000000000000000000000..4825ff735d6d625bfcb39fae4fb9c7a13bda5742
--- /dev/null
+++ b/applications/utilities/surface/surfaceRedistributePar/Make/files
@@ -0,0 +1,3 @@
+surfaceRedistributePar.C
+
+EXE = $(FOAM_APPBIN)/surfaceRedistributePar
diff --git a/applications/utilities/surface/surfaceRedistributePar/Make/options b/applications/utilities/surface/surfaceRedistributePar/Make/options
new file mode 100644
index 0000000000000000000000000000000000000000..2db41f545a2fde53b3cf2d357bc790d25f6fbed5
--- /dev/null
+++ b/applications/utilities/surface/surfaceRedistributePar/Make/options
@@ -0,0 +1,7 @@
+EXE_INC = \
+    -I$(LIB_SRC)/triSurface/lnInclude \
+    -I$(LIB_SRC)/meshTools/lnInclude
+
+EXE_LIBS = \
+    -lmeshTools \
+    -ltriSurface
diff --git a/applications/utilities/surface/surfaceRedistributePar/surfaceRedistributePar.C b/applications/utilities/surface/surfaceRedistributePar/surfaceRedistributePar.C
new file mode 100644
index 0000000000000000000000000000000000000000..cdb041ce350d19b6f79e893bd114d014f32e4e09
--- /dev/null
+++ b/applications/utilities/surface/surfaceRedistributePar/surfaceRedistributePar.C
@@ -0,0 +1,295 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2007 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Application
+    surfaceRedistributePar
+
+Description
+    (Re)distribution of triSurface. Either takes an undecomposed surface
+    or an already decomposed surface and redistribute it so each processor
+    has all triangles that overlap its mesh.
+
+Note
+    - best decomposition option is hierarchGeomDecomp since
+    guarantees square decompositions.
+    - triangles might be present on multiple processors.
+    - merging uses geometric tolerance so take care with writing precision.
+
+\*---------------------------------------------------------------------------*/
+
+#include "treeBoundBox.H"
+#include "FixedList.H"
+#include "argList.H"
+#include "Time.H"
+#include "polyMesh.H"
+#include "distributedTriSurfaceMesh.H"
+#include "mapDistribute.H"
+#include "triSurfaceFields.H"
+#include "Pair.H"
+
+using namespace Foam;
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+// Print on master all the per-processor surface stats.
+void writeProcStats
+(
+    const triSurface& s,
+    const List<List<treeBoundBox> >& meshBb
+)
+{
+    // Determine surface bounding boxes, faces, points
+    List<treeBoundBox> surfBb(Pstream::nProcs());
+    {
+        surfBb[Pstream::myProcNo()] = boundBox(s.points(), false);
+        Pstream::gatherList(surfBb);
+        Pstream::scatterList(surfBb);
+    }
+
+    labelList nPoints(Pstream::nProcs());
+    nPoints[Pstream::myProcNo()] = s.points().size();
+    Pstream::gatherList(nPoints);
+    Pstream::scatterList(nPoints);
+
+    labelList nFaces(Pstream::nProcs());
+    nFaces[Pstream::myProcNo()] = s.size();
+    Pstream::gatherList(nFaces);
+    Pstream::scatterList(nFaces);
+
+    forAll(surfBb, procI)
+    {
+        const List<treeBoundBox>& bbs = meshBb[procI];
+
+        Info<< "processor" << procI << endl
+            << "\tMesh bounds          : " << bbs[0] << nl;
+        for (label i = 1; i < bbs.size(); i++)
+        {
+            Info<< "\t                       " << bbs[i]<< nl;
+        }
+        Info<< "\tSurface bounding box : " << surfBb[procI] << nl
+            << "\tTriangles            : " << nFaces[procI] << nl
+            << "\tVertices             : " << nPoints[procI]
+            << endl;
+    }
+    Info<< endl;
+}
+
+
+// Main program:
+
+int main(int argc, char *argv[])
+{
+    argList::validArgs.append("triSurfaceMesh");
+    argList::validArgs.append("distributionType");
+
+    argList::validOptions.insert("keepNonMapped", "");
+#   include "setRootCase.H"
+#   include "createTime.H"
+    runTime.functionObjects().off();
+
+    fileName surfFileName(args.additionalArgs()[0]);
+    Info<< "Reading surface from " << surfFileName << nl << endl;
+
+    const word distType(args.additionalArgs()[1]);
+
+    Info<< "Using distribution method "
+        << distributedTriSurfaceMesh::distributionTypeNames_[distType]
+        << " " << distType << nl << endl;
+
+    bool keepNonMapped = args.options().found("keepNonMapped");
+
+    if (keepNonMapped)
+    {
+        Info<< "Preserving surface outside of mesh bounds." << nl << endl;
+    }
+    else
+    {
+        Info<< "Removing surface outside of mesh bounds." << nl << endl;
+    }
+
+
+    if (!Pstream::parRun())
+    {
+        FatalErrorIn(args.executable())
+            << "Please run this program on the decomposed case."
+            << " It will read surface " << surfFileName
+            << " and decompose it such that it overlaps the mesh bounding box."
+            << exit(FatalError);
+    }
+
+
+#   include "createPolyMesh.H"
+
+    Random rndGen(653213);
+
+    // Determine mesh bounding boxes:
+    List<List<treeBoundBox> > meshBb(Pstream::nProcs());
+    {
+        meshBb[Pstream::myProcNo()] = List<treeBoundBox>
+        (
+            1,
+            treeBoundBox
+            (
+                boundBox(mesh.points(), false)
+            ).extend(rndGen, 1E-3)
+        );
+        Pstream::gatherList(meshBb);
+        Pstream::scatterList(meshBb);
+    }
+
+    IOobject io
+    (
+        surfFileName,         // name
+        //runTime.findInstance("triSurface", surfFileName),   // instance
+        runTime.constant(),   // instance
+        "triSurface",         // local
+        runTime,              // registry
+        IOobject::MUST_READ,
+        IOobject::NO_WRITE
+    );
+
+    const fileName actualPath(io.filePath());
+    fileName localPath(actualPath);
+    localPath.replace(runTime.rootPath() + '/', "");
+
+    if (actualPath == io.objectPath())
+    {
+        Info<< "Loading local (decomposed) surface " << localPath << nl <<endl;
+    }
+    else
+    {
+        Info<< "Loading undecomposed surface " << localPath << nl << endl;
+    }
+
+
+    // Create dummy dictionary for bounding boxes if does not exist.
+    if (!isFile(actualPath / "Dict"))
+    {
+        dictionary dict;
+        dict.add("bounds", meshBb[Pstream::myProcNo()]);
+        dict.add("distributionType", distType);
+        dict.add("mergeDistance", SMALL);
+
+        IOdictionary ioDict
+        (
+            IOobject
+            (
+                io.name() + "Dict",
+                io.instance(),
+                io.local(),
+                io.db(),
+                IOobject::NO_READ,
+                IOobject::NO_WRITE,
+                false
+            ),
+            dict
+        );
+
+        Info<< "Writing dummy bounds dictionary to " << ioDict.name()
+            << nl << endl;
+
+        ioDict.regIOobject::writeObject
+        (
+            IOstream::ASCII,
+            IOstream::currentVersion,
+            ioDict.time().writeCompression()        
+        );
+    }
+
+
+    // Load surface
+    distributedTriSurfaceMesh surfMesh(io);
+    Info<< "Loaded surface" << nl << endl;
+
+
+    // Generate a test field
+    {
+        const triSurface& s = static_cast<const triSurface&>(surfMesh);
+
+        autoPtr<triSurfaceVectorField> fcPtr
+        (
+            new triSurfaceVectorField
+            (
+                IOobject
+                (
+                    surfMesh.searchableSurface::name(),     // name
+                    surfMesh.searchableSurface::instance(), // instance
+                    surfMesh.searchableSurface::local(),    // local
+                    surfMesh,
+                    IOobject::NO_READ,
+                    IOobject::AUTO_WRITE
+                ),
+                surfMesh,
+                dimLength
+            )
+        );
+        triSurfaceVectorField& fc = fcPtr();
+
+        forAll(fc, triI)
+        {
+            fc[triI] = s[triI].centre(s.points());
+        }
+
+        // Steal pointer and store object on surfMesh
+        fcPtr.ptr()->store();
+    }
+
+
+    // Write per-processor stats
+    Info<< "Before redistribution:" << endl;
+    writeProcStats(surfMesh, meshBb);
+
+
+    // Do redistribution
+    Info<< "Redistributing surface" << nl << endl;
+    autoPtr<mapDistribute> faceMap;
+    autoPtr<mapDistribute> pointMap;
+    surfMesh.distribute
+    (
+        meshBb[Pstream::myProcNo()],
+        keepNonMapped,
+        faceMap,
+        pointMap
+    );
+    faceMap.clear();
+    pointMap.clear();
+
+    Info<< endl;
+
+
+    // Write per-processor stats
+    Info<< "After redistribution:" << endl;
+    writeProcStats(surfMesh, meshBb);
+
+
+    Info<< "Writing surface." << nl << endl;
+    surfMesh.searchableSurface::write();
+
+    Info<< "End\n" << endl;
+
+    return 0;
+}
+
+
+// ************************************************************************* //
diff --git a/applications/utilities/thermophysical/chemkinToFoam/Make/options b/applications/utilities/thermophysical/chemkinToFoam/Make/options
index d4d6f35e08864dde6a1a43d84ed4c5869ff005b6..7fe5ba4077fe6c57b2daafcc873b929c962665a2 100644
--- a/applications/utilities/thermophysical/chemkinToFoam/Make/options
+++ b/applications/utilities/thermophysical/chemkinToFoam/Make/options
@@ -1,8 +1,8 @@
 EXE_INC = \
     -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \
-    -I$(LIB_SRC)/thermophysicalModels/combustion/lnInclude
+    -I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude
 
 EXE_LIBS = \
-    -lcombustionThermophysicalModels \
+    -lreactionThermophysicalModels \
     -lbasicThermophysicalModels \
     -lspecie
diff --git a/bin/buildParaView b/bin/buildParaView
index 76a0264e69baefe1b5503212a49297ccba5c9d4d..cceee964873f6d4b2f2ed29875bb861da9ea38ba 100755
--- a/bin/buildParaView
+++ b/bin/buildParaView
@@ -56,6 +56,11 @@ MESA_LIBRARY="/usr/lib64/libOSMesa.so"
 # extra QT gui support (useful for re-using the installation for engrid)
 withQTSUPPORT=true
 
+# Set the path to the Qt-4.3.? qmake if the system Qt is other than this version
+QMAKE_PATH=""
+#QMAKE_PATH=/usr/local/Trolltech/Qt-4.3.5/bin/qmake
+#QMAKE_PATH=$WM_THIRD_PARTY_DIR/qt-x11-opensource-src-4.3.5/platforms/linux64GccDPOpt/bin/qmake
+
 #
 # No further editing below this line
 #------------------------------------------------------------------------------
diff --git a/bin/foamClearPolyMesh b/bin/foamClearPolyMesh
index dcc507b811d39dbdd4ac0d57a3fc7b7589cc4488..1af677459dfbe7808bead2d18e9c795f5e8dcb1c 100755
--- a/bin/foamClearPolyMesh
+++ b/bin/foamClearPolyMesh
@@ -109,7 +109,7 @@ fi
 
 
 #
-# remove files and subdirectories
+# remove files (mesh itself, modifiers, snappyHexMesh ones) and subdirectories
 #
 echo "Clearing ${caseDir:-.}/$meshDir" 1>&2
 
@@ -126,6 +126,10 @@ for i in \
     meshModifiers \
     parallelData \
     sets \
+    cellLevel \
+    pointLevel \
+    refinementHistory \
+    surfaceIndex \
 ;
 do
     rm -rf $meshDir/$i
diff --git a/bin/foamTemplates/foamScript b/bin/foamTemplates/foamScript
index 6dd5781ac1af9aef4c4d809bfa235f1547533d9b..e8a160860c298189fb416e8ccdd8cacdedadd5ca 100644
--- a/bin/foamTemplates/foamScript
+++ b/bin/foamTemplates/foamScript
@@ -3,7 +3,7 @@
 # =========                 |
 # \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
 #  \\    /   O peration     |
-#   \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+#   \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
 #    \\/     M anipulation  |
 #------------------------------------------------------------------------------
 # License
diff --git a/bin/foamTemplates/source/foamAppTemplate.C b/bin/foamTemplates/source/foamAppTemplate.C
index 2c75d7e107e02b0ee790ca1c0c49a5724bb2536b..46c089c1a865c2884cd4f62323db9f5c67442dce 100644
--- a/bin/foamTemplates/source/foamAppTemplate.C
+++ b/bin/foamTemplates/source/foamAppTemplate.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/bin/foamTemplates/source/foamTemplate.C b/bin/foamTemplates/source/foamTemplate.C
index 97251605e82048d4607ab495094cdc129e7659a8..903fe66b5f50909b991291f4608f89491a96da35 100644
--- a/bin/foamTemplates/source/foamTemplate.C
+++ b/bin/foamTemplates/source/foamTemplate.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/bin/foamTemplates/source/foamTemplate.H b/bin/foamTemplates/source/foamTemplate.H
index 963fc74cdf486bc0e0f9baae13fd52b659086c36..e0b6cf21577a30947428b32ef1da7e8947d5900b 100644
--- a/bin/foamTemplates/source/foamTemplate.H
+++ b/bin/foamTemplates/source/foamTemplate.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/bin/foamTemplates/source/foamTemplateI.H b/bin/foamTemplates/source/foamTemplateI.H
index 42bc929311152d7464c792bf0b3378adda1da890..10e8e4fec8ff30bc0e113d06c5081a217cfb6944 100644
--- a/bin/foamTemplates/source/foamTemplateI.H
+++ b/bin/foamTemplates/source/foamTemplateI.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/bin/foamTemplates/source/foamTemplateIO.C b/bin/foamTemplates/source/foamTemplateIO.C
index 2d95dc47de4b741469a521ac8d96da5110843cd1..d9119ed354a4bce766750b5afd1a4c997245db29 100644
--- a/bin/foamTemplates/source/foamTemplateIO.C
+++ b/bin/foamTemplates/source/foamTemplateIO.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/bin/foamTemplates/source/newSource b/bin/foamTemplates/source/newSource
old mode 100755
new mode 100644
index a06d1bcc732219f35c4772a1d22622b24c87880e..927ad36b31d407b723573fc2eef6abcaf03990c5
--- a/bin/foamTemplates/source/newSource
+++ b/bin/foamTemplates/source/newSource
@@ -3,7 +3,7 @@
 # =========                 |
 # \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
 #  \\    /   O peration     |
-#   \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+#   \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
 #    \\/     M anipulation  |
 #-------------------------------------------------------------------------------
 # License
diff --git a/bin/foamTemplates/sourceTemplate/foamTemplateTemplate.C b/bin/foamTemplates/sourceTemplate/foamTemplateTemplate.C
index 674341d11c2243dcd463f75119270915273dd2f6..5acafb25e79133c97b4a9a7ee277d687e01ab14f 100644
--- a/bin/foamTemplates/sourceTemplate/foamTemplateTemplate.C
+++ b/bin/foamTemplates/sourceTemplate/foamTemplateTemplate.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/bin/foamTemplates/sourceTemplate/foamTemplateTemplate.H b/bin/foamTemplates/sourceTemplate/foamTemplateTemplate.H
index 79250a7019e8a81a4689ce6bf062315d49fde131..76bdd558601d023c9eaa24c9a2cbd128eb4421a1 100644
--- a/bin/foamTemplates/sourceTemplate/foamTemplateTemplate.H
+++ b/bin/foamTemplates/sourceTemplate/foamTemplateTemplate.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -129,16 +129,10 @@ public:
 
     // IOstream Operators
 
-        friend Istream& operator>>
-        #ifndef __CINT__
-        <TemplateArgument>
-        #endif
+        friend Istream& operator>> <TemplateArgument>
         (Istream&, ClassName<TemplateArgument>&);
 
-        friend Ostream& operator<<
-        #ifndef __CINT__
-        <TemplateArgument>
-        #endif
+        friend Ostream& operator<< <TemplateArgument>
         (Ostream&, const ClassName<TemplateArgument>&);
 };
 
diff --git a/bin/foamTemplates/sourceTemplate/foamTemplateTemplateI.H b/bin/foamTemplates/sourceTemplate/foamTemplateTemplateI.H
index 42bc929311152d7464c792bf0b3378adda1da890..10e8e4fec8ff30bc0e113d06c5081a217cfb6944 100644
--- a/bin/foamTemplates/sourceTemplate/foamTemplateTemplateI.H
+++ b/bin/foamTemplates/sourceTemplate/foamTemplateTemplateI.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/bin/foamTemplates/sourceTemplate/foamTemplateTemplateIO.C b/bin/foamTemplates/sourceTemplate/foamTemplateTemplateIO.C
index 41bd21f5c359b520241fbcf98f3d860ee96c83ae..1c805f6f6a39e5883e96d06d9f4b4531902c811b 100644
--- a/bin/foamTemplates/sourceTemplate/foamTemplateTemplateIO.C
+++ b/bin/foamTemplates/sourceTemplate/foamTemplateTemplateIO.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/bin/foamTemplates/sourceTemplate/newSourceTemplate b/bin/foamTemplates/sourceTemplate/newSourceTemplate
index 238c6f43316623b2772853197c30e9fb33aa359c..b62a7f4c0e9f45150c30218f83bf8b28c5574f07 100755
--- a/bin/foamTemplates/sourceTemplate/newSourceTemplate
+++ b/bin/foamTemplates/sourceTemplate/newSourceTemplate
@@ -3,7 +3,7 @@
 # =========                 |
 # \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
 #  \\    /   O peration     |
-#   \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+#   \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
 #    \\/     M anipulation  |
 #-------------------------------------------------------------------------------
 # License
diff --git a/bin/tools/CleanFunctions b/bin/tools/CleanFunctions
index c63b69c45fb8bb28fdba781ce0d8874fe5d9287d..e7a5da07536e87ae69fe6b9f63ac26b83048ea47 100644
--- a/bin/tools/CleanFunctions
+++ b/bin/tools/CleanFunctions
@@ -64,6 +64,9 @@ cleanCase ()
 
     rm -rf constant/polyMesh/{allOwner*,cell*,face*,meshModifiers*} \
            constant/polyMesh/{owner*,neighbour*,point*,edge*} \
+           constant/polyMesh/{cellLevel*,pointLevel*,refinementHistory*,surfaceIndex*} \
+           constant/{cellLevel*,pointLevel*} \
+           constant/polyMesh/sets/ \
            > /dev/null 2>&1
 
     for f in `find . -name "*Dict"`
diff --git a/etc/apps/cint/bashrc b/etc/apps/cint/bashrc
deleted file mode 100644
index dbbd89631e2487e11803e1dea7cb95a720e0aafc..0000000000000000000000000000000000000000
--- a/etc/apps/cint/bashrc
+++ /dev/null
@@ -1,51 +0,0 @@
-#----------------------------------*-sh-*--------------------------------------
-# =========                 |
-# \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-#  \\    /   O peration     |
-#   \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
-#    \\/     M anipulation  |
-#------------------------------------------------------------------------------
-# License
-#     This file is part of OpenFOAM.
-#
-#     OpenFOAM is free software; you can redistribute it and/or modify it
-#     under the terms of the GNU General Public License as published by the
-#     Free Software Foundation; either version 2 of the License, or (at your
-#     option) any later version.
-#
-#     OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-#     ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-#     FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-#     for more details.
-#
-#     You should have received a copy of the GNU General Public License
-#     along with OpenFOAM; if not, write to the Free Software Foundation,
-#     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-#
-# Script
-#     cint/bashrc
-#
-# Description
-#     Setup file for cint
-#     Sourced from OpenFOAM-*/etc/bashrc
-#
-#------------------------------------------------------------------------------
-
-for CINTSYSDIR in \
-    $HOME/pub/CINT/cint7 \
-    $WM_THIRD_PARTY_DIR/cint-svn/platforms/$WM_OPTIONS \
-    ;
-do
-    if [ -r $CINTSYSDIR ]
-    then
-        export CINTSYSDIR
-        export PATH=$PATH:$CINTSYSDIR/bin
-        export MANPATH=$MANPATH:$CINTSYSDIR/doc
-        export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CINTSYSDIR/lib
-        break
-    fi
-done
-
-[ -r "$CINTSYSDIR" ] || unset CINTSYSDIR
-
-# -----------------------------------------------------------------------------
diff --git a/etc/apps/cint/cshrc b/etc/apps/cint/cshrc
deleted file mode 100644
index f2c38c481a3ebca703415c4e094137bb8efc43db..0000000000000000000000000000000000000000
--- a/etc/apps/cint/cshrc
+++ /dev/null
@@ -1,34 +0,0 @@
-#----------------------------------*-sh-*--------------------------------------
-# =========                 |
-# \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-#  \\    /   O peration     |
-#   \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
-#    \\/     M anipulation  |
-#-------------------------------------------------------------------------------
-# License
-#     This file is part of OpenFOAM.
-#
-#     OpenFOAM is free software; you can redistribute it and/or modify it
-#     under the terms of the GNU General Public License as published by the
-#     Free Software Foundation; either version 2 of the License, or (at your
-#     option) any later version.
-#
-#     OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-#     ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-#     FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-#     for more details.
-#
-#     You should have received a copy of the GNU General Public License
-#     along with OpenFOAM; if not, write to the Free Software Foundation,
-#     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-#
-# Script
-#     cint/cshrc
-#
-# Description
-#     Setup file for cint
-#     Sourced from OpenFOAM-*/etc/cshrc
-#
-#------------------------------------------------------------------------------
-
-# -----------------------------------------------------------------------------
diff --git a/etc/apps/paraview3/bashrc b/etc/apps/paraview3/bashrc
index f49288b36ec26ad2c712a9f824cfd5b3ddc4a9ce..6536eb32ce6425f2efd66f0e0530b9ae3750dc1c 100644
--- a/etc/apps/paraview3/bashrc
+++ b/etc/apps/paraview3/bashrc
@@ -46,8 +46,8 @@ do
     fi
 done
 
-paraviewMajor=paraview-3.5
-export ParaView_VERSION=3.5-cvs
+paraviewMajor=paraview-3.6
+export ParaView_VERSION=3.6
 
 export ParaView_INST_DIR=$WM_THIRD_PARTY_DIR/paraview-$ParaView_VERSION
 export ParaView_DIR=$ParaView_INST_DIR/platforms/$WM_ARCH$WM_COMPILER
diff --git a/etc/apps/paraview3/cshrc b/etc/apps/paraview3/cshrc
index 1c500f4962544271b887b812dff67f268cf89c04..66c7e1a54f283c56121c74164e482b7b221d437d 100644
--- a/etc/apps/paraview3/cshrc
+++ b/etc/apps/paraview3/cshrc
@@ -44,8 +44,8 @@ foreach cmake ( cmake-2.6.4 cmake-2.6.2 cmake-2.4.6 )
     endif
 end
 
-set paraviewMajor=paraview-3.5
-setenv ParaView_VERSION 3.5-cvs
+set paraviewMajor=paraview-3.6
+setenv ParaView_VERSION 3.6
 
 setenv ParaView_INST_DIR $WM_THIRD_PARTY_DIR/paraview-$ParaView_VERSION
 setenv ParaView_DIR $ParaView_INST_DIR/platforms/$WM_ARCH$WM_COMPILER
diff --git a/etc/bashrc b/etc/bashrc
index edd0265b63d079bec3730a3be43a72878b692d6c..f906c99080ba679d8ea58dcb7d3f29b713b665e7 100644
--- a/etc/bashrc
+++ b/etc/bashrc
@@ -74,7 +74,7 @@ export WM_PROJECT_USER_DIR=$HOME/$WM_PROJECT/$USER-$WM_PROJECT_VERSION
 
 # Location of third-party software
 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-export WM_THIRD_PARTY_DIR=$WM_PROJECT_INST_DIR/ThirdParty
+export WM_THIRD_PARTY_DIR=$WM_PROJECT_INST_DIR/ThirdParty-$WM_PROJECT_VERSION
 
 
 # Operating System/Platform
@@ -244,7 +244,6 @@ _foamSource $WM_PROJECT_DIR/etc/aliases.sh
 # _foamSource $WM_PROJECT_DIR/etc/apps/paraview/bashrc
 _foamSource $WM_PROJECT_DIR/etc/apps/paraview3/bashrc
 _foamSource $WM_PROJECT_DIR/etc/apps/ensight/bashrc
-_foamSource $WM_PROJECT_DIR/etc/apps/cint/bashrc
 
 
 # Clean environment paths again. Only remove duplicates
diff --git a/etc/controlDict b/etc/controlDict
index c5f3831a30c143a6b1ee1fabf780c353080e8682..f06bbbd96123726a277fbb8a18a29ea084bb8d10 100644
--- a/etc/controlDict
+++ b/etc/controlDict
@@ -95,6 +95,7 @@ DebugSwitches
     Euler               0;
     EulerImplicit       0;
     EulerRotation       0;
+    extendedCellToFaceStencil 0;
     FDIC                0;
     FaceCellWave        0;
     GAMG                0;
@@ -423,7 +424,7 @@ DebugSwitches
     filteredLinear3     0;
     filteredLinear3V    0;
     fixedEnthalpy       0;
-    fixedFluxBuoyantPressure 0;
+    buoyantPressure 0;
     fixedFluxBoussinesqBuoyantPressure 0;
     fixedFluxPressure   0;
     fixedGradient       0;
diff --git a/etc/cshrc b/etc/cshrc
index 17e75ba888df4e149d0d9bd52650d7e88a3bc482..e1960e39dc71b9b2f29b1e9bd61826a9ef65b1e4 100644
--- a/etc/cshrc
+++ b/etc/cshrc
@@ -68,7 +68,7 @@ setenv WM_PROJECT_USER_DIR $HOME/$WM_PROJECT/$LOGNAME-$WM_PROJECT_VERSION
 
 # Location of third-party software
 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-setenv WM_THIRD_PARTY_DIR $WM_PROJECT_INST_DIR/ThirdParty
+setenv WM_THIRD_PARTY_DIR $WM_PROJECT_INST_DIR/ThirdParty-$WM_PROJECT_VERSION
 
 
 # Operating System/Platform
@@ -241,7 +241,6 @@ _foamSource $WM_PROJECT_DIR/etc/aliases.csh
 # _foamSource $WM_PROJECT_DIR/etc/apps/paraview/cshrc
 _foamSource $WM_PROJECT_DIR/etc/apps/paraview3/cshrc
 # _foamSource $WM_PROJECT_DIR/etc/apps/ensight/cshrc
-# _foamSource $WM_PROJECT_DIR/etc/apps/cint/cshrc
 
 
 # Clean environment paths again. Only remove duplicates
diff --git a/src/OSspecific/POSIX/signals/sigFpe.C b/src/OSspecific/POSIX/signals/sigFpe.C
index 813364d366779395a04efd49558e37cefd227ba0..6aeaac2d197dd4ba7b621a8c8c5701905b11a594 100644
--- a/src/OSspecific/POSIX/signals/sigFpe.C
+++ b/src/OSspecific/POSIX/signals/sigFpe.C
@@ -68,7 +68,7 @@ void* Foam::sigFpe::my_malloc_hook(size_t size, const void *caller)
     result = malloc (size);
 
     // initialize to signalling nan
-#   ifdef SP
+#   ifdef WM_SP
 
     const uint32_t sNAN = 0x7ff7fffflu;
 
@@ -177,7 +177,7 @@ Foam::sigFpe::~sigFpe()
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-void Foam::sigFpe::set()
+void Foam::sigFpe::set(const bool verbose)
 {
     if (oldAction_.sa_handler)
     {
@@ -190,6 +190,12 @@ void Foam::sigFpe::set()
 
     if (env("FOAM_SIGFPE"))
     {
+        if (verbose)
+        {
+            Info<< "SigFpe : Enabling floating point exception trapping"
+                << " (FOAM_SIGFPE)." << endl;
+        }
+
 #       ifdef LINUX_GNUC
 
         feenableexcept
@@ -240,6 +246,12 @@ void Foam::sigFpe::set()
 
     if (env("FOAM_SETNAN"))
     {
+        if (verbose)
+        {
+            Info<< "SetNaN : Initialising allocated memory to NaN"
+                << " (FOAM_SETNAN)." << endl;
+        }
+
 #       ifdef LINUX_GNUC
 
         // Set our malloc
diff --git a/src/OSspecific/POSIX/signals/sigFpe.H b/src/OSspecific/POSIX/signals/sigFpe.H
index 6d9fe7623ccf7d6aa2520efe3938e3ebafb641d6..46755873de60d020e70ff50eea209addc167dcf7 100644
--- a/src/OSspecific/POSIX/signals/sigFpe.H
+++ b/src/OSspecific/POSIX/signals/sigFpe.H
@@ -107,7 +107,7 @@ public:
 
     // Member functions
 
-        void set();
+        void set(const bool verbose);
 };
 
 
diff --git a/src/OSspecific/POSIX/signals/sigInt.C b/src/OSspecific/POSIX/signals/sigInt.C
index 922374fa7347e81b812cf10fe2f25b3337a1b25e..1f3555ec8746d86f7fc06a09ed0823185c006969 100644
--- a/src/OSspecific/POSIX/signals/sigInt.C
+++ b/src/OSspecific/POSIX/signals/sigInt.C
@@ -81,7 +81,7 @@ Foam::sigInt::~sigInt()
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-void Foam::sigInt::set()
+void Foam::sigInt::set(const bool verbose)
 {
     if (oldAction_.sa_handler)
     {
diff --git a/src/OSspecific/POSIX/signals/sigInt.H b/src/OSspecific/POSIX/signals/sigInt.H
index 49cf7ea41e354c8a6c89ad28b1dbe5c31272fefe..1f89c47f97ea6dcb28741af7922b3146570aa901 100644
--- a/src/OSspecific/POSIX/signals/sigInt.H
+++ b/src/OSspecific/POSIX/signals/sigInt.H
@@ -78,7 +78,7 @@ public:
 
     // Member functions
 
-        void set();
+        void set(const bool verbose);
 };
 
 
diff --git a/src/OSspecific/POSIX/signals/sigQuit.C b/src/OSspecific/POSIX/signals/sigQuit.C
index 890d4d3430e3ad9eafcf8a3c15a16b7f08ff2aa2..7c67c903bc98772df9726a8c7bda5b491781b27d 100644
--- a/src/OSspecific/POSIX/signals/sigQuit.C
+++ b/src/OSspecific/POSIX/signals/sigQuit.C
@@ -83,7 +83,7 @@ Foam::sigQuit::~sigQuit()
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-void Foam::sigQuit::set()
+void Foam::sigQuit::set(const bool verbose)
 {
     if (oldAction_.sa_handler)
     {
diff --git a/src/OSspecific/POSIX/signals/sigQuit.H b/src/OSspecific/POSIX/signals/sigQuit.H
index c130416a687a76f477b88d8df708c7f7da512dc5..23890cc6dbae3d24f352a87b420118bd04c52cc5 100644
--- a/src/OSspecific/POSIX/signals/sigQuit.H
+++ b/src/OSspecific/POSIX/signals/sigQuit.H
@@ -78,7 +78,7 @@ public:
 
     // Member functions
 
-        void set();
+        void set(const bool verbose);
 };
 
 
diff --git a/src/OSspecific/POSIX/signals/sigSegv.C b/src/OSspecific/POSIX/signals/sigSegv.C
index 270a21461979d4232b3df8f5586f67ff094fb119..14ab77ffe326c878e7cf1507c3d0cebb3e8b328f 100644
--- a/src/OSspecific/POSIX/signals/sigSegv.C
+++ b/src/OSspecific/POSIX/signals/sigSegv.C
@@ -83,7 +83,7 @@ Foam::sigSegv::~sigSegv()
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-void Foam::sigSegv::set()
+void Foam::sigSegv::set(const bool verbose)
 {
     if (oldAction_.sa_handler)
     {
diff --git a/src/OSspecific/POSIX/signals/sigSegv.H b/src/OSspecific/POSIX/signals/sigSegv.H
index 2c405c9565bd665c303c76c60957a6a39e18be6e..5aae61de7d3319b1f9f5dbc950d13cf290671fd6 100644
--- a/src/OSspecific/POSIX/signals/sigSegv.H
+++ b/src/OSspecific/POSIX/signals/sigSegv.H
@@ -78,7 +78,7 @@ public:
 
     // Member functions
 
-        void set();
+        void set(const bool verbose);
 };
 
 
diff --git a/src/OpenFOAM/Make/files b/src/OpenFOAM/Make/files
index c99ee23fa5105c25076fc4bb5b73769c74751864..24208bfcd5fcd7b65fd0e9ac717da1f635113233 100644
--- a/src/OpenFOAM/Make/files
+++ b/src/OpenFOAM/Make/files
@@ -63,7 +63,7 @@ primitives/random/Random.C
 containers/HashTables/HashTable/HashTableName.C
 containers/HashTables/StaticHashTable/StaticHashTableName.C
 containers/Lists/SortableList/ParSortableListName.C
-containers/Lists/PackedList/PackedListCore.C
+containers/Lists/PackedList/PackedListName.C
 containers/Lists/ListOps/ListOps.C
 containers/LinkedLists/linkTypes/SLListBase/SLListBase.C
 containers/LinkedLists/linkTypes/DLListBase/DLListBase.C
@@ -72,6 +72,7 @@ primitiveLists = primitives/Lists
 $(primitiveLists)/boolList.C
 $(primitiveLists)/labelIOList.C
 $(primitiveLists)/scalarList.C
+$(primitiveLists)/scalarIOList.C
 $(primitiveLists)/vectorList.C
 $(primitiveLists)/sphericalTensorList.C
 $(primitiveLists)/symmTensorList.C
diff --git a/src/OpenFOAM/containers/HashTables/HashPtrTable/HashPtrTable.H b/src/OpenFOAM/containers/HashTables/HashPtrTable/HashPtrTable.H
index 8ae3697f1dd95a402c56b2ca69616084be84fd74..78cb735e17066245c211c932bbd20ac486777b3b 100644
--- a/src/OpenFOAM/containers/HashTables/HashPtrTable/HashPtrTable.H
+++ b/src/OpenFOAM/containers/HashTables/HashPtrTable/HashPtrTable.H
@@ -122,19 +122,13 @@ public:
 
     // IOstream Operators
 
-        friend Istream& operator>>
-        #ifndef __CINT__
-        <T, Key, Hash>
-        #endif
+        friend Istream& operator>> <T, Key, Hash>
         (
             Istream&,
             HashPtrTable<T, Key, Hash>&
         );
 
-        friend Ostream& operator<<
-        #ifndef __CINT__
-        <T, Key, Hash>
-        #endif
+        friend Ostream& operator<< <T, Key, Hash>
         (
             Ostream&,
             const HashPtrTable<T, Key, Hash>&
diff --git a/src/OpenFOAM/containers/HashTables/HashTable/HashTable.H b/src/OpenFOAM/containers/HashTables/HashTable/HashTable.H
index 0e13b7c9a1d82016ff51b5915f09db97b6a42a64..3871db3a50e486370485979b9974290a74526ea9 100644
--- a/src/OpenFOAM/containers/HashTables/HashTable/HashTable.H
+++ b/src/OpenFOAM/containers/HashTables/HashTable/HashTable.H
@@ -417,19 +417,13 @@ public:
 
     // IOstream Operator
 
-        friend Istream& operator>>
-        #ifndef __CINT__
-        <T, Key, Hash>
-        #endif
+        friend Istream& operator>> <T, Key, Hash>
         (
             Istream&,
             HashTable<T, Key, Hash>&
         );
 
-        friend Ostream& operator<<
-        #ifndef __CINT__
-        <T, Key, Hash>
-        #endif
+        friend Ostream& operator<< <T, Key, Hash>
         (
             Ostream&,
             const HashTable<T, Key, Hash>&
diff --git a/src/OpenFOAM/containers/HashTables/HashTable/HashTableI.H b/src/OpenFOAM/containers/HashTables/HashTable/HashTableI.H
index e2655da4334ea4878513b757d56d1133156b35b5..5212d57f5168d289e5fcdc6b9fdedef1e9569632 100644
--- a/src/OpenFOAM/containers/HashTables/HashTable/HashTableI.H
+++ b/src/OpenFOAM/containers/HashTables/HashTable/HashTableI.H
@@ -428,20 +428,19 @@ inline bool Foam::HashTable<T, Key, Hash>::const_iterator::operator!=
 
 
 template<class T, class Key, class Hash>
-inline const T& 
+inline const T&
 Foam::HashTable<T, Key, Hash>::const_iterator::operator*() const
 {
     return elmtPtr_->obj_;
 }
 
-#ifndef __CINT__
 template<class T, class Key, class Hash>
 inline const T&
 Foam::HashTable<T, Key, Hash>::const_iterator::operator()() const
 {
     return elmtPtr_->obj_;
 }
-#endif
+
 
 template<class T, class Key, class Hash>
 inline
diff --git a/src/OpenFOAM/containers/LinkedLists/accessTypes/ILList/ILList.H b/src/OpenFOAM/containers/LinkedLists/accessTypes/ILList/ILList.H
index 2e0823fe3d69c8344123ad156b1eea395063a153..20635fa53f944bedcaa4f240d05657a09782f2df 100644
--- a/src/OpenFOAM/containers/LinkedLists/accessTypes/ILList/ILList.H
+++ b/src/OpenFOAM/containers/LinkedLists/accessTypes/ILList/ILList.H
@@ -152,10 +152,7 @@ public:
     // Istream operator
 
         //- Read List from Istream, discarding contents of existing List.
-        friend Istream& operator>>
-        #ifndef __CINT__
-        <LListBase, T>
-        #endif
+        friend Istream& operator>> <LListBase, T>
         (
             Istream&,
             ILList<LListBase, T>&
diff --git a/src/OpenFOAM/containers/LinkedLists/accessTypes/LList/LList.H b/src/OpenFOAM/containers/LinkedLists/accessTypes/LList/LList.H
index 9c8a22945ac8934cd75f880d6e4204742b95125e..0905f5543cbd7f272845f62d5d7d8afa0633b9ae 100644
--- a/src/OpenFOAM/containers/LinkedLists/accessTypes/LList/LList.H
+++ b/src/OpenFOAM/containers/LinkedLists/accessTypes/LList/LList.H
@@ -327,19 +327,13 @@ public:
 
     // IOstream operators
 
-        friend Istream& operator>>
-        #ifndef __CINT__
-        <LListBase, T>
-        #endif
+        friend Istream& operator>> <LListBase, T>
         (
             Istream&,
             LList<LListBase, T>&
         );
 
-        friend Ostream& operator<<
-        #ifndef __CINT__
-        <LListBase, T>
-        #endif
+        friend Ostream& operator<< <LListBase, T>
         (
             Ostream&,
             const LList<LListBase, T>&
diff --git a/src/OpenFOAM/containers/LinkedLists/accessTypes/LPtrList/LPtrList.H b/src/OpenFOAM/containers/LinkedLists/accessTypes/LPtrList/LPtrList.H
index ed98956ad5bd168b51b791b92ef7f24352b93465..333d916a65a4bbb84a0b75532cfcfaca28a0d463 100644
--- a/src/OpenFOAM/containers/LinkedLists/accessTypes/LPtrList/LPtrList.H
+++ b/src/OpenFOAM/containers/LinkedLists/accessTypes/LPtrList/LPtrList.H
@@ -260,19 +260,13 @@ public:
 
     // IOstream operators
 
-        friend Istream& operator>>
-        #ifndef __CINT__
-        <LListBase, T>
-        #endif
+        friend Istream& operator>> <LListBase, T>
         (
             Istream&,
             LPtrList<LListBase, T>&
         );
 
-        friend Ostream& operator<<
-        #ifndef __CINT__
-        <LListBase, T>
-        #endif
+        friend Ostream& operator<< <LListBase, T>
         (
             Ostream&,
             const LPtrList<LListBase, T>&
diff --git a/src/OpenFOAM/containers/LinkedLists/accessTypes/UILList/UILList.H b/src/OpenFOAM/containers/LinkedLists/accessTypes/UILList/UILList.H
index feefd60c7c8460aac8574299e6ff3d8b86b4248d..61585d6ac8c25afb931dd08f689a84b5fee7de3b 100644
--- a/src/OpenFOAM/containers/LinkedLists/accessTypes/UILList/UILList.H
+++ b/src/OpenFOAM/containers/LinkedLists/accessTypes/UILList/UILList.H
@@ -277,10 +277,7 @@ public:
 
     // Ostream operator
 
-        friend Ostream& operator<<
-        #ifndef __CINT__
-        <LListBase, T>
-        #endif
+        friend Ostream& operator<< <LListBase, T>
         (
             Ostream&,
             const UILList<LListBase, T>&
diff --git a/src/OpenFOAM/containers/Lists/DynamicList/DynamicList.H b/src/OpenFOAM/containers/Lists/DynamicList/DynamicList.H
index 460d325006d133cfa3be15018539bf76c3806bd5..daccd7af3d11c1f358ff7aeb3397018cd9d545c9 100644
--- a/src/OpenFOAM/containers/Lists/DynamicList/DynamicList.H
+++ b/src/OpenFOAM/containers/Lists/DynamicList/DynamicList.H
@@ -210,20 +210,14 @@ public:
     // IOstream operators
 
         // Write DynamicList to Ostream.
-        friend Ostream& operator<<
-        #ifndef __CINT__
-        <T, SizeInc, SizeMult, SizeDiv>
-        #endif
+        friend Ostream& operator<< <T, SizeInc, SizeMult, SizeDiv>
         (
             Ostream&,
             const DynamicList<T, SizeInc, SizeMult, SizeDiv>&
         );
 
         //- Read from Istream, discarding contents of existing DynamicList.
-        friend Istream& operator>>
-        #ifndef __CINT__
-        <T, SizeInc, SizeMult, SizeDiv>
-        #endif
+        friend Istream& operator>> <T, SizeInc, SizeMult, SizeDiv>
         (
             Istream&,
             DynamicList<T, SizeInc, SizeMult, SizeDiv>&
diff --git a/src/OpenFOAM/containers/Lists/FixedList/FixedList.H b/src/OpenFOAM/containers/Lists/FixedList/FixedList.H
index 6c64a92d03f3a0400a33ff3cf0cd7e40cceff75a..76f9527701d4eec378553f1f4767572be282055a 100644
--- a/src/OpenFOAM/containers/Lists/FixedList/FixedList.H
+++ b/src/OpenFOAM/containers/Lists/FixedList/FixedList.H
@@ -331,17 +331,11 @@ public:
     // IOstream operators
 
         //- Read List from Istream, discarding contents of existing List.
-        friend Istream& operator>>
-        #ifndef __CINT__
-        <T, Size>
-        #endif
+        friend Istream& operator>> <T, Size>
         (Istream&, FixedList<T, Size>&);
 
         // Write FixedList to Ostream.
-        friend Ostream& operator<<
-        #ifndef __CINT__
-        <T, Size>
-        #endif
+        friend Ostream& operator<< <T, Size>
         (
             Ostream&,
             const FixedList<T, Size>&
diff --git a/src/OpenFOAM/containers/Lists/FixedList/FixedListI.H b/src/OpenFOAM/containers/Lists/FixedList/FixedListI.H
index 055f785471b909e9ee65c324d2d62bfb23b1777c..1c3fe7131e6f179ad801a0151da2dd93d746c83e 100644
--- a/src/OpenFOAM/containers/Lists/FixedList/FixedListI.H
+++ b/src/OpenFOAM/containers/Lists/FixedList/FixedListI.H
@@ -398,7 +398,6 @@ inline bool Foam::FixedList<T, Size>::empty() const
 }
 
 
-#ifndef __CINT__
 template<class T, unsigned Size>
 template<class HashT>
 inline unsigned Foam::FixedList<T, Size>::Hash<HashT>::operator()
@@ -426,6 +425,5 @@ inline unsigned Foam::FixedList<T, Size>::Hash<HashT>::operator()
     }
 }
 
-#endif  // __CINT__
 
 // ************************************************************************* //
diff --git a/src/OpenFOAM/containers/Lists/List/List.C b/src/OpenFOAM/containers/Lists/List/List.C
index 3fa3dcc8748bb8a3fbb8e775a4510baa705ab189..08422fd9ba23333451a1123d5ebf7217b4f9bfd6 100644
--- a/src/OpenFOAM/containers/Lists/List/List.C
+++ b/src/OpenFOAM/containers/Lists/List/List.C
@@ -35,8 +35,6 @@ License
 #include "BiIndirectList.H"
 #include "contiguous.H"
 
-#include <algorithm>
-
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 // * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * * //
@@ -442,34 +440,6 @@ void Foam::List<T>::transfer(SortableList<T>& a)
 }
 
 
-template<class T>
-void Foam::sort(List<T>& a)
-{
-    std::sort(a.begin(), a.end());
-}
-
-
-template<class T, class Cmp>
-void Foam::sort(List<T>& a, const Cmp& cmp)
-{
-    std::sort(a.begin(), a.end(), cmp);
-}
-
-
-template<class T>
-void Foam::stableSort(List<T>& a)
-{
-    std::stable_sort(a.begin(), a.end());
-}
-
-
-template<class T, class Cmp>
-void Foam::stableSort(List<T>& a, const Cmp& cmp)
-{
-    std::stable_sort(a.begin(), a.end(), cmp);
-}
-
-
 // * * * * * * * * * * * * * * * Member Operators  * * * * * * * * * * * * * //
 
 // Assignment to UList operator. Takes linear time.
diff --git a/src/OpenFOAM/containers/Lists/List/List.H b/src/OpenFOAM/containers/Lists/List/List.H
index 434320cf5b21b980bbbbf286a57df2186e4e98fe..b89f6c95a9f15c2bfe07eddfb3aa537a30c1d9b1 100644
--- a/src/OpenFOAM/containers/Lists/List/List.H
+++ b/src/OpenFOAM/containers/Lists/List/List.H
@@ -233,10 +233,7 @@ public:
     // Istream operator
 
         //- Read List from Istream, discarding contents of existing List.
-        friend Istream& operator>>
-        #ifndef __CINT__
-        <T>
-        #endif
+        friend Istream& operator>> <T>
         (Istream&, List<T>&);
 };
 
@@ -251,18 +248,6 @@ public:
 template<class T>
 List<T> readList(Istream&);
 
-template<class T>
-void sort(List<T>&);
-
-template<class T, class Cmp>
-void sort(List<T>&, const Cmp&);
-
-template<class T>
-void stableSort(List<T>&);
-
-template<class T, class Cmp>
-void stableSort(List<T>&, const Cmp&);
-
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
diff --git a/src/OpenFOAM/containers/Lists/List/ListLoopM.H b/src/OpenFOAM/containers/Lists/List/ListLoopM.H
index da90147c64c08f5e5ef03cab1b57900eb79cb319..48b8c5d17e5336268f6fcd6ae7798c662d4b5233 100644
--- a/src/OpenFOAM/containers/Lists/List/ListLoopM.H
+++ b/src/OpenFOAM/containers/Lists/List/ListLoopM.H
@@ -31,8 +31,6 @@ Description
 #ifndef ListLoop_H
 #define ListLoop_H
 
-#include "undefListLoopM.H"
-
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 #ifdef vectorMachine
@@ -48,8 +46,11 @@ Description
 
 #define List_ELEM(f, fp, i)  (fp[i])
 
-#define List_ACCESS(type, f, fp) type* __restrict__ fp = (f).begin()
-#define List_CONST_ACCESS(type, f, fp) const type* __restrict__ fp = (f).begin()
+#define List_ACCESS(type, f, fp) \
+    type* const __restrict__ fp = (f).begin()
+
+#define List_CONST_ACCESS(type, f, fp) \
+    const type* const __restrict__ fp = (f).begin()
 
 #else
 
@@ -64,8 +65,11 @@ Description
 
 #define List_ELEM(f, fp, i)  (*fp++)
 
-#define List_ACCESS(type, f, fp)  register type* __restrict__ fp = (f).begin()
-#define List_CONST_ACCESS(type, f, fp)  register const type* __restrict__ fp = (f).begin()
+#define List_ACCESS(type, f, fp) \
+    register type* __restrict__ fp = (f).begin()
+
+#define List_CONST_ACCESS(type, f, fp) \
+    register const type* __restrict__ fp = (f).begin()
 
 #endif
 
diff --git a/src/OpenFOAM/containers/Lists/ListOps/ListOps.H b/src/OpenFOAM/containers/Lists/ListOps/ListOps.H
index 7de9239d04deed112a68f7ddf745c5d1d933133c..1504fb4d78363167fd2f4e934270702728afc71d 100644
--- a/src/OpenFOAM/containers/Lists/ListOps/ListOps.H
+++ b/src/OpenFOAM/containers/Lists/ListOps/ListOps.H
@@ -73,7 +73,7 @@ void inplaceReorder(const UList<label>& oldToNew, ListType&);
 template<class Container>
 void inplaceMapValue(const UList<label>& oldToNew, Container&);
 
-//- Recreate with mapped keys. Remove elements with negative key.
+//- Recreate with mapped keys. Do not map elements with negative key.
 template<class Container>
 void inplaceMapKey(const UList<label>& oldToNew, Container&);
 
diff --git a/src/OpenFOAM/containers/Lists/ListOps/ListOpsTemplates.C b/src/OpenFOAM/containers/Lists/ListOps/ListOpsTemplates.C
index f2178ee38df53e583476328496325f068ef8fc34..dd8536eec9b9f1466c518e2069c4a96b489cdc80 100644
--- a/src/OpenFOAM/containers/Lists/ListOps/ListOpsTemplates.C
+++ b/src/OpenFOAM/containers/Lists/ListOps/ListOpsTemplates.C
@@ -147,7 +147,7 @@ void Foam::inplaceMapKey
     Container& lst
 )
 {
-    Container newLst(lst);
+    Container newLst(lst.size());
 
     for
     (
diff --git a/src/OpenFOAM/containers/Lists/PackedList/PackedListCore.C b/src/OpenFOAM/containers/Lists/PackedList/PackedListName.C
similarity index 99%
rename from src/OpenFOAM/containers/Lists/PackedList/PackedListCore.C
rename to src/OpenFOAM/containers/Lists/PackedList/PackedListName.C
index 270d1c30eb8138da1d492d92218bdf94325700ab..5973d3021e011a682921cabac851ee87f6d5082a 100644
--- a/src/OpenFOAM/containers/Lists/PackedList/PackedListCore.C
+++ b/src/OpenFOAM/containers/Lists/PackedList/PackedListName.C
@@ -22,8 +22,6 @@ License
     along with OpenFOAM; if not, write to the Free Software Foundation,
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
-Description
-
 \*---------------------------------------------------------------------------*/
 
 #include "PackedList.H"
diff --git a/src/OpenFOAM/containers/Lists/PtrList/PtrList.C b/src/OpenFOAM/containers/Lists/PtrList/PtrList.C
index 6418537b02089d50eb8e1905cda5f556f2fa33ae..11d997dd3f2fe6047b0ad9734c0de207404a302d 100644
--- a/src/OpenFOAM/containers/Lists/PtrList/PtrList.C
+++ b/src/OpenFOAM/containers/Lists/PtrList/PtrList.C
@@ -27,7 +27,6 @@ License
 #include "error.H"
 
 #include "PtrList.H"
-#include "PtrListLoopM.H"
 #include "SLPtrList.H"
 
 // * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * * //
diff --git a/src/OpenFOAM/containers/Lists/UIndirectList/UIndirectList.H b/src/OpenFOAM/containers/Lists/UIndirectList/UIndirectList.H
index ec6a1b9fd6f330f6d5feb3c5e7bd4d78a8b411af..0219e02af72861fb2c92b001b498f6ff1fb68b18 100644
--- a/src/OpenFOAM/containers/Lists/UIndirectList/UIndirectList.H
+++ b/src/OpenFOAM/containers/Lists/UIndirectList/UIndirectList.H
@@ -97,16 +97,16 @@ public:
             //- Assignment of all entries to the given value
             inline void operator=(const T&);
 
+
     // Ostream operator
 
         //- Write UIndirectList to Ostream
         //  Binary output is currently still a bit of a problem
-        friend Ostream& operator<<
-        #ifndef __CINT__
-        <T>
-        #endif
-        (Ostream&, const UIndirectList<T>&);
-
+        friend Ostream& operator<< <T>
+        (
+            Ostream&,
+            const UIndirectList<T>&
+        );
 };
 
 
diff --git a/src/OpenFOAM/containers/Lists/UList/UList.C b/src/OpenFOAM/containers/Lists/UList/UList.C
index 255a91ecfecc83484da0f0f6873795e82dbf586d..42d00bc41e7ede72f47b9e4dcf9490e0891c2f33 100644
--- a/src/OpenFOAM/containers/Lists/UList/UList.C
+++ b/src/OpenFOAM/containers/Lists/UList/UList.C
@@ -30,6 +30,8 @@ License
 #include "ListLoopM.H"
 #include "contiguous.H"
 
+#include <algorithm>
+
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 template<class T>
@@ -116,6 +118,34 @@ Foam::label Foam::UList<T>::byteSize() const
 }
 
 
+template<class T>
+void Foam::sort(UList<T>& a)
+{
+    std::sort(a.begin(), a.end());
+}
+
+
+template<class T, class Cmp>
+void Foam::sort(UList<T>& a, const Cmp& cmp)
+{
+    std::sort(a.begin(), a.end(), cmp);
+}
+
+
+template<class T>
+void Foam::stableSort(UList<T>& a)
+{
+    std::stable_sort(a.begin(), a.end());
+}
+
+
+template<class T, class Cmp>
+void Foam::stableSort(UList<T>& a, const Cmp& cmp)
+{
+    std::stable_sort(a.begin(), a.end(), cmp);
+}
+
+
 // * * * * * * * * * * * * * * * Member Operators  * * * * * * * * * * * * * //
 
 template<class T>
diff --git a/src/OpenFOAM/containers/Lists/UList/UList.H b/src/OpenFOAM/containers/Lists/UList/UList.H
index 6370f8e749fe4025bb66c5e255bf6d13fa5848d7..087f685ff6cf182cee3be9fe3a4c24370d3f25fa 100644
--- a/src/OpenFOAM/containers/Lists/UList/UList.H
+++ b/src/OpenFOAM/containers/Lists/UList/UList.H
@@ -313,13 +313,25 @@ public:
     // Ostream operator
 
         // Write UList to Ostream.
-        friend Ostream& operator<<
-        #ifndef __CINT__
-        <T>
-        #endif
-        (Ostream&, const UList<T>&);
+        friend Ostream& operator<< <T>
+        (
+            Ostream&,
+            const UList<T>&
+        );
 };
 
+template<class T>
+void sort(UList<T>&);
+
+template<class T, class Cmp>
+void sort(UList<T>&, const Cmp&);
+
+template<class T>
+void stableSort(UList<T>&);
+
+template<class T, class Cmp>
+void stableSort(UList<T>&, const Cmp&);
+
 // Reverse the first n elements of the list
 template<class T>
 inline void reverse(UList<T>&, const label n);
diff --git a/src/OpenFOAM/containers/Lists/UPtrList/UPtrList.C b/src/OpenFOAM/containers/Lists/UPtrList/UPtrList.C
index 02015efb9b663ec6dbd13a36398bce94def3a9ee..bed0214749efe46fecb7de60e3e063c612fbf7d7 100644
--- a/src/OpenFOAM/containers/Lists/UPtrList/UPtrList.C
+++ b/src/OpenFOAM/containers/Lists/UPtrList/UPtrList.C
@@ -27,7 +27,6 @@ License
 #include "error.H"
 
 #include "UPtrList.H"
-#include "PtrListLoopM.H"
 
 // * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * * //
 
diff --git a/src/OpenFOAM/db/IOobject/IOobject.H b/src/OpenFOAM/db/IOobject/IOobject.H
index 5fc5a839b13d8d86a06828551200584335ca9f4c..063af46c66118b07ab87b42faf9bb834d83a5d76 100644
--- a/src/OpenFOAM/db/IOobject/IOobject.H
+++ b/src/OpenFOAM/db/IOobject/IOobject.H
@@ -83,8 +83,6 @@ class objectRegistry;
                            Class IOobject Declaration
 \*---------------------------------------------------------------------------*/
 
-#include "CintDefs.H"
-
 class IOobject
 {
 
@@ -395,7 +393,6 @@ public:
         void operator=(const IOobject&);
 };
 
-#include "CintUndefs.H"
 
 #if defined (__GNUC__)
 template<>
diff --git a/src/OpenFOAM/db/IOobjects/IOPtrList/IOPtrList.C b/src/OpenFOAM/db/IOobjects/IOPtrList/IOPtrList.C
index 8fcc3bd982ece6f33764891971d3d4e67bbc5cfe..fcb2fbdebe9e84708f5bb6a71d4538db4738a1dc 100644
--- a/src/OpenFOAM/db/IOobjects/IOPtrList/IOPtrList.C
+++ b/src/OpenFOAM/db/IOobjects/IOPtrList/IOPtrList.C
@@ -63,6 +63,21 @@ Foam::IOPtrList<T>::IOPtrList(const IOobject& io)
 }
 
 
+template<class T>
+Foam::IOPtrList<T>::IOPtrList(const IOobject& io, const label s)
+:
+    regIOobject(io),
+    PtrList<T>(s)
+{
+    if (io.readOpt() != IOobject::NO_READ)
+    {
+        FatalErrorIn("IOPtrList<T>::IOPtrList(const IOobject&, const label)")
+            << "NO_READ must be set if specifying size" << nl
+            << exit(FatalError);
+    }
+}
+
+
 template<class T>
 Foam::IOPtrList<T>::IOPtrList(const IOobject& io, const PtrList<T>& list)
 :
diff --git a/src/OpenFOAM/db/IOobjects/IOPtrList/IOPtrList.H b/src/OpenFOAM/db/IOobjects/IOPtrList/IOPtrList.H
index 9a2e8ce5afe2ad9462d45ac02dd911a84d2728fa..bc2232056f4aed9f7518674b11db746c7f2b5429 100644
--- a/src/OpenFOAM/db/IOobjects/IOPtrList/IOPtrList.H
+++ b/src/OpenFOAM/db/IOobjects/IOPtrList/IOPtrList.H
@@ -70,6 +70,9 @@ public:
         //- Construct from IOobject
         IOPtrList(const IOobject&);
 
+        //- Construct from IOobject with given size
+        IOPtrList(const IOobject&, const label);
+
         //- Construct from IOobject and a PtrList
         IOPtrList(const IOobject&, const PtrList<T>&);
 
diff --git a/src/OpenFOAM/db/IOstreams/Fstreams/OFstream.H b/src/OpenFOAM/db/IOstreams/Fstreams/OFstream.H
index 29079d33f8c740b69222e63c77ad8cd0b0b8752d..7ad2ebd88a17bd08dd93305d2771171da6b3c982 100644
--- a/src/OpenFOAM/db/IOstreams/Fstreams/OFstream.H
+++ b/src/OpenFOAM/db/IOstreams/Fstreams/OFstream.H
@@ -148,9 +148,7 @@ public:
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 // Global predefined null output stream
 
-#ifndef __CINT__
 extern OFstream Snull;
-#endif
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
diff --git a/src/OpenFOAM/db/IOstreams/IOstreams/IOstream.H b/src/OpenFOAM/db/IOstreams/IOstreams/IOstream.H
index f2846f47f5735db3206b15613676a4bfda02b690..a9c50741e932333e10c53b8163ab704533918126 100644
--- a/src/OpenFOAM/db/IOstreams/IOstreams/IOstream.H
+++ b/src/OpenFOAM/db/IOstreams/IOstreams/IOstream.H
@@ -74,8 +74,6 @@ namespace Foam
                            Class IOstream Declaration
 \*---------------------------------------------------------------------------*/
 
-#include "CintDefs.H"
-
 class IOstream
 {
 
@@ -193,9 +191,7 @@ public:
 
 
             //- Ostream operator
-            #ifndef __MAKECINT__
             friend Ostream& operator<<(Ostream& os, const versionNumber& vn);
-            #endif
         };
 
 
@@ -421,7 +417,7 @@ public:
             }
 
             //- Return compression of given compression name
-            static compressionType compressionEnum(const word&); 
+            static compressionType compressionEnum(const word&);
 
             //- Return the stream compression
             compressionType compression() const
@@ -545,7 +541,6 @@ public:
             }
 };
 
-#include "CintUndefs.H"
 
 Ostream& operator<<(Ostream& os, const IOstream::streamFormat& sf);
 Ostream& operator<<(Ostream& os, const IOstream::versionNumber& vn);
@@ -554,7 +549,6 @@ Ostream& operator<<(Ostream& os, const IOstream::versionNumber& vn);
 // --------------------------------------------------------------------
 // ------ Manipulators (not taking arguments)
 // --------------------------------------------------------------------
-#ifndef __CINT__
 
 typedef IOstream& (*IOstreamManip)(IOstream&);
 
@@ -595,8 +589,6 @@ inline IOstream& scientific(IOstream& io)
     return io;
 }
 
-#endif
-
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
diff --git a/src/OpenFOAM/db/IOstreams/IOstreams/InfoProxy.H b/src/OpenFOAM/db/IOstreams/IOstreams/InfoProxy.H
index b4f48ab18f8268b3f2579a64b535fa015d9eb8c7..ff2c1e8a3e7e384e2677594f2eb5f6b81a12cc80 100644
--- a/src/OpenFOAM/db/IOstreams/IOstreams/InfoProxy.H
+++ b/src/OpenFOAM/db/IOstreams/IOstreams/InfoProxy.H
@@ -52,19 +52,14 @@ class InfoProxy
 {
 public:
 
-    #ifndef __MAKECINT__
     const T& t_;
-    #endif
 
     InfoProxy(const T& t)
     :
         t_(t)
     {}
-    
-    friend Ostream& operator<<
-    #ifndef __CINT__
-    <T>
-    #endif
+
+    friend Ostream& operator<< <T>
     (Ostream&, const InfoProxy<T>&);
 };
 
diff --git a/src/OpenFOAM/db/IOstreams/IOstreams/Istream.H b/src/OpenFOAM/db/IOstreams/IOstreams/Istream.H
index f446f2938f270e2af1205f0ea956ba0afb7be812..701c674b14f5a6df33da9c6f4ce86e40663e6d62 100644
--- a/src/OpenFOAM/db/IOstreams/IOstreams/Istream.H
+++ b/src/OpenFOAM/db/IOstreams/IOstreams/Istream.H
@@ -152,7 +152,6 @@ public:
 // --------------------------------------------------------------------
 // ------ Manipulators (not taking arguments)
 // --------------------------------------------------------------------
-#ifndef __CINT__
 
 typedef Istream& (*IstreamManip)(Istream&);
 
@@ -169,8 +168,6 @@ inline Istream& operator>>(Istream& is, IOstreamManip f)
     return is;
 }
 
-#endif
-
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
diff --git a/src/OpenFOAM/db/IOstreams/IOstreams/Ostream.H b/src/OpenFOAM/db/IOstreams/IOstreams/Ostream.H
index f82c7962225dc04df0b1930e19d0157720b27a65..6ea3380777f252c4bc76faaed0309f1d20311f60 100644
--- a/src/OpenFOAM/db/IOstreams/IOstreams/Ostream.H
+++ b/src/OpenFOAM/db/IOstreams/IOstreams/Ostream.H
@@ -70,6 +70,7 @@ protected:
         //- Current indent level
         unsigned short indentLevel_;
 
+
 public:
 
     // Constructors
@@ -87,10 +88,9 @@ public:
         {}
 
 
-    // Destructor
-
-        virtual ~Ostream()
-        {}
+    //- Destructor
+    virtual ~Ostream()
+    {}
 
 
     // Member functions
@@ -199,7 +199,6 @@ public:
 // --------------------------------------------------------------------
 // ------ Manipulators (not taking arguments)
 // --------------------------------------------------------------------
-#ifndef __CINT__
 
 typedef Ostream& (*OstreamManip)(Ostream&);
 
@@ -254,8 +253,6 @@ inline Ostream& endl(Ostream& os)
     return os;
 }
 
-#endif
-
 
 // Useful aliases for tab and newline characters
 static const char tab = '\t';
diff --git a/src/OpenFOAM/db/IOstreams/Pstreams/Pstream.H b/src/OpenFOAM/db/IOstreams/Pstreams/Pstream.H
index ba7904639c001e024c44ee1e7be9e140c07a9102..dff94c259f78ee2cbe7811d244432f43576a7c7f 100644
--- a/src/OpenFOAM/db/IOstreams/Pstreams/Pstream.H
+++ b/src/OpenFOAM/db/IOstreams/Pstreams/Pstream.H
@@ -151,9 +151,7 @@ public:
 
          // Ostream Operator
 
-            #ifndef __CINT__
             friend Ostream& operator<<(Ostream&, const commsStruct&);
-            #endif
     };
 
 
diff --git a/src/OpenFOAM/db/IOstreams/Sstreams/ISstream.H b/src/OpenFOAM/db/IOstreams/Sstreams/ISstream.H
index 45dc5a607ce67b94804d0a698c8af96d61af8521..fe778fa01031cccb4d0602d913ba61da3ebb6889 100644
--- a/src/OpenFOAM/db/IOstreams/Sstreams/ISstream.H
+++ b/src/OpenFOAM/db/IOstreams/Sstreams/ISstream.H
@@ -58,9 +58,7 @@ class ISstream
     // Private data
 
         fileName name_;
-        #ifndef __CINT__
         istream& is_;
-        #endif
 
 
     // Private member functions
diff --git a/src/OpenFOAM/db/IOstreams/Sstreams/OSstream.H b/src/OpenFOAM/db/IOstreams/Sstreams/OSstream.H
index 75d18ef793779d2051fd0d6139031b3bb8018a8f..5c862afd9311328093b843440feb846e1baf2d09 100644
--- a/src/OpenFOAM/db/IOstreams/Sstreams/OSstream.H
+++ b/src/OpenFOAM/db/IOstreams/Sstreams/OSstream.H
@@ -58,9 +58,7 @@ class OSstream
     // Private data
 
         fileName name_;
-        #ifndef __CINT__
         ostream& os_;
-        #endif
 
 
     // Private Member Functions
diff --git a/src/OpenFOAM/db/IOstreams/Tstreams/ITstream.H b/src/OpenFOAM/db/IOstreams/Tstreams/ITstream.H
index 3a34761db789bc27ddfdc0ac27b698d5a10299d6..891c8f0dab8472b7d13aca6e0e881619e7e3501b 100644
--- a/src/OpenFOAM/db/IOstreams/Tstreams/ITstream.H
+++ b/src/OpenFOAM/db/IOstreams/Tstreams/ITstream.H
@@ -98,6 +98,12 @@ public:
         }
 
 
+    // Destructor
+
+        virtual ~ITstream()
+        {}
+
+
     // Member functions
 
         // Inquiry
@@ -142,31 +148,31 @@ public:
         // Read functions
 
             //- Return next token from stream
-            Istream& read(token&);
+            virtual Istream& read(token&);
 
             //- Read a character
-            Istream& read(char&);
+            virtual Istream& read(char&);
 
             //- Read a word
-            Istream& read(word&);
+            virtual Istream& read(word&);
 
             // Read a string (including enclosing double-quotes)
-            Istream& read(string&);
+            virtual Istream& read(string&);
 
             //- Read a label
-            Istream& read(label&);
+            virtual Istream& read(label&);
 
             //- Read a floatScalar
-            Istream& read(floatScalar&);
+            virtual Istream& read(floatScalar&);
 
             //- Read a doubleScalar
-            Istream& read(doubleScalar&);
+            virtual Istream& read(doubleScalar&);
 
             //- Read binary block
-            Istream& read(char*, std::streamsize);
+            virtual Istream& read(char*, std::streamsize);
 
             //- Rewind and return the stream so that it may be read again
-            Istream& rewind();
+            virtual Istream& rewind();
 
 
         // Edit
diff --git a/src/OpenFOAM/db/IOstreams/token/token.H b/src/OpenFOAM/db/IOstreams/token/token.H
index 2defc09d73b7ff615fad2a6622d5820c2a575cb0..0880b13d13262ef949a75b7de29932fcb87b6f82 100644
--- a/src/OpenFOAM/db/IOstreams/token/token.H
+++ b/src/OpenFOAM/db/IOstreams/token/token.H
@@ -66,8 +66,6 @@ Ostream& operator<<(Ostream&, const token&);
                            Class token Declaration
 \*---------------------------------------------------------------------------*/
 
-#include "CintDefs.H"
-
 class token
 {
 
@@ -206,9 +204,7 @@ public:
 
         // IOstream Operators
 
-            #ifndef __MAKECINT__
             friend Ostream& operator<<(Ostream&, const compound&);
-            #endif
     };
 
 
@@ -431,7 +427,6 @@ public:
         friend ostream& operator<<(ostream&, const InfoProxy<token>&);
 };
 
-#include "CintUndefs.H"
 
 Ostream& operator<<(Ostream&, const token::punctuationToken&);
 ostream& operator<<(ostream&, const token::punctuationToken&);
diff --git a/src/OpenFOAM/db/dictionary/functionEntries/includeEntry/includeEntry.H b/src/OpenFOAM/db/dictionary/functionEntries/includeEntry/includeEntry.H
index e4255827bf60572cdf5d43f8b0cf5da577d79fe8..6fc94aa1ad6ca8255832a3981d1bd5a42bab1d10 100644
--- a/src/OpenFOAM/db/dictionary/functionEntries/includeEntry/includeEntry.H
+++ b/src/OpenFOAM/db/dictionary/functionEntries/includeEntry/includeEntry.H
@@ -80,7 +80,7 @@ class includeEntry
 public:
 
     //- Runtime type information
-    TypeName("include");
+    ClassName("include");
 
 
     // Member Functions
diff --git a/src/OpenFOAM/db/dictionary/functionEntries/inputModeEntry/inputModeEntry.H b/src/OpenFOAM/db/dictionary/functionEntries/inputModeEntry/inputModeEntry.H
index da3bd7a0676ae53a969fdaa7f09e0a696916e363..4aace67dfaff2c01f98bfe7e31aeca78bc800be4 100644
--- a/src/OpenFOAM/db/dictionary/functionEntries/inputModeEntry/inputModeEntry.H
+++ b/src/OpenFOAM/db/dictionary/functionEntries/inputModeEntry/inputModeEntry.H
@@ -96,7 +96,7 @@ class inputModeEntry
 public:
 
     //- Runtime type information
-    TypeName("inputMode");
+    ClassName("inputMode");
 
 
     // Member Functions
@@ -118,7 +118,6 @@ public:
 
         //- Return true if the inputMode is %error
         static bool error();
-
 };
 
 
diff --git a/src/OpenFOAM/db/dictionary/functionEntries/removeEntry/removeEntry.H b/src/OpenFOAM/db/dictionary/functionEntries/removeEntry/removeEntry.H
index 1ed2d99639228540938aba2c4d993a3a749a6185..b98da86e67de68f421d4865389a8c74e812fddd7 100644
--- a/src/OpenFOAM/db/dictionary/functionEntries/removeEntry/removeEntry.H
+++ b/src/OpenFOAM/db/dictionary/functionEntries/removeEntry/removeEntry.H
@@ -74,7 +74,7 @@ class removeEntry
 public:
 
     //- Runtime type information
-    TypeName("remove");
+    ClassName("remove");
 
 
     // Member Functions
diff --git a/src/OpenFOAM/db/dictionary/primitiveEntry/primitiveEntry.H b/src/OpenFOAM/db/dictionary/primitiveEntry/primitiveEntry.H
index c5189c1520d6c2ddb955f300d27c9d9c7eb1edf0..afc391248380ea12f90f3fd14cf9fa5b5db8bd5c 100644
--- a/src/OpenFOAM/db/dictionary/primitiveEntry/primitiveEntry.H
+++ b/src/OpenFOAM/db/dictionary/primitiveEntry/primitiveEntry.H
@@ -66,9 +66,6 @@ class primitiveEntry
     public entry,
     public ITstream
 {
-
-public:
-
     // Private member functions
 
         //- Append the given token to this entry
@@ -93,9 +90,6 @@ public:
             Istream&
         );
 
-        //- Read tokens from the given stream
-        bool read(const dictionary&, Istream&);
-
         //- Read the complete entry from the given stream
         void readEntry(const dictionary&, Istream&);
 
@@ -169,6 +163,9 @@ public:
         //  calling this function generates a FatalError
         dictionary& dict();
 
+        //- Read tokens from the given stream
+        bool read(const dictionary&, Istream&);
+
         // Write
         void write(Ostream&) const;
 
diff --git a/src/OpenFOAM/db/error/error.H b/src/OpenFOAM/db/error/error.H
index 1cd9574e6dcb5c56d0fdd55dae072edebc0a6dee..639bd933c6e75b2af398044d75b402b337c43428 100644
--- a/src/OpenFOAM/db/error/error.H
+++ b/src/OpenFOAM/db/error/error.H
@@ -150,12 +150,9 @@ public:
 
         //- Convert to Ostream
         //  Prints basic message and then returns Ostream for further info.
-        #ifndef __CINT__
         operator OSstream&();
-        #endif
 
         //- Explicitly convert to Ostream for << operations
-        //  needed in cint
         OSstream& operator()()
         {
             return operator OSstream&();
@@ -311,9 +308,7 @@ extern IOerror FatalIOError;
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-#ifndef __CINT__
 #include "errorManip.H"
-#endif
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
diff --git a/src/OpenFOAM/db/error/messageStream.H b/src/OpenFOAM/db/error/messageStream.H
index 20b04363276ef44c38d5314e644175bdca0a1668..d37f6a010c7c2f23accf7a329e01ad54a5a25640 100644
--- a/src/OpenFOAM/db/error/messageStream.H
+++ b/src/OpenFOAM/db/error/messageStream.H
@@ -182,12 +182,9 @@ public:
         );
 
         //- Convert to Ostream for << operations
-        #ifndef __CINT__
         operator OSstream&();
-        #endif
 
         //- Explicitly convert to Ostream for << operations
-        //  needed in cint
         OSstream& operator()()
         {
             return operator OSstream&();
diff --git a/src/OpenFOAM/db/functionObjects/OutputFilterFunctionObject/OutputFilterFunctionObject.H b/src/OpenFOAM/db/functionObjects/OutputFilterFunctionObject/OutputFilterFunctionObject.H
index 5ab4ebbecec37c35c8e76d5d1eb5653e0ed13fad..9ac00bd060f7d650f216ad162595af56ca7a31f6 100644
--- a/src/OpenFOAM/db/functionObjects/OutputFilterFunctionObject/OutputFilterFunctionObject.H
+++ b/src/OpenFOAM/db/functionObjects/OutputFilterFunctionObject/OutputFilterFunctionObject.H
@@ -63,17 +63,28 @@ class OutputFilterFunctionObject
 {
     // Private data
 
+        //- Output filter name
         word name_;
+
+        //- Reference to the time database
         const Time& time_;
+
+        //- Input dictionary
         dictionary dict_;
+
+        //- Name of region
         word regionName_;
+
+        //- Optional dictionary name to supply required inputs
         word dictName_;
 
         //- Switch for the execution of the functionObject
         bool enabled_;
 
+        //- Output controls
         outputFilterOutputControl outputControl_;
 
+        //- Pointer to the output filter
         autoPtr<OutputFilter> ptr_;
 
 
@@ -108,31 +119,78 @@ public:
 
     // Member Functions
 
-        //- Return name
-        virtual const word& name() const
-        {
-            return name_;
-        }
+        // Access
+
+            //- Return name
+            virtual const word& name() const
+            {
+                return name_;
+            }
+
+            //- Return time database
+            virtual const Time& time() const
+            {
+                return time_;
+            }
+
+            //- Return the input dictionary
+            virtual const dictionary& dict() const
+            {
+                return dict_;
+            }
+
+            //- Return the region name
+            virtual const word& regionName() const
+            {
+                return regionName_;
+            }
+
+            //- Return the optional dictionary name
+            virtual const word& dictName() const
+            {
+                return dictName_;
+            }
+
+            //- Return the enabled flag
+            virtual bool enabled() const
+            {
+                return enabled_;
+            }
+
+            //- Return the output control object
+            virtual const outputFilterOutputControl& outputControl() const
+            {
+                return outputControl_;
+            }
+
+            //- Return the output filter
+            virtual const OutputFilter& outputFilter() const
+            {
+                return ptr_();
+            }
+
+
+        // Function object control
 
-        //- Switch the function object on
-        virtual void on();
+            //- Switch the function object on
+            virtual void on();
 
-        //- Switch the function object off
-        virtual void off();
+            //- Switch the function object off
+            virtual void off();
 
 
-        //- Called at the start of the time-loop
-        virtual bool start();
+            //- Called at the start of the time-loop
+            virtual bool start();
 
-        //- Called at each ++ or += of the time-loop
-        virtual bool execute();
+            //- Called at each ++ or += of the time-loop
+            virtual bool execute();
 
-        //- Called when Time::run() determines that the time-loop exits
-        virtual bool end();
+            //- Called when Time::run() determines that the time-loop exits
+            virtual bool end();
 
 
-        //- Read and set the function object if its data have changed
-        virtual bool read(const dictionary&);
+            //- Read and set the function object if its data have changed
+            virtual bool read(const dictionary&);
 };
 
 
diff --git a/src/OpenFOAM/db/regIOobject/regIOobject.C b/src/OpenFOAM/db/regIOobject/regIOobject.C
index a5a5e8e1e3dfbe847b6d4b5667e8faaf8af5149a..6e2682e19902ce4bcc2beb16f6cbaa7aab357eea 100644
--- a/src/OpenFOAM/db/regIOobject/regIOobject.C
+++ b/src/OpenFOAM/db/regIOobject/regIOobject.C
@@ -134,14 +134,26 @@ bool Foam::regIOobject::checkIn()
         // any mapping
         registered_ = db().checkIn(*this);
 
-        // checkin on defaultRegion is allowed to fail, since subsetted meshes
+        // check-in on defaultRegion is allowed to fail, since subsetted meshes
         // are created with the same name as their originating mesh
         if (!registered_ && debug && name() != polyMesh::defaultRegion)
         {
-            WarningIn("regIOobject::checkIn()")
-                << "failed to register object " << objectPath()
+            if (debug == 2)
+            {
+                // for ease of finding where attempted duplicate check-in
+                // originated
+                FatalErrorIn("regIOobject::checkIn()")
+                    << "failed to register object " << objectPath()
                     << " the name already exists in the objectRegistry"
-                << endl;
+                    << abort(FatalError);
+            }
+            else
+            {
+                WarningIn("regIOobject::checkIn()")
+                    << "failed to register object " << objectPath()
+                    << " the name already exists in the objectRegistry"
+                    << endl;
+            }
         }
     }
 
diff --git a/src/OpenFOAM/dimensionedTypes/dimensionedType/dimensionedType.H b/src/OpenFOAM/dimensionedTypes/dimensionedType/dimensionedType.H
index 1ad252955a3e7430c78c7b0ff84c5f78beeffa9c..6817098a6cbb8ffd0960ce9f7f65c3421b8f04ce 100644
--- a/src/OpenFOAM/dimensionedTypes/dimensionedType/dimensionedType.H
+++ b/src/OpenFOAM/dimensionedTypes/dimensionedType/dimensionedType.H
@@ -174,16 +174,10 @@ public:
 
     // IOstream operators
 
-        friend Istream& operator>>
-        #ifndef __CINT__
-        <Type>
-        #endif
+        friend Istream& operator>> <Type>
         (Istream&, dimensioned<Type>&);
 
-        friend Ostream& operator<<
-        #ifndef __CINT__
-        <Type>
-        #endif
+        friend Ostream& operator<< <Type>
         (Ostream&, const dimensioned<Type>&);
 };
 
diff --git a/src/OpenFOAM/fields/DimensionedFields/DimensionedField/DimensionedField.H b/src/OpenFOAM/fields/DimensionedFields/DimensionedField/DimensionedField.H
index f9744fc4fd954de3eb38b35073b74bfd1f7d1c64..1d26e508a53093541135f65409ddd7a80a72b5be 100644
--- a/src/OpenFOAM/fields/DimensionedFields/DimensionedField/DimensionedField.H
+++ b/src/OpenFOAM/fields/DimensionedFields/DimensionedField/DimensionedField.H
@@ -217,9 +217,8 @@ public:
         tmp<DimensionedField<Type, GeoMesh> > clone() const;
 
 
-    // Destructor
-
-        ~DimensionedField();
+    //- Destructor
+    virtual ~DimensionedField();
 
 
     // Member Functions
diff --git a/src/OpenFOAM/fields/Fields/DynamicField/DynamicField.C b/src/OpenFOAM/fields/Fields/DynamicField/DynamicField.C
new file mode 100644
index 0000000000000000000000000000000000000000..783581f5c5727429db49881491c64a4978a6ad15
--- /dev/null
+++ b/src/OpenFOAM/fields/Fields/DynamicField/DynamicField.C
@@ -0,0 +1,112 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "DynamicField.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+// * * * * * * * * * * * * * * * Static Members  * * * * * * * * * * * * * * //
+
+template<class Type>
+const char* const DynamicField<Type>::typeName("DynamicField");
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template<class Type>
+DynamicField<Type>::DynamicField(Istream& is)
+:
+    Field<Type>(is),
+    capacity_(Field<Type>::size())
+{}
+
+
+template<class Type>
+tmp<DynamicField<Type> > DynamicField<Type>::clone() const
+{
+    return tmp<DynamicField<Type> >(new DynamicField<Type>(*this));
+}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+template<class Type>
+void DynamicField<Type>::setSize(const label nElem)
+{
+    // allocate more capacity?
+    if (nElem > capacity_)
+    {
+        capacity_ = max(nElem, label(1 + capacity_*2));
+
+        Field<Type>::setSize(capacity_);
+    }
+
+    // adjust addressed size
+    Field<Type>::size(nElem);
+}
+
+
+// * * * * * * * * * * * * * * * Member Operators  * * * * * * * * * * * * * //
+
+
+// * * * * * * * * * * * * * * * IOstream Operator * * * * * * * * * * * * * //
+
+template<class Type>
+Ostream& operator<<(Ostream& os, const DynamicField<Type>& f)
+{
+    os << static_cast<const Field<Type>&>(f);
+    return os;
+}
+
+
+template<class Type>
+Ostream& operator<<(Ostream& os, const tmp<DynamicField<Type> >& tf)
+{
+    os << tf();
+    tf.clear();
+    return os;
+}
+
+
+template<class Type>
+Istream& operator>>(Istream& is, DynamicField<Type>& lst)
+{
+    is >> static_cast<Field<Type>&>(lst);
+    lst.capacity_ = lst.Field<Type>::size();
+
+    return is;
+}
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+
+// ************************************************************************* //
diff --git a/src/OpenFOAM/fields/Fields/DynamicField/DynamicField.H b/src/OpenFOAM/fields/Fields/DynamicField/DynamicField.H
new file mode 100644
index 0000000000000000000000000000000000000000..1b9915d5730da34d75fca1c2680911217c1fd1cb
--- /dev/null
+++ b/src/OpenFOAM/fields/Fields/DynamicField/DynamicField.H
@@ -0,0 +1,215 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::DynamicField
+
+Description
+    Dynamically sized Field. WIP.
+
+SourceFiles
+    DynamicField.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef DynamicField_H
+#define DynamicField_H
+
+#include "Field.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+// Forward declaration of friend functions and operators
+
+template<class Type>
+class DynamicField;
+
+template<class Type>
+Ostream& operator<<(Ostream&, const DynamicField<Type>&);
+
+template<class Type>
+Ostream& operator<<(Ostream&, const tmp<DynamicField<Type> >&);
+
+template<class Type>
+Istream& operator>>(Istream&, DynamicField<Type>&);
+
+
+/*---------------------------------------------------------------------------*\
+                           Class DynamicField Declaration
+\*---------------------------------------------------------------------------*/
+
+template<class Type>
+class DynamicField
+:
+    public Field<Type>
+{
+
+    // Private data
+
+        //- The capacity (allocated size) of the underlying field.
+        label capacity_;
+
+
+        //- Construct given size and initial value
+        DynamicField(const label, const Type&);
+
+        //- Construct as copy of tmp<DynamicField>
+#       ifdef ConstructFromTmp
+        DynamicField(const tmp<DynamicField<Type> >&);
+#       endif
+
+        //- Construct from a dictionary entry
+        DynamicField(const word&, const dictionary&, const label);
+
+public:
+
+    // Static data members
+
+        static const char* const typeName;
+
+
+    // Static Member Functions
+
+        //- Return a null field
+        inline static const DynamicField<Type>& null()
+        {
+            return *reinterpret_cast< DynamicField<Type>* >(0);
+        }
+
+
+    // Constructors
+
+        //- Construct null
+        //  Used for temporary fields which are initialised after construction
+        DynamicField();
+
+        //- Construct given size
+        //  Used for temporary fields which are initialised after construction
+        explicit inline DynamicField(const label);
+
+        //- Construct as copy of a UList\<Type\>
+        explicit inline DynamicField(const UList<Type>&);
+
+        //- Construct by transferring the List contents
+        explicit inline DynamicField(const Xfer<List<Type> >&);
+
+        //- Construct by 1 to 1 mapping from the given field
+        inline DynamicField
+        (
+            const UList<Type>& mapF,
+            const labelList& mapAddressing
+        );
+
+        //- Construct by interpolative mapping from the given field
+        inline DynamicField
+        (
+            const UList<Type>& mapF,
+            const labelListList& mapAddressing,
+            const scalarListList& weights
+        );
+
+        //- Construct by mapping from the given field
+        inline DynamicField
+        (
+            const UList<Type>& mapF,
+            const FieldMapper& map
+        );
+
+        //- Construct as copy
+        inline DynamicField(const DynamicField<Type>&);
+
+        //- Construct as copy or re-use as specified.
+        inline DynamicField(DynamicField<Type>&, bool reUse);
+
+        //- Construct by transferring the Field contents
+        inline DynamicField(const Xfer<DynamicField<Type> >&);
+
+        //- Construct from Istream
+        inline DynamicField(Istream&);
+
+        //- Clone
+        tmp<DynamicField<Type> > clone() const;
+
+
+    // Member Functions
+
+        //- Size of the underlying storage.
+        inline label capacity() const;
+
+        //- Append an element at the end of the list
+        inline void append(const Type&);
+
+        //- Alter the addressed list size.
+        //  New space will be allocated if required.
+        //  Use this to resize the list prior to using the operator[] for
+        //  setting values (as per List usage).
+        void setSize(const label nElem);
+
+    // Member operators
+
+        inline void operator=(const DynamicField<Type>&);
+        inline void operator=(const UList<Type>&);
+        inline void operator=(const tmp<DynamicField<Type> >&);
+
+        //- Return element of Field.
+        inline Type& operator[](const label i);
+
+        //- Return element of constant Field.
+        inline const Type& operator[](const label) const;
+
+    // IOstream operators
+
+        friend Ostream& operator<< <Type>
+        (Ostream&, const DynamicField<Type>&);
+
+        friend Ostream& operator<< <Type>
+        (Ostream&, const tmp<DynamicField<Type> >&);
+
+        friend Istream& operator>> <Type>
+        (Istream&, DynamicField<Type>&);
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "DynamicFieldI.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#ifdef NoRepository
+#   include "DynamicField.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/OpenFOAM/fields/Fields/DynamicField/DynamicFieldI.H b/src/OpenFOAM/fields/Fields/DynamicField/DynamicFieldI.H
new file mode 100644
index 0000000000000000000000000000000000000000..8680fbff25a1a81c3562d44f3944cb3f429a95d0
--- /dev/null
+++ b/src/OpenFOAM/fields/Fields/DynamicField/DynamicFieldI.H
@@ -0,0 +1,221 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "DynamicField.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template<class Type>
+DynamicField<Type>::DynamicField()
+:
+    Field<Type>(),
+    capacity_(0)
+{}
+
+
+template<class Type>
+DynamicField<Type>::DynamicField(const label size)
+:
+    Field<Type>(size),
+    capacity_(Field<Type>::size())
+{
+    Field<Type>::size(0);
+}
+
+
+template<class Type>
+inline Foam::DynamicField<Type>::DynamicField
+(
+    const UList<Type>& lst
+)
+:
+    Field<Type>(lst),
+    capacity_(Field<Type>::size())
+{}
+
+
+template<class Type>
+inline Foam::DynamicField<Type>::DynamicField
+(
+    const Xfer<List<Type> >& lst
+)
+:
+    Field<Type>(lst),
+    capacity_(Field<Type>::size())
+{}
+
+
+template<class Type>
+DynamicField<Type>::DynamicField
+(
+    const UList<Type>& mapF,
+    const labelList& mapAddressing
+)
+:
+    Field<Type>(mapF, mapAddressing),
+    capacity_(Field<Type>::size())
+{}
+
+
+template<class Type>
+DynamicField<Type>::DynamicField
+(
+    const UList<Type>& mapF,
+    const labelListList& mapAddressing,
+    const scalarListList& weights
+)
+:
+    Field<Type>(mapF, mapAddressing, weights),
+    capacity_(Field<Type>::size())
+{}
+
+
+//- Construct by mapping from the given field
+template<class Type>
+DynamicField<Type>::DynamicField
+(
+    const UList<Type>& mapF,
+    const FieldMapper& map
+)
+:
+    DynamicField<Type>(mapF, map),
+    capacity_(Field<Type>::size())
+{}
+
+
+template<class Type>
+DynamicField<Type>::DynamicField(const DynamicField<Type>& f)
+:
+    Field<Type>(f),
+    capacity_(Field<Type>::size())
+{}
+
+
+template<class Type>
+DynamicField<Type>::DynamicField(DynamicField<Type>& f, bool reUse)
+:
+    Field<Type>(f, reUse),
+    capacity_(Field<Type>::size())
+{}
+
+
+template<class Type>
+DynamicField<Type>::DynamicField(const Xfer<DynamicField<Type> >& f)
+:
+    Field<Type>(f),
+    capacity_(Field<Type>::size())
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+template<class Type>
+Foam::label DynamicField<Type>::capacity() const
+{
+    return capacity_;
+}
+
+
+template<class Type>
+void DynamicField<Type>::append(const Type& t)
+{
+    label elemI = Field<Type>::size();
+    setSize(elemI + 1);
+
+    this->operator[](elemI) = t;
+}
+
+
+// * * * * * * * * * * * * * * * Member Operators  * * * * * * * * * * * * * //
+
+template<class Type>
+void DynamicField<Type>::operator=(const DynamicField<Type>& rhs)
+{
+    if (this == &rhs)
+    {
+        FatalErrorIn("DynamicField<Type>::operator=(const DynamicField<Type>&)")
+            << "attempted assignment to self"
+            << abort(FatalError);
+    }
+
+    Field<Type>::operator=(rhs);
+    capacity_ = Field<Type>::size();
+}
+
+
+template<class Type>
+void DynamicField<Type>::operator=(const UList<Type>& rhs)
+{
+    Field<Type>::operator=(rhs);
+    capacity_ = Field<Type>::size();
+}
+
+
+template<class Type>
+void DynamicField<Type>::operator=(const tmp<DynamicField>& rhs)
+{
+    if (this == &(rhs()))
+    {
+        FatalErrorIn("DynamicField<Type>::operator=(const tmp<DynamicField>&)")
+            << "attempted assignment to self"
+            << abort(FatalError);
+    }
+
+    // This is dodgy stuff, don't try it at home.
+    DynamicField* fieldPtr = rhs.ptr();
+    List<Type>::transfer(*fieldPtr);
+    delete fieldPtr;
+    capacity_ = Field<Type>::size();
+}
+
+
+template<class Type>
+Type& DynamicField<Type>::operator[](const label i)
+{
+    return Field<Type>::operator[](i);
+}
+
+
+template<class Type>
+const Type& DynamicField<Type>::operator[](const label i) const
+{
+    return Field<Type>::operator[](i);
+}
+
+
+// * * * * * * * * * * * * * * * IOstream Operator * * * * * * * * * * * * * //
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// ************************************************************************* //
diff --git a/src/OpenFOAM/fields/Fields/Field/Field.H b/src/OpenFOAM/fields/Fields/Field/Field.H
index e56e4633713df00768e640c2db83283368f87e73..98e664ec8d5a503fb0ea98802fe0ab54dc8414f4 100644
--- a/src/OpenFOAM/fields/Fields/Field/Field.H
+++ b/src/OpenFOAM/fields/Fields/Field/Field.H
@@ -75,8 +75,6 @@ class dictionary;
                            Class Field Declaration
 \*---------------------------------------------------------------------------*/
 
-#include "CintDefs.H"
-
 template<class Type>
 class Field
 :
@@ -198,13 +196,11 @@ public:
 
         //- Return a pointer to a new calculatedFvPatchFieldField created on
         //  freestore without setting patchField values
-        #ifndef __CINT__
         template<class Type2>
         static tmp<Field<Type> > NewCalculatedType(const Field<Type2>& f)
         {
             return tmp<Field<Type> >(new Field<Type>(f.size()));
         }
-        #endif
 
 
     // Member Functions
@@ -343,20 +339,13 @@ public:
 
     // IOstream operators
 
-        friend Ostream& operator<<
-        #ifndef __CINT__
-        <Type>
-        #endif
+        friend Ostream& operator<< <Type>
         (Ostream&, const Field<Type>&);
 
-        friend Ostream& operator<<
-        #ifndef __CINT__
-        <Type>
-        #endif
+        friend Ostream& operator<< <Type>
         (Ostream&, const tmp<Field<Type> >&);
 };
 
-#include "CintUndefs.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
diff --git a/src/OpenFOAM/fields/Fields/symmTransformField/symmTransformField.C b/src/OpenFOAM/fields/Fields/symmTransformField/symmTransformField.C
index 67cb86e1935460040eb44360e4d0fabb38769ccb..db24d88042d79969d4d7bbf2032387b2145dae16 100644
--- a/src/OpenFOAM/fields/Fields/symmTransformField/symmTransformField.C
+++ b/src/OpenFOAM/fields/Fields/symmTransformField/symmTransformField.C
@@ -50,7 +50,7 @@ void transform
     {
         TFOR_ALL_F_OP_FUNC_F_F
         (
-            Type, rtf, =, transform, tensor, trf, Type, tf
+            Type, rtf, =, transform, symmTensor, trf, Type, tf
         )
     }
 }
diff --git a/src/OpenFOAM/fields/cloud/cloud.H b/src/OpenFOAM/fields/cloud/cloud.H
index 0c0915464edfb6f92a00958fb473f0d9c7620e00..d48e5dffbb579ead329d8a069a951f3dfc6ac438 100644
--- a/src/OpenFOAM/fields/cloud/cloud.H
+++ b/src/OpenFOAM/fields/cloud/cloud.H
@@ -75,15 +75,15 @@ public:
         //- The default cloud name: %defaultCloud
         static word defaultName;
 
+
     // Constructors
 
         //- Construct for the given objectRegistry and named cloud instance
         cloud(const objectRegistry&, const word& cloudName = "");
 
 
-    // Destructor
-
-        virtual ~cloud();
+    //- Destructor
+    virtual ~cloud();
 
 
     // Member Functions
diff --git a/src/OpenFOAM/global/argList/argList.C b/src/OpenFOAM/global/argList/argList.C
index 4a45b56f4516358e835530e8d81ae4c60ac22f6f..707d68b88f49a87f9a378c73228b2d8d9b429513 100644
--- a/src/OpenFOAM/global/argList/argList.C
+++ b/src/OpenFOAM/global/argList/argList.C
@@ -298,6 +298,7 @@ Foam::argList::argList
     jobInfo.add("startTime", timeString);
     jobInfo.add("userName", userName());
     jobInfo.add("foamVersion", word(FOAMversion));
+    jobInfo.add("foamBuild", Foam::FOAMbuild);
     jobInfo.add("code", executable_);
     jobInfo.add("argList", argListString);
     jobInfo.add("currentDir", cwd());
@@ -526,10 +527,10 @@ Foam::argList::argList
 
     // Switch on signal trapping. We have to wait until after Pstream::init
     // since this sets up its own ones.
-    sigFpe_.set();
-    sigInt_.set();
-    sigQuit_.set();
-    sigSegv_.set();
+    sigFpe_.set(bannerEnabled);
+    sigInt_.set(bannerEnabled);
+    sigQuit_.set(bannerEnabled);
+    sigSegv_.set(bannerEnabled);
 
     if (Pstream::master() && bannerEnabled)
     {
diff --git a/src/OpenFOAM/include/CintDefs.H b/src/OpenFOAM/include/CintDefs.H
deleted file mode 100644
index 90e1f62a2f1a2cd098a4b8ecac448273cbae4635..0000000000000000000000000000000000000000
--- a/src/OpenFOAM/include/CintDefs.H
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifdef __CINT__
-# define tmp Foam::tmp
-# define UList Foam::UList
-# define List Foam::List
-# define InfoProxy Foam::InfoProxy
-#endif
diff --git a/src/OpenFOAM/include/CintUndefs.H b/src/OpenFOAM/include/CintUndefs.H
deleted file mode 100644
index 6b0b69e99ceba4cca1744c51d733c6b685329344..0000000000000000000000000000000000000000
--- a/src/OpenFOAM/include/CintUndefs.H
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifdef __CINT__
-# undef tmp
-# undef UList
-# undef List
-# undef InfoProxy
-#endif
diff --git a/src/OpenFOAM/matrices/lduMatrix/lduMatrix/lduMatrixATmul.C b/src/OpenFOAM/matrices/lduMatrix/lduMatrix/lduMatrixATmul.C
index 05958edf68ad060e63c51e8f078656fbbb82a5e6..cb376fde10c28ba807da0541cac76140a3043e8e 100644
--- a/src/OpenFOAM/matrices/lduMatrix/lduMatrix/lduMatrixATmul.C
+++ b/src/OpenFOAM/matrices/lduMatrix/lduMatrix/lduMatrixATmul.C
@@ -67,38 +67,15 @@ void Foam::lduMatrix::Amul
     register const label nCells = diag().size();
     for (register label cell=0; cell<nCells; cell++)
     {
-        #ifdef ICC_IA64_PREFETCH
-        __builtin_prefetch (&psiPtr[cell+96],0,1);
-        __builtin_prefetch (&diagPtr[cell+96],0,1);
-        __builtin_prefetch (&ApsiPtr[cell+96],1,1);
-        #endif
-
         ApsiPtr[cell] = diagPtr[cell]*psiPtr[cell];
     }
 
 
     register const label nFaces = upper().size();
-    #ifdef ICC_IA64_PREFETCH
-    #pragma swp
-    #endif
+
     for (register label face=0; face<nFaces; face++)
     {
-        #ifdef ICC_IA64_PREFETCH
-        __builtin_prefetch (&uPtr[face+32],0,0);
-        __builtin_prefetch (&lPtr[face+32],0,0);
-        __builtin_prefetch (&lowerPtr[face+32],0,1);
-        __builtin_prefetch (&psiPtr[lPtr[face+32]],0,1);
-        __builtin_prefetch (&ApsiPtr[uPtr[face+32]],0,1);
-        #endif
-
         ApsiPtr[uPtr[face]] += lowerPtr[face]*psiPtr[lPtr[face]];
-
-        #ifdef ICC_IA64_PREFETCH
-        __builtin_prefetch (&upperPtr[face+32],0,1);
-        __builtin_prefetch (&psiPtr[uPtr[face+32]],0,1);
-        __builtin_prefetch (&ApsiPtr[lPtr[face+32]],0,1);
-        #endif
-
         ApsiPtr[lPtr[face]] += upperPtr[face]*psiPtr[uPtr[face]];
     }
 
@@ -151,34 +128,13 @@ void Foam::lduMatrix::Tmul
     register const label nCells = diag().size();
     for (register label cell=0; cell<nCells; cell++)
     {
-        #ifdef ICC_IA64_PREFETCH
-        __builtin_prefetch (&psiPtr[cell+96],0,1);
-        __builtin_prefetch (&diagPtr[cell+96],0,1);
-        __builtin_prefetch (&TpsiPtr[cell+96],1,1);
-        #endif
-
         TpsiPtr[cell] = diagPtr[cell]*psiPtr[cell];
     }
 
     register const label nFaces = upper().size();
     for (register label face=0; face<nFaces; face++)
     {
-        #ifdef ICC_IA64_PREFETCH
-        __builtin_prefetch (&uPtr[face+32],0,0);
-        __builtin_prefetch (&lPtr[face+32],0,0);
-        __builtin_prefetch (&upperPtr[face+32],0,1);
-        __builtin_prefetch (&psiPtr[lPtr[face+32]],0,1);
-        __builtin_prefetch (&TpsiPtr[uPtr[face+32]],0,1);
-        #endif
-
         TpsiPtr[uPtr[face]] += upperPtr[face]*psiPtr[lPtr[face]];
-
-        #ifdef ICC_IA64_PREFETCH
-        __builtin_prefetch (&lowerPtr[face+32],0,1);
-        __builtin_prefetch (&psiPtr[uPtr[face+32]],0,1);
-        __builtin_prefetch (&TpsiPtr[lPtr[face+32]],0,1);
-        #endif
-
         TpsiPtr[lPtr[face]] += lowerPtr[face]*psiPtr[uPtr[face]];
     }
 
@@ -218,34 +174,12 @@ void Foam::lduMatrix::sumA
 
     for (register label cell=0; cell<nCells; cell++)
     {
-        #ifdef ICC_IA64_PREFETCH
-        __builtin_prefetch (&diagPtr[cell+96],0,1);
-        __builtin_prefetch (&sumAPtr[cell+96],1,1);
-        #endif
-
         sumAPtr[cell] = diagPtr[cell];
     }
 
-    #ifdef ICC_IA64_PREFETCH
-    #pragma swp
-    #endif
-
     for (register label face=0; face<nFaces; face++)
     {
-        #ifdef ICC_IA64_PREFETCH
-        __builtin_prefetch (&uPtr[face+32],0,0);
-        __builtin_prefetch (&lPtr[face+32],0,0);
-        __builtin_prefetch (&lowerPtr[face+32],0,1);
-        __builtin_prefetch (&sumAPtr[uPtr[face+32]],0,1);
-        #endif
-
         sumAPtr[uPtr[face]] += lowerPtr[face];
-
-        #ifdef ICC_IA64_PREFETCH
-        __builtin_prefetch (&upperPtr[face+32],0,1);
-        __builtin_prefetch (&sumAPtr[lPtr[face+32]],0,1);
-        #endif
-
         sumAPtr[lPtr[face]] += upperPtr[face];
     }
 
@@ -323,39 +257,15 @@ void Foam::lduMatrix::residual
     register const label nCells = diag().size();
     for (register label cell=0; cell<nCells; cell++)
     {
-        #ifdef ICC_IA64_PREFETCH
-        __builtin_prefetch (&psiPtr[cell+96],0,1);
-        __builtin_prefetch (&diagPtr[cell+96],0,1);
-        __builtin_prefetch (&sourcePtr[cell+96],0,1);
-        __builtin_prefetch (&rAPtr[cell+96],1,1);
-        #endif
-
         rAPtr[cell] = sourcePtr[cell] - diagPtr[cell]*psiPtr[cell];
     }
 
 
     register const label nFaces = upper().size();
-    #ifdef ICC_IA64_PREFETCH
-    #pragma swp
-    #endif
+
     for (register label face=0; face<nFaces; face++)
     {
-        #ifdef ICC_IA64_PREFETCH
-        __builtin_prefetch (&uPtr[face+32],0,0);
-        __builtin_prefetch (&lPtr[face+32],0,0);
-        __builtin_prefetch (&lowerPtr[face+32],0,1);
-        __builtin_prefetch (&psiPtr[lPtr[face+32]],0,1);
-        __builtin_prefetch (&rAPtr[uPtr[face+32]],0,1);
-        #endif
-
         rAPtr[uPtr[face]] -= lowerPtr[face]*psiPtr[lPtr[face]];
-
-        #ifdef ICC_IA64_PREFETCH
-        __builtin_prefetch (&upperPtr[face+32],0,1);
-        __builtin_prefetch (&psiPtr[uPtr[face+32]],0,1);
-        __builtin_prefetch (&rAPtr[lPtr[face+32]],0,1);
-        #endif
-
         rAPtr[lPtr[face]] -= upperPtr[face]*psiPtr[uPtr[face]];
     }
 
diff --git a/src/OpenFOAM/matrices/lduMatrix/lduMatrix/lduMatrixOperations.C b/src/OpenFOAM/matrices/lduMatrix/lduMatrix/lduMatrixOperations.C
index 6766e0ec803c065050bff3149c59f5c085a76fc6..9c898f2d9ea008666028023b17147a2aaaee3892 100644
--- a/src/OpenFOAM/matrices/lduMatrix/lduMatrix/lduMatrixOperations.C
+++ b/src/OpenFOAM/matrices/lduMatrix/lduMatrix/lduMatrixOperations.C
@@ -353,20 +353,7 @@ Foam::tmp<Foam::scalarField > Foam::lduMatrix::H1() const
 
         for (register label face=0; face<nFaces; face++)
         {
-            #ifdef ICC_IA64_PREFETCH
-            __builtin_prefetch (&uPtr[face+32],0,0);
-            __builtin_prefetch (&lPtr[face+32],0,0);
-            __builtin_prefetch (&lowerPtr[face+32],0,1);
-            __builtin_prefetch (&H1Ptr[uPtr[face+32]],0,1);
-            #endif
-
             H1Ptr[uPtr[face]] -= lowerPtr[face];
-        
-            #ifdef ICC_IA64_PREFETCH
-            __builtin_prefetch (&upperPtr[face+32],0,1);
-            __builtin_prefetch (&H1Ptr[lPtr[face+32]],0,1);
-                #endif
-
             H1Ptr[lPtr[face]] -= upperPtr[face];
         }
     }
diff --git a/src/OpenFOAM/matrices/lduMatrix/preconditioners/DICPreconditioner/DICPreconditioner.C b/src/OpenFOAM/matrices/lduMatrix/preconditioners/DICPreconditioner/DICPreconditioner.C
index dbf5b31f2a7ec91cdcea2ff1741d994584fda43b..f6fc7ab87f1f086ddd1f8e4997b5f238d3fc4605 100644
--- a/src/OpenFOAM/matrices/lduMatrix/preconditioners/DICPreconditioner/DICPreconditioner.C
+++ b/src/OpenFOAM/matrices/lduMatrix/preconditioners/DICPreconditioner/DICPreconditioner.C
@@ -71,29 +71,15 @@ void Foam::DICPreconditioner::calcReciprocalD
     register const label nFaces = matrix.upper().size();
     for (register label face=0; face<nFaces; face++)
     {
-        #ifdef ICC_IA64_PREFETCH
-        __builtin_prefetch (&uPtr[face+96],0,0);
-        __builtin_prefetch (&lPtr[face+96],0,0);
-        __builtin_prefetch (&upperPtr[face+96],0,1);
-        __builtin_prefetch (&rDPtr[lPtr[face+24]],0,1);
-        __builtin_prefetch (&rDPtr[uPtr[face+24]],1,1);
-        #endif
-
         rDPtr[uPtr[face]] -= upperPtr[face]*upperPtr[face]/rDPtr[lPtr[face]];
     }
 
 
     // Calculate the reciprocal of the preconditioned diagonal
     register const label nCells = rD.size();
-    #ifdef ICC_IA64_PREFETCH
-    #pragma ivdep
-    #endif
+
     for (register label cell=0; cell<nCells; cell++)
     {
-        #ifdef ICC_IA64_PREFETCH
-        __builtin_prefetch (&rDPtr[cell+96],0,1);
-        #endif
-
         rDPtr[cell] = 1.0/rDPtr[cell];
     }
 }
@@ -120,61 +106,18 @@ void Foam::DICPreconditioner::precondition
     register label nFaces = solver_.matrix().upper().size();
     register label nFacesM1 = nFaces - 1;
 
-    #ifdef ICC_IA64_PREFETCH
-    #pragma ivdep
-    #endif
-
     for (register label cell=0; cell<nCells; cell++)
     {
-        #ifdef ICC_IA64_PREFETCH
-        __builtin_prefetch (&wAPtr[cell+96],0,1);
-        __builtin_prefetch (&rDPtr[cell+96],0,1);
-        __builtin_prefetch (&rAPtr[cell+96],0,1);
-        #endif
-
         wAPtr[cell] = rDPtr[cell]*rAPtr[cell];
     }
 
-    #ifdef ICC_IA64_PREFETCH
-    #pragma noprefetch uPtr,lPtr,upperPtr,rDPtr,wAPtr
-    #pragma nounroll
-    #endif
-
     for (register label face=0; face<nFaces; face++)
     {
-        #ifdef ICC_IA64_PREFETCH
-        __builtin_prefetch (&uPtr[face+96],0,0);
-        __builtin_prefetch (&lPtr[face+96],0,0);
-        __builtin_prefetch (&upperPtr[face+96],0,0);
-        __builtin_prefetch (&rDPtr[uPtr[face+32]],0,1);
-        __builtin_prefetch (&wAPtr[uPtr[face+32]],0,1); 
-        __builtin_prefetch (&wAPtr[lPtr[face+32]],0,1);
-        #endif
-
         wAPtr[uPtr[face]] -= rDPtr[uPtr[face]]*upperPtr[face]*wAPtr[lPtr[face]];
     }
 
-    #ifdef ICC_IA64_PREFETCH
-    #pragma noprefetch uPtr,lPtr,rDPtr,wAPtr
-    #pragma nounroll
-    #endif
-
     for (register label face=nFacesM1; face>=0; face--)
     {
-        #ifdef ICC_IA64_PREFETCH
-        __builtin_prefetch (&uPtr[face-95],0,0);
-        __builtin_prefetch (&lPtr[face-95],0,0);
-        __builtin_prefetch (&rDPtr[lPtr[face-16]],0,1);
-        __builtin_prefetch (&wAPtr[lPtr[face-16]],0,1);
-        __builtin_prefetch (&wAPtr[uPtr[face-16]],0,1);
-        __builtin_prefetch (&rDPtr[lPtr[face-24]],0,1);
-        __builtin_prefetch (&wAPtr[lPtr[face-24]],0,1);
-        __builtin_prefetch (&wAPtr[uPtr[face-24]],0,1);
-        __builtin_prefetch (&rDPtr[lPtr[face-32]],0,1);
-        __builtin_prefetch (&wAPtr[lPtr[face-32]],0,1);
-        __builtin_prefetch (&wAPtr[uPtr[face-32]],0,1);
-        #endif
-
         wAPtr[lPtr[face]] -= rDPtr[lPtr[face]]*upperPtr[face]*wAPtr[uPtr[face]];
     }
 }
diff --git a/src/OpenFOAM/matrices/lduMatrix/preconditioners/DILUPreconditioner/DILUPreconditioner.C b/src/OpenFOAM/matrices/lduMatrix/preconditioners/DILUPreconditioner/DILUPreconditioner.C
index 5193acb5eb192f21b0f78f848ead3846fa6a2e3f..4fdebcd9c58a6c68402645a8e413577e9ad10c86 100644
--- a/src/OpenFOAM/matrices/lduMatrix/preconditioners/DILUPreconditioner/DILUPreconditioner.C
+++ b/src/OpenFOAM/matrices/lduMatrix/preconditioners/DILUPreconditioner/DILUPreconditioner.C
@@ -72,30 +72,15 @@ void Foam::DILUPreconditioner::calcReciprocalD
     register label nFaces = matrix.upper().size();
     for (register label face=0; face<nFaces; face++)
     {
-        #ifdef ICC_IA64_PREFETCH
-        __builtin_prefetch (&uPtr[face+96],0,0);
-        __builtin_prefetch (&lPtr[face+96],0,0);
-        __builtin_prefetch (&upperPtr[face+96],0,1);
-        __builtin_prefetch (&lowerPtr[face+96],0,1);
-        __builtin_prefetch (&rDPtr[lPtr[face+24]],0,1);
-        __builtin_prefetch (&rDPtr[uPtr[face+24]],1,1);
-        #endif
-
         rDPtr[uPtr[face]] -= upperPtr[face]*lowerPtr[face]/rDPtr[lPtr[face]];
     }
 
 
     // Calculate the reciprocal of the preconditioned diagonal
     register label nCells = rD.size();
-    #ifdef ICC_IA64_PREFETCH
-    #pragma ivdep
-    #endif
+
     for (register label cell=0; cell<nCells; cell++)
     {
-        #ifdef ICC_IA64_PREFETCH
-        __builtin_prefetch (&rDPtr[cell+96],0,1);
-        #endif
-
         rDPtr[cell] = 1.0/rDPtr[cell];
     }
 }
@@ -128,26 +113,14 @@ void Foam::DILUPreconditioner::precondition
     register label nFaces = solver_.matrix().upper().size();
     register label nFacesM1 = nFaces - 1;
 
-    #ifdef ICC_IA64_PREFETCH
-    #pragma ivdep
-    #endif
-
     for (register label cell=0; cell<nCells; cell++)
     {
-        #ifdef ICC_IA64_PREFETCH
-        __builtin_prefetch (&wAPtr[cell+96],0,1);
-        __builtin_prefetch (&rDPtr[cell+96],0,1);
-        __builtin_prefetch (&rAPtr[cell+96],0,1);
-        #endif
-
         wAPtr[cell] = rDPtr[cell]*rAPtr[cell];
     }
 
 
     register label sface;
-    #ifdef ICC_IA64_PREFETCH
-    #pragma nounroll
-    #endif
+
     for (register label face=0; face<nFaces; face++)
     {
         sface = losortPtr[face];
@@ -155,28 +128,8 @@ void Foam::DILUPreconditioner::precondition
             rDPtr[uPtr[sface]]*lowerPtr[sface]*wAPtr[lPtr[sface]];
     }
 
-    #ifdef ICC_IA64_PREFETCH
-    #pragma noprefetch uPtr,lPtr,rDPtr,wAPtr
-    #pragma nounroll
-    #endif
-
     for (register label face=nFacesM1; face>=0; face--)
     {
-        #ifdef ICC_IA64_PREFETCH
-        __builtin_prefetch (&uPtr[face-95],0,0);
-        __builtin_prefetch (&lPtr[face-95],0,0);
-        __builtin_prefetch (&upperPtr[face-95],0,1);
-        __builtin_prefetch (&rDPtr[lPtr[face-16]],0,1);
-        __builtin_prefetch (&wAPtr[lPtr[face-16]],0,1);
-        __builtin_prefetch (&wAPtr[uPtr[face-16]],0,1);
-        __builtin_prefetch (&rDPtr[lPtr[face-24]],0,1);
-        __builtin_prefetch (&wAPtr[lPtr[face-24]],0,1);
-        __builtin_prefetch (&wAPtr[uPtr[face-24]],0,1);
-        __builtin_prefetch (&rDPtr[lPtr[face-32]],0,1);
-        __builtin_prefetch (&wAPtr[lPtr[face-32]],0,1);
-        __builtin_prefetch (&wAPtr[uPtr[face-32]],0,1);
-        #endif
-
         wAPtr[lPtr[face]] -=
             rDPtr[lPtr[face]]*upperPtr[face]*wAPtr[uPtr[face]];
     }
@@ -210,46 +163,20 @@ void Foam::DILUPreconditioner::preconditionT
     register label nFaces = solver_.matrix().upper().size();
     register label nFacesM1 = nFaces - 1;
 
-    #ifdef ICC_IA64_PREFETCH
-    #pragma ivdep
-    #endif
-
     for (register label cell=0; cell<nCells; cell++)
     {
-        #ifdef ICC_IA64_PREFETCH
-        __builtin_prefetch (&wTPtr[cell+96],0,1);
-        __builtin_prefetch (&rDPtr[cell+96],0,1);
-        __builtin_prefetch (&rTPtr[cell+96],0,1);
-        #endif
-
         wTPtr[cell] = rDPtr[cell]*rTPtr[cell];
     }
 
-    #ifdef ICC_IA64_PREFETCH
-    #pragma noprefetch uPtr,lPtr,upperPtr,rDPtr,wTPtr
-    #pragma nounroll
-    #endif
-
     for (register label face=0; face<nFaces; face++)
     {
-        #ifdef ICC_IA64_PREFETCH
-        __builtin_prefetch (&uPtr[face+96],0,0);
-        __builtin_prefetch (&lPtr[face+96],0,0);
-        __builtin_prefetch (&upperPtr[face+96],0,1);
-        __builtin_prefetch (&rDPtr[uPtr[face+32]],0,1);
-        __builtin_prefetch (&wTPtr[lPtr[face+32]],0,1);
-        __builtin_prefetch (&wTPtr[uPtr[face+32]],0,1);
-        #endif
-
         wTPtr[uPtr[face]] -=
             rDPtr[uPtr[face]]*upperPtr[face]*wTPtr[lPtr[face]];
     }
 
 
     register label sface;
-    #ifdef ICC_IA64_PREFETCH
-    #pragma nounroll
-    #endif
+
     for (register label face=nFacesM1; face>=0; face--)
     {
         sface = losortPtr[face];
diff --git a/src/OpenFOAM/matrices/lduMatrix/preconditioners/FDICPreconditioner/FDICPreconditioner.C b/src/OpenFOAM/matrices/lduMatrix/preconditioners/FDICPreconditioner/FDICPreconditioner.C
index 9b17ef902d1cd7cd31ac6637bc70470112253361..db4a51c4b7f6a204b75545b0eb1ab6c845513396 100644
--- a/src/OpenFOAM/matrices/lduMatrix/preconditioners/FDICPreconditioner/FDICPreconditioner.C
+++ b/src/OpenFOAM/matrices/lduMatrix/preconditioners/FDICPreconditioner/FDICPreconditioner.C
@@ -66,47 +66,17 @@ Foam::FDICPreconditioner::FDICPreconditioner
 
     for (register label face=0; face<nFaces; face++)
     {
-        #ifdef ICC_IA64_PREFETCH
-        __builtin_prefetch (&uPtr[face+96],0,0);
-        __builtin_prefetch (&lPtr[face+96],0,0);
-        __builtin_prefetch (&upperPtr[face+96],0,1);
-        __builtin_prefetch (&rDPtr[lPtr[face+24]],0,1);
-        __builtin_prefetch (&rDPtr[uPtr[face+24]],1,1);
-        #endif
-
         rDPtr[uPtr[face]] -= sqr(upperPtr[face])/rDPtr[lPtr[face]];
     }
 
-    #ifdef ICC_IA64_PREFETCH
-    #pragma ivdep
-    #endif
-
     // Generate reciprocal FDIC
     for (register label cell=0; cell<nCells; cell++)
     {
-        #ifdef ICC_IA64_PREFETCH
-        __builtin_prefetch (&rDPtr[cell+96],0,1);
-        #endif
-
         rDPtr[cell] = 1.0/rDPtr[cell];
     }
 
-    #ifdef ICC_IA64_PREFETCH
-    #pragma ivdep
-    #endif
-
     for (register label face=0; face<nFaces; face++)
     {
-        #ifdef ICC_IA64_PREFETCH
-        __builtin_prefetch (&uPtr[face+96],0,0);
-        __builtin_prefetch (&lPtr[face+96],0,0);
-        __builtin_prefetch (&upperPtr[face+96],0,0);
-        __builtin_prefetch (&rDuUpperPtr[face+96],0,0);
-        __builtin_prefetch (&rDlUpperPtr[face+96],0,0);
-        __builtin_prefetch (&rDPtr[uPtr[face+32]],0,1);
-        __builtin_prefetch (&rDPtr[lPtr[face+32]],0,1);
-        #endif
-
         rDuUpperPtr[face] = rDPtr[uPtr[face]]*upperPtr[face];
         rDlUpperPtr[face] = rDPtr[lPtr[face]]*upperPtr[face];
     }
@@ -138,58 +108,18 @@ void Foam::FDICPreconditioner::precondition
     register label nFaces = solver_.matrix().upper().size();
     register label nFacesM1 = nFaces - 1;
 
-    #ifdef ICC_IA64_PREFETCH
-    #pragma ivdep
-    #endif
-
     for (register label cell=0; cell<nCells; cell++)
     {
-        #ifdef ICC_IA64_PREFETCH
-        __builtin_prefetch (&wAPtr[cell+96],0,1);
-        __builtin_prefetch (&rDPtr[cell+96],0,1);
-        __builtin_prefetch (&rAPtr[cell+96],0,1);
-        #endif
-
         wAPtr[cell] = rDPtr[cell]*rAPtr[cell];
     }
 
-    #ifdef ICC_IA64_PREFETCH
-    #pragma noprefetch uPtr,lPtr,rDuUpperPtr,wAPtr
-    #pragma nounroll
-    #endif
-
     for (register label face=0; face<nFaces; face++)
     {
-        #ifdef ICC_IA64_PREFETCH
-        __builtin_prefetch (&uPtr[face+96],0,0);
-        __builtin_prefetch (&lPtr[face+96],0,0);
-        __builtin_prefetch (&rDuUpperPtr[face+96],0,0);
-        __builtin_prefetch (&wAPtr[uPtr[face+32]],0,1);
-        __builtin_prefetch (&wAPtr[lPtr[face+32]],0,1);
-        #endif
-
         wAPtr[uPtr[face]] -= rDuUpperPtr[face]*wAPtr[lPtr[face]];
     }
 
-    #ifdef ICC_IA64_PREFETCH
-    #pragma noprefetch uPtr,lPtr,rDlUpperPtr,wAPtr
-    #pragma nounroll
-    #endif
-
     for (register label face=nFacesM1; face>=0; face--)
     {
-        #ifdef ICC_IA64_PREFETCH
-        __builtin_prefetch (&uPtr[face-95],0,0);
-        __builtin_prefetch (&lPtr[face-95],0,0);
-        __builtin_prefetch (&rDlUpperPtr[face-95],0,0);
-        __builtin_prefetch (&wAPtr[lPtr[face-16]],0,1);
-        __builtin_prefetch (&wAPtr[uPtr[face-16]],0,1);
-        __builtin_prefetch (&wAPtr[lPtr[face-24]],0,1);
-        __builtin_prefetch (&wAPtr[uPtr[face-24]],0,1);
-        __builtin_prefetch (&wAPtr[lPtr[face-32]],0,1);
-        __builtin_prefetch (&wAPtr[uPtr[face-32]],0,1);
-        #endif
-
         wAPtr[lPtr[face]] -= rDlUpperPtr[face]*wAPtr[uPtr[face]];
     }
 }
diff --git a/src/OpenFOAM/matrices/lduMatrix/preconditioners/diagonalPreconditioner/diagonalPreconditioner.C b/src/OpenFOAM/matrices/lduMatrix/preconditioners/diagonalPreconditioner/diagonalPreconditioner.C
index e5a32fa1689220f3e558e1e866cc8184c1b65b1e..04ccc2add03118dc662013e3925be372cff2b97a 100644
--- a/src/OpenFOAM/matrices/lduMatrix/preconditioners/diagonalPreconditioner/diagonalPreconditioner.C
+++ b/src/OpenFOAM/matrices/lduMatrix/preconditioners/diagonalPreconditioner/diagonalPreconditioner.C
@@ -58,18 +58,9 @@ Foam::diagonalPreconditioner::diagonalPreconditioner
 
     register label nCells = rD.size();
 
-    #ifdef ICC_IA64_PREFETCH
-    #pragma ivdep
-    #endif
-
     // Generate reciprocal diagonal
     for (register label cell=0; cell<nCells; cell++)
     {
-        #ifdef ICC_IA64_PREFETCH
-        __builtin_prefetch (&rDPtr[cell+96],0,1);
-        __builtin_prefetch (&DPtr[cell+96],0,1);
-        #endif
-
         rDPtr[cell] = 1.0/DPtr[cell];
     }
 }
@@ -90,18 +81,8 @@ void Foam::diagonalPreconditioner::precondition
 
     register label nCells = wA.size();
 
-    #ifdef ICC_IA64_PREFETCH
-    #pragma ivdep
-    #endif
-
     for (register label cell=0; cell<nCells; cell++)
     {
-        #ifdef ICC_IA64_PREFETCH
-        __builtin_prefetch (&wAPtr[cell+96],0,1);
-        __builtin_prefetch (&rDPtr[cell+96],0,1);
-        __builtin_prefetch (&rAPtr[cell+96],0,1);
-        #endif
-
         wAPtr[cell] = rDPtr[cell]*rAPtr[cell];
     }
 }
diff --git a/src/OpenFOAM/matrices/lduMatrix/preconditioners/noPreconditioner/noPreconditioner.C b/src/OpenFOAM/matrices/lduMatrix/preconditioners/noPreconditioner/noPreconditioner.C
index d1df531040c6fceea43d259a4a9e3553cc7b25fe..54302bea66223a2d4cfa7bb014bec2fb431e80cb 100644
--- a/src/OpenFOAM/matrices/lduMatrix/preconditioners/noPreconditioner/noPreconditioner.C
+++ b/src/OpenFOAM/matrices/lduMatrix/preconditioners/noPreconditioner/noPreconditioner.C
@@ -68,17 +68,8 @@ void Foam::noPreconditioner::precondition
 
     register label nCells = wA.size();
 
-    #ifdef ICC_IA64_PREFETCH
-    #pragma ivdep
-    #endif
-
     for (register label cell=0; cell<nCells; cell++)
     {
-        #ifdef ICC_IA64_PREFETCH
-        __builtin_prefetch (&wAPtr[cell+96],0,1);
-        __builtin_prefetch (&rAPtr[cell+96],0,1);
-        #endif
-
         wAPtr[cell] = rAPtr[cell];
     }
 }
diff --git a/src/OpenFOAM/matrices/lduMatrix/smoothers/GaussSeidel/GaussSeidelSmoother.C b/src/OpenFOAM/matrices/lduMatrix/smoothers/GaussSeidel/GaussSeidelSmoother.C
index ff206e2e5fcbc31eb2184c600dd7b84c74dd8cfc..4c04d67b361d32368ad29a8b90df7d58e88cd6f2 100644
--- a/src/OpenFOAM/matrices/lduMatrix/smoothers/GaussSeidel/GaussSeidelSmoother.C
+++ b/src/OpenFOAM/matrices/lduMatrix/smoothers/GaussSeidel/GaussSeidelSmoother.C
@@ -146,19 +146,6 @@ void Foam::GaussSeidelSmoother::smooth
 
         for (register label cellI=0; cellI<nCells; cellI++)
         {
-            #ifdef ICC_IA64_PREFETCH
-            __builtin_prefetch (&psiPtr[cellI+64],0,1);
-            __builtin_prefetch (&bPrimePtr[cellI+64],0,1);
-            __builtin_prefetch (&ownStartPtr[cellI+64],0,1);
-            __builtin_prefetch (&diagPtr[cellI+64],0,1);
-            __builtin_prefetch (&uPtr[ownStartPtr[cellI+24]],0,1);
-            __builtin_prefetch (&uPtr[ownStartPtr[cellI+25]],0,1);
-            __builtin_prefetch (&uPtr[ownStartPtr[cellI+26]],0,1);
-            __builtin_prefetch (&uPtr[ownStartPtr[cellI+27]],0,1);
-            __builtin_prefetch (&upperPtr[ownStartPtr[cellI+24]],0,1);
-            __builtin_prefetch (&lowerPtr[ownStartPtr[cellI+24]],0,1);
-            #endif
-
             // Start and end of this row
             fStart = fEnd;
             fEnd = ownStartPtr[cellI + 1];
diff --git a/src/OpenFOAM/matrices/lduMatrix/solvers/PBiCG/PBiCG.C b/src/OpenFOAM/matrices/lduMatrix/solvers/PBiCG/PBiCG.C
index 0a5f1036749844421ecb7e7518aeadfb056e04a9..c514276c84e9d5341d8d5bb99d241600303393a8 100644
--- a/src/OpenFOAM/matrices/lduMatrix/solvers/PBiCG/PBiCG.C
+++ b/src/OpenFOAM/matrices/lduMatrix/solvers/PBiCG/PBiCG.C
@@ -144,19 +144,8 @@ Foam::lduMatrix::solverPerformance Foam::PBiCG::solve
 
             if (solverPerf.nIterations() == 0)
             {
-                #ifdef ICC_IA64_PREFETCH
-                #pragma ivdep
-                #endif
-
                 for (register label cell=0; cell<nCells; cell++)
                 {
-                    #ifdef ICC_IA64_PREFETCH
-                    __builtin_prefetch (&pAPtr[cell+96],0,1);
-                    __builtin_prefetch (&pTPtr[cell+96],0,1);
-                    __builtin_prefetch (&wAPtr[cell+96],0,1);
-                    __builtin_prefetch (&wTPtr[cell+96],0,1);
-                    #endif
-
                     pAPtr[cell] = wAPtr[cell];
                     pTPtr[cell] = wTPtr[cell];
                 }
@@ -165,19 +154,8 @@ Foam::lduMatrix::solverPerformance Foam::PBiCG::solve
             {
                 scalar beta = wArT/wArTold;
 
-                #ifdef ICC_IA64_PREFETCH
-                #pragma ivdep
-                #endif
-
                 for (register label cell=0; cell<nCells; cell++)
                 {
-                    #ifdef ICC_IA64_PREFETCH
-                    __builtin_prefetch (&pAPtr[cell+96],0,1);
-                    __builtin_prefetch (&pTPtr[cell+96],0,1);
-                    __builtin_prefetch (&wAPtr[cell+96],0,1);
-                    __builtin_prefetch (&wTPtr[cell+96],0,1);
-                    #endif
-
                     pAPtr[cell] = wAPtr[cell] + beta*pAPtr[cell];
                     pTPtr[cell] = wTPtr[cell] + beta*pTPtr[cell];
                 }
@@ -199,21 +177,8 @@ Foam::lduMatrix::solverPerformance Foam::PBiCG::solve
 
             scalar alpha = wArT/wApT;
 
-            #ifdef ICC_IA64_PREFETCH
-            #pragma ivdep
-            #endif
-
             for (register label cell=0; cell<nCells; cell++)
             {
-                #ifdef ICC_IA64_PREFETCH
-                __builtin_prefetch (&pAPtr[cell+96],0,1);
-                __builtin_prefetch (&wAPtr[cell+96],0,1);
-                __builtin_prefetch (&wTPtr[cell+96],0,1);
-                __builtin_prefetch (&psiPtr[cell+96],0,1);
-                __builtin_prefetch (&rAPtr[cell+96],0,1);
-                __builtin_prefetch (&rTPtr[cell+96],0,1);
-                #endif
-
                 psiPtr[cell] += alpha*pAPtr[cell];
                 rAPtr[cell] -= alpha*wAPtr[cell];
                 rTPtr[cell] -= alpha*wTPtr[cell];
diff --git a/src/OpenFOAM/matrices/lduMatrix/solvers/PCG/PCG.C b/src/OpenFOAM/matrices/lduMatrix/solvers/PCG/PCG.C
index 03b9419db20c7f266bbb1ddb2565380952c4f201..ea7581903cc5fd8c8b24ff29b67607dde9f1e66b 100644
--- a/src/OpenFOAM/matrices/lduMatrix/solvers/PCG/PCG.C
+++ b/src/OpenFOAM/matrices/lduMatrix/solvers/PCG/PCG.C
@@ -134,17 +134,8 @@ Foam::lduMatrix::solverPerformance Foam::PCG::solve
 
             if (solverPerf.nIterations() == 0)
             {
-                #ifdef ICC_IA64_PREFETCH
-                #pragma ivdep
-                #endif
-
                 for (register label cell=0; cell<nCells; cell++)
                 {
-                    #ifdef ICC_IA64_PREFETCH
-                    __builtin_prefetch (&pAPtr[cell+96],0,1);
-                    __builtin_prefetch (&wAPtr[cell+96],0,1);
-                    #endif
-
                     pAPtr[cell] = wAPtr[cell];
                 }
             }
@@ -152,17 +143,8 @@ Foam::lduMatrix::solverPerformance Foam::PCG::solve
             {
                 scalar beta = wArA/wArAold;
 
-                #ifdef ICC_IA64_PREFETCH
-                #pragma ivdep
-                #endif
-
                 for (register label cell=0; cell<nCells; cell++)
                 {
-                    #ifdef ICC_IA64_PREFETCH
-                    __builtin_prefetch (&pAPtr[cell+96],0,1);
-                    __builtin_prefetch (&wAPtr[cell+96],0,1);
-                    #endif
-
                     pAPtr[cell] = wAPtr[cell] + beta*pAPtr[cell];
                 }
             }
@@ -182,19 +164,8 @@ Foam::lduMatrix::solverPerformance Foam::PCG::solve
 
             scalar alpha = wArA/wApA;
 
-            #ifdef ICC_IA64_PREFETCH
-            #pragma ivdep
-            #endif
-
             for (register label cell=0; cell<nCells; cell++)
             {
-                #ifdef ICC_IA64_PREFETCH
-                __builtin_prefetch (&pAPtr[cell+96],0,1);
-                __builtin_prefetch (&wAPtr[cell+96],0,1);
-                __builtin_prefetch (&psiPtr[cell+96],0,1);
-                __builtin_prefetch (&rAPtr[cell+96],0,1);
-                #endif
-
                 psiPtr[cell] += alpha*pAPtr[cell];
                 rAPtr[cell] -= alpha*wAPtr[cell];
             }
diff --git a/src/OpenFOAM/meshes/MeshObject/MeshObject.C b/src/OpenFOAM/meshes/MeshObject/MeshObject.C
index 68f05c2f82b58136ab9ac14c8865287369cec943..8b7947525a67d3bada4e8cc56aebbd97260ca900 100644
--- a/src/OpenFOAM/meshes/MeshObject/MeshObject.C
+++ b/src/OpenFOAM/meshes/MeshObject/MeshObject.C
@@ -137,7 +137,7 @@ const Type& Foam::MeshObject<Mesh, Type>::New
 {
     if (!mesh.thisDb().objectRegistry::foundObject<Type>(Type::typeName))
     {
-        return store(new Type(mesh, d3, d4));
+        return store(new Type(mesh, d1, d2, d3, d4));
     }
     else
     {
diff --git a/src/OpenFOAM/meshes/polyMesh/globalMeshData/globalIndex.H b/src/OpenFOAM/meshes/polyMesh/globalMeshData/globalIndex.H
index 5f7ed0a2b269f283af2a0c5f9f1d624c2bb83d97..e394f679d042dd0c425f6fa7a869ebafeb5f2a4a 100644
--- a/src/OpenFOAM/meshes/polyMesh/globalMeshData/globalIndex.H
+++ b/src/OpenFOAM/meshes/polyMesh/globalMeshData/globalIndex.H
@@ -81,27 +81,49 @@ public:
 
     // Member Functions
 
-        //- Start of procI+1 data
-        inline const labelList& offsets() const;
+        ////- Start of procI+1 data
+        //inline const labelList& offsets() const;
 
-        //- Global sum of localSizes
-        inline label size() const;
 
-        //- From local to global
-        inline label toGlobal(const label i) const;
+        // Queries relating to my processor
 
-        //- Is on local processor
-        inline bool isLocal(const label i) const;
+            //- my local size
+            inline label localSize() const;
 
-        //- From global to local on procI
-        inline label toLocal(const label procI, const label i) const;
+            //- From local to global
+            inline label toGlobal(const label i) const;
 
-        //- From global to local on current processor.
-        //  FatalError if not on local processor.
-        inline label toLocal(const label i) const;
+            //- Is on local processor
+            inline bool isLocal(const label i) const;
+
+            //- From global to local on current processor.
+            //  FatalError if not on local processor.
+            inline label toLocal(const label i) const;
+
+
+        // Global queries
+
+            //- Global sum of localSizes
+            inline label size() const;
+
+            //- Size of procI data
+            inline label localSize(const label procI) const;
+
+            //- From local to global on procI
+            inline label toGlobal(const label procI, const label i) const;
+
+            //- Is on processor procI
+            inline bool isLocal(const label procI, const label i) const;
+
+            //- From global to local on procI
+            inline label toLocal(const label procI, const label i) const;
+
+            //- Which processor does global come from? Binary search.
+            inline label whichProcID(const label i) const;
+
+            //- Start of procI data
+            inline label offset(const label procI) const;
 
-        //- Which processor does global come from?
-        inline label whichProcID(const label i) const;
 
 
     // IOstream Operators
diff --git a/src/OpenFOAM/meshes/polyMesh/globalMeshData/globalIndexI.H b/src/OpenFOAM/meshes/polyMesh/globalMeshData/globalIndexI.H
index b01ed6e8ba8240ffd7903f721c4102663baeb5dc..d7c44107c665e29d0fd38900b2767e116b5e1b57 100644
--- a/src/OpenFOAM/meshes/polyMesh/globalMeshData/globalIndexI.H
+++ b/src/OpenFOAM/meshes/polyMesh/globalMeshData/globalIndexI.H
@@ -28,9 +28,32 @@ License
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-inline const Foam::labelList& Foam::globalIndex::offsets() const
+//inline const Foam::labelList& Foam::globalIndex::offsets() const
+//{
+//    return offsets_;
+//}
+
+
+inline Foam::label Foam::globalIndex::offset(const label procI) const
+{
+    return (procI == 0 ? 0 : offsets_[procI-1]);
+}
+
+
+inline Foam::label Foam::globalIndex::localSize(const label procI) const
+{
+    return
+    (
+        procI == 0
+      ? offsets_[procI]
+      : offsets_[procI] - offsets_[procI-1]
+    );
+}
+
+
+inline Foam::label Foam::globalIndex::localSize() const
 {
-    return offsets_;
+    return localSize(Pstream::myProcNo());
 }
 
 
@@ -40,27 +63,39 @@ inline Foam::label Foam::globalIndex::size() const
 }
 
 
+inline Foam::label Foam::globalIndex::toGlobal
+(
+    const label procI,
+    const label i
+) const
+{
+    return(procI == 0 ? i : i + offsets_[procI-1]);
+}
+
+
 inline Foam::label Foam::globalIndex::toGlobal(const label i) const
 {
-    return
-    (
-        Pstream::myProcNo() == 0
-      ? i
-      : i + offsets_[Pstream::myProcNo()-1]
-    );
+    return toGlobal(Pstream::myProcNo(), i);
 }
 
+
 //- Is on local processor
-inline bool Foam::globalIndex::isLocal(const label i) const
+inline bool Foam::globalIndex::isLocal(const label procI, const label i) const
 {
     return
-        (i < offsets_[Pstream::myProcNo()])
-     && (i >= (Pstream::myProcNo() == 0 ? 0 : offsets_[Pstream::myProcNo()-1]));
+        (i < offsets_[procI])
+     && (i >= (procI == 0 ? 0 : offsets_[procI-1]));
+}
+
+
+inline bool Foam::globalIndex::isLocal(const label i) const
+{
+    return isLocal(Pstream::myProcNo(), i);
 }
 
 
 inline Foam::label Foam::globalIndex::toLocal(const label procI, const label i)
- const
+const
 {
     label localI = (procI == 0 ? i : i - offsets_[procI-1]);
 
diff --git a/src/OpenFOAM/meshes/polyMesh/mapPolyMesh/mapDistribute/mapDistribute.C b/src/OpenFOAM/meshes/polyMesh/mapPolyMesh/mapDistribute/mapDistribute.C
index 4bd093e6412905bda8b5402d828fbdd362777ab0..cc4278e22180486f75e545660af5b85ff5dd2ce8 100644
--- a/src/OpenFOAM/meshes/polyMesh/mapPolyMesh/mapDistribute/mapDistribute.C
+++ b/src/OpenFOAM/meshes/polyMesh/mapPolyMesh/mapDistribute/mapDistribute.C
@@ -273,6 +273,15 @@ Foam::mapDistribute::mapDistribute
 }
 
 
+Foam::mapDistribute::mapDistribute(const mapDistribute& map)
+:
+    constructSize_(map.constructSize_),
+    subMap_(map.subMap_),
+    constructMap_(map.constructMap_),
+    schedulePtr_()
+{}
+
+
 // * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
 
 void Foam::mapDistribute::compact(const boolList& elemIsUsed)
@@ -413,4 +422,24 @@ void Foam::mapDistribute::compact(const boolList& elemIsUsed)
 }
 
 
+// * * * * * * * * * * * * * * * Member Operators  * * * * * * * * * * * * * //
+
+void Foam::mapDistribute::operator=(const mapDistribute& rhs)
+{
+    // Check for assignment to self
+    if (this == &rhs)
+    {
+        FatalErrorIn
+        (
+            "Foam::mapDistribute::operator=(const Foam::mapDistribute&)"
+        )   << "Attempted assignment to self"
+            << abort(FatalError);
+    }
+    constructSize_ = rhs.constructSize_;
+    subMap_ = rhs.subMap_;
+    constructMap_ = rhs.constructMap_;
+    schedulePtr_.clear();
+}
+
+
 // ************************************************************************* //
diff --git a/src/OpenFOAM/meshes/polyMesh/mapPolyMesh/mapDistribute/mapDistribute.H b/src/OpenFOAM/meshes/polyMesh/mapPolyMesh/mapDistribute/mapDistribute.H
index 3ccf81047697164d8cb2e7ed2a004a9feb8157f5..d2cfe64ca53c0dde02c3d424d5236b415728151d 100644
--- a/src/OpenFOAM/meshes/polyMesh/mapPolyMesh/mapDistribute/mapDistribute.H
+++ b/src/OpenFOAM/meshes/polyMesh/mapPolyMesh/mapDistribute/mapDistribute.H
@@ -81,16 +81,6 @@ class mapDistribute
         mutable autoPtr<List<labelPair> > schedulePtr_;
 
 
-    // Private Member Functions
-
-        //- Disallow default bitwise copy construct
-        mapDistribute(const mapDistribute&);
-
-        //- Disallow default bitwise assignment
-        void operator=(const mapDistribute&);
-
-
-
 public:
 
     // Constructors
@@ -120,6 +110,9 @@ public:
             const labelList& recvProcs
         );
 
+        //- Construct copy
+        mapDistribute(const mapDistribute&);
+
 
     // Member Functions
 
@@ -262,6 +255,11 @@ public:
                     "mapDistribute::updateMesh(const mapPolyMesh&)"
                 );
             }
+
+    // Member Operators
+
+        void operator=(const mapDistribute&);
+
 };
 
 
diff --git a/src/OpenFOAM/meshes/polyMesh/polyPatches/basic/coupled/coupledPolyPatch.H b/src/OpenFOAM/meshes/polyMesh/polyPatches/basic/coupled/coupledPolyPatch.H
index 690fb1083b4a4fce2f27c84df711fe8e5d33ea10..de1d9cc9f98c4fe60502606c3842c1057e7c8c9c 100644
--- a/src/OpenFOAM/meshes/polyMesh/polyPatches/basic/coupled/coupledPolyPatch.H
+++ b/src/OpenFOAM/meshes/polyMesh/polyPatches/basic/coupled/coupledPolyPatch.H
@@ -32,7 +32,6 @@ Description
 
 SourceFiles
     coupledPolyPatch.C
-    coupledPolyPatchMorph.C
 
 \*---------------------------------------------------------------------------*/
 
diff --git a/src/OpenFOAM/meshes/polyMesh/zones/faceZone/faceZone.C b/src/OpenFOAM/meshes/polyMesh/zones/faceZone/faceZone.C
index 5b688c64000f37ec36d79c6016e5d0abc0ae9a4d..d4cc0a284360f45bab1dd8ff9f995dfce256e606 100644
--- a/src/OpenFOAM/meshes/polyMesh/zones/faceZone/faceZone.C
+++ b/src/OpenFOAM/meshes/polyMesh/zones/faceZone/faceZone.C
@@ -34,6 +34,7 @@ Description
 #include "primitiveMesh.H"
 #include "demandDrivenData.H"
 #include "mapPolyMesh.H"
+#include "syncTools.H"
 
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
@@ -530,6 +531,87 @@ bool Foam::faceZone::checkDefinition(const bool report) const
 }
 
 
+bool Foam::faceZone::checkParallelSync(const bool report) const
+{
+    const polyMesh& mesh = zoneMesh().mesh();
+    const polyBoundaryMesh& bm = mesh.boundaryMesh();
+
+    bool boundaryError = false;
+
+
+    // Check that zone faces are synced
+    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+    {
+        boolList neiZoneFace(mesh.nFaces()-mesh.nInternalFaces(), false);
+        boolList neiZoneFlip(mesh.nFaces()-mesh.nInternalFaces(), false);
+        forAll(*this, i)
+        {
+            label faceI = operator[](i);
+
+            if (!mesh.isInternalFace(faceI))
+            {
+                neiZoneFace[faceI-mesh.nInternalFaces()] = true;
+                neiZoneFlip[faceI-mesh.nInternalFaces()] = flipMap()[i];
+            }
+        }
+        boolList myZoneFace(neiZoneFace);
+        syncTools::swapBoundaryFaceList(mesh, neiZoneFace, false);
+        boolList myZoneFlip(neiZoneFlip);
+        syncTools::swapBoundaryFaceList(mesh, neiZoneFlip, false);
+
+        forAll(*this, i)
+        {
+            label faceI = operator[](i);
+
+            label patchI = bm.whichPatch(faceI);
+
+            if (patchI != -1 && bm[patchI].coupled())
+            {
+                label bFaceI = faceI-mesh.nInternalFaces();
+
+                // Check face in zone on both sides
+                if (myZoneFace[bFaceI] != neiZoneFace[bFaceI])
+                {
+                    boundaryError = true;
+
+                    if (report)
+                    {
+                        Pout<< " ***Problem with faceZone " << index()
+                            << " named " << name()
+                            << ". Face " << faceI
+                            << " on coupled patch "
+                            << bm[patchI].name()
+                            << " is not consistent with its coupled neighbour."
+                            << endl;
+                    }
+                }
+
+                // Flip state should be opposite.
+                if (myZoneFlip[bFaceI] == neiZoneFlip[bFaceI])
+                {
+                    boundaryError = true;
+
+                    if (report)
+                    {
+                        Pout<< " ***Problem with faceZone " << index()
+                            << " named " << name()
+                            << ". Face " << faceI
+                            << " on coupled patch "
+                            << bm[patchI].name()
+                            << " does not have consistent flipMap"
+                            << " across coupled faces."
+                            << endl;
+                    }
+                }
+            }
+        }
+    }
+
+    return returnReduce(boundaryError, orOp<bool>());
+}
+
+
 void Foam::faceZone::movePoints(const pointField& p)
 {
     if (patchPtr_)
diff --git a/src/OpenFOAM/meshes/polyMesh/zones/faceZone/faceZone.H b/src/OpenFOAM/meshes/polyMesh/zones/faceZone/faceZone.H
index f96c1dc189fb884bbe8e1d9ba34136dbb8e30003..16c7e82b09c0ad272d99d1f9d60ecd552afcf3f9 100644
--- a/src/OpenFOAM/meshes/polyMesh/zones/faceZone/faceZone.H
+++ b/src/OpenFOAM/meshes/polyMesh/zones/faceZone/faceZone.H
@@ -302,6 +302,10 @@ public:
         //- Check zone definition. Return true if in error.
         bool checkDefinition(const bool report = false) const;
 
+        //- Check whether all procs have faces synchronised. Return
+        //  true if in error.
+        bool checkParallelSync(const bool report = false) const;
+
         //- Correct patch after moving points
         virtual void movePoints(const pointField&);
 
diff --git a/src/OpenFOAM/meshes/primitiveShapes/line/line.H b/src/OpenFOAM/meshes/primitiveShapes/line/line.H
index 8af00d5bf9a70f1f2d081f00f288fac019d7abf6..e9f7c0296f81327d41a868ebe73eed644150b83b 100644
--- a/src/OpenFOAM/meshes/primitiveShapes/line/line.H
+++ b/src/OpenFOAM/meshes/primitiveShapes/line/line.H
@@ -124,19 +124,13 @@ public:
 
     // Ostream operator
 
-        friend Istream& operator>>
-        #ifndef __CINT__
-        <Point, PointRef>
-        #endif
+        friend Istream& operator>> <Point, PointRef>
         (
             Istream&,
             line&
         );
 
-        friend Ostream& operator<<
-        #ifndef __CINT__
-        <Point, PointRef>
-        #endif
+        friend Ostream& operator<< <Point, PointRef>
         (
             Ostream&,
             const line&
diff --git a/src/OpenFOAM/meshes/primitiveShapes/objectHit/PointHit.H b/src/OpenFOAM/meshes/primitiveShapes/objectHit/PointHit.H
index 8ae9afc7f24b19abddca4140c4059619634872a6..375978a0b22e293cac8c772ecfc4a08880a8a8d1 100644
--- a/src/OpenFOAM/meshes/primitiveShapes/objectHit/PointHit.H
+++ b/src/OpenFOAM/meshes/primitiveShapes/objectHit/PointHit.H
@@ -184,10 +184,7 @@ public:
 
     // Ostream operator
 
-        friend Ostream& operator<<
-        #ifndef __CINT__
-        <Point>
-        #endif
+        friend Ostream& operator<< <Point>
         (
             Ostream& os,
             const PointHit<Point>& b
@@ -202,7 +199,7 @@ inline Ostream& operator<<(Ostream& os, const PointHit<Point>& b)
         << b.rawPoint() << token::SPACE
         << b.distance() << token::SPACE
         << b.eligibleMiss();
-    
+
     return os;
 }
 
diff --git a/src/OpenFOAM/meshes/primitiveShapes/triangle/triangleI.H b/src/OpenFOAM/meshes/primitiveShapes/triangle/triangleI.H
index 33b3cab15e67775129d8997818a299add2d687f9..e43d4b9d2948219c3c4f11d2b1eb653200609992 100644
--- a/src/OpenFOAM/meshes/primitiveShapes/triangle/triangleI.H
+++ b/src/OpenFOAM/meshes/primitiveShapes/triangle/triangleI.H
@@ -607,6 +607,18 @@ inline bool triangle<Point, PointRef>::classify
     // system E0, E1
     //
 
+    //Pout<< "alpha:" << alpha << endl;
+    //Pout<< "beta:" << beta << endl;
+    //Pout<< "hit:" << hit << endl;
+    //Pout<< "tol:" << tol << endl;
+
+    if (hit)
+    {
+        // alpha,beta might get negative due to precision errors
+        alpha = max(0.0, min(1.0, alpha));
+        beta = max(0.0, min(1.0, beta));
+    }
+
     nearType = NONE;
     nearLabel = -1;
 
diff --git a/src/thermophysicalModels/solids/Cs/Cs.C b/src/OpenFOAM/primitives/Lists/scalarIOList.C
similarity index 81%
rename from src/thermophysicalModels/solids/Cs/Cs.C
rename to src/OpenFOAM/primitives/Lists/scalarIOList.C
index 5b15f122744fdbbbbb3dbdf0cd246243d5b6ebf1..2d30cd4c25eeb989d22db756fad9496b7424e0b7 100644
--- a/src/thermophysicalModels/solids/Cs/Cs.C
+++ b/src/OpenFOAM/primitives/Lists/scalarIOList.C
@@ -22,24 +22,25 @@ License
     along with OpenFOAM; if not, write to the Free Software Foundation,
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
+Description
+    Declaration of scalar IOList containers
+
 \*---------------------------------------------------------------------------*/
 
-#include "Cs.H"
+#include "scalarIOList.H"
 #include "addToRunTimeSelectionTable.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 namespace Foam
 {
-
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
-
-defineTypeNameAndDebug(Cs, 0);
-addToRunTimeSelectionTable(solid, Cs,);
-addToRunTimeSelectionTable(solid, Cs, Istream);
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-} // End namespace Foam
+    defineTemplateTypeNameAndDebugWithName(scalarIOList, "scalarList", 0);
+    defineTemplateTypeNameAndDebugWithName
+    (
+        scalarListIOList,
+        "scalarListList",
+        0
+    );
+}
 
 // ************************************************************************* //
diff --git a/src/OpenFOAM/containers/Lists/List/undefListLoopM.H b/src/OpenFOAM/primitives/Lists/scalarIOList.H
similarity index 84%
rename from src/OpenFOAM/containers/Lists/List/undefListLoopM.H
rename to src/OpenFOAM/primitives/Lists/scalarIOList.H
index 3c125e2376c580a43c5eceb9c906ff01f5cb40bf..5c91ea000f60061cfc289c0bc62713fcb0e7800d 100644
--- a/src/OpenFOAM/containers/Lists/List/undefListLoopM.H
+++ b/src/OpenFOAM/primitives/Lists/scalarIOList.H
@@ -22,22 +22,27 @@ License
     along with OpenFOAM; if not, write to the Free Software Foundation,
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
+Typedef
+    Foam::scalarIOList
+
 Description
-    A List\<Type\> is a 1D array of objects of type 'Type',
-    where the size of the array is known and used for subscript
-    bounds checking, etc.
+    Scalar container classes
 
 \*---------------------------------------------------------------------------*/
 
-#ifdef List_FOR_ALL
+#ifndef scalarIOList_H
+#define scalarIOList_H
+
+#include "scalarList.H"
+#include "IOList.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-#undef List_FOR_ALL
-#undef List_END_FOR_ALL
-#undef List_ELEM
-#undef List_ACCESS
-#undef List_CONST_ACCESS
+namespace Foam
+{
+    typedef IOList<scalar> scalarIOList;
+    typedef IOList<scalarList> scalarListIOList;
+}
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
diff --git a/src/OpenFOAM/primitives/Scalar/scalar/scalar.H b/src/OpenFOAM/primitives/Scalar/scalar/scalar.H
index 0dd919d90d9194e19b2f1679d57227733128e4c1..f27612e9f08f2edc39fdb8e63af3e39871b7eb83 100644
--- a/src/OpenFOAM/primitives/Scalar/scalar/scalar.H
+++ b/src/OpenFOAM/primitives/Scalar/scalar/scalar.H
@@ -27,7 +27,7 @@ Typedef
 
 Description
     Single floating point number identical to float or double depending on
-    whether SP or DP is defined.
+    whether WM_SP or WM_DP is defined.
 
 SourceFiles
     scalar.C
@@ -42,7 +42,7 @@ SourceFiles
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-#if defined(SP)
+#if defined(WM_SP)
 
 // Define scalar as a float
 
@@ -60,7 +60,7 @@ namespace Foam
     scalar readScalar(Istream& is);
 }
 
-#elif defined(DP)
+#elif defined(WM_DP)
 
 // Define scalar as a double
 
diff --git a/src/OpenFOAM/primitives/SphericalTensor/SphericalTensorI.H b/src/OpenFOAM/primitives/SphericalTensor/SphericalTensorI.H
index 28b7b8b9d3050737cf197100c22cd3b69204025f..0459aedecf2f2f192ece94d9154031d266fcf87d 100644
--- a/src/OpenFOAM/primitives/SphericalTensor/SphericalTensorI.H
+++ b/src/OpenFOAM/primitives/SphericalTensor/SphericalTensorI.H
@@ -181,7 +181,7 @@ inline Cmpt det(const SphericalTensor<Cmpt>& st)
 template <class Cmpt>
 inline SphericalTensor<Cmpt> inv(const SphericalTensor<Cmpt>& st)
 {
-    return SphericalTensor<Cmpt>(1.0/st.ii()); 
+    return SphericalTensor<Cmpt>(1.0/st.ii());
 }
 
 
@@ -202,7 +202,6 @@ public:
 };
 
 
-#ifndef __CINT__
 template<class Cmpt>
 class innerProduct<SphericalTensor<Cmpt>, SphericalTensor<Cmpt> >
 {
@@ -227,7 +226,6 @@ public:
 
     typedef Vector<Cmpt> type;
 };
-#endif
 
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/OpenFOAM/primitives/SymmTensor/SymmTensorI.H b/src/OpenFOAM/primitives/SymmTensor/SymmTensorI.H
index 5a2de5dbbda00df13548802a55f409fc4ffe20ec..3078f941e6ada25d9d3b29f4f70b6fe57277a0ea 100644
--- a/src/OpenFOAM/primitives/SymmTensor/SymmTensorI.H
+++ b/src/OpenFOAM/primitives/SymmTensor/SymmTensorI.H
@@ -520,7 +520,6 @@ public:
     typedef SymmTensor<Cmpt> type;
 };
 
-#ifndef __CINT__
 template<class Cmpt>
 class innerProduct<SymmTensor<Cmpt>, SymmTensor<Cmpt> >
 {
@@ -529,7 +528,6 @@ public:
     typedef SymmTensor<Cmpt> type;
 };
 
-
 template<class Cmpt>
 class innerProduct<SymmTensor<Cmpt>, Vector<Cmpt> >
 {
@@ -578,7 +576,7 @@ public:
 
     typedef SymmTensor<Cmpt> type;
 };
-#endif
+
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
diff --git a/src/OpenFOAM/primitives/Tensor/TensorI.H b/src/OpenFOAM/primitives/Tensor/TensorI.H
index 7ca9958aa1800237f79a2d7766d62680732c28e6..71e7c0c76732a91728311840f2a0233d811bf80a 100644
--- a/src/OpenFOAM/primitives/Tensor/TensorI.H
+++ b/src/OpenFOAM/primitives/Tensor/TensorI.H
@@ -647,7 +647,6 @@ operator&&(const Tensor<Cmpt>& t1, const SphericalTensor<Cmpt>& st2)
     return(t1.xx()*st2.ii() + t1.yy()*st2.ii() + t1.zz()*st2.ii());
 }
 
-#ifndef __CINT__
 template<class Cmpt>
 class typeOfSum<SphericalTensor<Cmpt>, Tensor<Cmpt> >
 {
@@ -679,7 +678,7 @@ public:
 
     typedef Tensor<Cmpt> type;
 };
-#endif
+
 
 // * * * * * * * * * * Mixed Tensor SymmTensor Operators * * * * * * * * * * //
 
@@ -806,7 +805,6 @@ operator&&(const Tensor<Cmpt>& t1, const SymmTensor<Cmpt>& st2)
     );
 }
 
-#ifndef __CINT__
 template<class Cmpt>
 class typeOfSum<SymmTensor<Cmpt>, Tensor<Cmpt> >
 {
@@ -839,7 +837,6 @@ public:
 
     typedef Tensor<Cmpt> type;
 };
-#endif
 
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/OpenFOAM/primitives/Tuple2/Tuple2.H b/src/OpenFOAM/primitives/Tuple2/Tuple2.H
index 9a850e623666a1813acb77609206a0246355a19a..cac459587279012ae41af4cea6a53c9ddedb1c3b 100644
--- a/src/OpenFOAM/primitives/Tuple2/Tuple2.H
+++ b/src/OpenFOAM/primitives/Tuple2/Tuple2.H
@@ -139,19 +139,13 @@ public:
 
     // Friend Operators
 
-        friend bool operator==
-        #ifndef __CINT__
-        <Type1, Type2>
-        #endif
+        friend bool operator== <Type1, Type2>
         (
             const Tuple2<Type1, Type2>& a,
             const Tuple2<Type1, Type2>& b
         );
 
-        friend bool operator!=
-        #ifndef __CINT__
-        <Type1, Type2>
-        #endif
+        friend bool operator!= <Type1, Type2>
         (
             const Tuple2<Type1, Type2>& a,
             const Tuple2<Type1, Type2>& b
@@ -161,20 +155,14 @@ public:
     // IOstream operators
 
         //- Read Tuple2 from Istream, discarding contents of existing Tuple2.
-        friend Istream& operator>>
-        #ifndef __CINT__
-        <Type1, Type2>
-        #endif
+        friend Istream& operator>> <Type1, Type2>
         (
             Istream& is,
             Tuple2<Type1, Type2>& t2
         );
 
         // Write Tuple2 to Ostream.
-        friend Ostream& operator<<
-        #ifndef __CINT__
-        <Type1, Type2>
-        #endif
+        friend Ostream& operator<< <Type1, Type2>
         (
             Ostream& os,
             const Tuple2<Type1, Type2>& t2
diff --git a/src/OpenFOAM/primitives/VectorSpace/VectorSpace.H b/src/OpenFOAM/primitives/VectorSpace/VectorSpace.H
index dda9bd280428ed77f170f21c0b244653b5aea170..31e5b84f4aab19d6e507dcddf174501325937898 100644
--- a/src/OpenFOAM/primitives/VectorSpace/VectorSpace.H
+++ b/src/OpenFOAM/primitives/VectorSpace/VectorSpace.H
@@ -136,19 +136,13 @@ public:
 
     // IOstream Operators
 
-        friend Istream& operator>>
-        #ifndef __CINT__
-        <Form, Cmpt, nCmpt>
-        #endif
+        friend Istream& operator>> <Form, Cmpt, nCmpt>
         (
             Istream&,
             VectorSpace<Form, Cmpt, nCmpt>&
         );
 
-        friend Ostream& operator<<
-        #ifndef __CINT__
-        <Form, Cmpt, nCmpt>
-        #endif
+        friend Ostream& operator<< <Form, Cmpt, nCmpt>
         (
             Ostream&,
             const VectorSpace<Form, Cmpt, nCmpt>&
diff --git a/src/OpenFOAM/primitives/VectorSpace/VectorSpaceI.H b/src/OpenFOAM/primitives/VectorSpace/VectorSpaceI.H
index f368c6b8aef52b1023f3ea64afdbaba3cba7a955..eeea5f6bffe8fb4488e72f626beae526725adf02 100644
--- a/src/OpenFOAM/primitives/VectorSpace/VectorSpaceI.H
+++ b/src/OpenFOAM/primitives/VectorSpace/VectorSpaceI.H
@@ -263,7 +263,6 @@ inline const Cmpt& component
 
 // Powers of a Form
 // Equivalent to outer-products between the Form and itself
-#ifndef __CINT__
 // Form^0 = 1.0
 template<class Form, class Cmpt, int nCmpt>
 inline typename powProduct<Form, 0>::type pow
@@ -300,7 +299,7 @@ inline typename powProduct<Form, 2>::type pow
 {
     return sqr(static_cast<const Form&>(v));
 }
-#endif
+
 
 template<class Form, class Cmpt, int nCmpt>
 inline scalar magSqr
@@ -515,7 +514,6 @@ inline Form operator+
     return v;
 }
 
-
 template<class Form, class Cmpt, int nCmpt>
 inline Form operator-
 (
diff --git a/src/OpenFOAM/primitives/VectorSpace/products.H b/src/OpenFOAM/primitives/VectorSpace/products.H
index d91790f02c1b138942d669212b7778ed8f9297e5..64647f71462c0a2c35b6932a7dfc9e359f488648 100644
--- a/src/OpenFOAM/primitives/VectorSpace/products.H
+++ b/src/OpenFOAM/primitives/VectorSpace/products.H
@@ -61,8 +61,6 @@ public:
 };
 
 
-#ifndef __CINT__
-
 template<class arg1, class arg2>
 class outerProduct
 {
@@ -121,52 +119,6 @@ public:
     >::type type;
 };
 
-#else
-
-template<class arg1, class arg2>
-class outerProduct
-{
-public:
-
-    typedef arg1 type;
-};
-
-
-template<class arg1, class arg2>
-class crossProduct
-{
-public:
-
-    typedef arg1 type;
-};
-
-template<class arg1, class arg2>
-class innerProduct
-{
-public:
-
-    typedef arg1 type;
-};
-
-template<class arg1, class arg2>
-class scalarProduct
-{
-public:
-
-    typedef typename pTraits<arg1>::cmptType type;
-};
-
-
-template<class arg1, int arg2>
-class powProduct
-{
-public:
-
-    typedef arg1 type;
-};
-
-#endif
-
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
diff --git a/src/OpenFOAM/primitives/functions/Polynomial/Polynomial.C b/src/OpenFOAM/primitives/functions/Polynomial/Polynomial.C
new file mode 100644
index 0000000000000000000000000000000000000000..8f3381ea45a634a60de6614e33b6f9eadd13f709
--- /dev/null
+++ b/src/OpenFOAM/primitives/functions/Polynomial/Polynomial.C
@@ -0,0 +1,196 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "Polynomial.H"
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template<int PolySize>
+Foam::Polynomial<PolySize>::Polynomial()
+:
+    VectorSpace<Polynomial<PolySize>, scalar, PolySize>(),
+    name_("unknownPolynomialName"),
+    logActive_(false),
+    logCoeff_(0.0)
+{}
+
+
+template<int PolySize>
+Foam::Polynomial<PolySize>::Polynomial(const word& name, Istream& is)
+:
+    VectorSpace<Polynomial<PolySize>, scalar, PolySize>(),
+    name_(is),
+    logActive_(false),
+    logCoeff_(0.0)
+{
+    if (name_ != name)
+    {
+        FatalErrorIn
+        (
+            "Polynomial<PolySize>::Polynomial(const word&, Istream&)"
+        )   << "Expected polynomial name " << name << " but read " << name_
+            << nl << exit(FatalError);
+    }
+
+    VectorSpace<Polynomial<PolySize>, scalar, PolySize>::
+        operator=(VectorSpace<Polynomial<PolySize>, scalar, PolySize>(is));
+
+    if (this->size() == 0)
+    {
+        FatalErrorIn
+        (
+            "Polynomial<PolySize>::Polynomial(const word&, Istream&)"
+        )   << "Polynomial coefficients for entry " << name_
+            << " are invalid (empty)" << nl << exit(FatalError);
+    }
+}
+
+
+template<int PolySize>
+Foam::Polynomial<PolySize>::Polynomial
+(
+    const word& name,
+    const Polynomial<PolySize>& poly
+)
+:
+    VectorSpace<Polynomial<PolySize>, scalar, PolySize>(poly),
+    name_(name),
+    logActive_(poly.logActive_),
+    logCoeff_(poly.logCoeff_)
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+template<int PolySize>
+const Foam::word& Foam::Polynomial<PolySize>::name() const
+{
+    return name_;
+}
+
+
+template<int PolySize>
+bool& Foam::Polynomial<PolySize>::logActive()
+{
+    return logActive_;
+}
+
+
+template<int PolySize>
+Foam::scalar& Foam::Polynomial<PolySize>::logCoeff()
+{
+    return logCoeff_;
+}
+
+
+template<int PolySize>
+Foam::scalar Foam::Polynomial<PolySize>::evaluate(const scalar x) const
+{
+    scalar y = this->v_[0];
+
+    for (label i=1; i<PolySize; i++)
+    {
+        y += this->v_[i]*pow(x, i);
+    }
+
+    if (logActive_)
+    {
+        y += logCoeff_*log(x);
+    }
+
+    return y;
+}
+
+
+template<int PolySize>
+Foam::scalar Foam::Polynomial<PolySize>::integrateLimits
+(
+    const scalar x1,
+    const scalar x2
+) const
+{
+    if (logActive_)
+    {
+        FatalErrorIn
+        (
+            "scalar Polynomial<PolySize>::integrateLimits"
+            "("
+                "const scalar, "
+                "const scalar"
+            ") const"
+        )   << "Cannot integrate polynomial with logarithmic coefficients"
+            << nl << abort(FatalError);
+    }
+
+    intPolyType poly = this->integrate();
+
+    return poly.evaluate(x2) - poly.evaluate(x1);
+}
+
+
+template<int PolySize>
+typename Foam::Polynomial<PolySize>::intPolyType
+Foam::Polynomial<PolySize>::integrate(const scalar intConstant)
+{
+    intPolyType newCoeffs;
+
+    newCoeffs[0] = intConstant;
+    forAll(*this, i)
+    {
+        newCoeffs[i + 1] = this->v_[i]/(i + 1);
+    }
+
+    return newCoeffs;
+}
+
+
+template<int PolySize>
+typename Foam::Polynomial<PolySize>::polyType
+Foam::Polynomial<PolySize>::integrateMinus1(const scalar intConstant)
+{
+    polyType newCoeffs;
+
+    if (this->v_[0] > VSMALL)
+    {
+        newCoeffs.logActive() = true;
+        newCoeffs.logCoeff() = this->v_[0];
+    }
+
+    newCoeffs[0] = intConstant;
+
+    if (PolySize > 0)
+    {
+        for (label i=1; i<PolySize; i++)
+        {
+            newCoeffs[i] = this->v_[i]/i;
+        }
+    }
+
+    return newCoeffs;
+}
+
+
+// ************************************************************************* //
diff --git a/src/OpenFOAM/primitives/functions/Polynomial/Polynomial.H b/src/OpenFOAM/primitives/functions/Polynomial/Polynomial.H
new file mode 100644
index 0000000000000000000000000000000000000000..c1e2b580090235841c2f83260c04a1bf5543c72b
--- /dev/null
+++ b/src/OpenFOAM/primitives/functions/Polynomial/Polynomial.H
@@ -0,0 +1,169 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::Polynomial
+
+Description
+    Polynomial templated on size (order):
+
+        poly = logCoeff*log(x) + sum(coeff_[i]*x^i)
+
+    where 0 <= i <= n
+
+    - integer powers, starting at zero
+    - evaluate(x) to evaluate the poly for a given value
+    - integrate(x1, x2) between two scalar values
+    - integrate() to return a new, intergated coeff polynomial
+      - increases the size (order)
+    - integrateMinus1() to return a new, integrated coeff polynomial where
+      the base poly starts at order -1
+
+SourceFiles
+    Polynomial.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef Polynomial_H
+#define Polynomial_H
+
+#include "word.H"
+#include "scalar.H"
+#include "Ostream.H"
+#include "VectorSpace.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+// Forward declaration of classes
+template<int PolySize>
+class Polynomial;
+
+// Forward declaration of friend functions
+template<int PolySize>
+Ostream& operator<<
+(
+    Ostream&,
+    const Polynomial<PolySize>&
+);
+
+
+/*---------------------------------------------------------------------------*\
+                        Class Polynomial Declaration
+\*---------------------------------------------------------------------------*/
+
+template<int PolySize>
+class Polynomial
+:
+    public VectorSpace<Polynomial<PolySize>, scalar, PolySize>
+{
+    // Private data
+
+        //- Polynomial name
+        word name_;
+
+        //- Include the log term? - only activated using integrateMinus1()
+        bool logActive_;
+
+        //- Log coefficient - only activated using integrateMinus1()
+        scalar logCoeff_;
+
+
+public:
+
+    typedef Polynomial<PolySize> polyType;
+
+    typedef Polynomial<PolySize+1> intPolyType;
+
+
+    // Constructors
+
+        //- Construct null
+        Polynomial();
+
+        //- Construct from name and Istream
+        Polynomial(const word& name, Istream& is);
+
+        //- Copy constructor with name
+        Polynomial(const word& name, const Polynomial& poly);
+
+
+    // Member Functions
+
+        // Access
+
+            //- Return const access to the polynomial name
+            const word& name() const;
+
+            //- Return access to the log term active flag
+            bool& logActive();
+
+            //- Return access to the log coefficient
+            scalar& logCoeff();
+
+
+        // Evaluation
+
+            //- Return polynomial value
+            scalar evaluate(const scalar x) const;
+
+            //- Return integrated polynomial coefficients
+            //  argument becomes zeroth element (constant of integration)
+            intPolyType integrate(const scalar intConstant = 0.0);
+
+            //- Return integrated polynomial coefficients when lowest order
+            //  is -1. Argument added to zeroth element
+            polyType integrateMinus1(const scalar intConstant = 0.0);
+
+            //- Integrate between two values
+            scalar integrateLimits(const scalar x1, const scalar x2) const;
+
+
+    //- Ostream Operator
+    friend Ostream& operator<< <PolySize>
+    (
+        Ostream&,
+        const Polynomial&
+    );
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#ifdef NoRepository
+#   include "Polynomial.C"
+#   include "PolynomialIO.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/OpenFOAM/primitives/functions/Polynomial/PolynomialIO.C b/src/OpenFOAM/primitives/functions/Polynomial/PolynomialIO.C
new file mode 100644
index 0000000000000000000000000000000000000000..2a0d2187aa79c1df3d7051527598263216d4c76e
--- /dev/null
+++ b/src/OpenFOAM/primitives/functions/Polynomial/PolynomialIO.C
@@ -0,0 +1,52 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "Polynomial.H"
+
+// * * * * * * * * * * * * * * * IOstream Operators  * * * * * * * * * * * * //
+
+template<int PolySize>
+Foam::Ostream& Foam::operator<<
+(
+    Ostream& os,
+    const Polynomial<PolySize>& poly
+)
+{
+    os  << poly.name_ << token::SPACE
+        << static_cast
+            <VectorSpace<Polynomial<PolySize>, scalar, PolySize> >(poly);
+
+    // Check state of Ostream
+    os.check
+    (
+        "Ostream& operator<<(Ostream&, const Polynomial<PolySize>&)"
+    );
+
+    return os;
+}
+
+
+// ************************************************************************* //
diff --git a/src/Pstream/mpi/Pstream.C b/src/Pstream/mpi/Pstream.C
index 8011fb3b428cc45772fc36e78d94dde01f877a14..ba4629d754a67907d737386cf2def875c1d525df 100644
--- a/src/Pstream/mpi/Pstream.C
+++ b/src/Pstream/mpi/Pstream.C
@@ -34,9 +34,9 @@ License
 #include <cstdlib>
 #include <csignal>
 
-#if defined(SP)
+#if defined(WM_SP)
 #   define MPI_SCALAR MPI_FLOAT
-#elif defined(DP)
+#elif defined(WM_DP)
 #   define MPI_SCALAR MPI_DOUBLE
 #endif
 
diff --git a/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoHexMeshDriver.C b/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoHexMeshDriver.C
index 5bb4a0ee2d03b8b5a24ec8bbdfb59b2a5ed2c153..3c2221f8d04f9e2289ac5d1e3029cd6cf4d09355 100644
--- a/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoHexMeshDriver.C
+++ b/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoHexMeshDriver.C
@@ -148,6 +148,7 @@ Foam::scalar Foam::autoHexMeshDriver::getMergeDistance(const scalar mergeTol)
 Foam::autoHexMeshDriver::autoHexMeshDriver
 (
     fvMesh& mesh,
+    const bool overwrite,
     const dictionary& dict,
     const dictionary& decomposeDict
 )
@@ -292,6 +293,41 @@ Foam::autoHexMeshDriver::autoHexMeshDriver
     meshRefinement::checkCoupledFaceZones(mesh_);
 
 
+    // Refinement engine
+    // ~~~~~~~~~~~~~~~~~
+
+    {
+        Info<< nl
+            << "Determining initial surface intersections" << nl
+            << "-----------------------------------------" << nl
+            << endl;
+
+        // Main refinement engine
+        meshRefinerPtr_.reset
+        (
+            new meshRefinement
+            (
+                mesh,
+                mergeDist_,         // tolerance used in sorting coordinates
+                overwrite,
+                surfaces(),
+                shells()
+            )
+        );
+        Info<< "Calculated surface intersections in = "
+            << mesh_.time().cpuTimeIncrement() << " s" << endl;
+
+        // Some stats
+        meshRefinerPtr_().printMeshInfo(debug_, "Initial mesh");
+
+        meshRefinerPtr_().write
+        (
+            debug_&meshRefinement::OBJINTERSECTIONS,
+            mesh_.time().path()/meshRefinerPtr_().timeName()
+        );
+    }
+
+
     // Add all the surface regions as patches
     // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
@@ -319,9 +355,8 @@ Foam::autoHexMeshDriver::autoHexMeshDriver
 
             forAll(regNames, i)
             {
-                label patchI = meshRefinement::addPatch
+                label patchI = meshRefinerPtr_().addMeshedPatch
                 (
-                    mesh,
                     regNames[i],
                     wallPolyPatch::typeName
                 );
@@ -404,40 +439,6 @@ Foam::autoHexMeshDriver::autoHexMeshDriver
         // Mesh distribution engine (uses tolerance to reconstruct meshes)
         distributorPtr_.reset(new fvMeshDistribute(mesh_, mergeDist_));
     }
-
-
-    // Refinement engine
-    // ~~~~~~~~~~~~~~~~~
-
-    {
-        Info<< nl
-            << "Determining initial surface intersections" << nl
-            << "-----------------------------------------" << nl
-            << endl;
-
-        // Main refinement engine
-        meshRefinerPtr_.reset
-        (
-            new meshRefinement
-            (
-                mesh,
-                mergeDist_,         // tolerance used in sorting coordinates
-                surfaces(),
-                shells()
-            )
-        );
-        Info<< "Calculated surface intersections in = "
-            << mesh_.time().cpuTimeIncrement() << " s" << endl;
-
-        // Some stats
-        meshRefinerPtr_().printMeshInfo(debug_, "Initial mesh");
-
-        meshRefinerPtr_().write
-        (
-            debug_&meshRefinement::OBJINTERSECTIONS,
-            mesh_.time().path()/mesh_.time().timeName()
-        );
-    }
 }
 
 
@@ -448,7 +449,7 @@ void Foam::autoHexMeshDriver::writeMesh(const string& msg) const
     const meshRefinement& meshRefiner = meshRefinerPtr_();
 
     meshRefiner.printMeshInfo(debug_, msg);
-    Info<< "Writing mesh to time " << mesh_.time().timeName() << endl;
+    Info<< "Writing mesh to time " << meshRefiner.timeName() << endl;
 
     meshRefiner.write(meshRefinement::MESH|meshRefinement::SCALARLEVELS, "");
     if (debug_ & meshRefinement::OBJINTERSECTIONS)
@@ -456,7 +457,7 @@ void Foam::autoHexMeshDriver::writeMesh(const string& msg) const
         meshRefiner.write
         (
             meshRefinement::OBJINTERSECTIONS,
-            mesh_.time().path()/mesh_.time().timeName()
+            mesh_.time().path()/meshRefiner.timeName()
         );
     }
     Info<< "Written mesh in = "
@@ -522,11 +523,7 @@ void Foam::autoHexMeshDriver::doMesh()
         const dictionary& shrinkDict = dict_.subDict("shrinkDict");
         PtrList<dictionary> surfaceDicts(dict_.lookup("surfaces"));
 
-        autoLayerDriver layerDriver
-        (
-            meshRefinerPtr_(),
-            globalToPatch_
-        );
+        autoLayerDriver layerDriver(meshRefinerPtr_());
 
         // Get all the layer specific params
         layerParameters layerParams
diff --git a/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoHexMeshDriver.H b/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoHexMeshDriver.H
index c0b7668d0ac6e68c56ab8a5a6546a61ce48b289d..02eba5afbe95025f2124860158b9f9f0196e68c7 100644
--- a/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoHexMeshDriver.H
+++ b/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoHexMeshDriver.H
@@ -174,6 +174,7 @@ public:
         autoHexMeshDriver
         (
             fvMesh& mesh,
+            const bool overwrite,
             const dictionary& meshDict,
             const dictionary& decomposeDict
         );
diff --git a/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoLayerDriver.C b/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoLayerDriver.C
index 01ab952c165a5997df49085828e556fb41d6d209..fea25e35eb8a6e64bfd01564cda14d42299d1403 100644
--- a/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoLayerDriver.C
+++ b/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoLayerDriver.C
@@ -75,7 +75,7 @@ Foam::label Foam::autoLayerDriver::mergePatchFacesUndo
     labelHashSet boundaryCells(mesh.nFaces()-mesh.nInternalFaces());
 
     {
-        labelList patchIDs(meshRefinement::addedPatches(globalToPatch_));
+        labelList patchIDs(meshRefiner_.meshedPatches());
 
         const polyBoundaryMesh& patches = mesh.boundaryMesh();
 
@@ -159,12 +159,16 @@ Foam::label Foam::autoLayerDriver::mergePatchFacesUndo
             mesh.clearOut();
         }
 
+        if (meshRefiner_.overwrite())
+        {
+            mesh.setInstance(meshRefiner_.oldInstance());
+        }
+
         faceCombiner.updateMesh(map);
 
         meshRefiner_.updateMesh(map, labelList(0));
 
 
-
         for (label iteration = 0; iteration < 100; iteration++)
         {
             Info<< nl
@@ -313,6 +317,11 @@ Foam::label Foam::autoLayerDriver::mergePatchFacesUndo
                 mesh.clearOut();
             }
 
+            if (meshRefiner_.overwrite())
+            {
+                mesh.setInstance(meshRefiner_.oldInstance());
+            }
+
             faceCombiner.updateMesh(map);
 
             // Renumber restore maps
@@ -336,7 +345,7 @@ Foam::label Foam::autoLayerDriver::mergePatchFacesUndo
         if (debug)
         {
             Pout<< "Writing merged-faces mesh to time "
-                << mesh.time().timeName() << nl << endl;
+                << meshRefiner_.timeName() << nl << endl;
             mesh.write();
         }
     }
@@ -380,6 +389,11 @@ Foam::autoPtr<Foam::mapPolyMesh> Foam::autoLayerDriver::doRemovePoints
         mesh.clearOut();
     }
 
+    if (meshRefiner_.overwrite())
+    {
+        mesh.setInstance(meshRefiner_.oldInstance());
+    }
+
     pointRemover.updateMesh(map);
     meshRefiner_.updateMesh(map, labelList(0));
 
@@ -433,6 +447,11 @@ Foam::autoPtr<Foam::mapPolyMesh> Foam::autoLayerDriver::doRestorePoints
         mesh.clearOut();
     }
 
+    if (meshRefiner_.overwrite())
+    {
+        mesh.setInstance(meshRefiner_.oldInstance());
+    }
+
     pointRemover.updateMesh(map);
     meshRefiner_.updateMesh(map, labelList(0));
 
@@ -656,7 +675,7 @@ Foam::label Foam::autoLayerDriver::mergeEdgesUndo
         if (debug)
         {
             Pout<< "Writing merged-edges mesh to time "
-                << mesh.time().timeName() << nl << endl;
+                << meshRefiner_.timeName() << nl << endl;
             mesh.write();
         }
     }
@@ -2446,14 +2465,9 @@ void Foam::autoLayerDriver::getLayerCellsFaces
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::autoLayerDriver::autoLayerDriver
-(
-    meshRefinement& meshRefiner,
-    const labelList& globalToPatch
-)
+Foam::autoLayerDriver::autoLayerDriver(meshRefinement& meshRefiner)
 :
-    meshRefiner_(meshRefiner),
-    globalToPatch_(globalToPatch)
+    meshRefiner_(meshRefiner)
 {}
 
 
@@ -2729,7 +2743,7 @@ void Foam::autoLayerDriver::addLayers
         IOobject
         (
             "pointMedialDist",
-            mesh.time().timeName(),
+            meshRefiner_.timeName(),
             mesh,
             IOobject::NO_READ,
             IOobject::NO_WRITE,
@@ -2744,7 +2758,7 @@ void Foam::autoLayerDriver::addLayers
         IOobject
         (
             "dispVec",
-            mesh.time().timeName(),
+            meshRefiner_.timeName(),
             mesh,
             IOobject::NO_READ,
             IOobject::NO_WRITE,
@@ -2759,7 +2773,7 @@ void Foam::autoLayerDriver::addLayers
         IOobject
         (
             "medialRatio",
-            mesh.time().timeName(),
+            meshRefiner_.timeName(),
             mesh,
             IOobject::NO_READ,
             IOobject::NO_WRITE,
@@ -2911,7 +2925,7 @@ void Foam::autoLayerDriver::addLayers
             );
 
             const_cast<Time&>(mesh.time())++;
-            Info<< "Writing shrunk mesh to " << mesh.time().timeName() << endl;
+            Info<< "Writing shrunk mesh to " << meshRefiner_.timeName() << endl;
 
             // See comment in autoSnapDriver why we should not remove meshPhi
             // using mesh.clearPout().
@@ -3012,6 +3026,11 @@ void Foam::autoLayerDriver::addLayers
         //?neccesary? Update fields
         newMesh.updateMesh(map);
 
+        if (meshRefiner_.overwrite())
+        {
+            newMesh.setInstance(meshRefiner_.oldInstance());
+        }
+
         // Update numbering on addLayer:
         // - cell/point labels to be newMesh.
         // - patchFaces to remain in oldMesh order.
@@ -3034,7 +3053,7 @@ void Foam::autoLayerDriver::addLayers
 
         if (debug)
         {
-            Info<< "Writing layer mesh to " << mesh.time().timeName() << endl;
+            Info<< "Writing layer mesh to " << meshRefiner_.timeName() << endl;
             newMesh.write();
             cellSet addedCellSet
             (
@@ -3113,6 +3132,11 @@ void Foam::autoLayerDriver::addLayers
         mesh.clearOut();
     }
 
+    if (meshRefiner_.overwrite())
+    {
+        mesh.setInstance(meshRefiner_.oldInstance());
+    }
+
     meshRefiner_.updateMesh(map, labelList(0));
 
 
@@ -3181,8 +3205,6 @@ void Foam::autoLayerDriver::doLayers
         << "----------------------------------" << nl
         << endl;
 
-    const_cast<Time&>(mesh.time())++;
-
     Info<< "Using mesh parameters " << motionDict << nl << endl;
 
     // Merge coplanar boundary faces
diff --git a/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoLayerDriver.H b/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoLayerDriver.H
index 164fd88ce04e5b06c33ef1c48d8745ea34a8dcc0..12569570069144b603074002ea3ad7af8c3bb91f 100644
--- a/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoLayerDriver.H
+++ b/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoLayerDriver.H
@@ -101,9 +101,6 @@ class autoLayerDriver
         //- Mesh+surface
         meshRefinement& meshRefiner_;
 
-        //- From surface region to patch
-        const labelList globalToPatch_;
-
 
 
     // Private Member Functions
@@ -509,11 +506,7 @@ public:
     // Constructors
 
         //- Construct from components
-        autoLayerDriver
-        (
-            meshRefinement& meshRefiner,
-            const labelList& globalToPatch
-        );
+        autoLayerDriver(meshRefinement& meshRefiner);
 
 
     // Member Functions
diff --git a/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoRefineDriver.C b/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoRefineDriver.C
index 9c4e0a17c521b8e06b4b2ecceb18ed80bb917d06..0ac24a5574aad7e415a2bf4dbc489bb310d4e728 100644
--- a/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoRefineDriver.C
+++ b/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoRefineDriver.C
@@ -344,8 +344,8 @@ void Foam::autoRefineDriver::removeInsideCells
     if (debug)
     {
         Pout<< "Writing subsetted mesh to time "
-            << mesh.time().timeName() << '.' << endl;
-        meshRefiner_.write(debug, mesh.time().path()/mesh.time().timeName());
+            << meshRefiner_.timeName() << '.' << endl;
+        meshRefiner_.write(debug, mesh.time().path()/meshRefiner_.timeName());
         Pout<< "Dumped mesh in = "
             << mesh.time().cpuTimeIncrement() << " s\n" << nl << endl;
     }
@@ -561,11 +561,11 @@ void Foam::autoRefineDriver::zonify
         if (debug)
         {
             Pout<< "Writing zoned mesh to time "
-                << mesh.time().timeName() << '.' << endl;
+                << meshRefiner_.timeName() << '.' << endl;
             meshRefiner_.write
             (
                 debug,
-                mesh.time().path()/mesh.time().timeName()
+                mesh.time().path()/meshRefiner_.timeName()
             );
         }
 
@@ -653,8 +653,8 @@ void Foam::autoRefineDriver::splitAndMergeBaffles
     if (debug)
     {
         Pout<< "Writing handleProblemCells mesh to time "
-            << mesh.time().timeName() << '.' << endl;
-        meshRefiner_.write(debug, mesh.time().path()/mesh.time().timeName());
+            << meshRefiner_.timeName() << '.' << endl;
+        meshRefiner_.write(debug, mesh.time().path()/meshRefiner_.timeName());
     }
 }
 
@@ -680,7 +680,7 @@ void Foam::autoRefineDriver::mergePatchFaces
     (
         Foam::cos(45*mathematicalConstant::pi/180.0),
         Foam::cos(45*mathematicalConstant::pi/180.0),
-        meshRefinement::addedPatches(globalToPatch_)
+        meshRefiner_.meshedPatches()
     );
 
     if (debug)
@@ -712,9 +712,6 @@ void Foam::autoRefineDriver::doRefine
 
     const fvMesh& mesh = meshRefiner_.mesh();
 
-    const_cast<Time&>(mesh.time())++;
-
-
     // Check that all the keep points are inside the mesh.
     refineParams.findCells(mesh);
 
diff --git a/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoSnapDriver.C b/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoSnapDriver.C
index 011417c29ecd92107e34ff596c9ba506a60cb50a..41475a321af054c67f083d2ebc9fadfb8c0d5d22 100644
--- a/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoSnapDriver.C
+++ b/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoSnapDriver.C
@@ -557,7 +557,7 @@ Foam::tmp<Foam::scalarField> Foam::autoSnapDriver::edgePatchDist
     //        IOobject
     //        (
     //            "pointDist",
-    //            mesh.DB().timeName(),
+    //            meshRefiner_.timeName(),
     //            mesh.DB(),
     //            IOobject::NO_READ,
     //            IOobject::AUTO_WRITE
@@ -580,7 +580,7 @@ Foam::tmp<Foam::scalarField> Foam::autoSnapDriver::edgePatchDist
     //        pointDist[pointI] /= mesh.pointEdges()[pointI].size();
     //    }
     //    Info<< "Writing patch distance to " << pointDist.name()
-    //        << " at time " << mesh.DB().timeName() << endl;
+    //        << " at time " << meshRefiner_.timeName() << endl;
     //
     //    pointDist.write();
     //}
@@ -750,7 +750,7 @@ Foam::autoPtr<Foam::mapPolyMesh> Foam::autoSnapDriver::createZoneBaffles
             {
                 const_cast<Time&>(mesh.time())++;
                 Pout<< "Writing baffled mesh to time "
-                    << mesh.time().timeName() << endl;
+                    << meshRefiner_.timeName() << endl;
                 mesh.write();
             }
         }
@@ -830,35 +830,6 @@ Foam::scalarField Foam::autoSnapDriver::calcSnapDistance
 }
 
 
-//// Invert globalToPatch_ to get the patches related to surfaces.
-//Foam::labelList Foam::autoSnapDriver::getSurfacePatches() const
-//{
-//    // Set of patches originating from surface
-//    labelHashSet surfacePatchSet(globalToPatch_.size());
-//
-//    forAll(globalToPatch_, i)
-//    {
-//        if (globalToPatch_[i] != -1)
-//        {
-//            surfacePatchSet.insert(globalToPatch_[i]);
-//        }
-//    }
-//
-//    const fvMesh& mesh = meshRefiner_.mesh();
-//
-//    DynamicList<label> surfacePatches(surfacePatchSet.size());
-//
-//    for (label patchI = 0; patchI < mesh.boundaryMesh().size(); patchI++)
-//    {
-//        if (surfacePatchSet.found(patchI))
-//        {
-//            surfacePatches.append(patchI);
-//        }
-//    }
-//    return surfacePatches.shrink();
-//}
-
-
 void Foam::autoSnapDriver::preSmoothPatch
 (
     const snapParameters& snapParams,
@@ -928,7 +899,7 @@ void Foam::autoSnapDriver::preSmoothPatch
     if (debug)
     {
         const_cast<Time&>(mesh.time())++;
-        Pout<< "Writing patch smoothed mesh to time " << mesh.time().timeName()
+        Pout<< "Writing patch smoothed mesh to time " << meshRefiner_.timeName()
             << endl;
 
         mesh.write();
@@ -1222,7 +1193,7 @@ void Foam::autoSnapDriver::smoothDisplacement
     if (debug)
     {
         const_cast<Time&>(mesh.time())++;
-        Pout<< "Writing smoothed mesh to time " << mesh.time().timeName()
+        Pout<< "Writing smoothed mesh to time " << meshRefiner_.timeName()
             << endl;
 
         // Moving mesh creates meshPhi. Can be cleared out by a mesh.clearOut
@@ -1284,7 +1255,7 @@ void Foam::autoSnapDriver::scaleMesh
         if (debug)
         {
             const_cast<Time&>(mesh.time())++;
-            Pout<< "Writing scaled mesh to time " << mesh.time().timeName()
+            Pout<< "Writing scaled mesh to time " << meshRefiner_.timeName()
                 << endl;
             mesh.write();
 
@@ -1476,10 +1447,8 @@ void Foam::autoSnapDriver::doSnap
         << "--------------" << nl
         << endl;
 
-    const_cast<Time&>(mesh.time())++;
-
     // Get the labels of added patches.
-    labelList adaptPatchIDs(meshRefinement::addedPatches(globalToPatch_));
+    labelList adaptPatchIDs(meshRefiner_.meshedPatches());
 
     // Create baffles (pairs of faces that share the same points)
     // Baffles stored as owner and neighbour face that have been created.
diff --git a/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoSnapDriver.H b/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoSnapDriver.H
index 5d9b2bc357d0e2dff037bcfccc9d27ae08613114..cdf8673d75d425d82c0633b0a93364c731e42429 100644
--- a/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoSnapDriver.H
+++ b/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoSnapDriver.H
@@ -170,9 +170,6 @@ public:
                 const indirectPrimitivePatch&
             ) const;
 
-            ////- Get patches generated for surfaces.
-            //labelList getSurfacePatches() const;
-
             //- Smooth the mesh (patch and internal) to increase visibility
             //  of surface points (on castellated mesh) w.r.t. surface.
             void preSmoothPatch
diff --git a/src/autoMesh/autoHexMesh/meshRefinement/meshRefinement.C b/src/autoMesh/autoHexMesh/meshRefinement/meshRefinement.C
index 6a021f9e8a75d0628a811eefa3623f8c77c8b767..7e90beae6f6699b8231773e40e3c76f2f9a06f5d 100644
--- a/src/autoMesh/autoHexMesh/meshRefinement/meshRefinement.C
+++ b/src/autoMesh/autoHexMesh/meshRefinement/meshRefinement.C
@@ -84,12 +84,15 @@ void Foam::meshRefinement::calcNeighbourData
 
     const polyBoundaryMesh& patches = mesh_.boundaryMesh();
 
+    labelHashSet addedPatchIDSet(meshedPatches());
+
     forAll(patches, patchI)
     {
         const polyPatch& pp = patches[patchI];
 
         const unallocLabelList& faceCells = pp.faceCells();
         const vectorField::subField faceCentres = pp.faceCentres();
+        const vectorField::subField faceAreas = pp.faceAreas();
 
         label bFaceI = pp.start()-mesh_.nInternalFaces();
 
@@ -102,6 +105,36 @@ void Foam::meshRefinement::calcNeighbourData
                 bFaceI++;
             }
         }
+        else if (addedPatchIDSet.found(patchI))
+        {
+            // Face was introduced from cell-cell intersection. Try to
+            // reconstruct other side cell(centre). Three possibilities:
+            // - cells same size.
+            // - preserved cell smaller. Not handled.
+            // - preserved cell larger.
+            forAll(faceCells, i)
+            {
+                // Extrapolate the face centre.
+                vector fn = faceAreas[i];
+                fn /= mag(fn)+VSMALL;
+
+                label own = faceCells[i];
+                label ownLevel = cellLevel[own];
+                label faceLevel = meshCutter_.getAnchorLevel(pp.start()+i);
+
+                // Normal distance from face centre to cell centre
+                scalar d = ((faceCentres[i] - cellCentres[own]) & fn);
+                if (faceLevel > ownLevel)
+                {
+                    // Other cell more refined. Adjust normal distance
+                    d *= 0.5;
+                }
+                neiLevel[bFaceI] = cellLevel[ownLevel];
+                // Calculate other cell centre by extrapolation
+                neiCc[bFaceI] = faceCentres[i] + d*fn;
+                bFaceI++;
+            }
+        }
         else
         {
             forAll(faceCells, i)
@@ -432,6 +465,11 @@ Foam::autoPtr<Foam::mapPolyMesh> Foam::meshRefinement::doRemoveCells
         mesh_.clearOut();
     }
 
+    if (overwrite_)
+    {
+        mesh_.setInstance(oldInstance_);
+    }
+
     // Update local mesh data
     cellRemover.updateMesh(map);
 
@@ -784,12 +822,15 @@ Foam::meshRefinement::meshRefinement
 (
     fvMesh& mesh,
     const scalar mergeDistance,
+    const bool overwrite,
     const refinementSurfaces& surfaces,
     const shellSurfaces& shells
 )
 :
     mesh_(mesh),
     mergeDistance_(mergeDistance),
+    overwrite_(overwrite),
+    oldInstance_(mesh.pointsInstance()),
     surfaces_(surfaces),
     shells_(shells),
     meshCutter_
@@ -1166,8 +1207,6 @@ Foam::autoPtr<Foam::mapDistributePolyMesh> Foam::meshRefinement::balance
 // Helper function to get intersected faces
 Foam::labelList Foam::meshRefinement::intersectedFaces() const
 {
-    // Mark all faces that will become baffles
-
     label nBoundaryFaces = 0;
 
     forAll(surfaceIndex_, faceI)
@@ -1193,10 +1232,7 @@ Foam::labelList Foam::meshRefinement::intersectedFaces() const
 
 
 // Helper function to get points used by faces
-Foam::labelList Foam::meshRefinement::intersectedPoints
-(
-//    const labelList& globalToPatch
-) const
+Foam::labelList Foam::meshRefinement::intersectedPoints() const
 {
     const faceList& faces = mesh_.faces();
 
@@ -1221,9 +1257,10 @@ Foam::labelList Foam::meshRefinement::intersectedPoints
     }
 
     //// Insert all meshed patches.
-    //forAll(globalToPatch, i)
+    //labelList adaptPatchIDs(meshedPatches());
+    //forAll(adaptPatchIDs, i)
     //{
-    //    label patchI = globalToPatch[i];
+    //    label patchI = adaptPatchIDs[i];
     //
     //    if (patchI != -1)
     //    {
@@ -1262,27 +1299,6 @@ Foam::labelList Foam::meshRefinement::intersectedPoints
 }
 
 
-Foam::labelList Foam::meshRefinement::addedPatches
-(
-    const labelList& globalToPatch
-)
-{
-    labelList patchIDs(globalToPatch.size());
-    label addedI = 0;
-
-    forAll(globalToPatch, i)
-    {
-        if (globalToPatch[i] != -1)
-        {
-            patchIDs[addedI++] = globalToPatch[i];
-        }
-    }
-    patchIDs.setSize(addedI);
-
-    return patchIDs;
-}
-
-
 //- Create patch from set of patches
 Foam::autoPtr<Foam::indirectPrimitivePatch> Foam::meshRefinement::makePatch
 (
@@ -1372,7 +1388,7 @@ Foam::tmp<Foam::pointVectorField> Foam::meshRefinement::makeDisplacementField
             IOobject
             (
                 "pointDisplacement",
-                mesh.time().timeName(),
+                mesh.time().timeName(), //timeName(),
                 mesh,
                 IOobject::NO_READ,
                 IOobject::AUTO_WRITE
@@ -1653,6 +1669,53 @@ Foam::label Foam::meshRefinement::addPatch
 }
 
 
+Foam::label Foam::meshRefinement::addMeshedPatch
+(
+    const word& name,   
+    const word& type
+)
+{
+    label meshedI = findIndex(meshedPatches_, name);
+
+    if (meshedI != -1)
+    {
+        // Already there. Get corresponding polypatch
+        return mesh_.boundaryMesh().findPatchID(name);
+    }
+    else
+    {
+        // Add patch
+        label patchI = addPatch(mesh_, name, type);
+
+        // Store
+        label sz = meshedPatches_.size();
+        meshedPatches_.setSize(sz+1);
+        meshedPatches_[sz] = name;
+
+        return patchI;
+    }
+}
+
+
+Foam::labelList Foam::meshRefinement::meshedPatches() const
+{
+    labelList patchIDs(meshedPatches_.size());
+    forAll(meshedPatches_, i)
+    {
+        patchIDs[i] = mesh_.boundaryMesh().findPatchID(meshedPatches_[i]);
+
+        if (patchIDs[i] == -1)
+        {
+            FatalErrorIn("meshRefinement::meshedPatches() const")
+                << "Problem : did not find patch " << meshedPatches_[i]
+                << abort(FatalError);
+        }
+    }
+
+    return patchIDs;
+}
+
+
 Foam::autoPtr<Foam::mapPolyMesh> Foam::meshRefinement::splitMeshRegions
 (
     const point& keepPoint
@@ -2000,6 +2063,20 @@ void Foam::meshRefinement::printMeshInfo(const bool debug, const string& msg)
 }
 
 
+//- Return either time().constant() or oldInstance
+Foam::word Foam::meshRefinement::timeName() const
+{
+    if (overwrite_ && mesh_.time().timeIndex() == 0)
+    {
+        return oldInstance_;
+    }
+    else
+    {
+        return mesh_.time().timeName();
+    }
+}
+
+
 void Foam::meshRefinement::dumpRefinementLevel() const
 {
     volScalarField volRefLevel
@@ -2007,7 +2084,7 @@ void Foam::meshRefinement::dumpRefinementLevel() const
         IOobject
         (
             "cellLevel",
-            mesh_.time().timeName(),
+            timeName(),
             mesh_,
             IOobject::NO_READ,
             IOobject::AUTO_WRITE,
@@ -2034,7 +2111,7 @@ void Foam::meshRefinement::dumpRefinementLevel() const
         IOobject
         (
             "pointLevel",
-            mesh_.time().timeName(),
+            timeName(),
             mesh_,
             IOobject::NO_READ,
             IOobject::NO_WRITE,
diff --git a/src/autoMesh/autoHexMesh/meshRefinement/meshRefinement.H b/src/autoMesh/autoHexMesh/meshRefinement/meshRefinement.H
index 06004c8a6e00bc12c093cb36afb2782638b4b2d3..93ce3ceeb8fb3043d0b8435ef22209d6ee073711 100644
--- a/src/autoMesh/autoHexMesh/meshRefinement/meshRefinement.H
+++ b/src/autoMesh/autoHexMesh/meshRefinement/meshRefinement.H
@@ -110,6 +110,12 @@ private:
         //- tolerance used for sorting coordinates (used in 'less' routine)
         const scalar mergeDistance_;
 
+        //- overwrite the mesh?
+        const bool overwrite_;
+
+        //- Instance of mesh upon construction. Used when in overwrite_ mode.
+        const word oldInstance_;
+
         //- All surface-intersection interaction
         const refinementSurfaces& surfaces_;
 
@@ -125,6 +131,10 @@ private:
         //- user supplied face based data.
         List<Tuple2<mapType, labelList> > userFaceData_;
 
+        //- Meshed patches - are treated differently. Stored as wordList since
+        //  order changes.
+        wordList meshedPatches_;
+
 
     // Private Member Functions
 
@@ -163,9 +173,6 @@ private:
         //- Find any intersection of surface. Store in surfaceIndex_.
         void updateIntersections(const labelList& changedFaces);
 
-        //- Set instance of all local IOobjects
-        void setInstance(const fileName&);
-
         //- Remove cells. Put exposedFaces into exposedPatchIDs.
         autoPtr<mapPolyMesh> doRemoveCells
         (
@@ -400,12 +407,11 @@ private:
                 const labelList& globalToPatch
             ) const;
 
-            //- Initial test of marking faces using geometric information.
-            labelList markFacesOnProblemCellsGeometric
-            (
-                const dictionary& motionDict,
-                const labelList& globalToPatch
-            ) const;
+            ////- Initial test of marking faces using geometric information.
+            //labelList markFacesOnProblemCellsGeometric
+            //(
+            //    const dictionary& motionDict
+            //) const;
 
 
         // Baffle merging
@@ -475,6 +481,7 @@ public:
         (
             fvMesh& mesh,
             const scalar mergeDistance,
+            const bool overwrite,
             const refinementSurfaces&,
             const shellSurfaces&
         );
@@ -499,6 +506,18 @@ public:
                 return mergeDistance_;
             }
 
+            //- Overwrite the mesh?
+            bool overwrite() const
+            {
+                return overwrite_;
+            }
+
+            //- (points)instance of mesh upon construction
+            const word& oldInstance() const
+            {
+                return oldInstance_;
+            }
+
             //- reference to surface search engines
             const refinementSurfaces& surfaces() const
             {
@@ -578,9 +597,6 @@ public:
             //- Get points on surfaces with intersection and boundary faces.
             labelList intersectedPoints() const;
 
-            //- Get added patches (inverse of globalToPatch)
-            static labelList addedPatches(const labelList& globalToPatch);
-
             //- Create patch from set of patches
             static autoPtr<indirectPrimitivePatch> makePatch
             (
@@ -688,9 +704,16 @@ public:
 
         // Other topo changes
 
-            //- Helper function to add patch to mesh
+            //- Helper:add patch to mesh. Update all registered fields.
+            //  Use addMeshedPatch to add patches originating from surfaces.
             static label addPatch(fvMesh&, const word& name, const word& type);
 
+            //- Add patch originating from meshing. Update meshedPatches_.
+            label addMeshedPatch(const word& name, const word& type);
+
+            //- Get patchIDs for patches added in addMeshedPatch.
+            labelList meshedPatches() const;
+
             //- Split mesh. Keep part containing point.
             autoPtr<mapPolyMesh> splitMeshRegions(const point& keepPoint);
 
@@ -699,7 +722,11 @@ public:
 
             //- Update for external change to mesh. changedFaces are in new mesh
             //  face labels.
-            void updateMesh(const mapPolyMesh&, const labelList& changedFaces);
+            void updateMesh
+            (
+                const mapPolyMesh&,
+                const labelList& changedFaces
+            );
 
 
             // Restoring : is where other processes delete and reinsert data.
@@ -757,6 +784,13 @@ public:
             //- Print some mesh stats.
             void printMeshInfo(const bool, const string&) const;
 
+            //- Replacement for Time::timeName() : return oldInstance (if
+            //  overwrite_)
+            word timeName() const;
+
+            //- Set instance of all local IOobjects
+            void setInstance(const fileName&);
+
             //- Write mesh and all data
             bool write() const;
 
diff --git a/src/autoMesh/autoHexMesh/meshRefinement/meshRefinementBaffles.C b/src/autoMesh/autoHexMesh/meshRefinement/meshRefinementBaffles.C
index 3904f960737a3e9a84b8e4366ca71b49bfa31f4c..b5b4174fb3a23963d98831280d98bd368c18a2b6 100644
--- a/src/autoMesh/autoHexMesh/meshRefinement/meshRefinementBaffles.C
+++ b/src/autoMesh/autoHexMesh/meshRefinement/meshRefinementBaffles.C
@@ -110,10 +110,10 @@ Foam::label Foam::meshRefinement::createBaffle
                 -1,                         // masterPointID
                 -1,                         // masterEdgeID
                 faceI,                      // masterFaceID,
-                false,                      // face flip
+                true,                       // face flip
                 neiPatch,                   // patch for face
                 zoneID,                     // zone for face
-                zoneFlip                    // face flip in zone
+                !zoneFlip                   // face flip in zone
             )
         );
     }
@@ -226,7 +226,13 @@ void Foam::meshRefinement::getBafflePatches
     label vertI = 0;
     if (debug&OBJINTERSECTIONS)
     {
-        str.reset(new OFstream(mesh_.time().timePath()/"intersections.obj"));
+        str.reset
+        (
+            new OFstream
+            (
+                mesh_.time().path()/timeName()/"intersections.obj"
+            )
+        );
 
         Pout<< "getBafflePatches : Writing surface intersections to file "
             << str().name() << nl << endl;
@@ -461,6 +467,11 @@ Foam::autoPtr<Foam::mapPolyMesh> Foam::meshRefinement::createBaffles
         mesh_.clearOut();
     }
 
+    if (overwrite())
+    {
+        mesh_.setInstance(oldInstance());
+    }
+
     //- Redo the intersections on the newly create baffle faces. Note that
     //  this changes also the cell centre positions.
     faceSet baffledFacesSet(mesh_, "baffledFacesSet", 2*nBaffles);
@@ -820,6 +831,11 @@ Foam::autoPtr<Foam::mapPolyMesh> Foam::meshRefinement::mergeBaffles
         mesh_.clearOut();
     }
 
+    if (overwrite())
+    {
+        mesh_.setInstance(oldInstance());
+    }
+
     // Update intersections. Recalculate intersections on merged faces since
     // this seems to give problems? Note: should not be nessecary since
     // baffles preserve intersections from when they were created.
@@ -1001,7 +1017,7 @@ void Foam::meshRefinement::findCellZoneGeometric
 
         if (namedSurfaceIndex[faceI] == -1 && (ownZone != neiZone))
         {
-            // Give face the zone of the owner
+            // Give face the zone of max cell zone
             namedSurfaceIndex[faceI] = findIndex
             (
                 surfaceToCellZone,
@@ -1043,7 +1059,7 @@ void Foam::meshRefinement::findCellZoneGeometric
 
                 if (namedSurfaceIndex[faceI] == -1 && (ownZone != neiZone))
                 {
-                    // Give face the zone of the owner
+                    // Give face the max cell zone
                     namedSurfaceIndex[faceI] = findIndex
                     (
                         surfaceToCellZone,
@@ -1482,7 +1498,7 @@ void Foam::meshRefinement::baffleAndSplitMesh
 
     if (debug)
     {
-        Pout<< "Writing baffled mesh to time " << mesh_.time().timeName()
+        Pout<< "Writing baffled mesh to time " << timeName()
             << endl;
         write(debug, runTime.path()/"baffles");
         Pout<< "Dumped debug data in = "
@@ -1511,11 +1527,7 @@ void Foam::meshRefinement::baffleAndSplitMesh
                 perpendicularAngle,
                 globalToPatch
             )
-            //markFacesOnProblemCellsGeometric
-            //(
-            //    motionDict,
-            //    globalToPatch
-            //)
+            //markFacesOnProblemCellsGeometric(motionDict)
         );
         Info<< "Analyzed problem cells in = "
             << runTime.cpuTimeIncrement() << " s\n" << nl << endl;
@@ -1569,7 +1581,7 @@ void Foam::meshRefinement::baffleAndSplitMesh
         if (debug)
         {
             Pout<< "Writing extra baffled mesh to time "
-                << mesh_.time().timeName() << endl;
+                << timeName() << endl;
             write(debug, runTime.path()/"extraBaffles");
             Pout<< "Dumped debug data in = "
                 << runTime.cpuTimeIncrement() << " s\n" << nl << endl;
@@ -1604,9 +1616,9 @@ void Foam::meshRefinement::baffleAndSplitMesh
 
     if (debug)
     {
-        Pout<< "Writing subsetted mesh to time " << mesh_.time().timeName()
+        Pout<< "Writing subsetted mesh to time " << timeName()
             << endl;
-        write(debug, runTime.timePath());
+        write(debug, runTime.path()/timeName());
         Pout<< "Dumped debug data in = "
             << runTime.cpuTimeIncrement() << " s\n" << nl << endl;
     }
@@ -1665,7 +1677,7 @@ void Foam::meshRefinement::baffleAndSplitMesh
 
 
 // Split off (with optional buffer layers) unreachable areas of mesh.
-Foam::autoPtr<Foam::mapPolyMesh>  Foam::meshRefinement::splitMesh
+Foam::autoPtr<Foam::mapPolyMesh> Foam::meshRefinement::splitMesh
 (
     const label nBufferLayers,
     const labelList& globalToPatch,
@@ -1998,6 +2010,11 @@ Foam::autoPtr<Foam::mapPolyMesh> Foam::meshRefinement::dupNonManifoldPoints()
         mesh_.clearOut();
     }
 
+    if (overwrite())
+    {
+        mesh_.setInstance(oldInstance());
+    }
+
     // Update intersections. Is mapping only (no faces created, positions stay
     // same) so no need to recalculate intersections.
     updateMesh(map, labelList(0));
@@ -2194,16 +2211,14 @@ Foam::autoPtr<Foam::mapPolyMesh> Foam::meshRefinement::zonify
         {
             label faceI = testFaces[i];
 
-            label own = mesh_.faceOwner()[faceI];
-
             if (mesh_.isInternalFace(faceI))
             {
-                start[i] = cellCentres[own];
-                end[i] = cellCentres[mesh_.faceNeighbour()[faceI]];
+                start[i] = cellCentres[faceOwner[faceI]];
+                end[i] = cellCentres[faceNeighbour[faceI]];
             }
             else
             {
-                start[i] = cellCentres[own];
+                start[i] = cellCentres[faceOwner[faceI]];
                 end[i] = neiCc[faceI-mesh_.nInternalFaces()];
             }
         }
@@ -2340,6 +2355,20 @@ Foam::autoPtr<Foam::mapPolyMesh> Foam::meshRefinement::zonify
 
         if (surfI != -1)
         {
+            // Orient face zone to have slave cells in max cell zone.
+            label ownZone = cellToZone[faceOwner[faceI]];
+            label neiZone = cellToZone[faceNeighbour[faceI]];
+
+            bool flip;
+            if (ownZone == max(ownZone, neiZone))
+            {
+                flip = false;
+            }
+            else
+            {
+                flip = true;
+            }
+
             meshMod.setAction
             (
                 polyModifyFace
@@ -2352,12 +2381,31 @@ Foam::autoPtr<Foam::mapPolyMesh> Foam::meshRefinement::zonify
                     -1,                             // patch for face
                     false,                          // remove from zone
                     surfaceToFaceZone[surfI],       // zone for face
-                    false                           // face flip in zone
+                    flip                            // face flip in zone
                 )
             );
         }
     }
 
+    // Get coupled neighbour cellZone. Set to -1 on non-coupled patches.
+    labelList neiCellZone(mesh_.nFaces()-mesh_.nInternalFaces(), -1);
+    forAll(patches, patchI)
+    {
+        const polyPatch& pp = patches[patchI];
+
+        if (pp.coupled())
+        {
+            forAll(pp, i)
+            {
+                label faceI = pp.start()+i;
+                neiCellZone[faceI-mesh_.nInternalFaces()] =
+                    cellToZone[mesh_.faceOwner()[faceI]];
+            }
+        }
+    }
+    syncTools::swapBoundaryFaceList(mesh_, neiCellZone, false);
+
+    // Set owner as no-flip
     forAll(patches, patchI)
     {
         const polyPatch& pp = patches[patchI];
@@ -2370,6 +2418,19 @@ Foam::autoPtr<Foam::mapPolyMesh> Foam::meshRefinement::zonify
 
             if (surfI != -1)
             {
+                label ownZone = cellToZone[faceOwner[faceI]];
+                label neiZone = neiCellZone[faceI-mesh_.nInternalFaces()];
+
+                bool flip;
+                if (ownZone == max(ownZone, neiZone))
+                {
+                    flip = false;
+                }
+                else
+                {
+                    flip = true;
+                }
+
                 meshMod.setAction
                 (
                     polyModifyFace
@@ -2382,7 +2443,7 @@ Foam::autoPtr<Foam::mapPolyMesh> Foam::meshRefinement::zonify
                         patchI,                         // patch for face
                         false,                          // remove from zone
                         surfaceToFaceZone[surfI],       // zone for face
-                        false                           // face flip in zone
+                        flip                            // face flip in zone
                     )
                 );
             }
@@ -2429,6 +2490,11 @@ Foam::autoPtr<Foam::mapPolyMesh> Foam::meshRefinement::zonify
         mesh_.clearOut();
     }
 
+    if (overwrite())
+    {
+        mesh_.setInstance(oldInstance());
+    }
+
     // None of the faces has changed, only the zones. Still...
     updateMesh(map, labelList());
 
diff --git a/src/autoMesh/autoHexMesh/meshRefinement/meshRefinementMerge.C b/src/autoMesh/autoHexMesh/meshRefinement/meshRefinementMerge.C
index 7ad77e83bf2bc300fdec8492065239fec6141d9f..b1461cea77c00c17589eeb11153ebf2d415499bd 100644
--- a/src/autoMesh/autoHexMesh/meshRefinement/meshRefinementMerge.C
+++ b/src/autoMesh/autoHexMesh/meshRefinement/meshRefinementMerge.C
@@ -29,10 +29,6 @@ License
 #include "polyTopoChange.H"
 #include "removePoints.H"
 
-
-// * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
-
-
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 // Merge faces that are in-line.
@@ -108,6 +104,11 @@ Foam::label Foam::meshRefinement::mergePatchFaces
             mesh_.clearOut();
         }
 
+        if (overwrite())
+        {
+            mesh_.setInstance(oldInstance());
+        }
+
         faceCombiner.updateMesh(map);
 
         // Get the kept faces that need to be recalculated.
@@ -203,6 +204,11 @@ Foam::autoPtr<Foam::mapPolyMesh> Foam::meshRefinement::mergeEdges
             mesh_.clearOut();
         }
 
+        if (overwrite())
+        {
+            mesh_.setInstance(oldInstance());
+        }
+
         pointRemover.updateMesh(map);
 
         // Get the kept faces that need to be recalculated.
diff --git a/src/autoMesh/autoHexMesh/meshRefinement/meshRefinementProblemCells.C b/src/autoMesh/autoHexMesh/meshRefinement/meshRefinementProblemCells.C
index ea1e8a083cd24cac69c384129668cf6fecb1a7cf..fb0a7e2121f020576494e848ad8b6116f71fbcdd 100644
--- a/src/autoMesh/autoHexMesh/meshRefinement/meshRefinementProblemCells.C
+++ b/src/autoMesh/autoHexMesh/meshRefinement/meshRefinementProblemCells.C
@@ -136,15 +136,13 @@ Foam::Map<Foam::label> Foam::meshRefinement::findEdgeConnectedProblemCells
     const labelList& globalToPatch
 ) const
 {
-    labelList adaptPatchIDs(meshRefinement::addedPatches(globalToPatch));
-
-    // Construct addressing engine.
+    // Construct addressing engine from all patches added for meshing.
     autoPtr<indirectPrimitivePatch> ppPtr
     (
         meshRefinement::makePatch
         (
             mesh_,
-            adaptPatchIDs
+            meshedPatches()
         )
     );
     const indirectPrimitivePatch& pp = ppPtr();
@@ -386,11 +384,6 @@ Foam::labelList Foam::meshRefinement::markFacesOnProblemCells
     const labelList& pointLevel = meshCutter_.pointLevel();
     const polyBoundaryMesh& patches = mesh_.boundaryMesh();
 
-    // Swap neighbouring cell centres and cell level
-    labelList neiLevel(mesh_.nFaces()-mesh_.nInternalFaces());
-    pointField neiCc(mesh_.nFaces()-mesh_.nInternalFaces());
-    calcNeighbourData(neiLevel, neiCc);
-
     // Per internal face (boundary faces not used) the patch that the
     // baffle should get (or -1)
     labelList facePatch(mesh_.nFaces(), -1);
@@ -403,7 +396,7 @@ Foam::labelList Foam::meshRefinement::markFacesOnProblemCells
 
     // Fill boundary data. All elements on meshed patches get marked.
     // Get the labels of added patches.
-    labelList adaptPatchIDs(meshRefinement::addedPatches(globalToPatch));
+    labelList adaptPatchIDs(meshedPatches());
 
     forAll(adaptPatchIDs, i)
     {
@@ -427,6 +420,12 @@ Foam::labelList Foam::meshRefinement::markFacesOnProblemCells
         }
     }
 
+    // Swap neighbouring cell centres and cell level
+    labelList neiLevel(mesh_.nFaces()-mesh_.nInternalFaces());
+    pointField neiCc(mesh_.nFaces()-mesh_.nInternalFaces());
+    calcNeighbourData(neiLevel, neiCc);
+
+
     // Count of faces marked for baffling
     label nBaffleFaces = 0;
 
@@ -961,20 +960,16 @@ Foam::labelList Foam::meshRefinement::markFacesOnProblemCells
 //// test to find nearest surface and checks which faces would get squashed.
 //Foam::labelList Foam::meshRefinement::markFacesOnProblemCellsGeometric
 //(
-//    const dictionary& motionDict,
-//    const labelList& globalToPatch
+//    const dictionary& motionDict
 //) const
 //{
-//    // Get the labels of added patches.
-//    labelList adaptPatchIDs(meshRefinement::addedPatches(globalToPatch));
-//
 //    // Construct addressing engine.
 //    autoPtr<indirectPrimitivePatch> ppPtr
 //    (
 //        meshRefinement::makePatch
 //        (
 //            mesh_,
-//            adaptPatchIDs
+//            meshedPatches()
 //        )
 //    );
 //    const indirectPrimitivePatch& pp = ppPtr();
diff --git a/src/autoMesh/autoHexMesh/meshRefinement/meshRefinementRefine.C b/src/autoMesh/autoHexMesh/meshRefinement/meshRefinementRefine.C
index 7aabbc6321cf9132e9e5c271d46e15abd7e00673..e35607a5980172c0d90377eae1f38efeeca6614f 100644
--- a/src/autoMesh/autoHexMesh/meshRefinement/meshRefinementRefine.C
+++ b/src/autoMesh/autoHexMesh/meshRefinement/meshRefinementRefine.C
@@ -1232,6 +1232,11 @@ Foam::autoPtr<Foam::mapPolyMesh> Foam::meshRefinement::refine
         mesh_.clearOut();
     }
 
+    if (overwrite())
+    {
+        mesh_.setInstance(oldInstance());
+    }
+
     // Update intersection info
     updateMesh(map, getChangedFaces(map, cellsToRefine));
 
@@ -1256,12 +1261,12 @@ Foam::meshRefinement::refineAndBalance
     if (debug)
     {
         Pout<< "Writing refined but unbalanced " << msg
-            << " mesh to time " << mesh_.time().timeName() << endl;
+            << " mesh to time " << timeName() << endl;
         write
         (
             debug,
             mesh_.time().path()
-           /mesh_.time().timeName()
+           /timeName()
         );
         Pout<< "Dumped debug data in = "
             << mesh_.time().cpuTimeIncrement() << " s" << endl;
@@ -1299,12 +1304,11 @@ Foam::meshRefinement::refineAndBalance
         if (debug)
         {
             Pout<< "Writing balanced " << msg
-                << " mesh to time " << mesh_.time().timeName() << endl;
+                << " mesh to time " << timeName() << endl;
             write
             (
                 debug,
-                mesh_.time().path()
-               /mesh_.time().timeName()
+                mesh_.time().path()/timeName()
             );
             Pout<< "Dumped debug data in = "
                 << mesh_.time().cpuTimeIncrement() << " s" << endl;
diff --git a/src/autoMesh/autoHexMesh/trackedParticle/trackedParticle.C b/src/autoMesh/autoHexMesh/trackedParticle/trackedParticle.C
index 4f847636b59daa3216e056da4a544b4501df55b3..7cd8fb9dd2120de505040ab6afe713005d95a200 100644
--- a/src/autoMesh/autoHexMesh/trackedParticle/trackedParticle.C
+++ b/src/autoMesh/autoHexMesh/trackedParticle/trackedParticle.C
@@ -56,7 +56,7 @@ Foam::trackedParticle::trackedParticle
     bool readFields
 )
 :
-    ExactParticle<trackedParticle>(c, is)
+    ExactParticle<trackedParticle>(c, is, readFields)
 {
     if (readFields)
     {
@@ -115,6 +115,28 @@ bool Foam::trackedParticle::move(trackedParticle::trackData& td)
 }
 
 
+bool Foam::trackedParticle::hitPatch
+(
+    const polyPatch&,
+    trackedParticle::trackData& td,
+    const label patchI
+)
+{
+    return false;
+}
+
+
+bool Foam::trackedParticle::hitPatch
+(
+    const polyPatch&,
+    int&,
+    const label
+)
+{
+    return false;
+}
+
+
 void Foam::trackedParticle::hitWedgePatch
 (
     const wedgePolyPatch&,
diff --git a/src/autoMesh/autoHexMesh/trackedParticle/trackedParticle.H b/src/autoMesh/autoHexMesh/trackedParticle/trackedParticle.H
index ab7ab06d20c9a513e481e3e89b645c898e11992a..3e2d12a1d2f16b84b3881883a7813d40a9026ec6 100644
--- a/src/autoMesh/autoHexMesh/trackedParticle/trackedParticle.H
+++ b/src/autoMesh/autoHexMesh/trackedParticle/trackedParticle.H
@@ -169,6 +169,21 @@ public:
             bool move(trackData&);
 
 
+            //- Overridable function to handle the particle hitting a patch
+            //  Executed before other patch-hitting functions
+            bool hitPatch
+            (
+                const polyPatch&,
+                trackedParticle::trackData& td,
+                const label patchI
+            );
+            bool hitPatch
+            (
+                const polyPatch&,
+                int&,
+                const label patchI
+           );
+
             //- Overridable function to handle the particle hitting a wedge
             void hitWedgePatch
             (
diff --git a/src/decompositionMethods/decompositionMethods/scotchDecomp/scotchDecomp.C b/src/decompositionMethods/decompositionMethods/scotchDecomp/scotchDecomp.C
index a33e49b82889148fb6d3db92ff7d51dd3d2bc80e..994a82419285a24da2695f3e3850ee4580d1f8ac 100644
--- a/src/decompositionMethods/decompositionMethods/scotchDecomp/scotchDecomp.C
+++ b/src/decompositionMethods/decompositionMethods/scotchDecomp/scotchDecomp.C
@@ -75,6 +75,24 @@ extern "C"
 }
 
 
+// Hack: scotch generates floating point errors so need to switch of error
+//       trapping!
+#if defined(linux) || defined(linuxAMD64) || defined(linuxIA64)
+#    define LINUX
+#endif
+
+#if defined(LINUX) && defined(__GNUC__)
+#    define LINUX_GNUC
+#endif
+
+#ifdef LINUX_GNUC
+#   ifndef __USE_GNU
+#       define __USE_GNU
+#   endif
+#   include <fenv.h>
+#endif
+
+
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 namespace Foam
@@ -113,13 +131,30 @@ Foam::label Foam::scotchDecomp::decompose
 {
     // Strategy
     // ~~~~~~~~
+
     // Default.
     SCOTCH_Strat stradat;
     check(SCOTCH_stratInit(&stradat), "SCOTCH_stratInit");
-    //SCOTCH_stratGraphMap(&stradat, &argv[i][2]);
-    //fprintf(stdout, "S\tStrat=");
-    //SCOTCH_stratSave(&stradat, stdout);
-    //fprintf(stdout, "\n");
+
+    if (decompositionDict_.found("scotchCoeffs"))
+    {
+        const dictionary& scotchCoeffs =
+            decompositionDict_.subDict("scotchCoeffs");
+
+
+        string strategy;
+        if (scotchCoeffs.readIfPresent("strategy", strategy))
+        {
+            if (debug)
+            {
+                Info<< "scotchDecomp : Using strategy " << strategy << endl;
+            }
+            SCOTCH_stratGraphMap(&stradat, strategy.c_str());
+            //fprintf(stdout, "S\tStrat=");
+            //SCOTCH_stratSave(&stradat, stdout);
+            //fprintf(stdout, "\n");
+        }
+    }
 
 
     // Graph
@@ -153,37 +188,40 @@ Foam::label Foam::scotchDecomp::decompose
         const dictionary& scotchCoeffs =
             decompositionDict_.subDict("scotchCoeffs");
 
-        Switch writeGraph(scotchCoeffs.lookup("writeGraph"));
-
-        if (writeGraph)
+        if (scotchCoeffs.found("writeGraph"))
         {
-            OFstream str(mesh_.time().path() / mesh_.name() + ".grf");
-
-            Info<< "Dumping Scotch graph file to " << str.name() << endl
-                << "Use this in combination with gpart." << endl;
-
-            label version = 0;
-            str << version << nl;
-            // Numer of vertices
-            str << xadj.size()-1 << ' ' << adjncy.size() << nl;
-            // Numbering starts from 0
-            label baseval = 0;
-            // Has weights?
-            label hasEdgeWeights = 0;
-            label hasVertexWeights = 0;
-            label numericflag = 10*hasEdgeWeights+hasVertexWeights;
-            str << baseval << ' ' << numericflag << nl;
-            for (label cellI = 0; cellI < xadj.size()-1; cellI++)
-            {
-                label start = xadj[cellI];
-                label end = xadj[cellI+1];
-                str << end-start;
+            Switch writeGraph(scotchCoeffs.lookup("writeGraph"));
 
-                for (label i = start; i < end; i++)
+            if (writeGraph)
+            {
+                OFstream str(mesh_.time().path() / mesh_.name() + ".grf");
+
+                Info<< "Dumping Scotch graph file to " << str.name() << endl
+                    << "Use this in combination with gpart." << endl;
+
+                label version = 0;
+                str << version << nl;
+                // Numer of vertices
+                str << xadj.size()-1 << ' ' << adjncy.size() << nl;
+                // Numbering starts from 0
+                label baseval = 0;
+                // Has weights?
+                label hasEdgeWeights = 0;
+                label hasVertexWeights = 0;
+                label numericflag = 10*hasEdgeWeights+hasVertexWeights;
+                str << baseval << ' ' << numericflag << nl;
+                for (label cellI = 0; cellI < xadj.size()-1; cellI++)
                 {
-                    str << ' ' << adjncy[i];
+                    label start = xadj[cellI];
+                    label end = xadj[cellI+1];
+                    str << end-start;
+
+                    for (label i = start; i < end; i++)
+                    {
+                        str << ' ' << adjncy[i];
+                    }
+                    str << nl;
                 }
-                str << nl;
             }
         }
     }
@@ -195,12 +233,36 @@ Foam::label Foam::scotchDecomp::decompose
 
     SCOTCH_Arch archdat;
     check(SCOTCH_archInit(&archdat), "SCOTCH_archInit");
-    check
-    (
-        // SCOTCH_archCmpltw for weighted.
-        SCOTCH_archCmplt(&archdat, nProcessors_),
-        "SCOTCH_archCmplt"
-    );
+
+    List<label> processorWeights;
+    if (decompositionDict_.found("scotchCoeffs"))
+    {
+        const dictionary& scotchCoeffs =
+            decompositionDict_.subDict("scotchCoeffs");
+
+        scotchCoeffs.readIfPresent("processorWeights", processorWeights);
+    }
+    if (processorWeights.size())
+    {
+        if (debug)
+        {
+            Info<< "scotchDecomp : Using procesor weights " << processorWeights
+                << endl;
+        }
+        check
+        (
+            SCOTCH_archCmpltw(&archdat, nProcessors_, processorWeights.begin()),
+            "SCOTCH_archCmpltw"
+        );
+    }
+    else
+    {
+        check
+        (
+            SCOTCH_archCmplt(&archdat, nProcessors_),
+            "SCOTCH_archCmplt"
+        );
+    }
 
 
     //SCOTCH_Mapping mapdat;
@@ -209,6 +271,16 @@ Foam::label Foam::scotchDecomp::decompose
     //SCOTCH_graphMapExit(&grafdat, &mapdat);
 
 
+    // Hack:switch off fpu error trapping
+#   ifdef LINUX_GNUC
+    int oldExcepts = fedisableexcept
+    (
+        FE_DIVBYZERO
+      | FE_INVALID
+      | FE_OVERFLOW
+    );
+#   endif
+
     finalDecomp.setSize(xadj.size()-1);
     finalDecomp = 0;
     check
@@ -223,6 +295,11 @@ Foam::label Foam::scotchDecomp::decompose
         "SCOTCH_graphMap"
     );
 
+#   ifdef LINUX_GNUC
+    feenableexcept(oldExcepts);
+#   endif
+
+
 
     //finalDecomp.setSize(xadj.size()-1);
     //check
diff --git a/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8.H b/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8.H
index 71bfdbe92816ee196930ebe8505b4409ceda0608..d986946b578e18a92c3157af25bf131c34200e62 100644
--- a/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8.H
+++ b/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8.H
@@ -185,8 +185,6 @@ class hexRef8
             const bool searchForward,
             const label wantedLevel
         ) const;
-        //- Gets level such that the face has four points <= level.
-        label getAnchorLevel(const label faceI) const;
 
         ////- Print levels of list of points.
         //void printLevels(Ostream&, const labelList&) const;
@@ -370,6 +368,9 @@ public:
 
         // Refinement
 
+            //- Gets level such that the face has four points <= level.
+            label getAnchorLevel(const label faceI) const;
+
             //- Given valid mesh and current cell level and proposed
             //  cells to refine calculate any clashes (due to 2:1) and return
             //  ok list of cells to refine.
diff --git a/src/dynamicMesh/polyTopoChange/polyTopoChange/localPointRegion.H b/src/dynamicMesh/polyTopoChange/polyTopoChange/localPointRegion.H
index cecd70d390de58cb2199b1291f170470b675f6cc..8a2eff1eb91fa3597e4e332fd7926ae520153acb 100644
--- a/src/dynamicMesh/polyTopoChange/polyTopoChange/localPointRegion.H
+++ b/src/dynamicMesh/polyTopoChange/polyTopoChange/localPointRegion.H
@@ -159,7 +159,7 @@ public:
             //    return nRegions_;
             //}
 
-            //- Per point that is to duplicated to the local index
+            //- Per point that is to be duplicated the local index
             const Map<label>& meshPointMap() const
             {
                 return meshPointMap_;
diff --git a/src/dynamicMesh/polyTopoChange/polyTopoChange/polyTopoChange.C b/src/dynamicMesh/polyTopoChange/polyTopoChange/polyTopoChange.C
index d2728f8b9d634d40aa563b009502d909d9c493fe..27f81f3081f193ac4816f19b848de54c2fc69cc2 100644
--- a/src/dynamicMesh/polyTopoChange/polyTopoChange/polyTopoChange.C
+++ b/src/dynamicMesh/polyTopoChange/polyTopoChange/polyTopoChange.C
@@ -58,23 +58,6 @@ const Foam::point Foam::polyTopoChange::greatPoint
 
 // * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
 
-// Renumber
-void Foam::polyTopoChange::renumber
-(
-    const labelList& map,
-    DynamicList<label>& elems
-)
-{
-    forAll(elems, elemI)
-    {
-        if (elems[elemI] >= 0)
-        {
-            elems[elemI] = map[elems[elemI]];
-        }
-    }
-}
-
-
 // Renumber with special handling for merged items (marked with <-1)
 void Foam::polyTopoChange::renumberReverseMap
 (
@@ -208,6 +191,20 @@ void Foam::polyTopoChange::countMap
 }
 
 
+Foam::labelHashSet Foam::polyTopoChange::getSetIndices(const PackedBoolList& lst)
+{
+    labelHashSet values(lst.count());
+    forAll(lst, i)
+    {
+        if (lst[i])
+        {
+            values.insert(i);
+        }
+    }
+    return values;
+}
+
+
 void Foam::polyTopoChange::writeMeshStats(const polyMesh& mesh, Ostream& os)
 {
     const polyBoundaryMesh& patches = mesh.boundaryMesh();
@@ -383,6 +380,35 @@ void Foam::polyTopoChange::checkFace
             << " own:" << own << " nei:" << nei
             << " patchI:" << patchI << abort(FatalError);
     }
+    if (faceI >= 0 && faceI < faces_.size() && faceRemoved(faceI))
+    {
+        FatalErrorIn
+        (
+            "polyTopoChange::checkFace(const face&, const label"
+            ", const label, const label, const label)"
+        )   << "Face already marked for removal"
+            << nl
+            << "f:" << f
+            << " faceI(-1 if added face):" << faceI
+            << " own:" << own << " nei:" << nei
+            << " patchI:" << patchI << abort(FatalError);
+    }
+    forAll(f, fp)
+    {
+        if (f[fp] < points_.size() && pointRemoved(f[fp]))
+        {
+            FatalErrorIn
+            (
+                "polyTopoChange::checkFace(const face&, const label"
+                ", const label, const label, const label)"
+            )   << "Face uses removed vertices"
+                << nl
+                << "f:" << f
+                << " faceI(-1 if added face):" << faceI
+                << " own:" << own << " nei:" << nei
+                << " patchI:" << patchI << abort(FatalError);
+        }
+    }
 }
 
 
@@ -753,9 +779,11 @@ void Foam::polyTopoChange::reorderCompactFaces
 
     renumberKey(oldToNew, faceFromPoint_);
     renumberKey(oldToNew, faceFromEdge_);
-    renumber(oldToNew, flipFaceFlux_);
+    inplaceReorder(oldToNew, flipFaceFlux_);
+    flipFaceFlux_.setCapacity(newSize);
     renumberKey(oldToNew, faceZone_);
-    renumberKey(oldToNew, faceZoneFlip_);
+    inplaceReorder(oldToNew, faceZoneFlip_);
+    faceZoneFlip_.setCapacity(newSize);
 }
 
 
@@ -1068,6 +1096,18 @@ void Foam::polyTopoChange::compact
                         {
                             faces_[faceI] = faces_[faceI].reverseFace();
                             Swap(faceOwner_[faceI], faceNeighbour_[faceI]);
+                            flipFaceFlux_[faceI] =
+                            (
+                                flipFaceFlux_[faceI]
+                              ? 0
+                              : 1
+                            );
+                            faceZoneFlip_[faceI] =
+                            (
+                                faceZoneFlip_[faceI]
+                              ? 0
+                              : 1
+                            );
                         }
                     }
                 }
@@ -2273,9 +2313,9 @@ void Foam::polyTopoChange::addMesh
         faceMap_.setCapacity(faceMap_.size() + nAllFaces);
         faceFromPoint_.resize(faceFromPoint_.size() + nAllFaces/100);
         faceFromEdge_.resize(faceFromEdge_.size() + nAllFaces/100);
-        flipFaceFlux_.resize(flipFaceFlux_.size() + nAllFaces/100);
+        flipFaceFlux_.setCapacity(faces_.size() + nAllFaces);
         faceZone_.resize(faceZone_.size() + nAllFaces/100);
-        faceZoneFlip_.resize(faceZoneFlip_.size() + nAllFaces/100);
+        faceZoneFlip_.setCapacity(faces_.size() + nAllFaces);
 
 
         // Precalc offset zones
@@ -2687,16 +2727,13 @@ Foam::label Foam::polyTopoChange::addFace
     }
     reverseFaceMap_.append(faceI);
 
-    if (flipFaceFlux)
-    {
-        flipFaceFlux_.insert(faceI);
-    }
+    flipFaceFlux_[faceI] = (flipFaceFlux ? 1 : 0);
 
     if (zoneID >= 0)
     {
         faceZone_.insert(faceI, zoneID);
-        faceZoneFlip_.insert(faceI, zoneFlip);
     }
+    faceZoneFlip_[faceI] = (zoneFlip ? 1 : 0);
 
     return faceI;
 }
@@ -2725,14 +2762,7 @@ void Foam::polyTopoChange::modifyFace
     faceNeighbour_[faceI] = nei;
     region_[faceI] = patchID;
 
-    if (flipFaceFlux)
-    {
-        flipFaceFlux_.insert(faceI);
-    }
-    else
-    {
-        flipFaceFlux_.erase(faceI);
-    }
+    flipFaceFlux_[faceI] = (flipFaceFlux ? 1 : 0);
 
     Map<label>::iterator faceFnd = faceZone_.find(faceI);
 
@@ -2741,19 +2771,17 @@ void Foam::polyTopoChange::modifyFace
         if (zoneID >= 0)
         {
             faceFnd() = zoneID;
-            faceZoneFlip_.find(faceI)() = zoneFlip;
         }
         else
         {
             faceZone_.erase(faceFnd);
-            faceZoneFlip_.erase(faceI);
         }
     }
     else if (zoneID >= 0)
     {
         faceZone_.insert(faceI, zoneID);
-        faceZoneFlip_.insert(faceI, zoneFlip);
     }
+    faceZoneFlip_[faceI] = (zoneFlip ? 1 : 0);
 }
 
 
@@ -2794,9 +2822,9 @@ void Foam::polyTopoChange::removeFace(const label faceI, const label mergeFaceI)
     }
     faceFromEdge_.erase(faceI);
     faceFromPoint_.erase(faceI);
-    flipFaceFlux_.erase(faceI);
+    flipFaceFlux_[faceI] = 0;
     faceZone_.erase(faceI);
-    faceZoneFlip_.erase(faceI);
+    faceZoneFlip_[faceI] = 0;
 }
 
 
@@ -3090,6 +3118,7 @@ Foam::autoPtr<Foam::mapPolyMesh> Foam::polyTopoChange::changeMesh
     labelListList faceZonePointMap(mesh.faceZones().size());
     calcFaceZonePointMap(mesh, oldFaceZoneMeshPointMaps, faceZonePointMap);
 
+    labelHashSet flipFaceFluxSet(getSetIndices(flipFaceFlux_));
 
     return autoPtr<mapPolyMesh>
     (
@@ -3118,7 +3147,7 @@ Foam::autoPtr<Foam::mapPolyMesh> Foam::polyTopoChange::changeMesh
             reverseFaceMap_,
             reverseCellMap_,
 
-            flipFaceFlux_,
+            flipFaceFluxSet,
 
             patchPointMap,
 
@@ -3381,6 +3410,8 @@ Foam::autoPtr<Foam::mapPolyMesh> Foam::polyTopoChange::makeMesh
         writeMeshStats(mesh, Pout);
     }
 
+    labelHashSet flipFaceFluxSet(getSetIndices(flipFaceFlux_));
+
     return autoPtr<mapPolyMesh>
     (
         new mapPolyMesh
@@ -3408,7 +3439,7 @@ Foam::autoPtr<Foam::mapPolyMesh> Foam::polyTopoChange::makeMesh
             reverseFaceMap_,
             reverseCellMap_,
 
-            flipFaceFlux_,
+            flipFaceFluxSet,
 
             patchPointMap,
 
diff --git a/src/dynamicMesh/polyTopoChange/polyTopoChange/polyTopoChange.H b/src/dynamicMesh/polyTopoChange/polyTopoChange/polyTopoChange.H
index 9d0dce468c6cb288b2659587a5a5100931195fb8..77801e21f0dc33b703585f15ef3ffbd65a5c70ad 100644
--- a/src/dynamicMesh/polyTopoChange/polyTopoChange/polyTopoChange.H
+++ b/src/dynamicMesh/polyTopoChange/polyTopoChange/polyTopoChange.H
@@ -171,13 +171,13 @@ class polyTopoChange
             Map<label> faceFromEdge_;
 
             //- In mapping whether to reverse the flux.
-            labelHashSet flipFaceFlux_;
+            PackedBoolList flipFaceFlux_;
 
             //- Zone of face
             Map<label> faceZone_;
 
             //- Orientation of face in zone
-            Map<bool> faceZoneFlip_;
+            PackedBoolList faceZoneFlip_;
 
             //- Active faces
             label nActiveFaces_;
@@ -216,8 +216,7 @@ class polyTopoChange
         template<class T>
         static void renumberKey(const labelList& map, Map<T>&);
 
-        //- Renumber elements of list according to map
-        static void renumber(const labelList&, DynamicList<label>&);
+        //- Renumber elements of container according to map
         static void renumber(const labelList&, labelHashSet&);
         //- Special handling of reverse maps which have <-1 in them
         static void renumberReverseMap(const labelList&, DynamicList<label>&);
@@ -225,6 +224,9 @@ class polyTopoChange
         //- Renumber & compact elements of list according to map
         static void renumberCompact(const labelList&, labelList&);
 
+        //- Get all set elements as a labelHashSet
+        static labelHashSet getSetIndices(const PackedBoolList&);
+
         //- Count number of added and removed quantities from maps.
         static void countMap
         (
diff --git a/src/dynamicMesh/slidingInterface/coupleSlidingInterface.C b/src/dynamicMesh/slidingInterface/coupleSlidingInterface.C
index 82e77d76740542a500cfe0be5ccfbd7302bde215..18d1170c0073161c32dd6d9023aa0aef7fbc2d45 100644
--- a/src/dynamicMesh/slidingInterface/coupleSlidingInterface.C
+++ b/src/dynamicMesh/slidingInterface/coupleSlidingInterface.C
@@ -35,9 +35,11 @@ License
 #include "plane.H"
 #include "polyTopoChanger.H"
 #include "polyAddPoint.H"
+#include "polyRemovePoint.H"
 #include "polyAddFace.H"
 #include "polyModifyPoint.H"
 #include "polyModifyFace.H"
+#include "polyRemoveFace.H"
 
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
@@ -765,6 +767,9 @@ void Foam::slidingInterface::coupleInterface(polyTopoChange& ref) const
         projectedSlavePoints
     );
 
+    // Demand driven calculate the cut faces. Apart from the
+    // cutFaces/cutFaceMaster/cutFaceSlave no information from the cutPatch
+    // is used anymore!
     const faceList& cutFaces = cutPatch.cutFaces();
     const labelList& cutFaceMaster = cutPatch.cutFaceMaster();
     const labelList& cutFaceSlave = cutPatch.cutFaceSlave();
@@ -1109,22 +1114,26 @@ void Foam::slidingInterface::coupleInterface(polyTopoChange& ref) const
         {
             nOrphanedMasters++;
 
-            // Recover original orientation
-            ref.setAction
-            (
-                polyModifyFace
-                (
-                    masterPatch[faceI],                 // new face
-                    masterPatchAddr[faceI],             // master face index
-                    -1,                                 // owner
-                    -1,                                 // neighbour
-                    false,                              // flux flip
-                    -1,                                 // patch ID
-                    false,                              // remove from zone
-                    masterFaceZoneID_.index(),          // zone ID
-                    false                               // zone flip
-                )
-            );
+            //// Recover original orientation
+            //ref.setAction
+            //(
+            //    polyModifyFace
+            //    (
+            //        masterPatch[faceI],                 // new face
+            //        masterPatchAddr[faceI],             // master face index
+            //        -1,                                 // owner
+            //        -1,                                 // neighbour
+            //        false,                              // flux flip
+            //        -1,                                 // patch ID
+            //        false,                              // remove from zone
+            //        masterFaceZoneID_.index(),          // zone ID
+            //        false                               // zone flip
+            //    )
+            //);
+
+            //Pout<< "**MJ:deleting master face " << masterPatchAddr[faceI]
+            //    << " old verts:" << masterPatch[faceI] << endl;
+            ref.setAction(polyRemoveFace(masterPatchAddr[faceI]));
         }
     }
 
@@ -1136,22 +1145,26 @@ void Foam::slidingInterface::coupleInterface(polyTopoChange& ref) const
         {
             nOrphanedSlaves++;
 
-            // Recover original orientation
-            ref.setAction
-            (
-                polyModifyFace
-                (
-                    slavePatch[faceI],                // new face
-                    slavePatchAddr[faceI],            // slave face index
-                    -1,                               // owner
-                    -1,                               // neighbour
-                    false,                            // flux flip
-                    -1,                               // patch ID
-                    false,                            // remove from zone
-                    slaveFaceZoneID_.index(),         // zone ID
-                    false                             // zone flip
-                )
-            );
+            //// Recover original orientation
+            //ref.setAction
+            //(
+            //    polyModifyFace
+            //    (
+            //        slavePatch[faceI],                // new face
+            //        slavePatchAddr[faceI],            // slave face index
+            //        -1,                               // owner
+            //        -1,                               // neighbour
+            //        false,                            // flux flip
+            //        -1,                               // patch ID
+            //        false,                            // remove from zone
+            //        slaveFaceZoneID_.index(),         // zone ID
+            //        false                             // zone flip
+            //    )
+            //);
+
+            //Pout<< "**MJ:deleting slave face " << slavePatchAddr[faceI]
+            //    << " old verts:" << slavePatch[faceI] << endl;
+            ref.setAction(polyRemoveFace(slavePatchAddr[faceI]));
         }
     }
 
@@ -1400,24 +1413,46 @@ void Foam::slidingInterface::coupleInterface(polyTopoChange& ref) const
             face newFace;
             newFace.transfer(newFaceLabels);
 
-//             Pout << "Modifying master stick-out face " << curFaceID << " old face: " << oldFace << " new face: " << newFace << endl;
+            //Pout << "Modifying master stick-out face " << curFaceID
+            //    << " old face: " << oldFace << " new face: " << newFace << endl;
 
             // Modify the face
-            ref.setAction
-            (
-                polyModifyFace
+            if (mesh.isInternalFace(curFaceID))
+            {
+                ref.setAction
                 (
-                    newFace,                // modified face
-                    curFaceID,              // label of face being modified
-                    own[curFaceID],         // owner
-                    nei[curFaceID],         // neighbour
-                    false,                  // face flip
-                    mesh.boundaryMesh().whichPatch(curFaceID), // patch for face
-                    false,                  // remove from zone
-                    modifiedFaceZone,       // zone for face
-                    modifiedFaceZoneFlip    // face flip in zone
-                )
-            );
+                    polyModifyFace
+                    (
+                        newFace,                // modified face
+                        curFaceID,              // label of face being modified
+                        own[curFaceID],         // owner
+                        nei[curFaceID],         // neighbour
+                        false,                  // face flip
+                        -1,                     // patch for face
+                        false,                  // remove from zone
+                        modifiedFaceZone,       // zone for face
+                        modifiedFaceZoneFlip    // face flip in zone
+                    )
+                );
+            }
+            else
+            {
+                ref.setAction
+                (
+                    polyModifyFace
+                    (
+                        newFace,                // modified face
+                        curFaceID,              // label of face being modified
+                        own[curFaceID],         // owner
+                        -1,                     // neighbour
+                        false,                  // face flip
+                        mesh.boundaryMesh().whichPatch(curFaceID), // patch for face
+                        false,                  // remove from zone
+                        modifiedFaceZone,       // zone for face
+                        modifiedFaceZoneFlip    // face flip in zone
+                    )
+                );
+            }
         }
     }
 
@@ -1688,21 +1723,42 @@ void Foam::slidingInterface::coupleInterface(polyTopoChange& ref) const
 //             Pout << "Modifying slave stick-out face " << curFaceID << " old face: " << oldFace << " new face: " << newFace << endl;
 
             // Modify the face
-            ref.setAction
-            (
-                polyModifyFace
+            if (mesh.isInternalFace(curFaceID))
+            {
+                ref.setAction
                 (
-                    newFace,                // modified face
-                    curFaceID,              // label of face being modified
-                    own[curFaceID],         // owner
-                    nei[curFaceID],         // neighbour
-                    false,                  // face flip
-                    mesh.boundaryMesh().whichPatch(curFaceID), // patch for face
-                    false,                  // remove from zone
-                    modifiedFaceZone,       // zone for face
-                    modifiedFaceZoneFlip    // face flip in zone
-                )
-            );
+                    polyModifyFace
+                    (
+                        newFace,                // modified face
+                        curFaceID,              // label of face being modified
+                        own[curFaceID],         // owner
+                        nei[curFaceID],         // neighbour
+                        false,                  // face flip
+                        -1,                     // patch for face
+                        false,                  // remove from zone
+                        modifiedFaceZone,       // zone for face
+                        modifiedFaceZoneFlip    // face flip in zone
+                    )
+                );
+            }
+            else
+            {
+                ref.setAction
+                (
+                    polyModifyFace
+                    (
+                        newFace,                // modified face
+                        curFaceID,              // label of face being modified
+                        own[curFaceID],         // owner
+                        -1,                     // neighbour
+                        false,                  // face flip
+                        mesh.boundaryMesh().whichPatch(curFaceID), // patch for face
+                        false,                  // remove from zone
+                        modifiedFaceZone,       // zone for face
+                        modifiedFaceZoneFlip    // face flip in zone
+                    )
+                );
+            }
         }
     }
 
@@ -1735,15 +1791,25 @@ void Foam::slidingInterface::coupleInterface(polyTopoChange& ref) const
             // slave patch
             nRetiredPoints++;
 
+            //ref.setAction
+            //(
+            //    polyModifyPoint
+            //    (
+            //        slaveMeshPoints[pointI],             // point ID
+            //        points[slaveMeshPoints[pointI]],     // point
+            //        false,                               // remove from zone
+            //        mesh.pointZones().whichZone(slaveMeshPoints[pointI]),// zone
+            //        false                                // in a cell
+            //    )
+            //);
+            //Pout<< "MJ retire slave point " << slaveMeshPoints[pointI]
+            //    << " coord " << points[slaveMeshPoints[pointI]]
+            //    << endl;
             ref.setAction
             (
-                polyModifyPoint
+                polyRemovePoint
                 (
-                    slaveMeshPoints[pointI],             // point ID
-                    points[slaveMeshPoints[pointI]],     // point
-                    false,                               // remove from zone
-                    mesh.pointZones().whichZone(slaveMeshPoints[pointI]),// zone
-                    false                                // in a cell
+                    slaveMeshPoints[pointI]
                 )
             );
 
diff --git a/src/dynamicMesh/slidingInterface/enrichedPatch/enrichedPatch.C b/src/dynamicMesh/slidingInterface/enrichedPatch/enrichedPatch.C
index 11c401027d3f92e3780991ad3b3c036798543e5b..eb191b3f0f124bfd971fa91d9e6e3bcb5fb6bf4a 100644
--- a/src/dynamicMesh/slidingInterface/enrichedPatch/enrichedPatch.C
+++ b/src/dynamicMesh/slidingInterface/enrichedPatch/enrichedPatch.C
@@ -28,6 +28,8 @@ Description
 
 #include "enrichedPatch.H"
 #include "demandDrivenData.H"
+#include "OFstream.H"
+#include "meshTools.H"
 
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
@@ -249,6 +251,33 @@ bool Foam::enrichedPatch::checkSupport() const
 }
 
 
+void Foam::enrichedPatch::writeOBJ(const fileName& fName) const
+{
+    OFstream str(fName);
+
+    const pointField& lp = localPoints();
+
+    forAll(lp, pointI)
+    {
+        meshTools::writeOBJ(str, lp[pointI]);
+    }
+
+    const faceList& faces = localFaces();
+
+    forAll(faces, faceI)
+    {
+        const face& f = faces[faceI];
+
+        str << 'f';
+        forAll(f, fp)
+        {
+            str << ' ' << f[fp]+1;
+        }
+        str << nl;
+    }
+}
+
+
 // * * * * * * * * * * * * * * * Member Operators  * * * * * * * * * * * * * //
 
 
diff --git a/src/dynamicMesh/slidingInterface/enrichedPatch/enrichedPatch.H b/src/dynamicMesh/slidingInterface/enrichedPatch/enrichedPatch.H
index 0bf22c513cb7df9510b7ed9bfa3c7d53728f1ba5..f8f7e8f5e9812f399669891852f5204f830e45d8 100644
--- a/src/dynamicMesh/slidingInterface/enrichedPatch/enrichedPatch.H
+++ b/src/dynamicMesh/slidingInterface/enrichedPatch/enrichedPatch.H
@@ -199,9 +199,9 @@ public:
         (
             const primitiveFacePatch& masterPatch,
             const primitiveFacePatch& slavePatch,
-            const labelList& slavePointPointHits,
-            const labelList& slavePointEdgeHits,
-            const List<objectHit>& slavePointFaceHits
+            const labelList& slavePointPointHits,// -1 or common point snapped to
+            const labelList& slavePointEdgeHits, // -1 or common edge snapped to
+            const List<objectHit>& slavePointFaceHits // master face snapped to
         );
 
 
@@ -276,6 +276,10 @@ public:
 
         //- Check if the patch is fully supported
         bool checkSupport() const;
+
+
+        //- Debugging: dump graphical representation to obj format file
+        void writeOBJ(const fileName&) const;
 };
 
 
diff --git a/src/dynamicMesh/slidingInterface/slidingInterface.C b/src/dynamicMesh/slidingInterface/slidingInterface.C
index 0f8dd3603af39d6de31a581a915de396546a7d93..80d68749e84ae89a39ec3d900c418fd34457126a 100644
--- a/src/dynamicMesh/slidingInterface/slidingInterface.C
+++ b/src/dynamicMesh/slidingInterface/slidingInterface.C
@@ -664,14 +664,15 @@ void Foam::slidingInterface::updateMesh(const mapPolyMesh& m)
     masterPatchID_.update(mesh.boundaryMesh());
     slavePatchID_.update(mesh.boundaryMesh());
 
-    if (!attached())
-    {
-        calcAttachedAddressing();
-    }
-    else
-    {
-        renumberAttachedAddressing(m);
-    }
+//MJ:Disabled updating
+//    if (!attached())
+//    {
+//        calcAttachedAddressing();
+//    }
+//    else
+//    {
+//        renumberAttachedAddressing(m);
+//    }
 }
 
 
diff --git a/src/finiteVolume/Make/files b/src/finiteVolume/Make/files
index 54afdb355197c66add7dfcee688bec1e63ad50fe..54bfbc7cf6e4a46600704deee7add747fd581d92 100644
--- a/src/finiteVolume/Make/files
+++ b/src/finiteVolume/Make/files
@@ -39,26 +39,41 @@ fvMeshMapper = fvMesh/fvMeshMapper
 $(fvMeshMapper)/fvPatchMapper.C
 $(fvMeshMapper)/fvSurfaceMapper.C
 
+
 extendedStencil = fvMesh/extendedStencil
-$(extendedStencil)/extendedStencil.C
-$(extendedStencil)/extendedUpwindStencil.C
-$(extendedStencil)/extendedCentredStencil.C
-
-$(extendedStencil)/faceStencil/faceStencil.C
-$(extendedStencil)/faceStencil/faceEdgeCellStencil.C
-$(extendedStencil)/faceStencil/cellFaceCellStencil.C
-$(extendedStencil)/faceStencil/cellPointCellStencil.C
-$(extendedStencil)/faceStencil/cellEdgeCellStencil.C
-
-$(extendedStencil)/extendedStencilMeshObjects/centredCECStencilObject.C
-$(extendedStencil)/extendedStencilMeshObjects/centredCFCStencilObject.C
-$(extendedStencil)/extendedStencilMeshObjects/centredCPCStencilObject.C
-$(extendedStencil)/extendedStencilMeshObjects/centredFECStencilObject.C
-
-$(extendedStencil)/extendedStencilMeshObjects/upwindCECStencilObject.C
-$(extendedStencil)/extendedStencilMeshObjects/upwindCFCStencilObject.C
-$(extendedStencil)/extendedStencilMeshObjects/upwindCPCStencilObject.C
-$(extendedStencil)/extendedStencilMeshObjects/upwindFECStencilObject.C
+
+cellToCell = $(extendedStencil)/cellToCell
+$(cellToCell)/fullStencils/cellToCellStencil.C
+$(cellToCell)/fullStencils/CFCCellToCellStencil.C
+$(cellToCell)/fullStencils/CPCCellToCellStencil.C
+$(cellToCell)/fullStencils/CECCellToCellStencil.C
+
+cellToFace = $(extendedStencil)/cellToFace
+$(cellToFace)/fullStencils/cellToFaceStencil.C
+$(cellToFace)/fullStencils/CFCCellToFaceStencil.C
+$(cellToFace)/fullStencils/CECCellToFaceStencil.C
+$(cellToFace)/fullStencils/CPCCellToFaceStencil.C
+$(cellToFace)/fullStencils/FECCellToFaceStencil.C
+$(cellToFace)/extendedCellToFaceStencil.C
+$(cellToFace)/extendedCentredCellToFaceStencil.C
+$(cellToFace)/extendedUpwindCellToFaceStencil.C
+$(cellToFace)/MeshObjects/centredCECCellToFaceStencilObject.C
+$(cellToFace)/MeshObjects/centredCFCCellToFaceStencilObject.C
+$(cellToFace)/MeshObjects/centredCPCCellToFaceStencilObject.C
+$(cellToFace)/MeshObjects/centredFECCellToFaceStencilObject.C
+$(cellToFace)/MeshObjects/upwindCECCellToFaceStencilObject.C
+$(cellToFace)/MeshObjects/upwindCFCCellToFaceStencilObject.C
+$(cellToFace)/MeshObjects/upwindCPCCellToFaceStencilObject.C
+$(cellToFace)/MeshObjects/upwindFECCellToFaceStencilObject.C
+$(cellToFace)/MeshObjects/pureUpwindCFCCellToFaceStencilObject.C
+
+faceToCell = $(extendedStencil)/faceToCell
+$(faceToCell)/fullStencils/faceToCellStencil.C
+$(faceToCell)/fullStencils/CFCFaceToCellStencil.C
+$(faceToCell)/extendedFaceToCellStencil.C
+$(faceToCell)/extendedCentredFaceToCellStencil.C
+$(faceToCell)/MeshObjects/centredCFCFaceToCellStencilObject.C
+
 
 fvPatchFields = fields/fvPatchFields
 $(fvPatchFields)/fvPatchField/fvPatchFields.C
@@ -93,8 +108,7 @@ $(derivedFvPatchFields)/advective/advectiveFvPatchFields.C
 $(derivedFvPatchFields)/directMappedFixedValue/directMappedFixedValueFvPatchFields.C
 $(derivedFvPatchFields)/directMappedVelocityFluxFixedValue/directMappedVelocityFluxFixedValueFvPatchField.C
 $(derivedFvPatchFields)/fan/fanFvPatchFields.C
-$(derivedFvPatchFields)/fixedFluxBuoyantPressure/fixedFluxBuoyantPressureFvPatchScalarField.C
-$(derivedFvPatchFields)/fixedFluxBoussinesqBuoyantPressure/fixedFluxBoussinesqBuoyantPressureFvPatchScalarField.C
+$(derivedFvPatchFields)/buoyantPressure/buoyantPressureFvPatchScalarField.C
 $(derivedFvPatchFields)/fixedFluxPressure/fixedFluxPressureFvPatchScalarField.C
 $(derivedFvPatchFields)/fixedInternalValueFvPatchField/fixedInternalValueFvPatchFields.C
 $(derivedFvPatchFields)/fixedNormalSlip/fixedNormalSlipFvPatchFields.C
@@ -133,6 +147,7 @@ $(derivedFvPatchFields)/turbulentInlet/turbulentInletFvPatchFields.C
 $(derivedFvPatchFields)/turbulentIntensityKineticEnergyInlet/turbulentIntensityKineticEnergyInletFvPatchScalarField.C
 $(derivedFvPatchFields)/uniformFixedValue/uniformFixedValueFvPatchFields.C
 $(derivedFvPatchFields)/waveTransmissive/waveTransmissiveFvPatchFields.C
+$(derivedFvPatchFields)/uniformDensityHydrostaticPressure/uniformDensityHydrostaticPressureFvPatchScalarField.C
 
 fvsPatchFields = fields/fvsPatchFields
 $(fvsPatchFields)/fvsPatchField/fvsPatchFields.C
@@ -166,6 +181,8 @@ $(interpolation)/interpolationCell/makeInterpolationCell.C
 $(interpolation)/interpolationCellPoint/cellPointWeight/cellPointWeight.C
 $(interpolation)/interpolationCellPoint/makeInterpolationCellPoint.C
 $(interpolation)/interpolationCellPointFace/makeInterpolationCellPointFace.C
+$(interpolation)/interpolationCellPointWallModified/cellPointWeightWallModified/cellPointWeightWallModified.C
+$(interpolation)/interpolationCellPointWallModified/makeInterpolationCellPointWallModified.C
 
 volPointInterpolation = interpolation/volPointInterpolation
 $(volPointInterpolation)/pointPatchInterpolation/pointPatchInterpolation.C
@@ -200,6 +217,10 @@ $(schemes)/quadraticFit/quadraticFit.C
 $(schemes)/quadraticLinearUpwindFit/quadraticLinearUpwindFit.C
 $(schemes)/quadraticUpwindFit/quadraticUpwindFit.C
 $(schemes)/cubicUpwindFit/cubicUpwindFit.C
+/*
+$(schemes)/quadraticLinearPureUpwindFit/quadraticLinearPureUpwindFit.C
+*/
+$(schemes)/linearPureUpwindFit/linearPureUpwindFit.C
 
 limitedSchemes = $(surfaceInterpolation)/limitedSchemes
 $(limitedSchemes)/limitedSurfaceInterpolationScheme/limitedSurfaceInterpolationSchemes.C
@@ -295,18 +316,32 @@ $(laplacianSchemes)/gaussLaplacianScheme/gaussLaplacianSchemes.C
 
 finiteVolume/fvc/fvcMeshPhi.C
 
-cfdTools/general/findRefCell/findRefCell.C
-cfdTools/general/adjustPhi/adjustPhi.C
-cfdTools/general/bound/bound.C
-cfdTools/general/porousMedia/porousZone.C
-cfdTools/general/porousMedia/porousZones.C
-cfdTools/general/MRF/MRFZone.C
-cfdTools/general/MRF/MRFZones.C
-cfdTools/general/fieldSources/pressureGradientExplicitSource/pressureGradientExplicitSource.C
-cfdTools/general/fieldSources/timeActivatedExplicitSource/timeActivatedExplicitSource.C
-cfdTools/general/SRF/SRFModel/SRFModel/SRFModel.C
-cfdTools/general/SRF/SRFModel/SRFModel/newSRFModel.C
-cfdTools/general/SRF/SRFModel/rpm/rpm.C
-cfdTools/general/SRF/derivedFvPatchFields/SRFVelocityFvPatchVectorField/SRFVelocityFvPatchVectorField.C
+general = cfdTools/general
+$(general)/findRefCell/findRefCell.C
+$(general)/adjustPhi/adjustPhi.C
+$(general)/bound/bound.C
+
+porousMedia = $(general)/porousMedia
+$(porousMedia)/porousZone.C
+$(porousMedia)/porousZones.C
+
+MRF = $(general)/MRF
+$(MRF)/MRFZone.C
+$(MRF)/MRFZones.C
+
+SRF = $(general)/SRF
+$(SRF)/SRFModel/SRFModel/SRFModel.C
+$(SRF)/SRFModel/SRFModel/newSRFModel.C
+$(SRF)/SRFModel/rpm/rpm.C
+$(SRF)/derivedFvPatchFields/SRFVelocityFvPatchVectorField/SRFVelocityFvPatchVectorField.C
+
+fieldSources = $(general)/fieldSources
+$(fieldSources)/pressureGradientExplicitSource/pressureGradientExplicitSource.C
+$(fieldSources)/timeActivatedExplicitSource/timeActivatedExplicitSource.C
+$(fieldSources)/timeActivatedExplicitCellSource/timeActivatedExplicitCellSource.C
+
+$(fieldSources)/timeActivatedExplicitMulticomponentPointSource/timeActivatedExplicitMulticomponentPointSource.C
+$(fieldSources)/timeActivatedExplicitMulticomponentPointSource/pointSourceProperties/pointSourceProperties.C
+$(fieldSources)/timeActivatedExplicitMulticomponentPointSource/pointSourceProperties/pointSourcePropertiesIO.C
 
 LIB = $(FOAM_LIBBIN)/libfiniteVolume
diff --git a/src/finiteVolume/cfdTools/compressible/compressibleContinuityErrs.H b/src/finiteVolume/cfdTools/compressible/compressibleContinuityErrs.H
index b846a36cde00196ab2210bc8d0ad705887ebc4f3..9500b6d6713d3f17b48f5a242680d34155f28b33 100644
--- a/src/finiteVolume/cfdTools/compressible/compressibleContinuityErrs.H
+++ b/src/finiteVolume/cfdTools/compressible/compressibleContinuityErrs.H
@@ -33,15 +33,11 @@ Description
 {
     dimensionedScalar totalMass = fvc::domainIntegrate(rho);
 
-    scalar sumLocalContErr = 
-    (
-        fvc::domainIntegrate(mag(rho - thermo->rho()))/totalMass
-    ).value();
-
-    scalar globalContErr = 
-    (
-        fvc::domainIntegrate(rho - thermo->rho())/totalMass
-    ).value();
+    scalar sumLocalContErr =
+        (fvc::domainIntegrate(mag(rho - thermo.rho()))/totalMass).value();
+
+    scalar globalContErr =
+        (fvc::domainIntegrate(rho - thermo.rho())/totalMass).value();
 
     cumulativeContErr += globalContErr;
 
diff --git a/src/finiteVolume/cfdTools/general/MRF/MRFZone.C b/src/finiteVolume/cfdTools/general/MRF/MRFZone.C
index ce32ad5b84c2ac57f520161ad93bd8ec1f8a14d5..3618d87ef5dfa6ea4ea03003cf5928d4d3c3c2e0 100644
--- a/src/finiteVolume/cfdTools/general/MRF/MRFZone.C
+++ b/src/finiteVolume/cfdTools/general/MRF/MRFZone.C
@@ -312,6 +312,31 @@ void Foam::MRFZone::addCoriolis(fvVectorMatrix& UEqn) const
 }
 
 
+void Foam::MRFZone::addCoriolis
+(
+    const volScalarField& rho,
+    fvVectorMatrix& UEqn
+) const
+{
+    if (cellZoneID_ == -1)
+    {
+        return;
+    }
+
+    const labelList& cells = mesh_.cellZones()[cellZoneID_];
+    const scalarField& V = mesh_.V();
+    vectorField& Usource = UEqn.source();
+    const vectorField& U = UEqn.psi();
+    const vector& Omega = Omega_.value();
+
+    forAll(cells, i)
+    {
+        label celli = cells[i];
+        Usource[celli] -= V[celli]*rho[celli]*(Omega ^ U[celli]);
+    }
+}
+
+
 void Foam::MRFZone::relativeVelocity(volVectorField& U) const
 {
     const volVectorField& C = mesh_.C();
diff --git a/src/finiteVolume/cfdTools/general/MRF/MRFZone.H b/src/finiteVolume/cfdTools/general/MRF/MRFZone.H
index 9fa3085914151d22df5fe9c59b0fef097878749d..d5554a5b0810ea1fab45d5474df22397db3390d7 100644
--- a/src/finiteVolume/cfdTools/general/MRF/MRFZone.H
+++ b/src/finiteVolume/cfdTools/general/MRF/MRFZone.H
@@ -154,6 +154,9 @@ public:
         //- Add the Coriolis force contribution to the momentum equation
         void addCoriolis(fvVectorMatrix& UEqn) const;
 
+        //- Add the Coriolis force contribution to the momentum equation
+        void addCoriolis(const volScalarField& rho, fvVectorMatrix& UEqn) const;
+
         //- Make the given absolute velocity relative within the MRF region
         void relativeVelocity(volVectorField& U) const;
 
diff --git a/src/finiteVolume/cfdTools/general/MRF/MRFZones.C b/src/finiteVolume/cfdTools/general/MRF/MRFZones.C
index 3e6854e3de3de0e92d8ace6ae528d9febf31b5b5..5ef8b3ee83ffbac7bdb843f8873d842aedd5208d 100644
--- a/src/finiteVolume/cfdTools/general/MRF/MRFZones.C
+++ b/src/finiteVolume/cfdTools/general/MRF/MRFZones.C
@@ -65,6 +65,19 @@ void Foam::MRFZones::addCoriolis(fvVectorMatrix& UEqn) const
 }
 
 
+void Foam::MRFZones::addCoriolis
+(
+    const volScalarField& rho,
+    fvVectorMatrix& UEqn
+) const
+{
+    forAll(*this, i)
+    {
+        operator[](i).addCoriolis(rho, UEqn);
+    }
+}
+
+
 void Foam::MRFZones::relativeVelocity(volVectorField& U) const
 {
     forAll(*this, i)
diff --git a/src/finiteVolume/cfdTools/general/MRF/MRFZones.H b/src/finiteVolume/cfdTools/general/MRF/MRFZones.H
index 8895963606eaa46f167d3e4213ba5195d9d9322c..6e979903a9b803fa4b897863876b3f23765517ff 100644
--- a/src/finiteVolume/cfdTools/general/MRF/MRFZones.H
+++ b/src/finiteVolume/cfdTools/general/MRF/MRFZones.H
@@ -76,6 +76,9 @@ public:
         //- Add the Coriolis force contribution to the momentum equation
         void addCoriolis(fvVectorMatrix& UEqn) const;
 
+        //- Add the Coriolis force contribution to the momentum equation
+        void addCoriolis(const volScalarField& rho, fvVectorMatrix& UEqn) const;
+
         //- Make the given absolute velocity relative within the MRF region
         void relativeVelocity(volVectorField& U) const;
 
diff --git a/src/finiteVolume/cfdTools/general/fieldSources/timeActivatedExplicitCellSource/timeActivatedExplicitCellSource.C b/src/finiteVolume/cfdTools/general/fieldSources/timeActivatedExplicitCellSource/timeActivatedExplicitCellSource.C
new file mode 100644
index 0000000000000000000000000000000000000000..624adadf67f938b02c247c34dcaca254becba9bc
--- /dev/null
+++ b/src/finiteVolume/cfdTools/general/fieldSources/timeActivatedExplicitCellSource/timeActivatedExplicitCellSource.C
@@ -0,0 +1,175 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "timeActivatedExplicitCellSource.H"
+#include "volFields.H"
+
+// * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
+
+void Foam::timeActivatedExplicitCellSource::updateCellSet()
+{
+    cellSelector_->applyToSet(topoSetSource::NEW, selectedCellSet_);
+
+    Info<< "    " << name_ << ": selected "
+        << returnReduce(selectedCellSet_.size(), sumOp<label>())
+        << " cells" << nl << endl;
+
+    V_ = scalarField(selectedCellSet_.size(), 1.0);
+    if (volumeType_ == vtAbsolute)
+    {
+        label i = 0;
+        forAllConstIter(cellSet, selectedCellSet_, iter)
+        {
+            V_[i++] = mesh_.V()[iter.key()];
+        }
+    }
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::timeActivatedExplicitCellSource::timeActivatedExplicitCellSource
+(
+    const word& name,
+    const fvMesh& mesh,
+    const dimensionSet& dims
+)
+:
+    timeActivatedExplicitSource(name, mesh, dims),
+    onValue_(readScalar(lookup("onValue"))),
+    offValue_(readScalar(lookup("offValue"))),
+    V_(0),
+    cellSource_(lookup("cellSource")),
+    cellSelector_
+    (
+        topoSetSource::New
+        (
+            cellSource_,
+            mesh,
+            subDict(cellSource_ + "Coeffs")
+        )
+    ),
+    selectedCellSet_
+    (
+        mesh,
+        name + "SourceCellSet",
+        mesh.nCells()/10 + 1  // Reasonable size estimate.
+    )
+{
+    // Create the cell set
+    updateCellSet();
+}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::scalar Foam::timeActivatedExplicitCellSource::onValue() const
+{
+    return onValue_;
+}
+
+
+Foam::scalar Foam::timeActivatedExplicitCellSource::offValue() const
+{
+    return offValue_;
+}
+
+
+Foam::tmp<Foam::DimensionedField<Foam::scalar, Foam::volMesh> >
+Foam::timeActivatedExplicitCellSource::Su()
+{
+    tmp<DimensionedField<scalar, volMesh> > tSource
+    (
+        new DimensionedField<scalar, volMesh>
+        (
+            IOobject
+            (
+                name_ + "Su",
+                runTime_.timeName(),
+                mesh_,
+                IOobject::NO_READ,
+                IOobject::NO_WRITE
+            ),
+            mesh_,
+            dimensionedScalar("zero", dimensions_, 0.0)
+        )
+    );
+
+    scalar value = offValue_;
+    if
+    (
+        active_
+     && (runTime_.time().value() >= timeStart_)
+     && (runTime_.time().value() <= timeStart_ + duration_)
+    )
+    {
+        // Update the cell set if the mesh is changing
+        if (mesh_.changing())
+        {
+            updateCellSet();
+        }
+
+        value = onValue_;
+    }
+
+    DimensionedField<scalar, volMesh>& sourceField = tSource();
+
+    label i = 0;
+    forAllConstIter(cellSet, selectedCellSet_, iter)
+    {
+        sourceField[iter.key()] = value/V_[i++];
+    }
+
+    return tSource;
+}
+
+
+bool Foam::timeActivatedExplicitCellSource::read()
+{
+    if (timeActivatedExplicitSource::read())
+    {
+        lookup("onValue") >> onValue_;
+        lookup("offValue") >> offValue_;
+        lookup("cellSource") >> cellSource_;
+        cellSelector_ =
+            topoSetSource::New
+            (
+                cellSource_,
+                mesh_,
+                subDict(cellSource_ + "Coeffs")
+            );
+        updateCellSet();
+
+        return true;
+    }
+    else
+    {
+        return false;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/cfdTools/general/fieldSources/timeActivatedExplicitCellSource/timeActivatedExplicitCellSource.H b/src/finiteVolume/cfdTools/general/fieldSources/timeActivatedExplicitCellSource/timeActivatedExplicitCellSource.H
new file mode 100644
index 0000000000000000000000000000000000000000..96dfb3a5e822609beccce827aa97d5e88f98afdf
--- /dev/null
+++ b/src/finiteVolume/cfdTools/general/fieldSources/timeActivatedExplicitCellSource/timeActivatedExplicitCellSource.H
@@ -0,0 +1,143 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::timeActivatedExplicitSourceNew
+
+Description
+    Creates a cell set source that is activated at a given time, and remains
+    active for a specified duration. The source value is either in specific
+    (XX/m3) or absolute (XX) units.
+
+SourceFiles
+    timeActivatedExplicitCellSource.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef timeActivatedExplicitCellSource_H
+#define timeActivatedExplicitCellSource_H
+
+#include "timeActivatedExplicitSource.H"
+#include "topoSetSource.H"
+#include "cellSet.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+              Class timeActivatedExplicitCellSource Declaration
+\*---------------------------------------------------------------------------*/
+
+class timeActivatedExplicitCellSource
+:
+    public timeActivatedExplicitSource
+{
+private:
+
+    // Private member functions
+
+        //- Update the cell set that the source is acting on
+        void updateCellSet();
+
+
+    // Private Member Functions
+
+        //- Disallow default bitwise copy construct
+        timeActivatedExplicitCellSource(const timeActivatedExplicitCellSource&);
+
+        //- Disallow default bitwise assignment
+        void operator=(const timeActivatedExplicitCellSource&);
+
+
+protected:
+
+    // Protected data
+
+        // Source properties
+
+            //- Value when "on"
+            scalar onValue_;
+
+            //- Value when "off"
+            scalar offValue_;
+
+
+        // Cell set
+
+            //- Cell volumes
+            scalarList V_;
+
+            //- Name of cell source (XXXToCell)
+            word cellSource_;
+
+            //- Method by which the cells will be selected
+            autoPtr<topoSetSource> cellSelector_;
+
+            //- Set of selected cells
+            cellSet selectedCellSet_;
+
+
+public:
+
+    // Constructors
+
+        //- Construct from explicit source name and mesh
+        timeActivatedExplicitCellSource
+        (
+            const word&,
+            const fvMesh&,
+            const dimensionSet&
+        );
+
+
+    // Member Functions
+
+        // Access
+
+            //- Return the "on" value
+            virtual scalar onValue() const;
+
+            //- Return the "off" value
+            virtual scalar offValue() const;
+
+            //- Return a tmp field of the source
+            virtual tmp<DimensionedField<scalar, volMesh> > Su();
+
+
+        //- Read properties dictionary
+        virtual bool read();
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/cfdTools/general/fieldSources/timeActivatedExplicitMulticomponentPointSource/pointSourceProperties/pointSourceProperties.C b/src/finiteVolume/cfdTools/general/fieldSources/timeActivatedExplicitMulticomponentPointSource/pointSourceProperties/pointSourceProperties.C
new file mode 100644
index 0000000000000000000000000000000000000000..5d7ad2ac46b509fbafb1b6448d98395be7ab9cf3
--- /dev/null
+++ b/src/finiteVolume/cfdTools/general/fieldSources/timeActivatedExplicitMulticomponentPointSource/pointSourceProperties/pointSourceProperties.C
@@ -0,0 +1,87 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "pointSourceProperties.H"
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::pointSourceProperties::pointSourceProperties()
+:
+    name_("unknownPointSourceName"),
+    timeStart_(0.0),
+    duration_(0.0),
+    location_(point::zero),
+    fieldData_()
+{}
+
+
+Foam::pointSourceProperties::pointSourceProperties(const dictionary& dict)
+:
+    name_(dict.name().name()),
+    timeStart_(readScalar(dict.lookup("timeStart"))),
+    duration_(readScalar(dict.lookup("duration"))),
+    location_(dict.lookup("location")),
+    fieldData_(dict.lookup("fieldData"))
+{}
+
+
+Foam::pointSourceProperties::pointSourceProperties
+(
+    const pointSourceProperties& psp
+)
+:
+    name_(psp.name_),
+    timeStart_(psp.timeStart_),
+    duration_(psp.duration_),
+    location_(psp.location_),
+    fieldData_(psp.fieldData_)
+{}
+
+
+// * * * * * * * * * * * * * * * Member Operators  * * * * * * * * * * * * * //
+
+void Foam::pointSourceProperties::operator=(const pointSourceProperties& rhs)
+{
+    // Check for assignment to self
+    if (this == &rhs)
+    {
+        FatalErrorIn
+        (
+            "pointSourceProperties::operator=(const pointSourceProperties&)"
+        )   << "Attempted assignment to self" << nl
+            << abort(FatalError);
+    }
+
+    // Set updated values
+    name_ = rhs.name_;
+    timeStart_ = rhs.timeStart_;
+    duration_ = rhs.duration_;
+    location_ = rhs.location_;
+    fieldData_ = rhs.fieldData_;}
+
+
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/cfdTools/general/fieldSources/timeActivatedExplicitMulticomponentPointSource/pointSourceProperties/pointSourceProperties.H b/src/finiteVolume/cfdTools/general/fieldSources/timeActivatedExplicitMulticomponentPointSource/pointSourceProperties/pointSourceProperties.H
new file mode 100644
index 0000000000000000000000000000000000000000..c83e3fc6662634ff92882909fdbc54721bfa2f58
--- /dev/null
+++ b/src/finiteVolume/cfdTools/general/fieldSources/timeActivatedExplicitMulticomponentPointSource/pointSourceProperties/pointSourceProperties.H
@@ -0,0 +1,158 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::pointSourceProperties
+
+Description
+    Helper class to describe point source properties
+
+SourceFiles
+    pointSourceProperties.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef pointSourceProperties_H
+#define pointSourceProperties_H
+
+#include "IOdictionary.H"
+#include "fvMesh.H"
+#include "Time.H"
+#include "Tuple2.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+                   Class pointSourceProperties Declaration
+\*---------------------------------------------------------------------------*/
+
+class pointSourceProperties
+{
+protected:
+
+    // Protected data
+
+        typedef Tuple2<word, scalar> fieldNameValuePair;
+
+        //- Source name
+        word name_;
+
+        //- Time start
+        scalar timeStart_;
+
+        //- Duration
+        scalar duration_;
+
+        //- Point location
+        point location_;
+
+        //- List of source field name vs value pairs
+        List<fieldNameValuePair> fieldData_;
+
+
+public:
+
+    // Constructors
+
+        //- Construct null
+        pointSourceProperties();
+
+        //- Construct from dictionary
+        pointSourceProperties(const dictionary& dict);
+
+        //- Construct from Istream
+        pointSourceProperties(Istream& is);
+
+        //- Copy constructor
+        pointSourceProperties(const pointSourceProperties&);
+
+
+    // Member Functions
+
+        // Access
+
+            //- Return const access to the source name
+            inline const word& name() const;
+
+            //- Return const access to the time start
+            inline scalar timeStart() const;
+
+            //- Return const access to the time end
+            inline scalar timeEnd() const;
+
+            //- Return const access to the duration
+            inline scalar duration() const;
+
+            //- Return const access to the point location
+            inline const point& location() const;
+
+            //- Return const access to the source field name vs value pairs
+            inline const List<fieldNameValuePair>& fieldData() const;
+
+
+        // Edit
+
+            //- Return access to the source name
+            inline word& name();
+
+            //- Return access to the time start
+            inline scalar& timeStart();
+
+            //- Return access to the duration
+            inline scalar& duration();
+
+            //- Return access to the point location
+            inline point& location();
+
+            //- Return access to the source field name vs value pairs
+            inline List<fieldNameValuePair>& fieldData();
+
+
+        // Member Operators
+
+            void operator=(const pointSourceProperties&);
+
+        // IOstream operators
+
+            friend Istream& operator>>(Istream&, pointSourceProperties&);
+            friend Ostream& operator<<(Ostream&, const pointSourceProperties&);
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "pointSourcePropertiesI.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/utilities/preProcessing/mdInitialise/molConfig_old/molConfigI.H b/src/finiteVolume/cfdTools/general/fieldSources/timeActivatedExplicitMulticomponentPointSource/pointSourceProperties/pointSourcePropertiesI.H
similarity index 56%
rename from applications/utilities/preProcessing/mdInitialise/molConfig_old/molConfigI.H
rename to src/finiteVolume/cfdTools/general/fieldSources/timeActivatedExplicitMulticomponentPointSource/pointSourceProperties/pointSourcePropertiesI.H
index 2cfd5bf57bcf750224f9d2c42f55633d36f4e4e9..60d02c2d5d14f295bee2ad0e2390c121312b52bf 100644
--- a/applications/utilities/preProcessing/mdInitialise/molConfig_old/molConfigI.H
+++ b/src/finiteVolume/cfdTools/general/fieldSources/timeActivatedExplicitMulticomponentPointSource/pointSourceProperties/pointSourcePropertiesI.H
@@ -24,75 +24,76 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
+#include "pointSourceProperties.H"
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-inline const List<word>& molConfig::molIdList() const
+inline const Foam::word& Foam::pointSourceProperties::name() const
 {
-    return idList_;
+    return name_;
 }
 
 
-inline const labelField& molConfig::id() const
+inline Foam::scalar Foam::pointSourceProperties::timeStart() const
 {
-    return id_;
+    return timeStart_;
 }
 
 
-inline const scalarField& molConfig::mass() const
+inline Foam::scalar Foam::pointSourceProperties::timeEnd() const
 {
-    return mass_;
+    return timeStart_ + duration_;
 }
 
 
-inline const vectorField& molConfig::positions() const
+inline Foam::scalar Foam::pointSourceProperties::duration() const
 {
-    return positions_;
+    return duration_;
 }
 
 
-inline const labelField& molConfig::cells() const
+inline const Foam::point& Foam::pointSourceProperties::location() const
 {
-    return cells_;
+    return location_;
 }
 
 
-inline const vectorField& molConfig::U() const
+inline const Foam::List<Foam::pointSourceProperties::fieldNameValuePair>&
+Foam::pointSourceProperties::fieldData() const
 {
-    return U_;
+    return fieldData_;
 }
 
 
-inline const vectorField& molConfig::A() const
+inline Foam::word& Foam::pointSourceProperties::name()
 {
-    return A_;
+    return name_;
 }
 
 
-inline const labelField& molConfig::tethered() const
+inline Foam::scalar& Foam::pointSourceProperties::timeStart()
 {
-    return tethered_;
+    return timeStart_;
 }
 
 
-inline const vectorField& molConfig::tetherPositions() const
+inline Foam::scalar& Foam::pointSourceProperties::duration()
 {
-    return tetherPositions_;
+    return duration_;
 }
 
 
-inline label molConfig::nMol() const
+inline Foam::point& Foam::pointSourceProperties::location()
 {
-    return nMol_;
+    return location_;
 }
 
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+inline Foam::List<Foam::pointSourceProperties::fieldNameValuePair>&
+Foam::pointSourceProperties::fieldData()
+{
+    return fieldData_;
+}
 
-} // End namespace Foam
 
 // ************************************************************************* //
diff --git a/src/finiteVolume/cfdTools/general/fieldSources/timeActivatedExplicitMulticomponentPointSource/pointSourceProperties/pointSourcePropertiesIO.C b/src/finiteVolume/cfdTools/general/fieldSources/timeActivatedExplicitMulticomponentPointSource/pointSourceProperties/pointSourcePropertiesIO.C
new file mode 100644
index 0000000000000000000000000000000000000000..5b0ca2e63efa8751afa1425704cb5d3f72d31d25
--- /dev/null
+++ b/src/finiteVolume/cfdTools/general/fieldSources/timeActivatedExplicitMulticomponentPointSource/pointSourceProperties/pointSourcePropertiesIO.C
@@ -0,0 +1,88 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "pointSourceProperties.H"
+#include "dictionaryEntry.H"
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::pointSourceProperties::pointSourceProperties(Istream& is)
+:
+    name_("unknownPointSourceName"),
+    timeStart_(0.0),
+    duration_(0.0),
+    location_(point::zero),
+    fieldData_()
+{
+    is.check("pointSourceProperties(Istream&)");
+
+    const dictionaryEntry entry(dictionary::null, is);
+
+    name_ = entry.keyword();
+    entry.lookup("timeStart") >> timeStart_;
+    entry.lookup("duration") >> duration_;
+    entry.lookup("location") >> location_;
+    entry.lookup("fieldData") >> fieldData_;
+}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::Istream& Foam::operator>>(Istream& is, pointSourceProperties& psp)
+{
+    is.check("Istream& operator>>(Istream&, pointSourceProperties&)");
+
+    const dictionaryEntry entry(dictionary::null, is);
+
+    psp.name_ = entry.keyword();
+    entry.lookup("timeStart") >> psp.timeStart_;
+    entry.lookup("duration") >> psp.duration_;
+    entry.lookup("location") >> psp.location_;
+    entry.lookup("fieldData") >> psp.fieldData_;
+
+    return is;
+}
+
+
+Foam::Ostream& Foam::operator<<(Ostream& os, const pointSourceProperties& psp)
+{
+    os.check("Ostream& operator<<(Ostream&, const pointSourceProperties&)");
+
+    os  << psp.name_ << nl << token::BEGIN_BLOCK << nl;
+    os.writeKeyword("timeStart") << psp.timeStart_ << token::END_STATEMENT << nl;
+    os.writeKeyword("duration") << psp.duration_ << token::END_STATEMENT << nl;
+    os.writeKeyword("location") << psp.location_ << token::END_STATEMENT << nl;
+    os.writeKeyword("fieldData") << psp.fieldData_ << token::END_STATEMENT << nl;
+    os  << token::END_BLOCK << nl;
+
+    os.check("Ostream& operator<<(Ostream&, const pointSourceProperties&)");
+
+    return os;
+}
+
+
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/cfdTools/general/fieldSources/timeActivatedExplicitMulticomponentPointSource/timeActivatedExplicitMulticomponentPointSource.C b/src/finiteVolume/cfdTools/general/fieldSources/timeActivatedExplicitMulticomponentPointSource/timeActivatedExplicitMulticomponentPointSource.C
new file mode 100644
index 0000000000000000000000000000000000000000..221b7949b4365c9bad6c6753e1cac6b831e579d5
--- /dev/null
+++ b/src/finiteVolume/cfdTools/general/fieldSources/timeActivatedExplicitMulticomponentPointSource/timeActivatedExplicitMulticomponentPointSource.C
@@ -0,0 +1,292 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "timeActivatedExplicitMulticomponentPointSource.H"
+#include "volFields.H"
+
+// * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
+
+Foam::label
+Foam::timeActivatedExplicitMulticomponentPointSource::carrierFieldId
+(
+    const word& fieldName
+)
+{
+    forAll(carrierFields_, fieldI)
+    {
+        if (carrierFields_[fieldI].name() == fieldName)
+        {
+            return fieldI;
+        }
+    }
+
+    return -1;
+}
+
+
+void Foam::timeActivatedExplicitMulticomponentPointSource::updateAddressing()
+{
+    forAll(pointSources_, sourceI)
+    {
+        const pointSourceProperties& psp = pointSources_[sourceI];
+        bool foundCell = false;
+        label cid = mesh_.findCell(psp.location());
+        if (cid >= 0)
+        {
+            foundCell = mesh_.pointInCell(psp.location(), cid);
+        }
+        reduce(foundCell, orOp<bool>());
+        if (!foundCell)
+        {
+            label cid = mesh_.findNearestCell(psp.location());
+            if (cid >= 0)
+            {
+                foundCell = mesh_.pointInCell(psp.location(), cid);
+            }
+        }
+        reduce(foundCell, orOp<bool>());
+
+        if (!foundCell)
+        {
+            FatalErrorIn
+            (
+                "timeActivatedExplicitMulticomponentPointSource::"
+                "updateAddressing()"
+            )   << "Unable to find location " << psp.location() << " in mesh "
+                << "for source " << psp.name() << nl
+                << exit(FatalError);
+        }
+        else
+        {
+            cellOwners_[sourceI] = cid;
+        }
+
+        fieldIds_[sourceI].setSize(psp.fieldData().size());
+        forAll(psp.fieldData(), fieldI)
+        {
+            const word& fieldName = psp.fieldData()[fieldI].first();
+            label cfid = carrierFieldId(fieldName);
+            if (cfid < 0)
+            {
+                FatalErrorIn
+                (
+                    "timeActivatedExplicitMulticomponentPointSource::"
+                    "updateAddressing()"
+                )   << "Unable to find field " << fieldName << " in carrier "
+                    << "fields for source " << psp.name() << nl
+                    << exit(FatalError);
+            }
+            else
+            {
+                fieldIds_[sourceI][fieldI] = cfid;
+            }
+       }
+    }
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::timeActivatedExplicitMulticomponentPointSource::
+timeActivatedExplicitMulticomponentPointSource
+(
+    const word& name,
+    const fvMesh& mesh,
+    const PtrList<volScalarField>& carrierFields,
+    const dimensionSet& dims
+)
+:
+    IOdictionary
+    (
+        IOobject
+        (
+            name + "Properties",
+            mesh.time().constant(),
+            mesh,
+            IOobject::MUST_READ,
+            IOobject::NO_WRITE
+        )
+    ),
+    name_(name),
+    mesh_(mesh),
+    runTime_(mesh.time()),
+    dimensions_(dims),
+    carrierFields_(carrierFields),
+    active_(lookup("active")),
+    pointSources_(lookup("pointSources")),
+    cellOwners_(pointSources_.size()),
+    fieldIds_(pointSources_.size())
+{
+    // Initialise the field addressing
+    updateAddressing();
+}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::DimensionedField<Foam::scalar, Foam::volMesh> >
+Foam::timeActivatedExplicitMulticomponentPointSource::Su
+(
+    const label fieldI
+)
+{
+    if (mesh_.changing())
+    {
+        updateAddressing();
+    }
+
+    tmp<DimensionedField<scalar, volMesh> > tSource
+    (
+        new DimensionedField<scalar, volMesh>
+        (
+            IOobject
+            (
+                name_ + carrierFields_[fieldI].name() + "Su",
+                runTime_.timeName(),
+                mesh_,
+                IOobject::NO_READ,
+                IOobject::NO_WRITE
+            ),
+            mesh_,
+            dimensionedScalar("zero", dimensions_, 0.0)
+        )
+    );
+
+    if (active_)
+    {
+        DimensionedField<scalar, volMesh>& sourceField = tSource();
+
+        const scalarField& V = mesh_.V();
+        const scalar dt = runTime_.deltaT().value();
+
+        forAll(pointSources_, sourceI)
+        {
+            const pointSourceProperties& psp = pointSources_[sourceI];
+
+            forAll(fieldIds_[sourceI], i)
+            {
+                if
+                (
+                    fieldIds_[sourceI][i] == fieldI
+                && (runTime_.time().value() >= psp.timeStart())
+                && (runTime_.time().value() <= psp.timeEnd())
+                )
+                {
+                    const label cid = cellOwners_[sourceI];
+                    if (cid >= 0)
+                    {
+                        sourceField[cid] +=
+                            dt*psp.fieldData()[i].second()/V[cid];
+                    }
+                }
+            }
+        }
+    }
+
+    return tSource;
+}
+
+
+Foam::tmp<Foam::DimensionedField<Foam::scalar, Foam::volMesh> >
+Foam::timeActivatedExplicitMulticomponentPointSource::Su()
+{
+    if (mesh_.changing())
+    {
+        updateAddressing();
+    }
+
+    tmp<DimensionedField<scalar, volMesh> > tSource
+    (
+        new DimensionedField<scalar, volMesh>
+        (
+            IOobject
+            (
+                name_ + "TotalSu",
+                runTime_.timeName(),
+                mesh_,
+                IOobject::NO_READ,
+                IOobject::NO_WRITE
+            ),
+            mesh_,
+            dimensionedScalar("zero", dimensions_, 0.0)
+        )
+    );
+
+    if (active_)
+    {
+        DimensionedField<scalar, volMesh>& sourceField = tSource();
+
+        const scalarField& V = mesh_.V();
+        const scalar dt = runTime_.deltaT().value();
+
+        forAll(pointSources_, sourceI)
+        {
+            const pointSourceProperties& psp = pointSources_[sourceI];
+
+            forAll(fieldIds_[sourceI], i)
+            {
+                if
+                (
+                   (runTime_.time().value() >= psp.timeStart())
+                && (runTime_.time().value() <= psp.timeEnd())
+                )
+                {
+                    const label cid = cellOwners_[sourceI];
+                    if (cid >= 0)
+                    {
+                        sourceField[cid] +=
+                            dt*psp.fieldData()[i].second()/V[cid];
+                    }
+                }
+            }
+        }
+    }
+
+    return tSource;
+}
+
+
+bool Foam::timeActivatedExplicitMulticomponentPointSource::read()
+{
+    if (regIOobject::read())
+    {
+        lookup("active") >> active_;
+        lookup("pointSources") >> pointSources_;
+
+        cellOwners_.setSize(pointSources_.size());
+
+        updateAddressing();
+
+        return true;
+    }
+    else
+    {
+        return false;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/cfdTools/general/fieldSources/timeActivatedExplicitMulticomponentPointSource/timeActivatedExplicitMulticomponentPointSource.H b/src/finiteVolume/cfdTools/general/fieldSources/timeActivatedExplicitMulticomponentPointSource/timeActivatedExplicitMulticomponentPointSource.H
new file mode 100644
index 0000000000000000000000000000000000000000..a1d74268f90d8ba9db44cddc03b8f70316bc776b
--- /dev/null
+++ b/src/finiteVolume/cfdTools/general/fieldSources/timeActivatedExplicitMulticomponentPointSource/timeActivatedExplicitMulticomponentPointSource.H
@@ -0,0 +1,185 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::timeActivatedExplicitMulticomponentPointSourceNew
+
+Description
+    Provides a mechanism to introduce point sources to a set of carrier fields.
+    Carrier fields are supplied on consruction, and interrogated to provide the
+    field indices of the sources.
+
+    Source values are assumed to be in <quantity>/s, and divided through by the
+    cell volumes before being returned, e.g. for a kg/s source
+
+    Properties are described in a <name>Properties dictionary
+
+    active          true;       // are sources active (true/false)
+
+    pointSources
+    (
+        source1                 // source name
+        {
+            timeStart           0.0;
+            duration            1.0;
+            location            (0 0 0);
+            fieldData
+            (
+                (H2O            0.1)               // kg/s
+                (O2             0.05)              // kg/s
+            );
+        }
+        source2                 // source name
+        {
+            timeStart           0.5;
+            duration            2.0;
+            location            (1 1 1);
+            fieldData
+            (
+                (NO             0.1)               // kg/s
+                (CO2            0.05)              // kg/s
+                (H2             0.001)             // kg/s
+            );
+        }
+    );
+
+
+SourceFiles
+    timeActivatedExplicitMulticomponentPointSourceNew.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef timeActivatedExplicitMulticomponentPointSource_H
+#define timeActivatedExplicitMulticomponentPointSource_H
+
+#include "IOdictionary.H"
+#include "fvMesh.H"
+#include "Time.H"
+#include "pointSourceProperties.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+       Class timeActivatedExplicitMulitcomponentPointSource Declaration
+\*---------------------------------------------------------------------------*/
+
+class timeActivatedExplicitMulticomponentPointSource
+:
+    public IOdictionary
+{
+protected:
+
+    // Protected data
+
+        //- Name of the source
+        word name_;
+
+        //- Reference to the mesh
+        const fvMesh& mesh_;
+
+        //- Reference to time database
+        const Time& runTime_;
+
+        //- Source dimensions
+        const dimensionSet& dimensions_;
+
+        //- Reference to the multicomponent carrier fields
+        const PtrList<volScalarField>& carrierFields_;
+
+        //- Active flag
+        bool active_;
+
+        //- List of point source properties
+        List<pointSourceProperties> pointSources_;
+
+        //- List of cell owners for point source locations
+        List<label> cellOwners_;
+
+        //- List of field ids for each source
+        List<labelList> fieldIds_;
+
+
+    // Protected Member Functions
+
+        //- Return the id of field given its name
+        label carrierFieldId(const word& fieldName);
+
+        //- Update the addressing between source and carrier fields
+        void updateAddressing();
+
+        //- Disallow default bitwise copy construct
+        timeActivatedExplicitMulticomponentPointSource
+        (
+            const timeActivatedExplicitMulticomponentPointSource&
+        );
+
+        //- Disallow default bitwise assignment
+        void operator=(const timeActivatedExplicitMulticomponentPointSource&);
+
+
+public:
+
+    // Constructors
+
+        //- Construct from components
+        timeActivatedExplicitMulticomponentPointSource
+        (
+            const word&,
+            const fvMesh&,
+            const PtrList<volScalarField>&,
+            const dimensionSet&
+        );
+
+
+    // Member Functions
+
+        // Access
+
+            //- Return a tmp field of the source for field fieldI
+            virtual tmp<DimensionedField<scalar, volMesh> > Su
+            (
+                const label fieldI
+            );
+
+            //- Return a tmp field of the total source
+            virtual tmp<DimensionedField<scalar, volMesh> > Su();
+
+
+        //- Read properties dictionary
+        virtual bool read();
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/cfdTools/general/fieldSources/timeActivatedExplicitSource/timeActivatedExplicitSource.C b/src/finiteVolume/cfdTools/general/fieldSources/timeActivatedExplicitSource/timeActivatedExplicitSource.C
index 48de23bfe239d49755f674995ac405fb20409362..c59b74a770eba9dc0aba0fbca48068d46a22e6ba 100644
--- a/src/finiteVolume/cfdTools/general/fieldSources/timeActivatedExplicitSource/timeActivatedExplicitSource.C
+++ b/src/finiteVolume/cfdTools/general/fieldSources/timeActivatedExplicitSource/timeActivatedExplicitSource.C
@@ -44,33 +44,11 @@ const Foam::NamedEnum<Foam::timeActivatedExplicitSource::volumeType, 2>
 Foam::timeActivatedExplicitSource::volumeTypeNames_;
 
 
-// * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
-
-void Foam::timeActivatedExplicitSource::updateCellSet()
-{
-    cellSelector_->applyToSet(topoSetSource::NEW, selectedCellSet_);
-
-    Info<< "    " << sourceName_ << ": selected "
-        << returnReduce(selectedCellSet_.size(), sumOp<label>())
-        << " cells" << nl << endl;
-
-    V_ = scalarField(selectedCellSet_.size(), 1.0);
-    if (volumeType_ == vtAbsolute)
-    {
-        label i = 0;
-        forAllConstIter(cellSet, selectedCellSet_, iter)
-        {
-            V_[i++] = mesh_.V()[iter.key()];
-        }
-    }
-}
-
-
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
 Foam::timeActivatedExplicitSource::timeActivatedExplicitSource
 (
-    const word& sourceName,
+    const word& name,
     const fvMesh& mesh,
     const dimensionSet& dims
 )
@@ -79,104 +57,72 @@ Foam::timeActivatedExplicitSource::timeActivatedExplicitSource
     (
         IOobject
         (
-            sourceName + "Properties",
+            name + "Properties",
             mesh.time().constant(),
             mesh,
             IOobject::MUST_READ,
             IOobject::NO_WRITE
         )
     ),
-    sourceName_(sourceName),
     mesh_(mesh),
     runTime_(mesh.time()),
+    name_(name),
+    active_(lookup("active")),
     dimensions_(dims),
     volumeType_(volumeTypeNames_.read(lookup("volumeType"))),
     timeStart_(readScalar(lookup("timeStart"))),
-    duration_(readScalar(lookup("duration"))),
-    onValue_(readScalar(lookup("onValue"))),
-    offValue_(readScalar(lookup("offValue"))),
-    currentValue_(0.0),
-    V_(0),
-    cellSource_(lookup("cellSource")),
-    cellSelector_
-    (
-        topoSetSource::New
-        (
-            cellSource_,
-            mesh,
-            subDict(cellSource_ + "Coeffs")
-        )
-    ),
-    selectedCellSet_
-    (
-        mesh,
-        sourceName + "SourceCellSet",
-        mesh.nCells()/10 + 1  // Reasonable size estimate.
-    )
-{
-    // Create the cell set
-    updateCellSet();
+    duration_(readScalar(lookup("duration")))
+{}
+
 
-    // Initialise the value
-    update();
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+const Foam::fvMesh& Foam::timeActivatedExplicitSource::mesh() const
+{
+    return mesh_;
 }
 
 
-// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+const Foam::Time& Foam::timeActivatedExplicitSource::runTime() const
+{
+    return runTime_;
+}
 
-Foam::scalar Foam::timeActivatedExplicitSource::timeStart() const
+
+const Foam::word& Foam::timeActivatedExplicitSource::name() const
 {
-    return timeStart_;
+    return name_;
 }
 
 
-Foam::scalar Foam::timeActivatedExplicitSource::duration() const
+const Foam::Switch& Foam::timeActivatedExplicitSource::active() const
 {
-    return duration_;
+    return active_;
 }
 
 
-const Foam::dimensionedScalar
-Foam::timeActivatedExplicitSource::currentValue() const
+const Foam::dimensionSet& Foam::timeActivatedExplicitSource::dimensions() const
 {
-    return dimensionedScalar
-    (
-        sourceName_,
-        dimensions_,
-        currentValue_
-    );
+    return dimensions_;
 }
 
 
-Foam::tmp<Foam::DimensionedField<Foam::scalar, Foam::volMesh> >
-Foam::timeActivatedExplicitSource::Su() const
+const Foam::timeActivatedExplicitSource::volumeType&
+Foam::timeActivatedExplicitSource::volume() const
 {
-    tmp<DimensionedField<scalar, volMesh> > tSource
-    (
-        new DimensionedField<scalar, volMesh>
-        (
-            IOobject
-            (
-                sourceName_ + "Su",
-                runTime_.timeName(),
-                mesh_,
-                IOobject::NO_READ,
-                IOobject::NO_WRITE
-            ),
-            mesh_,
-            dimensionedScalar("zero", dimensions_, 0.0)
-        )
-    );
+    return volumeType_;
+}
 
-    DimensionedField<scalar, volMesh>& sourceField = tSource();
 
-    label i = 0;
-    forAllConstIter(cellSet, selectedCellSet_, iter)
-    {
-        sourceField[iter.key()] = currentValue_/V_[i++];
-    }
+Foam::scalar Foam::timeActivatedExplicitSource::timeStart() const
+{
+    return timeStart_;
+}
+
 
-    return tSource;
+Foam::scalar Foam::timeActivatedExplicitSource::duration() const
+{
+    return duration_;
 }
 
 
@@ -184,22 +130,18 @@ bool Foam::timeActivatedExplicitSource::read()
 {
     if (regIOobject::read())
     {
-        volumeType_ = volumeTypeNames_.read(lookup("volumeType"));
-        lookup("timeStart") >> duration_;
-        lookup("duration") >> duration_;
-        lookup("onValue") >> onValue_;
-        lookup("offValue") >> offValue_;
-        lookup("cellSource") >> cellSource_;
-        cellSelector_ =
-            topoSetSource::New
-            (
-                cellSource_,
-                mesh_,
-                subDict(cellSource_ + "Coeffs")
-            );
-        updateCellSet();
-
-        return true;
+        lookup("active") >> active_;
+        if (active_)
+        {
+            volumeType_ = volumeTypeNames_.read(lookup("volumeType"));
+            lookup("timeStart") >> duration_;
+            lookup("duration") >> duration_;
+            return true;
+        }
+        else
+        {
+            return false;
+        }
     }
     else
     {
@@ -208,28 +150,6 @@ bool Foam::timeActivatedExplicitSource::read()
 }
 
 
-void Foam::timeActivatedExplicitSource::update()
-{
-    // Set the source value
-    if
-    (
-        (runTime_.time().value() >= timeStart_)
-     && (runTime_.time().value() <= timeStart_ + duration_)
-    )
-    {
-        currentValue_ = onValue_;
-    }
-    else
-    {
-        currentValue_ = offValue_;
-    }
-
-    // Update the cell set if the mesh is changing
-    if (mesh_.changing())
-    {
-        updateCellSet();
-    }
-}
 
 
 // ************************************************************************* //
diff --git a/src/finiteVolume/cfdTools/general/fieldSources/timeActivatedExplicitSource/timeActivatedExplicitSource.H b/src/finiteVolume/cfdTools/general/fieldSources/timeActivatedExplicitSource/timeActivatedExplicitSource.H
index f258bc1f7fce14d91ea23891c74604ceb19dd041..15bccc582f3a620bc5fa40e6334b828cf6b61968 100644
--- a/src/finiteVolume/cfdTools/general/fieldSources/timeActivatedExplicitSource/timeActivatedExplicitSource.H
+++ b/src/finiteVolume/cfdTools/general/fieldSources/timeActivatedExplicitSource/timeActivatedExplicitSource.H
@@ -23,15 +23,20 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::timeActivatedExplicitSourceNew
+    Foam::timeActivatedExplicitSource
 
 Description
-    Creates a cell set source that is activated at a given time, and remains
-    active for a specified duration. The source value is either in specific
-    (XX/m3) or absolute (XX) units.
+    Base class for field sources. Provides:
+    - name
+    - references to mesh and time
+    - dimensions
+    - volume type
+    - startTime
+    - duration
+    - read (from <sourceName>Properties dictionary)
 
 SourceFiles
-    timeActivatedExplicitSourceNew.C
+    timeActivatedExplicitSource.C
 
 \*---------------------------------------------------------------------------*/
 
@@ -40,8 +45,6 @@ SourceFiles
 
 #include "IOdictionary.H"
 #include "autoPtr.H"
-#include "topoSetSource.H"
-#include "cellSet.H"
 #include "fvMesh.H"
 #include "Time.H"
 #include "NamedEnum.H"
@@ -72,19 +75,19 @@ public:
 
 private:
 
-    // Private member functions
+    // Private Member Functions
 
-        //- Update the cell set that the source is acting on
-        void updateCellSet();
+        //- Disallow default bitwise copy construct
+        timeActivatedExplicitSource(const timeActivatedExplicitSource&);
+
+        //- Disallow default bitwise assignment
+        void operator=(const timeActivatedExplicitSource&);
 
 
 protected:
 
     // Protected data
 
-        //- Name of the source
-        word sourceName_;
-
         //- Reference to the mesh
         const fvMesh& mesh_;
 
@@ -94,6 +97,12 @@ protected:
 
         // Source properties
 
+            //- Name of the source
+            word name_;
+
+            //- Active flag
+            Switch active_;
+
             //- Dimensions
             const dimensionSet dimensions_;
 
@@ -106,39 +115,6 @@ protected:
             //- Duration [s]
             scalar duration_;
 
-            //- Value when "on"
-            scalar onValue_;
-
-            //- Value when "off"
-            scalar offValue_;
-
-            //- Current source value
-            scalar currentValue_;
-
-
-        // Cell set
-
-            //- Cell volumes
-            scalarList V_;
-
-            //- Name of cell source (XXXToCell)
-            word cellSource_;
-
-            //- Method by which the cells will be selected
-            autoPtr<topoSetSource> cellSelector_;
-
-            //- Set of selected cells
-            cellSet selectedCellSet_;
-
-
-    // Protected Member Functions
-
-        //- Disallow default bitwise copy construct
-        timeActivatedExplicitSource(const timeActivatedExplicitSource&);
-
-        //- Disallow default bitwise assignment
-        void operator=(const timeActivatedExplicitSource&);
-
 
 public:
 
@@ -157,24 +133,33 @@ public:
 
         // Access
 
-            //- Return the start time
-            scalar timeStart() const;
+            //- Return the reference to the mesh
+            virtual const fvMesh& mesh() const;
 
-            //- Return the duration
-            scalar duration() const;
+            //- Return the reference to the time database
+            virtual const Time& runTime() const;
+
+            //- Return the source name
+            virtual const word& name() const;
+
+            //- Return the active flag
+            virtual const Switch& active() const;
+
+            //- Return the dimensions
+            virtual const dimensionSet& dimensions() const;
 
-            //- Return the current value of the source
-            const dimensionedScalar currentValue() const;
+            //- Return the volume type
+            virtual const volumeType& volume() const;
 
-            //- Return a tmp field of the source
-            virtual tmp<DimensionedField<scalar, volMesh> > Su() const;
+            //- Return the start time
+            virtual scalar timeStart() const;
+
+            //- Return the duration
+            virtual scalar duration() const;
 
 
         //- Read properties dictionary
         virtual bool read();
-
-        //- Update
-        virtual void update();
 };
 
 
diff --git a/src/finiteVolume/cfdTools/general/findRefCell/findRefCell.C b/src/finiteVolume/cfdTools/general/findRefCell/findRefCell.C
index ed450ea4883c6ff4652872a4a5f7eae633e2f129..3d92d45ce7de3210f3c4d79b0f391cbefaced773 100644
--- a/src/finiteVolume/cfdTools/general/findRefCell/findRefCell.C
+++ b/src/finiteVolume/cfdTools/general/findRefCell/findRefCell.C
@@ -92,6 +92,7 @@ void Foam::setRefCell
                     dict
                 )   << "Unable to set reference cell for field " << field.name()
                     << nl << "    Reference point " << refPointName
+                    << " " << refPointi
                     << " found on " << sumHasRef << " domains (should be one)"
                     << nl << exit(FatalIOError);
             }
@@ -108,7 +109,7 @@ void Foam::setRefCell
                  "    bool\n"
                  ")",
                 dict
-            )   << "Unable to set reference cell for field" << field.name()
+            )   << "Unable to set reference cell for field " << field.name()
                 << nl
                 << "    Please supply either " << refCellName
                 << " or " << refPointName << nl << exit(FatalIOError);
diff --git a/src/finiteVolume/cfdTools/general/include/readPISOControls.H b/src/finiteVolume/cfdTools/general/include/readPISOControls.H
index 5f14c2bcae2f56ecdfa998ba1224e6b3ad438d0a..de763e00b0c4b92769dcdbcdacbeec2049ec9a44 100644
--- a/src/finiteVolume/cfdTools/general/include/readPISOControls.H
+++ b/src/finiteVolume/cfdTools/general/include/readPISOControls.H
@@ -13,7 +13,3 @@
 
     int nOuterCorr =
         piso.lookupOrDefault<int>("nOuterCorrectors", 1);
-
-    bool ddtPhiCorr =
-        piso.lookupOrDefault<Switch>("ddtPhiCorr", false);
-
diff --git a/src/finiteVolume/cfdTools/general/porousMedia/porousZone.C b/src/finiteVolume/cfdTools/general/porousMedia/porousZone.C
index 686120b62d77e7c79803d7e56d2dcd961a67e178..f13e344375efb3cd476a9263a643ada04fcd78a4 100644
--- a/src/finiteVolume/cfdTools/general/porousMedia/porousZone.C
+++ b/src/finiteVolume/cfdTools/general/porousMedia/porousZone.C
@@ -79,6 +79,8 @@ Foam::porousZone::porousZone
     D_("D", dimensionSet(0, -2, 0, 0, 0), tensor::zero),
     F_("F", dimensionSet(0, -1, 0, 0, 0), tensor::zero)
 {
+    Info<< "Creating porous zone: " << name_ << endl;
+
     if (cellZoneID_ == -1 && !Pstream::parRun())
     {
         FatalErrorIn
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/fixedFluxBuoyantPressure/fixedFluxBuoyantPressureFvPatchScalarField.C b/src/finiteVolume/fields/fvPatchFields/derived/buoyantPressure/buoyantPressureFvPatchScalarField.C
similarity index 62%
rename from src/finiteVolume/fields/fvPatchFields/derived/fixedFluxBuoyantPressure/fixedFluxBuoyantPressureFvPatchScalarField.C
rename to src/finiteVolume/fields/fvPatchFields/derived/buoyantPressure/buoyantPressureFvPatchScalarField.C
index c31f5acc5c3888b49479e7f11b791ae28d51c25c..cafc55aa3a534df59152b79f321556edef625290 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/fixedFluxBuoyantPressure/fixedFluxBuoyantPressureFvPatchScalarField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/buoyantPressure/buoyantPressureFvPatchScalarField.C
@@ -24,7 +24,7 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "fixedFluxBuoyantPressureFvPatchScalarField.H"
+#include "buoyantPressureFvPatchScalarField.H"
 #include "addToRunTimeSelectionTable.H"
 #include "fvPatchFieldMapper.H"
 #include "volFields.H"
@@ -36,69 +36,74 @@ namespace Foam
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-fixedFluxBuoyantPressureFvPatchScalarField::
-fixedFluxBuoyantPressureFvPatchScalarField
+buoyantPressureFvPatchScalarField::
+buoyantPressureFvPatchScalarField
 (
     const fvPatch& p,
     const DimensionedField<scalar, volMesh>& iF
 )
 :
-    fixedGradientFvPatchScalarField(p, iF)
+    fixedGradientFvPatchScalarField(p, iF),
+    rhoName_("rho")
 {}
 
 
-fixedFluxBuoyantPressureFvPatchScalarField::
-fixedFluxBuoyantPressureFvPatchScalarField
+buoyantPressureFvPatchScalarField::
+buoyantPressureFvPatchScalarField
 (
-    const fixedFluxBuoyantPressureFvPatchScalarField& ptf,
     const fvPatch& p,
     const DimensionedField<scalar, volMesh>& iF,
-    const fvPatchFieldMapper& mapper
+    const dictionary& dict
 )
 :
-    fixedGradientFvPatchScalarField(ptf, p, iF, mapper)
-{}
+    fixedGradientFvPatchScalarField(p, iF),
+    rhoName_(dict.lookupOrDefault<word>("rho", "rho"))
+{
+    fvPatchField<scalar>::operator=(patchInternalField());
+    gradient() = 0.0;
+}
 
 
-fixedFluxBuoyantPressureFvPatchScalarField::
-fixedFluxBuoyantPressureFvPatchScalarField
+buoyantPressureFvPatchScalarField::
+buoyantPressureFvPatchScalarField
 (
+    const buoyantPressureFvPatchScalarField& ptf,
     const fvPatch& p,
     const DimensionedField<scalar, volMesh>& iF,
-    const dictionary&
+    const fvPatchFieldMapper& mapper
 )
 :
-    fixedGradientFvPatchScalarField(p, iF)
-{
-    fvPatchField<scalar>::operator=(patchInternalField());
-    gradient() = 0.0;
-}
+    fixedGradientFvPatchScalarField(ptf, p, iF, mapper),
+    rhoName_(ptf.rhoName_)
+{}
 
 
-fixedFluxBuoyantPressureFvPatchScalarField::
-fixedFluxBuoyantPressureFvPatchScalarField
+buoyantPressureFvPatchScalarField::
+buoyantPressureFvPatchScalarField
 (
-    const fixedFluxBuoyantPressureFvPatchScalarField& wbppsf
+    const buoyantPressureFvPatchScalarField& ptf
 )
 :
-    fixedGradientFvPatchScalarField(wbppsf)
+    fixedGradientFvPatchScalarField(ptf),
+    rhoName_(ptf.rhoName_)
 {}
 
 
-fixedFluxBuoyantPressureFvPatchScalarField::
-fixedFluxBuoyantPressureFvPatchScalarField
+buoyantPressureFvPatchScalarField::
+buoyantPressureFvPatchScalarField
 (
-    const fixedFluxBuoyantPressureFvPatchScalarField& wbppsf,
+    const buoyantPressureFvPatchScalarField& ptf,
     const DimensionedField<scalar, volMesh>& iF
 )
 :
-    fixedGradientFvPatchScalarField(wbppsf, iF)
+    fixedGradientFvPatchScalarField(ptf, iF),
+    rhoName_(ptf.rhoName_)
 {}
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-void fixedFluxBuoyantPressureFvPatchScalarField::updateCoeffs()
+void buoyantPressureFvPatchScalarField::updateCoeffs()
 {
     if (updated())
     {
@@ -111,17 +116,28 @@ void fixedFluxBuoyantPressureFvPatchScalarField::updateCoeffs()
     dimensionedVector g(environmentalProperties.lookup("g"));
 
     const fvPatchField<scalar>& rho =
-        patch().lookupPatchField<volScalarField, scalar>("rho");
+        patch().lookupPatchField<volScalarField, scalar>(rhoName_);
 
-    gradient() = -rho.snGrad()*(g.value() & patch().Cf());
+    // If the variable name is "pd" assume it is p - rho*g.h
+    // and set the gradient appropriately.
+    // Otherwise assume the variable is the static pressure.
+    if (dimensionedInternalField().name() == "pd")
+    {
+        gradient() = -rho.snGrad()*(g.value() & patch().Cf());
+    }
+    else
+    {
+        gradient() = rho*(g.value() & patch().nf());
+    }
 
     fixedGradientFvPatchScalarField::updateCoeffs();
 }
 
 
-void fixedFluxBuoyantPressureFvPatchScalarField::write(Ostream& os) const
+void buoyantPressureFvPatchScalarField::write(Ostream& os) const
 {
     fixedGradientFvPatchScalarField::write(os);
+    os.writeKeyword("rho") << rhoName_ << token::END_STATEMENT << nl;
     writeEntry("value", os);
 }
 
@@ -131,7 +147,7 @@ void fixedFluxBuoyantPressureFvPatchScalarField::write(Ostream& os) const
 makePatchTypeField
 (
     fvPatchScalarField,
-    fixedFluxBuoyantPressureFvPatchScalarField
+    buoyantPressureFvPatchScalarField
 );
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/fixedFluxBuoyantPressure/fixedFluxBuoyantPressureFvPatchScalarField.H b/src/finiteVolume/fields/fvPatchFields/derived/buoyantPressure/buoyantPressureFvPatchScalarField.H
similarity index 73%
rename from src/finiteVolume/fields/fvPatchFields/derived/fixedFluxBuoyantPressure/fixedFluxBuoyantPressureFvPatchScalarField.H
rename to src/finiteVolume/fields/fvPatchFields/derived/buoyantPressure/buoyantPressureFvPatchScalarField.H
index 3ce584bf873cef5a8a88804dd0076b82145be4c5..d698487e3650db3d1ea274cc3e649a84b6f68941 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/fixedFluxBuoyantPressure/fixedFluxBuoyantPressureFvPatchScalarField.H
+++ b/src/finiteVolume/fields/fvPatchFields/derived/buoyantPressure/buoyantPressureFvPatchScalarField.H
@@ -23,18 +23,21 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::fixedFluxBuoyantPressureFvPatchScalarField
+    Foam::buoyantPressureFvPatchScalarField
 
 Description
-    Foam::fixedFluxBuoyantPressureFvPatchScalarField
+    Set the pressure gradient boundary condition appropriately for buoyant flow.
+
+    If the variable name is "pd" assume it is p - rho*g.h and set the gradient
+    appropriately.  Otherwise assume the variable is the static pressure.
 
 SourceFiles
-    fixedFluxBuoyantPressureFvPatchScalarField.C
+    buoyantPressureFvPatchScalarField.C
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef fixedFluxBuoyantPressureFvPatchScalarFields_H
-#define fixedFluxBuoyantPressureFvPatchScalarFields_H
+#ifndef buoyantPressureFvPatchScalarFields_H
+#define buoyantPressureFvPatchScalarFields_H
 
 #include "fvPatchFields.H"
 #include "fixedGradientFvPatchFields.H"
@@ -45,31 +48,36 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                  Class fixedFluxBuoyantPressureFvPatch Declaration
+                  Class buoyantPressureFvPatch Declaration
 \*---------------------------------------------------------------------------*/
 
-class fixedFluxBuoyantPressureFvPatchScalarField
+class buoyantPressureFvPatchScalarField
 :
     public fixedGradientFvPatchScalarField
 {
+    // Private data
+
+        //- Name of the density field used to calculate the buoyancy force
+        word rhoName_;
+
 
 public:
 
     //- Runtime type information
-    TypeName("fixedFluxBuoyantPressure");
+    TypeName("buoyantPressure");
 
 
     // Constructors
 
         //- Construct from patch and internal field
-        fixedFluxBuoyantPressureFvPatchScalarField
+        buoyantPressureFvPatchScalarField
         (
             const fvPatch&,
             const DimensionedField<scalar, volMesh>&
         );
 
         //- Construct from patch, internal field and dictionary
-        fixedFluxBuoyantPressureFvPatchScalarField
+        buoyantPressureFvPatchScalarField
         (
             const fvPatch&,
             const DimensionedField<scalar, volMesh>&,
@@ -77,19 +85,19 @@ public:
         );
 
         //- Construct by mapping given
-        //  fixedFluxBuoyantPressureFvPatchScalarField onto a new patch
-        fixedFluxBuoyantPressureFvPatchScalarField
+        //  buoyantPressureFvPatchScalarField onto a new patch
+        buoyantPressureFvPatchScalarField
         (
-            const fixedFluxBuoyantPressureFvPatchScalarField&,
+            const buoyantPressureFvPatchScalarField&,
             const fvPatch&,
             const DimensionedField<scalar, volMesh>&,
             const fvPatchFieldMapper&
         );
 
         //- Construct as copy
-        fixedFluxBuoyantPressureFvPatchScalarField
+        buoyantPressureFvPatchScalarField
         (
-            const fixedFluxBuoyantPressureFvPatchScalarField&
+            const buoyantPressureFvPatchScalarField&
         );
 
         //- Construct and return a clone
@@ -97,14 +105,14 @@ public:
         {
             return tmp<fvPatchScalarField>
             (
-                new fixedFluxBuoyantPressureFvPatchScalarField(*this)
+                new buoyantPressureFvPatchScalarField(*this)
             );
         }
 
         //- Construct as copy setting internal field reference
-        fixedFluxBuoyantPressureFvPatchScalarField
+        buoyantPressureFvPatchScalarField
         (
-            const fixedFluxBuoyantPressureFvPatchScalarField&,
+            const buoyantPressureFvPatchScalarField&,
             const DimensionedField<scalar, volMesh>&
         );
 
@@ -116,7 +124,7 @@ public:
         {
             return tmp<fvPatchScalarField>
             (
-                new fixedFluxBuoyantPressureFvPatchScalarField(*this, iF)
+                new buoyantPressureFvPatchScalarField(*this, iF)
             );
         }
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/fixedFluxBoussinesqBuoyantPressure/fixedFluxBoussinesqBuoyantPressureFvPatchScalarField.C b/src/finiteVolume/fields/fvPatchFields/derived/fixedFluxBoussinesqBuoyantPressure/fixedFluxBoussinesqBuoyantPressureFvPatchScalarField.C
deleted file mode 100644
index 9a75eed1688a05b8c3f308220f2033a7bb6f05d8..0000000000000000000000000000000000000000
--- a/src/finiteVolume/fields/fvPatchFields/derived/fixedFluxBoussinesqBuoyantPressure/fixedFluxBoussinesqBuoyantPressureFvPatchScalarField.C
+++ /dev/null
@@ -1,149 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by the
-    Free Software Foundation; either version 2 of the License, or (at your
-    option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM; if not, write to the Free Software Foundation,
-    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-\*---------------------------------------------------------------------------*/
-
-#include "fixedFluxBoussinesqBuoyantPressureFvPatchScalarField.H"
-#include "addToRunTimeSelectionTable.H"
-#include "fvPatchFieldMapper.H"
-#include "volFields.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-
-// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
-
-fixedFluxBoussinesqBuoyantPressureFvPatchScalarField::
-fixedFluxBoussinesqBuoyantPressureFvPatchScalarField
-(
-    const fvPatch& p,
-    const DimensionedField<scalar, volMesh>& iF
-)
-:
-    fixedGradientFvPatchScalarField(p, iF)
-{}
-
-
-fixedFluxBoussinesqBuoyantPressureFvPatchScalarField::
-fixedFluxBoussinesqBuoyantPressureFvPatchScalarField
-(
-    const fixedFluxBoussinesqBuoyantPressureFvPatchScalarField& ptf,
-    const fvPatch& p,
-    const DimensionedField<scalar, volMesh>& iF,
-    const fvPatchFieldMapper& mapper
-)
-:
-    fixedGradientFvPatchScalarField(ptf, p, iF, mapper)
-{}
-
-
-fixedFluxBoussinesqBuoyantPressureFvPatchScalarField::
-fixedFluxBoussinesqBuoyantPressureFvPatchScalarField
-(
-    const fvPatch& p,
-    const DimensionedField<scalar, volMesh>& iF,
-    const dictionary&
-)
-:
-    fixedGradientFvPatchScalarField(p, iF)
-{
-    fvPatchField<scalar>::operator=(patchInternalField());
-    gradient() = 0.0;
-}
-
-
-fixedFluxBoussinesqBuoyantPressureFvPatchScalarField::
-fixedFluxBoussinesqBuoyantPressureFvPatchScalarField
-(
-    const fixedFluxBoussinesqBuoyantPressureFvPatchScalarField& wbppsf
-)
-:
-    fixedGradientFvPatchScalarField(wbppsf)
-{}
-
-
-fixedFluxBoussinesqBuoyantPressureFvPatchScalarField::
-fixedFluxBoussinesqBuoyantPressureFvPatchScalarField
-(
-    const fixedFluxBoussinesqBuoyantPressureFvPatchScalarField& wbppsf,
-    const DimensionedField<scalar, volMesh>& iF
-)
-:
-    fixedGradientFvPatchScalarField(wbppsf, iF)
-{}
-
-
-// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
-
-void fixedFluxBoussinesqBuoyantPressureFvPatchScalarField::updateCoeffs()
-{
-    if (updated())
-    {
-        return;
-    }
-
-    const dictionary& environmentalProperties
-        = db().lookupObject<IOdictionary>("environmentalProperties");
-
-    dimensionedVector g(environmentalProperties.lookup("g"));
-
-    const dictionary& transportProperties
-        = db().lookupObject<IOdictionary>("transportProperties");
-
-    dimensionedScalar beta(transportProperties.lookup("beta"));
-
-    const fvPatchField<scalar>& T =
-        patch().lookupPatchField<volScalarField, scalar>("T");
-
-    gradient() = beta.value()*T.snGrad()*(g.value() & patch().Cf());
-
-    fixedGradientFvPatchScalarField::updateCoeffs();
-}
-
-
-void fixedFluxBoussinesqBuoyantPressureFvPatchScalarField::write
-(
-    Ostream& os
-) const
-{
-    fixedGradientFvPatchScalarField::write(os);
-    writeEntry("value", os);
-}
-
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-makePatchTypeField
-(
-    fvPatchScalarField,
-    fixedFluxBoussinesqBuoyantPressureFvPatchScalarField
-);
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-} // End namespace Foam
-
-// ************************************************************************* //
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/totalPressure/totalPressureFvPatchScalarField.C b/src/finiteVolume/fields/fvPatchFields/derived/totalPressure/totalPressureFvPatchScalarField.C
index 76267d4fa6a86f2083f6720b2eb58fe255610d4d..56ee8a0753d38e9eef05c766677ca1d4eccfa64d 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/totalPressure/totalPressureFvPatchScalarField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/totalPressure/totalPressureFvPatchScalarField.C
@@ -30,7 +30,6 @@ License
 #include "volFields.H"
 #include "surfaceFields.H"
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/derivedFvPatchFields/solidWallTemperatureCoupled/solidWallTemperatureCoupledFvPatchScalarField.C b/src/finiteVolume/fields/fvPatchFields/derived/uniformDensityHydrostaticPressure/uniformDensityHydrostaticPressureFvPatchScalarField.C
similarity index 54%
rename from applications/solvers/heatTransfer/chtMultiRegionFoam/derivedFvPatchFields/solidWallTemperatureCoupled/solidWallTemperatureCoupledFvPatchScalarField.C
rename to src/finiteVolume/fields/fvPatchFields/derived/uniformDensityHydrostaticPressure/uniformDensityHydrostaticPressureFvPatchScalarField.C
index 05bbdd1ba3fb75adce7642f1afd732f8c87d3c3d..dfda8caf521d7e6f3733d3e4bf640fbfd58ee22f 100644
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/derivedFvPatchFields/solidWallTemperatureCoupled/solidWallTemperatureCoupledFvPatchScalarField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/uniformDensityHydrostaticPressure/uniformDensityHydrostaticPressureFvPatchScalarField.C
@@ -24,43 +24,31 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "solidWallTemperatureCoupledFvPatchScalarField.H"
+#include "uniformDensityHydrostaticPressureFvPatchScalarField.H"
 #include "addToRunTimeSelectionTable.H"
 #include "fvPatchFieldMapper.H"
 #include "volFields.H"
+#include "surfaceFields.H"
+
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::solidWallTemperatureCoupledFvPatchScalarField::
-solidWallTemperatureCoupledFvPatchScalarField
+Foam::uniformDensityHydrostaticPressureFvPatchScalarField::
+uniformDensityHydrostaticPressureFvPatchScalarField
 (
     const fvPatch& p,
     const DimensionedField<scalar, volMesh>& iF
 )
 :
     fixedValueFvPatchScalarField(p, iF),
-    coupleManager_(p),
-    KName_("undefined-K")
+    rho_(0.0),
+    pRefValue_(0.0),
+    pRefPoint_(vector::zero)
 {}
 
 
-Foam::solidWallTemperatureCoupledFvPatchScalarField::
-solidWallTemperatureCoupledFvPatchScalarField
-(
-    const solidWallTemperatureCoupledFvPatchScalarField& ptf,
-    const fvPatch& p,
-    const DimensionedField<scalar, volMesh>& iF,
-    const fvPatchFieldMapper& mapper
-)
-:
-    fixedValueFvPatchScalarField(ptf, p, iF, mapper),
-    coupleManager_(ptf.coupleManager_),
-    KName_(ptf.KName_)
-{}
-
-
-Foam::solidWallTemperatureCoupledFvPatchScalarField::
-solidWallTemperatureCoupledFvPatchScalarField
+Foam::uniformDensityHydrostaticPressureFvPatchScalarField::
+uniformDensityHydrostaticPressureFvPatchScalarField
 (
     const fvPatch& p,
     const DimensionedField<scalar, volMesh>& iF,
@@ -68,8 +56,9 @@ solidWallTemperatureCoupledFvPatchScalarField
 )
 :
     fixedValueFvPatchScalarField(p, iF),
-    coupleManager_(p, dict),
-    KName_(dict.lookup("K"))
+    rho_(readScalar(dict.lookup("rho"))),
+    pRefValue_(readScalar(dict.lookup("pRefValue"))),
+    pRefPoint_(dict.lookup("pRefPoint"))
 {
     if (dict.found("value"))
     {
@@ -85,72 +74,95 @@ solidWallTemperatureCoupledFvPatchScalarField
 }
 
 
-Foam::solidWallTemperatureCoupledFvPatchScalarField::
-solidWallTemperatureCoupledFvPatchScalarField
+Foam::uniformDensityHydrostaticPressureFvPatchScalarField::
+uniformDensityHydrostaticPressureFvPatchScalarField
+(
+    const uniformDensityHydrostaticPressureFvPatchScalarField& ptf,
+    const fvPatch& p,
+    const DimensionedField<scalar, volMesh>& iF,
+    const fvPatchFieldMapper& mapper
+)
+:
+    fixedValueFvPatchScalarField(ptf, p, iF, mapper),
+    rho_(ptf.rho_),
+    pRefValue_(ptf.pRefValue_),
+    pRefPoint_(ptf.pRefPoint_)
+{}
+
+
+Foam::uniformDensityHydrostaticPressureFvPatchScalarField::
+uniformDensityHydrostaticPressureFvPatchScalarField
+(
+    const uniformDensityHydrostaticPressureFvPatchScalarField& ptf
+)
+:
+    fixedValueFvPatchScalarField(ptf),
+    rho_(ptf.rho_),
+    pRefValue_(ptf.pRefValue_),
+    pRefPoint_(ptf.pRefPoint_)
+{}
+
+
+Foam::uniformDensityHydrostaticPressureFvPatchScalarField::
+uniformDensityHydrostaticPressureFvPatchScalarField
 (
-    const solidWallTemperatureCoupledFvPatchScalarField& wtcsf,
+    const uniformDensityHydrostaticPressureFvPatchScalarField& ptf,
     const DimensionedField<scalar, volMesh>& iF
 )
 :
-    fixedValueFvPatchScalarField(wtcsf, iF),
-    coupleManager_(wtcsf.coupleManager_),
-    KName_(wtcsf.KName_)
+    fixedValueFvPatchScalarField(ptf, iF),
+    rho_(ptf.rho_),
+    pRefValue_(ptf.pRefValue_),
+    pRefPoint_(ptf.pRefPoint_)
 {}
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-void Foam::solidWallTemperatureCoupledFvPatchScalarField::updateCoeffs()
+void Foam::uniformDensityHydrostaticPressureFvPatchScalarField::updateCoeffs()
 {
     if (updated())
     {
         return;
     }
 
-    const fvPatchField<scalar>& neighbourField =
-        coupleManager_.neighbourPatchField<scalar>();
+    const dictionary& environmentalProperties
+        = db().lookupObject<IOdictionary>("environmentalProperties");
 
-    operator==(neighbourField);
+    dimensionedVector g(environmentalProperties.lookup("g"));
+
+    operator==
+    (
+        pRefValue_
+      + rho_*((g.value() & patch().Cf()) - (g.value() & pRefPoint_))
+    );
 
     fixedValueFvPatchScalarField::updateCoeffs();
 }
 
 
-void Foam::solidWallTemperatureCoupledFvPatchScalarField::write
+void Foam::uniformDensityHydrostaticPressureFvPatchScalarField::write
 (
     Ostream& os
 ) const
 {
     fvPatchScalarField::write(os);
-    coupleManager_.writeEntries(os);
-    os.writeKeyword("K") << KName_ << token::END_STATEMENT << nl;
+    os.writeKeyword("rho") << rho_ << token::END_STATEMENT << nl;
+    os.writeKeyword("pRefValue") << pRefValue_ << token::END_STATEMENT << nl;
+    os.writeKeyword("pRefPoint") << pRefPoint_ << token::END_STATEMENT << nl;
     writeEntry("value", os);
 }
 
 
-Foam::tmp<Foam::scalarField>
-Foam::solidWallTemperatureCoupledFvPatchScalarField::flux() const
-{
-    const fvPatchScalarField& Kw =
-        patch().lookupPatchField<volScalarField, scalar>(KName_);
-
-    const fvPatchScalarField& Tw = *this;
-
-    return Tw.snGrad()*Kw;
-}
-
-
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 namespace Foam
 {
-
-makePatchTypeField
-(
-    fvPatchScalarField,
-    solidWallTemperatureCoupledFvPatchScalarField
-);
-
-} // End namespace Foam
+    makePatchTypeField
+    (
+        fvPatchScalarField,
+        uniformDensityHydrostaticPressureFvPatchScalarField
+    );
+}
 
 // ************************************************************************* //
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/fixedFluxBoussinesqBuoyantPressure/fixedFluxBoussinesqBuoyantPressureFvPatchScalarField.H b/src/finiteVolume/fields/fvPatchFields/derived/uniformDensityHydrostaticPressure/uniformDensityHydrostaticPressureFvPatchScalarField.H
similarity index 53%
rename from src/finiteVolume/fields/fvPatchFields/derived/fixedFluxBoussinesqBuoyantPressure/fixedFluxBoussinesqBuoyantPressureFvPatchScalarField.H
rename to src/finiteVolume/fields/fvPatchFields/derived/uniformDensityHydrostaticPressure/uniformDensityHydrostaticPressureFvPatchScalarField.H
index 094f8805606650a1f2b087d1404dcad78fd1c680..8b129fe3ab3ac5e9bc834f38f9124ffd53742454 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/fixedFluxBoussinesqBuoyantPressure/fixedFluxBoussinesqBuoyantPressureFvPatchScalarField.H
+++ b/src/finiteVolume/fields/fvPatchFields/derived/uniformDensityHydrostaticPressure/uniformDensityHydrostaticPressureFvPatchScalarField.H
@@ -23,23 +23,24 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::fixedFluxBoussinesqBuoyantPressureFvPatchScalarField
+    Foam::uniformDensityHydrostaticPressureFvPatchScalarField
 
 Description
-    Boundary condition on pressure for use with buoyant solvers employing the
-    Boussinesq approximation to balance the flux generated by the temperature
-    gradient.
+    Hydrostatic pressure boundary condition calculated as
+
+    pRefValue + rho*g.(x - pRefPoint)
+
+    where rho is provided and assumed uniform.
 
 SourceFiles
-    fixedFluxBoussinesqBuoyantPressureFvPatchScalarField.C
+    uniformDensityHydrostaticPressureFvPatchScalarField.C
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef fixedFluxBoussinesqBuoyantPressureFvPatchScalarFields_H
-#define fixedFluxBoussinesqBuoyantPressureFvPatchScalarFields_H
+#ifndef uniformDensityHydrostaticPressureFvPatchScalarField_H
+#define uniformDensityHydrostaticPressureFvPatchScalarField_H
 
-#include "fvPatchFields.H"
-#include "fixedGradientFvPatchFields.H"
+#include "fixedValueFvPatchFields.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -47,30 +48,42 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-    Class fixedFluxBoussinesqBuoyantPressureFvPatchScalarField Declaration
+          Class uniformDensityHydrostaticPressureFvPatch Declaration
 \*---------------------------------------------------------------------------*/
 
-class fixedFluxBoussinesqBuoyantPressureFvPatchScalarField
+class uniformDensityHydrostaticPressureFvPatchScalarField
 :
-    public fixedGradientFvPatchScalarField
+    public fixedValueFvPatchScalarField
 {
+    // Private data
+
+        //- Constant density in the far-field
+        scalar rho_;
+
+        //- Reference pressure
+        scalar pRefValue_;
+
+        //- Reference pressure location
+        vector pRefPoint_;
+
+
 public:
 
     //- Runtime type information
-    TypeName("fixedFluxBoussinesqBuoyantPressure");
+    TypeName("uniformDensityHydrostaticPressure");
 
 
     // Constructors
 
         //- Construct from patch and internal field
-        fixedFluxBoussinesqBuoyantPressureFvPatchScalarField
+        uniformDensityHydrostaticPressureFvPatchScalarField
         (
             const fvPatch&,
             const DimensionedField<scalar, volMesh>&
         );
 
         //- Construct from patch, internal field and dictionary
-        fixedFluxBoussinesqBuoyantPressureFvPatchScalarField
+        uniformDensityHydrostaticPressureFvPatchScalarField
         (
             const fvPatch&,
             const DimensionedField<scalar, volMesh>&,
@@ -78,20 +91,19 @@ public:
         );
 
         //- Construct by mapping given
-        //  fixedFluxBoussinesqBuoyantPressureFvPatchScalarField onto a new
-        //  patch
-        fixedFluxBoussinesqBuoyantPressureFvPatchScalarField
+        //  uniformDensityHydrostaticPressureFvPatchScalarField onto a new patch
+        uniformDensityHydrostaticPressureFvPatchScalarField
         (
-            const fixedFluxBoussinesqBuoyantPressureFvPatchScalarField&,
+            const uniformDensityHydrostaticPressureFvPatchScalarField&,
             const fvPatch&,
             const DimensionedField<scalar, volMesh>&,
             const fvPatchFieldMapper&
         );
 
         //- Construct as copy
-        fixedFluxBoussinesqBuoyantPressureFvPatchScalarField
+        uniformDensityHydrostaticPressureFvPatchScalarField
         (
-            const fixedFluxBoussinesqBuoyantPressureFvPatchScalarField&
+            const uniformDensityHydrostaticPressureFvPatchScalarField&
         );
 
         //- Construct and return a clone
@@ -99,14 +111,14 @@ public:
         {
             return tmp<fvPatchScalarField>
             (
-                new fixedFluxBoussinesqBuoyantPressureFvPatchScalarField(*this)
+                new uniformDensityHydrostaticPressureFvPatchScalarField(*this)
             );
         }
 
         //- Construct as copy setting internal field reference
-        fixedFluxBoussinesqBuoyantPressureFvPatchScalarField
+        uniformDensityHydrostaticPressureFvPatchScalarField
         (
-            const fixedFluxBoussinesqBuoyantPressureFvPatchScalarField&,
+            const uniformDensityHydrostaticPressureFvPatchScalarField&,
             const DimensionedField<scalar, volMesh>&
         );
 
@@ -118,7 +130,7 @@ public:
         {
             return tmp<fvPatchScalarField>
             (
-                new fixedFluxBoussinesqBuoyantPressureFvPatchScalarField
+                new uniformDensityHydrostaticPressureFvPatchScalarField
                 (
                     *this,
                     iF
@@ -129,8 +141,52 @@ public:
 
     // Member functions
 
-        //- Update the coefficients associated with the patch field
-        virtual void updateCoeffs();
+        // Access
+
+            //- Return the constant density in the far-field
+            scalar rho() const
+            {
+                return rho_;
+            }
+
+            //- Return reference to the constant density in the far-field
+            //  to allow adjustment
+            scalar& rho()
+            {
+                return rho_;
+            }
+
+            //- Return the reference pressure
+            scalar pRefValue() const
+            {
+                return pRefValue_;
+            }
+
+            //- Return reference to the reference pressure to allow adjustment
+            scalar& pRefValue()
+            {
+                return pRefValue_;
+            }
+
+            //- Return the pressure reference location
+            const vector& pRefPoint() const
+            {
+                return pRefPoint_;
+            }
+
+            //- Return reference to the pressure reference location
+            //  to allow adjustment
+            vector& pRefPoint()
+            {
+                return pRefPoint_;
+            }
+
+
+        // Evaluation functions
+
+            //- Update the coefficients associated with the patch field
+            virtual void updateCoeffs();
+
 
         //- Write
         virtual void write(Ostream&) const;
diff --git a/src/finiteVolume/finiteVolume/laplacianSchemes/gaussLaplacianScheme/gaussLaplacianScheme.C b/src/finiteVolume/finiteVolume/laplacianSchemes/gaussLaplacianScheme/gaussLaplacianScheme.C
index cafab73fb158e6492a6b9e908ad8265a7519399a..1df55b7e17b8be53c0c950a885143b0e9d6bec80 100644
--- a/src/finiteVolume/finiteVolume/laplacianSchemes/gaussLaplacianScheme/gaussLaplacianScheme.C
+++ b/src/finiteVolume/finiteVolume/laplacianSchemes/gaussLaplacianScheme/gaussLaplacianScheme.C
@@ -21,7 +21,7 @@ License
     You should have received a copy of the GNU General Public License
     along with OpenFOAM; if not, write to the Free Software Foundation,
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-    
+
 \*---------------------------------------------------------------------------*/
 
 #include "gaussLaplacianScheme.H"
diff --git a/src/finiteVolume/finiteVolume/snGradSchemes/quadraticFitSnGrad/quadraticFitSnGrad.H b/src/finiteVolume/finiteVolume/snGradSchemes/quadraticFitSnGrad/quadraticFitSnGrad.H
index bc170c14666a1f8a0d1533737a256d46d0d02d4e..035bb1d6dba485422291895e14000961dd692c54 100644
--- a/src/finiteVolume/finiteVolume/snGradSchemes/quadraticFitSnGrad/quadraticFitSnGrad.H
+++ b/src/finiteVolume/finiteVolume/snGradSchemes/quadraticFitSnGrad/quadraticFitSnGrad.H
@@ -39,7 +39,7 @@ SourceFiles
 
 #include "snGradScheme.H"
 #include "quadraticFitSnGradData.H"
-#include "extendedStencil.H"
+#include "extendedCellToFaceStencil.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -133,7 +133,7 @@ public:
                 centralWeight_
             );
 
-            const extendedStencil& stencil = qfd.stencil();
+            const extendedCellToFaceStencil& stencil = qfd.stencil();
             const List<scalarList>& f = qfd.fit();
 
             tmp<GeometricField<Type, fvsPatchField, surfaceMesh> > sft
diff --git a/src/finiteVolume/finiteVolume/snGradSchemes/quadraticFitSnGrad/quadraticFitSnGradData.H b/src/finiteVolume/finiteVolume/snGradSchemes/quadraticFitSnGrad/quadraticFitSnGradData.H
index 12d5c90f5435544be324296bb441e8af30381148..bedb0570cca700cde959041c1b6bea8a5b4de147 100644
--- a/src/finiteVolume/finiteVolume/snGradSchemes/quadraticFitSnGrad/quadraticFitSnGradData.H
+++ b/src/finiteVolume/finiteVolume/snGradSchemes/quadraticFitSnGrad/quadraticFitSnGradData.H
@@ -38,7 +38,7 @@ SourceFiles
 
 #include "MeshObject.H"
 #include "fvMesh.H"
-#include "extendedStencil.H"
+#include "extendedCellToFaceStencil.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -62,7 +62,7 @@ class quadraticFitSnGradData
         const label minSize_;
 
         //- Extended stencil addressing
-        extendedStencil stencil_;
+        extendedCellToFaceStencil stencil_;
 
         //- For each cell in the mesh store the values which multiply the
         //  values of the stencil to obtain the gradient for each direction
@@ -107,7 +107,7 @@ public:
     // Member functions
 
         //- Return reference to the stencil
-        const extendedStencil& stencil() const
+        const extendedCellToFaceStencil& stencil() const
         {
             return stencil_;
         }
diff --git a/src/finiteVolume/fvMatrices/fvMatrix/fvMatrix.C b/src/finiteVolume/fvMatrices/fvMatrix/fvMatrix.C
index 5ad5dca8cdd5a90e84948eb6aac18199a3130340..1e49de46837ff1613623633bc791033d46e02595 100644
--- a/src/finiteVolume/fvMatrices/fvMatrix/fvMatrix.C
+++ b/src/finiteVolume/fvMatrices/fvMatrix/fvMatrix.C
@@ -480,7 +480,7 @@ void Foam::fvMatrix<Type>::setReference
     const bool forceReference
 )
 {
-    if (celli >= 0 && (psi_.needReference() || forceReference))
+    if ((forceReference || psi_.needReference()) && celli >= 0)
     {
         source()[celli] += diag()[celli]*value;
         diag()[celli] += diag()[celli];
@@ -1301,7 +1301,11 @@ Foam::tmp<Foam::fvMatrix<Type> > Foam::correction
 {
     tmp<Foam::fvMatrix<Type> > tAcorr = A - (A & A.psi());
 
-    if ((A.hasUpper() || A.hasLower()) && A.mesh().fluxRequired(A.psi().name()))
+    if
+    (
+        (A.hasUpper() || A.hasLower())
+     && A.psi().mesh().fluxRequired(A.psi().name())
+    )
     {
         tAcorr().faceFluxCorrectionPtr() = (-A.flux()).ptr();
     }
@@ -1321,7 +1325,11 @@ Foam::tmp<Foam::fvMatrix<Type> > Foam::correction
     // Note the matrix coefficients are still that of matrix A
     const fvMatrix<Type>& A = tAcorr();
 
-    if ((A.hasUpper() || A.hasLower()) && A.mesh().fluxRequired(A.psi().name()))
+    if
+    (
+        (A.hasUpper() || A.hasLower())
+     && A.psi().mesh().fluxRequired(A.psi().name())
+    )
     {
         tAcorr().faceFluxCorrectionPtr() = (-A.flux()).ptr();
     }
diff --git a/src/finiteVolume/fvMesh/extendedStencil/faceStencil/cellEdgeCellStencil.C b/src/finiteVolume/fvMesh/extendedStencil/cellToCell/fullStencils/CECCellToCellStencil.C
similarity index 90%
rename from src/finiteVolume/fvMesh/extendedStencil/faceStencil/cellEdgeCellStencil.C
rename to src/finiteVolume/fvMesh/extendedStencil/cellToCell/fullStencils/CECCellToCellStencil.C
index 034106f13abdb06dc5d6e4db73d777aed2d57177..b6d2dfa91ef4656621c6bb48611414d45e52b7ea 100644
--- a/src/finiteVolume/fvMesh/extendedStencil/faceStencil/cellEdgeCellStencil.C
+++ b/src/finiteVolume/fvMesh/extendedStencil/cellToCell/fullStencils/CECCellToCellStencil.C
@@ -24,16 +24,13 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "cellEdgeCellStencil.H"
+#include "CECCellToCellStencil.H"
 #include "syncTools.H"
-//#include "meshTools.H"
-//#include "OFstream.H"
-//#include "Time.H"
 
 // * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
 
 // Calculates per edge the neighbour data (= edgeCells)
-void Foam::cellEdgeCellStencil::calcEdgeBoundaryData
+void Foam::CECCellToCellStencil::calcEdgeBoundaryData
 (
     const boolList& isValidBFace,
     const labelList& boundaryEdges,
@@ -72,7 +69,7 @@ void Foam::cellEdgeCellStencil::calcEdgeBoundaryData
 
 // Calculates per cell the neighbour data (= cell or boundary in global
 // numbering). First element is always cell itself!
-void Foam::cellEdgeCellStencil::calcCellStencil
+void Foam::CECCellToCellStencil::calcCellStencil
 (
     labelListList& globalCellCells
 ) const
@@ -189,20 +186,12 @@ void Foam::cellEdgeCellStencil::calcCellStencil
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::cellEdgeCellStencil::cellEdgeCellStencil(const polyMesh& mesh)
+Foam::CECCellToCellStencil::CECCellToCellStencil(const polyMesh& mesh)
 :
-    faceStencil(mesh)
+    cellToCellStencil(mesh)
 {
     // Calculate per cell the (edge) connected cells (in global numbering)
-    labelListList globalCellCells;
-    calcCellStencil(globalCellCells);
-
-    // Add stencils of neighbouring cells to create faceStencil
-    labelListList faceStencil;
-    calcFaceStencil(globalCellCells, faceStencil);
-
-    // Transfer to *this
-    transfer(faceStencil);
+    calcCellStencil(*this);
 }
 
 
diff --git a/src/finiteVolume/fvMesh/extendedStencil/faceStencil/cellEdgeCellStencil.H b/src/finiteVolume/fvMesh/extendedStencil/cellToCell/fullStencils/CECCellToCellStencil.H
similarity index 84%
rename from src/finiteVolume/fvMesh/extendedStencil/faceStencil/cellEdgeCellStencil.H
rename to src/finiteVolume/fvMesh/extendedStencil/cellToCell/fullStencils/CECCellToCellStencil.H
index 2cc8b21e33cc92d3632af49c47304bb213cde2e7..27303ffd9f448c984c28eda028cd7448beadc349 100644
--- a/src/finiteVolume/fvMesh/extendedStencil/faceStencil/cellEdgeCellStencil.H
+++ b/src/finiteVolume/fvMesh/extendedStencil/cellToCell/fullStencils/CECCellToCellStencil.H
@@ -23,19 +23,19 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::cellEdgeCellStencil
+    Foam::CECCellToCellStencil
 
 Description
 
 SourceFiles
-    cellEdgeCellStencil.C
+    CECCellToCellStencil.C
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef cellEdgeCellStencil_H
-#define cellEdgeCellStencil_H
+#ifndef CECCellToCellStencil_H
+#define CECCellToCellStencil_H
 
-#include "faceStencil.H"
+#include "cellToCellStencil.H"
 #include "boolList.H"
 #include "HashSet.H"
 #include "Map.H"
@@ -47,12 +47,12 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                           Class cellEdgeCellStencil Declaration
+                           Class CECCellToCellStencil Declaration
 \*---------------------------------------------------------------------------*/
 
-class cellEdgeCellStencil
+class CECCellToCellStencil
 :
-    public faceStencil
+    public cellToCellStencil
 {
     // Private Member Functions
 
@@ -68,10 +68,10 @@ class cellEdgeCellStencil
 
 
         //- Disallow default bitwise copy construct
-        cellEdgeCellStencil(const cellEdgeCellStencil&);
+        CECCellToCellStencil(const CECCellToCellStencil&);
 
         //- Disallow default bitwise assignment
-        void operator=(const cellEdgeCellStencil&);
+        void operator=(const CECCellToCellStencil&);
 
 
 public:
@@ -79,7 +79,7 @@ public:
     // Constructors
 
         //- Construct from all cells and boundary faces
-        explicit cellEdgeCellStencil(const polyMesh&);
+        explicit CECCellToCellStencil(const polyMesh&);
 
 };
 
diff --git a/src/finiteVolume/fvMesh/extendedStencil/faceStencil/cellFaceCellStencil.C b/src/finiteVolume/fvMesh/extendedStencil/cellToCell/fullStencils/CFCCellToCellStencil.C
similarity index 89%
rename from src/finiteVolume/fvMesh/extendedStencil/faceStencil/cellFaceCellStencil.C
rename to src/finiteVolume/fvMesh/extendedStencil/cellToCell/fullStencils/CFCCellToCellStencil.C
index 263ebf0d041e85b9f2237c708d86b947b906c1db..7c718cacfd44256700210b1740abe0190da989b2 100644
--- a/src/finiteVolume/fvMesh/extendedStencil/faceStencil/cellFaceCellStencil.C
+++ b/src/finiteVolume/fvMesh/extendedStencil/cellToCell/fullStencils/CFCCellToCellStencil.C
@@ -24,7 +24,7 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "cellFaceCellStencil.H"
+#include "CFCCellToCellStencil.H"
 #include "syncTools.H"
 #include "SortableList.H"
 #include "emptyPolyPatch.H"
@@ -32,7 +32,7 @@ License
 // * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
 
 // Calculates per face the neighbour data (= cell or boundary face)
-void Foam::cellFaceCellStencil::calcFaceBoundaryData
+void Foam::CFCCellToCellStencil::calcFaceBoundaryData
 (
     labelList& neiGlobal
 ) const
@@ -85,7 +85,7 @@ void Foam::cellFaceCellStencil::calcFaceBoundaryData
 
 // Calculates per cell the neighbour data (= cell or boundary in global
 // numbering). First element is always cell itself!
-void Foam::cellFaceCellStencil::calcCellStencil(labelListList& globalCellCells)
+void Foam::CFCCellToCellStencil::calcCellStencil(labelListList& globalCellCells)
  const
 {
     const label nBnd = mesh().nFaces()-mesh().nInternalFaces();
@@ -147,20 +147,12 @@ void Foam::cellFaceCellStencil::calcCellStencil(labelListList& globalCellCells)
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::cellFaceCellStencil::cellFaceCellStencil(const polyMesh& mesh)
+Foam::CFCCellToCellStencil::CFCCellToCellStencil(const polyMesh& mesh)
 :
-    faceStencil(mesh)
+    cellToCellStencil(mesh)
 {
     // Calculate per cell the (face) connected cells (in global numbering)
-    labelListList globalCellCells;
-    calcCellStencil(globalCellCells);
-
-    // Add stencils of neighbouring cells to create faceStencil
-    labelListList faceStencil;
-    calcFaceStencil(globalCellCells, faceStencil);
-
-    // Transfer to *this
-    transfer(faceStencil);
+    calcCellStencil(*this);
 }
 
 
diff --git a/src/finiteVolume/fvMesh/extendedStencil/faceStencil/cellFaceCellStencil.H b/src/finiteVolume/fvMesh/extendedStencil/cellToCell/fullStencils/CFCCellToCellStencil.H
similarity index 82%
rename from src/finiteVolume/fvMesh/extendedStencil/faceStencil/cellFaceCellStencil.H
rename to src/finiteVolume/fvMesh/extendedStencil/cellToCell/fullStencils/CFCCellToCellStencil.H
index 174c4b7feec5ecc5871cab0727ae972c093621f0..c524b8d3eac9e9fe8583bfa228d6ba942be5f06a 100644
--- a/src/finiteVolume/fvMesh/extendedStencil/faceStencil/cellFaceCellStencil.H
+++ b/src/finiteVolume/fvMesh/extendedStencil/cellToCell/fullStencils/CFCCellToCellStencil.H
@@ -23,19 +23,19 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::cellFaceCellStencil
+    Foam::CFCCellToCellStencil
 
 Description
 
 SourceFiles
-    cellFaceCellStencil.C
+    CFCCellToCellStencil.C
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef cellFaceCellStencil_H
-#define cellFaceCellStencil_H
+#ifndef CFCCellToCellStencil_H
+#define CFCCellToCellStencil_H
 
-#include "faceStencil.H"
+#include "cellToCellStencil.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -43,12 +43,12 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                           Class cellFaceCellStencil Declaration
+                           Class CFCCellToCellStencil Declaration
 \*---------------------------------------------------------------------------*/
 
-class cellFaceCellStencil
+class CFCCellToCellStencil
 :
-    public faceStencil
+    public cellToCellStencil
 {
     // Private Member Functions
 
@@ -57,17 +57,17 @@ class cellFaceCellStencil
         void calcCellStencil(labelListList& globalCellCells) const;
 
         //- Disallow default bitwise copy construct
-        cellFaceCellStencil(const cellFaceCellStencil&);
+        CFCCellToCellStencil(const CFCCellToCellStencil&);
 
         //- Disallow default bitwise assignment
-        void operator=(const cellFaceCellStencil&);
+        void operator=(const CFCCellToCellStencil&);
 
 public:
 
     // Constructors
 
         //- Construct from mesh
-        explicit cellFaceCellStencil(const polyMesh& mesh);
+        explicit CFCCellToCellStencil(const polyMesh& mesh);
 };
 
 
diff --git a/src/finiteVolume/fvMesh/extendedStencil/faceStencil/cellPointCellStencil.C b/src/finiteVolume/fvMesh/extendedStencil/cellToCell/fullStencils/CPCCellToCellStencil.C
similarity index 90%
rename from src/finiteVolume/fvMesh/extendedStencil/faceStencil/cellPointCellStencil.C
rename to src/finiteVolume/fvMesh/extendedStencil/cellToCell/fullStencils/CPCCellToCellStencil.C
index 67b5be9a325baa700aaaaa3045798b3e0df2a1e2..af6de874b6edf459f7903b3c98c19b569c0cdc99 100644
--- a/src/finiteVolume/fvMesh/extendedStencil/faceStencil/cellPointCellStencil.C
+++ b/src/finiteVolume/fvMesh/extendedStencil/cellToCell/fullStencils/CPCCellToCellStencil.C
@@ -24,13 +24,13 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "cellPointCellStencil.H"
+#include "CPCCellToCellStencil.H"
 #include "syncTools.H"
 
 // * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
 
 // Calculates per point the neighbour data (= pointCells)
-void Foam::cellPointCellStencil::calcPointBoundaryData
+void Foam::CPCCellToCellStencil::calcPointBoundaryData
 (
     const boolList& isValidBFace,
     const labelList& boundaryPoints,
@@ -69,7 +69,7 @@ void Foam::cellPointCellStencil::calcPointBoundaryData
 
 // Calculates per cell the neighbour data (= cell or boundary in global
 // numbering). First element is always cell itself!
-void Foam::cellPointCellStencil::calcCellStencil
+void Foam::CPCCellToCellStencil::calcCellStencil
 (
     labelListList& globalCellCells
 ) const
@@ -154,20 +154,13 @@ void Foam::cellPointCellStencil::calcCellStencil
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::cellPointCellStencil::cellPointCellStencil(const polyMesh& mesh)
+Foam::CPCCellToCellStencil::CPCCellToCellStencil(const polyMesh& mesh)
 :
-    faceStencil(mesh)
+    cellToCellStencil(mesh)
 {
     // Calculate per cell the (point) connected cells (in global numbering)
     labelListList globalCellCells;
-    calcCellStencil(globalCellCells);
-
-    // Add stencils of neighbouring cells to create faceStencil
-    labelListList faceStencil;
-    calcFaceStencil(globalCellCells, faceStencil);
-
-    // Transfer to *this
-    transfer(faceStencil);
+    calcCellStencil(*this);
 }
 
 
diff --git a/src/finiteVolume/fvMesh/extendedStencil/faceStencil/cellPointCellStencil.H b/src/finiteVolume/fvMesh/extendedStencil/cellToCell/fullStencils/CPCCellToCellStencil.H
similarity index 84%
rename from src/finiteVolume/fvMesh/extendedStencil/faceStencil/cellPointCellStencil.H
rename to src/finiteVolume/fvMesh/extendedStencil/cellToCell/fullStencils/CPCCellToCellStencil.H
index 6bd318338b4ada8c23927d4b20c8f9354da3f50a..848e9044ab1c1a2fd5bb9b51ab7597714e138186 100644
--- a/src/finiteVolume/fvMesh/extendedStencil/faceStencil/cellPointCellStencil.H
+++ b/src/finiteVolume/fvMesh/extendedStencil/cellToCell/fullStencils/CPCCellToCellStencil.H
@@ -23,19 +23,19 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::cellPointCellStencil
+    Foam::CPCCellToCellStencil
 
 Description
 
 SourceFiles
-    cellPointCellStencil.C
+    CPCCellToCellStencil.C
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef cellPointCellStencil_H
-#define cellPointCellStencil_H
+#ifndef CPCCellToCellStencil_H
+#define CPCCellToCellStencil_H
 
-#include "faceStencil.H"
+#include "cellToCellStencil.H"
 #include "boolList.H"
 #include "HashSet.H"
 #include "Map.H"
@@ -46,12 +46,12 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                           Class cellPointCellStencil Declaration
+                           Class CPCCellToCellStencil Declaration
 \*---------------------------------------------------------------------------*/
 
-class cellPointCellStencil
+class CPCCellToCellStencil
 :
-    public faceStencil
+    public cellToCellStencil
 {
     // Private Member Functions
 
@@ -67,10 +67,10 @@ class cellPointCellStencil
 
 
         //- Disallow default bitwise copy construct
-        cellPointCellStencil(const cellPointCellStencil&);
+        CPCCellToCellStencil(const CPCCellToCellStencil&);
 
         //- Disallow default bitwise assignment
-        void operator=(const cellPointCellStencil&);
+        void operator=(const CPCCellToCellStencil&);
 
 
 public:
@@ -78,7 +78,7 @@ public:
     // Constructors
 
         //- Construct from all cells and boundary faces
-        explicit cellPointCellStencil(const polyMesh&);
+        explicit CPCCellToCellStencil(const polyMesh&);
 
 };
 
diff --git a/src/finiteVolume/fvMesh/extendedStencil/cellToCell/fullStencils/cellToCellStencil.C b/src/finiteVolume/fvMesh/extendedStencil/cellToCell/fullStencils/cellToCellStencil.C
new file mode 100644
index 0000000000000000000000000000000000000000..37af71f5e4884c97f6c11cc1aa4a3e6dfb6511a5
--- /dev/null
+++ b/src/finiteVolume/fvMesh/extendedStencil/cellToCell/fullStencils/cellToCellStencil.C
@@ -0,0 +1,350 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "cellToCellStencil.H"
+#include "syncTools.H"
+#include "SortableList.H"
+#include "emptyPolyPatch.H"
+
+// * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
+
+// Merge two list and guarantee global0,global1 are first.
+void Foam::cellToCellStencil::merge
+(
+    const label global0,
+    const label global1,
+    const labelList& listA,
+    labelList& listB
+)
+{
+    sort(listB);
+
+    // See if global0, global1 already present in listB
+    label nGlobalInsert = 0;
+
+    if (global0 != -1)
+    {
+        label index0 = findSortedIndex(listB, global0);
+        if (index0 == -1)
+        {
+            nGlobalInsert++;
+        }
+    }
+
+    if (global1 != -1)
+    {
+        label index1 = findSortedIndex(listB, global1);
+        if (index1 == -1)
+        {
+            nGlobalInsert++;
+        }
+    }
+
+
+    // For all in listA see if they are present
+    label nInsert = 0;
+
+    forAll(listA, i)
+    {
+        label elem = listA[i];
+
+        if (elem != global0 && elem != global1)
+        {
+            if (findSortedIndex(listB, elem) == -1)
+            {
+                nInsert++;
+            }
+        }
+    }
+
+    // Extend B with nInsert and whether global0,global1 need to be inserted.
+    labelList result(listB.size() + nGlobalInsert + nInsert);
+
+    label resultI = 0;
+
+    // Insert global0,1 first
+    if (global0 != -1)
+    {
+        result[resultI++] = global0;
+    }
+    if (global1 != -1)
+    {
+        result[resultI++] = global1;
+    }
+
+
+    // Insert listB
+    forAll(listB, i)
+    {
+        label elem = listB[i];
+
+        if (elem != global0 && elem != global1)
+        {
+            result[resultI++] = elem;
+        }
+    }
+
+
+    // Insert listA
+    forAll(listA, i)
+    {
+        label elem = listA[i];
+
+        if (elem != global0 && elem != global1)
+        {
+            if (findSortedIndex(listB, elem) == -1)
+            {
+                result[resultI++] = elem;
+            }
+        }
+    }
+
+    if (resultI != result.size())
+    {
+        FatalErrorIn("cellToCellStencil::merge(..)")
+            << "problem" << abort(FatalError);
+    }
+
+    listB.transfer(result);
+}
+
+
+// Merge two list and guarantee globalI is first.
+void Foam::cellToCellStencil::merge
+(
+    const label globalI,
+    const labelList& pGlobals,
+    labelList& cCells
+)
+{
+    labelHashSet set;
+    forAll(cCells, i)
+    {
+        if (cCells[i] != globalI)
+        {
+            set.insert(cCells[i]);
+        }
+    }
+
+    forAll(pGlobals, i)
+    {
+        if (pGlobals[i] != globalI)
+        {
+            set.insert(pGlobals[i]);
+        }
+    }
+
+    cCells.setSize(set.size()+1);
+    label n = 0;
+    cCells[n++] = globalI;
+
+    forAllConstIter(labelHashSet, set, iter)
+    {
+        cCells[n++] = iter.key();
+    }
+}
+
+
+void Foam::cellToCellStencil::validBoundaryFaces(boolList& isValidBFace) const
+{
+    const polyBoundaryMesh& patches = mesh().boundaryMesh();
+
+    isValidBFace.setSize(mesh().nFaces()-mesh().nInternalFaces(), true);
+
+    forAll(patches, patchI)
+    {
+        const polyPatch& pp = patches[patchI];
+
+        if (pp.coupled() || isA<emptyPolyPatch>(pp))
+        {
+            label bFaceI = pp.start()-mesh().nInternalFaces();
+            forAll(pp, i)
+            {
+                isValidBFace[bFaceI++] = false;
+            }
+        }
+    }
+}
+
+
+Foam::autoPtr<Foam::indirectPrimitivePatch>
+Foam::cellToCellStencil::allCoupledFacesPatch() const
+{
+    const polyBoundaryMesh& patches = mesh().boundaryMesh();
+
+    label nCoupled = 0;
+
+    forAll(patches, patchI)
+    {
+        const polyPatch& pp = patches[patchI];
+
+        if (pp.coupled())
+        {
+            nCoupled += pp.size();
+        }
+    }
+    labelList coupledFaces(nCoupled);
+    nCoupled = 0;
+
+    forAll(patches, patchI)
+    {
+        const polyPatch& pp = patches[patchI];
+
+        if (pp.coupled())
+        {
+            label faceI = pp.start();
+
+            forAll(pp, i)
+            {
+                coupledFaces[nCoupled++] = faceI++;
+            }
+        }
+    }
+
+    return autoPtr<indirectPrimitivePatch>
+    (
+        new indirectPrimitivePatch
+        (
+            IndirectList<face>
+            (
+                mesh().faces(),
+                coupledFaces
+            ),
+            mesh().points()
+        )
+    );
+}
+
+
+void Foam::cellToCellStencil::unionEqOp::operator()
+(
+    labelList& x,
+    const labelList& y
+) const
+{
+    if (y.size())
+    {
+        if (x.empty())
+        {
+            x = y;
+        }
+        else
+        {
+            labelHashSet set(x);
+            forAll(y, i)
+            {
+                set.insert(y[i]);
+            }
+            x = set.toc();
+        }
+    }
+}
+
+
+void Foam::cellToCellStencil::insertFaceCells
+(
+    const label exclude0,
+    const label exclude1,
+    const boolList& isValidBFace,
+    const labelList& faceLabels,
+    labelHashSet& globals
+) const
+{
+    const labelList& own = mesh().faceOwner();
+    const labelList& nei = mesh().faceNeighbour();
+
+    forAll(faceLabels, i)
+    {
+        label faceI = faceLabels[i];
+
+        label globalOwn = globalNumbering().toGlobal(own[faceI]);
+        if (globalOwn != exclude0 && globalOwn != exclude1)
+        {
+            globals.insert(globalOwn);
+        }
+
+        if (mesh().isInternalFace(faceI))
+        {
+            label globalNei = globalNumbering().toGlobal(nei[faceI]);
+            if (globalNei != exclude0 && globalNei != exclude1)
+            {
+                globals.insert(globalNei);
+            }
+        }
+        else
+        {
+            label bFaceI = faceI-mesh().nInternalFaces();
+
+            if (isValidBFace[bFaceI])
+            {
+                label globalI = globalNumbering().toGlobal
+                (
+                    mesh().nCells()
+                  + bFaceI
+                );
+
+                if (globalI != exclude0 && globalI != exclude1)
+                {
+                    globals.insert(globalI);
+                }
+            }
+        }
+    }
+}
+
+
+Foam::labelList Foam::cellToCellStencil::calcFaceCells
+(
+    const boolList& isValidBFace,
+    const labelList& faceLabels,
+    labelHashSet& globals
+) const
+{
+    globals.clear();
+
+    insertFaceCells
+    (
+        -1,
+        -1,
+        isValidBFace,
+        faceLabels,
+        globals
+    );
+
+    return globals.toc();
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::cellToCellStencil::cellToCellStencil(const polyMesh& mesh)
+:
+    mesh_(mesh),
+    globalNumbering_(mesh_.nCells()+mesh_.nFaces()-mesh_.nInternalFaces())
+{}
+
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/fvMesh/extendedStencil/cellToCell/fullStencils/cellToCellStencil.H b/src/finiteVolume/fvMesh/extendedStencil/cellToCell/fullStencils/cellToCellStencil.H
new file mode 100644
index 0000000000000000000000000000000000000000..08b7b0fb2fd171d4f2ec29e36ae2f38557c6f92c
--- /dev/null
+++ b/src/finiteVolume/fvMesh/extendedStencil/cellToCell/fullStencils/cellToCellStencil.H
@@ -0,0 +1,152 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::cellToCellStencil
+
+Description
+    baseclass for extended cell centred addressing. Contains per cell a
+    list of neighbouring cells and/or boundaryfaces in global addressing.
+
+SourceFiles
+    cellToCellStencil.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef cellToCellStencil_H
+#define cellToCellStencil_H
+
+#include "globalIndex.H"
+#include "boolList.H"
+#include "HashSet.H"
+#include "indirectPrimitivePatch.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+class polyMesh;
+
+/*---------------------------------------------------------------------------*\
+                           Class cellToCellStencil Declaration
+\*---------------------------------------------------------------------------*/
+
+class cellToCellStencil
+:
+    public labelListList
+{
+    // Private data
+
+        const polyMesh& mesh_;
+
+        //- Global numbering for cells and boundary faces
+        const globalIndex globalNumbering_;
+
+
+    // Private Member Functions
+
+        //- Disallow default bitwise assignment
+        void operator=(const cellToCellStencil&);
+
+        
+protected:
+
+        //- Merge two lists.
+        static void merge
+        (
+            const label,
+            const label,
+            const labelList&,
+            labelList&
+        );
+
+        //- Merge two lists.
+        static void merge(const label, const labelList&, labelList&);
+
+        //- Valid boundary faces (not empty and not coupled)
+        void validBoundaryFaces(boolList& isValidBFace) const;
+
+        //- Return patch of all coupled faces.
+        autoPtr<indirectPrimitivePatch> allCoupledFacesPatch() const;
+
+        //- Combine operator for labelLists
+        class unionEqOp
+        {
+            public:
+            void operator()( labelList& x, const labelList& y ) const;
+        };
+
+        //- Collect cell neighbours of faces in global numbering
+        void insertFaceCells
+        (
+            const label exclude0,
+            const label exclude1,
+            const boolList& nonEmptyFace,
+            const labelList& faceLabels,
+            labelHashSet& globals
+        ) const;
+
+        //- Collect cell neighbours of faces in global numbering
+        labelList calcFaceCells
+        (
+            const boolList& nonEmptyFace,
+            const labelList& faceLabels,
+            labelHashSet& globals
+        ) const;
+
+
+public:
+
+    // Constructors
+
+        //- Construct from mesh
+        explicit cellToCellStencil(const polyMesh&);
+
+
+    // Member Functions
+
+        const polyMesh& mesh() const
+        {
+            return mesh_;
+        }
+
+        //- Global numbering for cells and boundary faces
+        const globalIndex& globalNumbering() const
+        {
+            return globalNumbering_;
+        }
+
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/fvMesh/extendedStencil/cellToFace/MeshObjects/centredCECCellToFaceStencilObject.C b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/MeshObjects/centredCECCellToFaceStencilObject.C
new file mode 100644
index 0000000000000000000000000000000000000000..ddc33f39e2023dc12decceaabe838221a5f545d4
--- /dev/null
+++ b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/MeshObjects/centredCECCellToFaceStencilObject.C
@@ -0,0 +1,38 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "centredCECCellToFaceStencilObject.H"
+
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    defineTypeNameAndDebug(centredCECCellToFaceStencilObject, 0);
+}
+
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/fvMesh/extendedStencil/extendedStencilMeshObjects/centredCPCStencilObject.H b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/MeshObjects/centredCECCellToFaceStencilObject.H
similarity index 66%
rename from src/finiteVolume/fvMesh/extendedStencil/extendedStencilMeshObjects/centredCPCStencilObject.H
rename to src/finiteVolume/fvMesh/extendedStencil/cellToFace/MeshObjects/centredCECCellToFaceStencilObject.H
index 183c0808ccd69c8389a7f376f5126597746d0403..b639ee910aad8fbe5232af4bf325c15cd60eece1 100644
--- a/src/finiteVolume/fvMesh/extendedStencil/extendedStencilMeshObjects/centredCPCStencilObject.H
+++ b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/MeshObjects/centredCECCellToFaceStencilObject.H
@@ -23,7 +23,7 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::centredCPCStencilObject
+    Foam::centredCECCellToFaceStencilObject
 
 Description
 
@@ -31,11 +31,11 @@ SourceFiles
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef centredCPCStencilObject_H
-#define centredCPCStencilObject_H
+#ifndef centredCECCellToFaceStencilObject_H
+#define centredCECCellToFaceStencilObject_H
 
-#include "extendedCentredStencil.H"
-#include "cellPointCellStencil.H"
+#include "extendedCentredCellToFaceStencil.H"
+#include "CECCellToFaceStencil.H"
 #include "MeshObject.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -44,35 +44,42 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                           Class centredCPCStencilObject Declaration
+                           Class centredCECCellToFaceStencilObject Declaration
 \*---------------------------------------------------------------------------*/
 
-class centredCPCStencilObject
+class centredCECCellToFaceStencilObject
 :
-    public MeshObject<fvMesh, centredCPCStencilObject>,
-    public extendedCentredStencil
+    public MeshObject<fvMesh, centredCECCellToFaceStencilObject>,
+    public extendedCentredCellToFaceStencil
 {
 
 public:
 
-    TypeName("centredCFCStencil");
+    TypeName("centredCECCellToFaceStencil");
 
     // Constructors
 
         //- Construct from uncompacted face stencil
-        explicit centredCPCStencilObject
+        explicit centredCECCellToFaceStencilObject
         (
             const fvMesh& mesh
         )
         :
-            MeshObject<fvMesh, centredCPCStencilObject>(mesh),
-            extendedCentredStencil(cellPointCellStencil(mesh))
-        {}
+            MeshObject<fvMesh, centredCECCellToFaceStencilObject>(mesh),
+            extendedCentredCellToFaceStencil(CECCellToFaceStencil(mesh))
+        {
+            if (extendedCellToFaceStencil::debug)
+            {
+                Info<< "Generated centred stencil " << type()
+                    << nl << endl;
+                writeStencilStats(Info, stencil(), map());
+            }
+        }
 
 
     // Destructor
 
-        virtual ~centredCPCStencilObject()
+        virtual ~centredCECCellToFaceStencilObject()
         {}
 };
 
diff --git a/src/finiteVolume/fvMesh/extendedStencil/cellToFace/MeshObjects/centredCFCCellToFaceStencilObject.C b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/MeshObjects/centredCFCCellToFaceStencilObject.C
new file mode 100644
index 0000000000000000000000000000000000000000..675b9298700f200ff4c05aee4fbc25b8a79a864f
--- /dev/null
+++ b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/MeshObjects/centredCFCCellToFaceStencilObject.C
@@ -0,0 +1,38 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "centredCFCCellToFaceStencilObject.H"
+
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    defineTypeNameAndDebug(centredCFCCellToFaceStencilObject, 0);
+}
+
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/fvMesh/extendedStencil/cellToFace/MeshObjects/centredCFCCellToFaceStencilObject.H b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/MeshObjects/centredCFCCellToFaceStencilObject.H
new file mode 100644
index 0000000000000000000000000000000000000000..d6961220b5f13f64e0beda7dd989105a50f5069a
--- /dev/null
+++ b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/MeshObjects/centredCFCCellToFaceStencilObject.H
@@ -0,0 +1,94 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::centredCFCCellToFaceStencilObject
+
+Description
+
+SourceFiles
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef centredCFCCellToFaceStencilObject_H
+#define centredCFCCellToFaceStencilObject_H
+
+#include "extendedCentredCellToFaceStencil.H"
+#include "CFCCellToFaceStencil.H"
+#include "MeshObject.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+                           Class centredCFCCellToFaceStencilObject Declaration
+\*---------------------------------------------------------------------------*/
+
+class centredCFCCellToFaceStencilObject
+:
+    public MeshObject<fvMesh, centredCFCCellToFaceStencilObject>,
+    public extendedCentredCellToFaceStencil
+{
+
+public:
+
+    TypeName("centredCFCCellToFaceStencil");
+
+    // Constructors
+
+        //- Construct from uncompacted face stencil
+        explicit centredCFCCellToFaceStencilObject
+        (
+            const fvMesh& mesh
+        )
+        :
+            MeshObject<fvMesh, centredCFCCellToFaceStencilObject>(mesh),
+            extendedCentredCellToFaceStencil(CFCCellToFaceStencil(mesh))
+        {
+            if (extendedCellToFaceStencil::debug)
+            {
+                Info<< "Generated centred stencil " << type()
+                    << nl << endl;
+                writeStencilStats(Info, stencil(), map());
+            }
+        }
+
+
+    //- Destructor
+    virtual ~centredCFCCellToFaceStencilObject()
+    {}
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/fvMesh/extendedStencil/cellToFace/MeshObjects/centredCPCCellToFaceStencilObject.C b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/MeshObjects/centredCPCCellToFaceStencilObject.C
new file mode 100644
index 0000000000000000000000000000000000000000..cf0fc71cf4b9c0380f3dff34ad44aebb946e87bd
--- /dev/null
+++ b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/MeshObjects/centredCPCCellToFaceStencilObject.C
@@ -0,0 +1,38 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "centredCPCCellToFaceStencilObject.H"
+
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    defineTypeNameAndDebug(centredCPCCellToFaceStencilObject, 0);
+}
+
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/fvMesh/extendedStencil/cellToFace/MeshObjects/centredCPCCellToFaceStencilObject.H b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/MeshObjects/centredCPCCellToFaceStencilObject.H
new file mode 100644
index 0000000000000000000000000000000000000000..68608f210bc9a5bea7e016ad8705d717b941201c
--- /dev/null
+++ b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/MeshObjects/centredCPCCellToFaceStencilObject.H
@@ -0,0 +1,95 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::centredCPCCellToFaceStencilObject
+
+Description
+
+SourceFiles
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef centredCPCCellToFaceStencilObject_H
+#define centredCPCCellToFaceStencilObject_H
+
+#include "extendedCentredCellToFaceStencil.H"
+#include "CPCCellToFaceStencil.H"
+#include "MeshObject.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+                           Class centredCPCCellToFaceStencilObject Declaration
+\*---------------------------------------------------------------------------*/
+
+class centredCPCCellToFaceStencilObject
+:
+    public MeshObject<fvMesh, centredCPCCellToFaceStencilObject>,
+    public extendedCentredCellToFaceStencil
+{
+
+public:
+
+    TypeName("centredCFCCellToFaceStencil");
+
+    // Constructors
+
+        //- Construct from uncompacted face stencil
+        explicit centredCPCCellToFaceStencilObject
+        (
+            const fvMesh& mesh
+        )
+        :
+            MeshObject<fvMesh, centredCPCCellToFaceStencilObject>(mesh),
+            extendedCentredCellToFaceStencil(CPCCellToFaceStencil(mesh))
+        {
+            if (extendedCellToFaceStencil::debug)
+            {
+                Info<< "Generated centred stencil " << type()
+                    << nl << endl;
+                writeStencilStats(Info, stencil(), map());
+            }
+        }
+
+
+    // Destructor
+
+        virtual ~centredCPCCellToFaceStencilObject()
+        {}
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/fvMesh/extendedStencil/cellToFace/MeshObjects/centredFECCellToFaceStencilObject.C b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/MeshObjects/centredFECCellToFaceStencilObject.C
new file mode 100644
index 0000000000000000000000000000000000000000..b66c40ce059dd15edd673e75f7aba716cd2af296
--- /dev/null
+++ b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/MeshObjects/centredFECCellToFaceStencilObject.C
@@ -0,0 +1,38 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "centredFECCellToFaceStencilObject.H"
+
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    defineTypeNameAndDebug(centredFECCellToFaceStencilObject, 0);
+}
+
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/fvMesh/extendedStencil/cellToFace/MeshObjects/centredFECCellToFaceStencilObject.H b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/MeshObjects/centredFECCellToFaceStencilObject.H
new file mode 100644
index 0000000000000000000000000000000000000000..3a802374f7af4de0b48af6c7d036f557e608bdcd
--- /dev/null
+++ b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/MeshObjects/centredFECCellToFaceStencilObject.H
@@ -0,0 +1,95 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::centredFECCellToFaceStencilObject
+
+Description
+
+SourceFiles
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef centredFECCellToFaceStencilObject_H
+#define centredFECCellToFaceStencilObject_H
+
+#include "extendedCentredCellToFaceStencil.H"
+#include "FECCellToFaceStencil.H"
+#include "MeshObject.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+                           Class centredFECCellToFaceStencilObject Declaration
+\*---------------------------------------------------------------------------*/
+
+class centredFECCellToFaceStencilObject
+:
+    public MeshObject<fvMesh, centredFECCellToFaceStencilObject>,
+    public extendedCentredCellToFaceStencil
+{
+
+public:
+
+    TypeName("centredCFCCellToFaceStencil");
+
+    // Constructors
+
+        //- Construct from uncompacted face stencil
+        explicit centredFECCellToFaceStencilObject
+        (
+            const fvMesh& mesh
+        )
+        :
+            MeshObject<fvMesh, centredFECCellToFaceStencilObject>(mesh),
+            extendedCentredCellToFaceStencil(FECCellToFaceStencil(mesh))
+        {
+            if (extendedCellToFaceStencil::debug)
+            {
+                Info<< "Generated centred stencil " << type()
+                    << nl << endl;
+                writeStencilStats(Info, stencil(), map());
+            }
+        }
+
+
+    // Destructor
+
+        virtual ~centredFECCellToFaceStencilObject()
+        {}
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/fvMesh/extendedStencil/cellToFace/MeshObjects/pureUpwindCFCCellToFaceStencilObject.C b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/MeshObjects/pureUpwindCFCCellToFaceStencilObject.C
new file mode 100644
index 0000000000000000000000000000000000000000..541e7f40d0c32fd4112088232eabea1dc26da81c
--- /dev/null
+++ b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/MeshObjects/pureUpwindCFCCellToFaceStencilObject.C
@@ -0,0 +1,38 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "pureUpwindCFCCellToFaceStencilObject.H"
+
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    defineTypeNameAndDebug(pureUpwindCFCCellToFaceStencilObject, 0);
+}
+
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/fvMesh/extendedStencil/cellToFace/MeshObjects/pureUpwindCFCCellToFaceStencilObject.H b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/MeshObjects/pureUpwindCFCCellToFaceStencilObject.H
new file mode 100644
index 0000000000000000000000000000000000000000..c3be0efe7e02c399500f46c7bfd2bdd8f9d7e442
--- /dev/null
+++ b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/MeshObjects/pureUpwindCFCCellToFaceStencilObject.H
@@ -0,0 +1,95 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::upwindCFCCellToFaceStencilObject
+
+Description
+
+SourceFiles
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef pureUpwindCFCCellToFaceStencilObject_H
+#define pureUpwindCFCCellToFaceStencilObject_H
+
+#include "extendedUpwindCellToFaceStencil.H"
+#include "CFCCellToFaceStencil.H"
+#include "MeshObject.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+            Class pureUpwindCFCCellToFaceStencilObject Declaration
+\*---------------------------------------------------------------------------*/
+
+class pureUpwindCFCCellToFaceStencilObject
+:
+    public MeshObject<fvMesh, pureUpwindCFCCellToFaceStencilObject>,
+    public extendedUpwindCellToFaceStencil
+{
+
+public:
+
+    TypeName("pureUpwindCFCCellToFaceStencil");
+
+    // Constructors
+
+        //- Construct from uncompacted face stencil
+        explicit pureUpwindCFCCellToFaceStencilObject
+        (
+            const fvMesh& mesh
+        )
+        :
+            MeshObject<fvMesh, pureUpwindCFCCellToFaceStencilObject>(mesh),
+            extendedUpwindCellToFaceStencil(CFCCellToFaceStencil(mesh))
+        {
+            if (extendedCellToFaceStencil::debug)
+            {
+                Info<< "Generated pure upwind stencil " << type()
+                    << nl << endl;
+                writeStencilStats(Info, ownStencil(), ownMap());
+            }
+        }
+
+
+    // Destructor
+
+        virtual ~pureUpwindCFCCellToFaceStencilObject()
+        {}
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/fvMesh/extendedStencil/extendedStencilMeshObjects/centredCECStencilObject.C b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/MeshObjects/upwindCECCellToFaceStencilObject.C
similarity index 92%
rename from src/finiteVolume/fvMesh/extendedStencil/extendedStencilMeshObjects/centredCECStencilObject.C
rename to src/finiteVolume/fvMesh/extendedStencil/cellToFace/MeshObjects/upwindCECCellToFaceStencilObject.C
index 6a1e250065db0ae32556e3c94172096078684183..1c5271b13248118e0ebcfd093c303b086037977a 100644
--- a/src/finiteVolume/fvMesh/extendedStencil/extendedStencilMeshObjects/centredCECStencilObject.C
+++ b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/MeshObjects/upwindCECCellToFaceStencilObject.C
@@ -24,14 +24,14 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "centredCECStencilObject.H"
+#include "upwindCECCellToFaceStencilObject.H"
 
 
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 namespace Foam
 {
-    defineTypeNameAndDebug(centredCECStencilObject, 0);
+    defineTypeNameAndDebug(upwindCECCellToFaceStencilObject, 0);
 }
 
 
diff --git a/src/finiteVolume/fvMesh/extendedStencil/extendedStencilMeshObjects/upwindCFCStencilObject.H b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/MeshObjects/upwindCECCellToFaceStencilObject.H
similarity index 64%
rename from src/finiteVolume/fvMesh/extendedStencil/extendedStencilMeshObjects/upwindCFCStencilObject.H
rename to src/finiteVolume/fvMesh/extendedStencil/cellToFace/MeshObjects/upwindCECCellToFaceStencilObject.H
index de8972c112e647f78712371df86a289a85816a74..d23cdacfef173d7174c306445e6415e7f50c6c0a 100644
--- a/src/finiteVolume/fvMesh/extendedStencil/extendedStencilMeshObjects/upwindCFCStencilObject.H
+++ b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/MeshObjects/upwindCECCellToFaceStencilObject.H
@@ -23,7 +23,7 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::upwindCFCStencilObject
+    Foam::upwindCECCellToFaceStencilObject
 
 Description
 
@@ -31,11 +31,11 @@ SourceFiles
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef upwindCFCStencilObject_H
-#define upwindCFCStencilObject_H
+#ifndef upwindCECCellToFaceStencilObject_H
+#define upwindCECCellToFaceStencilObject_H
 
-#include "extendedUpwindStencil.H"
-#include "cellFaceCellStencil.H"
+#include "extendedUpwindCellToFaceStencil.H"
+#include "CECCellToFaceStencil.H"
 #include "MeshObject.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -44,36 +44,49 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                           Class upwindCFCStencilObject Declaration
+                           Class upwindCECCellToFaceStencilObject Declaration
 \*---------------------------------------------------------------------------*/
 
-class upwindCFCStencilObject
+class upwindCECCellToFaceStencilObject
 :
-    public MeshObject<fvMesh, upwindCFCStencilObject>,
-    public extendedUpwindStencil
+    public MeshObject<fvMesh, upwindCECCellToFaceStencilObject>,
+    public extendedUpwindCellToFaceStencil
 {
 
 public:
 
-    TypeName("upwindCFCStencil");
+    TypeName("upwindCFCCellToFaceStencil");
 
     // Constructors
 
         //- Construct from uncompacted face stencil
-        explicit upwindCFCStencilObject
+        explicit upwindCECCellToFaceStencilObject
         (
             const fvMesh& mesh,
+            const bool pureUpwind,
             const scalar minOpposedness
         )
         :
-            MeshObject<fvMesh, upwindCFCStencilObject>(mesh),
-            extendedUpwindStencil(cellFaceCellStencil(mesh), minOpposedness)
-        {}
+            MeshObject<fvMesh, upwindCECCellToFaceStencilObject>(mesh),
+            extendedUpwindCellToFaceStencil
+            (
+                CECCellToFaceStencil(mesh),
+                pureUpwind,
+                minOpposedness
+            )
+        {
+            if (extendedCellToFaceStencil::debug)
+            {
+                Info<< "Generated off-centred stencil " << type()
+                    << nl << endl;
+                writeStencilStats(Info, ownStencil(), ownMap());
+            }
+        }
 
 
     // Destructor
 
-        virtual ~upwindCFCStencilObject()
+        virtual ~upwindCECCellToFaceStencilObject()
         {}
 };
 
diff --git a/src/finiteVolume/fvMesh/extendedStencil/extendedStencilMeshObjects/centredCPCStencilObject.C b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/MeshObjects/upwindCFCCellToFaceStencilObject.C
similarity index 92%
rename from src/finiteVolume/fvMesh/extendedStencil/extendedStencilMeshObjects/centredCPCStencilObject.C
rename to src/finiteVolume/fvMesh/extendedStencil/cellToFace/MeshObjects/upwindCFCCellToFaceStencilObject.C
index db5bf143ae170f945ff9c036233d0b59ab021c01..18ea2137222c8baa5fe90fe3289b051c1913cbc6 100644
--- a/src/finiteVolume/fvMesh/extendedStencil/extendedStencilMeshObjects/centredCPCStencilObject.C
+++ b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/MeshObjects/upwindCFCCellToFaceStencilObject.C
@@ -24,14 +24,14 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "centredCPCStencilObject.H"
+#include "upwindCFCCellToFaceStencilObject.H"
 
 
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 namespace Foam
 {
-    defineTypeNameAndDebug(centredCPCStencilObject, 0);
+    defineTypeNameAndDebug(upwindCFCCellToFaceStencilObject, 0);
 }
 
 
diff --git a/src/finiteVolume/fvMesh/extendedStencil/extendedStencilMeshObjects/upwindCPCStencilObject.H b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/MeshObjects/upwindCFCCellToFaceStencilObject.H
similarity index 64%
rename from src/finiteVolume/fvMesh/extendedStencil/extendedStencilMeshObjects/upwindCPCStencilObject.H
rename to src/finiteVolume/fvMesh/extendedStencil/cellToFace/MeshObjects/upwindCFCCellToFaceStencilObject.H
index b73d25820522007152aa50f32ea45028d6a93825..f543f6d8e63e426880bce2e4edda575ca3bb09dc 100644
--- a/src/finiteVolume/fvMesh/extendedStencil/extendedStencilMeshObjects/upwindCPCStencilObject.H
+++ b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/MeshObjects/upwindCFCCellToFaceStencilObject.H
@@ -23,7 +23,7 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::upwindCPCStencilObject
+    Foam::upwindCFCCellToFaceStencilObject
 
 Description
 
@@ -31,11 +31,11 @@ SourceFiles
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef upwindCPCStencilObject_H
-#define upwindCPCStencilObject_H
+#ifndef upwindCFCCellToFaceStencilObject_H
+#define upwindCFCCellToFaceStencilObject_H
 
-#include "extendedUpwindStencil.H"
-#include "cellPointCellStencil.H"
+#include "extendedUpwindCellToFaceStencil.H"
+#include "CFCCellToFaceStencil.H"
 #include "MeshObject.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -44,36 +44,49 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                           Class upwindCPCStencilObject Declaration
+                           Class upwindCFCCellToFaceStencilObject Declaration
 \*---------------------------------------------------------------------------*/
 
-class upwindCPCStencilObject
+class upwindCFCCellToFaceStencilObject
 :
-    public MeshObject<fvMesh, upwindCPCStencilObject>,
-    public extendedUpwindStencil
+    public MeshObject<fvMesh, upwindCFCCellToFaceStencilObject>,
+    public extendedUpwindCellToFaceStencil
 {
 
 public:
 
-    TypeName("upwindCFCStencil");
+    TypeName("upwindCFCCellToFaceStencil");
 
     // Constructors
 
         //- Construct from uncompacted face stencil
-        explicit upwindCPCStencilObject
+        explicit upwindCFCCellToFaceStencilObject
         (
             const fvMesh& mesh,
+            const bool pureUpwind,
             const scalar minOpposedness
         )
         :
-            MeshObject<fvMesh, upwindCPCStencilObject>(mesh),
-            extendedUpwindStencil(cellPointCellStencil(mesh), minOpposedness)
-        {}
+            MeshObject<fvMesh, upwindCFCCellToFaceStencilObject>(mesh),
+            extendedUpwindCellToFaceStencil
+            (
+                CFCCellToFaceStencil(mesh),
+                pureUpwind,
+                minOpposedness
+            )
+        {
+            if (extendedCellToFaceStencil::debug)
+            {
+                Info<< "Generated off-centred stencil " << type()
+                    << nl << endl;
+                writeStencilStats(Info, ownStencil(), ownMap());
+            }
+        }
 
 
     // Destructor
 
-        virtual ~upwindCPCStencilObject()
+        virtual ~upwindCFCCellToFaceStencilObject()
         {}
 };
 
diff --git a/src/finiteVolume/fvMesh/extendedStencil/extendedStencilMeshObjects/centredFECStencilObject.C b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/MeshObjects/upwindCPCCellToFaceStencilObject.C
similarity index 92%
rename from src/finiteVolume/fvMesh/extendedStencil/extendedStencilMeshObjects/centredFECStencilObject.C
rename to src/finiteVolume/fvMesh/extendedStencil/cellToFace/MeshObjects/upwindCPCCellToFaceStencilObject.C
index ba7351994a998a531616c9903e52753d25a7ac65..1f1e3448cafd81d77913baf8a580db2b57c1a388 100644
--- a/src/finiteVolume/fvMesh/extendedStencil/extendedStencilMeshObjects/centredFECStencilObject.C
+++ b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/MeshObjects/upwindCPCCellToFaceStencilObject.C
@@ -24,14 +24,14 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "centredFECStencilObject.H"
+#include "upwindCPCCellToFaceStencilObject.H"
 
 
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 namespace Foam
 {
-    defineTypeNameAndDebug(centredFECStencilObject, 0);
+    defineTypeNameAndDebug(upwindCPCCellToFaceStencilObject, 0);
 }
 
 
diff --git a/src/finiteVolume/fvMesh/extendedStencil/extendedStencilMeshObjects/upwindFECStencilObject.H b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/MeshObjects/upwindCPCCellToFaceStencilObject.H
similarity index 64%
rename from src/finiteVolume/fvMesh/extendedStencil/extendedStencilMeshObjects/upwindFECStencilObject.H
rename to src/finiteVolume/fvMesh/extendedStencil/cellToFace/MeshObjects/upwindCPCCellToFaceStencilObject.H
index 478774013a0edc76f9e21f066f51c98c669bab74..b86e0b00b5bc724594945e535864a9a317a4a9ff 100644
--- a/src/finiteVolume/fvMesh/extendedStencil/extendedStencilMeshObjects/upwindFECStencilObject.H
+++ b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/MeshObjects/upwindCPCCellToFaceStencilObject.H
@@ -23,7 +23,7 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::upwindFECStencilObject
+    Foam::upwindCPCCellToFaceStencilObject
 
 Description
 
@@ -31,11 +31,11 @@ SourceFiles
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef upwindFECStencilObject_H
-#define upwindFECStencilObject_H
+#ifndef upwindCPCCellToFaceStencilObject_H
+#define upwindCPCCellToFaceStencilObject_H
 
-#include "extendedUpwindStencil.H"
-#include "faceEdgeCellStencil.H"
+#include "extendedUpwindCellToFaceStencil.H"
+#include "CPCCellToFaceStencil.H"
 #include "MeshObject.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -44,36 +44,49 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                           Class upwindFECStencilObject Declaration
+                           Class upwindCPCCellToFaceStencilObject Declaration
 \*---------------------------------------------------------------------------*/
 
-class upwindFECStencilObject
+class upwindCPCCellToFaceStencilObject
 :
-    public MeshObject<fvMesh, upwindFECStencilObject>,
-    public extendedUpwindStencil
+    public MeshObject<fvMesh, upwindCPCCellToFaceStencilObject>,
+    public extendedUpwindCellToFaceStencil
 {
 
 public:
 
-    TypeName("upwindCFCStencil");
+    TypeName("upwindCFCCellToFaceStencil");
 
     // Constructors
 
         //- Construct from uncompacted face stencil
-        explicit upwindFECStencilObject
+        explicit upwindCPCCellToFaceStencilObject
         (
             const fvMesh& mesh,
+            const bool pureUpwind,
             const scalar minOpposedness
         )
         :
-            MeshObject<fvMesh, upwindFECStencilObject>(mesh),
-            extendedUpwindStencil(faceEdgeCellStencil(mesh), minOpposedness)
-        {}
+            MeshObject<fvMesh, upwindCPCCellToFaceStencilObject>(mesh),
+            extendedUpwindCellToFaceStencil
+            (
+                CPCCellToFaceStencil(mesh),
+                pureUpwind,
+                minOpposedness
+            )
+        {
+            if (extendedCellToFaceStencil::debug)
+            {
+                Info<< "Generated off-centred stencil " << type()
+                    << nl << endl;
+                writeStencilStats(Info, ownStencil(), ownMap());
+            }
+        }
 
 
     // Destructor
 
-        virtual ~upwindFECStencilObject()
+        virtual ~upwindCPCCellToFaceStencilObject()
         {}
 };
 
diff --git a/src/finiteVolume/fvMesh/extendedStencil/extendedStencilMeshObjects/centredCFCStencilObject.C b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/MeshObjects/upwindFECCellToFaceStencilObject.C
similarity index 92%
rename from src/finiteVolume/fvMesh/extendedStencil/extendedStencilMeshObjects/centredCFCStencilObject.C
rename to src/finiteVolume/fvMesh/extendedStencil/cellToFace/MeshObjects/upwindFECCellToFaceStencilObject.C
index e7ebaa389bdfea701f66d8ef8876ad38d97897cc..d397daf01f8ed2c676ce7d16b5334d47ad25e59d 100644
--- a/src/finiteVolume/fvMesh/extendedStencil/extendedStencilMeshObjects/centredCFCStencilObject.C
+++ b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/MeshObjects/upwindFECCellToFaceStencilObject.C
@@ -24,14 +24,14 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "centredCFCStencilObject.H"
+#include "upwindFECCellToFaceStencilObject.H"
 
 
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 namespace Foam
 {
-    defineTypeNameAndDebug(centredCFCStencilObject, 0);
+    defineTypeNameAndDebug(upwindFECCellToFaceStencilObject, 0);
 }
 
 
diff --git a/src/finiteVolume/fvMesh/extendedStencil/cellToFace/MeshObjects/upwindFECCellToFaceStencilObject.H b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/MeshObjects/upwindFECCellToFaceStencilObject.H
new file mode 100644
index 0000000000000000000000000000000000000000..9bd07a1607357d52784d2dc9f949aef71efee8f2
--- /dev/null
+++ b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/MeshObjects/upwindFECCellToFaceStencilObject.H
@@ -0,0 +1,102 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::upwindFECCellToFaceStencilObject
+
+Description
+
+SourceFiles
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef upwindFECCellToFaceStencilObject_H
+#define upwindFECCellToFaceStencilObject_H
+
+#include "extendedUpwindCellToFaceStencil.H"
+#include "FECCellToFaceStencil.H"
+#include "MeshObject.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+                           Class upwindFECCellToFaceStencilObject Declaration
+\*---------------------------------------------------------------------------*/
+
+class upwindFECCellToFaceStencilObject
+:
+    public MeshObject<fvMesh, upwindFECCellToFaceStencilObject>,
+    public extendedUpwindCellToFaceStencil
+{
+
+public:
+
+    TypeName("upwindCFCCellToFaceStencil");
+
+    // Constructors
+
+        //- Construct from uncompacted face stencil
+        explicit upwindFECCellToFaceStencilObject
+        (
+            const fvMesh& mesh,
+            const bool pureUpwind,
+            const scalar minOpposedness
+        )
+        :
+            MeshObject<fvMesh, upwindFECCellToFaceStencilObject>(mesh),
+            extendedUpwindCellToFaceStencil
+            (
+                FECCellToFaceStencil(mesh),
+                pureUpwind,
+                minOpposedness
+            )
+        {
+            if (extendedCellToFaceStencil::debug)
+            {
+                Info<< "Generated off-centred stencil " << type()
+                    << nl << endl;
+                writeStencilStats(Info, ownStencil(), ownMap());
+            }
+        }
+
+
+    // Destructor
+
+        virtual ~upwindFECCellToFaceStencilObject()
+        {}
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/fvMesh/extendedStencil/extendedStencil.C b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/extendedCellToFaceStencil.C
similarity index 57%
rename from src/finiteVolume/fvMesh/extendedStencil/extendedStencil.C
rename to src/finiteVolume/fvMesh/extendedStencil/cellToFace/extendedCellToFaceStencil.C
index 1ff00db7ba44c2350e44de2b2845f8b563d491e6..5b1cb12e342a15f38eaa1caa5f9b3da4787197c9 100644
--- a/src/finiteVolume/fvMesh/extendedStencil/extendedStencil.C
+++ b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/extendedCellToFaceStencil.C
@@ -24,184 +24,83 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "extendedStencil.H"
+#include "extendedCellToFaceStencil.H"
 #include "globalIndex.H"
 #include "syncTools.H"
 #include "SortableList.H"
 
+/* * * * * * * * * * * * * * * Static Member Data  * * * * * * * * * * * * * */
+
+defineTypeNameAndDebug(Foam::extendedCellToFaceStencil, 0);
+
+
 // * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
 
-// Calculates per face a list of global cell/face indices.
-void Foam::extendedStencil::calcFaceStencil
+void Foam::extendedCellToFaceStencil::writeStencilStats
 (
-    const labelListList& globalCellCells,
-    labelListList& faceStencil
+    Ostream& os,
+    const labelListList& stencil,
+    const mapDistribute& map
 )
 {
-    const polyBoundaryMesh& patches = mesh_.boundaryMesh();
-    const label nBnd = mesh_.nFaces()-mesh_.nInternalFaces();
-    const labelList& own = mesh_.faceOwner();
-    const labelList& nei = mesh_.faceNeighbour();
-
+    label sumSize = 0;
+    label nSum = 0;
+    label minSize = labelMax;
+    label maxSize = labelMin;
 
-    // Determine neighbouring global cell Cells
-    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-    labelListList neiGlobalCellCells(nBnd);
-    forAll(patches, patchI)
+    forAll(stencil, i)
     {
-        const polyPatch& pp = patches[patchI];
+        const labelList& sCells = stencil[i];
 
-        if (pp.coupled())
+        if (sCells.size() > 0)
         {
-            label faceI = pp.start();
-
-            forAll(pp, i)
-            {
-                neiGlobalCellCells[faceI-mesh_.nInternalFaces()] =
-                    globalCellCells[own[faceI]];
-                faceI++;
-            }
+            sumSize += sCells.size();
+            nSum++;
+            minSize = min(minSize, sCells.size());
+            maxSize = max(maxSize, sCells.size());
         }
     }
-    syncTools::swapBoundaryFaceList(mesh_, neiGlobalCellCells, false);
-
-
-
-    // Construct stencil in global numbering
-    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-    faceStencil.setSize(mesh_.nFaces());
-
-    labelHashSet faceStencilSet;
-
-    for (label faceI = 0; faceI < mesh_.nInternalFaces(); faceI++)
+    reduce(sumSize, sumOp<label>());
+    reduce(nSum, sumOp<label>());
+
+    reduce(minSize, minOp<label>());
+    reduce(maxSize, maxOp<label>());
+
+    os  << "Stencil size :" << nl
+        << "    average : " << scalar(sumSize)/nSum << nl
+        << "    min     : " << minSize << nl
+        << "    max     : " << maxSize << nl
+        << endl;
+
+    // Sum all sent data
+    label nSent = 0;
+    label nLocal = 0;
+    forAll(map.subMap(), procI)
     {
-        faceStencilSet.clear();
-
-        const labelList& ownCCells = globalCellCells[own[faceI]];
-        label globalOwn = ownCCells[0];
-        // Insert cellCells
-        forAll(ownCCells, i)
-        {
-            faceStencilSet.insert(ownCCells[i]);
-        }
-
-        const labelList& neiCCells = globalCellCells[nei[faceI]];
-        label globalNei = neiCCells[0];
-        // Insert cellCells
-        forAll(neiCCells, i)
+        if (procI != Pstream::myProcNo())
         {
-            faceStencilSet.insert(neiCCells[i]);
+            nSent += map.subMap()[procI].size();
         }
-
-        // Guarantee owner first, neighbour second.
-        faceStencil[faceI].setSize(faceStencilSet.size());
-        label n = 0;
-        faceStencil[faceI][n++] = globalOwn;
-        faceStencil[faceI][n++] = globalNei;
-        forAllConstIter(labelHashSet, faceStencilSet, iter)
+        else
         {
-            if (iter.key() != globalOwn && iter.key() != globalNei)
-            {
-                faceStencil[faceI][n++] = iter.key();
-            }
+            nLocal += map.subMap()[procI].size();
         }
-        //Pout<< "internalface:" << faceI << " toc:" << faceStencilSet.toc()
-        //    << " faceStencil:" << faceStencil[faceI] << endl;
     }
-    forAll(patches, patchI)
-    {
-        const polyPatch& pp = patches[patchI];
-        label faceI = pp.start();
-
-        if (pp.coupled())
-        {
-            forAll(pp, i)
-            {
-                faceStencilSet.clear();
-
-                const labelList& ownCCells = globalCellCells[own[faceI]];
-                label globalOwn = ownCCells[0];
-                forAll(ownCCells, i)
-                {
-                    faceStencilSet.insert(ownCCells[i]);
-                }
-
-                // And the neighbours of the coupled cell
-                const labelList& neiCCells =
-                    neiGlobalCellCells[faceI-mesh_.nInternalFaces()];
-                label globalNei = neiCCells[0];
-                forAll(neiCCells, i)
-                {
-                    faceStencilSet.insert(neiCCells[i]);
-                }
 
-                // Guarantee owner first, neighbour second.
-                faceStencil[faceI].setSize(faceStencilSet.size());
-                label n = 0;
-                faceStencil[faceI][n++] = globalOwn;
-                faceStencil[faceI][n++] = globalNei;
-                forAllConstIter(labelHashSet, faceStencilSet, iter)
-                {
-                    if (iter.key() != globalOwn && iter.key() != globalNei)
-                    {
-                        faceStencil[faceI][n++] = iter.key();
-                    }
-                }
-
-                //Pout<< "coupledface:" << faceI
-                //    << " toc:" << faceStencilSet.toc()
-                //    << " faceStencil:" << faceStencil[faceI] << endl;
-
-                faceI++;
-            }
-        }
-        else if (!isA<emptyPolyPatch>(pp))
-        {
-            forAll(pp, i)
-            {
-                faceStencilSet.clear();
-
-                const labelList& ownCCells = globalCellCells[own[faceI]];
-                label globalOwn = ownCCells[0];
-                forAll(ownCCells, i)
-                {
-                    faceStencilSet.insert(ownCCells[i]);
-                }
-
-                // Guarantee owner first, neighbour second.
-                faceStencil[faceI].setSize(faceStencilSet.size());
-                label n = 0;
-                faceStencil[faceI][n++] = globalOwn;
-                forAllConstIter(labelHashSet, faceStencilSet, iter)
-                {
-                    if (iter.key() != globalOwn)
-                    {
-                        faceStencil[faceI][n++] = iter.key();
-                    }
-                }
-
-                //Pout<< "boundaryface:" << faceI
-                //    << " toc:" << faceStencilSet.toc()
-                //    << " faceStencil:" << faceStencil[faceI] << endl;
-
-                faceI++;
-            }
-        }
-    }
+    os  << "Local data size : " << returnReduce(nLocal, sumOp<label>()) << nl
+        << "Sent data size  : " << returnReduce(nSent, sumOp<label>()) << nl
+        << endl;
 }
 
 
-Foam::autoPtr<Foam::mapDistribute> Foam::extendedStencil::calcDistributeMap
+Foam::autoPtr<Foam::mapDistribute>
+Foam::extendedCellToFaceStencil::calcDistributeMap
 (
+    const polyMesh& mesh,
     const globalIndex& globalNumbering,
     labelListList& faceStencil
 )
 {
-    const label nBnd = mesh_.nFaces()-mesh_.nInternalFaces();
-
-
     // Convert stencil to schedule
     // ~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
@@ -215,8 +114,8 @@ Foam::autoPtr<Foam::mapDistribute> Foam::extendedStencil::calcDistributeMap
     //    these are always all needed.
     List<Map<label> > globalToProc(Pstream::nProcs());
     {
-        const labelList& procPatchMap = mesh_.globalData().procPatchMap();
-        const polyBoundaryMesh& patches = mesh_.boundaryMesh();
+        const labelList& procPatchMap = mesh.globalData().procPatchMap();
+        const polyBoundaryMesh& patches = mesh.boundaryMesh();
 
         // Presize with (as estimate) size of patch to neighbour.
         forAll(procPatchMap, procI)
@@ -280,12 +179,12 @@ Foam::autoPtr<Foam::mapDistribute> Foam::extendedStencil::calcDistributeMap
 
 
     // 2. The overall compact addressing is
-    // - myProcNo first
+    // - myProcNo data first (uncompacted)
     // - all other processors consecutively
 
     labelList compactStart(Pstream::nProcs());
     compactStart[Pstream::myProcNo()] = 0;
-    label nCompact = mesh_.nCells()+nBnd;
+    label nCompact = globalNumbering.localSize();
     forAll(compactStart, procI)
     {
         if (procI != Pstream::myProcNo())
@@ -321,7 +220,7 @@ Foam::autoPtr<Foam::mapDistribute> Foam::extendedStencil::calcDistributeMap
         {
             recvCompact[procI] =
                 compactStart[procI]
-              + identity(mesh_.nCells()+nBnd);
+              + identity(globalNumbering.localSize());
         }
     }
     labelListList sendCompact(Pstream::nProcs());
@@ -374,8 +273,9 @@ Foam::autoPtr<Foam::mapDistribute> Foam::extendedStencil::calcDistributeMap
         }
     }
 
+
     // Constuct map for distribution of compact data.
-    return autoPtr<mapDistribute>
+    autoPtr<mapDistribute> mapPtr
     (
         new mapDistribute
         (
@@ -385,15 +285,40 @@ Foam::autoPtr<Foam::mapDistribute> Foam::extendedStencil::calcDistributeMap
             true            // reuse send/recv maps.
         )
     );
+
+    return mapPtr;
 }
 
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::extendedStencil::extendedStencil(const polyMesh& mesh)
+Foam::extendedCellToFaceStencil::extendedCellToFaceStencil(const polyMesh& mesh)
 :
     mesh_(mesh)
-{}
+{
+    // Check for transformation - not supported.
+    const polyBoundaryMesh& patches = mesh.boundaryMesh();
+
+    forAll(patches, patchI)
+    {
+        if (isA<coupledPolyPatch>(patches[patchI]))
+        {
+            const coupledPolyPatch& cpp =
+                refCast<const coupledPolyPatch>(patches[patchI]);
+
+            if (!cpp.parallel() || cpp.separated())
+            {
+                FatalErrorIn
+                (
+                    "extendedCellToFaceStencil::extendedCellToFaceStencil"
+                    "(const polyMesh&)"
+                )   << "Coupled patches with transformations not supported."
+                    << endl
+                    << "Problematic patch " << cpp.name() << exit(FatalError);
+            }
+        }
+    }
+}
 
 
 // ************************************************************************* //
diff --git a/src/finiteVolume/fvMesh/extendedStencil/extendedStencil.H b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/extendedCellToFaceStencil.H
similarity index 78%
rename from src/finiteVolume/fvMesh/extendedStencil/extendedStencil.H
rename to src/finiteVolume/fvMesh/extendedStencil/cellToFace/extendedCellToFaceStencil.H
index 6faff8f3a6c7219a69b594250d78c58476136637..bb0e92d11fc8d2dc6aa4e55758f8ff0c0c9b08f9 100644
--- a/src/finiteVolume/fvMesh/extendedStencil/extendedStencil.H
+++ b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/extendedCellToFaceStencil.H
@@ -23,10 +23,10 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::extendedStencil
+    Foam::extendedCellToFaceStencil
 
 Description
-    Calculates/constains the extended face stencil.
+    Calculates/constains the extended cell-to-face stencil.
 
     The stencil is a list of indices into either cells or boundary faces
     in a compact way. (element 0 is owner, 1 is neighbour). The index numbering
@@ -41,13 +41,13 @@ Description
     - sum the weights*field.
 
 SourceFiles
-    extendedStencil.C
-    extendedStencilTemplates.C
+    extendedCellToFaceStencil.C
+    extendedCellToFaceStencilTemplates.C
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef extendedStencil_H
-#define extendedStencil_H
+#ifndef extendedCellToFaceStencil_H
+#define extendedCellToFaceStencil_H
 
 #include "mapDistribute.H"
 #include "volFields.H"
@@ -61,10 +61,10 @@ namespace Foam
 class globalIndex;
 
 /*---------------------------------------------------------------------------*\
-                           Class extendedStencil Declaration
+                           Class extendedCellToFaceStencil Declaration
 \*---------------------------------------------------------------------------*/
 
-class extendedStencil
+class extendedCellToFaceStencil
 {
 protected:
 
@@ -75,19 +75,6 @@ protected:
 
     // Protected Member Functions
 
-        //- Collect cell neighbours into extended stencil
-        void calcFaceStencil
-        (
-            const labelListList& globalCellCells,
-            labelListList& faceStencil
-        );
-
-        //- Calculate distribute map
-        autoPtr<mapDistribute> calcDistributeMap
-        (
-            const globalIndex& globalNumbering,
-            labelListList& faceStencil
-        );
 
 
 private:
@@ -95,22 +82,44 @@ private:
     // Private Member Functions
 
         //- Disallow default bitwise copy construct
-        extendedStencil(const extendedStencil&);
+        extendedCellToFaceStencil(const extendedCellToFaceStencil&);
 
         //- Disallow default bitwise assignment
-        void operator=(const extendedStencil&);
+        void operator=(const extendedCellToFaceStencil&);
 
 
+protected:
+
+        //- Write some statistics about stencil
+        static void writeStencilStats
+        (
+            Ostream& os,
+            const labelListList& stencil,
+            const mapDistribute& map
+        );
+
 public:
 
+    // Declare name of the class and its debug switch
+    ClassName("extendedCellToFaceStencil");
+
+
     // Constructors
 
         //- Construct from mesh
-        explicit extendedStencil(const polyMesh&);
+        explicit extendedCellToFaceStencil(const polyMesh&);
 
 
     // Member Functions
 
+        //- Calculate distribute map
+        static autoPtr<mapDistribute> calcDistributeMap
+        (
+            const polyMesh& mesh,
+            const globalIndex& globalNumbering,
+            labelListList& faceStencil
+        );
+
         //- Use map to get the data into stencil order
         template<class T>
         static void collectData
@@ -141,7 +150,7 @@ public:
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 #ifdef NoRepository
-#   include "extendedStencilTemplates.C"
+#   include "extendedCellToFaceStencilTemplates.C"
 #endif
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/finiteVolume/fvMesh/extendedStencil/extendedStencilTemplates.C b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/extendedCellToFaceStencilTemplates.C
similarity index 94%
rename from src/finiteVolume/fvMesh/extendedStencil/extendedStencilTemplates.C
rename to src/finiteVolume/fvMesh/extendedStencil/cellToFace/extendedCellToFaceStencilTemplates.C
index 537b7520d867e0b434edbcc91e05f04f8f90b787..9ee125de9b52497fdf8068a1ebd0e73fa90c64fc 100644
--- a/src/finiteVolume/fvMesh/extendedStencil/extendedStencilTemplates.C
+++ b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/extendedCellToFaceStencilTemplates.C
@@ -24,12 +24,12 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "extendedStencil.H"
+#include "extendedCellToFaceStencil.H"
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 template<class Type>
-void Foam::extendedStencil::collectData
+void Foam::extendedCellToFaceStencil::collectData
 (
     const mapDistribute& map,
     const labelListList& stencil,
@@ -79,7 +79,7 @@ void Foam::extendedStencil::collectData
 
 template<class Type>
 Foam::tmp<Foam::GeometricField<Type, Foam::fvsPatchField, Foam::surfaceMesh> >
-Foam::extendedStencil::weightedSum
+Foam::extendedCellToFaceStencil::weightedSum
 (
     const mapDistribute& map,
     const labelListList& stencil,
@@ -101,7 +101,10 @@ Foam::extendedStencil::weightedSum
             (
                 fld.name(),
                 mesh.time().timeName(),
-                mesh
+                mesh,
+                IOobject::NO_READ,
+                IOobject::NO_WRITE,
+                false
             ),
             mesh,
             dimensioned<Type>
diff --git a/src/finiteVolume/fvMesh/extendedStencil/extendedCentredStencil.C b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/extendedCentredCellToFaceStencil.C
similarity index 79%
rename from src/finiteVolume/fvMesh/extendedStencil/extendedCentredStencil.C
rename to src/finiteVolume/fvMesh/extendedStencil/cellToFace/extendedCentredCellToFaceStencil.C
index 252357a5f2e7680b718215a318b5119fb8b3cc35..acca48566fabffc3e0b4cbce3be39283fa83e786 100644
--- a/src/finiteVolume/fvMesh/extendedStencil/extendedCentredStencil.C
+++ b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/extendedCentredCellToFaceStencil.C
@@ -25,26 +25,34 @@ License
 \*---------------------------------------------------------------------------*/
 
 #include "mapDistribute.H"
-#include "extendedCentredStencil.H"
-#include "faceStencil.H"
+#include "extendedCentredCellToFaceStencil.H"
+#include "cellToFaceStencil.H"
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::extendedCentredStencil::extendedCentredStencil(const faceStencil& stencil)
+Foam::extendedCentredCellToFaceStencil::extendedCentredCellToFaceStencil
+(
+    const cellToFaceStencil& stencil
+)
 :
-    extendedStencil(stencil.mesh())
+    extendedCellToFaceStencil(stencil.mesh())
 {
     stencil_ = stencil;
 
-    // Calculate distribute map (also renumbers stencil)
-    mapPtr_ = calcDistributeMap(stencil.globalNumbering(), stencil_);
+    // Calculate distribute map (also renumbers elements in stencil)
+    mapPtr_ = calcDistributeMap
+    (
+        stencil.mesh(),
+        stencil.globalNumbering(),
+        stencil_
+    );
 }
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 // Per face which elements of the stencil to keep.
-void Foam::extendedCentredStencil::compact()
+void Foam::extendedCentredCellToFaceStencil::compact()
 {
     boolList isInStencil(map().constructSize(), false);
 
diff --git a/src/finiteVolume/fvMesh/extendedStencil/extendedCentredStencil.H b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/extendedCentredCellToFaceStencil.H
similarity index 79%
rename from src/finiteVolume/fvMesh/extendedStencil/extendedCentredStencil.H
rename to src/finiteVolume/fvMesh/extendedStencil/cellToFace/extendedCentredCellToFaceStencil.H
index edbf5ea48585e5739e9e5bc5436e582f1adcc378..c58e81db922cc3407bfcaaba91245977b2cf53ed 100644
--- a/src/finiteVolume/fvMesh/extendedStencil/extendedCentredStencil.H
+++ b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/extendedCentredCellToFaceStencil.H
@@ -23,34 +23,34 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::extendedCentredStencil
+    Foam::extendedCentredCellToFaceStencil
 
 Description
 
 SourceFiles
-    extendedCentredStencil.C
+    extendedCentredCellToFaceStencil.C
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef extendedCentredStencil_H
-#define extendedCentredStencil_H
+#ifndef extendedCentredCellToFaceStencil_H
+#define extendedCentredCellToFaceStencil_H
 
-#include "extendedStencil.H"
+#include "extendedCellToFaceStencil.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 namespace Foam
 {
 
-class faceStencil;
+class cellToFaceStencil;
 
 /*---------------------------------------------------------------------------*\
-                           Class extendedCentredStencil Declaration
+                           Class extendedCentredCellToFaceStencil Declaration
 \*---------------------------------------------------------------------------*/
 
-class extendedCentredStencil
+class extendedCentredCellToFaceStencil
 :
-    public extendedStencil
+    public extendedCellToFaceStencil
 {
     // Private data
 
@@ -64,10 +64,13 @@ class extendedCentredStencil
     // Private Member Functions
 
         //- Disallow default bitwise copy construct
-        extendedCentredStencil(const extendedCentredStencil&);
+        extendedCentredCellToFaceStencil
+        (
+            const extendedCentredCellToFaceStencil&
+        );
 
         //- Disallow default bitwise assignment
-        void operator=(const extendedCentredStencil&);
+        void operator=(const extendedCentredCellToFaceStencil&);
 
 
 public:
@@ -75,7 +78,7 @@ public:
     // Constructors
 
         //- Construct from uncompacted face stencil
-        explicit extendedCentredStencil(const faceStencil&);
+        explicit extendedCentredCellToFaceStencil(const cellToFaceStencil&);
 
 
     // Member Functions
@@ -103,7 +106,13 @@ public:
             List<List<T> >& stencilFld
         ) const
         {
-            extendedStencil::collectData(map(), stencil(), fld, stencilFld);
+            extendedCellToFaceStencil::collectData
+            (
+                map(),
+                stencil(),
+                fld,
+                stencilFld
+            );
         }
 
         //- Sum vol field contributions to create face values
@@ -114,7 +123,7 @@ public:
             const List<List<scalar> >& stencilWeights
         ) const
         {
-            return extendedStencil::weightedSum
+            return extendedCellToFaceStencil::weightedSum
             (
                 map(),
                 stencil(),
diff --git a/src/finiteVolume/fvMesh/extendedStencil/extendedUpwindStencil.C b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/extendedUpwindCellToFaceStencil.C
similarity index 69%
rename from src/finiteVolume/fvMesh/extendedStencil/extendedUpwindStencil.C
rename to src/finiteVolume/fvMesh/extendedStencil/cellToFace/extendedUpwindCellToFaceStencil.C
index b7fa870cf741bcfdadc683be7956f3fc4496c4f3..80e47855a8c8cd4966a80389fe7ac1ff4720238f 100644
--- a/src/finiteVolume/fvMesh/extendedStencil/extendedUpwindStencil.C
+++ b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/extendedUpwindCellToFaceStencil.C
@@ -24,14 +24,14 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "extendedUpwindStencil.H"
-#include "faceStencil.H"
+#include "extendedUpwindCellToFaceStencil.H"
+#include "cellToFaceStencil.H"
 #include "syncTools.H"
 #include "SortableList.H"
 
 // * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
 
-void Foam::extendedUpwindStencil::selectOppositeFaces
+void Foam::extendedUpwindCellToFaceStencil::selectOppositeFaces
 (
     const boolList& nonEmptyFace,
     const scalar minOpposedness,
@@ -103,7 +103,7 @@ void Foam::extendedUpwindStencil::selectOppositeFaces
 }
 
 
-void Foam::extendedUpwindStencil::transportStencil
+void Foam::extendedUpwindCellToFaceStencil::transportStencil
 (
     const boolList& nonEmptyFace,
     const labelListList& faceStencil,
@@ -168,8 +168,10 @@ void Foam::extendedUpwindStencil::transportStencil
         }
         if (n != transportedStencil.size())
         {
-            FatalErrorIn("extendedUpwindStencil::transportStencil(..)")
-                << "problem:" << faceStencilSet
+            FatalErrorIn
+            (
+                "extendedUpwindCellToFaceStencil::transportStencil(..)"
+            )   << "problem:" << faceStencilSet
                 << abort(FatalError);
         }
     }
@@ -188,15 +190,17 @@ void Foam::extendedUpwindStencil::transportStencil
         }
         if (n != transportedStencil.size())
         {
-            FatalErrorIn("extendedUpwindStencil::transportStencil(..)")
-                << "problem:" << faceStencilSet
+            FatalErrorIn
+            (
+                "extendedUpwindCellToFaceStencil::transportStencil(..)"
+            )   << "problem:" << faceStencilSet
                 << abort(FatalError);
         }
     }
 }
 
 
-void Foam::extendedUpwindStencil::transportStencils
+void Foam::extendedUpwindCellToFaceStencil::transportStencils
 (
     const labelListList& faceStencil,
     const scalar minOpposedness,
@@ -240,6 +244,7 @@ void Foam::extendedUpwindStencil::transportStencils
     // Internal faces
     for (label faceI = 0; faceI < mesh_.nInternalFaces(); faceI++)
     {
+        // Get stencil as owner + neighbour + stencil from 'opposite' faces
         transportStencil
         (
             nonEmptyFace,
@@ -367,13 +372,15 @@ void Foam::extendedUpwindStencil::transportStencils
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::extendedUpwindStencil::extendedUpwindStencil
+Foam::extendedUpwindCellToFaceStencil::extendedUpwindCellToFaceStencil
 (
-    const faceStencil& stencil,
+    const cellToFaceStencil& stencil,
+    const bool pureUpwind,
     const scalar minOpposedness
 )
 :
-    extendedStencil(stencil.mesh())
+    extendedCellToFaceStencil(stencil.mesh()),
+    pureUpwind_(pureUpwind)
 {
     //forAll(stencil, faceI)
     //{
@@ -414,15 +421,145 @@ Foam::extendedUpwindStencil::extendedUpwindStencil
 
     ownMapPtr_ = calcDistributeMap
     (
+        stencil.mesh(),
         stencil.globalNumbering(),
         ownStencil_
     );
 
     neiMapPtr_ = calcDistributeMap
     (
+        stencil.mesh(),
         stencil.globalNumbering(),
         neiStencil_
     );
+
+    // stencil now in compact form
+    if (pureUpwind_)
+    {
+        const fvMesh& mesh = dynamic_cast<const fvMesh&>(stencil.mesh());
+
+        List<List<point> > stencilPoints(ownStencil_.size());
+
+        // Owner stencil
+        // ~~~~~~~~~~~~~
+
+        collectData(ownMapPtr_(), ownStencil_, mesh.C(), stencilPoints);
+
+        // Mask off all stencil points on wrong side of face
+        forAll(stencilPoints, faceI)
+        {
+            const point& fc = mesh.faceCentres()[faceI];
+            const vector& fArea = mesh.faceAreas()[faceI];
+
+            const List<point>& points = stencilPoints[faceI];
+            const labelList& stencil = ownStencil_[faceI];
+
+            DynamicList<label> newStencil(stencil.size());
+            forAll(points, i)
+            {
+                if (((points[i]-fc) & fArea) < 0)
+                {
+                    newStencil.append(stencil[i]);
+                }
+            }
+            if (newStencil.size() != stencil.size())
+            {
+                ownStencil_[faceI].transfer(newStencil);
+            }
+        }
+
+
+        // Neighbour stencil
+        // ~~~~~~~~~~~~~~~~~
+
+        collectData(neiMapPtr_(), neiStencil_, mesh.C(), stencilPoints);
+
+        // Mask off all stencil points on wrong side of face
+        forAll(stencilPoints, faceI)
+        {
+            const point& fc = mesh.faceCentres()[faceI];
+            const vector& fArea = mesh.faceAreas()[faceI];
+
+            const List<point>& points = stencilPoints[faceI];
+            const labelList& stencil = neiStencil_[faceI];
+
+            DynamicList<label> newStencil(stencil.size());
+            forAll(points, i)
+            {
+                if (((points[i]-fc) & fArea) > 0)
+                {
+                    newStencil.append(stencil[i]);
+                }
+            }
+            if (newStencil.size() != stencil.size())
+            {
+                neiStencil_[faceI].transfer(newStencil);
+            }
+        }
+
+        // Note: could compact schedule as well. for if cells are not needed
+        // across any boundary anymore. However relatively rare.
+    }
+}
+
+
+Foam::extendedUpwindCellToFaceStencil::extendedUpwindCellToFaceStencil
+(
+    const cellToFaceStencil& stencil
+)
+:
+    extendedCellToFaceStencil(stencil.mesh()),
+    pureUpwind_(true)
+{
+    // Calculate stencil points with full stencil
+
+    ownStencil_ = stencil;
+
+    ownMapPtr_ = calcDistributeMap
+    (
+        stencil.mesh(),
+        stencil.globalNumbering(),
+        ownStencil_
+    );
+
+    const fvMesh& mesh = dynamic_cast<const fvMesh&>(stencil.mesh());
+
+    List<List<point> > stencilPoints(ownStencil_.size());
+    collectData(ownMapPtr_(), ownStencil_, mesh.C(), stencilPoints);
+
+    // Split stencil into owner and neighbour
+    neiStencil_.setSize(ownStencil_.size());
+
+    forAll(stencilPoints, faceI)
+    {
+        const point& fc = mesh.faceCentres()[faceI];
+        const vector& fArea = mesh.faceAreas()[faceI];
+
+        const List<point>& points = stencilPoints[faceI];
+        const labelList& stencil = ownStencil_[faceI];
+
+        DynamicList<label> newOwnStencil(stencil.size());
+        DynamicList<label> newNeiStencil(stencil.size());
+        forAll(points, i)
+        {
+            if (((points[i]-fc) & fArea) > 0)
+            {
+                newNeiStencil.append(stencil[i]);
+            }
+            else
+            {
+                newOwnStencil.append(stencil[i]);
+            }
+        }
+        if (newNeiStencil.size() > 0)
+        {
+            ownStencil_[faceI].transfer(newOwnStencil);
+            neiStencil_[faceI].transfer(newNeiStencil);
+        }
+    }
+
+    // Should compact schedule. Or have both return the same schedule.
+    neiMapPtr_.reset(new mapDistribute(ownMapPtr_()));
 }
 
 
diff --git a/src/finiteVolume/fvMesh/extendedStencil/extendedUpwindStencil.H b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/extendedUpwindCellToFaceStencil.H
similarity index 70%
rename from src/finiteVolume/fvMesh/extendedStencil/extendedUpwindStencil.H
rename to src/finiteVolume/fvMesh/extendedStencil/cellToFace/extendedUpwindCellToFaceStencil.H
index 174eb27a9d8d7b388a99bc085153ac9766eb210e..408d28ad8912d597814b58f4bcff273d48c0f226 100644
--- a/src/finiteVolume/fvMesh/extendedStencil/extendedUpwindStencil.H
+++ b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/extendedUpwindCellToFaceStencil.H
@@ -23,38 +23,50 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::extendedUpwindStencil
+    Foam::extendedUpwindCellToFaceStencil
 
 Description
+    Creates upwind stencil by shifting a centred stencil to upwind and downwind
+    faces and optionally removing all non-(up/down)wind faces ('pureUpwind').
+
+    Note: the minOpposedness parameter is to decide which upwind and
+    downwind faces to combine the stencils from. If myArea is the
+    local area and upwindArea
+    the area of the possible upwind candidate it will be included if
+        (upwindArea & myArea)/magSqr(myArea) > minOpposedness
+    so this includes both cosine and area. WIP.
 
 SourceFiles
-    extendedUpwindStencil.C
-    extendedUpwindStencilTemplates.C
+    extendedUpwindCellToFaceStencil.C
+    extendedUpwindCellToFaceStencilTemplates.C
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef extendedUpwindStencil_H
-#define extendedUpwindStencil_H
+#ifndef extendedUpwindCellToFaceStencil_H
+#define extendedUpwindCellToFaceStencil_H
 
-#include "extendedStencil.H"
+#include "extendedCellToFaceStencil.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 namespace Foam
 {
 
-class faceStencil;
+class cellToFaceStencil;
 
 /*---------------------------------------------------------------------------*\
-                           Class extendedUpwindStencil Declaration
+                           Class extendedUpwindCellToFaceStencil Declaration
 \*---------------------------------------------------------------------------*/
 
-class extendedUpwindStencil
+class extendedUpwindCellToFaceStencil
 :
-    public extendedStencil
+    public extendedCellToFaceStencil
 {
     // Private data
 
+        //- Does stencil contain upwind points only
+        const bool pureUpwind_;
+
         //- Swap map for getting neigbouring data
         autoPtr<mapDistribute> ownMapPtr_;
         autoPtr<mapDistribute> neiMapPtr_;
@@ -103,26 +115,41 @@ class extendedUpwindStencil
 
 
         //- Disallow default bitwise copy construct
-        extendedUpwindStencil(const extendedUpwindStencil&);
+        extendedUpwindCellToFaceStencil(const extendedUpwindCellToFaceStencil&);
 
         //- Disallow default bitwise assignment
-        void operator=(const extendedUpwindStencil&);
+        void operator=(const extendedUpwindCellToFaceStencil&);
 
 
 public:
 
     // Constructors
 
-        //- Construct from mesh and uncompacted face stencil
-        extendedUpwindStencil
+        //- Construct from mesh and uncompacted centred face stencil.
+        //  Transports facestencil to create owner and neighbour versions.
+        //  pureUpwind to remove any remaining downwind cells.
+        extendedUpwindCellToFaceStencil
         (
-            const faceStencil&,
+            const cellToFaceStencil&,
+            const bool pureUpwind,
             const scalar minOpposedness
         );
 
+        //- Construct from mesh and uncompacted centred face stencil. Splits
+        //  stencil into owner and neighbour (so always pure upwind)
+        extendedUpwindCellToFaceStencil
+        (
+            const cellToFaceStencil&
+        );
+
 
     // Member Functions
 
+        bool pureUpwind() const
+        {
+            return pureUpwind_;
+        }
+
         //- Return reference to the parallel distribution map
         const mapDistribute& ownMap() const
         {
@@ -167,7 +194,7 @@ public:
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 #ifdef NoRepository
-#   include "extendedUpwindStencilTemplates.C"
+#   include "extendedUpwindCellToFaceStencilTemplates.C"
 #endif
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/finiteVolume/fvMesh/extendedStencil/extendedUpwindStencilTemplates.C b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/extendedUpwindCellToFaceStencilTemplates.C
similarity index 95%
rename from src/finiteVolume/fvMesh/extendedStencil/extendedUpwindStencilTemplates.C
rename to src/finiteVolume/fvMesh/extendedStencil/cellToFace/extendedUpwindCellToFaceStencilTemplates.C
index 5482261df8ba59e1455f3a13dcbcc567cfbbfd36..ee545754fa2fa02c1fdb923a516a1c4aad76668c 100644
--- a/src/finiteVolume/fvMesh/extendedStencil/extendedUpwindStencilTemplates.C
+++ b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/extendedUpwindCellToFaceStencilTemplates.C
@@ -24,13 +24,13 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "extendedStencil.H"
+#include "extendedCellToFaceStencil.H"
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 template<class Type>
 Foam::tmp<Foam::GeometricField<Type, Foam::fvsPatchField, Foam::surfaceMesh> >
-Foam::extendedUpwindStencil::weightedSum
+Foam::extendedUpwindCellToFaceStencil::weightedSum
 (
     const surfaceScalarField& phi,
     const GeometricField<Type, fvPatchField, volMesh>& fld,
@@ -54,7 +54,10 @@ Foam::extendedUpwindStencil::weightedSum
             (
                 fld.name(),
                 mesh.time().timeName(),
-                mesh
+                mesh,
+                IOobject::NO_READ,
+                IOobject::NO_WRITE,
+                false
             ),
             mesh,
             dimensioned<Type>
diff --git a/src/finiteVolume/fvMesh/extendedStencil/cellToFace/fullStencils/CECCellToFaceStencil.C b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/fullStencils/CECCellToFaceStencil.C
new file mode 100644
index 0000000000000000000000000000000000000000..d7d7797da8b6d59cfbfcd47ae15b840e5d71bd6b
--- /dev/null
+++ b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/fullStencils/CECCellToFaceStencil.C
@@ -0,0 +1,50 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "CECCellToFaceStencil.H"
+#include "CECCellToCellStencil.H"
+
+// * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::CECCellToFaceStencil::CECCellToFaceStencil(const polyMesh& mesh)
+:
+    cellToFaceStencil(mesh)
+{
+    // Calculate per cell the (edge) connected cells (in global numbering)
+    CECCellToCellStencil globalCellCells(mesh);
+
+    // Add stencils of neighbouring cells to create faceStencil
+    labelListList faceStencil;
+    calcFaceStencil(globalCellCells, faceStencil);
+
+    // Transfer to *this
+    transfer(faceStencil);
+}
+
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/fvMesh/extendedStencil/cellToFace/fullStencils/CECCellToFaceStencil.H b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/fullStencils/CECCellToFaceStencil.H
new file mode 100644
index 0000000000000000000000000000000000000000..640c2aa4f4746aa0a63e0805870b6d7b67b6f00a
--- /dev/null
+++ b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/fullStencils/CECCellToFaceStencil.H
@@ -0,0 +1,81 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::CECCellToFaceStencil
+
+Description
+    Combined corresponding cellToCellStencil of owner and neighbour.
+
+SourceFiles
+    CECCellToFaceStencil.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef CECCellToFaceStencil_H
+#define CECCellToFaceStencil_H
+
+#include "cellToFaceStencil.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+                           Class CECCellToFaceStencil Declaration
+\*---------------------------------------------------------------------------*/
+
+class CECCellToFaceStencil
+:
+    public cellToFaceStencil
+{
+    // Private Member Functions
+
+        //- Disallow default bitwise copy construct
+        CECCellToFaceStencil(const CECCellToFaceStencil&);
+
+        //- Disallow default bitwise assignment
+        void operator=(const CECCellToFaceStencil&);
+
+
+public:
+
+    // Constructors
+
+        //- Construct from all cells and boundary faces
+        explicit CECCellToFaceStencil(const polyMesh&);
+
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/fvMesh/extendedStencil/cellToFace/fullStencils/CFCCellToFaceStencil.C b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/fullStencils/CFCCellToFaceStencil.C
new file mode 100644
index 0000000000000000000000000000000000000000..9f19c90053568ae686d4b0cf15a80ebe092f6f40
--- /dev/null
+++ b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/fullStencils/CFCCellToFaceStencil.C
@@ -0,0 +1,50 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "CFCCellToFaceStencil.H"
+#include "CFCCellToCellStencil.H"
+
+// * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::CFCCellToFaceStencil::CFCCellToFaceStencil(const polyMesh& mesh)
+:
+    cellToFaceStencil(mesh)
+{
+    // Calculate per cell the (face) connected cells (in global numbering)
+    CFCCellToCellStencil globalCellCells(mesh);
+
+    // Add stencils of neighbouring cells to create faceStencil
+    labelListList faceStencil;
+    calcFaceStencil(globalCellCells, faceStencil);
+
+    // Transfer to *this
+    transfer(faceStencil);
+}
+
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/fvMesh/extendedStencil/cellToFace/fullStencils/CFCCellToFaceStencil.H b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/fullStencils/CFCCellToFaceStencil.H
new file mode 100644
index 0000000000000000000000000000000000000000..a05b1b7aa6dfcaf2425d27c68bbfa57983239347
--- /dev/null
+++ b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/fullStencils/CFCCellToFaceStencil.H
@@ -0,0 +1,79 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::CFCCellToFaceStencil
+
+Description
+    Combined corresponding cellToCellStencil of owner and neighbour.
+
+SourceFiles
+    CFCCellToFaceStencil.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef CFCCellToFaceStencil_H
+#define CFCCellToFaceStencil_H
+
+#include "cellToFaceStencil.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+                           Class CFCCellToFaceStencil Declaration
+\*---------------------------------------------------------------------------*/
+
+class CFCCellToFaceStencil
+:
+    public cellToFaceStencil
+{
+    // Private Member Functions
+
+        //- Disallow default bitwise copy construct
+        CFCCellToFaceStencil(const CFCCellToFaceStencil&);
+
+        //- Disallow default bitwise assignment
+        void operator=(const CFCCellToFaceStencil&);
+
+public:
+
+    // Constructors
+
+        //- Construct from mesh
+        explicit CFCCellToFaceStencil(const polyMesh& mesh);
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/fvMesh/extendedStencil/cellToFace/fullStencils/CPCCellToFaceStencil.C b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/fullStencils/CPCCellToFaceStencil.C
new file mode 100644
index 0000000000000000000000000000000000000000..3414af9932b2cdfc9577aa24c461839562535d00
--- /dev/null
+++ b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/fullStencils/CPCCellToFaceStencil.C
@@ -0,0 +1,50 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "CPCCellToFaceStencil.H"
+#include "CPCCellToCellStencil.H"
+
+// * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::CPCCellToFaceStencil::CPCCellToFaceStencil(const polyMesh& mesh)
+:
+    cellToFaceStencil(mesh)
+{
+    // Calculate per cell the (face) connected cells (in global numbering)
+    CPCCellToCellStencil globalCellCells(mesh);
+
+    // Add stencils of neighbouring cells to create faceStencil
+    labelListList faceStencil;
+    calcFaceStencil(globalCellCells, faceStencil);
+
+    // Transfer to *this
+    transfer(faceStencil);
+}
+
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/fvMesh/extendedStencil/cellToFace/fullStencils/CPCCellToFaceStencil.H b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/fullStencils/CPCCellToFaceStencil.H
new file mode 100644
index 0000000000000000000000000000000000000000..a82886e11145aca2883ac6846d822dca268eb0bd
--- /dev/null
+++ b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/fullStencils/CPCCellToFaceStencil.H
@@ -0,0 +1,81 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::CPCCellToFaceStencil
+
+Description
+    Combined corresponding cellToCellStencil of owner and neighbour.
+
+SourceFiles
+    CPCCellToFaceStencil.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef CPCCellToFaceStencil_H
+#define CPCCellToFaceStencil_H
+
+#include "cellToFaceStencil.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+                           Class CPCCellToFaceStencil Declaration
+\*---------------------------------------------------------------------------*/
+
+class CPCCellToFaceStencil
+:
+    public cellToFaceStencil
+{
+    // Private Member Functions
+
+        //- Disallow default bitwise copy construct
+        CPCCellToFaceStencil(const CPCCellToFaceStencil&);
+
+        //- Disallow default bitwise assignment
+        void operator=(const CPCCellToFaceStencil&);
+
+
+public:
+
+    // Constructors
+
+        //- Construct from all cells and boundary faces
+        explicit CPCCellToFaceStencil(const polyMesh&);
+
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/fvMesh/extendedStencil/faceStencil/faceEdgeCellStencil.C b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/fullStencils/FECCellToFaceStencil.C
similarity index 92%
rename from src/finiteVolume/fvMesh/extendedStencil/faceStencil/faceEdgeCellStencil.C
rename to src/finiteVolume/fvMesh/extendedStencil/cellToFace/fullStencils/FECCellToFaceStencil.C
index 2d56b1b1942523b2c02acf5eb623f8f1084c6fec..2d79bd2048008b573200862d3bce53022c6f1b8d 100644
--- a/src/finiteVolume/fvMesh/extendedStencil/faceStencil/faceEdgeCellStencil.C
+++ b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/fullStencils/FECCellToFaceStencil.C
@@ -24,7 +24,7 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "faceEdgeCellStencil.H"
+#include "FECCellToFaceStencil.H"
 #include "syncTools.H"
 #include "emptyPolyPatch.H"
 //#include "meshTools.H"
@@ -34,7 +34,7 @@ License
 // * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
 
 // Calculates per edge the neighbour data (= edgeCells)
-void Foam::faceEdgeCellStencil::calcEdgeBoundaryData
+void Foam::FECCellToFaceStencil::calcEdgeBoundaryData
 (
     const boolList& isValidBFace,
     const labelList& boundaryEdges,
@@ -73,7 +73,7 @@ void Foam::faceEdgeCellStencil::calcEdgeBoundaryData
 
 // Calculates per face the edge connected data (= cell or boundary in global
 // numbering).
-void Foam::faceEdgeCellStencil::calcFaceStencil
+void Foam::FECCellToFaceStencil::calcFaceStencil
 (
     labelListList& faceStencil
 ) const
@@ -220,7 +220,7 @@ void Foam::faceEdgeCellStencil::calcFaceStencil
         {
             if (iter.key() == globalOwn || iter.key() == globalNei)
             {
-                FatalErrorIn("faceEdgeCellStencil::calcFaceStencil(..)")
+                FatalErrorIn("FECCellToFaceStencil::calcFaceStencil(..)")
                     << "problem:" << faceStencilSet
                     << abort(FatalError);
             }
@@ -281,8 +281,10 @@ void Foam::faceEdgeCellStencil::calcFaceStencil
                 {
                     if (iter.key() == globalOwn || iter.key() == globalNei)
                     {
-                        FatalErrorIn("faceEdgeCellStencil::calcFaceStencil(..)")
-                            << "problem:" << faceStencilSet
+                        FatalErrorIn
+                        (
+                            "FECCellToFaceStencil::calcFaceStencil(..)"
+                        )   << "problem:" << faceStencilSet
                             << abort(FatalError);
                     }
                     faceStencil[faceI][n++] = iter.key();
@@ -345,8 +347,10 @@ void Foam::faceEdgeCellStencil::calcFaceStencil
                 {
                     if (iter.key() == globalOwn)
                     {
-                        FatalErrorIn("faceEdgeCellStencil::calcFaceStencil(..)")
-                            << "problem:" << faceStencilSet
+                        FatalErrorIn
+                        (
+                            "FECCellToFaceStencil::calcFaceStencil(..)"
+                        )   << "problem:" << faceStencilSet
                             << abort(FatalError);
                     }
                     faceStencil[faceI][n++] = iter.key();
@@ -363,7 +367,7 @@ void Foam::faceEdgeCellStencil::calcFaceStencil
         label globalOwn = globalNumbering().toGlobal(own[faceI]);
         if (faceStencil[faceI][0] != globalOwn)
         {
-            FatalErrorIn("faceEdgeCellStencil::calcFaceStencil(..)")
+            FatalErrorIn("FECCellToFaceStencil::calcFaceStencil(..)")
                 << "problem:" << faceStencil[faceI]
                 << " globalOwn:" << globalOwn
                 << abort(FatalError);
@@ -371,7 +375,7 @@ void Foam::faceEdgeCellStencil::calcFaceStencil
         label globalNei = globalNumbering().toGlobal(nei[faceI]);
         if (faceStencil[faceI][1] != globalNei)
         {
-            FatalErrorIn("faceEdgeCellStencil::calcFaceStencil(..)")
+            FatalErrorIn("FECCellToFaceStencil::calcFaceStencil(..)")
                 << "problem:" << faceStencil[faceI]
                 << " globalNei:" << globalNei
                 << abort(FatalError);
@@ -392,7 +396,7 @@ void Foam::faceEdgeCellStencil::calcFaceStencil
                 label globalOwn = globalNumbering().toGlobal(own[faceI]);
                 if (faceStencil[faceI][0] != globalOwn)
                 {
-                    FatalErrorIn("faceEdgeCellStencil::calcFaceStencil(..)")
+                    FatalErrorIn("FECCellToFaceStencil::calcFaceStencil(..)")
                         << "problem:" << faceStencil[faceI]
                         << " globalOwn:" << globalOwn
                         << abort(FatalError);
@@ -400,7 +404,7 @@ void Foam::faceEdgeCellStencil::calcFaceStencil
                 label globalNei = neiGlobalCell[faceI-mesh().nInternalFaces()];
                 if (faceStencil[faceI][1] != globalNei)
                 {
-                    FatalErrorIn("faceEdgeCellStencil::calcFaceStencil(..)")
+                    FatalErrorIn("FECCellToFaceStencil::calcFaceStencil(..)")
                         << "problem:" << faceStencil[faceI]
                         << " globalNei:" << globalNei
                         << abort(FatalError);
@@ -416,7 +420,7 @@ void Foam::faceEdgeCellStencil::calcFaceStencil
                 label globalOwn = globalNumbering().toGlobal(own[faceI]);
                 if (faceStencil[faceI][0] != globalOwn)
                 {
-                    FatalErrorIn("faceEdgeCellStencil::calcFaceStencil(..)")
+                    FatalErrorIn("FECCellToFaceStencil::calcFaceStencil(..)")
                         << "problem:" << faceStencil[faceI]
                         << " globalOwn:" << globalOwn
                         << abort(FatalError);
@@ -429,9 +433,9 @@ void Foam::faceEdgeCellStencil::calcFaceStencil
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::faceEdgeCellStencil::faceEdgeCellStencil(const polyMesh& mesh)
+Foam::FECCellToFaceStencil::FECCellToFaceStencil(const polyMesh& mesh)
 :
-    faceStencil(mesh)
+    cellToFaceStencil(mesh)
 {
     // Calculate per face the (edge) connected cells (in global numbering)
     labelListList faceStencil;
diff --git a/src/finiteVolume/fvMesh/extendedStencil/faceStencil/faceEdgeCellStencil.H b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/fullStencils/FECCellToFaceStencil.H
similarity index 83%
rename from src/finiteVolume/fvMesh/extendedStencil/faceStencil/faceEdgeCellStencil.H
rename to src/finiteVolume/fvMesh/extendedStencil/cellToFace/fullStencils/FECCellToFaceStencil.H
index dfbb990fbce92858578e87db23071bebd1986758..6a00f702ea92cc9d19d655ad0ee19ff70e846510 100644
--- a/src/finiteVolume/fvMesh/extendedStencil/faceStencil/faceEdgeCellStencil.H
+++ b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/fullStencils/FECCellToFaceStencil.H
@@ -23,23 +23,20 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::faceEdgeCellStencil
+    Foam::FECCellToFaceStencil
 
 Description
     All cells connected via edge to face.
 
 SourceFiles
-    faceEdgeCellStencil.C
+    FECCellToFaceStencil.C
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef faceEdgeCellStencil_H
-#define faceEdgeCellStencil_H
+#ifndef FECCellToFaceStencil_H
+#define FECCellToFaceStencil_H
 
-#include "faceStencil.H"
-#include "boolList.H"
-#include "HashSet.H"
-#include "Map.H"
+#include "cellToFaceStencil.H"
 #include "EdgeMap.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -48,12 +45,12 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                           Class faceEdgeCellStencil Declaration
+                           Class FECCellToFaceStencil Declaration
 \*---------------------------------------------------------------------------*/
 
-class faceEdgeCellStencil
+class FECCellToFaceStencil
 :
-    public faceStencil
+    public cellToFaceStencil
 {
     // Private Member Functions
 
@@ -69,10 +66,10 @@ class faceEdgeCellStencil
 
 
         //- Disallow default bitwise copy construct
-        faceEdgeCellStencil(const faceEdgeCellStencil&);
+        FECCellToFaceStencil(const FECCellToFaceStencil&);
 
         //- Disallow default bitwise assignment
-        void operator=(const faceEdgeCellStencil&);
+        void operator=(const FECCellToFaceStencil&);
 
 
 public:
@@ -80,7 +77,7 @@ public:
     // Constructors
 
         //- Construct from all cells and boundary faces
-        explicit faceEdgeCellStencil(const polyMesh&);
+        explicit FECCellToFaceStencil(const polyMesh&);
 
 };
 
diff --git a/src/finiteVolume/fvMesh/extendedStencil/faceStencil/faceStencil.C b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/fullStencils/cellToFaceStencil.C
similarity index 95%
rename from src/finiteVolume/fvMesh/extendedStencil/faceStencil/faceStencil.C
rename to src/finiteVolume/fvMesh/extendedStencil/cellToFace/fullStencils/cellToFaceStencil.C
index a0dac7b004f24c487911ac79cadf682b42269547..89a2cc5fecc389620dffce1f2030b53c6054cc1c 100644
--- a/src/finiteVolume/fvMesh/extendedStencil/faceStencil/faceStencil.C
+++ b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/fullStencils/cellToFaceStencil.C
@@ -24,7 +24,7 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "faceStencil.H"
+#include "cellToFaceStencil.H"
 #include "syncTools.H"
 #include "SortableList.H"
 #include "emptyPolyPatch.H"
@@ -32,7 +32,7 @@ License
 // * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
 
 // Merge two list and guarantee global0,global1 are first.
-void Foam::faceStencil::merge
+void Foam::cellToFaceStencil::merge
 (
     const label global0,
     const label global1,
@@ -124,7 +124,7 @@ void Foam::faceStencil::merge
 
     if (resultI != result.size())
     {
-        FatalErrorIn("faceStencil::merge(..)")
+        FatalErrorIn("cellToFaceStencil::merge(..)")
             << "problem" << abort(FatalError);
     }
 
@@ -133,7 +133,7 @@ void Foam::faceStencil::merge
 
 
 // Merge two list and guarantee globalI is first.
-void Foam::faceStencil::merge
+void Foam::cellToFaceStencil::merge
 (
     const label globalI,
     const labelList& pGlobals,
@@ -168,7 +168,7 @@ void Foam::faceStencil::merge
 }
 
 
-void Foam::faceStencil::validBoundaryFaces(boolList& isValidBFace) const
+void Foam::cellToFaceStencil::validBoundaryFaces(boolList& isValidBFace) const
 {
     const polyBoundaryMesh& patches = mesh().boundaryMesh();
 
@@ -191,7 +191,7 @@ void Foam::faceStencil::validBoundaryFaces(boolList& isValidBFace) const
 
 
 Foam::autoPtr<Foam::indirectPrimitivePatch>
-Foam::faceStencil::allCoupledFacesPatch() const
+Foam::cellToFaceStencil::allCoupledFacesPatch() const
 {
     const polyBoundaryMesh& patches = mesh().boundaryMesh();
 
@@ -239,7 +239,7 @@ Foam::faceStencil::allCoupledFacesPatch() const
 }
 
 
-void Foam::faceStencil::unionEqOp::operator()
+void Foam::cellToFaceStencil::unionEqOp::operator()
 (
     labelList& x,
     const labelList& y
@@ -264,7 +264,7 @@ void Foam::faceStencil::unionEqOp::operator()
 }
 
 
-void Foam::faceStencil::insertFaceCells
+void Foam::cellToFaceStencil::insertFaceCells
 (
     const label exclude0,
     const label exclude1,
@@ -316,7 +316,7 @@ void Foam::faceStencil::insertFaceCells
 }
 
 
-Foam::labelList Foam::faceStencil::calcFaceCells
+Foam::labelList Foam::cellToFaceStencil::calcFaceCells
 (
     const boolList& isValidBFace,
     const labelList& faceLabels,
@@ -339,7 +339,7 @@ Foam::labelList Foam::faceStencil::calcFaceCells
 
 
 // Calculates per face a list of global cell/face indices.
-void Foam::faceStencil::calcFaceStencil
+void Foam::cellToFaceStencil::calcFaceStencil
 (
     const labelListList& globalCellCells,
     labelListList& faceStencil
@@ -502,7 +502,7 @@ void Foam::faceStencil::calcFaceStencil
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::faceStencil::faceStencil(const polyMesh& mesh)
+Foam::cellToFaceStencil::cellToFaceStencil(const polyMesh& mesh)
 :
     mesh_(mesh),
     globalNumbering_(mesh_.nCells()+mesh_.nFaces()-mesh_.nInternalFaces())
diff --git a/src/finiteVolume/fvMesh/extendedStencil/faceStencil/faceStencil.H b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/fullStencils/cellToFaceStencil.H
similarity index 89%
rename from src/finiteVolume/fvMesh/extendedStencil/faceStencil/faceStencil.H
rename to src/finiteVolume/fvMesh/extendedStencil/cellToFace/fullStencils/cellToFaceStencil.H
index a7e3105bc7d5177479d97f7f4adb5c7f4e05c92d..e577a857d51ee0371b6c86b8ff9fd6de3f1f41e7 100644
--- a/src/finiteVolume/fvMesh/extendedStencil/faceStencil/faceStencil.H
+++ b/src/finiteVolume/fvMesh/extendedStencil/cellToFace/fullStencils/cellToFaceStencil.H
@@ -23,18 +23,19 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::faceStencil
+    Foam::cellToFaceStencil
 
 Description
-    baseclass for extended face-cell addressing.
+    baseclass for extended cell-to-facel stencils (face values from
+    neighbouring cells)
 
 SourceFiles
     faceStencil.C
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef faceStencil_H
-#define faceStencil_H
+#ifndef cellToFaceStencil_H
+#define cellToFaceStencil_H
 
 #include "globalIndex.H"
 #include "boolList.H"
@@ -49,10 +50,10 @@ namespace Foam
 class polyMesh;
 
 /*---------------------------------------------------------------------------*\
-                           Class faceStencil Declaration
+                           Class cellToFaceStencil Declaration
 \*---------------------------------------------------------------------------*/
 
-class faceStencil
+class cellToFaceStencil
 :
     public labelListList
 {
@@ -66,10 +67,12 @@ class faceStencil
 
     // Private Member Functions
 
+        //- Disallow default bitwise copy construct
+        cellToFaceStencil(const cellToFaceStencil&);
+
         //- Disallow default bitwise assignment
-        void operator=(const faceStencil&);
+        void operator=(const cellToFaceStencil&);
 
-        
 
 protected:
 
@@ -130,7 +133,7 @@ public:
     // Constructors
 
         //- Construct from mesh
-        explicit faceStencil(const polyMesh&);
+        explicit cellToFaceStencil(const polyMesh&);
 
 
     // Member Functions
diff --git a/src/finiteVolume/fvMesh/extendedStencil/extendedStencilMeshObjects/upwindCECStencilObject.C b/src/finiteVolume/fvMesh/extendedStencil/extendedStencilMeshObjects/upwindCECStencilObject.C
deleted file mode 100644
index f27e24118f6928c4dc79332be76a88d839542df7..0000000000000000000000000000000000000000
--- a/src/finiteVolume/fvMesh/extendedStencil/extendedStencilMeshObjects/upwindCECStencilObject.C
+++ /dev/null
@@ -1,38 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by the
-    Free Software Foundation; either version 2 of the License, or (at your
-    option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM; if not, write to the Free Software Foundation,
-    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-\*---------------------------------------------------------------------------*/
-
-#include "upwindCECStencilObject.H"
-
-
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
-
-namespace Foam
-{
-    defineTypeNameAndDebug(upwindCECStencilObject, 0);
-}
-
-
-// ************************************************************************* //
diff --git a/src/finiteVolume/fvMesh/extendedStencil/extendedStencilMeshObjects/upwindFECStencilObject.C b/src/finiteVolume/fvMesh/extendedStencil/extendedStencilMeshObjects/upwindFECStencilObject.C
deleted file mode 100644
index d9202eaa6de0b967e424946aef97504ff2948f16..0000000000000000000000000000000000000000
--- a/src/finiteVolume/fvMesh/extendedStencil/extendedStencilMeshObjects/upwindFECStencilObject.C
+++ /dev/null
@@ -1,38 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by the
-    Free Software Foundation; either version 2 of the License, or (at your
-    option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM; if not, write to the Free Software Foundation,
-    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-\*---------------------------------------------------------------------------*/
-
-#include "upwindFECStencilObject.H"
-
-
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
-
-namespace Foam
-{
-    defineTypeNameAndDebug(upwindFECStencilObject, 0);
-}
-
-
-// ************************************************************************* //
diff --git a/src/finiteVolume/fvMesh/extendedStencil/faceToCell/MeshObjects/centredCFCFaceToCellStencilObject.C b/src/finiteVolume/fvMesh/extendedStencil/faceToCell/MeshObjects/centredCFCFaceToCellStencilObject.C
new file mode 100644
index 0000000000000000000000000000000000000000..87d4a4a4889e1a94afb1d0c5267c822bdc9fdaa0
--- /dev/null
+++ b/src/finiteVolume/fvMesh/extendedStencil/faceToCell/MeshObjects/centredCFCFaceToCellStencilObject.C
@@ -0,0 +1,38 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "centredCFCFaceToCellStencilObject.H"
+
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    defineTypeNameAndDebug(centredCFCFaceToCellStencilObject, 0);
+}
+
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/fvMesh/extendedStencil/extendedStencilMeshObjects/centredCFCStencilObject.H b/src/finiteVolume/fvMesh/extendedStencil/faceToCell/MeshObjects/centredCFCFaceToCellStencilObject.H
similarity index 73%
rename from src/finiteVolume/fvMesh/extendedStencil/extendedStencilMeshObjects/centredCFCStencilObject.H
rename to src/finiteVolume/fvMesh/extendedStencil/faceToCell/MeshObjects/centredCFCFaceToCellStencilObject.H
index 43b87a31f0587201ab3ea8460ea8c874a402e22f..4877d63a5ad64530e7f28e33a07d7957cd5af7fa 100644
--- a/src/finiteVolume/fvMesh/extendedStencil/extendedStencilMeshObjects/centredCFCStencilObject.H
+++ b/src/finiteVolume/fvMesh/extendedStencil/faceToCell/MeshObjects/centredCFCFaceToCellStencilObject.H
@@ -23,7 +23,7 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::centredCFCStencilObject
+    Foam::centredCFCFaceToCellStencilObject
 
 Description
 
@@ -31,11 +31,11 @@ SourceFiles
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef centredCFCStencilObject_H
-#define centredCFCStencilObject_H
+#ifndef centredCFCFaceToCellStencilObject_H
+#define centredCFCFaceToCellStencilObject_H
 
-#include "extendedCentredStencil.H"
-#include "cellFaceCellStencil.H"
+#include "extendedCentredFaceToCellStencil.H"
+#include "CFCFaceToCellStencil.H"
 #include "MeshObject.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -44,34 +44,34 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                           Class centredCFCStencilObject Declaration
+                           Class centredCFCFaceToCellStencilObject Declaration
 \*---------------------------------------------------------------------------*/
 
-class centredCFCStencilObject
+class centredCFCFaceToCellStencilObject
 :
-    public MeshObject<fvMesh, centredCFCStencilObject>,
-    public extendedCentredStencil
+    public MeshObject<fvMesh, centredCFCFaceToCellStencilObject>,
+    public extendedCentredFaceToCellStencil
 {
 
 public:
 
-    TypeName("centredCFCStencil");
+    TypeName("centredCFCFaceToCellStencil");
 
     // Constructors
 
         //- Construct from uncompacted face stencil
-        explicit centredCFCStencilObject
+        explicit centredCFCFaceToCellStencilObject
         (
             const fvMesh& mesh
         )
         :
-            MeshObject<fvMesh, centredCFCStencilObject>(mesh),
-            extendedCentredStencil(cellFaceCellStencil(mesh))
+            MeshObject<fvMesh, centredCFCFaceToCellStencilObject>(mesh),
+            extendedCentredFaceToCellStencil(CFCFaceToCellStencil(mesh))
         {}
 
 
     //- Destructor
-    virtual ~centredCFCStencilObject()
+    virtual ~centredCFCFaceToCellStencilObject()
     {}
 };
 
diff --git a/src/finiteVolume/fvMesh/extendedStencil/faceToCell/extendedCentredFaceToCellStencil.C b/src/finiteVolume/fvMesh/extendedStencil/faceToCell/extendedCentredFaceToCellStencil.C
new file mode 100644
index 0000000000000000000000000000000000000000..d7dcc2a093d15d4f28985292d670213b16de4f71
--- /dev/null
+++ b/src/finiteVolume/fvMesh/extendedStencil/faceToCell/extendedCentredFaceToCellStencil.C
@@ -0,0 +1,76 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "mapDistribute.H"
+#include "extendedCentredFaceToCellStencil.H"
+#include "faceToCellStencil.H"
+
+// Only for access to calcDistributeMap <- needs to be moved out
+#include "extendedCellToFaceStencil.H"
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::extendedCentredFaceToCellStencil::extendedCentredFaceToCellStencil
+(
+    const faceToCellStencil& stencil
+)
+:
+    extendedFaceToCellStencil(stencil.mesh())
+{
+    stencil_ = stencil;
+
+    // Calculate distribute map (also renumbers elements in stencil)
+    mapPtr_ = extendedCellToFaceStencil::calcDistributeMap
+    (
+        stencil.mesh(),
+        stencil.globalNumbering(),
+        stencil_
+    );
+}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+// Per face which elements of the stencil to keep.
+void Foam::extendedCentredFaceToCellStencil::compact()
+{
+    boolList isInStencil(map().constructSize(), false);
+
+    forAll(stencil_, faceI)
+    {
+        const labelList& stencilCells = stencil_[faceI];
+
+        forAll(stencilCells, i)
+        {
+            isInStencil[stencilCells[i]] = true;
+        }
+    }
+
+    mapPtr_().compact(isInStencil);
+}
+
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/fvMesh/extendedStencil/faceToCell/extendedCentredFaceToCellStencil.H b/src/finiteVolume/fvMesh/extendedStencil/faceToCell/extendedCentredFaceToCellStencil.H
new file mode 100644
index 0000000000000000000000000000000000000000..137679f22665966346b07d624c233534066f10f4
--- /dev/null
+++ b/src/finiteVolume/fvMesh/extendedStencil/faceToCell/extendedCentredFaceToCellStencil.H
@@ -0,0 +1,146 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::extendedCentredFaceToCellStencil
+
+Description
+
+SourceFiles
+    extendedCentredFaceToCellStencil.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef extendedCentredFaceToCellStencil_H
+#define extendedCentredFaceToCellStencil_H
+
+#include "extendedFaceToCellStencil.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+class faceToCellStencil;
+
+/*---------------------------------------------------------------------------*\
+                           Class extendedCentredFaceToCellStencil Declaration
+\*---------------------------------------------------------------------------*/
+
+class extendedCentredFaceToCellStencil
+:
+    public extendedFaceToCellStencil
+{
+    // Private data
+
+        //- Swap map for getting neigbouring data
+        autoPtr<mapDistribute> mapPtr_;
+
+        //- Per face the stencil.
+        labelListList stencil_;
+
+
+    // Private Member Functions
+
+        //- Disallow default bitwise copy construct
+        extendedCentredFaceToCellStencil
+        (
+            const extendedCentredFaceToCellStencil&
+        );
+
+        //- Disallow default bitwise assignment
+        void operator=(const extendedCentredFaceToCellStencil&);
+
+
+public:
+
+    // Constructors
+
+        //- Construct from uncompacted face stencil
+        explicit extendedCentredFaceToCellStencil(const faceToCellStencil&);
+
+
+    // Member Functions
+
+        //- Return reference to the parallel distribution map
+        const mapDistribute& map() const
+        {
+            return mapPtr_();
+        }
+
+        //- Return reference to the stencil
+        const labelListList& stencil() const
+        {
+            return stencil_;
+        }
+
+        //- After removing elements from the stencil adapt the schedule (map).
+        void compact();
+
+        //- Use map to get the data into stencil order
+        template<class T>
+        void collectData
+        (
+            const GeometricField<T, fvsPatchField, surfaceMesh>& fld,
+            List<List<T> >& stencilFld
+        ) const
+        {
+            extendedFaceToCellStencil::collectData
+            (
+                map(),
+                stencil(),
+                fld,
+                stencilFld
+            );
+        }
+
+        //- Sum surface field contributions to create cell values
+        template<class Type>
+        tmp<GeometricField<Type, fvPatchField, volMesh> > weightedSum
+        (
+            const GeometricField<Type, fvsPatchField, surfaceMesh>& fld,
+            const List<List<scalar> >& stencilWeights
+        ) const
+        {
+            return extendedFaceToCellStencil::weightedSum
+            (
+                map(),
+                stencil(),
+                fld,
+                stencilWeights
+            );
+        }
+
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/fvMesh/extendedStencil/faceToCell/extendedFaceToCellStencil.C b/src/finiteVolume/fvMesh/extendedStencil/faceToCell/extendedFaceToCellStencil.C
new file mode 100644
index 0000000000000000000000000000000000000000..4f0f5c41ad581b672bc9cd77e4a6a335d71afb27
--- /dev/null
+++ b/src/finiteVolume/fvMesh/extendedStencil/faceToCell/extendedFaceToCellStencil.C
@@ -0,0 +1,62 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "extendedFaceToCellStencil.H"
+
+// * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::extendedFaceToCellStencil::extendedFaceToCellStencil(const polyMesh& mesh)
+:
+    mesh_(mesh)
+{
+    // Check for transformation - not supported.
+    const polyBoundaryMesh& patches = mesh.boundaryMesh();
+
+    forAll(patches, patchI)
+    {
+        if (isA<coupledPolyPatch>(patches[patchI]))
+        {
+            const coupledPolyPatch& cpp =
+                refCast<const coupledPolyPatch>(patches[patchI]);
+
+            if (!cpp.parallel() || cpp.separated())
+            {
+                FatalErrorIn
+                (
+                    "extendedFaceToCellStencil::extendedFaceToCellStencil"
+                    "(const polyMesh&)"
+                )   << "Coupled patches with transformations not supported."
+                    << endl
+                    << "Problematic patch " << cpp.name() << exit(FatalError);
+            }
+        }
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/fvMesh/extendedStencil/faceToCell/extendedFaceToCellStencil.H b/src/finiteVolume/fvMesh/extendedStencil/faceToCell/extendedFaceToCellStencil.H
new file mode 100644
index 0000000000000000000000000000000000000000..5c334786c6051427ac3927f4f13788890211dce7
--- /dev/null
+++ b/src/finiteVolume/fvMesh/extendedStencil/faceToCell/extendedFaceToCellStencil.H
@@ -0,0 +1,121 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::extendedFaceToCellStencil
+
+Description
+    Note: transformations on coupled patches not supported. Problem is the
+    positions of cells reachable through these patches.
+
+SourceFiles
+    extendedFaceToCellStencil.C
+    extendedFaceToCellStencilTemplates.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef extendedFaceToCellStencil_H
+#define extendedFaceToCellStencil_H
+
+#include "mapDistribute.H"
+#include "volFields.H"
+#include "surfaceFields.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+class globalIndex;
+
+/*---------------------------------------------------------------------------*\
+                           Class extendedFaceToCellStencil Declaration
+\*---------------------------------------------------------------------------*/
+
+class extendedFaceToCellStencil
+{
+protected:
+
+    // Protected data
+
+        const polyMesh& mesh_;
+
+private:
+
+    // Private Member Functions
+
+        //- Disallow default bitwise copy construct
+        extendedFaceToCellStencil(const extendedFaceToCellStencil&);
+
+        //- Disallow default bitwise assignment
+        void operator=(const extendedFaceToCellStencil&);
+
+
+public:
+
+    // Constructors
+
+        //- Construct from mesh
+        explicit extendedFaceToCellStencil(const polyMesh&);
+
+
+    // Member Functions
+
+        //- Use map to get the data into stencil order
+        template<class T>
+        static void collectData
+        (
+            const mapDistribute& map,
+            const labelListList& stencil,
+            const GeometricField<T, fvsPatchField, surfaceMesh>& fld,
+            List<List<T> >& stencilFld
+        );
+
+        //- Sum surface field contributions to create cell values
+        template<class Type>
+        static tmp<GeometricField<Type, fvPatchField, volMesh> > weightedSum
+        (
+            const mapDistribute& map,
+            const labelListList& stencil,
+            const GeometricField<Type, fvsPatchField, surfaceMesh>& fld,
+            const List<List<scalar> >& stencilWeights
+        );
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#ifdef NoRepository
+#   include "extendedFaceToCellStencilTemplates.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/fvMesh/extendedStencil/faceToCell/extendedFaceToCellStencilTemplates.C b/src/finiteVolume/fvMesh/extendedStencil/faceToCell/extendedFaceToCellStencilTemplates.C
new file mode 100644
index 0000000000000000000000000000000000000000..17210c360c8de0417611c4aacb9a4a4c1d69271c
--- /dev/null
+++ b/src/finiteVolume/fvMesh/extendedStencil/faceToCell/extendedFaceToCellStencilTemplates.C
@@ -0,0 +1,135 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "extendedFaceToCellStencil.H"
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+template<class Type>
+void Foam::extendedFaceToCellStencil::collectData
+(
+    const mapDistribute& map,
+    const labelListList& stencil,
+    const GeometricField<Type, fvsPatchField, surfaceMesh>& fld,
+    List<List<Type> >& stencilFld
+)
+{
+    // 1. Construct face data in compact addressing
+    List<Type> compactFld(map.constructSize(), pTraits<Type>::zero);
+
+    // Insert my internal values
+    forAll(fld, cellI)
+    {
+        compactFld[cellI] = fld[cellI];
+    }
+    // Insert my boundary values
+    label nCompact = fld.size();
+    forAll(fld.boundaryField(), patchI)
+    {
+        const fvsPatchField<Type>& pfld = fld.boundaryField()[patchI];
+
+        forAll(pfld, i)
+        {
+            compactFld[nCompact++] = pfld[i];
+        }
+    }
+
+    // Do all swapping
+    map.distribute(compactFld);
+
+    // 2. Pull to stencil
+    stencilFld.setSize(stencil.size());
+
+    forAll(stencil, faceI)
+    {
+        const labelList& compactCells = stencil[faceI];
+
+        stencilFld[faceI].setSize(compactCells.size());
+
+        forAll(compactCells, i)
+        {
+            stencilFld[faceI][i] = compactFld[compactCells[i]];
+        }
+    }
+}
+
+
+template<class Type>
+Foam::tmp<Foam::GeometricField<Type, Foam::fvPatchField, Foam::volMesh> >
+Foam::extendedFaceToCellStencil::weightedSum
+(
+    const mapDistribute& map,
+    const labelListList& stencil,
+    const GeometricField<Type, fvsPatchField, surfaceMesh>& fld,
+    const List<List<scalar> >& stencilWeights
+)
+{
+    const fvMesh& mesh = fld.mesh();
+
+    // Collect internal and boundary values
+    List<List<Type> > stencilFld;
+    collectData(map, stencil, fld, stencilFld);
+
+    tmp<GeometricField<Type, fvPatchField, volMesh> > tsfCorr
+    (
+        new GeometricField<Type, fvPatchField, volMesh>
+        (
+            IOobject
+            (
+                fld.name(),
+                mesh.time().timeName(),
+                mesh
+            ),
+            mesh,
+            dimensioned<Type>
+            (
+                fld.name(),
+                fld.dimensions(),
+                pTraits<Type>::zero
+            )
+        )
+    );
+    GeometricField<Type, fvPatchField, volMesh>& sf = tsfCorr();
+
+    // cells
+    forAll(sf, cellI)
+    {
+        const List<Type>& stField = stencilFld[cellI];
+        const List<scalar>& stWeight = stencilWeights[cellI];
+
+        forAll(stField, i)
+        {
+            sf[cellI] += stField[i]*stWeight[i];
+        }
+    }
+
+    // Boundaries values?
+
+    return tsfCorr;
+}
+
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/fvMesh/extendedStencil/faceToCell/fullStencils/CFCFaceToCellStencil.C b/src/finiteVolume/fvMesh/extendedStencil/faceToCell/fullStencils/CFCFaceToCellStencil.C
new file mode 100644
index 0000000000000000000000000000000000000000..c0d2302f0b3d97443b9a296724125fb6b87452c9
--- /dev/null
+++ b/src/finiteVolume/fvMesh/extendedStencil/faceToCell/fullStencils/CFCFaceToCellStencil.C
@@ -0,0 +1,231 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "CFCFaceToCellStencil.H"
+#include "syncTools.H"
+#include "emptyPolyPatch.H"
+
+// * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
+
+// Calculates per face the neighbour data (= faces of cell). Leaves out the
+// face itself since this is already in stencil.
+void Foam::CFCFaceToCellStencil::calcFaceBoundaryData
+(
+    labelListList& neiGlobal
+) const
+{
+    const polyBoundaryMesh& patches = mesh().boundaryMesh();
+    const label nBnd = mesh().nFaces()-mesh().nInternalFaces();
+    const labelList& own = mesh().faceOwner();
+
+    neiGlobal.setSize(nBnd);
+
+    forAll(patches, patchI)
+    {
+        const polyPatch& pp = patches[patchI];
+        label faceI = pp.start();
+
+        if (pp.coupled())
+        {
+            // For coupled faces get the faces of the cell on the other side
+            forAll(pp, i)
+            {
+                const labelList& cFaces = mesh().cells()[own[faceI]];
+
+                labelList& globFaces = neiGlobal[faceI-mesh().nInternalFaces()];
+                globFaces.setSize(cFaces.size()-1);
+                label globI = 0;
+
+                forAll(cFaces, j)
+                {
+                    if (cFaces[j] != faceI)
+                    {
+                        globFaces[globI++] = globalNumbering().toGlobal
+                        (
+                            cFaces[j]
+                        );
+                    }
+                }
+                faceI++;
+            }
+        }
+        else if (isA<emptyPolyPatch>(pp))
+        {
+            // Do nothing.
+        }
+        else
+        {
+            // Do nothing since face itself already in stencil
+        }
+    }
+    syncTools::swapBoundaryFaceList(mesh(), neiGlobal, false);
+}
+
+
+// Calculates per cell the neighbour data (= cell or boundary in global
+// numbering). First element is always cell itself!
+void Foam::CFCFaceToCellStencil::calcCellStencil(labelListList& globalCellFaces)
+ const
+{
+    const label nBnd = mesh().nFaces()-mesh().nInternalFaces();
+    const labelList& own = mesh().faceOwner();
+    const labelList& nei = mesh().faceNeighbour();
+
+
+    // Calculate faces of coupled neighbour (in global numbering)
+    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+    labelListList neiGlobal(nBnd);
+    calcFaceBoundaryData(neiGlobal);
+
+
+
+    // Non-empty boundary faces
+    boolList validBFace(mesh().nFaces()-mesh().nInternalFaces(), true);
+
+    const polyBoundaryMesh& patches = mesh().boundaryMesh();
+    forAll(patches, patchI)
+    {
+        const polyPatch& pp = patches[patchI];
+
+        if (isA<emptyPolyPatch>(pp))
+        {
+            label bFaceI = pp.start()-mesh().nInternalFaces();
+            forAll(pp, i)
+            {
+                validBFace[bFaceI++] = false;
+            }
+        }
+    }
+
+
+    // Determine faces of cellCells in global numbering
+    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+    DynamicList<label> allGlobalFaces(100);
+
+    globalCellFaces.setSize(mesh().nCells());
+    forAll(globalCellFaces, cellI)
+    {
+        const cell& cFaces = mesh().cells()[cellI];
+
+        allGlobalFaces.clear();
+
+        // My faces first
+        forAll(cFaces, i)
+        {
+            label faceI = cFaces[i];
+
+            if
+            (
+                mesh().isInternalFace(faceI)
+             || validBFace[faceI-mesh().nInternalFaces()]
+            )
+            {
+                allGlobalFaces.append(globalNumbering().toGlobal(faceI));
+            }
+        }
+
+        // faces of neighbouring cells second
+        forAll(cFaces, i)
+        {
+            label faceI = cFaces[i];
+
+            if (mesh().isInternalFace(faceI))
+            {
+                label nbrCellI = own[faceI];
+                if (nbrCellI == cellI)
+                {
+                    nbrCellI = nei[faceI];
+                }
+                const cell& nbrFaces = mesh().cells()[nbrCellI];
+
+                forAll(nbrFaces, j)
+                {
+                    label nbrFaceI = nbrFaces[j];
+
+                    if
+                    (
+                        mesh().isInternalFace(nbrFaceI)
+                     || validBFace[nbrFaceI-mesh().nInternalFaces()]
+                    )
+                    {
+                        label nbrGlobalI = globalNumbering().toGlobal(nbrFaceI);
+
+                        // Check if already there. Note:should use hashset?
+                        if (findIndex(allGlobalFaces, nbrGlobalI) == -1)
+                        {
+                            allGlobalFaces.append(nbrGlobalI);
+                        }
+                    }
+                }
+            }
+            else
+            {
+                const labelList& nbrGlobalFaces =
+                    neiGlobal[faceI-mesh().nInternalFaces()];
+
+                forAll(nbrGlobalFaces, j)
+                {
+                    label nbrGlobalI = nbrGlobalFaces[j];
+
+                    // Check if already there. Note:should use hashset?
+                    if (findIndex(allGlobalFaces, nbrGlobalI) == -1)
+                    {
+                        allGlobalFaces.append(nbrGlobalI);
+                    }
+                }
+            }
+        }
+
+        globalCellFaces[cellI] = allGlobalFaces;
+        //Pout<< "** cell:" << cellI
+        //    << " at:" << mesh().cellCentres()[cellI]
+        //    << endl;
+        //const labelList& globalFaces = globalCellFaces[cellI];
+        //forAll(globalFaces, i)
+        //{
+        //    label faceI = globalNumbering().toLocal(globalFaces[i]);
+        //    Pout<< "    face:" << faceI
+        //        << " at:" << mesh().faceCentres()[faceI]
+        //        << endl;
+        //}
+    }
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::CFCFaceToCellStencil::CFCFaceToCellStencil(const polyMesh& mesh)
+:
+    faceToCellStencil(mesh)
+{
+    // Calculate per cell the (face) connected cells (in global numbering)
+    calcCellStencil(*this);
+}
+
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/fvMesh/extendedStencil/extendedStencilMeshObjects/centredCECStencilObject.H b/src/finiteVolume/fvMesh/extendedStencil/faceToCell/fullStencils/CFCFaceToCellStencil.H
similarity index 70%
rename from src/finiteVolume/fvMesh/extendedStencil/extendedStencilMeshObjects/centredCECStencilObject.H
rename to src/finiteVolume/fvMesh/extendedStencil/faceToCell/fullStencils/CFCFaceToCellStencil.H
index 29ece11951ce7d41458b6a43bdc67dd4f4bb7482..2bbf9376f438047e47ece65c6e1a9c6f5a091173 100644
--- a/src/finiteVolume/fvMesh/extendedStencil/extendedStencilMeshObjects/centredCECStencilObject.H
+++ b/src/finiteVolume/fvMesh/extendedStencil/faceToCell/fullStencils/CFCFaceToCellStencil.H
@@ -23,20 +23,19 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::centredCECStencilObject
+    Foam::CFCFaceToCellStencil
 
 Description
 
 SourceFiles
+    CFCFaceToCellStencil.C
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef centredCECStencilObject_H
-#define centredCECStencilObject_H
+#ifndef CFCFaceToCellStencil_H
+#define CFCFaceToCellStencil_H
 
-#include "extendedCentredStencil.H"
-#include "cellEdgeCellStencil.H"
-#include "MeshObject.H"
+#include "faceToCellStencil.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -44,36 +43,31 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                           Class centredCECStencilObject Declaration
+                           Class CFCFaceToCellStencil Declaration
 \*---------------------------------------------------------------------------*/
 
-class centredCECStencilObject
+class CFCFaceToCellStencil
 :
-    public MeshObject<fvMesh, centredCECStencilObject>,
-    public extendedCentredStencil
+    public faceToCellStencil
 {
+    // Private Member Functions
 
-public:
+        void calcFaceBoundaryData(labelListList& neiGlobal) const;
 
-    TypeName("centredCECStencil");
+        void calcCellStencil(labelListList& globalCellFaces) const;
 
-    // Constructors
+        //- Disallow default bitwise copy construct
+        CFCFaceToCellStencil(const CFCFaceToCellStencil&);
 
-        //- Construct from uncompacted face stencil
-        explicit centredCECStencilObject
-        (
-            const fvMesh& mesh
-        )
-        :
-            MeshObject<fvMesh, centredCECStencilObject>(mesh),
-            extendedCentredStencil(cellEdgeCellStencil(mesh))
-        {}
+        //- Disallow default bitwise assignment
+        void operator=(const CFCFaceToCellStencil&);
 
+public:
 
-    // Destructor
+    // Constructors
 
-        virtual ~centredCECStencilObject()
-        {}
+        //- Construct from mesh
+        explicit CFCFaceToCellStencil(const polyMesh& mesh);
 };
 
 
diff --git a/src/lagrangian/molecularDynamics/molecularMeasurements/distribution/distributionIO.C b/src/finiteVolume/fvMesh/extendedStencil/faceToCell/fullStencils/faceToCellStencil.C
similarity index 84%
rename from src/lagrangian/molecularDynamics/molecularMeasurements/distribution/distributionIO.C
rename to src/finiteVolume/fvMesh/extendedStencil/faceToCell/fullStencils/faceToCellStencil.C
index 65743800e84b540ee59895c3c4458f8783fff082..7e871cc7fa282e3e1af3a53bbd479d375488940e 100644
--- a/src/lagrangian/molecularDynamics/molecularMeasurements/distribution/distributionIO.C
+++ b/src/finiteVolume/fvMesh/extendedStencil/faceToCell/fullStencils/faceToCellStencil.C
@@ -24,12 +24,18 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "distribution.H"
-#include "IOstreams.H"
+#include "faceToCellStencil.H"
+#include "polyMesh.H"
+
+// * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-// construct from Istream
+Foam::faceToCellStencil::faceToCellStencil(const polyMesh& mesh)
+:
+    mesh_(mesh),
+    globalNumbering_(mesh_.nFaces())
+{}
 
 
 // ************************************************************************* //
diff --git a/src/finiteVolume/fvMesh/extendedStencil/faceToCell/fullStencils/faceToCellStencil.H b/src/finiteVolume/fvMesh/extendedStencil/faceToCell/fullStencils/faceToCellStencil.H
new file mode 100644
index 0000000000000000000000000000000000000000..84df1ea789de5a6e54e47414d65fe4c0f588c5a0
--- /dev/null
+++ b/src/finiteVolume/fvMesh/extendedStencil/faceToCell/fullStencils/faceToCellStencil.H
@@ -0,0 +1,108 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::faceToCellStencil
+
+Description
+    baseclass for extended cell centred addressing. Contains per cell a
+    list of neighbouring faces in global addressing.
+
+SourceFiles
+    faceToCellStencil.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef faceToCellStencil_H
+#define faceToCellStencil_H
+
+#include "globalIndex.H"
+#include "boolList.H"
+#include "HashSet.H"
+#include "indirectPrimitivePatch.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+class polyMesh;
+
+/*---------------------------------------------------------------------------*\
+                           Class faceToCellStencil Declaration
+\*---------------------------------------------------------------------------*/
+
+class faceToCellStencil
+:
+    public labelListList
+{
+    // Private data
+
+        const polyMesh& mesh_;
+
+        //- Global numbering for faces
+        const globalIndex globalNumbering_;
+
+
+    // Private Member Functions
+
+        //- Disallow default bitwise copy construct
+        faceToCellStencil(const faceToCellStencil&);
+
+        //- Disallow default bitwise assignment
+        void operator=(const faceToCellStencil&);
+
+public:
+
+    // Constructors
+
+        //- Construct from mesh
+        explicit faceToCellStencil(const polyMesh&);
+
+
+    // Member Functions
+
+        const polyMesh& mesh() const
+        {
+            return mesh_;
+        }
+
+        //- Global numbering for faces
+        const globalIndex& globalNumbering() const
+        {
+            return globalNumbering_;
+        }
+
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/fvMesh/fvMesh.C b/src/finiteVolume/fvMesh/fvMesh.C
index aebecfefe9e22cf44914f8ff7b5a196a6b8f8207..5dd07f3a921b2732973b88d6993c543b61ff6863 100644
--- a/src/finiteVolume/fvMesh/fvMesh.C
+++ b/src/finiteVolume/fvMesh/fvMesh.C
@@ -44,17 +44,22 @@ License
 #include "leastSquaresVectors.H"
 #include "CentredFitData.H"
 #include "linearFitPolynomial.H"
+#include "quadraticFitPolynomial.H"
 #include "quadraticLinearFitPolynomial.H"
+//#include "quadraticFitSnGradData.H"
 #include "skewCorrectionVectors.H"
 
-#include "centredCECStencilObject.H"
-#include "centredCFCStencilObject.H"
-#include "centredCPCStencilObject.H"
-#include "centredFECStencilObject.H"
-#include "upwindCECStencilObject.H"
-#include "upwindCFCStencilObject.H"
-#include "upwindCPCStencilObject.H"
-#include "upwindFECStencilObject.H"
+
+#include "centredCECCellToFaceStencilObject.H"
+#include "centredCFCCellToFaceStencilObject.H"
+#include "centredCPCCellToFaceStencilObject.H"
+#include "centredFECCellToFaceStencilObject.H"
+#include "upwindCECCellToFaceStencilObject.H"
+#include "upwindCFCCellToFaceStencilObject.H"
+#include "upwindCPCCellToFaceStencilObject.H"
+#include "upwindFECCellToFaceStencilObject.H"
+
+#include "centredCFCFaceToCellStencilObject.H"
 
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
@@ -89,11 +94,12 @@ void Foam::fvMesh::clearGeom()
     // Things geometry dependent that are not updated.
     volPointInterpolation::Delete(*this);
     extendedLeastSquaresVectors::Delete(*this);
-    extendedLeastSquaresVectors::Delete(*this);
     leastSquaresVectors::Delete(*this);
     CentredFitData<linearFitPolynomial>::Delete(*this);
+    CentredFitData<quadraticFitPolynomial>::Delete(*this);
     CentredFitData<quadraticLinearFitPolynomial>::Delete(*this);
     skewCorrectionVectors::Delete(*this);
+    //quadraticFitSnGradData::Delete(*this);
 }
 
 
@@ -105,20 +111,24 @@ void Foam::fvMesh::clearAddressing()
 
     volPointInterpolation::Delete(*this);
     extendedLeastSquaresVectors::Delete(*this);
-    extendedLeastSquaresVectors::Delete(*this);
     leastSquaresVectors::Delete(*this);
     CentredFitData<linearFitPolynomial>::Delete(*this);
+    CentredFitData<quadraticFitPolynomial>::Delete(*this);
     CentredFitData<quadraticLinearFitPolynomial>::Delete(*this);
     skewCorrectionVectors::Delete(*this);
-
-    centredCECStencilObject::Delete(*this);
-    centredCFCStencilObject::Delete(*this);
-    centredCPCStencilObject::Delete(*this);
-    centredFECStencilObject::Delete(*this);
-    upwindCECStencilObject::Delete(*this);
-    upwindCFCStencilObject::Delete(*this);
-    upwindCPCStencilObject::Delete(*this);
-    upwindFECStencilObject::Delete(*this);
+    //quadraticFitSnGradData::Delete(*this);
+
+    centredCECCellToFaceStencilObject::Delete(*this);
+    centredCFCCellToFaceStencilObject::Delete(*this);
+    centredCPCCellToFaceStencilObject::Delete(*this);
+    centredFECCellToFaceStencilObject::Delete(*this);
+    // Is this geometry related - cells distorting to upwind direction?
+    upwindCECCellToFaceStencilObject::Delete(*this);
+    upwindCFCCellToFaceStencilObject::Delete(*this);
+    upwindCPCCellToFaceStencilObject::Delete(*this);
+    upwindFECCellToFaceStencilObject::Delete(*this);
+
+    centredCFCFaceToCellStencilObject::Delete(*this);
 }
 
 
@@ -592,8 +602,10 @@ Foam::tmp<Foam::scalarField> Foam::fvMesh::movePoints(const pointField& p)
     MeshObjectMovePoints<extendedLeastSquaresVectors>(*this);
     MeshObjectMovePoints<leastSquaresVectors>(*this);
     MeshObjectMovePoints<CentredFitData<linearFitPolynomial> >(*this);
+    MeshObjectMovePoints<CentredFitData<quadraticFitPolynomial> >(*this);
     MeshObjectMovePoints<CentredFitData<quadraticLinearFitPolynomial> >(*this);
     MeshObjectMovePoints<skewCorrectionVectors>(*this);
+    //MeshObjectMovePoints<quadraticFitSnGradData>(*this);
 
     return tsweptVols;
 }
diff --git a/src/finiteVolume/interpolation/interpolation/interpolationCellPoint/cellPointWeight/cellPointWeight.C b/src/finiteVolume/interpolation/interpolation/interpolationCellPoint/cellPointWeight/cellPointWeight.C
index 6666d347f0c43ae9efd5f832e9823807611c06bf..65ef6826fa8c097d8d88fa628f9810866cfdd448 100644
--- a/src/finiteVolume/interpolation/interpolation/interpolationCellPoint/cellPointWeight/cellPointWeight.C
+++ b/src/finiteVolume/interpolation/interpolation/interpolationCellPoint/cellPointWeight/cellPointWeight.C
@@ -164,12 +164,12 @@ void Foam::cellPointWeight::findTetrahedron
         }
     }
 
-    WarningIn
-    (
-        "cellPointWeight::findTetrahedron"
-        "(const polyMesh&, const vector&, const label, const label)"
-    )   << "Tetrahedron search failed; using closest tet values to point "
-        << nl << "    cell: " << cellIndex << endl;
+    if (debug)
+    {
+        Pout<< "cellPointWeight::findTetrahedron" << nl
+            << "    Tetrahedron search failed; using closest tet values to "
+            << "point " << nl << "    cell: " << cellIndex << nl << endl;
+    }
 
     const labelList& facePointsClose = mesh.faces()[cellFaces[faceClose]];
     faceVertices_[0] = facePointsClose[0];
@@ -284,13 +284,12 @@ void Foam::cellPointWeight::findTriangle
         pointI++;
     }
 
-    WarningIn
-    (
-        "Foam::cellPointWeight::findTriangle"
-        "(const polyMesh&, const vector&, const label)"
-    )   << "Triangle search failed; using closest triangle to "
-        << "point" << nl
-        << "    cell face: " << faceIndex << endl;
+    if (debug)
+    {
+        Pout<< "Foam::cellPointWeight::findTriangle"
+            << "Triangle search failed; using closest triangle to point" << nl
+            << "    cell face: " << faceIndex << nl << endl;
+    }
 
     // Indices of the cell vertices making up the triangle
     faceVertices_[0] = facePoints[0];
diff --git a/src/finiteVolume/interpolation/interpolation/interpolationCellPoint/cellPointWeight/cellPointWeight.H b/src/finiteVolume/interpolation/interpolation/interpolationCellPoint/cellPointWeight/cellPointWeight.H
index 767c90380932cf443ef50223649fcf251a86582f..937e277b61a3ceef0169e218bcbb18285281d979 100644
--- a/src/finiteVolume/interpolation/interpolation/interpolationCellPoint/cellPointWeight/cellPointWeight.H
+++ b/src/finiteVolume/interpolation/interpolation/interpolationCellPoint/cellPointWeight/cellPointWeight.H
@@ -51,7 +51,9 @@ class polyMesh;
 
 class cellPointWeight
 {
-    // Private data
+protected:
+
+    // Protected data
 
        //- Cell index
        const label cellIndex_;
@@ -63,7 +65,7 @@ class cellPointWeight
        FixedList<label, 3> faceVertices_;
 
 
-    // Private Member Functions
+    // Protected Member Functions
 
         void findTetrahedron
         (
diff --git a/src/finiteVolume/interpolation/interpolation/interpolationCellPoint/interpolationCellPoint.H b/src/finiteVolume/interpolation/interpolation/interpolationCellPoint/interpolationCellPoint.H
index 9388a85fc889214c1cb5685b3d15de4c17eacf0e..bbe76871ba730bcf70c86c057c5394a3644dd773 100644
--- a/src/finiteVolume/interpolation/interpolation/interpolationCellPoint/interpolationCellPoint.H
+++ b/src/finiteVolume/interpolation/interpolation/interpolationCellPoint/interpolationCellPoint.H
@@ -42,7 +42,7 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                           Class interpolationCellPoint Declaration
+                   Class interpolationCellPoint Declaration
 \*---------------------------------------------------------------------------*/
 
 template<class Type>
@@ -50,7 +50,9 @@ class interpolationCellPoint
 :
     public interpolation<Type>
 {
-    // Private data
+protected:
+
+    // Protected data
 
         //- Interpolated volfield
         const GeometricField<Type, pointPatchField, pointMesh> psip_;
@@ -79,7 +81,7 @@ public:
         //- Interpolate field to the given point in the given cell
         inline Type interpolate
         (
-            const vector& position, 
+            const vector& position,
             const label nCell,
             const label facei = -1
         ) const;
diff --git a/src/finiteVolume/interpolation/interpolation/interpolationCellPointWallModified/cellPointWeightWallModified/cellPointWeightWallModified.C b/src/finiteVolume/interpolation/interpolation/interpolationCellPointWallModified/cellPointWeightWallModified/cellPointWeightWallModified.C
new file mode 100644
index 0000000000000000000000000000000000000000..f33af9e7e335104d78d03f9e1ed31b1f6a511b38
--- /dev/null
+++ b/src/finiteVolume/interpolation/interpolation/interpolationCellPointWallModified/cellPointWeightWallModified/cellPointWeightWallModified.C
@@ -0,0 +1,72 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "cellPointWeightWallModified.H"
+#include "wallPolyPatch.H"
+#include "polyMesh.H"
+#include "polyBoundaryMesh.H"
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::cellPointWeightWallModified::cellPointWeightWallModified
+(
+    const polyMesh& mesh,
+    const vector& position,
+    const label cellIndex,
+    const label faceIndex
+)
+:
+    cellPointWeight(mesh, position, cellIndex, faceIndex)
+{
+    if (faceIndex < 0)
+    {
+        findTetrahedron(mesh, position, cellIndex);
+    }
+    else
+    {
+        const polyBoundaryMesh& bm = mesh.boundaryMesh();
+        label patchI = bm.whichPatch(faceIndex);
+        if (patchI != -1)
+        {
+            if (isA<wallPolyPatch>(bm[patchI]))
+            {
+                // Apply cell centre value wall faces
+                weights_[0] = 0.0;
+                weights_[1] = 0.0;
+                weights_[2] = 0.0;
+                weights_[3] = 1.0;
+            }
+        }
+        else
+        {
+            // Interpolate
+            findTriangle(mesh, position, faceIndex);
+        }
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/fvMesh/extendedStencil/extendedStencilMeshObjects/centredFECStencilObject.H b/src/finiteVolume/interpolation/interpolation/interpolationCellPointWallModified/cellPointWeightWallModified/cellPointWeightWallModified.H
similarity index 70%
rename from src/finiteVolume/fvMesh/extendedStencil/extendedStencilMeshObjects/centredFECStencilObject.H
rename to src/finiteVolume/interpolation/interpolation/interpolationCellPointWallModified/cellPointWeightWallModified/cellPointWeightWallModified.H
index 8ce7efcacac1c0658d64907b9214dedb3ceecc10..e7903a7338b9e4cc1bfcb1ba2eeba55a632bd505 100644
--- a/src/finiteVolume/fvMesh/extendedStencil/extendedStencilMeshObjects/centredFECStencilObject.H
+++ b/src/finiteVolume/interpolation/interpolation/interpolationCellPointWallModified/cellPointWeightWallModified/cellPointWeightWallModified.H
@@ -23,57 +23,48 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::centredFECStencilObject
+    Foam::cellPointWeightWallModified
 
 Description
+    Foam::cellPointWeightWallModified
 
 SourceFiles
+    cellPointWeightWallModified.C
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef centredFECStencilObject_H
-#define centredFECStencilObject_H
+#ifndef cellPointWeightWallModified_H
+#define cellPointWeightWallModified_H
 
-#include "extendedCentredStencil.H"
-#include "faceEdgeCellStencil.H"
-#include "MeshObject.H"
+#include "cellPointWeight.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 namespace Foam
 {
 
+class polyMesh;
+
 /*---------------------------------------------------------------------------*\
-                           Class centredFECStencilObject Declaration
+                 Class cellPointWeightWallModified Declaration
 \*---------------------------------------------------------------------------*/
 
-class centredFECStencilObject
+class cellPointWeightWallModified
 :
-    public MeshObject<fvMesh, centredFECStencilObject>,
-    public extendedCentredStencil
+    public cellPointWeight
 {
-
 public:
 
-    TypeName("centredCFCStencil");
-
     // Constructors
 
-        //- Construct from uncompacted face stencil
-        explicit centredFECStencilObject
+        //- Construct from components
+        cellPointWeightWallModified
         (
-            const fvMesh& mesh
-        )
-        :
-            MeshObject<fvMesh, centredFECStencilObject>(mesh),
-            extendedCentredStencil(faceEdgeCellStencil(mesh))
-        {}
-
-
-    // Destructor
-
-        virtual ~centredFECStencilObject()
-        {}
+            const polyMesh& mesh,
+            const vector& position,
+            const label nCell,
+            const label facei = -1
+        );
 };
 
 
diff --git a/applications/utilities/preProcessing/mdInitialise/molConfig_old/molConfig.C b/src/finiteVolume/interpolation/interpolation/interpolationCellPointWallModified/interpolationCellPointWallModified.C
similarity index 81%
rename from applications/utilities/preProcessing/mdInitialise/molConfig_old/molConfig.C
rename to src/finiteVolume/interpolation/interpolation/interpolationCellPointWallModified/interpolationCellPointWallModified.C
index e81c24ca6a3cda74c841511a8519496ddcdf1638..762aeef1cbcb6ab247aa45c9b79dc0a162b5bd6c 100644
--- a/applications/utilities/preProcessing/mdInitialise/molConfig_old/molConfig.C
+++ b/src/finiteVolume/interpolation/interpolation/interpolationCellPointWallModified/interpolationCellPointWallModified.C
@@ -24,26 +24,18 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "molConfig.H"
+#include "interpolationCellPointWallModified.H"
 
 // * * * * * * * * * * * * * * * * Constructor * * * * * * * * * * * * * * * //
 
-Foam::molConfig::molConfig
+template<class Type>
+Foam::interpolationCellPointWallModified<Type>::
+interpolationCellPointWallModified
 (
-    IOdictionary& molConfigDescription,
-    const polyMesh& mesh
+    const GeometricField<Type, fvPatchField, volMesh>& psi
 )
 :
-    molConfigDescription_(molConfigDescription),
-    mesh_(mesh)
-{
-    createMolecules();
-}
-
-
-// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
-
-Foam::molConfig::~molConfig()
+    interpolationCellPoint<Type>(psi)
 {}
 
 
diff --git a/src/lagrangian/basic/lagrangianField/LagrangianField.H b/src/finiteVolume/interpolation/interpolation/interpolationCellPointWallModified/interpolationCellPointWallModified.H
similarity index 58%
rename from src/lagrangian/basic/lagrangianField/LagrangianField.H
rename to src/finiteVolume/interpolation/interpolation/interpolationCellPointWallModified/interpolationCellPointWallModified.H
index a760413448ce35c35f4ef11cf78d3c2357476d55..a54fc8fb7a0fbbf2f360b6afa63973c59070cc36 100644
--- a/src/lagrangian/basic/lagrangianField/LagrangianField.H
+++ b/src/finiteVolume/interpolation/interpolation/interpolationCellPointWallModified/interpolationCellPointWallModified.H
@@ -23,21 +23,19 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::LagrangianField
+    Foam::interpolationCellPoint
 
 Description
-
-SourceFiles
-    LagrangianFieldI.H
-    LagrangianField.C
-    LagrangianFieldIO.C
+    Same as interpolationCellPoint, but if interpolating a wall face, uses
+    cell centre value instead
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef LagrangianField_H
-#define LagrangianField_H
+#ifndef interpolationCellPointWallModified_H
+#define interpolationCellPointWallModified_H
 
-#include "DimensionedField.H"
+#include "interpolationCellPoint.H"
+#include "cellPointWeightWallModified.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -45,83 +43,41 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                           Class LagrangianField Declaration
+                    Class interpolationCellPoint Declaration
 \*---------------------------------------------------------------------------*/
 
-template<class Type, class Cloud>
-class LagrangianField
+template<class Type>
+class interpolationCellPointWallModified
 :
-    public DimensionedField<Type>
+    public interpolationCellPoint<Type>
 {
-    // Private data
-
-        //- Reference to lagrangian cloud this field is part of
-        const Cloud& cloud_;
-
-
 public:
 
     //- Runtime type information
-    TypeName("LagrangianField");
+    TypeName("cellPointWallModified");
 
 
     // Constructors
 
         //- Construct from components
-        LagrangianField
+        interpolationCellPointWallModified
         (
-            const IOobject& ioObject,
-            const Cloud& cloud,
-            const dimensions& dims,
-            const Field<Type> field
+            const GeometricField<Type, fvPatchField, volMesh>& psi
         );
 
-        //- Construct from IOobject
-        LagrangianField
-        (
-            const IOobject& ioObject,
-            const Cloud& cloud
-        );
-
-        //- Construct from Cloud data
-        LagrangianField(const Cloud& cloud, const int typeFieldIndex);
-
-        //- Construct as copy
-        LagrangianField(const LagrangianField<Type>&);
-
-
-    // Destructor
-
-        ~LagrangianField();
-
 
     // Member Functions
 
-        // Access
-
-            //- Map field back into Cloud
-            void map(Cloud& cloud, const int typeFieldIndex);
-
-
-        // Check
+        //- Interpolate field for the given cellPointWeight
+        inline Type interpolate(const cellPointWeightWallModified& cpw) const;
 
-        // Edit
-
-        // Write
-
-
-    // Member Operators
-
-        void operator=(const LagrangianField&);
-
-
-    // Friend Functions
-
-    // Friend Operators
-
-    // IOstream Operators
-
-        friend Ostream& operator<<(Ostream&, const LagrangianField&);
+        //- Interpolate field to the given point in the given cell
+        inline Type interpolate
+        (
+            const vector& position,
+            const label nCell,
+            const label facei = -1
+        ) const;
 };
 
 
@@ -131,7 +87,13 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-#include "LagrangianFieldI.H"
+#include "interpolationCellPointWallModifiedI.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#ifdef NoRepository
+#   include "interpolationCellPointWallModified.C"
+#endif
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModelI.H b/src/finiteVolume/interpolation/interpolation/interpolationCellPointWallModified/interpolationCellPointWallModifiedI.H
similarity index 62%
rename from src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModelI.H
rename to src/finiteVolume/interpolation/interpolation/interpolationCellPointWallModified/interpolationCellPointWallModifiedI.H
index cec949f5cb7529fd686cc8137a8931cd4c1b08db..4318ce899419eb46638114dab77a876f111de0cd 100644
--- a/src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModelI.H
+++ b/src/finiteVolume/interpolation/interpolation/interpolationCellPointWallModified/interpolationCellPointWallModifiedI.H
@@ -24,39 +24,45 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "zeroGradientFvPatchFields.H"
-
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-inline Foam::tmp<Foam::volScalarField> Foam::chemistryModel::RR
+template<class Type>
+inline Type Foam::interpolationCellPointWallModified<Type>::interpolate
+(
+    const cellPointWeightWallModified& cpw
+) const
+{
+    const FixedList<scalar, 4>& weights = cpw.weights();
+    const FixedList<label, 3>& faceVertices = cpw.faceVertices();
+
+    Type t = this->psip_[faceVertices[0]]*weights[0];
+    t += this->psip_[faceVertices[1]]*weights[1];
+    t += this->psip_[faceVertices[2]]*weights[2];
+    t += this->psi_[cpw.cell()]*weights[3];
+
+    return t;
+}
+
+
+template<class Type>
+inline Type Foam::interpolationCellPointWallModified<Type>::interpolate
 (
-    const label i
+    const vector& position,
+    const label celli,
+    const label facei
 ) const
 {
-    tmp<volScalarField> tRR
-    (
-        new volScalarField
+    return
+        interpolate
         (
-            IOobject
+            cellPointWeightWallModified
             (
-                "RR(" + Y_[i].name() + ')',
-                rho_.time().timeName(),
-                rho_.db(),
-                IOobject::NO_READ,
-                IOobject::NO_WRITE
-            ),
-            rho_.mesh(),
-            dimensionedScalar("zero", dimensionSet(1, -3, -1, 0, 0), 0.0),
-            zeroGradientFvPatchScalarField::typeName
-        )
-    );
-
-    if (chemistry_)
-    {
-        tRR().internalField() = RR_[i];
-        tRR().correctBoundaryConditions();
-    }
-    return tRR;
+                this->pMesh_,
+                position,
+                celli,
+                facei
+            )
+        );
 }
 
 
diff --git a/src/finiteVolume/interpolation/interpolation/interpolationCellPointWallModified/makeInterpolationCellPointWallModified.C b/src/finiteVolume/interpolation/interpolation/interpolationCellPointWallModified/makeInterpolationCellPointWallModified.C
new file mode 100644
index 0000000000000000000000000000000000000000..c2e691f545b49453d136313d3d43554f175e97bb
--- /dev/null
+++ b/src/finiteVolume/interpolation/interpolation/interpolationCellPointWallModified/makeInterpolationCellPointWallModified.C
@@ -0,0 +1,36 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "interpolationCellPointWallModified.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    makeInterpolation(interpolationCellPointWallModified);
+}
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/interpolation/surfaceInterpolation/schemes/CentredFitScheme/CentredFitData.C b/src/finiteVolume/interpolation/surfaceInterpolation/schemes/CentredFitScheme/CentredFitData.C
index 2b7bf7be3c567a0b1523a0f7c927885111205210..fb9611e9c8aa06f8f70c56ccd847232b34b72ef5 100644
--- a/src/finiteVolume/interpolation/surfaceInterpolation/schemes/CentredFitScheme/CentredFitData.C
+++ b/src/finiteVolume/interpolation/surfaceInterpolation/schemes/CentredFitScheme/CentredFitData.C
@@ -29,7 +29,7 @@ License
 #include "volFields.H"
 #include "SVD.H"
 #include "syncTools.H"
-#include "extendedCentredStencil.H"
+#include "extendedCentredCellToFaceStencil.H"
 
 // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
 
@@ -37,14 +37,19 @@ template<class Polynomial>
 Foam::CentredFitData<Polynomial>::CentredFitData
 (
     const fvMesh& mesh,
-    const extendedCentredStencil& stencil,
+    const extendedCentredCellToFaceStencil& stencil,
     const scalar linearLimitFactor,
     const scalar centralWeight
 )
 :
-    FitData<CentredFitData<Polynomial>, extendedCentredStencil, Polynomial>
+    FitData
+    <
+        CentredFitData<Polynomial>,
+        extendedCentredCellToFaceStencil,
+        Polynomial
+    >
     (
-        mesh, stencil, linearLimitFactor, centralWeight
+        mesh, stencil, true, linearLimitFactor, centralWeight
     ),
     coeffs_(mesh.nFaces())
 {
@@ -83,8 +88,12 @@ void Foam::CentredFitData<Polynomial>::calcFit()
 
     for(label facei = 0; facei < mesh.nInternalFaces(); facei++)
     {
-        FitData<CentredFitData<Polynomial>, extendedCentredStencil, Polynomial>::
-                   calcFit(coeffs_[facei], stencilPoints[facei], w[facei], facei);
+        FitData
+        <
+            CentredFitData<Polynomial>,
+            extendedCentredCellToFaceStencil,
+            Polynomial
+        >::calcFit(coeffs_[facei], stencilPoints[facei], w[facei], facei);
     }
 
     const surfaceScalarField::GeometricBoundaryField& bw = w.boundaryField();
@@ -101,7 +110,9 @@ void Foam::CentredFitData<Polynomial>::calcFit()
             {
                 FitData
                 <
-                    CentredFitData<Polynomial>, extendedCentredStencil, Polynomial
+                    CentredFitData<Polynomial>,
+                    extendedCentredCellToFaceStencil,
+                    Polynomial
                 >::calcFit(coeffs_[facei], stencilPoints[facei], pw[i], facei);
                 facei++;
             }
diff --git a/src/finiteVolume/interpolation/surfaceInterpolation/schemes/CentredFitScheme/CentredFitData.H b/src/finiteVolume/interpolation/surfaceInterpolation/schemes/CentredFitScheme/CentredFitData.H
index 3be61503c376ec25406836b73f9b611ab33cf42b..476d8aed1779fcfe23df729c122a83e216469c1d 100644
--- a/src/finiteVolume/interpolation/surfaceInterpolation/schemes/CentredFitScheme/CentredFitData.H
+++ b/src/finiteVolume/interpolation/surfaceInterpolation/schemes/CentredFitScheme/CentredFitData.H
@@ -43,7 +43,7 @@ SourceFiles
 namespace Foam
 {
 
-class extendedCentredStencil;
+class extendedCentredCellToFaceStencil;
 
 /*---------------------------------------------------------------------------*\
                     Class CentredFitData Declaration
@@ -52,7 +52,7 @@ class extendedCentredStencil;
 template<class Polynomial>
 class CentredFitData
 :
-    public FitData<CentredFitData<Polynomial>, extendedCentredStencil, Polynomial>
+    public FitData<CentredFitData<Polynomial>, extendedCentredCellToFaceStencil, Polynomial>
 {
     // Private data
 
@@ -79,7 +79,7 @@ public:
         CentredFitData
         (
             const fvMesh& mesh,
-            const extendedCentredStencil& stencil,
+            const extendedCentredCellToFaceStencil& stencil,
             const scalar linearLimitFactor,
             const scalar centralWeight
         );
diff --git a/src/finiteVolume/interpolation/surfaceInterpolation/schemes/CentredFitScheme/CentredFitScheme.H b/src/finiteVolume/interpolation/surfaceInterpolation/schemes/CentredFitScheme/CentredFitScheme.H
index 10cea46e3b37199c71dda657e95e396664c65081..7e981024c01013dd755d35c58dc165f6382ab463 100644
--- a/src/finiteVolume/interpolation/surfaceInterpolation/schemes/CentredFitScheme/CentredFitScheme.H
+++ b/src/finiteVolume/interpolation/surfaceInterpolation/schemes/CentredFitScheme/CentredFitScheme.H
@@ -119,7 +119,7 @@ public:
         {
             const fvMesh& mesh = this->mesh();
 
-            const extendedCentredStencil& stencil = Stencil::New
+            const extendedCentredCellToFaceStencil& stencil = Stencil::New
             (
                 mesh
             );
diff --git a/src/finiteVolume/interpolation/surfaceInterpolation/schemes/FitData/FitData.C b/src/finiteVolume/interpolation/surfaceInterpolation/schemes/FitData/FitData.C
index 18585bc645d1db5b13784960fd315f3e8165d824..dcea0902668d1444f3d93af5c37550f45a8245bf 100644
--- a/src/finiteVolume/interpolation/surfaceInterpolation/schemes/FitData/FitData.C
+++ b/src/finiteVolume/interpolation/surfaceInterpolation/schemes/FitData/FitData.C
@@ -28,22 +28,22 @@ License
 #include "surfaceFields.H"
 #include "volFields.H"
 #include "SVD.H"
-#include "syncTools.H"
-#include "extendedStencil.H"
 
 // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
 
-template<class Form, class extendedStencil, class Polynomial>
-Foam::FitData<Form, extendedStencil, Polynomial>::FitData
+template<class Form, class ExtendedStencil, class Polynomial>
+Foam::FitData<Form, ExtendedStencil, Polynomial>::FitData
 (
     const fvMesh& mesh,
-    const extendedStencil& stencil,
+    const ExtendedStencil& stencil,
+    const bool linearCorrection,
     const scalar linearLimitFactor,
     const scalar centralWeight
 )
 :
     MeshObject<fvMesh, Form>(mesh),
     stencil_(stencil),
+    linearCorrection_(linearCorrection),
     linearLimitFactor_(linearLimitFactor),
     centralWeight_(centralWeight),
 #   ifdef SPHERICAL_GEOMETRY
@@ -145,7 +145,10 @@ void Foam::FitData<FitDataType, ExtendedStencil, Polynomial>::calcFit
     // Setup the point weights
     scalarList wts(C.size(), scalar(1));
     wts[0] = centralWeight_;
-    wts[1] = centralWeight_;
+    if (linearCorrection_)
+    {
+        wts[1] = centralWeight_;
+    }
 
     // Reference point
     point p0 = this->mesh().faceCentres()[facei];
@@ -191,6 +194,13 @@ void Foam::FitData<FitDataType, ExtendedStencil, Polynomial>::calcFit
         );
     }
 
+    // Additional weighting for constant and linear terms
+    for(label i = 0; i < B.n(); i++)
+    {
+        B[i][0] *= wts[0];
+        B[i][1] *= wts[0];
+    }
+
     // Set the fit
     label stencilSize = C.size();
     coeffsi.setSize(stencilSize);
@@ -205,7 +215,7 @@ void Foam::FitData<FitDataType, ExtendedStencil, Polynomial>::calcFit
 
         for(label i=0; i<stencilSize; i++)
         {
-            coeffsi[i] = wts[i]*svd.VSinvUt()[0][i];
+            coeffsi[i] = wts[0]*wts[i]*svd.VSinvUt()[0][i];
             if (mag(coeffsi[i]) > maxCoeff)
             {
                 maxCoeff = mag(coeffsi[i]);
@@ -213,10 +223,20 @@ void Foam::FitData<FitDataType, ExtendedStencil, Polynomial>::calcFit
             }
         }
 
-        goodFit =
-            (mag(coeffsi[0] - wLin) < linearLimitFactor_*wLin)
-         && (mag(coeffsi[1] - (1 - wLin)) < linearLimitFactor_*(1 - wLin))
-         && maxCoeffi <= 1;
+        if (linearCorrection_)
+        {
+            goodFit =
+                (mag(coeffsi[0] - wLin) < linearLimitFactor_*wLin)
+             && (mag(coeffsi[1] - (1 - wLin)) < linearLimitFactor_*(1 - wLin))
+             && maxCoeffi <= 1;
+        }
+        else
+        {
+            // Upwind: weight on face is 1.
+            goodFit =
+                (mag(coeffsi[0] - 1.0) < linearLimitFactor_*1.0)
+             && maxCoeffi <= 1;
+        }
 
         // if (goodFit && iIt > 0)
         // {
@@ -229,7 +249,8 @@ void Foam::FitData<FitDataType, ExtendedStencil, Polynomial>::calcFit
             //     << "    sing vals " << svd.S() << endl;
         // }
 
-        if (!goodFit) // (not good fit so increase weight in the centre)
+        if (!goodFit) // (not good fit so increase weight in the centre and weight
+                      //  for constant and linear terms)
         {
             // if (iIt == 7)
             // {
@@ -237,26 +258,46 @@ void Foam::FitData<FitDataType, ExtendedStencil, Polynomial>::calcFit
             //     (
             //         "FitData<Polynomial>::calcFit"
             //         "(const List<point>& C, const label facei"
-            //     )   << "Cannot fit face " << facei
+            //     )   << "Cannot fit face " << facei << " iteration " << iIt
+            //         << " with sum of weights " << sum(coeffsi) << nl
+            //         << "    Weights " << coeffsi << nl
+            //         << "    Linear weights " << wLin << " " << 1 - wLin << nl
             //         << "    sing vals " << svd.S() << endl;
             // }
 
             wts[0] *= 10;
-            wts[1] *= 10;
+            if (linearCorrection_)
+            {
+                wts[1] *= 10;
+            }
 
             for(label j = 0; j < B.m(); j++)
             {
                 B[0][j] *= 10;
                 B[1][j] *= 10;
             }
+
+            for(label i = 0; i < B.n(); i++)
+            {
+                B[i][0] *= 10;
+                B[i][1] *= 10;
+            }
         }
     }
 
     if (goodFit)
     {
-        // Remove the uncorrected linear ocefficients
-        coeffsi[0] -= wLin;
-        coeffsi[1] -= 1 - wLin;
+        if (linearCorrection_)
+        {
+            // Remove the uncorrected linear coefficients
+            coeffsi[0] -= wLin;
+            coeffsi[1] -= 1 - wLin;
+        }
+        else
+        {
+            // Remove the uncorrected upwind coefficients
+            coeffsi[0] -= 1.0;
+        }
     }
     else
     {
diff --git a/src/finiteVolume/interpolation/surfaceInterpolation/schemes/FitData/FitData.H b/src/finiteVolume/interpolation/surfaceInterpolation/schemes/FitData/FitData.H
index b151a7520414268d270a2ad46f48b32fcdfcc76e..cb7bd9ceae5197bfc15cf7cbf7b6c49d03701755 100644
--- a/src/finiteVolume/interpolation/surfaceInterpolation/schemes/FitData/FitData.H
+++ b/src/finiteVolume/interpolation/surfaceInterpolation/schemes/FitData/FitData.H
@@ -26,7 +26,11 @@ Class
     Foam::FitData
 
 Description
-    Data for the upwinded and centred polynomial fit interpolation schemes
+    Data for the upwinded and centred polynomial fit interpolation schemes.
+    The linearCorrection_ determines whether the fit is for a corrected
+    linear scheme (first two coefficients are corrections for owner and
+    neighbour) or a pure upwind scheme (first coefficient is correction for
+    owner ; weight on face taken as 1).
 
 SourceFiles
     FitData.C
@@ -58,7 +62,11 @@ class FitData
         //- The stencil the fit is based on
         const ExtendedStencil& stencil_;
 
-        //- Factor the fit is allowed to deviate from linear.
+        //- Is scheme correction on linear (true) or on upwind (false)
+        const bool linearCorrection_;
+
+        //- Factor the fit is allowed to deviate from the base scheme
+        //  (linear or pure upwind)
         //  This limits the amount of high-order correction and increases
         //  stability on bad meshes
         const scalar linearLimitFactor_;
@@ -84,11 +92,6 @@ class FitData
             const label faci
         );
 
-        //- Calculate the fit for the all the mesh faces
-        //  and set the coefficients
-        // virtual void calcFit();
-
-
 public:
 
     //TypeName("FitData");
@@ -101,6 +104,7 @@ public:
         (
             const fvMesh& mesh,
             const ExtendedStencil& stencil,
+            const bool linearCorrection,
             const scalar linearLimitFactor,
             const scalar centralWeight
         );
@@ -119,12 +123,18 @@ public:
             return stencil_;
         }
 
+        bool linearCorrection() const
+        {
+            return linearCorrection_;
+        }
+
         //- Calculate the fit for the specified face and set the coefficients
         void calcFit
         (
             scalarList& coeffsi, // coefficients to be set
             const List<point>&,  // Stencil points
-            const scalar wLin,   // Linear weight
+            const scalar wLin,   // Weight for linear approximation (weights
+                                 // nearest neighbours)
             const label faci     // Current face index
         );
 
@@ -132,7 +142,7 @@ public:
         virtual void calcFit() = 0;
 
 
-        //- Delete the data when the mesh moves not implemented
+        //- Recalculate weights (but not stencil) when the mesh moves
         bool movePoints();
 };
 
diff --git a/src/finiteVolume/interpolation/surfaceInterpolation/schemes/PureUpwindFitScheme/PureUpwindFitScheme.H b/src/finiteVolume/interpolation/surfaceInterpolation/schemes/PureUpwindFitScheme/PureUpwindFitScheme.H
new file mode 100644
index 0000000000000000000000000000000000000000..6b0b792f9a2bd766d432b7bcbb8d788f2e073dfa
--- /dev/null
+++ b/src/finiteVolume/interpolation/surfaceInterpolation/schemes/PureUpwindFitScheme/PureUpwindFitScheme.H
@@ -0,0 +1,186 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::PureUpwindFitScheme
+
+Description
+    Upwind biased fit surface interpolation scheme that applies an explicit
+    correction to upwind.
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef PureUpwindFitScheme_H
+#define PureUpwindFitScheme_H
+
+#include "UpwindFitData.H"
+#include "upwind.H"
+#include "Switch.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+                           Class PureUpwindFitScheme Declaration
+\*---------------------------------------------------------------------------*/
+
+template<class Type, class Polynomial, class Stencil>
+class PureUpwindFitScheme
+:
+    public upwind<Type>
+{
+    // Private Data
+
+        //- Factor the fit is allowed to deviate from linear.
+        //  This limits the amount of high-order correction and increases
+        //  stability on bad meshes
+        const scalar linearLimitFactor_;
+
+        //- Weights for central stencil
+        const scalar centralWeight_;
+
+
+    // Private Member Functions
+
+        //- Disallow default bitwise copy construct
+        PureUpwindFitScheme(const PureUpwindFitScheme&);
+
+        //- Disallow default bitwise assignment
+        void operator=(const PureUpwindFitScheme&);
+
+
+public:
+
+    //- Runtime type information
+    TypeName("PureUpwindFitScheme");
+
+
+    // Constructors
+
+        //- Construct from mesh and Istream
+        //  The name of the flux field is read from the Istream and looked-up
+        //  from the mesh objectRegistry
+        PureUpwindFitScheme(const fvMesh& mesh, Istream& is)
+        :
+            upwind<Type>
+            (
+                mesh,
+                mesh.lookupObject<surfaceScalarField>(word(is))
+            ),
+            linearLimitFactor_(readScalar(is)),
+            centralWeight_(1000)
+        {}
+
+
+        //- Construct from mesh, faceFlux and Istream
+        PureUpwindFitScheme
+        (
+            const fvMesh& mesh,
+            const surfaceScalarField& faceFlux,
+            Istream& is
+        )
+        :
+            upwind<Type>(mesh, faceFlux),
+            linearLimitFactor_(readScalar(is)),
+            centralWeight_(1000)
+        {}
+
+
+    // Member Functions
+
+        //- Return true if this scheme uses an explicit correction
+        virtual bool corrected() const
+        {
+            return true;
+        }
+
+        //- Return the explicit correction to the face-interpolate
+        virtual tmp<GeometricField<Type, fvsPatchField, surfaceMesh> >
+        correction
+        (
+            const GeometricField<Type, fvPatchField, volMesh>& vf
+        ) const
+        {
+            const fvMesh& mesh = this->mesh();
+
+            // Use the owner/neighbour splitting constructor
+            const extendedUpwindCellToFaceStencil& stencil = Stencil::New(mesh);
+
+            const UpwindFitData<Polynomial>& ufd =
+            UpwindFitData<Polynomial>::New
+            (
+                mesh,
+                stencil,
+                false,              //offset to upwind
+                linearLimitFactor_,
+                centralWeight_
+            );
+
+            const List<scalarList>& fo = ufd.owncoeffs();
+            const List<scalarList>& fn = ufd.neicoeffs();
+
+            return stencil.weightedSum(this->faceFlux_, vf, fo, fn);
+        }
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+// Add the patch constructor functions to the hash tables
+
+#define makePureUpwindFitSurfaceInterpolationTypeScheme(SS, POLYNOMIAL, STENCIL, TYPE) \
+                                                                              \
+typedef PureUpwindFitScheme<TYPE, POLYNOMIAL, STENCIL>                            \
+    PureUpwindFitScheme##TYPE##POLYNOMIAL##STENCIL##_;                            \
+defineTemplateTypeNameAndDebugWithName                                        \
+    (PureUpwindFitScheme##TYPE##POLYNOMIAL##STENCIL##_, #SS, 0);                  \
+                                                                              \
+surfaceInterpolationScheme<TYPE>::addMeshConstructorToTable                   \
+<PureUpwindFitScheme<TYPE, POLYNOMIAL, STENCIL> >                                 \
+    add##SS##STENCIL##TYPE##MeshConstructorToTable_;                          \
+                                                                              \
+surfaceInterpolationScheme<TYPE>::addMeshFluxConstructorToTable               \
+<PureUpwindFitScheme<TYPE, POLYNOMIAL, STENCIL> >                                 \
+    add##SS##STENCIL##TYPE##MeshFluxConstructorToTable_;
+
+#define makePureUpwindFitSurfaceInterpolationScheme(SS, POLYNOMIAL, STENCIL)      \
+                                                                              \
+makePureUpwindFitSurfaceInterpolationTypeScheme(SS,POLYNOMIAL,STENCIL,scalar)     \
+makePureUpwindFitSurfaceInterpolationTypeScheme(SS,POLYNOMIAL,STENCIL,vector)     \
+makePureUpwindFitSurfaceInterpolationTypeScheme(SS,POLYNOMIAL,STENCIL,sphericalTensor) \
+makePureUpwindFitSurfaceInterpolationTypeScheme(SS,POLYNOMIAL,STENCIL,symmTensor) \
+makePureUpwindFitSurfaceInterpolationTypeScheme(SS,POLYNOMIAL,STENCIL,tensor)
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/interpolation/surfaceInterpolation/schemes/UpwindFitScheme/UpwindFitData.C b/src/finiteVolume/interpolation/surfaceInterpolation/schemes/UpwindFitScheme/UpwindFitData.C
index 6f0ea20e1b1063e70ccaf04568ca6b4181d3e5cf..cd7a206ba50048779468aaf50a9b350e0c4a910a 100644
--- a/src/finiteVolume/interpolation/surfaceInterpolation/schemes/UpwindFitScheme/UpwindFitData.C
+++ b/src/finiteVolume/interpolation/surfaceInterpolation/schemes/UpwindFitScheme/UpwindFitData.C
@@ -29,7 +29,7 @@ License
 #include "volFields.H"
 #include "SVD.H"
 #include "syncTools.H"
-#include "extendedUpwindStencil.H"
+#include "extendedUpwindCellToFaceStencil.H"
 
 // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
 
@@ -37,14 +37,20 @@ template<class Polynomial>
 Foam::UpwindFitData<Polynomial>::UpwindFitData
 (
     const fvMesh& mesh,
-    const extendedUpwindStencil& stencil,
+    const extendedUpwindCellToFaceStencil& stencil,
+    const bool linearCorrection,
     const scalar linearLimitFactor,
     const scalar centralWeight
 )
 :
-    FitData<UpwindFitData<Polynomial>, extendedUpwindStencil, Polynomial>
+    FitData
+    <
+        UpwindFitData<Polynomial>,
+        extendedUpwindCellToFaceStencil,
+        Polynomial
+    >
     (
-        mesh, stencil, linearLimitFactor, centralWeight
+        mesh, stencil, linearCorrection, linearLimitFactor, centralWeight
     ),
     owncoeffs_(mesh.nFaces()),
     neicoeffs_(mesh.nFaces())
@@ -72,40 +78,103 @@ void Foam::UpwindFitData<Polynomial>::calcFit()
 {
     const fvMesh& mesh = this->mesh();
 
+    const surfaceScalarField& w = mesh.surfaceInterpolation::weights();
+    const surfaceScalarField::GeometricBoundaryField& bw = w.boundaryField();
+
+    // Owner stencil weights
+    // ~~~~~~~~~~~~~~~~~~~~~
+
     // Get the cell/face centres in stencil order.
-    // Upwind face stencils no good for triangles or tets.
-    // Need bigger stencils
-    List<List<point> > ownStencilPoints(mesh.nFaces());
+    List<List<point> > stencilPoints(mesh.nFaces());
     this->stencil().collectData
     (
         this->stencil().ownMap(),
         this->stencil().ownStencil(),
         mesh.C(),
-        ownStencilPoints
+        stencilPoints
     );
-    List<List<point> > neiStencilPoints(mesh.nFaces());
+
+    // find the fit coefficients for every owner
+
+    //Pout<< "-- Owner --" << endl;
+    for(label facei = 0; facei < mesh.nInternalFaces(); facei++)
+    {
+        FitData
+        <
+            UpwindFitData<Polynomial>,
+            extendedUpwindCellToFaceStencil,
+            Polynomial
+        >::calcFit(owncoeffs_[facei], stencilPoints[facei], w[facei], facei);
+
+        //Pout<< "    facei:" << facei
+        //    << " at:" << mesh.faceCentres()[facei] << endl;
+        //forAll(owncoeffs_[facei], i)
+        //{
+        //    Pout<< "    point:" << stencilPoints[facei][i]
+        //        << "\tweight:" << owncoeffs_[facei][i]
+        //        << endl;
+        //}
+    }
+
+    forAll(bw, patchi)
+    {
+        const fvsPatchScalarField& pw = bw[patchi];
+
+        if (pw.coupled())
+        {
+            label facei = pw.patch().patch().start();
+
+            forAll(pw, i)
+            {
+                FitData
+                <
+                    UpwindFitData<Polynomial>,
+                    extendedUpwindCellToFaceStencil,
+                    Polynomial
+                >::calcFit
+                (
+                    owncoeffs_[facei], stencilPoints[facei], pw[i], facei
+                );
+                facei++;
+            }
+        }
+    }
+
+
+    // Neighbour stencil weights
+    // ~~~~~~~~~~~~~~~~~~~~~~~~~
+
+    // Note:reuse stencilPoints since is major storage
     this->stencil().collectData
     (
         this->stencil().neiMap(),
         this->stencil().neiStencil(),
         mesh.C(),
-        neiStencilPoints
+        stencilPoints
     );
 
-    // find the fit coefficients for every owner and neighbour of ever face
-
-    const surfaceScalarField& w = mesh.surfaceInterpolation::weights();
+    // find the fit coefficients for every neighbour
 
+    //Pout<< "-- Neighbour --" << endl;
     for(label facei = 0; facei < mesh.nInternalFaces(); facei++)
     {
-        FitData<UpwindFitData<Polynomial>, extendedUpwindStencil, Polynomial>::
-           calcFit(owncoeffs_[facei], ownStencilPoints[facei], w[facei], facei);
-        FitData<UpwindFitData<Polynomial>, extendedUpwindStencil, Polynomial>::
-           calcFit(neicoeffs_[facei], neiStencilPoints[facei], w[facei], facei);
+        FitData
+        <
+            UpwindFitData<Polynomial>,
+            extendedUpwindCellToFaceStencil,
+            Polynomial
+        >::calcFit(neicoeffs_[facei], stencilPoints[facei], w[facei], facei);
+
+        //Pout<< "    facei:" << facei
+        //    << " at:" << mesh.faceCentres()[facei] << endl;
+        //forAll(neicoeffs_[facei], i)
+        //{
+        //    Pout<< "    point:" << stencilPoints[facei][i]
+        //        << "\tweight:" << neicoeffs_[facei][i]
+        //        << endl;
+        //}
     }
 
-    const surfaceScalarField::GeometricBoundaryField& bw = w.boundaryField();
-
     forAll(bw, patchi)
     {
         const fvsPatchScalarField& pw = bw[patchi];
@@ -118,17 +187,12 @@ void Foam::UpwindFitData<Polynomial>::calcFit()
             {
                 FitData
                 <
-                    UpwindFitData<Polynomial>, extendedUpwindStencil, Polynomial
-                >::calcFit
-                (
-                    owncoeffs_[facei], ownStencilPoints[facei], pw[i], facei
-                );
-                FitData
-                <
-                    UpwindFitData<Polynomial>, extendedUpwindStencil, Polynomial
+                    UpwindFitData<Polynomial>,
+                    extendedUpwindCellToFaceStencil,
+                    Polynomial
                 >::calcFit
                 (
-                    neicoeffs_[facei], neiStencilPoints[facei], pw[i], facei
+                    neicoeffs_[facei], stencilPoints[facei], pw[i], facei
                 );
                 facei++;
             }
diff --git a/src/finiteVolume/interpolation/surfaceInterpolation/schemes/UpwindFitScheme/UpwindFitData.H b/src/finiteVolume/interpolation/surfaceInterpolation/schemes/UpwindFitScheme/UpwindFitData.H
index de0636c4d393a6f21e1bc3f39e18c890434bf951..a62a3002c3242d6d6bbccf67a61bf6caf89d71b8 100644
--- a/src/finiteVolume/interpolation/surfaceInterpolation/schemes/UpwindFitScheme/UpwindFitData.H
+++ b/src/finiteVolume/interpolation/surfaceInterpolation/schemes/UpwindFitScheme/UpwindFitData.H
@@ -27,7 +27,9 @@ Class
 
 Description
     Data for the quadratic fit correction interpolation scheme to be used with
-    upwind biased stencil
+    upwind biased stencil.
+    - linearCorrection = true : fit calculated for corrected linear scheme
+    - linearCorrection = false : fit calculated for corrected upwind scheme
 
 SourceFiles
     UpwindFitData.C
@@ -44,7 +46,7 @@ SourceFiles
 namespace Foam
 {
 
-class extendedUpwindStencil;
+class extendedUpwindCellToFaceStencil;
 
 /*---------------------------------------------------------------------------*\
                     Class UpwindFitData Declaration
@@ -53,7 +55,12 @@ class extendedUpwindStencil;
 template<class Polynomial>
 class UpwindFitData
 :
-    public FitData<UpwindFitData<Polynomial>, extendedUpwindStencil, Polynomial>
+    public FitData
+    <
+        UpwindFitData<Polynomial>,
+        extendedUpwindCellToFaceStencil,
+        Polynomial
+    >
 {
     // Private data
 
@@ -84,7 +91,8 @@ public:
         UpwindFitData
         (
             const fvMesh& mesh,
-            const extendedUpwindStencil& stencil,
+            const extendedUpwindCellToFaceStencil& stencil,
+            const bool linearCorrection,
             const scalar linearLimitFactor,
             const scalar centralWeight
         );
diff --git a/src/finiteVolume/interpolation/surfaceInterpolation/schemes/UpwindFitScheme/UpwindFitScheme.H b/src/finiteVolume/interpolation/surfaceInterpolation/schemes/UpwindFitScheme/UpwindFitScheme.H
index 30444aafa4bb8e11ca10eb21e3911bab51457fb7..46fe3fe1ba08aa66c7fbd4c95ae2af94cbd9fe5c 100644
--- a/src/finiteVolume/interpolation/surfaceInterpolation/schemes/UpwindFitScheme/UpwindFitScheme.H
+++ b/src/finiteVolume/interpolation/surfaceInterpolation/schemes/UpwindFitScheme/UpwindFitScheme.H
@@ -126,9 +126,10 @@ public:
         {
             const fvMesh& mesh = this->mesh();
 
-            const extendedUpwindStencil& stencil = Stencil::New
+            const extendedUpwindCellToFaceStencil& stencil = Stencil::New
             (
                 mesh,
+                false,          //pureUpwind
                 scalar(0.5)
             );
 
@@ -137,6 +138,7 @@ public:
             (
                 mesh,
                 stencil,
+                true,           //calculate as offset to linear
                 linearLimitFactor_,
                 centralWeight_
             );
diff --git a/src/finiteVolume/interpolation/surfaceInterpolation/schemes/biLinearFit/biLinearFit.C b/src/finiteVolume/interpolation/surfaceInterpolation/schemes/biLinearFit/biLinearFit.C
index 0ff394ff82a14c68ebba0a74bb271c76ae1d6cbb..b80d70f065b92a17fc2d44ded85177ded497efef 100644
--- a/src/finiteVolume/interpolation/surfaceInterpolation/schemes/biLinearFit/biLinearFit.C
+++ b/src/finiteVolume/interpolation/surfaceInterpolation/schemes/biLinearFit/biLinearFit.C
@@ -26,7 +26,7 @@ License
 
 #include "CentredFitScheme.H"
 #include "biLinearFitPolynomial.H"
-#include "centredCFCStencilObject.H"
+#include "centredCFCCellToFaceStencilObject.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -42,7 +42,7 @@ namespace Foam
     (
         biLinearFit,
         biLinearFitPolynomial,
-        centredCFCStencilObject
+        centredCFCCellToFaceStencilObject
     );
 }
 
diff --git a/src/finiteVolume/interpolation/surfaceInterpolation/schemes/cubicUpwindFit/cubicUpwindFit.C b/src/finiteVolume/interpolation/surfaceInterpolation/schemes/cubicUpwindFit/cubicUpwindFit.C
index 02b3a332f00659186a0172f2f326efb5e9f77832..7d588649ebaa8bef927ee3b86da860612ca4001c 100644
--- a/src/finiteVolume/interpolation/surfaceInterpolation/schemes/cubicUpwindFit/cubicUpwindFit.C
+++ b/src/finiteVolume/interpolation/surfaceInterpolation/schemes/cubicUpwindFit/cubicUpwindFit.C
@@ -26,7 +26,7 @@ License
 
 #include "UpwindFitScheme.H"
 #include "cubicUpwindFitPolynomial.H"
-#include "upwindCFCStencilObject.H"
+#include "upwindCFCCellToFaceStencilObject.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -42,7 +42,7 @@ namespace Foam
     (
         cubicUpwindFit,
         cubicUpwindFitPolynomial,
-        upwindCFCStencilObject
+        upwindCFCCellToFaceStencilObject
     );
 }
 
diff --git a/src/finiteVolume/interpolation/surfaceInterpolation/schemes/linearFit/linearFit.C b/src/finiteVolume/interpolation/surfaceInterpolation/schemes/linearFit/linearFit.C
index 6362a7b7ae0b83de0c43640f37a21332bc298675..71a64fd14061b7dd21c4ffad31fc1af501b511e3 100644
--- a/src/finiteVolume/interpolation/surfaceInterpolation/schemes/linearFit/linearFit.C
+++ b/src/finiteVolume/interpolation/surfaceInterpolation/schemes/linearFit/linearFit.C
@@ -26,7 +26,7 @@ License
 
 #include "CentredFitScheme.H"
 #include "linearFitPolynomial.H"
-#include "centredCFCStencilObject.H"
+#include "centredCFCCellToFaceStencilObject.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -42,7 +42,7 @@ namespace Foam
     (
         linearFit,
         linearFitPolynomial,
-        centredCFCStencilObject
+        centredCFCCellToFaceStencilObject
     );
 }
 
diff --git a/applications/test/ptrList/ptrListTest.C b/src/finiteVolume/interpolation/surfaceInterpolation/schemes/linearPureUpwindFit/linearPureUpwindFit.C
similarity index 77%
rename from applications/test/ptrList/ptrListTest.C
rename to src/finiteVolume/interpolation/surfaceInterpolation/schemes/linearPureUpwindFit/linearPureUpwindFit.C
index 7b2f6722bcc637a1c63d4ae42834a8075062f077..28aa8e7434b919bb8089e6d56431ee35b948a167 100644
--- a/applications/test/ptrList/ptrListTest.C
+++ b/src/finiteVolume/interpolation/surfaceInterpolation/schemes/linearPureUpwindFit/linearPureUpwindFit.C
@@ -24,37 +24,26 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "PtrList.H"
-#include "scalar.H"
-
-using namespace Foam;
+#include "PureUpwindFitScheme.H"
+#include "linearFitPolynomial.H"
+#include "pureUpwindCFCCellToFaceStencilObject.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-//  Main program:
 
-int main(int argc, char *argv[])
+namespace Foam
 {
-    PtrList<scalar> list(10);
-
-    forAll(list, i)
-    {
-        list.set(i, new scalar(i));
-    }
-
-    for
+    defineTemplateTypeNameAndDebug
     (
-        PtrList<scalar>::iterator iter = list.begin();
-        iter != list.end();
-        ++iter
-    )
-    {
-        Info<< *iter << endl;
-    }
+        UpwindFitData<linearFitPolynomial>,
+        0
+    );
 
-    Info<< list << endl;
-
-    return 0;
+    makePureUpwindFitSurfaceInterpolationScheme
+    (
+        linearPureUpwindFit,
+        linearFitPolynomial,
+        pureUpwindCFCCellToFaceStencilObject
+    );
 }
 
-
 // ************************************************************************* //
diff --git a/src/finiteVolume/interpolation/surfaceInterpolation/schemes/quadraticFit/quadraticFit.C b/src/finiteVolume/interpolation/surfaceInterpolation/schemes/quadraticFit/quadraticFit.C
index 7d84fd4887d9d5724767645a43c6eb9c6ddd3869..296de91b76375027aa638c9d5d3132d5fcb1980e 100644
--- a/src/finiteVolume/interpolation/surfaceInterpolation/schemes/quadraticFit/quadraticFit.C
+++ b/src/finiteVolume/interpolation/surfaceInterpolation/schemes/quadraticFit/quadraticFit.C
@@ -26,7 +26,7 @@ License
 
 #include "CentredFitScheme.H"
 #include "quadraticFitPolynomial.H"
-#include "centredCFCStencilObject.H"
+#include "centredCFCCellToFaceStencilObject.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -42,7 +42,7 @@ namespace Foam
     (
         quadraticFit,
         quadraticFitPolynomial,
-        centredCFCStencilObject
+        centredCFCCellToFaceStencilObject
     );
 }
 
diff --git a/src/finiteVolume/interpolation/surfaceInterpolation/schemes/quadraticLinearFit/quadraticLinearFit.C b/src/finiteVolume/interpolation/surfaceInterpolation/schemes/quadraticLinearFit/quadraticLinearFit.C
index 8660cae93ad9df8dc05872a1f401d476b256a111..8c0911f4add5784b5991fcd9341794f6e8f842e5 100644
--- a/src/finiteVolume/interpolation/surfaceInterpolation/schemes/quadraticLinearFit/quadraticLinearFit.C
+++ b/src/finiteVolume/interpolation/surfaceInterpolation/schemes/quadraticLinearFit/quadraticLinearFit.C
@@ -26,7 +26,7 @@ License
 
 #include "CentredFitScheme.H"
 #include "quadraticLinearFitPolynomial.H"
-#include "centredCFCStencilObject.H"
+#include "centredCFCCellToFaceStencilObject.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -42,7 +42,7 @@ namespace Foam
     (
         quadraticLinearFit,
         quadraticLinearFitPolynomial,
-        centredCFCStencilObject
+        centredCFCCellToFaceStencilObject
     );
 }
 
diff --git a/src/finiteVolume/interpolation/surfaceInterpolation/schemes/quadraticLinearPureUpwindFit/quadraticLinearPureUpwindFit.C b/src/finiteVolume/interpolation/surfaceInterpolation/schemes/quadraticLinearPureUpwindFit/quadraticLinearPureUpwindFit.C
new file mode 100644
index 0000000000000000000000000000000000000000..513de347d75624f42be5b7ec6785d5e2246b4250
--- /dev/null
+++ b/src/finiteVolume/interpolation/surfaceInterpolation/schemes/quadraticLinearPureUpwindFit/quadraticLinearPureUpwindFit.C
@@ -0,0 +1,45 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "PureUpwindFitScheme.H"
+#include "quadraticLinearUpwindFitPolynomial.H"
+#include "upwindCFCCellToFaceStencilObject.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    // Use stencil with three upwind cells:
+    // upwindCFCCellToFaceStencilObject + pureUpwind
+    makePureUpwindFitSurfaceInterpolationScheme
+    (
+        quadraticLinearPureUpwindFit,
+        quadraticLinearUpwindFitPolynomial,
+        upwindCFCCellToFaceStencilObject
+    );
+}
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/interpolation/surfaceInterpolation/schemes/quadraticLinearUpwindFit/quadraticLinearUpwindFit.C b/src/finiteVolume/interpolation/surfaceInterpolation/schemes/quadraticLinearUpwindFit/quadraticLinearUpwindFit.C
index ca0da7d9da0d322c13daec461006f8917e36c81d..d89107ab71e3fec4f73dbe8f0717cb4c65336e31 100644
--- a/src/finiteVolume/interpolation/surfaceInterpolation/schemes/quadraticLinearUpwindFit/quadraticLinearUpwindFit.C
+++ b/src/finiteVolume/interpolation/surfaceInterpolation/schemes/quadraticLinearUpwindFit/quadraticLinearUpwindFit.C
@@ -26,7 +26,7 @@ License
 
 #include "UpwindFitScheme.H"
 #include "quadraticLinearUpwindFitPolynomial.H"
-#include "upwindCFCStencilObject.H"
+#include "upwindFECCellToFaceStencilObject.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -42,7 +42,7 @@ namespace Foam
     (
         quadraticLinearUpwindFit,
         quadraticLinearUpwindFitPolynomial,
-        upwindCFCStencilObject
+        upwindFECCellToFaceStencilObject
     );
 }
 
diff --git a/src/finiteVolume/interpolation/surfaceInterpolation/schemes/quadraticUpwindFit/quadraticUpwindFit.C b/src/finiteVolume/interpolation/surfaceInterpolation/schemes/quadraticUpwindFit/quadraticUpwindFit.C
index e0e003906e603e2bc071679d5a68c0a1661a18a4..88ccc2971b887431b049c0261f95f8658a0a8a7b 100644
--- a/src/finiteVolume/interpolation/surfaceInterpolation/schemes/quadraticUpwindFit/quadraticUpwindFit.C
+++ b/src/finiteVolume/interpolation/surfaceInterpolation/schemes/quadraticUpwindFit/quadraticUpwindFit.C
@@ -26,7 +26,7 @@ License
 
 #include "UpwindFitScheme.H"
 #include "quadraticUpwindFitPolynomial.H"
-#include "upwindFECStencilObject.H"
+#include "upwindFECCellToFaceStencilObject.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -42,7 +42,7 @@ namespace Foam
     (
         quadraticUpwindFit,
         quadraticUpwindFitPolynomial,
-        upwindFECStencilObject
+        upwindFECCellToFaceStencilObject
     );
 }
 
diff --git a/src/fvAgglomerationMethods/MGridGenGamgAgglomeration/Make/options b/src/fvAgglomerationMethods/MGridGenGamgAgglomeration/Make/options
index bc278a29cb245bdfa2021b8ed4ee7ebf0eb3d0da..26c2b8abfbc8e6badc58d08bd78c6c53e49a1438 100644
--- a/src/fvAgglomerationMethods/MGridGenGamgAgglomeration/Make/options
+++ b/src/fvAgglomerationMethods/MGridGenGamgAgglomeration/Make/options
@@ -1,7 +1,7 @@
 ParMGridGen = $(WM_THIRD_PARTY_DIR)/ParMGridGen-1.0
 
 TYPE_REAL=
-#if defined(SP)
+#if defined(WM_SP)
 TYPE_REAL=-DTYPE_REAL
 #endif
 
diff --git a/src/fvMotionSolver/Make/files b/src/fvMotionSolver/Make/files
index 41f31c0ecc79dd3972e667e08041002a0e9099ae..f229ae322ef04b4bf61dd4bb0eb336fed3764e48 100644
--- a/src/fvMotionSolver/Make/files
+++ b/src/fvMotionSolver/Make/files
@@ -30,5 +30,6 @@ pointPatchFields/derived/angularOscillatingVelocity/angularOscillatingVelocityPo
 pointPatchFields/derived/oscillatingDisplacement/oscillatingDisplacementPointPatchVectorField.C
 pointPatchFields/derived/angularOscillatingDisplacement/angularOscillatingDisplacementPointPatchVectorField.C
 pointPatchFields/derived/surfaceSlipDisplacement/surfaceSlipDisplacementPointPatchVectorField.C
+pointPatchFields/derived/surfaceDisplacement/surfaceDisplacementPointPatchVectorField.C
 
 LIB = $(FOAM_LIBBIN)/libfvMotionSolvers
diff --git a/src/fvMotionSolver/pointPatchFields/derived/surfaceDisplacement/surfaceDisplacementPointPatchVectorField.C b/src/fvMotionSolver/pointPatchFields/derived/surfaceDisplacement/surfaceDisplacementPointPatchVectorField.C
new file mode 100644
index 0000000000000000000000000000000000000000..bbafb189faa97eba4faea0aa5e69ad1d163e70fd
--- /dev/null
+++ b/src/fvMotionSolver/pointPatchFields/derived/surfaceDisplacement/surfaceDisplacementPointPatchVectorField.C
@@ -0,0 +1,514 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2007 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "surfaceDisplacementPointPatchVectorField.H"
+#include "addToRunTimeSelectionTable.H"
+#include "Time.H"
+#include "transformField.H"
+#include "fvMesh.H"
+#include "displacementLaplacianFvMotionSolver.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+template<>
+const char*
+NamedEnum<surfaceDisplacementPointPatchVectorField::projectMode, 3>::
+names[] =
+{
+    "nearest",
+    "pointNormal",
+    "fixedNormal"
+};
+
+const NamedEnum<surfaceDisplacementPointPatchVectorField::projectMode, 3>
+    surfaceDisplacementPointPatchVectorField::projectModeNames_;
+
+
+// * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
+
+void surfaceDisplacementPointPatchVectorField::calcProjection
+(
+    vectorField& displacement
+) const
+{
+    const polyMesh& mesh = patch().boundaryMesh().mesh()();
+    const pointField& localPoints = patch().localPoints();
+    const labelList& meshPoints = patch().meshPoints();
+
+    //const scalar deltaT = mesh.time().deltaT().value();
+
+    // Construct large enough vector in direction of projectDir so
+    // we're guaranteed to hit something.
+
+    //- Per point projection vector:
+    const scalar projectLen = mag(mesh.bounds().max()-mesh.bounds().min());
+
+    // For case of fixed projection vector:
+    vector projectVec;
+    if (projectMode_ == FIXEDNORMAL)
+    {
+        vector n = projectDir_/mag(projectDir_);
+        projectVec = projectLen*n;
+    }
+
+
+    // Get fixed points (bit of a hack)
+    const pointZone* zonePtr = NULL;
+
+    if (frozenPointsZone_.size() > 0)
+    {
+        const pointZoneMesh& pZones = mesh.pointZones();
+
+        zonePtr = &pZones[pZones.findZoneID(frozenPointsZone_)];
+
+        Pout<< "surfaceDisplacementPointPatchVectorField : Fixing all "
+            << zonePtr->size() << " points in pointZone " << zonePtr->name()
+            << endl;
+    }
+
+    // Get the starting locations from the motionSolver
+    const pointField& points0 = mesh.lookupObject<displacementFvMotionSolver>
+    (
+        "dynamicMeshDict"
+    ).points0();
+
+
+    pointField start(meshPoints.size());
+    forAll(start, i)
+    {
+        start[i] = points0[meshPoints[i]] + displacement[i];
+    }
+
+    label nNotProjected = 0;
+
+    if (projectMode_ == NEAREST)
+    {
+        List<pointIndexHit> nearest;
+        labelList hitSurfaces;
+        surfaces().findNearest
+        (
+            start,
+            scalarField(start.size(), sqr(projectLen)),
+            hitSurfaces,
+            nearest
+        );
+
+        forAll(nearest, i)
+        {
+            if (zonePtr && (zonePtr->whichPoint(meshPoints[i]) >= 0))
+            {
+                // Fixed point. Reset to point0 location.
+                displacement[i] = points0[meshPoints[i]] - localPoints[i];
+            }
+            else if (nearest[i].hit())
+            {
+                displacement[i] =
+                    nearest[i].hitPoint()
+                  - points0[meshPoints[i]];
+            }
+            else
+            {
+                nNotProjected++;
+
+                if (debug)
+                {
+                    Pout<< "    point:" << meshPoints[i]
+                        << " coord:" << localPoints[i]
+                        << "  did not find any surface within " << projectLen
+                        << endl;
+                }
+            }
+        }
+    }
+    else
+    {
+        // Do tests on all points. Combine later on.
+
+        // 1. Check if already on surface
+        List<pointIndexHit> nearest;
+        {
+            labelList nearestSurface;
+            surfaces().findNearest
+            (
+                start,
+                scalarField(start.size(), sqr(SMALL)),
+                nearestSurface,
+                nearest
+            );
+        }
+
+        // 2. intersection. (combined later on with information from nearest
+        // above)
+        vectorField projectVecs(start.size(), projectVec);
+
+        if (projectMode_ == POINTNORMAL)
+        {
+            projectVecs = projectLen*patch().pointNormals();
+        }
+
+        // Knock out any wedge component
+        scalarField offset(start.size(), 0.0);
+        if (wedgePlane_ >= 0 && wedgePlane_ <= vector::nComponents)
+        {
+            forAll(offset, i)
+            {
+                offset[i] = start[i][wedgePlane_];
+                start[i][wedgePlane_] = 0;
+                projectVecs[i][wedgePlane_] = 0;
+            }
+        }
+
+        List<pointIndexHit> rightHit;
+        {
+            labelList rightSurf;
+            surfaces().findAnyIntersection
+            (
+                start,
+                start+projectVecs,
+                rightSurf,
+                rightHit
+            );
+        }
+        
+        List<pointIndexHit> leftHit;
+        {
+            labelList leftSurf;
+            surfaces().findAnyIntersection
+            (
+                start,
+                start-projectVecs,
+                leftSurf,
+                leftHit
+            );
+        }
+
+        // 3. Choose either -fixed, nearest, right, left.
+        forAll(displacement, i)
+        {
+            if (zonePtr && (zonePtr->whichPoint(meshPoints[i]) >= 0))
+            {
+                // Fixed point. Reset to point0 location.
+                displacement[i] = points0[meshPoints[i]] - localPoints[i];
+            }
+            else if (nearest[i].hit())
+            {
+                // Found nearest.
+                displacement[i] =
+                    nearest[i].hitPoint()
+                  - points0[meshPoints[i]];
+            }
+            else
+            {
+                pointIndexHit interPt;
+
+                if (rightHit[i].hit())
+                {
+                    if (leftHit[i].hit())
+                    {
+                        if
+                        (
+                            magSqr(rightHit[i].hitPoint()-start[i])
+                          < magSqr(leftHit[i].hitPoint()-start[i])
+                        )
+                        {
+                            interPt = rightHit[i];
+                        }
+                        else
+                        {
+                            interPt = leftHit[i];
+                        }
+                    }
+                    else
+                    {
+                        interPt = rightHit[i];
+                    }
+                }
+                else
+                {
+                    if (leftHit[i].hit())
+                    {
+                        interPt = leftHit[i];
+                    }
+                }
+
+
+                if (interPt.hit())
+                {
+                    if (wedgePlane_ >= 0 && wedgePlane_ <= vector::nComponents)
+                    {
+                        interPt.rawPoint()[wedgePlane_] += offset[i];
+                    }
+                    displacement[i] = interPt.rawPoint()-points0[meshPoints[i]];
+                }
+                else
+                {
+                    nNotProjected++;
+
+                    if (debug)
+                    {
+                        Pout<< "    point:" << meshPoints[i]
+                            << " coord:" << localPoints[i]
+                            << "  did not find any intersection between"
+                            << " ray from " << start[i]-projectVecs[i]
+                            << " to " << start[i]+projectVecs[i] << endl;
+                    }
+                }
+            }
+        }
+    }
+
+    reduce(nNotProjected, sumOp<label>());
+
+    if (nNotProjected > 0)
+    {
+        Info<< "surfaceDisplacement :"
+            << " on patch " << patch().name()
+            << " did not project " << nNotProjected
+            << " out of " << returnReduce(localPoints.size(), sumOp<label>())
+            << " points." << endl;
+    }
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+surfaceDisplacementPointPatchVectorField::
+surfaceDisplacementPointPatchVectorField
+(
+    const pointPatch& p,
+    const DimensionedField<vector, pointMesh>& iF
+)
+:
+    fixedValuePointPatchVectorField(p, iF),
+    velocity_(vector::zero),
+    projectMode_(NEAREST),
+    projectDir_(vector::zero),
+    wedgePlane_(-1)
+{}
+
+
+surfaceDisplacementPointPatchVectorField::
+surfaceDisplacementPointPatchVectorField
+(
+    const pointPatch& p,
+    const DimensionedField<vector, pointMesh>& iF,
+    const dictionary& dict
+)
+:
+    fixedValuePointPatchVectorField(p, iF, dict),
+    velocity_(dict.lookup("velocity")),
+    surfacesDict_(dict.subDict("geometry")),
+    projectMode_(projectModeNames_.read(dict.lookup("projectMode"))),
+    projectDir_(dict.lookup("projectDirection")),
+    wedgePlane_(readLabel(dict.lookup("wedgePlane"))),
+    frozenPointsZone_(dict.lookupOrDefault("frozenPointsZone", word::null))
+{
+    if (velocity_.x() < 0 || velocity_.y() < 0 || velocity_.z() < 0)
+    {
+        FatalErrorIn
+        (
+            "surfaceDisplacementPointPatchVectorField::\n"
+            "surfaceDisplacementPointPatchVectorField\n"
+            "(\n"
+            "    const pointPatch& p,\n"
+            "    const DimensionedField<vector, pointMesh>& iF,\n"
+            "    const dictionary& dict\n"
+            ")\n"
+        )   << "All components of velocity have to be positive : "
+            << velocity_ << nl
+            << "Set velocity components to a great value if no clipping"
+            << " necessary." << exit(FatalError);
+    }
+}
+
+
+surfaceDisplacementPointPatchVectorField::
+surfaceDisplacementPointPatchVectorField
+(
+    const surfaceDisplacementPointPatchVectorField& ppf,
+    const pointPatch& p,
+    const DimensionedField<vector, pointMesh>& iF,
+    const pointPatchFieldMapper& mapper
+)
+:
+    fixedValuePointPatchVectorField(ppf, p, iF, mapper),
+    velocity_(ppf.velocity_),
+    surfacesDict_(ppf.surfacesDict_),
+    projectMode_(ppf.projectMode_),
+    projectDir_(ppf.projectDir_),
+    wedgePlane_(ppf.wedgePlane_),
+    frozenPointsZone_(ppf.frozenPointsZone_)
+{}
+
+
+surfaceDisplacementPointPatchVectorField::
+surfaceDisplacementPointPatchVectorField
+(
+    const surfaceDisplacementPointPatchVectorField& ppf
+)
+:
+    fixedValuePointPatchVectorField(ppf),
+    velocity_(ppf.velocity_),
+    surfacesDict_(ppf.surfacesDict_),
+    projectMode_(ppf.projectMode_),
+    projectDir_(ppf.projectDir_),
+    wedgePlane_(ppf.wedgePlane_),
+    frozenPointsZone_(ppf.frozenPointsZone_)
+{}
+
+
+surfaceDisplacementPointPatchVectorField::
+surfaceDisplacementPointPatchVectorField
+(
+    const surfaceDisplacementPointPatchVectorField& ppf,
+    const DimensionedField<vector, pointMesh>& iF
+)
+:
+    fixedValuePointPatchVectorField(ppf, iF),
+    velocity_(ppf.velocity_),
+    surfacesDict_(ppf.surfacesDict_),
+    projectMode_(ppf.projectMode_),
+    projectDir_(ppf.projectDir_),
+    wedgePlane_(ppf.wedgePlane_),
+    frozenPointsZone_(ppf.frozenPointsZone_)
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+const searchableSurfaces&
+surfaceDisplacementPointPatchVectorField::surfaces() const
+{
+    if (surfacesPtr_.empty())
+    {
+        surfacesPtr_.reset
+        (
+            new searchableSurfaces
+            (
+                IOobject
+                (
+                    "abc",                              // dummy name
+                    db().time().constant(),             // directory
+                    "triSurface",                       // instance
+                    db().time(),                        // registry
+                    IOobject::MUST_READ,
+                    IOobject::NO_WRITE
+                ),
+                surfacesDict_
+            )
+        );
+    }
+    return surfacesPtr_();
+}
+
+
+void surfaceDisplacementPointPatchVectorField::updateCoeffs()
+{
+    if (this->updated())
+    {
+        return;
+    }
+
+    const polyMesh& mesh = patch().boundaryMesh().mesh()();
+
+    vectorField currentDisplacement = this->patchInternalField();
+
+    // Calculate intersections with surface w.r.t points0.
+    vectorField displacement(currentDisplacement);
+    calcProjection(displacement);
+
+    // offset wrt current displacement
+    vectorField offset = displacement-currentDisplacement;
+
+    // Clip offset to maximum displacement possible: velocity*timestep
+
+    const scalar deltaT = mesh.time().deltaT().value();
+    const vector clipVelocity = velocity_*deltaT;
+
+    forAll(displacement, i)
+    {
+        vector& d = offset[i];
+
+        for (direction cmpt = 0; cmpt < vector::nComponents; cmpt++)
+        {
+            if (d[cmpt] < 0)
+            {
+                d[cmpt] = max(d[cmpt], -clipVelocity[cmpt]);
+            }
+            else
+            {
+                d[cmpt] = min(d[cmpt], clipVelocity[cmpt]);
+            }
+        }
+    }
+
+    this->operator==(currentDisplacement+offset);
+
+    fixedValuePointPatchVectorField::updateCoeffs();
+}
+
+
+void surfaceDisplacementPointPatchVectorField::write(Ostream& os) const
+{
+    fixedValuePointPatchVectorField::write(os);
+    os.writeKeyword("velocity") << velocity_
+        << token::END_STATEMENT << nl;
+    os.writeKeyword("geometry") << surfacesDict_
+        << token::END_STATEMENT << nl;
+    os.writeKeyword("projectMode") << projectModeNames_[projectMode_]
+        << token::END_STATEMENT << nl;
+    os.writeKeyword("projectDirection") << projectDir_
+        << token::END_STATEMENT << nl;
+    os.writeKeyword("wedgePlane") << wedgePlane_
+        << token::END_STATEMENT << nl;
+    if (frozenPointsZone_ != word::null)
+    {
+        os.writeKeyword("frozenPointsZone") << frozenPointsZone_
+            << token::END_STATEMENT << nl;
+    }
+}
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+makePointPatchTypeField
+(
+    fixedValuePointPatchVectorField,
+    surfaceDisplacementPointPatchVectorField
+);
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// ************************************************************************* //
diff --git a/src/fvMotionSolver/pointPatchFields/derived/surfaceDisplacement/surfaceDisplacementPointPatchVectorField.H b/src/fvMotionSolver/pointPatchFields/derived/surfaceDisplacement/surfaceDisplacementPointPatchVectorField.H
new file mode 100644
index 0000000000000000000000000000000000000000..7b3ecd7c2ff4437b825b1b17238ce0ba2cc6c10f
--- /dev/null
+++ b/src/fvMotionSolver/pointPatchFields/derived/surfaceDisplacement/surfaceDisplacementPointPatchVectorField.H
@@ -0,0 +1,223 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2007 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    surfaceDisplacementPointPatchVectorField
+
+Description
+    Displacement fixed by projection onto triSurface.
+    Use in a displacement fvMotionSolver
+    as a bc on the pointDisplacement field.
+
+    Calculates the projection onto the surface according
+    to the projectMode
+    - NEAREST : nearest
+    - POINTNORMAL : intersection with point normal
+    - FIXEDNORMAL : intersection with fixed vector
+
+    This displacement is then clipped with the specified velocity * deltaT.
+
+    Optionally (intersection only) removes a component ("wedgePlane") to
+    stay in 2D.
+
+    Needs:
+    - geometry : dictionary with searchableSurfaces. (usually
+      triSurfaceMeshes in constant/triSurface)
+    - projectMode : see above
+    - projectDirection : if projectMode = fixedNormal
+    - wedgePlane : -1 or component to knock out of intersection normal
+    - frozenPointsZone : empty or name of pointZone containing points
+                         that do not move
+
+SourceFiles
+    surfaceDisplacementPointPatchVectorField.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef surfaceDisplacementPointPatchVectorField_H
+#define surfaceDisplacementPointPatchVectorField_H
+
+#include "pointPatchFields.H"
+#include "fixedValuePointPatchFields.H"
+#include "searchableSurfaces.H"
+#include "Switch.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+          Class surfaceDisplacementPointPatchVectorField Declaration
+\*---------------------------------------------------------------------------*/
+
+class surfaceDisplacementPointPatchVectorField
+:
+    public fixedValuePointPatchVectorField
+{
+
+public:
+
+    // Public data types
+
+        enum projectMode
+        {
+            NEAREST,
+            POINTNORMAL,
+            FIXEDNORMAL
+        };
+
+private:
+
+    // Private data
+
+        //- project mode names
+        static const NamedEnum<projectMode, 3> projectModeNames_;
+
+        //- Maximum velocity
+        const vector velocity_;
+
+        //- names of surfaces
+        const dictionary surfacesDict_;
+
+        //- How to project/project onto surface
+        const projectMode projectMode_;
+
+        //- direction to project
+        const vector projectDir_;
+
+        //- plane for 2D wedge case or -1.
+        const label wedgePlane_;
+
+        //- pointZone with frozen points
+        const word frozenPointsZone_;
+
+        //- Demand driven: surface to project
+        mutable autoPtr<searchableSurfaces> surfacesPtr_;
+
+
+    // Private Member Functions
+
+        //- Calculate displacement (w.r.t. points0()) to project onto surface
+        void calcProjection(vectorField& displacement) const;
+
+
+        //- Disallow default bitwise assignment
+        void operator=(const surfaceDisplacementPointPatchVectorField&);
+
+public:
+
+    //- Runtime type information
+    TypeName("surfaceDisplacement");
+
+
+    // Constructors
+
+        //- Construct from patch and internal field
+        surfaceDisplacementPointPatchVectorField
+        (
+            const pointPatch&,
+            const DimensionedField<vector, pointMesh>&
+        );
+
+        //- Construct from patch, internal field and dictionary
+        surfaceDisplacementPointPatchVectorField
+        (
+            const pointPatch&,
+            const DimensionedField<vector, pointMesh>&,
+            const dictionary&
+        );
+
+        //- Construct by mapping given patchField<vector> onto a new patch
+        surfaceDisplacementPointPatchVectorField
+        (
+            const surfaceDisplacementPointPatchVectorField&,
+            const pointPatch&,
+            const DimensionedField<vector, pointMesh>&,
+            const pointPatchFieldMapper&
+        );
+
+        //- Construct as copy
+        surfaceDisplacementPointPatchVectorField
+        (
+            const surfaceDisplacementPointPatchVectorField&
+        );
+
+        //- Construct and return a clone
+        virtual autoPtr<pointPatchVectorField> clone() const
+        {
+            return autoPtr<pointPatchVectorField>
+            (
+                new surfaceDisplacementPointPatchVectorField
+                (
+                    *this
+                )
+            );
+        }
+
+        //- Construct as copy setting internal field reference
+        surfaceDisplacementPointPatchVectorField
+        (
+            const surfaceDisplacementPointPatchVectorField&,
+            const DimensionedField<vector, pointMesh>&
+        );
+
+        //- Construct and return a clone setting internal field reference
+        virtual autoPtr<pointPatchVectorField> clone
+        (
+            const DimensionedField<vector, pointMesh>& iF
+        ) const
+        {
+            return autoPtr<pointPatchVectorField>
+            (
+                new surfaceDisplacementPointPatchVectorField
+                (
+                    *this,
+                    iF
+                )
+            );
+        }
+
+    // Member Functions
+
+        //- Surface to follow. Demand loads surfaceNames.
+        const searchableSurfaces& surfaces() const;
+
+        //- Update the coefficients associated with the patch field
+        virtual void updateCoeffs();
+
+        //- Write
+        virtual void write(Ostream&) const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/fvMotionSolver/pointPatchFields/derived/surfaceSlipDisplacement/surfaceSlipDisplacementPointPatchVectorField.C b/src/fvMotionSolver/pointPatchFields/derived/surfaceSlipDisplacement/surfaceSlipDisplacementPointPatchVectorField.C
index 8c310481d7c5ae20dfda44ff7e402437cf2f4b7a..8f37cd91abadbe0bc26a3f7a49985a961902721c 100644
--- a/src/fvMotionSolver/pointPatchFields/derived/surfaceSlipDisplacement/surfaceSlipDisplacementPointPatchVectorField.C
+++ b/src/fvMotionSolver/pointPatchFields/derived/surfaceSlipDisplacement/surfaceSlipDisplacementPointPatchVectorField.C
@@ -40,7 +40,7 @@ namespace Foam
 
 template<>
 const char*
-NamedEnum<surfaceSlipDisplacementPointPatchVectorField::followMode, 3>::
+NamedEnum<surfaceSlipDisplacementPointPatchVectorField::projectMode, 3>::
 names[] =
 {
     "nearest",
@@ -48,8 +48,8 @@ names[] =
     "fixedNormal"
 };
 
-const NamedEnum<surfaceSlipDisplacementPointPatchVectorField::followMode, 3>
-    surfaceSlipDisplacementPointPatchVectorField::followModeNames_;
+const NamedEnum<surfaceSlipDisplacementPointPatchVectorField::projectMode, 3>
+    surfaceSlipDisplacementPointPatchVectorField::projectModeNames_;
 
 
 // * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
@@ -95,12 +95,10 @@ void surfaceSlipDisplacementPointPatchVectorField::calcProjection
     }
 
     // Get the starting locations from the motionSolver
-    const displacementFvMotionSolver& motionSolver =
-        mesh.lookupObject<displacementFvMotionSolver>
-        (
-            "dynamicMeshDict"
-        );
-    const pointField& points0 = motionSolver.points0();
+    const pointField& points0 = mesh.lookupObject<displacementFvMotionSolver>
+    (
+        "dynamicMeshDict"
+    ).points0();
 
 
     pointField start(meshPoints.size());
@@ -326,7 +324,7 @@ surfaceSlipDisplacementPointPatchVectorField
 :
     pointPatchVectorField(p, iF, dict),
     surfacesDict_(dict.subDict("geometry")),
-    projectMode_(followModeNames_.read(dict.lookup("followMode"))),
+    projectMode_(projectModeNames_.read(dict.lookup("projectMode"))),
     projectDir_(dict.lookup("projectDirection")),
     wedgePlane_(readLabel(dict.lookup("wedgePlane"))),
     frozenPointsZone_(dict.lookupOrDefault("frozenPointsZone", word::null))
@@ -343,11 +341,11 @@ surfaceSlipDisplacementPointPatchVectorField
 )
 :
     pointPatchVectorField(p, iF),
-    surfacesDict_(ppf.surfacesDict()),
-    projectMode_(ppf.projectMode()),
-    projectDir_(ppf.projectDir()),
-    wedgePlane_(ppf.wedgePlane()),
-    frozenPointsZone_(ppf.frozenPointsZone())
+    surfacesDict_(ppf.surfacesDict_),
+    projectMode_(ppf.projectMode_),
+    projectDir_(ppf.projectDir_),
+    wedgePlane_(ppf.wedgePlane_),
+    frozenPointsZone_(ppf.frozenPointsZone_)
 {}
 
 
@@ -358,11 +356,11 @@ surfaceSlipDisplacementPointPatchVectorField
 )
 :
     pointPatchVectorField(ppf),
-    surfacesDict_(ppf.surfacesDict()),
-    projectMode_(ppf.projectMode()),
-    projectDir_(ppf.projectDir()),
-    wedgePlane_(ppf.wedgePlane()),
-    frozenPointsZone_(ppf.frozenPointsZone())
+    surfacesDict_(ppf.surfacesDict_),
+    projectMode_(ppf.projectMode_),
+    projectDir_(ppf.projectDir_),
+    wedgePlane_(ppf.wedgePlane_),
+    frozenPointsZone_(ppf.frozenPointsZone_)
 {}
 
 
@@ -374,11 +372,11 @@ surfaceSlipDisplacementPointPatchVectorField
 )
 :
     pointPatchVectorField(ppf, iF),
-    surfacesDict_(ppf.surfacesDict()),
-    projectMode_(ppf.projectMode()),
-    projectDir_(ppf.projectDir()),
-    wedgePlane_(ppf.wedgePlane()),
-    frozenPointsZone_(ppf.frozenPointsZone())
+    surfacesDict_(ppf.surfacesDict_),
+    projectMode_(ppf.projectMode_),
+    projectDir_(ppf.projectDir_),
+    wedgePlane_(ppf.wedgePlane_),
+    frozenPointsZone_(ppf.frozenPointsZone_)
 {}
 
 
@@ -435,7 +433,7 @@ void surfaceSlipDisplacementPointPatchVectorField::write(Ostream& os) const
     pointPatchVectorField::write(os);
     os.writeKeyword("geometry") << surfacesDict_
         << token::END_STATEMENT << nl;
-    os.writeKeyword("followMode") << followModeNames_[projectMode_]
+    os.writeKeyword("projectMode") << projectModeNames_[projectMode_]
         << token::END_STATEMENT << nl;
     os.writeKeyword("projectDirection") << projectDir_
         << token::END_STATEMENT << nl;
diff --git a/src/fvMotionSolver/pointPatchFields/derived/surfaceSlipDisplacement/surfaceSlipDisplacementPointPatchVectorField.H b/src/fvMotionSolver/pointPatchFields/derived/surfaceSlipDisplacement/surfaceSlipDisplacementPointPatchVectorField.H
index 9edb42ac0d8764334c014267bbdbb327bb808596..2b2b89819fd98faeefb5ad658c75813273fa59e2 100644
--- a/src/fvMotionSolver/pointPatchFields/derived/surfaceSlipDisplacement/surfaceSlipDisplacementPointPatchVectorField.H
+++ b/src/fvMotionSolver/pointPatchFields/derived/surfaceSlipDisplacement/surfaceSlipDisplacementPointPatchVectorField.H
@@ -26,8 +26,10 @@ Class
     Foam::surfaceSlipDisplacementPointPatchVectorField
 
 Description
-    Displacement follows a triSurface. Use in a displacement fvMotionSolver.
-    Following is either
+    Displacement follows a triSurface. Use in a displacement fvMotionSolver
+    as a bc on the pointDisplacement field.
+    Following is done by calculating the projection onto the surface according
+    to the projectMode
     - NEAREST : nearest
     - POINTNORMAL : intersection with point normal
     - FIXEDNORMAL : intersection with fixed vector
@@ -36,9 +38,10 @@ Description
     stay in 2D.
 
     Needs:
-    - projectSurfaces : names of triSurfaceMeshes (in constant/triSurface)
-    - followMode : see above
-    - projectDirection : if followMode = fixedNormal
+    - geometry : dictionary with searchableSurfaces. (usually
+      triSurfaceMeshes in constant/triSurface)
+    - projectMode : see above
+    - projectDirection : if projectMode = fixedNormal
     - wedgePlane : -1 or component to knock out of intersection normal
     - frozenPointsZone : empty or name of pointZone containing points
                          that do not move
@@ -72,7 +75,7 @@ public:
 
     // Public data types
 
-        enum followMode
+        enum projectMode
         {
             NEAREST,
             POINTNORMAL,
@@ -83,14 +86,14 @@ private:
 
     // Private data
 
-        //- follow mode names
-        static const NamedEnum<followMode, 3> followModeNames_;
+        //- project mode names
+        static const NamedEnum<projectMode, 3> projectModeNames_;
 
         //- names of surfaces
         const dictionary surfacesDict_;
 
-        //- How to follow/project onto surface
-        const followMode projectMode_;
+        //- How to project/project onto surface
+        const projectMode projectMode_;
 
         //- direction to project
         const vector projectDir_;
@@ -101,13 +104,13 @@ private:
         //- pointZone with frozen points
         const word frozenPointsZone_;
 
-        //- Demand driven: surface to follow
+        //- Demand driven: surface to project
         mutable autoPtr<searchableSurfaces> surfacesPtr_;
 
 
     // Private Member Functions
 
-        //- Calculate displacement to project onto surface
+        //- Calculate displacement (w.r.t. points0()) to project onto surface
         void calcProjection(vectorField& displacement) const;
 
         //- Disallow default bitwise assignment
@@ -189,40 +192,9 @@ public:
 
     // Member Functions
 
-        //- Surfaces to follow
-        const dictionary& surfacesDict() const
-        {
-            return surfacesDict_;
-        }
-
         //- Surface to follow. Demand loads surfaceNames.
         const searchableSurfaces& surfaces() const;
 
-        //- Mode of projection/following
-        followMode projectMode() const
-        {
-            return projectMode_;
-        }
-
-        //- Direction to project back onto surface
-        const vector& projectDir() const
-        {
-            return projectDir_;
-        }
-
-        //- Normal of wedgeplane (0, 1, 2) or -1. Note: should be obtained
-        //  from twoDPointCorrector.
-        label wedgePlane() const
-        {
-            return wedgePlane_;
-        }
-
-        //- Zone containing frozen points
-        const word& frozenPointsZone() const
-        {
-            return frozenPointsZone_;
-        }
-
         //- Update the patch field
         virtual void evaluate
         (
diff --git a/src/lagrangian/Allwmake b/src/lagrangian/Allwmake
index fea6fce12eba69648412f36c4a6130a52037f001..92993c516ff3740ae22dd506cb43316d2f77ef19 100755
--- a/src/lagrangian/Allwmake
+++ b/src/lagrangian/Allwmake
@@ -7,6 +7,7 @@ wmake libso solidParticle
 wmake libso intermediate
 wmake libso dieselSpray
 wmake libso dsmc
+wmake libso coalCombustion
 
 molecularDynamics/Allwmake
 
diff --git a/src/lagrangian/basic/Cloud/Cloud.C b/src/lagrangian/basic/Cloud/Cloud.C
index e18e0e3b533e0722e82246da6b594b6955229892..e3e0b4f63f5e2576150a1eea6fe3c1c69251f8ec 100644
--- a/src/lagrangian/basic/Cloud/Cloud.C
+++ b/src/lagrangian/basic/Cloud/Cloud.C
@@ -30,6 +30,7 @@ License
 #include "PstreamCombineReduceOps.H"
 #include "mapPolyMesh.H"
 #include "Time.H"
+#include "OFstream.H"
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
@@ -41,16 +42,12 @@ Foam::Cloud<ParticleType>::Cloud
 )
 :
     cloud(pMesh),
-    IDLList<ParticleType>(particles),
+    IDLList<ParticleType>(),
     polyMesh_(pMesh),
-    allFaces_(pMesh.faces()),
-    points_(pMesh.points()),
-    cellFaces_(pMesh.cells()),
-    allFaceCentres_(pMesh.faceCentres()),
-    owner_(pMesh.faceOwner()),
-    neighbour_(pMesh.faceNeighbour()),
-    meshInfo_(polyMesh_)
-{}
+    particleCount_(0)
+{
+    IDLList<ParticleType>::operator=(particles);
+}
 
 
 template<class ParticleType>
@@ -62,20 +59,31 @@ Foam::Cloud<ParticleType>::Cloud
 )
 :
     cloud(pMesh, cloudName),
-    IDLList<ParticleType>(particles),
+    IDLList<ParticleType>(),
     polyMesh_(pMesh),
-    allFaces_(pMesh.faces()),
-    points_(pMesh.points()),
-    cellFaces_(pMesh.cells()),
-    allFaceCentres_(pMesh.faceCentres()),
-    owner_(pMesh.faceOwner()),
-    neighbour_(pMesh.faceNeighbour()),
-    meshInfo_(polyMesh_)
-{}
+    particleCount_(0)
+{
+    IDLList<ParticleType>::operator=(particles);
+}
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
+template<class ParticleType>
+Foam::label Foam::Cloud<ParticleType>::getNewParticleID() const
+{
+    label id = particleCount_++;
+
+    if (id == labelMax)
+    {
+        WarningIn("Cloud<ParticleType>::getNewParticleID() const")
+            << "Particle counter has overflowed. This might cause problems"
+            << " when reconstructing particle tracks." << endl;
+    }
+    return id;
+}
+
+
 template<class ParticleType>
 void Foam::Cloud<ParticleType>::addParticle(ParticleType* pPtr)
 {
@@ -322,6 +330,25 @@ void Foam::Cloud<ParticleType>::autoMap(const mapPolyMesh& mapper)
 }
 
 
+template<class ParticleType>
+void Foam::Cloud<ParticleType>::writePositions() const
+{
+    OFstream pObj
+    (
+        this->db().time().path()/this->name() + "_positions.obj"
+    );
+
+    forAllConstIter(typename Cloud<ParticleType>, *this, pIter)
+    {
+        const ParticleType& p = pIter();
+        pObj<< "v " << p.position().x() << " " << p.position().y() << " "
+            << p.position().z() << nl;
+    }
+
+    pObj.flush();
+}
+
+
 // * * * * * * * * * * * * * * * *  IOStream operators * * * * * * * * * * * //
 
 #include "CloudIO.C"
diff --git a/src/lagrangian/basic/Cloud/Cloud.H b/src/lagrangian/basic/Cloud/Cloud.H
index 684ceb979e34419053fc8b3eb51b4f3eabf8f91a..626042e68ac7e1a537daf4229b4fbc650964f802 100644
--- a/src/lagrangian/basic/Cloud/Cloud.H
+++ b/src/lagrangian/basic/Cloud/Cloud.H
@@ -39,17 +39,20 @@ SourceFiles
 #include "cloud.H"
 #include "IDLList.H"
 #include "IOField.H"
-
-#include "polyMeshInfo.H"
+#include "polyMesh.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 namespace Foam
 {
 
+// Forward declaration of functions
 template<class ParticleType>
 class Cloud;
 
+template<class ParticleType>
+class IOPosition;
+
 template<class ParticleType>
 Ostream& operator<<
 (
@@ -68,19 +71,15 @@ class Cloud
     public cloud,
     public IDLList<ParticleType>
 {
-
     // Private data
 
         const polyMesh& polyMesh_;
-        const faceList& allFaces_;
-        const vectorField& points_;
-        const cellList& cellFaces_;
-        const vectorField& allFaceCentres_;
-        const unallocLabelList& owner_;
-        const unallocLabelList& neighbour_;
 
-        //- Mesh information object
-        const polyMeshInfo meshInfo_;
+        //- Overall count of particles ever created. Never decreases.
+        mutable label particleCount_;
+
+        //- Temporary storage for addressing. Used in findFaces.
+        mutable DynamicList<label> labels_;
 
 
     // Private member functions
@@ -93,6 +92,8 @@ public:
 
     template<class ParticleT>
     friend class Particle;
+    template<class ParticleT>
+    friend class IOPosition;
 
     typedef ParticleType particleType;
 
@@ -173,54 +174,54 @@ public:
                 return polyMesh_.boundaryMesh()[patchi].whichFace(facei);
             }
 
-            //- Return reference to the mesh information object
-            const polyMeshInfo& meshInfo() const
-            {
-                return meshInfo_;
-            }
-
             label size() const
             {
                 return IDLList<ParticleType>::size();
             };
 
-            const const_iterator begin() const
-            {
-                return IDLList<ParticleType>::begin();
-            };
 
-            const const_iterator cbegin() const
-            {
-                return IDLList<ParticleType>::cbegin();
-            };
+            // Iterators
 
-            const const_iterator end() const
-            {
-                return IDLList<ParticleType>::end();
-            };
+                const const_iterator begin() const
+                {
+                    return IDLList<ParticleType>::begin();
+                };
 
-            const const_iterator cend() const
-            {
-                return IDLList<ParticleType>::cend();
-            };
+                const const_iterator cbegin() const
+                {
+                    return IDLList<ParticleType>::cbegin();
+                };
 
-            iterator begin()
-            {
-                return IDLList<ParticleType>::begin();
-            };
+                const const_iterator end() const
+                {
+                    return IDLList<ParticleType>::end();
+                };
 
-            iterator end()
-            {
-                return IDLList<ParticleType>::end();
-            };
+                const const_iterator cend() const
+                {
+                    return IDLList<ParticleType>::cend();
+                };
+
+                iterator begin()
+                {
+                    return IDLList<ParticleType>::begin();
+                };
+
+                iterator end()
+                {
+                    return IDLList<ParticleType>::end();
+                };
+
+
+        // Edit
 
             void clear()
             {
                 return IDLList<ParticleType>::clear();
             };
 
-
-        // Edit
+            //- Get unique particle creation id
+            label getNewParticleID() const;
 
             //- Transfer particle to cloud
             void addParticle(ParticleType* pPtr);
@@ -255,13 +256,15 @@ public:
                 const IOField<DataType>& data
             ) const;
 
-            //- Read the field data for the cloud of particles
-            void readFields();
+            //- Read the field data for the cloud of particles. Dummy at
+            //  this level.
+            virtual void readFields();
 
 
         // Write
 
-            //- Write the field data for the cloud of particles
+            //- Write the field data for the cloud of particles Dummy at
+            //  this level.
             virtual void writeFields() const;
 
             //- Write using given format, version and compression.
@@ -273,6 +276,9 @@ public:
                 IOstream::compressionType cmp
             ) const;
 
+            //- Write positions to <cloudName>_positions.obj file
+            void writePositions() const;
+
 
     // Ostream Operator
 
diff --git a/src/lagrangian/basic/Cloud/CloudIO.C b/src/lagrangian/basic/Cloud/CloudIO.C
index 9b58c12ea52a35cd01305547b74f69c4af502b3f..c1e4b30f808a9f8015f07e57bf3eb1ceaaa61b7d 100644
--- a/src/lagrangian/basic/Cloud/CloudIO.C
+++ b/src/lagrangian/basic/Cloud/CloudIO.C
@@ -67,13 +67,7 @@ Foam::Cloud<ParticleType>::Cloud
 :
     cloud(pMesh),
     polyMesh_(pMesh),
-    allFaces_(pMesh.faces()),
-    points_(pMesh.points()),
-    cellFaces_(pMesh.cells()),
-    allFaceCentres_(pMesh.faceCentres()),
-    owner_(pMesh.faceOwner()),
-    neighbour_(pMesh.faceNeighbour()),
-    meshInfo_(polyMesh_)
+    particleCount_(0)
 {
     initCloud(checkClass);
 }
@@ -89,13 +83,7 @@ Foam::Cloud<ParticleType>::Cloud
 :
     cloud(pMesh, cloudName),
     polyMesh_(pMesh),
-    allFaces_(pMesh.faces()),
-    points_(pMesh.points()),
-    cellFaces_(pMesh.cells()),
-    allFaceCentres_(pMesh.faceCentres()),
-    owner_(pMesh.faceOwner()),
-    neighbour_(pMesh.faceNeighbour()),
-    meshInfo_(polyMesh_)
+    particleCount_(0)
 {
     initCloud(checkClass);
 }
diff --git a/src/lagrangian/basic/IOPosition/IOPosition.C b/src/lagrangian/basic/IOPosition/IOPosition.C
index 7865a12105f0bd3923a2b3fa85fdb6f139b4c041..5f12742d8c214df4cf8937a4486375e62512fe29 100644
--- a/src/lagrangian/basic/IOPosition/IOPosition.C
+++ b/src/lagrangian/basic/IOPosition/IOPosition.C
@@ -22,12 +22,74 @@ License
     along with OpenFOAM; if not, write to the Free Software Foundation,
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
-Description
-
 \*---------------------------------------------------------------------------*/
 
 #include "IOPosition.H"
 
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+template<class ParticleType>
+Foam::word Foam::IOPosition<ParticleType>::particlePropertiesName
+(
+    "particleProperties"
+);
+
+
+// * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * * * //
+
+template<class ParticleType>
+void Foam::IOPosition<ParticleType>::readParticleProperties()
+{
+    IOobject propsDictHeader
+    (
+        particlePropertiesName,
+        cloud_.db().time().timeName(),
+        "uniform"/cloud::prefix/cloud_.name(),
+        cloud_.db(),
+        IOobject::MUST_READ,
+        IOobject::NO_WRITE,
+        false
+    );
+
+    if (propsDictHeader.headerOk())
+    {
+        const IOdictionary propsDict(propsDictHeader);
+
+        word procName("processor" + Foam::name(Pstream::myProcNo()));
+        if (propsDict.found(procName))
+        {
+            propsDict.subDict(procName).lookup("particleCount")
+                >> cloud_.particleCount_;
+        }
+    }
+}
+
+
+template<class ParticleType>
+void Foam::IOPosition<ParticleType>::writeParticleProperties() const
+{
+    IOdictionary propsDict
+    (
+        IOobject
+        (
+            particlePropertiesName,
+            cloud_.db().time().timeName(),
+            "uniform"/cloud::prefix/cloud_.name(),
+            cloud_.db(),
+            IOobject::NO_READ,
+            IOobject::NO_WRITE,
+            false
+        )
+    );
+
+    word procName("processor" + Foam::name(Pstream::myProcNo()));
+    propsDict.add(procName, dictionary());
+    propsDict.subDict(procName).add("particleCount", cloud_.particleCount_);
+
+    propsDict.regIOobject::write();
+}
+
+
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
 template<class ParticleType>
@@ -70,11 +132,20 @@ bool Foam::IOPosition<ParticleType>::write() const
 template<class ParticleType>
 bool Foam::IOPosition<ParticleType>::writeData(Ostream& os) const
 {
+    // Write global cloud data
+    writeParticleProperties();
+
     os<< cloud_.size() << nl << token::BEGIN_LIST << nl;
 
     forAllConstIter(typename Cloud<ParticleType>, cloud_, iter)
     {
-        os<< static_cast<const Particle<ParticleType>&>(iter()) << nl;
+        // Prevent writing additional fields
+        static_cast<const Particle<ParticleType>&>(iter()).write
+        (
+            os,
+            false
+        );
+        os  << nl;
     }
 
     os<< token::END_LIST << endl;
@@ -90,6 +161,9 @@ void Foam::IOPosition<ParticleType>::readData
     bool checkClass
 )
 {
+    // Read global cloud data. Resets count on cloud.
+    readParticleProperties();
+
     Istream& is = readStream(checkClass ? typeName : "");
 
     token firstToken(is);
@@ -103,6 +177,7 @@ void Foam::IOPosition<ParticleType>::readData
 
         for (label i=0; i<s; i++)
         {
+            // Do not read any fields, position only
             c.append(new ParticleType(c, is, false));
         }
 
@@ -133,6 +208,7 @@ void Foam::IOPosition<ParticleType>::readData
         )
         {
             is.putBack(lastToken);
+            // Do not read any fields, position only
             c.append(new ParticleType(c, is, false));
             is >> lastToken;
         }
diff --git a/src/lagrangian/basic/IOPosition/IOPosition.H b/src/lagrangian/basic/IOPosition/IOPosition.H
index 5123644385f28bb942c01c5a2de8f30d43f41116..982416fdc8ff8bddc998e745fb920523cdda6735 100644
--- a/src/lagrangian/basic/IOPosition/IOPosition.H
+++ b/src/lagrangian/basic/IOPosition/IOPosition.H
@@ -26,7 +26,7 @@ Class
     Foam::IOPosition
 
 Description
-    Helper IO class to write particle positions
+    Helper IO class to read and write particle positions
 
 SourceFiles
     IOPosition.C
@@ -59,34 +59,42 @@ class IOPosition
         const Cloud<ParticleType>& cloud_;
 
 
+    // Private member functions
+
+        //- Read particle properties dictionary
+        void readParticleProperties();
+
+        //- Write particle properties dictionary
+        void writeParticleProperties() const;
+
+
 public:
 
-    //- Runtime type name information
-    virtual const word& type() const
-    {
-        return cloud_.type();
-    }
+    // Static data
+
+        //- Runtime type name information. Use cloud type.
+        virtual const word& type() const
+        {
+            return cloud_.type();
+        }
+
+        //- Name of particle properties dictionary
+        static word particlePropertiesName;
+
 
     // Constructors
 
         //- Construct from cloud
-        IOPosition
-        (
-            const Cloud<ParticleType>&
-        );
+        IOPosition(const Cloud<ParticleType>&);
 
 
     // Member functions
 
-        void readData
-        (
-            Cloud<ParticleType>& c,
-            bool checkClass
-        );
+        virtual void readData(Cloud<ParticleType>& c, bool checkClass);
 
-        bool write() const;
+        virtual bool write() const;
 
-        bool writeData(Ostream& os) const;
+        virtual bool writeData(Ostream& os) const;
 };
 
 
diff --git a/src/lagrangian/basic/Make/files b/src/lagrangian/basic/Make/files
index 629d47f47474d5fb80694d454f6936706ad6980a..969b966f1a12385a48c57405a7d8a5861a0759eb 100644
--- a/src/lagrangian/basic/Make/files
+++ b/src/lagrangian/basic/Make/files
@@ -6,6 +6,4 @@ indexedParticle = indexedParticle
 $(passiveParticle)/passiveParticleCloud.C
 $(indexedParticle)/indexedParticleCloud.C
 
-polyMeshInfo/polyMeshInfo.C
-
 LIB = $(FOAM_LIBBIN)/liblagrangian
diff --git a/src/lagrangian/basic/Particle/Particle.C b/src/lagrangian/basic/Particle/Particle.C
index 6c8cbe4aa106f7181d0f93a84a8e6c5c5cd2996c..4838da0ad1d1dc6bd56ee90ca0e79fdb8f24e86b 100644
--- a/src/lagrangian/basic/Particle/Particle.C
+++ b/src/lagrangian/basic/Particle/Particle.C
@@ -36,16 +36,17 @@ License
 // * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
 
 template<class ParticleType>
-Foam::labelList Foam::Particle<ParticleType>::findFaces
+void Foam::Particle<ParticleType>::findFaces
 (
-    const vector& position
+    const vector& position,
+    DynamicList<label>& faceList
 ) const
 {
     const polyMesh& mesh = cloud_.polyMesh_;
     const labelList& faces = mesh.cells()[celli_];
     const vector& C = mesh.cellCentres()[celli_];
 
-    labelList faceList(0);
+    faceList.clear();
     forAll(faces, i)
     {
         label facei = faces[i];
@@ -53,29 +54,26 @@ Foam::labelList Foam::Particle<ParticleType>::findFaces
 
         if ((lam > 0) && (lam < 1.0))
         {
-            label n = faceList.size();
-            faceList.setSize(n+1);
-            faceList[n] = facei;
+            faceList.append(facei);
         }
     }
-
-    return faceList;
 }
 
 
 template<class ParticleType>
-Foam::labelList Foam::Particle<ParticleType>::findFaces
+void Foam::Particle<ParticleType>::findFaces
 (
     const vector& position,
     const label celli,
-    const scalar stepFraction
+    const scalar stepFraction,
+    DynamicList<label>& faceList
 ) const
 {
-    const polyMesh& mesh = cloud_.polyMesh_;
+    const polyMesh& mesh = cloud_.pMesh();
     const labelList& faces = mesh.cells()[celli];
     const vector& C = mesh.cellCentres()[celli];
 
-    labelList faceList(0);
+    faceList.clear();
     forAll(faces, i)
     {
         label facei = faces[i];
@@ -83,13 +81,9 @@ Foam::labelList Foam::Particle<ParticleType>::findFaces
 
         if ((lam > 0) && (lam < 1.0))
         {
-            label n = faceList.size();
-            faceList.setSize(n+1);
-            faceList[n] = facei;
+            faceList.append(facei);
         }
     }
-
-    return faceList;
 }
 
 
@@ -182,7 +176,22 @@ Foam::Particle<ParticleType>::Particle
     position_(position),
     celli_(celli),
     facei_(-1),
-    stepFraction_(0.0)
+    stepFraction_(0.0),
+    origProc_(Pstream::myProcNo()),
+    origId_(cloud_.getNewParticleID())
+{}
+
+
+template<class ParticleType>
+Foam::Particle<ParticleType>::Particle(const Particle<ParticleType>& p)
+:
+    cloud_(p.cloud_),
+    position_(p.position_),
+    celli_(p.celli_),
+    facei_(p.facei_),
+    stepFraction_(p.stepFraction_),
+    origProc_(p.origProc_),
+    origId_(p.origId_)
 {}
 
 
@@ -226,7 +235,8 @@ Foam::scalar Foam::Particle<ParticleType>::trackToFace
 {
     const polyMesh& mesh = cloud_.polyMesh_;
 
-    labelList faces = findFaces(endPosition);
+    DynamicList<label>& faces = cloud_.labels_;
+    findFaces(endPosition, faces);
 
     facei_ = -1;
     scalar trackFraction = 0.0;
@@ -297,13 +307,13 @@ Foam::scalar Foam::Particle<ParticleType>::trackToFace
         // change cell
         if (internalFace) // Internal face
         {
-            if (celli_ == cloud_.owner_[facei_])
+            if (celli_ == mesh.faceOwner()[facei_])
             {
-                celli_ = cloud_.neighbour_[facei_];
+                celli_ = mesh.faceNeighbour()[facei_];
             }
-            else if (celli_ == cloud_.neighbour_[facei_])
+            else if (celli_ == mesh.faceNeighbour()[facei_])
             {
-                celli_ = cloud_.owner_[facei_];
+                celli_ = mesh.faceOwner()[facei_];
             }
             else
             {
@@ -328,56 +338,47 @@ Foam::scalar Foam::Particle<ParticleType>::trackToFace
             label patchi = patch(facei_);
             const polyPatch& patch = mesh.boundaryMesh()[patchi];
 
-            if (isA<wedgePolyPatch>(patch))
-            {
-                p.hitWedgePatch
-                (
-                    static_cast<const wedgePolyPatch&>(patch), td
-                );
-            }
-            else if (isA<symmetryPolyPatch>(patch))
-            {
-                p.hitSymmetryPatch
-                (
-                    static_cast<const symmetryPolyPatch&>(patch), td
-                );
-            }
-            else if (isA<cyclicPolyPatch>(patch))
+            if (!p.hitPatch(patch, td, patchi))
             {
-                p.hitCyclicPatch
-                (
-                    static_cast<const cyclicPolyPatch&>(patch), td
-                );
-            }
-            else if (isA<processorPolyPatch>(patch))
-            {
-                p.hitProcessorPatch
-                (
-                    static_cast<const processorPolyPatch&>(patch), td
-                );
-            }
-            else if (isA<wallPolyPatch>(patch))
-            {
-                p.hitWallPatch
-                (
-                    static_cast<const wallPolyPatch&>(patch), td
-                );
-            }
-            else if (isA<polyPatch>(patch))
-            {
-                p.hitPatch
-                (
-                    static_cast<const polyPatch&>(patch), td
-                );
-            }
-            else
-            {
-                FatalErrorIn
-                (
-                    "Particle::trackToFace"
-                    "(const vector& endPosition, scalar& trackFraction)"
-                )<< "patch type " << patch.type() << " not suported" << nl
-                 << abort(FatalError);
+                if (isA<wedgePolyPatch>(patch))
+                {
+                    p.hitWedgePatch
+                    (
+                        static_cast<const wedgePolyPatch&>(patch), td
+                    );
+                }
+                else if (isA<symmetryPolyPatch>(patch))
+                {
+                    p.hitSymmetryPatch
+                    (
+                        static_cast<const symmetryPolyPatch&>(patch), td
+                    );
+                }
+                else if (isA<cyclicPolyPatch>(patch))
+                {
+                    p.hitCyclicPatch
+                    (
+                        static_cast<const cyclicPolyPatch&>(patch), td
+                    );
+                }
+                else if (isA<processorPolyPatch>(patch))
+                {
+                    p.hitProcessorPatch
+                    (
+                        static_cast<const processorPolyPatch&>(patch), td
+                    );
+                }
+                else if (isA<wallPolyPatch>(patch))
+                {
+                    p.hitWallPatch
+                    (
+                        static_cast<const wallPolyPatch&>(patch), td
+                    );
+                }
+                else
+                {
+                    p.hitPatch(patch, td);
+                }
             }
         }
     }
@@ -423,6 +424,19 @@ void Foam::Particle<ParticleType>::transformProperties(const vector&)
 {}
 
 
+template<class ParticleType>
+template<class TrackData>
+bool Foam::Particle<ParticleType>::hitPatch
+(
+    const polyPatch&,
+    TrackData&,
+    const label
+)
+{
+    return false;
+}
+
+
 template<class ParticleType>
 template<class TrackData>
 void Foam::Particle<ParticleType>::hitWedgePatch
diff --git a/src/lagrangian/basic/Particle/Particle.H b/src/lagrangian/basic/Particle/Particle.H
index 75a0b041744af33b9de9b805a8c46cabb4031e29..a1077a604e45d7fcf2e2947eb9fa0ca3a34e1297 100644
--- a/src/lagrangian/basic/Particle/Particle.H
+++ b/src/lagrangian/basic/Particle/Particle.H
@@ -98,10 +98,7 @@ public:
 
         // Constructors
 
-            inline trackData
-            (
-                Cloud<ParticleType>& cloud
-            );
+            inline trackData(Cloud<ParticleType>& cloud);
 
 
         // Member functions
@@ -130,6 +127,12 @@ protected:
         //- Fraction of time-step completed
         scalar stepFraction_;
 
+        //- Originating processor id
+        label origProc_;
+
+        //- Local particle id on originating processor
+        label origId_;
+
 
     // Private member functions
 
@@ -154,23 +157,35 @@ protected:
             const label facei
         ) const;
 
-        //- Return the faces between position and cell centre
-        labelList findFaces
+        //- Find the faces between position and cell centre
+        void findFaces
         (
-            const vector& position
+            const vector& position,
+            DynamicList<label>& faceList
         ) const;
 
-        //- Return the faces between position and cell centre
-        labelList findFaces
+        //- Find the faces between position and cell centre
+        void findFaces
         (
             const vector& position,
             const label celli,
-            const scalar stepFraction
+            const scalar stepFraction,
+            DynamicList<label>& faceList
         ) const;
 
 
     // Patch interactions
 
+        //- Overridable function to handle the particle hitting a patch
+        //  Executed before other patch-hitting functions
+        template<class TrackData>
+        bool hitPatch
+        (
+            const polyPatch&,
+            TrackData& td,
+            const label patchI
+        );
+
         //- Overridable function to handle the particle hitting a wedgePatch
         template<class TrackData>
         void hitWedgePatch
@@ -256,8 +271,13 @@ public:
     friend class Cloud<ParticleType>;
 
 
-    //- Runtime type information
-    TypeName("Particle");
+    // Static data members
+
+        //- Runtime type information
+        TypeName("Particle");
+
+        //- String representation of properties
+        static string propHeader;
 
 
     // Constructors
@@ -278,14 +298,24 @@ public:
             bool readFields = true
         );
 
+        //- Construct as a copy
+        Particle(const Particle& p);
+
+        //- Construct a clone
+        autoPtr<ParticleType> clone() const
+        {
+            return autoPtr<Particle>(new Particle(*this));
+        }
+
+
         //- Factory class to read-construct particles used for
         //  parallel transfer
         class iNew
         {
-
             // Private data
 
-            const Cloud<ParticleType>& cloud_;
+                //- Reference to the cloud
+                const Cloud<ParticleType>& cloud_;
 
 
         public:
@@ -297,15 +327,22 @@ public:
 
             autoPtr<ParticleType> operator()(Istream& is) const
             {
-                return autoPtr<ParticleType>(new ParticleType(cloud_, is));
+                return autoPtr<ParticleType>
+                (
+                    new ParticleType
+                    (
+                        cloud_,
+                        is,
+                        true
+                    )
+                );
             }
         };
 
 
     //- Destructor
-
-        virtual ~Particle()
-        {}
+    virtual ~Particle()
+    {}
 
 
     // Member Functions
@@ -344,6 +381,9 @@ public:
             //- Return the impact model to be used, soft or hard (default).
             inline bool softImpact() const;
 
+            //- Return the particle current time
+            inline scalar currentTime() const;
+
 
         // Check
 
@@ -370,6 +410,12 @@ public:
             //-  Return the fraction of time-step completed
             inline scalar stepFraction() const;
 
+            //- Return the originating processor id
+            inline label origProc() const;
+
+            //- Return the particle id on originating processor
+            inline label origId() const;
+
 
         // Track
 
@@ -413,12 +459,14 @@ public:
 
     // I-O
 
+        //- Read the fields associated with the owner cloud
+        static void readFields(Cloud<ParticleType>& c);
+
         //- Write the fields associated with the owner cloud
-        static void writeFields
-        (
-            const Cloud<ParticleType>& c
-        );
+        static void writeFields(const Cloud<ParticleType>& c);
 
+        //- Write the particle data
+        void write(Ostream& os, bool writeFields) const;
 
     // Ostream Operator
 
diff --git a/src/lagrangian/basic/Particle/ParticleI.H b/src/lagrangian/basic/Particle/ParticleI.H
index 075d96705d876aee11d5156dc242313fe139022f..65ac64e5251c25a460e79eb70ae5aeadc3d523bb 100644
--- a/src/lagrangian/basic/Particle/ParticleI.H
+++ b/src/lagrangian/basic/Particle/ParticleI.H
@@ -26,15 +26,10 @@ License
 
 #include "polyMesh.H"
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-
 // * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
 
 template<class ParticleType>
-inline scalar Particle<ParticleType>::lambda
+inline Foam::scalar Foam::Particle<ParticleType>::lambda
 (
     const vector& from,
     const vector& to,
@@ -182,7 +177,7 @@ inline scalar Particle<ParticleType>::lambda
 
 
 template<class ParticleType>
-inline scalar Particle<ParticleType>::lambda
+inline Foam::scalar Foam::Particle<ParticleType>::lambda
 (
     const vector& from,
     const vector& to,
@@ -234,23 +229,25 @@ inline scalar Particle<ParticleType>::lambda
 
 
 template<class ParticleType>
-inline bool Particle<ParticleType>::inCell() const
+inline bool Foam::Particle<ParticleType>::inCell() const
 {
-    labelList faces = findFaces(position_);
+    DynamicList<label>& faces = cloud_.labels_;
+    findFaces(position_, faces);
 
     return (!faces.size());
 }
 
 
 template<class ParticleType>
-inline bool Particle<ParticleType>::inCell
+inline bool Foam::Particle<ParticleType>::inCell
 (
     const vector& position,
     const label celli,
     const scalar stepFraction
 ) const
 {
-    labelList faces = findFaces(position, celli, stepFraction);
+    DynamicList<label>& faces = cloud_.labels_;
+    findFaces(position, celli, stepFraction, faces);
 
     return (!faces.size());
 }
@@ -259,7 +256,7 @@ inline bool Particle<ParticleType>::inCell
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 template<class ParticleType>
-inline Particle<ParticleType>::trackData::trackData
+inline Foam::Particle<ParticleType>::trackData::trackData
 (
     Cloud<ParticleType>& cloud
 )
@@ -267,8 +264,10 @@ inline Particle<ParticleType>::trackData::trackData
     cloud_(cloud)
 {}
 
+
 template<class ParticleType>
-inline Cloud<ParticleType>& Particle<ParticleType>::trackData::cloud()
+inline Foam::Cloud<ParticleType>&
+Foam::Particle<ParticleType>::trackData::cloud()
 {
     return cloud_;
 }
@@ -277,83 +276,108 @@ inline Cloud<ParticleType>& Particle<ParticleType>::trackData::cloud()
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 template<class ParticleType>
-inline const Cloud<ParticleType>& Particle<ParticleType>::cloud() const
+inline const Foam::Cloud<ParticleType>&
+Foam::Particle<ParticleType>::cloud() const
 {
     return cloud_;
 }
 
 
 template<class ParticleType>
-inline const vector& Particle<ParticleType>::position() const
+inline const Foam::vector& Foam::Particle<ParticleType>::position() const
 {
     return position_;
 }
 
 
 template<class ParticleType>
-inline vector& Particle<ParticleType>::position()
+inline Foam::vector& Foam::Particle<ParticleType>::position()
 {
     return position_;
 }
 
 
 template<class ParticleType>
-inline label Particle<ParticleType>::cell() const
+inline Foam::label Foam::Particle<ParticleType>::cell() const
 {
     return celli_;
 }
 
+
 template<class ParticleType>
-inline label& Particle<ParticleType>::cell()
+inline Foam::label& Foam::Particle<ParticleType>::cell()
 {
     return celli_;
 }
 
 
 template<class ParticleType>
-inline label Particle<ParticleType>::face() const
+inline Foam::label Foam::Particle<ParticleType>::face() const
 {
     return facei_;
 }
 
 
 template<class ParticleType>
-inline bool Particle<ParticleType>::onBoundary() const
+inline bool Foam::Particle<ParticleType>::onBoundary() const
 {
     return facei_ != -1 && facei_ >= cloud_.pMesh().nInternalFaces();
 }
 
 
 template<class ParticleType>
-inline scalar& Particle<ParticleType>::stepFraction()
+inline Foam::scalar& Foam::Particle<ParticleType>::stepFraction()
 {
     return stepFraction_;
 }
 
 
 template<class ParticleType>
-inline scalar Particle<ParticleType>::stepFraction() const
+inline Foam::scalar Foam::Particle<ParticleType>::stepFraction() const
 {
     return stepFraction_;
 }
 
 
 template<class ParticleType>
-inline bool Particle<ParticleType>::softImpact() const
+inline Foam::label Foam::Particle<ParticleType>::origProc() const
+{
+    return origProc_;
+}
+
+
+template<class ParticleType>
+inline Foam::label Foam::Particle<ParticleType>::origId() const
+{
+    return origId_;
+}
+
+
+template<class ParticleType>
+inline bool Foam::Particle<ParticleType>::softImpact() const
 {
     return false;
 }
 
 
 template<class ParticleType>
-inline label Particle<ParticleType>::patch(const label facei) const
+inline Foam::scalar Foam::Particle<ParticleType>::currentTime() const
+{
+    return
+        cloud_.pMesh().time().value()
+      + stepFraction_*cloud_.pMesh().time().deltaT().value();
+}
+
+
+template<class ParticleType>
+inline Foam::label Foam::Particle<ParticleType>::patch(const label facei) const
 {
     return cloud_.facePatch(facei);
 }
 
 
 template<class ParticleType>
-inline label Particle<ParticleType>::patchFace
+inline Foam::label Foam::Particle<ParticleType>::patchFace
 (
     const label patchi,
     const label facei
@@ -364,21 +388,18 @@ inline label Particle<ParticleType>::patchFace
 
 
 template<class ParticleType>
-inline scalar Particle<ParticleType>::wallImpactDistance(const vector&) const
+inline Foam::scalar
+Foam::Particle<ParticleType>::wallImpactDistance(const vector&) const
 {
     return 0.0;
 }
 
 
 template<class ParticleType>
-inline label Particle<ParticleType>::faceInterpolation() const
+inline Foam::label Foam::Particle<ParticleType>::faceInterpolation() const
 {
     return facei_;
 }
 
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-} // End namespace Foam
-
 // ************************************************************************* //
diff --git a/src/lagrangian/basic/Particle/ParticleIO.C b/src/lagrangian/basic/Particle/ParticleIO.C
index 7be84f9d1449e3721369caf4413e436f809992a4..980d93f79a93fdb9dbd4c779c1d07d31817f4c84 100644
--- a/src/lagrangian/basic/Particle/ParticleIO.C
+++ b/src/lagrangian/basic/Particle/ParticleIO.C
@@ -28,9 +28,14 @@ License
 #include "IOstreams.H"
 #include "IOPosition.H"
 
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+template<class ParticleType>
+Foam::string Foam::Particle<ParticleType>::propHeader =
+    "(Px Py Pz) cellI origProc origId";
+
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-// Construct from Istream
 template<class ParticleType>
 Foam::Particle<ParticleType>::Particle
 (
@@ -41,21 +46,53 @@ Foam::Particle<ParticleType>::Particle
 :
     cloud_(cloud),
     facei_(-1),
-    stepFraction_(0.0)
+    stepFraction_(0.0),
+    origProc_(Pstream::myProcNo()),
+    origId_(-1)
 {
+
+    // readFields : read additional data. Should be consistent with writeFields.
+
     if (is.format() == IOstream::ASCII)
     {
         is >> position_ >> celli_;
+        if (readFields)
+        {
+            is >> origProc_ >> origId_;
+        }
+        else
+        {
+            origId_ = cloud_.getNewParticleID();
+        }
     }
     else
     {
-        // In binary read both celli_ and facei_, needed for parallel transfer
-        is.read
-        (
-            reinterpret_cast<char*>(&position_),
-            sizeof(position_) + sizeof(celli_)
-          + sizeof(facei_) + sizeof(stepFraction_)
-        );
+        // In binary read all particle data - needed for parallel transfer
+        if (readFields)
+        {
+            is.read
+            (
+                reinterpret_cast<char*>(&position_),
+                sizeof(position_)
+              + sizeof(celli_)
+              + sizeof(facei_)
+              + sizeof(stepFraction_)
+              + sizeof(origProc_)
+              + sizeof(origId_)
+            );
+        }
+        else
+        {
+            is.read
+            (
+                reinterpret_cast<char*>(&position_),
+                sizeof(position_)
+              + sizeof(celli_)
+              + sizeof(facei_)
+              + sizeof(stepFraction_)
+            );
+            origId_ = cloud_.getNewParticleID();
+        }
     }
 
     if (celli_ == -1)
@@ -68,6 +105,39 @@ Foam::Particle<ParticleType>::Particle
 }
 
 
+template<class ParticleType>
+void Foam::Particle<ParticleType>::readFields
+(
+    Cloud<ParticleType>& c
+)
+{
+    if (!c.size())
+    {
+        return;
+    }
+
+    IOobject procIO(c.fieldIOobject("origProcId", IOobject::MUST_READ));
+
+    if (procIO.headerOk())
+    {
+        IOField<label> origProcId(procIO);
+        c.checkFieldIOobject(c, origProcId);
+        IOField<label> origId(c.fieldIOobject("origId", IOobject::MUST_READ));
+        c.checkFieldIOobject(c, origId);
+
+        label i = 0;
+        forAllIter(typename Cloud<ParticleType>, c, iter)
+        {
+            ParticleType& p = iter();
+
+            p.origProc_ = origProcId[i];
+            p.origId_ = origId[i];
+            i++;
+        }
+    }
+}
+
+
 template<class ParticleType>
 void Foam::Particle<ParticleType>::writeFields
 (
@@ -77,30 +147,91 @@ void Foam::Particle<ParticleType>::writeFields
     // Write the cloud position file
     IOPosition<ParticleType> ioP(c);
     ioP.write();
+
+    label np =  c.size();
+
+    IOField<label> origProc
+    (
+        c.fieldIOobject
+        (
+            "origProcId",
+            IOobject::NO_READ
+        ),
+        np
+    );
+    IOField<label> origId(c.fieldIOobject("origId", IOobject::NO_READ), np);
+
+    label i = 0;
+    forAllConstIter(typename Cloud<ParticleType>, c, iter)
+    {
+        origProc[i] = iter().origProc_;
+        origId[i] = iter().origId_;
+        i++;
+    }
+
+    origProc.write();
+    origId.write();
 }
 
 
 template<class ParticleType>
-Foam::Ostream& Foam::operator<<(Ostream& os, const Particle<ParticleType>& p)
+void Foam::Particle<ParticleType>::write(Ostream& os, bool writeFields) const
 {
     if (os.format() == IOstream::ASCII)
     {
-        os << p.position_
-           << token::SPACE << p.celli_;
+        if (writeFields)
+        {
+            // Write the additional entries
+            os << position_
+               << token::SPACE << celli_
+               << token::SPACE << origProc_
+               << token::SPACE << origId_;
+        }
+        else
+        {
+            os << position_
+               << token::SPACE << celli_;
+        }
     }
     else
     {
         // In binary write both celli_ and facei_, needed for parallel transfer
-        os.write
-        (
-            reinterpret_cast<const char*>(&p.position_),
-            sizeof(p.position_) + sizeof(p.celli_)
-          + sizeof(p.facei_) + sizeof(p.stepFraction_)
-        );
+        if (writeFields)
+        {
+            os.write
+            (
+                reinterpret_cast<const char*>(&position_),
+                sizeof(position_)
+              + sizeof(celli_)
+              + sizeof(facei_)
+              + sizeof(stepFraction_)
+              + sizeof(origProc_)
+              + sizeof(origId_)
+            );
+        }
+        else
+        {
+            os.write
+            (
+                reinterpret_cast<const char*>(&position_),
+                sizeof(position_)
+              + sizeof(celli_)
+              + sizeof(facei_)
+              + sizeof(stepFraction_)
+            );
+        }
     }
 
     // Check state of Ostream
-    os.check("Ostream& operator<<(Ostream&, const Particle<ParticleType>&)");
+    os.check("Particle<ParticleType>::write(Ostream& os, bool) const");
+}
+
+
+template<class ParticleType>
+Foam::Ostream& Foam::operator<<(Ostream& os, const Particle<ParticleType>& p)
+{
+    // Write all data
+    p.write(os, true);
 
     return os;
 }
diff --git a/src/lagrangian/basic/indexedParticle/indexedParticle.H b/src/lagrangian/basic/indexedParticle/indexedParticle.H
index 3774bb93d86cc23d0022e838fefe66cb0fed3a80..7023f0ba6d43604b9d6b5341eb9d0d32d16fe643 100644
--- a/src/lagrangian/basic/indexedParticle/indexedParticle.H
+++ b/src/lagrangian/basic/indexedParticle/indexedParticle.H
@@ -84,7 +84,13 @@ public:
             bool readFields = true
         )
         :
-            Particle<indexedParticle>(c, is)
+            Particle<indexedParticle>(c, is, readFields)
+        {}
+
+        //- Construct as a copy
+        indexedParticle(const indexedParticle& p)
+        :
+            Particle<indexedParticle>(p)
         {}
 
         //- Construct and return a clone
diff --git a/src/lagrangian/basic/indexedParticle/indexedParticleCloud.C b/src/lagrangian/basic/indexedParticle/indexedParticleCloud.C
index 52cf785b91b831cfe227ac0883dd9af1e37ea3f7..a9ebc140ecb4f971f097363723e52053e3fdac93 100644
--- a/src/lagrangian/basic/indexedParticle/indexedParticleCloud.C
+++ b/src/lagrangian/basic/indexedParticle/indexedParticleCloud.C
@@ -22,12 +22,9 @@ License
     along with OpenFOAM; if not, write to the Free Software Foundation,
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
-Description
-
 \*---------------------------------------------------------------------------*/
 
-#include "indexedParticle.H"
-#include "Cloud.H"
+#include "indexedParticleCloud.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -43,4 +40,25 @@ defineTemplateTypeNameAndDebug(Cloud<indexedParticle>, 0);
 
 } // End namespace Foam
 
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::indexedParticleCloud::indexedParticleCloud
+(
+    const polyMesh& mesh,
+    const word& cloudName
+)
+:
+    Cloud<indexedParticle>(mesh, cloudName, false)
+{
+    indexedParticle::readFields(*this);
+}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+void Foam::indexedParticleCloud::writeFields() const
+{
+    indexedParticle::writeFields(*this);
+}
+
 // ************************************************************************* //
diff --git a/src/lagrangian/basic/indexedParticle/indexedParticleCloud.H b/src/lagrangian/basic/indexedParticle/indexedParticleCloud.H
new file mode 100644
index 0000000000000000000000000000000000000000..65033e0a9dad0ec24b37f1f83f8e299457ab3694
--- /dev/null
+++ b/src/lagrangian/basic/indexedParticle/indexedParticleCloud.H
@@ -0,0 +1,91 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::indexedParticleCloud
+
+Description
+    A Cloud of particles carrying an additional index.
+
+SourceFiles
+    indexedParticleCloud.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef indexedParticleCloud_H
+#define indexedParticleCloud_H
+
+#include "Cloud.H"
+#include "indexedParticle.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+                           Class indexedParticleCloud Declaration
+\*---------------------------------------------------------------------------*/
+
+class indexedParticleCloud
+:
+    public Cloud<indexedParticle>
+{
+    // Private Member Functions
+
+        //- Disallow default bitwise copy construct
+        indexedParticleCloud(const indexedParticleCloud&);
+
+        //- Disallow default bitwise assignment
+        void operator=(const indexedParticleCloud&);
+
+
+public:
+
+    // Constructors
+
+        //- Construct given mesh
+        indexedParticleCloud
+        (
+            const polyMesh&,
+            const word& cloudName = "defaultCloud"
+        );
+
+
+    // Member Functions
+
+        //- Write fields
+        virtual void writeFields() const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/basic/passiveParticle/passiveParticle.H b/src/lagrangian/basic/passiveParticle/passiveParticle.H
index 4e81e077ac442b6fc899ad556bbddf29a975b1f3..c8d912ac76b77f85ffb71ea5f2405552dbb492c5 100644
--- a/src/lagrangian/basic/passiveParticle/passiveParticle.H
+++ b/src/lagrangian/basic/passiveParticle/passiveParticle.H
@@ -28,9 +28,6 @@ Class
 Description
 
 SourceFiles
-    passiveParticleI.H
-    passiveParticle.C
-    passiveParticleIO.C
 
 \*---------------------------------------------------------------------------*/
 
@@ -47,7 +44,7 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                           Class passiveParticle Declaration
+                      Class passiveParticle Declaration
 \*---------------------------------------------------------------------------*/
 
 class passiveParticle
@@ -78,7 +75,13 @@ public:
             bool readFields = true
         )
         :
-            Particle<passiveParticle>(c, is)
+            Particle<passiveParticle>(c, is, readFields)
+        {}
+
+        //- Construct as copy
+        passiveParticle(const passiveParticle& p)
+        :
+            Particle<passiveParticle>(p)
         {}
 
         //- Construct and return a clone
diff --git a/src/lagrangian/basic/passiveParticle/passiveParticleCloud.C b/src/lagrangian/basic/passiveParticle/passiveParticleCloud.C
index 71af5dd82be298565291adce4639aabdce09ef0c..18844ffcea9d845c8cbd16c9642ed3a5fd310a15 100644
--- a/src/lagrangian/basic/passiveParticle/passiveParticleCloud.C
+++ b/src/lagrangian/basic/passiveParticle/passiveParticleCloud.C
@@ -22,12 +22,9 @@ License
     along with OpenFOAM; if not, write to the Free Software Foundation,
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
-Description
-
 \*---------------------------------------------------------------------------*/
 
-#include "passiveParticle.H"
-#include "Cloud.H"
+#include "passiveParticleCloud.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -39,8 +36,34 @@ namespace Foam
 defineParticleTypeNameAndDebug(passiveParticle, 0);
 defineTemplateTypeNameAndDebug(Cloud<passiveParticle>, 0);
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+};
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::passiveParticleCloud::passiveParticleCloud
+(
+    const polyMesh& mesh,
+    const word& cloudName
+)
+:
+    Cloud<passiveParticle>(mesh, cloudName, false)
+{
+    readFields();
+}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+void Foam::passiveParticleCloud::readFields()
+{
+    passiveParticle::readFields(*this);
+}
+
+
+void Foam::passiveParticleCloud::writeFields() const
+{
+    passiveParticle::writeFields(*this);
+}
 
-} // End namespace Foam
 
 // ************************************************************************* //
diff --git a/src/lagrangian/basic/passiveParticle/passiveParticleCloud.H b/src/lagrangian/basic/passiveParticle/passiveParticleCloud.H
new file mode 100644
index 0000000000000000000000000000000000000000..b8faac8f439c9bd4754b2c7d5c8189dba7f70268
--- /dev/null
+++ b/src/lagrangian/basic/passiveParticle/passiveParticleCloud.H
@@ -0,0 +1,94 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::passiveParticleCloud
+
+Description
+    A Cloud of passive particles
+
+SourceFiles
+    passiveParticleCloud.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef passiveParticleCloud_H
+#define passiveParticleCloud_H
+
+#include "Cloud.H"
+#include "passiveParticle.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+                           Class passiveParticleCloud Declaration
+\*---------------------------------------------------------------------------*/
+
+class passiveParticleCloud
+:
+    public Cloud<passiveParticle>
+{
+    // Private Member Functions
+
+        //- Disallow default bitwise copy construct
+        passiveParticleCloud(const passiveParticleCloud&);
+
+        //- Disallow default bitwise assignment
+        void operator=(const passiveParticleCloud&);
+
+
+public:
+
+    // Constructors
+
+        //- Construct given mesh
+        passiveParticleCloud
+        (
+            const polyMesh&,
+            const word& cloudName = "defaultCloud"
+        );
+
+
+    // Member Functions
+
+        //- Read fields
+        virtual void readFields();
+
+        //- Write fields
+        virtual void writeFields() const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/basic/polyMeshInfo/polyMeshInfo.C b/src/lagrangian/basic/polyMeshInfo/polyMeshInfo.C
deleted file mode 100644
index 16b347ccbe3b0415344c6d426cef63b2feb563df..0000000000000000000000000000000000000000
--- a/src/lagrangian/basic/polyMeshInfo/polyMeshInfo.C
+++ /dev/null
@@ -1,325 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by the
-    Free Software Foundation; either version 2 of the License, or (at your
-    option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM; if not, write to the Free Software Foundation,
-    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-\*---------------------------------------------------------------------------*/
-
-#include "polyMeshInfo.H"
-#include "wedgePolyPatch.H"
-#include "symmetryPolyPatch.H"
-#include "emptyPolyPatch.H"
-#include "mathematicalConstants.H"
-
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
-
-namespace Foam
-{
-    defineTypeNameAndDebug(polyMeshInfo, 0);
-}
-
-// * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
-
-void Foam::polyMeshInfo::setCentrePoint()
-{
-    boundBox bounds = mesh_.bounds();
-
-    centrePoint_ = 0.5*(bounds.max() + bounds.min());
-}
-
-
-void Foam::polyMeshInfo::setEmptyComponent(const vector& dir)
-{
-    for (direction cmpt=0; cmpt<vector::nComponents; cmpt++)
-    {
-        if (dir[cmpt] > 1.0e-6)
-        {
-            emptyComponent_ = cmpt;
-        }
-    }
-}
-
-
-void Foam::polyMeshInfo::queryWedge()
-{
-    label patchId[4];
-
-    bool symmPlaneExists = false;
-
-    forAll(mesh_.boundaryMesh(), patchi)
-    {
-        const polyPatch& patch = mesh_.boundaryMesh()[patchi];
-        if (isA<wedgePolyPatch>(patch))
-        {
-            if (patch.size())
-            {
-                nWedge_++;
-                if (nWedge_ > 4)
-                {
-                    break;
-                }
-                patchId[nWedge_-1] = patchi;
-           }
-        }
-        else if (isA<symmetryPolyPatch>(patch))
-        {
-            symmPlaneExists = true;
-        }
-    }
-
-    if (nWedge_ != 0 && nWedge_ != 2 && nWedge_ != 4)
-    {
-        FatalErrorIn("void polyMeshInfo::queryWedge() const")
-            << "Number of wedge patches " << nWedge_ << " is incorrect, "
-               "should be 0, 2 or 4"
-            << exit(FatalError);
-    }
-    else
-    {
-        if (symmPlaneExists)
-        {
-            wedgeAngle_ = mathematicalConstant::pi;
-        }
-        else
-        {
-            if (nWedge_)
-            {
-               if (nWedge_ > 2)
-                {
-                    WarningIn("void polyMeshInfo::queryWedge() const")
-                        << "Only configured for cases with 2 wedges. "
-                        << "Lagrangian calculations may result in errors"
-                        << endl;
-                }
-               // Get the vector normal to wedge patch1
-                const wedgePolyPatch& patch1 = refCast<const wedgePolyPatch>
-                    (mesh_.boundaryMesh()[patchId[0]]);
-                vector n1 = patch1.patchNormal();
-
-                // Get the vector normal to wedge patch2
-                const wedgePolyPatch& patch2 = refCast<const wedgePolyPatch>
-                    (mesh_.boundaryMesh()[patchId[1]]);
-                vector n2 = patch2.patchNormal();
-
-                // Calculate the angle swept between the patches
-                const scalar arcCos = (n1 & n2)/mag(n1);
-                wedgeAngle_ = mathematicalConstant::pi - acos(arcCos);
-
-                // Get the centre normal
-                centreNormal_ = patch1.centreNormal();
-
-                // Get the wedge axis
-                wedgeAxis_  = patch1.axis();
-            }
-        }
-    }
-}
-
-
-void Foam::polyMeshInfo::queryDirections()
-{
-    vector dirVec = vector::zero;
-
-    forAll(mesh_.boundaryMesh(), patchi)
-    {
-        if (isA<emptyPolyPatch>(mesh_.boundaryMesh()[patchi]))
-        {
-            if (mesh_.boundaryMesh()[patchi].size())
-            {
-                nEmpty_++;
-                dirVec +=
-                    sum(cmptMag(mesh_.boundaryMesh()[patchi].faceAreas()));
-            }
-        }
-    }
-
-
-    for (direction cmpt=0; cmpt<vector::nComponents; cmpt++)
-    {
-        directions_[cmpt] = 1;
-    }
-
-    if (nEmpty_)
-    {
-        reduce(dirVec, sumOp<vector>());
-
-        dirVec /= mag(dirVec);
-
-        for (direction cmpt=0; cmpt<vector::nComponents; cmpt++)
-        {
-            if (dirVec[cmpt] > 1.0e-6)
-            {
-                directions_[cmpt] = -1;
-                emptyComponent_ = cmpt;
-            }
-            else
-            {
-                directions_[cmpt] = 1;
-            }
-        }
-
-        // Set the patch normal
-        centreNormal_ = dirVec;
-    }
-}
-
-
-// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
-
-Foam::polyMeshInfo::polyMeshInfo
-(
-    const polyMesh& mesh
-)
-:
-    mesh_(mesh),
-    nGeometricD_(0),
-    nSolutionD_(0),
-    centreNormal_(vector::zero),
-    emptyComponent_(0),
-    centrePoint_(vector::zero),
-    nEmpty_(0),
-    nWedge_(0),
-    wedgeAxis_(vector::zero),
-    wedgeAngle_(0)
-{
-    setCentrePoint();
-
-    queryWedge();
-
-    queryDirections();
-
-    nSolutionD_ = cmptSum(directions_ + Vector<label>::one)/2;
-
-    nGeometricD_ = nSolutionD_ - nWedge_/2;
-
-    if (nGeometricD_ == 2)
-    {
-        setEmptyComponent(centreNormal_);
-    }
-}
-
-
-// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
-
-Foam::polyMeshInfo::~polyMeshInfo()
-{}
-
-
-// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
-
-Foam::label Foam::polyMeshInfo::nGeometricD() const
-{
-    return nGeometricD_;
-}
-
-
-Foam::label Foam::polyMeshInfo::nSolutionD() const
-{
-    return nSolutionD_;
-}
-
-
-bool Foam::polyMeshInfo::caseIs2dWedge() const
-{
-    return (nWedge_ > 0);
-}
-
-
-bool Foam::polyMeshInfo::caseIs2dSlab() const
-{
-    return (nEmpty_ > 0);
-}
-
-
-bool Foam::polyMeshInfo::caseIs2d() const
-{
-    return (nGeometricD_ == 2);
-}
-
-
-bool Foam::polyMeshInfo::caseIs3d() const
-{
-    return (nGeometricD_ == 3);
-}
-
-
-Foam::vector Foam::polyMeshInfo::wedgeAxis() const
-{
-    if (nWedge_)
-    {
-        return wedgeAxis_;
-    }
-    else
-    {
-        WarningIn("Foam::polyMeshInfo::wedgeAxis()")
-            << "wedgeAxis() requested, but case is not of wedge type. "
-            << "Returning zero vector" << endl;
-        return vector::zero;
-    }
-}
-
-
-Foam::scalar Foam::polyMeshInfo::wedgeAngle() const
-{
-    if (nWedge_)
-    {
-        return wedgeAngle_;
-    }
-    else
-    {
-        WarningIn("Foam::polyMeshInfo::wedgeAngle()")
-            << "wedgeAngle() requested, but case is not of wedge type. "
-            << "Returning zero" << endl;
-        return 0.0;
-    }
-}
-
-
-Foam::vector Foam::polyMeshInfo::centreNormal() const
-{
-    if (nGeometricD_ == 2)
-    {
-        return centreNormal_;
-    }
-    else
-    {
-        WarningIn("Foam::polyMeshInfo::centreNormal()")
-            << "centreNormal() requested, but case is not 2-D. "
-            << "Returning zero vector" << endl;
-        return vector::zero;
-    }
-}
-
-
-Foam::label Foam::polyMeshInfo::emptyComponent() const
-{
-    return emptyComponent_;
-}
-
-
-Foam::vector Foam::polyMeshInfo::centrePoint() const
-{
-    return centrePoint_;
-}
-
-
-// ************************************************************************* //
diff --git a/src/lagrangian/basic/polyMeshInfo/polyMeshInfo.H b/src/lagrangian/basic/polyMeshInfo/polyMeshInfo.H
deleted file mode 100644
index c047afac1845c381d1c569981e511baf47be4d35..0000000000000000000000000000000000000000
--- a/src/lagrangian/basic/polyMeshInfo/polyMeshInfo.H
+++ /dev/null
@@ -1,176 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by the
-    Free Software Foundation; either version 2 of the License, or (at your
-    option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM; if not, write to the Free Software Foundation,
-    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-Class
-    Foam::polyMeshInfo
-
-Description
-
-
-SourceFiles
-    polyMeshInfo.C
-
-\*---------------------------------------------------------------------------*/
-
-#ifndef polyMeshInfo_H
-#define polyMeshInfo_H
-
-#include "polyMesh.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-
-/*---------------------------------------------------------------------------*\
-                        Class polyMeshInfo Declaration
-\*---------------------------------------------------------------------------*/
-
-class polyMeshInfo
-{
-
-    // Private data
-
-        //- Reference to the mesh
-        const polyMesh& mesh_;
-
-        //- Vector of valid directions in mesh
-        //  defined according to the presence of empty patches
-        mutable Vector<label> directions_;
-
-        //- Number of number of valid geoemtric dimensions in the mesh
-        label nGeometricD_;
-
-        //- Number of number of valid solution dimensions in the mesh
-        //  For wedge cases this includes the circumferential direction
-        //  in case of swirl
-        label nSolutionD_;
-
-        //- Plane normal to the wedge patches, or between empty patches
-        // for slab 2-D cases
-        vector centreNormal_;
-
-        //- Empty/unused component for 2-D cases
-        label emptyComponent_;
-
-        //- Geometric centre point
-        vector centrePoint_;
-
-        //- Number of empty patches
-        label nEmpty_;
-
-        //- Number of wedge patches
-        label nWedge_;
-
-        //- Axis of wedge
-        vector wedgeAxis_;
-
-        //- Angle of wedge
-        scalar wedgeAngle_;
-
-
-    // Private member functions
-
-        //- Set the value of the mesh centre point
-        void setCentrePoint();
-
-        //- Determine wedge information
-        void queryWedge();
-
-        //- Determine mesh directions
-        void queryDirections();
-
-
-public:
-
-    //- Runtime type information
-    TypeName("polyMeshInfo");
-
-    // Constructors
-
-        //- Construct from components
-        polyMeshInfo
-        (
-            const polyMesh& mesh
-        );
-
-
-    // Destructors
-
-        virtual ~polyMeshInfo();
-
-
-    // Member functions
-
-        //- Access
-
-            //- Return the number of valid geoemtric dimensions in the mesh
-            label nGeometricD() const;
-
-            //- Return the number of valid solution dimensions in the mesh
-            label nSolutionD() const;
-
-            //- Flag to indicate whether case is a 2-D wedge
-            bool caseIs2dWedge() const;
-
-            //- Flag to indicate whether case is a 2-D slab
-            bool caseIs2dSlab() const;
-
-            //- Flag to indicate whether case is 2-D
-            bool caseIs2d() const;
-
-            //- Flag to indicate whether case is 3-D
-            bool caseIs3d() const;
-
-            //- Return axis of wedge
-            vector wedgeAxis() const;
-
-            //- Return angle of wedge
-            scalar wedgeAngle() const;
-
-            //- Return the centre normal
-            vector centreNormal() const;
-
-            //- Return empty component
-            label emptyComponent() const;
-
-            //- Return centre point
-            vector centrePoint() const;
-
-            //- Set the empty component direction based on normal vector dir
-            void setEmptyComponent(const vector& dir);
-
-};
-
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-} // End namespace Foam
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-#endif
-
-// ************************************************************************* //
-
diff --git a/src/lagrangian/coalCombustion/CoalCloud/CoalCloud.C b/src/lagrangian/coalCombustion/CoalCloud/CoalCloud.C
new file mode 100644
index 0000000000000000000000000000000000000000..0f274d70bf338b8e8a45ac0ee056b439b294be16
--- /dev/null
+++ b/src/lagrangian/coalCombustion/CoalCloud/CoalCloud.C
@@ -0,0 +1,70 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "CoalCloud.H"
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template<class ThermoType>
+Foam::CoalCloud<ThermoType>::CoalCloud
+(
+    const word& cloudName,
+    const volScalarField& rho,
+    const volVectorField& U,
+    const dimensionedVector& g,
+    basicThermo& thermo
+)
+:
+    ReactingMultiphaseCloud<CoalParcel<ThermoType> >
+    (
+        cloudName,
+        rho,
+        U,
+        g,
+        thermo
+    )
+{
+    CoalParcel<ThermoType>::readFields(*this);
+}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+template<class ThermoType>
+Foam::CoalCloud<ThermoType>::~CoalCloud()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+template<class ThermoType>
+void Foam::CoalCloud<ThermoType>::writeFields() const
+{
+    CoalParcel<ThermoType>::writeFields(*this);
+}
+
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/clouds/derived/basicReactingCloud/basicReactingCloud.H b/src/lagrangian/coalCombustion/CoalCloud/CoalCloud.H
similarity index 73%
rename from src/lagrangian/intermediate/clouds/derived/basicReactingCloud/basicReactingCloud.H
rename to src/lagrangian/coalCombustion/CoalCloud/CoalCloud.H
index e95a8674326135f073f87c7c05969b35cb16827c..8516508d8b317ea68a462d4bc3832fd05e0a5b43 100644
--- a/src/lagrangian/intermediate/clouds/derived/basicReactingCloud/basicReactingCloud.H
+++ b/src/lagrangian/coalCombustion/CoalCloud/CoalCloud.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -23,20 +23,20 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::basicReactingCloud
+    CoalCloud
 
 Description
 
 SourceFiles
-    basicReactingCloud.C
+    CoalCloud.C
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef basicReactingCloud_H
-#define basicReactingCloud_H
+#ifndef CoalCloud_H
+#define CoalCloud_H
 
-#include "ReactingCloud.H"
-#include "basicReactingParcel.H"
+#include "ReactingMultiphaseCloud.H"
+#include "CoalParcel.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -44,52 +44,50 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                        Class basicReactingCloud Declaration
+                          Class CoalCloud Declaration
 \*---------------------------------------------------------------------------*/
 
-class basicReactingCloud
+template<class ThermoType>
+class CoalCloud
 :
-    public ReactingCloud<basicReactingParcel>
+    public ReactingMultiphaseCloud<CoalParcel<ThermoType> >
 {
-
     // Private Member Functions
 
         //- Disallow default bitwise copy construct
-        basicReactingCloud(const basicReactingCloud&);
+        CoalCloud(const CoalCloud&);
 
         //- Disallow default bitwise assignment
-        void operator=(const basicReactingCloud&);
+        void operator=(const CoalCloud&);
 
 
 public:
 
-    //- Runtime type information
-    TypeName("basicReactingCloud");
+    //-Runtime type information
+    TypeName("CoalCloud");
 
 
     // Constructors
 
         //- Construct given carrier gas fields
-        basicReactingCloud
+        CoalCloud
         (
-            const word& cloudType,
+            const word& cloudName,
             const volScalarField& rho,
             const volVectorField& U,
             const dimensionedVector& g,
-            hCombustionThermo& thermo,
-            PtrList<specieReactingProperties>& gases
+            basicThermo& thermo
         );
 
 
     //- Destructor
-
-        ~basicReactingCloud();
+    ~CoalCloud();
 
 
     // Member Functions
 
         //- Write fields
-        void writeFields() const;
+        virtual void writeFields() const;
 };
 
 
@@ -99,6 +97,12 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+#ifdef NoRepository
+    #include "CoalCloud.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 #endif
 
 // ************************************************************************* //
diff --git a/src/lagrangian/coalCombustion/CoalCloud/defineCoalCloud.C b/src/lagrangian/coalCombustion/CoalCloud/defineCoalCloud.C
new file mode 100644
index 0000000000000000000000000000000000000000..cc0fa34f49fd096cc4b831c19fdaaec8fab3abde
--- /dev/null
+++ b/src/lagrangian/coalCombustion/CoalCloud/defineCoalCloud.C
@@ -0,0 +1,38 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "createReactingCloudTypes.H"
+#include "CoalCloud.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    createReactingCloudType(CoalCloud);
+};
+
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/basicReactingParcel.C b/src/lagrangian/coalCombustion/CoalParcel/CoalParcel.C
similarity index 66%
rename from src/lagrangian/intermediate/parcels/derived/basicReactingParcel/basicReactingParcel.C
rename to src/lagrangian/coalCombustion/CoalParcel/CoalParcel.C
index 31176eb5a40b515424e6055772b1a09d7d4bf8ac..ef3448186a61717ac365df1033601c42427dde6c 100644
--- a/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/basicReactingParcel.C
+++ b/src/lagrangian/coalCombustion/CoalParcel/CoalParcel.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -24,68 +24,75 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "basicReactingParcel.H"
+#include "CoalParcel.H"
 
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
-
-namespace Foam
-{
-    defineTypeNameAndDebug(basicReactingParcel, 0);
-    defineParticleTypeNameAndDebug(basicReactingParcel, 0);
-    defineParcelTypeNameAndDebug(basicReactingParcel, 0);
-};
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
+template<class ThermoType>
+Foam::CoalParcel<ThermoType>::CoalParcel
+(
+    ReactingMultiphaseCloud<CoalParcel<ThermoType> >& owner,
+    const vector& position,
+    const label cellI
+)
+:
+    ReactingMultiphaseParcel<CoalParcel<ThermoType> >(owner, position, cellI)
+{}
 
-// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::basicReactingParcel::basicReactingParcel
+template<class ThermoType>
+Foam::CoalParcel<ThermoType>::CoalParcel
 (
-    ReactingCloud<basicReactingParcel>& owner,
-    const label typeId,
+    ReactingMultiphaseCloud<CoalParcel<ThermoType> >& owner,
     const vector& position,
-    const label celli,
+    const label cellI,
+    const label typeId,
+    const scalar nParticle0,
     const scalar d0,
     const vector& U0,
-    const scalar nParticle0,
+    const scalarField& YMixture0,
     const scalarField& YGas0,
     const scalarField& YLiquid0,
     const scalarField& YSolid0,
-    const scalarField& YMixture0,
-    const constantProperties& constProps
+    const typename
+        ReactingMultiphaseParcel<CoalParcel<ThermoType> >::
+        constantProperties& constProps
 )
 :
-    ReactingParcel<basicReactingParcel>
+    ReactingMultiphaseParcel<CoalParcel<ThermoType> >
     (
         owner,
-        typeId,
         position,
-        celli,
+        cellI,
+        typeId,
+        nParticle0,
         d0,
         U0,
-        nParticle0,
+        YMixture0,
         YGas0,
         YLiquid0,
         YSolid0,
-        YMixture0,
         constProps
     )
 {}
 
 
-Foam::basicReactingParcel::basicReactingParcel
+template<class ThermoType>
+Foam::CoalParcel<ThermoType>::CoalParcel
 (
-    const Cloud<basicReactingParcel>& cloud,
+    const Cloud<CoalParcel<ThermoType> >& cloud,
     Istream& is,
     bool readFields
 )
 :
-    ReactingParcel<basicReactingParcel>(cloud, is, readFields)
+    ReactingMultiphaseParcel<CoalParcel<ThermoType> >(cloud, is, readFields)
 {}
 
 
 // * * * * * * * * * * * * * * * *  Destructors  * * * * * * * * * * * * * * //
 
-Foam::basicReactingParcel::~basicReactingParcel()
+template<class ThermoType>
+Foam::CoalParcel<ThermoType>::~CoalParcel()
 {}
 
 
diff --git a/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/basicReactingParcel.H b/src/lagrangian/coalCombustion/CoalParcel/CoalParcel.H
similarity index 61%
rename from src/lagrangian/intermediate/parcels/derived/basicReactingParcel/basicReactingParcel.H
rename to src/lagrangian/coalCombustion/CoalParcel/CoalParcel.H
index d4e9b93437a1a3cf5f00a5f90137362a44b88d81..f313a16501e71aea51a8418db090d7ba91e75f92 100644
--- a/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/basicReactingParcel.H
+++ b/src/lagrangian/coalCombustion/CoalParcel/CoalParcel.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -23,92 +23,107 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::basicReactingParcel
+    CoalParcel
 
 Description
 
 
 SourceFiles
-    basicReactingParcel.C
-    basicReactingParcelIO.C
+    CoalParcel.C
+    CoalParcelIO.C
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef basicReactingParcel_H
-#define basicReactingParcel_H
+#ifndef CoalParcel_H
+#define CoalParcel_H
 
-#include "ReactingParcel.H"
+#include "ReactingMultiphaseParcel.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 namespace Foam
 {
 
+// Forward declaration of classes
+template<class ThermoType>
+class CoalParcel;
+
 /*---------------------------------------------------------------------------*\
-                        Class basicReactingParcel Declaration
+                         Class CoalParcel Declaration
 \*---------------------------------------------------------------------------*/
 
-class basicReactingParcel
+template<class ThermoType>
+class CoalParcel
 :
-    public ReactingParcel<basicReactingParcel>
+    public ReactingMultiphaseParcel<CoalParcel<ThermoType> >
 {
-
 public:
 
-    //- Run-time type information
-    TypeName("basicReactingParcel");
+    //- The type of thermodynamics this parcel was instantiated for
+    typedef ThermoType thermoType;
+
+    // Run-time type information
+    TypeName("CoalParcel");
 
     // Constructors
 
+        //- Construct from owner, position, and cloud owner
+        //  Other properties initialised as null
+        CoalParcel
+        (
+             ReactingMultiphaseCloud<CoalParcel>& owner,
+             const vector& position,
+             const label cellI
+        );
+
         //- Construct from components
-        basicReactingParcel
+        CoalParcel
         (
-             ReactingCloud<basicReactingParcel>& owner,
-             const label typeId,
+             ReactingMultiphaseCloud<CoalParcel>& owner,
              const vector& position,
-             const label celli,
+             const label cellI,
+             const label typeId,
+             const scalar nParticle0,
              const scalar d0,
              const vector& U0,
-             const scalar nParticle0,
+             const scalarField& YMixture0,
              const scalarField& YGas0,
              const scalarField& YLiquid0,
              const scalarField& YSolid0,
-             const scalarField& YMixture0,
-             const constantProperties& constProps
+             const typename
+                 ReactingMultiphaseParcel<CoalParcel>::
+                 constantProperties& constProps
         );
 
         //- Construct from Istream
-        basicReactingParcel
+        CoalParcel
         (
-            const Cloud<basicReactingParcel>& c,
+            const Cloud<CoalParcel>& c,
             Istream& is,
             bool readFields = true
         );
 
         //- Construct and return a clone
-        autoPtr<basicReactingParcel> clone() const
+        autoPtr<CoalParcel> clone() const
         {
-            return autoPtr<basicReactingParcel>
-                (new basicReactingParcel(*this));
+            return autoPtr<CoalParcel>(new CoalParcel(*this));
         }
 
 
-    // Destructors
-
-        virtual ~basicReactingParcel();
+    //- Destructor
+    virtual ~CoalParcel();
 };
 
 
-template<>
-inline bool contiguous<basicReactingParcel>()
-{
-    return false; // Now have scalar lists/fields (mass fractions)
-}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+} // End namespace Foam
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-} // End namespace Foam
+#ifdef NoRepository
+    #include "CoalParcel.C"
+#endif
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
diff --git a/src/lagrangian/coalCombustion/CoalParcel/defineCoalParcel.C b/src/lagrangian/coalCombustion/CoalParcel/defineCoalParcel.C
new file mode 100644
index 0000000000000000000000000000000000000000..204568acb15df7d4533112aa6bd08345d022823f
--- /dev/null
+++ b/src/lagrangian/coalCombustion/CoalParcel/defineCoalParcel.C
@@ -0,0 +1,38 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "createCoalParcelTypes.H"
+#include "CoalParcel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    createCoalParcelType(CoalParcel);
+};
+
+
+// ************************************************************************* //
diff --git a/src/lagrangian/coalCombustion/CoalParcel/makeCoalParcelSubmodels.C b/src/lagrangian/coalCombustion/CoalParcel/makeCoalParcelSubmodels.C
new file mode 100644
index 0000000000000000000000000000000000000000..1f6787228821a18226b28111b721621691bc6bb6
--- /dev/null
+++ b/src/lagrangian/coalCombustion/CoalParcel/makeCoalParcelSubmodels.C
@@ -0,0 +1,71 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "CoalParcel.H"
+
+// Kinematic
+#include "makeReactingParcelDispersionModels.H"
+#include "makeReactingParcelDragModels.H"
+#include "makeReactingMultiphaseParcelInjectionModels.H" // MP variant
+#include "makeReactingParcelPatchInteractionModels.H"
+#include "makeReactingParcelPostProcessingModels.H"
+
+// Thermodynamic
+#include "makeReactingParcelHeatTransferModels.H"
+
+// Reacting
+#include "makeReactingMultiphaseParcelCompositionModels.H" // MP variant
+#include "makeReactingParcelPhaseChangeModels.H"
+
+// Reacting multiphase
+#include "makeReactingMultiphaseParcelDevolatilisationModels.H"
+#include "makeCoalParcelSurfaceReactionModels.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    // Kinematic sub-models
+    makeReactingDispersionModels(CoalParcel);
+    makeReactingDragModels(CoalParcel);
+    makeReactingMultiphaseInjectionModels(CoalParcel);
+    makeReactingPatchInteractionModels(CoalParcel);
+    makeReactingPostProcessingModels(CoalParcel);
+
+    // Thermo sub-models
+    makeReactingHeatTransferModels(CoalParcel);
+
+    // Reacting sub-models
+    makeReactingMultiphaseCompositionModels(CoalParcel);
+    makeReactingPhaseChangeModels(CoalParcel);
+
+    // Reacting multiphase sub-models
+    makeReactingMultiphaseDevolatilisationModels(CoalParcel);
+    makeCoalSurfaceReactionModels(CoalParcel);
+};
+
+
+// ************************************************************************* //
diff --git a/src/lagrangian/coalCombustion/Make/files b/src/lagrangian/coalCombustion/Make/files
new file mode 100644
index 0000000000000000000000000000000000000000..2c7aac61ab97d66fe76fab863c8186c643d3beba
--- /dev/null
+++ b/src/lagrangian/coalCombustion/Make/files
@@ -0,0 +1,8 @@
+/* Coal cloud */
+CoalCloud/defineCoalCloud.C
+
+/* Coal parcel and sub-models */
+CoalParcel/defineCoalParcel.C
+CoalParcel/makeCoalParcelSubmodels.C
+
+LIB = $(FOAM_LIBBIN)/libcoalCombustion
diff --git a/src/lagrangian/coalCombustion/Make/options b/src/lagrangian/coalCombustion/Make/options
new file mode 100644
index 0000000000000000000000000000000000000000..965409487a3c83e2651e6cd1facbc8f479f68228
--- /dev/null
+++ b/src/lagrangian/coalCombustion/Make/options
@@ -0,0 +1,35 @@
+EXE_INC = \
+    -I$(LIB_SRC)/finiteVolume/lnInclude \
+    -I$(LIB_SRC)/meshTools/lnInclude \
+    -I$(LIB_SRC)/lagrangian/basic/lnInclude \
+    -I$(LIB_SRC)/lagrangian/intermediate/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/pdfs/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/liquids/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/liquidMixture/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/solids/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/solidMixture/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/radiation/lnInclude \
+    -I$(LIB_SRC)/turbulenceModels \
+    -I$(LIB_SRC)/turbulenceModels/compressible/turbulenceModel \
+    -I$(LIB_SRC)/turbulenceModels/compressible/RAS/lnInclude \
+    -I$(LIB_SRC)/turbulenceModels/LES/LESdeltas/lnInclude \
+    -I$(LIB_SRC)/turbulenceModels/compressible/LES/lnInclude
+
+LIB_LIBS = \
+    -lfiniteVolume \
+    -lmeshTools \
+    -llagrangian \
+    -llagrangianIntermediate \
+    -lpdf \
+    -lspecie \
+    -lbasicThermophysicalModels \
+    -lliquids \
+    -lliquidMixture \
+    -lsolids \
+    -lsolidMixture \
+    -lreactionThermophysicalModels \
+    -lcompressibleRASModels \
+    -lcompressibleLESModels
diff --git a/src/lagrangian/coalCombustion/include/createCoalParcelTypes.H b/src/lagrangian/coalCombustion/include/createCoalParcelTypes.H
new file mode 100644
index 0000000000000000000000000000000000000000..7d7f95da36a1d0f7a0db56b22d6ac36e53d70aa1
--- /dev/null
+++ b/src/lagrangian/coalCombustion/include/createCoalParcelTypes.H
@@ -0,0 +1,103 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef createCoalParcelTypes_H
+#define createCoalParcelTypes_H
+
+#include "makeParcelIOList.H"
+#include "thermoPhysicsTypes.H"
+#include "CoalCloud.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#define createCoalParcelType(ParcelType)                                      \
+                                                                              \
+    createCoalParcelThermoType                                                \
+    (                                                                         \
+        ParcelType,                                                           \
+        constGasThermoPhysics                                                 \
+    );                                                                        \
+    createCoalParcelThermoType                                                \
+    (                                                                         \
+        ParcelType,                                                           \
+        gasThermoPhysics                                                      \
+    );                                                                        \
+    createCoalParcelThermoType                                                \
+    (                                                                         \
+        ParcelType,                                                           \
+        icoPoly8ThermoPhysics                                                 \
+    );
+
+
+#define createCoalParcelThermoType(ParcelType, ThermoType)                    \
+                                                                              \
+    typedef ParcelType<ThermoType> ParcelType##ThermoType;                    \
+                                                                              \
+    makeParcelIOList(ParcelType##ThermoType);                                 \
+                                                                              \
+    defineTemplateTypeNameAndDebug(ParcelType##ThermoType, 0);                \
+    defineTemplateTypeNameAndDebug(Particle<ParcelType##ThermoType>, 0);      \
+    defineTemplateTypeNameAndDebug(Cloud<ParcelType##ThermoType>, 0);         \
+                                                                              \
+    defineParcelTypeNameAndDebug(KinematicParcel<ParcelType##ThermoType>, 0); \
+    defineTemplateTypeNameAndDebug                                            \
+    (                                                                         \
+        KinematicParcel<ParcelType##ThermoType>,                              \
+        0                                                                     \
+    );                                                                        \
+    defineParcelTypeNameAndDebug(ThermoParcel<ParcelType##ThermoType>, 0);    \
+    defineTemplateTypeNameAndDebug(ThermoParcel<ParcelType##ThermoType>, 0);  \
+    defineParcelTypeNameAndDebug(ReactingParcel<ParcelType##ThermoType>, 0);  \
+    defineTemplateTypeNameAndDebug(ReactingParcel<ParcelType##ThermoType>, 0);\
+    defineParcelTypeNameAndDebug                                              \
+    (                                                                         \
+        ReactingMultiphaseParcel<ParcelType##ThermoType>,                     \
+        0                                                                     \
+    );                                                                        \
+    defineTemplateTypeNameAndDebug                                            \
+    (                                                                         \
+        ReactingMultiphaseParcel<ParcelType##ThermoType>,                     \
+        0                                                                     \
+    );                                                                        \
+    defineParcelTypeNameAndDebug(CoalParcel<ParcelType##ThermoType>, 0);      \
+    defineTemplateTypeNameAndDebug(CoalParcel<ParcelType##ThermoType>, 0);    \
+                                                                              \
+    defineParcelTypeNameAndDebug(KinematicCloud<ParcelType##ThermoType>, 0);  \
+    defineParcelTypeNameAndDebug(ThermoCloud<ParcelType##ThermoType>, 0);     \
+    defineParcelTypeNameAndDebug(ReactingCloud<ParcelType##ThermoType>, 0);   \
+    defineParcelTypeNameAndDebug                                              \
+    (                                                                         \
+        ReactingMultiphaseCloud<ParcelType##ThermoType>,                      \
+        0                                                                     \
+    );                                                                        \
+    defineParcelTypeNameAndDebug(CoalCloud<ParcelType##ThermoType>, 0);
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/coalCombustion/include/makeCoalParcelSurfaceReactionModels.H b/src/lagrangian/coalCombustion/include/makeCoalParcelSurfaceReactionModels.H
new file mode 100644
index 0000000000000000000000000000000000000000..0a8e17481aa2b0ff4599ef411157dd734ee89ba2
--- /dev/null
+++ b/src/lagrangian/coalCombustion/include/makeCoalParcelSurfaceReactionModels.H
@@ -0,0 +1,102 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef makeCoalParcelSurfaceReactionModels_H
+#define makeCoalParcelSurfaceReactionModels_H
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "thermoPhysicsTypes.H"
+#include "ReactingMultiphaseCloud.H"
+
+#include "NoSurfaceReaction.H"
+#include "COxidationDiffusionLimitedRate.H"
+#include "COxidationKineticDiffusionLimitedRate.H"
+#include "COxidationMurphyShaddix.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#define makeCoalSurfaceReactionModels(ParcelType)                             \
+                                                                              \
+    makeCoalSurfaceReactionModelThermoType                                    \
+    (                                                                         \
+        ParcelType,                                                           \
+        constGasThermoPhysics                                                 \
+    );                                                                        \
+    makeCoalSurfaceReactionModelThermoType                                    \
+    (                                                                         \
+        ParcelType,                                                           \
+        gasThermoPhysics                                                      \
+    );                                                                        \
+    makeCoalSurfaceReactionModelThermoType                                    \
+    (                                                                         \
+        ParcelType,                                                           \
+        icoPoly8ThermoPhysics                                                 \
+    );
+
+
+#define makeCoalSurfaceReactionModelThermoType(ParcelType, ThermoType)        \
+                                                                              \
+    makeSurfaceReactionModel                                                  \
+    (                                                                         \
+        ReactingMultiphaseCloud<ParcelType<ThermoType> >                      \
+    );                                                                        \
+                                                                              \
+    makeSurfaceReactionModelThermoType                                        \
+    (                                                                         \
+        NoSurfaceReaction,                                                    \
+        ReactingMultiphaseCloud,                                              \
+        ParcelType,                                                           \
+        ThermoType                                                            \
+    );                                                                        \
+    makeSurfaceReactionModelThermoType                                        \
+    (                                                                         \
+        COxidationDiffusionLimitedRate,                                       \
+        ReactingMultiphaseCloud,                                              \
+        ParcelType,                                                           \
+        ThermoType                                                            \
+    );                                                                        \
+    makeSurfaceReactionModelThermoType                                        \
+    (                                                                         \
+        COxidationKineticDiffusionLimitedRate,                                \
+        ReactingMultiphaseCloud,                                              \
+        ParcelType,                                                           \
+        ThermoType                                                            \
+    );                                                                        \
+    makeSurfaceReactionModelThermoType                                        \
+    (                                                                         \
+        COxidationMurphyShaddix,                                              \
+        ReactingMultiphaseCloud,                                              \
+        ParcelType,                                                           \
+        ThermoType                                                            \
+    );
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationDiffusionLimitedRate/COxidationDiffusionLimitedRate.C b/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationDiffusionLimitedRate/COxidationDiffusionLimitedRate.C
new file mode 100644
index 0000000000000000000000000000000000000000..2e252fbf596518b276d552225c0fc55353f48cc1
--- /dev/null
+++ b/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationDiffusionLimitedRate/COxidationDiffusionLimitedRate.C
@@ -0,0 +1,150 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "COxidationDiffusionLimitedRate.H"
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template<class CloudType>
+Foam::COxidationDiffusionLimitedRate<CloudType>::COxidationDiffusionLimitedRate
+(
+    const dictionary& dict,
+    CloudType& owner
+)
+:
+    SurfaceReactionModel<CloudType>(dict, owner, typeName),
+    Sb_(dimensionedScalar(this->coeffDict().lookup("Sb")).value()),
+    D_(dimensionedScalar(this->coeffDict().lookup("D")).value()),
+    CsLocalId_(-1),
+    O2GlobalId_(owner.composition().globalCarrierId("O2")),
+    CO2GlobalId_(owner.composition().globalCarrierId("CO2")),
+    WC_(0.0),
+    WO2_(0.0),
+    HcCO2_(0.0)
+{
+    // Determine Cs ids
+    label idSolid = owner.composition().idSolid();
+    CsLocalId_ = owner.composition().localId(idSolid, "C");
+
+    // Set local copies of thermo properties
+    WO2_ = owner.mcCarrierThermo().speciesData()[O2GlobalId_].W();
+    scalar WCO2 = owner.mcCarrierThermo().speciesData()[CO2GlobalId_].W();
+    WC_ = WCO2 - WO2_;
+    HcCO2_ = owner.mcCarrierThermo().speciesData()[CO2GlobalId_].Hc();
+
+    if (Sb_ < 0)
+    {
+        FatalErrorIn
+        (
+            "COxidationDiffusionLimitedRate<CloudType>"
+            "("
+                "const dictionary&, "
+                "CloudType&"
+            ")"
+        )   << "Stoichiometry of reaction, Sb, must be greater than zero" << nl
+            << exit(FatalError);
+    }
+}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+template<class CloudType>
+Foam::COxidationDiffusionLimitedRate<CloudType>::
+~COxidationDiffusionLimitedRate()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+template<class CloudType>
+bool Foam::COxidationDiffusionLimitedRate<CloudType>::active() const
+{
+    return true;
+}
+
+
+template<class CloudType>
+Foam::scalar Foam::COxidationDiffusionLimitedRate<CloudType>::calculate
+(
+    const scalar dt,
+    const label cellI,
+    const scalar d,
+    const scalar T,
+    const scalar Tc,
+    const scalar pc,
+    const scalar rhoc,
+    const scalar mass,
+    const scalarField& YGas,
+    const scalarField& YLiquid,
+    const scalarField& YSolid,
+    const scalarField& YMixture,
+    const scalarField& dMassVolatile,
+    scalarField& dMassGas,
+    scalarField& dMassLiquid,
+    scalarField& dMassSolid,
+    scalarField& dMassSRCarrier
+) const
+{
+    // Fraction of remaining combustible material
+    const label idSolid = CloudType::parcelType::SLD;
+    const scalar fComb = YMixture[idSolid]*YSolid[CsLocalId_];
+
+    // Surface combustion active combustible fraction is consumed
+    if (fComb < SMALL)
+    {
+        return 0.0;
+    }
+
+    // Local mass fraction of O2 in the carrier phase
+    const scalar YO2 = this->owner().mcCarrierThermo().Y(O2GlobalId_)[cellI];
+
+    // Change in C mass [kg]
+    scalar dmC =
+        4.0*mathematicalConstant::pi*d*D_*YO2*Tc*rhoc/(Sb_*(T + Tc))*dt;
+
+    // Limit mass transfer by availability of C
+    dmC = min(mass*fComb, dmC);
+
+    // Change in O2 mass [kg]
+    const scalar dmO2 = dmC/WC_*Sb_*WO2_;
+
+    // Mass of newly created CO2 [kg]
+    const scalar dmCO2 = dmC + dmO2;
+
+    // Update local particle C mass
+    dMassSolid[CsLocalId_] += dmC;
+
+    // Update carrier O2 and CO2 mass
+    dMassSRCarrier[O2GlobalId_] -= dmO2;
+    dMassSRCarrier[CO2GlobalId_] += dmCO2;
+
+    // Heat of reaction [J]
+    return -HcCO2_*dmCO2;
+}
+
+
+// ************************************************************************* //
diff --git a/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationDiffusionLimitedRate/COxidationDiffusionLimitedRate.H b/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationDiffusionLimitedRate/COxidationDiffusionLimitedRate.H
new file mode 100644
index 0000000000000000000000000000000000000000..9ab6a5c0f940450b350f8100b6217c387ecc5afe
--- /dev/null
+++ b/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationDiffusionLimitedRate/COxidationDiffusionLimitedRate.H
@@ -0,0 +1,157 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    COxidationDiffusionLimitedRate
+
+Description
+    Diffusion limited rate surface reaction model for coal parcels. Limited to:
+
+        C(s) + Sb*O2 -> CO2
+
+    where Sb is the stoichiometry of the reaction
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef COxidationDiffusionLimitedRate_H
+#define COxidationDiffusionLimitedRate_H
+
+#include "SurfaceReactionModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+// Forward class declarations
+template<class CloudType>
+class COxidationDiffusionLimitedRate;
+
+namespace Foam
+{
+/*---------------------------------------------------------------------------*\
+              Class COxidationDiffusionLimitedRate Declaration
+\*---------------------------------------------------------------------------*/
+
+template<class CloudType>
+class COxidationDiffusionLimitedRate
+:
+    public SurfaceReactionModel<CloudType>
+{
+    // Private data
+
+        // Model constants
+
+            //- Stoichiometry of reaction
+            const scalar Sb_;
+
+            //- Diffusion coefficient of oxidants [m2/s]
+            const scalar D_;
+
+
+        // Addressing
+
+            //- Cs positions in global/local lists
+            label CsLocalId_;
+
+            //- O2 position in global list
+            label O2GlobalId_;
+
+            //- CO2 positions in global list
+            label CO2GlobalId_;
+
+
+        // Local copies of thermo properties
+
+            //- Molecular weight of C [kg/kmol]
+            scalar WC_;
+
+            //- Molecular weight of O2 [kg/kmol]
+            scalar WO2_;
+
+            //- Chemical enthalpy of CO2 [J/kg]
+            scalar HcCO2_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("COxidationDiffusionLimitedRate");
+
+
+    // Constructors
+
+        //- Construct from dictionary
+        COxidationDiffusionLimitedRate
+        (
+            const dictionary& dict,
+            CloudType& owner
+        );
+
+
+    //- Destructor
+    virtual ~COxidationDiffusionLimitedRate();
+
+
+    // Member Functions
+
+        //- Flag to indicate whether model activates surface reaction model
+        virtual bool active() const;
+
+        //- Update surface reactions
+        virtual scalar calculate
+        (
+            const scalar dt,
+            const label cellI,
+            const scalar d,
+            const scalar T,
+            const scalar Tc,
+            const scalar pc,
+            const scalar rhoc,
+            const scalar mass,
+            const scalarField& YGas,
+            const scalarField& YLiquid,
+            const scalarField& YSolid,
+            const scalarField& YMixture,
+            const scalarField& dMassVolatile,
+            scalarField& dMassGas,
+            scalarField& dMassLiquid,
+            scalarField& dMassSolid,
+            scalarField& dMassSRCarrier
+        ) const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#ifdef NoRepository
+    #include "COxidationDiffusionLimitedRate.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationKineticDiffusionLimitedRate/COxidationKineticDiffusionLimitedRate.C b/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationKineticDiffusionLimitedRate/COxidationKineticDiffusionLimitedRate.C
new file mode 100644
index 0000000000000000000000000000000000000000..682bac3ec67c9bd4eb4634daa0e7315ea9d24140
--- /dev/null
+++ b/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationKineticDiffusionLimitedRate/COxidationKineticDiffusionLimitedRate.C
@@ -0,0 +1,166 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "COxidationKineticDiffusionLimitedRate.H"
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template<class CloudType>
+Foam::COxidationKineticDiffusionLimitedRate<CloudType>::
+COxidationKineticDiffusionLimitedRate
+(
+    const dictionary& dict,
+    CloudType& owner
+)
+:
+    SurfaceReactionModel<CloudType>
+    (
+        dict,
+        owner,
+        typeName
+    ),
+    Sb_(dimensionedScalar(this->coeffDict().lookup("Sb")).value()),
+    C1_(dimensionedScalar(this->coeffDict().lookup("C1")).value()),
+    C2_(dimensionedScalar(this->coeffDict().lookup("C2")).value()),
+    E_(dimensionedScalar(this->coeffDict().lookup("E")).value()),
+    CsLocalId_(-1),
+    O2GlobalId_(owner.composition().globalCarrierId("O2")),
+    CO2GlobalId_(owner.composition().globalCarrierId("CO2")),
+    WC_(0.0),
+    WO2_(0.0),
+    HcCO2_(0.0)
+{
+    // Determine Cs ids
+    label idSolid = owner.composition().idSolid();
+    CsLocalId_ = owner.composition().localId(idSolid, "C");
+
+    // Set local copies of thermo properties
+    WO2_ = owner.mcCarrierThermo().speciesData()[O2GlobalId_].W();
+    scalar WCO2 = owner.mcCarrierThermo().speciesData()[CO2GlobalId_].W();
+    WC_ = WCO2 - WO2_;
+    HcCO2_ = owner.mcCarrierThermo().speciesData()[CO2GlobalId_].Hc();
+
+    if (Sb_ < 0)
+    {
+        FatalErrorIn
+        (
+            "COxidationKineticDiffusionLimitedRate"
+            "("
+                "const dictionary&, "
+                "CloudType&"
+            ")"
+        )   << "Stoichiometry of reaction, Sb, must be greater than zero" << nl
+            << exit(FatalError);
+    }
+}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+template<class CloudType>
+Foam::COxidationKineticDiffusionLimitedRate<CloudType>::
+~COxidationKineticDiffusionLimitedRate()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+template<class CloudType>
+bool Foam::COxidationKineticDiffusionLimitedRate<CloudType>::active() const
+{
+    return true;
+}
+
+
+template<class CloudType>
+Foam::scalar Foam::COxidationKineticDiffusionLimitedRate<CloudType>::calculate
+(
+    const scalar dt,
+    const label cellI,
+    const scalar d,
+    const scalar T,
+    const scalar Tc,
+    const scalar pc,
+    const scalar rhoc,
+    const scalar mass,
+    const scalarField& YGas,
+    const scalarField& YLiquid,
+    const scalarField& YSolid,
+    const scalarField& YMixture,
+    const scalarField& dMassVolatile,
+    scalarField& dMassGas,
+    scalarField& dMassLiquid,
+    scalarField& dMassSolid,
+    scalarField& dMassSRCarrier
+) const
+{
+    // Fraction of remaining combustible material
+    const label idSolid = CloudType::parcelType::SLD;
+    const scalar fComb = YMixture[idSolid]*YSolid[CsLocalId_];
+
+    // Surface combustion active combustible fraction is consumed
+    if (fComb < SMALL)
+    {
+        return 0.0;
+    }
+
+    // Local mass fraction of O2 in the carrier phase
+    const scalar YO2 = this->owner().mcCarrierThermo().Y(O2GlobalId_)[cellI];
+
+    // Diffusion rate coefficient
+    const scalar D0 = C1_/d*pow(0.5*(T + Tc), 0.75);
+
+    // Kinetic rate
+    const scalar Rk = C2_*exp(-E_/(specie::RR*Tc));
+
+    // Particle surface area
+    const scalar Ap = mathematicalConstant::pi*sqr(d);
+
+    // Change in C mass [kg]
+    scalar dmC = Ap*rhoc*specie::RR*Tc*YO2/WO2_*D0*Rk/(D0 + Rk);
+
+    // Limit mass transfer by availability of C
+    dmC = min(mass*fComb, dmC);
+
+    // Change in O2 mass [kg]
+    const scalar dmO2 = dmC/WC_*Sb_*WO2_;
+
+    // Mass of newly created CO2 [kg]
+    const scalar dmCO2 = dmC + dmO2;
+
+    // Update local particle C mass
+    dMassSolid[CsLocalId_] += dmC;
+
+    // Update carrier O2 and CO2 mass
+    dMassSRCarrier[O2GlobalId_] -= dmO2;
+    dMassSRCarrier[CO2GlobalId_] += dmCO2;
+
+    // Heat of reaction [J]
+    return -HcCO2_*dmCO2;
+}
+
+
+// ************************************************************************* //
diff --git a/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationKineticDiffusionLimitedRate/COxidationKineticDiffusionLimitedRate.H b/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationKineticDiffusionLimitedRate/COxidationKineticDiffusionLimitedRate.H
new file mode 100644
index 0000000000000000000000000000000000000000..6500b24c4ffd82f89501bbaf350e433ceb79ac1f
--- /dev/null
+++ b/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationKineticDiffusionLimitedRate/COxidationKineticDiffusionLimitedRate.H
@@ -0,0 +1,165 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    COxidationKineticDiffusionLimitedRate
+
+Description
+    Kinetic/diffusion limited rate surface reaction model for coal parcels.
+    Limited to:
+
+        C(s) + Sb*O2 -> CO2
+
+    where Sb is the stoichiometry of the reaction
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef COxidationKineticDiffusionLimitedRate_H
+#define COxidationKineticDiffusionLimitedRate_H
+
+#include "SurfaceReactionModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+// Forward class declarations
+template<class CloudType>
+class COxidationKineticDiffusionLimitedRate;
+
+/*---------------------------------------------------------------------------*\
+            Class COxidationKineticDiffusionLimitedRate Declaration
+\*---------------------------------------------------------------------------*/
+
+template<class CloudType>
+class COxidationKineticDiffusionLimitedRate
+:
+    public SurfaceReactionModel<CloudType>
+{
+    // Private data
+
+        // Model constants
+
+            //- Stoichiometry of reaction
+            const scalar Sb_;
+
+            //- Mass diffusion limited rate constant, C1
+            const scalar C1_;
+
+            //- Kinetics limited rate pre-exponential constant, C2
+            const scalar C2_;
+
+            //- Kinetics limited rate activation energy
+            const scalar E_;
+
+
+        // Addressing
+
+            //- Cs positions in global/local lists
+            label CsLocalId_;
+
+            //- O2 position in global list
+            label O2GlobalId_;
+
+            //- CO2 positions in global list
+            label CO2GlobalId_;
+
+
+        // Local copies of thermo properties
+
+            //- Molecular weight of C [kg/kmol]
+            scalar WC_;
+
+            //- Molecular weight of O2 [kg/kmol]
+            scalar WO2_;
+
+            //- Chemical enthalpy of CO2 [J/kg]
+            scalar HcCO2_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("COxidationKineticDiffusionLimitedRate");
+
+
+    // Constructors
+
+        //- Construct from dictionary
+        COxidationKineticDiffusionLimitedRate
+        (
+            const dictionary& dict,
+            CloudType& owner
+        );
+
+
+    //- Destructor
+    virtual ~COxidationKineticDiffusionLimitedRate();
+
+
+    // Member Functions
+
+        //- Flag to indicate whether model activates surface reaction model
+        virtual bool active() const;
+
+        //- Update surface reactions
+        virtual scalar calculate
+        (
+            const scalar dt,
+            const label cellI,
+            const scalar d,
+            const scalar T,
+            const scalar Tc,
+            const scalar pc,
+            const scalar rhoc,
+            const scalar mass,
+            const scalarField& YGas,
+            const scalarField& YLiquid,
+            const scalarField& YSolid,
+            const scalarField& YMixture,
+            const scalarField& dMassVolatile,
+            scalarField& dMassGas,
+            scalarField& dMassLiquid,
+            scalarField& dMassSolid,
+            scalarField& dMassSRCarrier
+        ) const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#ifdef NoRepository
+    #include "COxidationKineticDiffusionLimitedRate.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationMurphyShaddix/COxidationMurphyShaddix.C b/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationMurphyShaddix/COxidationMurphyShaddix.C
new file mode 100644
index 0000000000000000000000000000000000000000..e2a1c68700d84c7f2ad2470881d5ee946ee9d127
--- /dev/null
+++ b/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationMurphyShaddix/COxidationMurphyShaddix.C
@@ -0,0 +1,223 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "COxidationMurphyShaddix.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+template<class CloudType>
+Foam::label Foam::COxidationMurphyShaddix<CloudType>::maxIters_ = 1000;
+
+template<class CloudType>
+Foam::scalar Foam::COxidationMurphyShaddix<CloudType>::tolerance_ = 1e-06;
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template<class CloudType>
+Foam::COxidationMurphyShaddix<CloudType>::COxidationMurphyShaddix
+(
+    const dictionary& dict,
+    CloudType& owner
+)
+:
+    SurfaceReactionModel<CloudType>
+    (
+        dict,
+        owner,
+        typeName
+    ),
+    D0_(dimensionedScalar(this->coeffDict().lookup("D0")).value()),
+    rho0_(dimensionedScalar(this->coeffDict().lookup("rho0")).value()),
+    T0_(dimensionedScalar(this->coeffDict().lookup("T0")).value()),
+    Dn_(dimensionedScalar(this->coeffDict().lookup("Dn")).value()),
+    A_(dimensionedScalar(this->coeffDict().lookup("A")).value()),
+    E_(dimensionedScalar(this->coeffDict().lookup("E")).value()),
+    n_(dimensionedScalar(this->coeffDict().lookup("n")).value()),
+    WVol_(dimensionedScalar(this->coeffDict().lookup("WVol")).value()),
+    CsLocalId_(-1),
+    O2GlobalId_(owner.composition().globalCarrierId("O2")),
+    CO2GlobalId_(owner.composition().globalCarrierId("CO2")),
+    WC_(0.0),
+    WO2_(0.0)
+{
+    // Determine Cs ids
+    label idSolid = owner.composition().idSolid();
+    CsLocalId_ = owner.composition().localId(idSolid, "C");
+
+    // Set local copies of thermo properties
+    WO2_ = owner.mcCarrierThermo().speciesData()[O2GlobalId_].W();
+    scalar WCO2 = owner.mcCarrierThermo().speciesData()[CO2GlobalId_].W();
+    WC_ = WCO2 - WO2_;
+}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+template<class CloudType>
+Foam::COxidationMurphyShaddix<CloudType>::~COxidationMurphyShaddix()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+template<class CloudType>
+bool Foam::COxidationMurphyShaddix<CloudType>::active() const
+{
+    return true;
+}
+
+
+template<class CloudType>
+Foam::scalar Foam::COxidationMurphyShaddix<CloudType>::calculate
+(
+    const scalar dt,
+    const label cellI,
+    const scalar d,
+    const scalar T,
+    const scalar Tc,
+    const scalar pc,
+    const scalar rhoc,
+    const scalar mass,
+    const scalarField& YGas,
+    const scalarField& YLiquid,
+    const scalarField& YSolid,
+    const scalarField& YMixture,
+    const scalarField& dMassVolatile,
+    scalarField& dMassGas,
+    scalarField& dMassLiquid,
+    scalarField& dMassSolid,
+    scalarField& dMassSRCarrier
+) const
+{
+    // Fraction of remaining combustible material
+    const label idSolid = CloudType::parcelType::SLD;
+    const scalar fComb = YMixture[idSolid]*YSolid[CsLocalId_];
+
+    // Surface combustion until combustible fraction is consumed
+    if (fComb < SMALL)
+    {
+        return 0.0;
+    }
+
+    // Cell carrier phase O2 species density [kg/m^3]
+    const scalar rhoO2 =
+        rhoc*this->owner().mcCarrierThermo().Y(O2GlobalId_)[cellI];
+
+    if (rhoO2 < SMALL)
+    {
+        return 0.0;
+    }
+
+    // Particle surface area [m^2]
+    const scalar Ap = mathematicalConstant::pi*sqr(d);
+
+    // Calculate diffision constant at continuous phase temperature
+    // and density [m^2/s]
+    const scalar D = D0_*(rho0_/rhoc)*pow(Tc/T0_, Dn_);
+
+    // Far field partial pressure O2 [Pa]
+    const scalar ppO2 = rhoO2/WO2_*specie::RR*Tc;
+
+    // Molar emission rate of volatiles per unit surface area
+    const scalar qVol = sum(dMassVolatile)/(WVol_*Ap);
+
+    // Total molar concentration of the carrier phase [kmol/m^3]
+    const scalar C = pc/(specie::RR*Tc);
+
+    if (debug)
+    {
+        Pout<< "mass  = " << mass << nl
+            << "fComb = " << fComb << nl
+            << "Ap    = " << Ap << nl
+            << "dt    = " << dt << nl
+            << "C     = " << C << nl
+            << endl;
+    }
+
+    // Molar reaction rate per unit surface area [kmol/(m^2.s)]
+    scalar qCsOld = 0;
+    scalar qCs = 1;
+
+    const scalar qCsLim = mass*fComb/(WC_*Ap*dt);
+
+    if (debug)
+    {
+        Pout << "qCsLim = " << qCsLim << endl;
+    }
+
+    label iter = 0;
+    while ((mag(qCs - qCsOld)/qCs > tolerance_) && (iter <= maxIters_))
+    {
+        qCsOld = qCs;
+        const scalar PO2Surface = ppO2*exp(-(qCs + qVol)*d/(2*C*D));
+        qCs = A_*exp(-E_/(specie::RR*T))*pow(PO2Surface, n_);
+        qCs = (100.0*qCs + iter*qCsOld)/(100.0 + iter);
+        qCs = min(qCs, qCsLim);
+
+        if (debug)
+        {
+            Pout<< "iter = " << iter
+                << ", qCsOld = " << qCsOld
+                << ", qCs = " << qCs
+                << nl << endl;
+        }
+
+        iter++;
+    }
+
+    if (iter > maxIters_)
+    {
+        WarningIn
+        (
+            "scalar Foam::COxidationMurphyShaddix<CloudType>::calculate(...)"
+        )   << "iter limit reached (" << maxIters_ << ")" << nl << endl;
+    }
+
+    // Calculate the number of molar units reacted
+    scalar dOmega = qCs*Ap*dt;
+
+    // Add to carrier phase mass transfer
+    dMassSRCarrier[O2GlobalId_] += -dOmega*WO2_;
+    dMassSRCarrier[CO2GlobalId_] += dOmega*(WC_ + WO2_);
+
+    // Add to particle mass transfer
+    dMassSolid[CsLocalId_] += dOmega*WC_;
+
+    const scalar HC =
+        this->owner().composition().solids().properties()[CsLocalId_].Hf()
+      + this->owner().composition().solids().properties()[CsLocalId_].cp()*T;
+    const scalar HCO2 =
+        this->owner().mcCarrierThermo().speciesData()[CO2GlobalId_].H(T);
+    const scalar HO2 =
+        this->owner().mcCarrierThermo().speciesData()[O2GlobalId_].H(T);
+
+    // Heat of reaction
+    return dOmega*(WC_*HC + WO2_*HO2 - (WC_ + WO2_)*HCO2);
+}
+
+
+// ************************************************************************* //
diff --git a/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationMurphyShaddix/COxidationMurphyShaddix.H b/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationMurphyShaddix/COxidationMurphyShaddix.H
new file mode 100644
index 0000000000000000000000000000000000000000..7864fc63372bc1b34489e9bdedc49b6d402dd54a
--- /dev/null
+++ b/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationMurphyShaddix/COxidationMurphyShaddix.H
@@ -0,0 +1,178 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    COxidationMurphyShaddix
+
+Description
+    Limited to C(s) + O2 -> CO2
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef COxidationMurphyShaddix_H
+#define COxidationMurphyShaddix_H
+
+#include "SurfaceReactionModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+// Forward class declarations
+template<class CloudType>
+class COxidationMurphyShaddix;
+
+/*---------------------------------------------------------------------------*\
+                  Class COxidationMurphyShaddix Declaration
+\*---------------------------------------------------------------------------*/
+
+template<class CloudType>
+class COxidationMurphyShaddix
+:
+    public SurfaceReactionModel<CloudType>
+{
+    // Private data
+
+        // Model constants
+
+            //- Reference diffusion constant
+            const scalar D0_;
+
+            //- Reference density for reference diffusion constant
+            const scalar rho0_;
+
+            //- Reference temperature for reference diffusion constant
+            const scalar T0_;
+
+            //- Exponent for diffusion equation
+            const scalar Dn_;
+
+            //- Kinetic rate coefficient
+            const scalar A_;
+
+            //- Kinetic rate activation energy
+            const scalar E_;
+
+            //- Reaction order
+            const scalar n_;
+
+            //- Effective molecular weight of gaseous volatiles
+            const scalar WVol_;
+
+
+        // Static constants
+
+            //- Maximum number of iterations
+            static label maxIters_;
+
+            //- Tolerance used in inner iterations
+            static scalar tolerance_;
+
+
+        // Addressing
+
+            //- Cs positions in global/local lists
+            label CsLocalId_;
+
+            //- O2 position in global list
+            label O2GlobalId_;
+
+            //- CO2 positions in global list
+            label CO2GlobalId_;
+
+
+        // Local copies of thermo properties
+
+            //- Molecular weight of C [kg/kmol]
+            scalar WC_;
+
+            //- Molecular weight of O2 [kg/kmol]
+            scalar WO2_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("COxidationMurphyShaddix");
+
+
+    // Constructors
+
+        //- Construct from dictionary
+        COxidationMurphyShaddix
+        (
+            const dictionary& dict,
+            CloudType& owner
+        );
+
+
+    //- Destructor
+    virtual ~COxidationMurphyShaddix();
+
+
+    // Member Functions
+
+        //- Flag to indicate whether model activates surface reaction model
+        virtual bool active() const;
+
+        //- Update surface reactions
+        virtual scalar calculate
+        (
+            const scalar dt,
+            const label cellI,
+            const scalar d,
+            const scalar T,
+            const scalar Tc,
+            const scalar pc,
+            const scalar rhoc,
+            const scalar mass,
+            const scalarField& YGas,
+            const scalarField& YLiquid,
+            const scalarField& YSolid,
+            const scalarField& YMixture,
+            const scalarField& dMassVolatile,
+            scalarField& dMassGas,
+            scalarField& dMassLiquid,
+            scalarField& dMassSolid,
+            scalarField& dMassSRCarrier
+        ) const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#ifdef NoRepository
+    #include "COxidationMurphyShaddix.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/dieselSpray/Make/options b/src/lagrangian/dieselSpray/Make/options
index d0817503ce4ed16a0798dbe5c0654e91f6df3420..454c4f15bfae582e59a09888022a83a0261b2475 100644
--- a/src/lagrangian/dieselSpray/Make/options
+++ b/src/lagrangian/dieselSpray/Make/options
@@ -11,7 +11,7 @@ EXE_INC = \
     -I$(LIB_SRC)/thermophysicalModels/liquidMixture/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/thermophysicalFunctions/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \
-    -I$(LIB_SRC)/thermophysicalModels/combustion/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/pdfs/lnInclude
 
 LIB_LIBS = \
diff --git a/src/lagrangian/dieselSpray/injector/swirlInjector/swirlInjector.C b/src/lagrangian/dieselSpray/injector/swirlInjector/swirlInjector.C
index 7f7b7a6119d6846393c77009dd7946afa2f97f29..2d9fa9bf7c0bae992d97bb7d131d43c9bd712f54 100644
--- a/src/lagrangian/dieselSpray/injector/swirlInjector/swirlInjector.C
+++ b/src/lagrangian/dieselSpray/injector/swirlInjector/swirlInjector.C
@@ -30,24 +30,22 @@ License
 #include "mathematicalConstants.H"
 
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
 namespace Foam
 {
-
-defineTypeNameAndDebug(swirlInjector, 0);
-
-addToRunTimeSelectionTable
-(
-    injectorType,
-    swirlInjector,
-    dictionary
-);
+    defineTypeNameAndDebug(swirlInjector, 0);
+
+    addToRunTimeSelectionTable
+    (
+        injectorType,
+        swirlInjector,
+        dictionary
+    );
 }
-// * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
 
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-// Construct from components
 Foam::swirlInjector::swirlInjector
 (
     const Foam::Time& t,
@@ -66,40 +64,56 @@ Foam::swirlInjector::swirlInjector
     X_(propsDict_.lookup("X")),
     massFlowRateProfile_(propsDict_.lookup("massFlowRateProfile")),
     injectionPressureProfile_(propsDict_.lookup("injectionPressureProfile")),
-    velocityProfile_(injectionPressureProfile_),
-    CdProfile_(injectionPressureProfile_),
-    TProfile_(injectionPressureProfile_),
+    velocityProfile_(massFlowRateProfile_),
+    CdProfile_(massFlowRateProfile_),
+    TProfile_(massFlowRateProfile_),
     averageParcelMass_(mass_/nParcels_),
     pressureIndependentVelocity_(false)
 {
     // convert CA to real time
     forAll(massFlowRateProfile_, i)
     {
-        massFlowRateProfile_[i][0] = t.userTimeToTime(massFlowRateProfile_[i][0]);
+        massFlowRateProfile_[i][0] =
+            t.userTimeToTime(massFlowRateProfile_[i][0]);
     }
     forAll(injectionPressureProfile_, i)
     {
-        injectionPressureProfile_[i][0] = t.userTimeToTime(injectionPressureProfile_[i][0]);
+        injectionPressureProfile_[i][0] =
+            t.userTimeToTime(injectionPressureProfile_[i][0]);
     }
 
     // check if time entries match
     if (mag(massFlowRateProfile_[0][0]-injectionPressureProfile_[0][0]) > SMALL)
     {
-        FatalError << "swirlInjector::swirlInjector(const time& t, const dictionary dict) " << endl
-            << " start-times do not match for injectionPressureProfile and massFlowRateProfile."
+        FatalErrorIn
+        (
+            "swirlInjector::swirlInjector(const time& t, const dictionary dict)"
+        )   << "Start-times do not match for "
+               "injectionPressureProfile and massFlowRateProfile."
             << abort(FatalError);
     }
 
     // check if time entries match
-    if (mag(massFlowRateProfile_[massFlowRateProfile_.size()-1][0]-injectionPressureProfile_[injectionPressureProfile_.size()-1][0]) > SMALL)
+    if
+    (
+        mag
+        (
+            massFlowRateProfile_[massFlowRateProfile_.size() - 1][0]
+          - injectionPressureProfile_[injectionPressureProfile_.size() - 1][0]
+        ) > SMALL
+    )
     {
-        FatalError << "swirlInjector::swirlInjector(const time& t, const dictionary dict) " << endl
-            << " end-times do not match for injectionPressureProfile and massFlowRateProfile."
+        FatalErrorIn
+        (
+            "swirlInjector::swirlInjector(const time& t, const dictionary dict)"
+        )   << "End-times do not match for "
+               "injectionPressureProfile and massFlowRateProfile."
             << abort(FatalError);
     }
 
     scalar integratedMFR = integrateTable(massFlowRateProfile_);
-    scalar integratedPressure = integrateTable(injectionPressureProfile_)/(teoi()-tsoi());
+    scalar integratedPressure =
+        integrateTable(injectionPressureProfile_)/(teoi()-tsoi());
 
     forAll(massFlowRateProfile_, i)
     {
@@ -118,12 +132,13 @@ Foam::swirlInjector::swirlInjector
     forAll(injectionPressureProfile_, i)
     {
         // correct the pressureProfile to match the injection pressure
-        injectionPressureProfile_[i][1] *= injectionPressure_/integratedPressure;
+        injectionPressureProfile_[i][1] *=
+            injectionPressure_/integratedPressure;
     }
 
     // Normalize the direction vector
     direction_ /= mag(direction_);
-    
+
     setTangentialVectors();
 
     // check molar fractions
@@ -135,17 +150,19 @@ Foam::swirlInjector::swirlInjector
 
     if (mag(Xsum - 1.0) > SMALL)
     {
-        Info << "Warning!!!\n swirlInjector::swirlInjector(const time& t, Istream& is)"
-            << "X does not add up to 1.0, correcting molar fractions."
-            << endl;
+        WarningIn
+        (
+            "swirlInjector::swirlInjector(const time& t, const dictionary dict)"
+        )   << "X does not add up to 1.0, correcting molar fractions." << endl;
+
         forAll(X_, i)
         {
             X_[i] /= Xsum;
         }
     }
-
 }
 
+
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
 Foam::swirlInjector::~swirlInjector()
@@ -170,10 +187,8 @@ void Foam::swirlInjector::setTangentialVectors()
 
     tangentialInjectionVector1_ = tangent/magV;
     tangentialInjectionVector2_ = direction_ ^ tangentialInjectionVector1_;
-
 }
 
-
 Foam::label Foam::swirlInjector::nParcelsToInject
 (
     const scalar time0,
@@ -183,7 +198,7 @@ Foam::label Foam::swirlInjector::nParcelsToInject
 
     scalar mInj = mass_*(fractionOfInjection(time1)-fractionOfInjection(time0));
     label nParcels = label(mInj/averageParcelMass_ + 0.49);
-    
+
     return nParcels;
 }
 
@@ -223,7 +238,7 @@ Foam::vector Foam::swirlInjector::position
         scalar iAngle = 2.0*mathematicalConstant::pi*rndGen.scalar01();
 
         return
-        ( 
+        (
             position_
           + iRadius
           * (
@@ -231,7 +246,7 @@ Foam::vector Foam::swirlInjector::position
             + tangentialInjectionVector2_*sin(iAngle)
           )
         );
-        
+
     }
 
     return position_;
@@ -266,7 +281,7 @@ Foam::scalar Foam::swirlInjector::mass
 {
     scalar mInj = mass_*(fractionOfInjection(time1)-fractionOfInjection(time0));
 
-    // correct mass if calculation is 2D 
+    // correct mass if calculation is 2D
     if (twoD)
     {
         mInj *= 0.5*angleOfWedge/mathematicalConstant::pi;
@@ -280,7 +295,8 @@ Foam::scalar Foam::swirlInjector::mass() const
     return mass_;
 }
 
-Foam::List<Foam::swirlInjector::pair> Foam::swirlInjector::massFlowRateProfile() const
+Foam::List<Foam::swirlInjector::pair>
+Foam::swirlInjector::massFlowRateProfile() const
 {
     return massFlowRateProfile_;
 }
@@ -290,7 +306,8 @@ Foam::scalar Foam::swirlInjector::massFlowRate(const scalar time) const
     return getTableValue(massFlowRateProfile_, time);
 }
 
-Foam::List<Foam::swirlInjector::pair> Foam::swirlInjector::injectionPressureProfile() const
+Foam::List<Foam::swirlInjector::pair>
+Foam::swirlInjector::injectionPressureProfile() const
 {
     return injectionPressureProfile_;
 }
@@ -300,7 +317,8 @@ Foam::scalar Foam::swirlInjector::injectionPressure(const scalar time) const
     return getTableValue(injectionPressureProfile_, time);
 }
 
-Foam::List<Foam::swirlInjector::pair> Foam::swirlInjector::velocityProfile() const
+Foam::List<Foam::swirlInjector::pair>
+Foam::swirlInjector::velocityProfile() const
 {
     return velocityProfile_;
 }
@@ -309,7 +327,7 @@ Foam::scalar Foam::swirlInjector::velocity(const scalar time) const
 {
     return getTableValue(velocityProfile_, time);
 }
-    
+
 Foam::List<Foam::swirlInjector::pair> Foam::swirlInjector::CdProfile() const
 {
     return CdProfile_;
@@ -350,7 +368,6 @@ Foam::scalar Foam::swirlInjector::fractionOfInjection(const scalar time) const
     return integrateTable(massFlowRateProfile_, time)/mass_;
 }
 
-
 Foam::scalar Foam::swirlInjector::injectedMass
 (
     const scalar t
@@ -372,7 +389,11 @@ void Foam::swirlInjector::correctProfiles
 
     forAll(velocityProfile_, i)
     {
-        scalar Pinj = getTableValue(injectionPressureProfile_, massFlowRateProfile_[i][0]);
+        scalar Pinj = getTableValue
+        (
+            injectionPressureProfile_,
+            massFlowRateProfile_[i][0]
+        );
         scalar mfr = massFlowRateProfile_[i][1]/(rho*A);
         scalar v = sqrt(2.0*(Pinj - referencePressure)/rho);
         velocityProfile_[i][1] = v;
@@ -390,4 +411,5 @@ Foam::vector Foam::swirlInjector::tan2(const label n) const
     return tangentialInjectionVector2_;
 }
 
+
 // ************************************************************************* //
diff --git a/src/lagrangian/dieselSpray/parcel/parcel.C b/src/lagrangian/dieselSpray/parcel/parcel.C
index 1af26992010a1e8d1cf4ab5a780eacddde5237a3..0dd861683bbf95e89686d661f4c719ab665c0703 100644
--- a/src/lagrangian/dieselSpray/parcel/parcel.C
+++ b/src/lagrangian/dieselSpray/parcel/parcel.C
@@ -34,15 +34,14 @@ License
 #include "wallPolyPatch.H"
 #include "wedgePolyPatch.H"
 #include "processorPolyPatch.H"
-#include "combustionMixture.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+#include "basicMultiComponentMixture.H"
 
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
 namespace Foam
 {
-defineParticleTypeNameAndDebug(parcel, 0);
-defineTemplateTypeNameAndDebug(Cloud<parcel>, 0);
+    defineParticleTypeNameAndDebug(parcel, 0);
+    defineTemplateTypeNameAndDebug(Cloud<parcel>, 0);
 }
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
@@ -696,6 +695,4 @@ void Foam::parcel::transformProperties(const vector&)
 {}
 
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
 // ************************************************************************* //
diff --git a/src/lagrangian/dieselSpray/parcel/parcelIO.C b/src/lagrangian/dieselSpray/parcel/parcelIO.C
index d84f2bb195c27b41588df1a99a4a7c27a72a431a..4ae7bbc90ad6befee259df34c77ff20ef41ee403 100644
--- a/src/lagrangian/dieselSpray/parcel/parcelIO.C
+++ b/src/lagrangian/dieselSpray/parcel/parcelIO.C
@@ -36,7 +36,7 @@ Foam::parcel::parcel
     bool readFields
 )
 :
-    Particle<parcel>(cloud, is),
+    Particle<parcel>(cloud, is, readFields),
 
     liquidComponents_
     (
diff --git a/src/lagrangian/dieselSpray/parcel/setRelaxationTimes.C b/src/lagrangian/dieselSpray/parcel/setRelaxationTimes.C
index 058ae4252e91ccdb091ed40eddb1dc665adeb3f6..131e9f885f9877a9ba771d4650ffec322aaed6e5 100644
--- a/src/lagrangian/dieselSpray/parcel/setRelaxationTimes.C
+++ b/src/lagrangian/dieselSpray/parcel/setRelaxationTimes.C
@@ -30,7 +30,7 @@ License
 #include "dragModel.H"
 #include "evaporationModel.H"
 #include "heatTransferModel.H"
-#include "combustionMixture.H"
+#include "basicMultiComponentMixture.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -93,7 +93,7 @@ void parcel::setRelaxationTimes
     for(label i=0; i<Nf; i++)
     {
         label j = sDB.liquidToGasIndex()[i];
-        scalar Y = sDB.composition().Y()[j][celli];        
+        scalar Y = sDB.composition().Y()[j][celli];
         scalar Wi = sDB.gasProperties()[j].W();
         Yf[i] = Y;
         Xf[i] = Y*W/Wi;
@@ -139,14 +139,14 @@ void parcel::setRelaxationTimes
     scalar Prandtl = Pr(cpMixture, muf, kMixture);
 
     // calculate the characteritic times
-      
+
     if(liquidCore_> 0.5)
     {
 //      no drag for parcels in the liquid core..
         tauMomentum = GREAT;
     }
     else
-    {    
+    {
         tauMomentum = sDB.drag().relaxationTime
         (
             Urel(Up),
@@ -218,10 +218,10 @@ void parcel::setRelaxationTimes
             {
                 scalar Nusselt =
                     sDB.heatTransfer().Nu(Reynolds, Prandtl);
-                
+
 //              calculating the boiling temperature of the liquid at ambient pressure
                 scalar tBoilingSurface = Td;
-                
+
                 label Niter = 0;
                 scalar deltaT = 10.0;
                 scalar dp0 = fuels.properties()[i].pv(pressure, tBoilingSurface) - pressure;
@@ -255,16 +255,16 @@ void parcel::setRelaxationTimes
                     }
                     dp0 = dp;
                 }
-                
+
                 scalar vapourSurfaceEnthalpy = 0.0;
                 scalar vapourFarEnthalpy = 0.0;
-                
+
                 for(label k = 0; k < sDB.gasProperties().size(); k++)
                 {
                     vapourSurfaceEnthalpy += sDB.composition().Y()[k][celli]*sDB.gasProperties()[k].H(tBoilingSurface);
                     vapourFarEnthalpy += sDB.composition().Y()[k][celli]*sDB.gasProperties()[k].H(temperature);
                 }
-               
+
                 scalar kLiquid = fuels.properties()[i].K(pressure, 0.5*(tBoilingSurface+T()));
 
                 tauBoiling[i] = sDB.evaporation().boilingTime
diff --git a/src/lagrangian/dieselSpray/spray/spray.C b/src/lagrangian/dieselSpray/spray/spray.C
index 1f4b1a242fc28027105b480f34d914f88886b12f..07dbcdbe7ef3665a01201daf4eb7cf31bb0bb405 100644
--- a/src/lagrangian/dieselSpray/spray/spray.C
+++ b/src/lagrangian/dieselSpray/spray/spray.C
@@ -36,7 +36,7 @@ License
 #include "injectorModel.H"
 #include "wallModel.H"
 
-#include "combustionMixture.H"
+#include "basicMultiComponentMixture.H"
 
 #include "symmetryPolyPatch.H"
 #include "wedgePolyPatch.H"
@@ -56,8 +56,8 @@ Foam::spray::spray
     const volScalarField& rho,
     const volScalarField& p,
     const volScalarField& T,
-    const combustionMixture& composition,
-    const PtrList<specieProperties>& gasProperties,
+    const basicMultiComponentMixture& composition,
+    const PtrList<gasThermoPhysics>& gasProperties,
     const dictionary&,
     const dictionary& environmentalProperties
 )
@@ -264,7 +264,7 @@ Foam::spray::spray
                 "spray::spray(const volVectorField& U, "
                 "const volScalarField& rho, const volScalarField& p, "
                 "const volScalarField& T, const combustionMixture& composition,"
-                "const PtrList<specieProperties>& gaseousFuelProperties, "
+                "const PtrList<gasThermoPhsyics>& gaseousFuelProperties, "
                 "const dictionary& thermophysicalProperties, "
                 "const dictionary& environmentalProperties)"
             )   << "spray::(...) only one wedgePolyPatch found. "
diff --git a/src/lagrangian/dieselSpray/spray/spray.H b/src/lagrangian/dieselSpray/spray/spray.H
index be9c49e67a437cf3abb729aa3d174a8c1b39e47f..044423fc752ecbfa5b353c1f687b1be392419312 100644
--- a/src/lagrangian/dieselSpray/spray/spray.H
+++ b/src/lagrangian/dieselSpray/spray/spray.H
@@ -38,10 +38,10 @@ Description
 #include "IOPtrList.H"
 #include "interpolation.H"
 #include "liquid.H"
-#include "sprayThermoTypes.H"
 #include "autoPtr.H"
 #include "liquidMixture.H"
 #include "Random.H"
+#include "thermoPhysicsTypes.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -58,7 +58,7 @@ class injectorModel;
 class heatTransferModel;
 class wallModel;
 
-class combustionMixture;
+class basicMultiComponentMixture;
 
 /*---------------------------------------------------------------------------*\
                         Class spray Declaration
@@ -127,8 +127,8 @@ class spray
 
         // Composition properties
 
-            const PtrList<specieProperties>& gasProperties_;
-            const combustionMixture& composition_;
+            const PtrList<gasThermoPhysics>& gasProperties_;
+            const basicMultiComponentMixture& composition_;
 
             List<label> liquidToGasIndex_;
             List<label> gasToLiquidIndex_;
@@ -192,8 +192,8 @@ public:
             const volScalarField& rho,
             const volScalarField& p,
             const volScalarField& T,
-            const combustionMixture& composition,
-            const PtrList<specieProperties>& gasProperties,
+            const basicMultiComponentMixture& composition,
+            const PtrList<gasThermoPhysics>& gasProperties,
             const dictionary& thermophysicalProperties,
             const dictionary& environmentalProperties
         );
@@ -257,8 +257,8 @@ public:
             inline const vector& g() const;
 
             inline const liquidMixture& fuels() const;
-            inline const PtrList<specieProperties>& gasProperties() const;
-            inline const combustionMixture& composition() const;
+            inline const PtrList<gasThermoPhysics>& gasProperties() const;
+            inline const basicMultiComponentMixture& composition() const;
 
             inline const List<label>& liquidToGasIndex() const;
             inline const List<label>& gasToLiquidIndex() const;
@@ -345,7 +345,7 @@ public:
     // I/O
 
             //- Write fields
-            void writeFields() const;
+            virtual void writeFields() const;
 };
 
 
diff --git a/src/lagrangian/dieselSpray/spray/sprayI.H b/src/lagrangian/dieselSpray/spray/sprayI.H
index 1e38a81668d0d73739cdf1226de4526c756daab4..86c063ca6f7dc5bdae3823837b0ff472918efb10 100644
--- a/src/lagrangian/dieselSpray/spray/sprayI.H
+++ b/src/lagrangian/dieselSpray/spray/sprayI.H
@@ -36,71 +36,85 @@ inline const Time& spray::runTime() const
     return runTime_;
 }
 
+
 inline const fvMesh& spray::mesh() const
 {
     return mesh_;
 }
 
+
 inline const volVectorField& spray::U() const
 {
     return U_;
 }
 
+
 inline const volScalarField& spray::rho() const
 {
     return rho_;
 }
 
+
 inline const volScalarField& spray::p() const
 {
     return p_;
 }
 
+
 inline const volScalarField& spray::T() const
 {
     return T_;
 }
 
+
 inline PtrList<injector>& spray::injectors()
 {
     return injectors_;
 }
 
+
 inline const PtrList<injector>& spray::injectors() const
 {
     return injectors_;
 }
 
+
 inline const atomizationModel& spray::atomization() const
 {
     return atomization_;
 }
 
+
 inline const breakupModel& spray::breakup() const
 {
     return breakupModel_;
 }
 
+
 inline const collisionModel& spray::collisions() const
 {
     return collisionModel_;
 }
 
+
 inline const dispersionModel& spray::dispersion() const
 {
     return dispersionModel_;
 }
 
+
 inline const dragModel& spray::drag() const
 {
     return drag_;
 }
 
+
 inline const evaporationModel& spray::evaporation() const
 {
     return evaporation_;
 }
 
+
 inline const heatTransferModel& spray::heatTransfer() const
 {
     return heatTransfer_;
@@ -112,11 +126,13 @@ inline const injectorModel& spray::injection() const
     return injectorModel_;
 }
 
+
 inline const wallModel& spray::wall() const
 {
     return wall_;
 }
 
+
 inline tmp<volVectorField> spray::momentumSource() const
 {
     tmp<volVectorField> tsource
@@ -146,6 +162,7 @@ inline tmp<volVectorField> spray::momentumSource() const
     return tsource;
 }
 
+
 inline tmp<volScalarField> spray::evaporationSource(const label si) const
 {
     tmp<volScalarField> tsource
@@ -179,6 +196,7 @@ inline tmp<volScalarField> spray::evaporationSource(const label si) const
     return tsource;
 }
 
+
 inline tmp<volScalarField> spray::heatTransferSource() const
 {
     tmp<volScalarField> tsource
@@ -209,6 +227,7 @@ inline Random& spray::rndGen()
     return rndGen_;
 }
 
+
 inline label spray::subCycles() const
 {
     return subCycles_;
@@ -226,81 +245,97 @@ inline const liquidMixture& spray::fuels() const
     return fuels_;
 }
 
-inline const PtrList<specieProperties>& spray::gasProperties() const
+
+inline const PtrList<gasThermoPhysics>& spray::gasProperties() const
 {
     return gasProperties_;
 }
 
-inline const combustionMixture& spray::composition() const
+
+inline const basicMultiComponentMixture& spray::composition() const
 {
     return composition_;
 }
 
+
 inline const List<label>& spray::liquidToGasIndex() const
 {
     return liquidToGasIndex_;
 }
 
+
 inline const List<label>& spray::gasToLiquidIndex() const
 {
     return gasToLiquidIndex_;
 }
 
+
 inline const List<bool>& spray::isLiquidFuel() const
 {
     return isLiquidFuel_;
 }
 
+
 inline const bool& spray::twoD() const
 {
     return twoD_;
 }
 
+
 inline const vector& spray::axisOfSymmetry() const
 {
     return axisOfSymmetry_;
 }
 
+
 inline const vector& spray::axisOfWedge() const
 {
     return axisOfWedge_;
 }
 
+
 inline const vector& spray::axisOfWedgeNormal() const
 {
     return axisOfWedgeNormal_;
 }
 
+
 inline const scalar& spray::angleOfWedge() const
 {
     return angleOfWedge_;
 }
 
+
 inline const interpolation<vector>& spray::UInterpolator() const
 {
     return UInterpolator_;
 }
 
+
 inline const interpolation<scalar>& spray::rhoInterpolator() const
 {
     return rhoInterpolator_;
 }
 
+
 inline const interpolation<scalar>& spray::pInterpolator() const
 {
     return pInterpolator_;
 }
 
+
 inline const interpolation<scalar>& spray::TInterpolator() const
 {
     return TInterpolator_;
 }
 
+
 inline vectorField& spray::sms()
 {
     return sms_;
 }
 
+
 inline const vectorField& spray::sms() const
 {
     return sms_;
@@ -312,6 +347,7 @@ inline scalarField& spray::shs()
     return shs_;
 }
 
+
 inline const scalarField& spray::shs() const
 {
     return shs_;
@@ -323,16 +359,19 @@ inline PtrList<scalarField>& spray::srhos()
     return srhos_;
 }
 
+
 inline const PtrList<scalarField>& spray::srhos() const
 {
     return srhos_;
 }
 
+
 inline const scalar& spray::ambientPressure() const
 {
     return ambientPressure_;
 }
 
+
 inline const scalar& spray::ambientTemperature() const
 {
     return ambientTemperature_;
diff --git a/src/lagrangian/dieselSpray/spraySubModels/atomizationModel/LISA/LISA.C b/src/lagrangian/dieselSpray/spraySubModels/atomizationModel/LISA/LISA.C
index ce7cded04b869b4678527d6e6e108b340eebbfb2..742f1fe1b347be3af257e33e66af7d2b273b7f31 100644
--- a/src/lagrangian/dieselSpray/spraySubModels/atomizationModel/LISA/LISA.C
+++ b/src/lagrangian/dieselSpray/spraySubModels/atomizationModel/LISA/LISA.C
@@ -28,7 +28,7 @@ License
 
 #include "LISA.H"
 #include "addToRunTimeSelectionTable.H"
-#include "combustionMixture.H"
+#include "basicMultiComponentMixture.H"
 
 #include "RosinRammler.H"
 
@@ -84,7 +84,7 @@ void LISA::atomizeParcel
 ) const
 {
 
-   
+
     const PtrList<volScalarField>& Y = spray_.composition().Y();
 
     label Ns = Y.size();
@@ -98,7 +98,7 @@ void LISA::atomizeParcel
     {
         Winv += Y[i][cellI]/spray_.gasProperties()[i].W();
     }
-    
+
     scalar R = specie::RR*Winv;
 
     // ideal gas law to evaluate density
@@ -113,31 +113,31 @@ void LISA::atomizeParcel
     scalar WeberNumber = p.We(vel, rhoAverage, sigma);
 
     scalar tau = 0.0;
-    scalar dL = 0.0;   
+    scalar dL = 0.0;
     scalar k = 0.0;
     scalar muFuel = fuels.mu(pressure, p.T(), p.X());
     scalar rhoFuel = fuels.rho(1.0e+5, p.T(), p.X());
     scalar nuFuel = muFuel/rhoFuel;
 
     vector uDir = p.U()/mag(p.U());
-    
+
     scalar uGas = mag(vel & uDir);
     vector Ug = uGas*uDir;
 
-/*  
+/*
     TL
     It might be the relative velocity between Liquid and Gas, but I use the
-    absolute velocity of the parcel as suggested by the authors    
+    absolute velocity of the parcel as suggested by the authors
 */
-    
+
 //    scalar U = mag(p.Urel(vel));
     scalar U = mag(p.U());
-    
+
     p.ct() += deltaT;
 
     scalar Q = rhoAverage/rhoFuel;
 
-    const injectorType& it = 
+    const injectorType& it =
         spray_.injectors()[label(p.injector())].properties();
 
     if (it.nHoles() > 1)
@@ -150,38 +150,38 @@ void LISA::atomizeParcel
     scalar pWalk = mag(p.position() - itPosition);
 
 //  Updating liquid sheet tickness... that is the droplet diameter
- 
+
     const vector direction = it.direction(0, spray_.runTime().value());
-    
+
     scalar h = (p.position() - itPosition) & direction;
 
     scalar d = sqrt(sqr(pWalk)-sqr(h));
-    
+
     scalar time = pWalk/mag(p.U());
-       
+
     scalar elapsedTime = spray_.runTime().value();
-    
+
     scalar massFlow = it.massFlowRate(max(0.0,elapsedTime-time));
-    
-    scalar hSheet = massFlow/(mathematicalConstant::pi*d*rhoFuel*mag(p.U()));    
-    
+
+    scalar hSheet = massFlow/(mathematicalConstant::pi*d*rhoFuel*mag(p.U()));
+
     p.d() = min(hSheet,p.d());
 
     if(WeberNumber > 27.0/16.0)
     {
-               
+
         scalar kPos = 0.0;
         scalar kNeg = Q*pow(U, 2.0)*rhoFuel/sigma;
-               
+
         scalar derivativePos = sqrt
         (
             Q*pow(U,2.0)
-        );   
-        
-        scalar derivativeNeg =    
+        );
+
+        scalar derivativeNeg =
         (
-            8.0*pow(nuFuel, 2.0)*pow(kNeg, 3.0) 
-            + Q*pow(U, 2.0)*kNeg 
+            8.0*pow(nuFuel, 2.0)*pow(kNeg, 3.0)
+            + Q*pow(U, 2.0)*kNeg
             - 3.0*sigma/2.0/rhoFuel*pow(kNeg, 2.0)
         )
         /
@@ -189,23 +189,23 @@ void LISA::atomizeParcel
         (
             4.0*pow(nuFuel, 2.0)*pow(kNeg, 4.0)
             + Q*pow(U, 2.0)*pow(kNeg, 2.0)
-            - sigma*pow(kNeg, 3.0)/rhoFuel 
+            - sigma*pow(kNeg, 3.0)/rhoFuel
         )
         -
         4.0*nuFuel*kNeg;
 
-        scalar kOld = 0.0;        
+        scalar kOld = 0.0;
+
 
-       
         for(label i=0; i<40; i++)
         {
 
             k = kPos - (derivativePos/((derivativeNeg-derivativePos)/(kNeg-kPos)));
-           
-            scalar derivativek = 
+
+            scalar derivativek =
             (
-                8.0*pow(nuFuel, 2.0)*pow(k, 3.0) 
-                + Q*pow(U, 2.0)*k 
+                8.0*pow(nuFuel, 2.0)*pow(k, 3.0)
+                + Q*pow(U, 2.0)*k
                 - 3.0*sigma/2.0/rhoFuel*pow(k, 2.0)
             )
             /
@@ -213,10 +213,10 @@ void LISA::atomizeParcel
             (
                 4.0*pow(nuFuel, 2.0)*pow(k, 4.0)
                 + Q*pow(U, 2.0)*pow(k, 2.0)
-                - sigma*pow(k, 3.0)/rhoFuel 
+                - sigma*pow(k, 3.0)/rhoFuel
             )
             -
-            4.0*nuFuel*k;            
+            4.0*nuFuel*k;
 
             if(derivativek > 0)
             {
@@ -228,17 +228,17 @@ void LISA::atomizeParcel
                 derivativeNeg = derivativek;
                 kNeg = k;
             }
-            
+
             if(mag(k-kOld)/k < 1e-4)
             {
                 break;
             }
-            
+
             kOld = k;
-                       
+
         }
-        
-        scalar omegaS = 
+
+        scalar omegaS =
         - 2.0 * nuFuel * pow(k, 2.0)
         + sqrt
         (
@@ -246,22 +246,22 @@ void LISA::atomizeParcel
             +   Q*pow(U, 2.0)*pow(k, 2.0)
             -   sigma*pow(k, 3.0)/rhoFuel
         );
-        
-        tau = cTau_/omegaS;        
-                       
+
+        tau = cTau_/omegaS;
+
         dL = sqrt(8.0*p.d()/k);
 
     }
     else
     {
-                
-        k = 
+
+        k =
         rhoAverage*pow(U, 2.0)
         /
         2.0*sigma;
-        
+
         scalar J = pWalk*p.d()/2.0;
-        
+
         tau = pow(3.0*cTau_,2.0/3.0)*cbrt(J*sigma/(sqr(Q)*pow(U,4.0)*rhoFuel));
 
         dL = sqrt(4.0*p.d()/k);
@@ -269,78 +269,78 @@ void LISA::atomizeParcel
 
 
 
-    scalar kL = 
+    scalar kL =
         1.0
         /
         (
-            dL * 
+            dL *
             pow(0.5 + 1.5 * muFuel/pow((rhoFuel*sigma*dL), 0.5), 0.5)
         );
 
-    scalar dD = cbrt(3.0*mathematicalConstant::pi*pow(dL, 2.0)/kL);     
-    
+    scalar dD = cbrt(3.0*mathematicalConstant::pi*pow(dL, 2.0)/kL);
+
     scalar lisaExp = 0.27;
     scalar ambientPressure = 1.0e+5;
-    
+
     scalar pRatio = spray_.ambientPressure()/ambientPressure;
-    
+
     dD = dD*pow(pRatio,lisaExp);
 
 //  modifications to take account of the flash boiling on primary breakUp
 
     scalar pExp = 0.135;
-       
+
     scalar chi = 0.0;
-    
-    label Nf = fuels.components().size();        
+
+    label Nf = fuels.components().size();
 
     scalar Td = p.T();
-                
+
     for(label i = 0; i < Nf ; i++)
     {
-    
+
         if(fuels.properties()[i].pv(spray_.ambientPressure(), Td) >= 0.999*spray_.ambientPressure())
         {
 
 //          The fuel is boiling.....
-//          Calculation of the boiling temperature            
-            
+//          Calculation of the boiling temperature
+
             scalar tBoilingSurface = Td;
-            
+
             label Niter = 200;
-            
+
             for(label k=0; k< Niter ; k++)
             {
                 scalar pBoil = fuels.properties()[i].pv(pressure, tBoilingSurface);
-            
+
                 if(pBoil > pressure)
                 {
-                    tBoilingSurface = tBoilingSurface - (Td-temperature)/Niter;   
+                    tBoilingSurface = tBoilingSurface - (Td-temperature)/Niter;
                 }
                 else
                 {
                     break;
                 }
             }
-            
+
             scalar hl = fuels.properties()[i].hl(spray_.ambientPressure(), tBoilingSurface);
             scalar iTp = fuels.properties()[i].h(spray_.ambientPressure(), Td) - spray_.ambientPressure()/fuels.properties()[i].rho(spray_.ambientPressure(), Td);
             scalar iTb = fuels.properties()[i].h(spray_.ambientPressure(), tBoilingSurface) - spray_.ambientPressure()/fuels.properties()[i].rho(spray_.ambientPressure(), tBoilingSurface);
-            
+
             chi += p.X()[i]*(iTp-iTb)/hl;
-                   
+
         }
-    }    
-    
+    }
+
     //  bounding chi
-    
+
     chi = max(chi, 0.0);
     chi = min(chi, 1.0);
-    
+
     //  modifing dD to take account of flash boiling
-    
+
     dD = dD*(1.0 - chi*pow(pRatio, -pExp));
-    
+
     scalar lBU = Cl_ * mag(p.U())*tau;
 
     if(pWalk > lBU)
@@ -349,7 +349,7 @@ void LISA::atomizeParcel
         p.liquidCore() = 0.0;
 
 //      calculate the new diameter with a Rosin Rammler distribution
-     
+
         scalar minValue = min(p.d(),dD/10.0);
 
         scalar maxValue = dD;
@@ -357,30 +357,30 @@ void LISA::atomizeParcel
         if(maxValue - minValue < SMALL)
         {
             minValue = p.d()/10.0;
-        }     
-     
+        }
+
         scalar range = maxValue - minValue;
-      
+
         scalar y = 0;
         scalar x = 0;
 
         bool success = false;
-                              
+
         while(!success)
         {
-        
+
             x = minValue + range*rndGen_.scalar01();
             y = rndGen_.scalar01();
 
             scalar p = 0.0;
-        
+
             scalar nExp = 1;
-                                                                                          
+
             scalar xx = pow(x/dD, nExp);
 
             p = xx*exp(-xx);
 
-            if (y<p) 
+            if (y<p)
             {
                 success = true;
             }
@@ -388,13 +388,13 @@ void LISA::atomizeParcel
         }
 
 //  New droplet diameter
-    
+
         p.d() = x;
         p.ct() = 0.0;
-                            
-    }           
-        
-    
+
+    }
+
+
 }
 
 
diff --git a/src/lagrangian/dieselSpray/spraySubModels/atomizationModel/blobsSheetAtomization/blobsSheetAtomization.C b/src/lagrangian/dieselSpray/spraySubModels/atomizationModel/blobsSheetAtomization/blobsSheetAtomization.C
index db1372ca5892b0faecc54c84ff67cfb7e41c5dc2..c6fd3e3056ac912b893ac4e2b46d5b265e69005e 100644
--- a/src/lagrangian/dieselSpray/spraySubModels/atomizationModel/blobsSheetAtomization/blobsSheetAtomization.C
+++ b/src/lagrangian/dieselSpray/spraySubModels/atomizationModel/blobsSheetAtomization/blobsSheetAtomization.C
@@ -28,7 +28,7 @@ License
 
 #include "blobsSheetAtomization.H"
 #include "addToRunTimeSelectionTable.H"
-#include "combustionMixture.H"
+#include "basicMultiComponentMixture.H"
 
 #include "RosinRammler.H"
 
diff --git a/src/lagrangian/dieselSpray/spraySubModels/atomizationModel/noAtomization/noAtomization.C b/src/lagrangian/dieselSpray/spraySubModels/atomizationModel/noAtomization/noAtomization.C
index 0e590604d90de4e7577559f14b2b9945ead69125..65300cb6f20f16fb11d94ff2c30c21f819ea676e 100644
--- a/src/lagrangian/dieselSpray/spraySubModels/atomizationModel/noAtomization/noAtomization.C
+++ b/src/lagrangian/dieselSpray/spraySubModels/atomizationModel/noAtomization/noAtomization.C
@@ -28,7 +28,7 @@ License
 
 #include "noAtomization.H"
 #include "addToRunTimeSelectionTable.H"
-#include "combustionMixture.H"
+#include "basicMultiComponentMixture.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
diff --git a/src/lagrangian/dieselSpray/spraySubModels/breakupModel/reitzDiwakar/reitzDiwakar.C b/src/lagrangian/dieselSpray/spraySubModels/breakupModel/reitzDiwakar/reitzDiwakar.C
index 9a77c1c7bae400ce7cfa97018dd54e2cde5b5a7a..bfe3c4045e1b11417b19f23940f3f7c928efdbdd 100644
--- a/src/lagrangian/dieselSpray/spraySubModels/breakupModel/reitzDiwakar/reitzDiwakar.C
+++ b/src/lagrangian/dieselSpray/spraySubModels/breakupModel/reitzDiwakar/reitzDiwakar.C
@@ -28,7 +28,7 @@ License
 
 #include "reitzDiwakar.H"
 #include "addToRunTimeSelectionTable.H"
-#include "combustionMixture.H"
+#include "basicMultiComponentMixture.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
diff --git a/src/lagrangian/dieselSpray/spraySubModels/wallModel/reflectParcel/reflectParcel.C2 b/src/lagrangian/dieselSpray/spraySubModels/wallModel/reflectParcel/reflectParcel.C2
deleted file mode 100755
index 7a209cc8e3e58d33ada2384e483b52e7826beeae..0000000000000000000000000000000000000000
--- a/src/lagrangian/dieselSpray/spraySubModels/wallModel/reflectParcel/reflectParcel.C2
+++ /dev/null
@@ -1,211 +0,0 @@
-// The FOAM Project // File: reflectParcel.C
-/*
--------------------------------------------------------------------------------
- =========         | Class Implementation
- \\      /         |
-  \\    /          | Name:   reflectParcel
-   \\  /           | Family: wallModel
-    \\/            |
-    F ield         | FOAM version: 2.3
-    O peration     |
-    A and          | Copyright (C) 1991-2009 OpenCFD Ltd.
-    M anipulation  |          All Rights Reserved.
--------------------------------------------------------------------------------
-DESCRIPTION
-
-AUTHOR
-    Henry G Weller.
-
--------------------------------------------------------------------------------
-*/
-
-#include "reflectParcel.H"
-#include "addToRunTimeSelectionTable.H"
-#include "wallPolyPatch.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
-
-defineTypeNameAndDebug(reflectParcel, 0);
-
-addToRunTimeSelectionTable
-(
-    wallModel,
-    reflectParcel,
-    dictionary
-);
-
-
-// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
-
-// Construct from components
-reflectParcel::reflectParcel
-(
-    const dictionary& dict,
-    const fvMesh& mesh,
-    spray& sm
-)
-:
-    wallModel(dict, mesh, sm),
-    coeffsDict_(dict.subDict(typeName + "Coeffs")),
-    elasticity_(readScalar(coeffsDict_.lookup("elasticity")))
-{}
-
-
-// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
-
-reflectParcel::~reflectParcel()
-{}
-
-
-// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
-
-// Return 'keepParcel'
-bool reflectParcel::wallTreatment
-(
-    parcel& p
-) const
-{
-    label patchi = p.patch();
-    label facei = p.patchFace(patchi);
-
-    const polyMesh& mesh = spray_.mesh();
-
-    if (typeid(mesh_.boundaryMesh()[patchi]) == typeid(wallPolyPatch))
-    {
-        // wallNormal defined to point outwards of domain
-        vector Sf = mesh_.Sf().boundaryField()[patchi][facei];
-        Sf /= mag(Sf);
-
-        // adjust velocity when wall is moving
-        if (!mesh.moving())
-        {
-            scalar Un = p.U() & Sf;
-            
-            if (Un > 0)
-            {
-                p.U() -= (1.0 + elasticity_)*Un*Sf;
-            }
-
-        }
-        else
-        {
-            label facep = p.face();
-
-            scalar dt = spray_.runTime().deltaT().value();
-            scalar fraction = p.t0()/dt;
-            const vectorField& oldPoints = mesh.oldPoints();
-            const vector& Cf1 = mesh.faceCentres()[facep];
-
-            vector Cf0 = mesh.faces()[facep].centre(oldPoints);
-            vector Cf = Cf0 + fraction*(Cf1 - Cf0);
-            vector Sf0 = mesh.faces()[facep].normal(oldPoints);
-            Sf0 /= mag(Sf0);
-
-            scalar magSfDiff = mag(Sf - Sf0);
-
-            if (magSfDiff > SMALL)
-            {
-                bool pureRotation = false;
-
-                if (pureRotation)
-                {
-                    // rotation
-                    
-                    // find center of rotation
-                    vector omega = Sf0 ^ Sf;
-                    scalar magOmega = mag(omega);
-                    omega /= magOmega+SMALL;
-                    vector n0 = omega ^ Sf0;
-                    scalar lam = ((Cf1 - Cf0) & Sf)/(n0 & Sf);
-                    vector r0 = Cf0 + lam*n0;
-                    
-                    scalar phiVel = ::asin(magOmega)/dt;
-                    
-                    vector pos = p.position() - r0;
-                    vector v = phiVel*(omega ^ pos);
-
-                    vector Sfp = Sf0 + fraction*(Sf - Sf0);
-                    //vector Sfp = Sf;
-
-                    vector Ur = p.U() - v;
-                    scalar Urn = Ur & Sfp;
-                    /*
-                    scalar dd = (p.position() - r0) & Sfp;
-                    Info << "Urn = " << Urn
-                        << ", dd = " << dd
-                        << ", pos = " << p.position()
-                        << ", Sfp = " << Sfp
-                        << ", omega = " << omega
-                        << ", r0 = " << r0
-                        << endl;
-                        */
-                    if (Urn > 0.0)
-                    {
-                        p.U() -= (1.0 + elasticity_)*Urn*Sfp;
-                    }
-                }
-                else
-                {
-                    vector Sfp = Sf0 + fraction*(Sf - Sf0);
-                    //vector Sfp = Sf;
-                    vector omega = Sf0 ^ Sf;
-                    scalar magOmega = mag(omega);
-                    omega /= magOmega+SMALL;
-                    
-                    scalar phiVel = ::asin(magOmega)/dt;
-                    
-                    scalar dist = (p.position() - Cf) & Sfp;
-                    vector pos = p.position() - dist*Sfp;
-                    vector vrot = phiVel*(omega ^ (pos - Cf));
-                    vector vtrans = (Cf1 - Cf0)/dt;
-                    vector v = vtrans + vrot;
-
-                    scalar Un = ((p.U() - v) & Sfp);
-                    
-                    if (Un > 0.0)
-                    {
-                        p.U() -= (1.0 + elasticity_)*Un*Sfp;
-                    }
-                }
-            }
-            else
-            {
-                // translation
-
-                vector v = (Cf1 - Cf0)/dt;
-                vector Ur = p.U() - v;
-                scalar Urn = Ur & Sf;
-
-                if (Urn > 0.0)
-                {
-                    Ur -= (1.0 + elasticity_)*Urn*Sf;
-                    p.U() = Ur + v;
-                }
-
-
-            }
-        }
-
-    }
-    else
-    {
-        FatalError
-            << "bool reflectParcel::wallTreatment(parcel& parcel) const "
-                << " parcel has hit a boundary " 
-                << mesh_.boundary()[patchi].type()
-                << " which not yet has been implemented."
-            << abort(FatalError);
-    }
-    return true;
-}
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-} // End namespace Foam
-
-// ************************************************************************* //
diff --git a/src/lagrangian/dsmc/clouds/Templates/DsmcCloud/DsmcCloud.C b/src/lagrangian/dsmc/clouds/Templates/DsmcCloud/DsmcCloud.C
index 53177e9afebcc5a263917230543768ee48c5ebe1..23aa3dc47823a780110e71326cdab70b9cb066db 100644
--- a/src/lagrangian/dsmc/clouds/Templates/DsmcCloud/DsmcCloud.C
+++ b/src/lagrangian/dsmc/clouds/Templates/DsmcCloud/DsmcCloud.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -34,9 +34,6 @@ License
 template<class ParcelType>
 Foam::scalar Foam::DsmcCloud<ParcelType>::kb = 1.380650277e-23;
 
-template<class ParcelType>
-Foam::scalar Foam::DsmcCloud<ParcelType>::Tref = 273;
-
 
 // * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
 
@@ -302,7 +299,7 @@ void Foam::DsmcCloud<ParcelType>::collisions()
     // Temporary storage for subCells
     List<DynamicList<label> > subCells(8);
 
-    scalar deltaT = mesh_.time().deltaT().value();
+    scalar deltaT = cachedDeltaT();
 
     label collisionCandidates = 0;
 
@@ -527,20 +524,20 @@ void Foam::DsmcCloud<ParcelType>::addNewParcel
 template<class ParcelType>
 Foam::DsmcCloud<ParcelType>::DsmcCloud
 (
-    const word& cloudType,
+    const word& cloudName,
     const volScalarField& T,
     const volVectorField& U
 )
 :
-    Cloud<ParcelType>(T.mesh(), cloudType, false),
+    Cloud<ParcelType>(T.mesh(), cloudName, false),
     DsmcBaseCloud(),
-    cloudType_(cloudType),
+    cloudName_(cloudName),
     mesh_(T.mesh()),
     particleProperties_
     (
         IOobject
         (
-            cloudType + "Properties",
+            cloudName + "Properties",
             mesh_.time().constant(),
             mesh_,
             IOobject::MUST_READ,
@@ -639,19 +636,19 @@ Foam::DsmcCloud<ParcelType>::DsmcCloud
 template<class ParcelType>
 Foam::DsmcCloud<ParcelType>::DsmcCloud
 (
-    const word& cloudType,
+    const word& cloudName,
     const fvMesh& mesh
 )
     :
-    Cloud<ParcelType>(mesh, cloudType, false),
+    Cloud<ParcelType>(mesh, cloudName, false),
     DsmcBaseCloud(),
-    cloudType_(cloudType),
+    cloudName_(cloudName),
     mesh_(mesh),
     particleProperties_
     (
         IOobject
         (
-            cloudType + "Properties",
+            cloudName + "Properties",
             mesh_.time().constant(),
             mesh_,
             IOobject::MUST_READ,
@@ -781,6 +778,9 @@ Foam::DsmcCloud<ParcelType>::~DsmcCloud()
 template<class ParcelType>
 void Foam::DsmcCloud<ParcelType>::evolve()
 {
+    // cache the value of deltaT for this timestep
+    storeDeltaT();
+
     typename ParcelType::trackData td(*this);
 
     // Reset the surface data collection fields
diff --git a/src/lagrangian/dsmc/clouds/Templates/DsmcCloud/DsmcCloud.H b/src/lagrangian/dsmc/clouds/Templates/DsmcCloud/DsmcCloud.H
index 20bed1ee7b14429c66fcc90b2dcb52023ff73241..76b1dd7e79046022dd7869178c84dbc612211abf 100644
--- a/src/lagrangian/dsmc/clouds/Templates/DsmcCloud/DsmcCloud.H
+++ b/src/lagrangian/dsmc/clouds/Templates/DsmcCloud/DsmcCloud.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -76,7 +76,7 @@ class DsmcCloud
 
         //- Cloud type - used to set the name of the parcel properties
         //  dictionary by appending "Properties"
-        const word cloudType_;
+        const word cloudName_;
 
         //- References to the mesh and time databases
         const fvMesh& mesh_;
@@ -116,6 +116,10 @@ class DsmcCloud
         //- Random number generator
         Random rndGen_;
 
+        //- In-cloud cache of deltaT, lookup in submodels and parcel is
+        //  expensive
+        scalar cachedDeltaT_;
+
 
         // References to the macroscopic fields
 
@@ -172,16 +176,13 @@ public:
         //- Boltzmann constant
         static scalar kb;
 
-        //- Reference temperature for all models
-        static scalar Tref;
-
 
     // Constructors
 
         //- Construct given name and mesh, will read Parcels from file
         DsmcCloud
         (
-            const word& cloudType,
+            const word& cloudName,
             const volScalarField& T,
             const volVectorField& U
         );
@@ -189,7 +190,7 @@ public:
         //- Construct given name and mesh.  Used to initialise.
         DsmcCloud
         (
-            const word& cloudType,
+            const word& cloudName,
             const fvMesh& mesh
         );
 
@@ -205,7 +206,7 @@ public:
             // References to the mesh and databases
 
                 //- Return the cloud type
-                inline const word& cloudType() const;
+                inline const word& cloudName() const;
 
                 //- Return refernce to the mesh
                 inline const fvMesh& mesh() const;
@@ -246,6 +247,12 @@ public:
                 //- Return refernce to the random object
                 inline Random& rndGen();
 
+                //- Store (cache) the current value of deltaT
+                inline void storeDeltaT();
+
+                //- Return the cached value of deltaT
+                inline scalar cachedDeltaT() const;
+
 
             // References to the surface data collection fields
 
diff --git a/src/lagrangian/dsmc/clouds/Templates/DsmcCloud/DsmcCloudI.H b/src/lagrangian/dsmc/clouds/Templates/DsmcCloud/DsmcCloudI.H
index d39de4954faa1a062ab15da0d878e736d542b42e..3529702fdd6b5591a6c588a0890b0a417dbcae2d 100644
--- a/src/lagrangian/dsmc/clouds/Templates/DsmcCloud/DsmcCloudI.H
+++ b/src/lagrangian/dsmc/clouds/Templates/DsmcCloud/DsmcCloudI.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -27,9 +27,9 @@ License
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 template<class ParcelType>
-inline const Foam::word& Foam::DsmcCloud<ParcelType>::cloudType() const
+inline const Foam::word& Foam::DsmcCloud<ParcelType>::cloudName() const
 {
-    return cloudType_;
+    return cloudName_;
 }
 
 
@@ -120,6 +120,20 @@ inline Foam::Random& Foam::DsmcCloud<ParcelType>::rndGen()
 }
 
 
+template<class ParcelType>
+inline void Foam::DsmcCloud<ParcelType>::storeDeltaT()
+{
+    cachedDeltaT_ = mesh().time().deltaT().value();
+}
+
+
+template<class ParcelType>
+inline Foam::scalar Foam::DsmcCloud<ParcelType>::cachedDeltaT() const
+{
+    return cachedDeltaT_;
+}
+
+
 template<class ParcelType>
 inline const Foam::volScalarField& Foam::DsmcCloud<ParcelType>::q() const
 {
diff --git a/src/lagrangian/dsmc/clouds/baseClasses/DsmcBaseCloud/DsmcBaseCloud.C b/src/lagrangian/dsmc/clouds/baseClasses/DsmcBaseCloud/DsmcBaseCloud.C
index 1e0c395ca19f24709a1c3c43b4c0c802969dc846..55554eee39c76bb8e301c55e549651318cd09790 100644
--- a/src/lagrangian/dsmc/clouds/baseClasses/DsmcBaseCloud/DsmcBaseCloud.C
+++ b/src/lagrangian/dsmc/clouds/baseClasses/DsmcBaseCloud/DsmcBaseCloud.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/lagrangian/dsmc/clouds/baseClasses/DsmcBaseCloud/DsmcBaseCloud.H b/src/lagrangian/dsmc/clouds/baseClasses/DsmcBaseCloud/DsmcBaseCloud.H
index df49f8e148bc2dfaa47924eff697821b59dbb8cf..b409f3612edffc0534a1d8d8d07b090559b81ec4 100644
--- a/src/lagrangian/dsmc/clouds/baseClasses/DsmcBaseCloud/DsmcBaseCloud.H
+++ b/src/lagrangian/dsmc/clouds/baseClasses/DsmcBaseCloud/DsmcBaseCloud.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/lagrangian/dsmc/clouds/derived/dsmcCloud/dsmcCloud.C b/src/lagrangian/dsmc/clouds/derived/dsmcCloud/dsmcCloud.C
index 000ffcd53efb82dc4454009b3a28dc9c715cf124..425e47a70581d9c062d591209e8dc066ddd7b6ca 100644
--- a/src/lagrangian/dsmc/clouds/derived/dsmcCloud/dsmcCloud.C
+++ b/src/lagrangian/dsmc/clouds/derived/dsmcCloud/dsmcCloud.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -38,12 +38,12 @@ namespace Foam
 
 Foam::dsmcCloud::dsmcCloud
 (
-    const word& cloudType,
+    const word& cloudName,
     const volScalarField& T,
     const volVectorField& U
 )
 :
-    DsmcCloud<dsmcParcel>(cloudType, T, U)
+    DsmcCloud<dsmcParcel>(cloudName, T, U)
 {
     dsmcParcel::readFields(*this);
 }
@@ -51,11 +51,11 @@ Foam::dsmcCloud::dsmcCloud
 
 Foam::dsmcCloud::dsmcCloud
 (
-    const word& cloudType,
+    const word& cloudName,
     const fvMesh& mesh
 )
 :
-    DsmcCloud<dsmcParcel>(cloudType, mesh)
+    DsmcCloud<dsmcParcel>(cloudName, mesh)
 {}
 
 
diff --git a/src/lagrangian/dsmc/clouds/derived/dsmcCloud/dsmcCloud.H b/src/lagrangian/dsmc/clouds/derived/dsmcCloud/dsmcCloud.H
index 2f88bbaad563dbb99fef716f22256416ae98bc15..ad63aca9fcaef68e5278f5e02d7563120220a079 100644
--- a/src/lagrangian/dsmc/clouds/derived/dsmcCloud/dsmcCloud.H
+++ b/src/lagrangian/dsmc/clouds/derived/dsmcCloud/dsmcCloud.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -72,7 +72,7 @@ public:
         //- Construct from components
         dsmcCloud
         (
-            const word& cloudType,
+            const word& cloudName,
             const volScalarField& T,
             const volVectorField& U
         );
@@ -80,7 +80,7 @@ public:
         //- Construct from name and mesh, used to initialise.
         dsmcCloud
         (
-            const word& cloudType,
+            const word& cloudName,
             const fvMesh& mesh
         );
 
@@ -91,7 +91,7 @@ public:
     // Member functions
 
         //- Write fields
-        void writeFields() const;
+        virtual void writeFields() const;
 };
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/lagrangian/dsmc/parcels/Templates/DsmcParcel/DsmcParcel.C b/src/lagrangian/dsmc/parcels/Templates/DsmcParcel/DsmcParcel.C
index f9c135718947fab6e8637c6ca0b24221864f2630..c52d92d20fef43858cfdd7075883003e6a043b76 100644
--- a/src/lagrangian/dsmc/parcels/Templates/DsmcParcel/DsmcParcel.C
+++ b/src/lagrangian/dsmc/parcels/Templates/DsmcParcel/DsmcParcel.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -44,7 +44,7 @@ bool Foam::DsmcParcel<ParcelType>::move
     const polyMesh& mesh = td.cloud().pMesh();
     const polyBoundaryMesh& pbMesh = mesh.boundaryMesh();
 
-    const scalar deltaT = mesh.time().deltaT().value();
+    const scalar deltaT = td.cloud().cachedDeltaT();
     scalar tEnd = (1.0 - p.stepFraction())*deltaT;
     const scalar dtMax = tEnd;
 
@@ -61,15 +61,9 @@ bool Foam::DsmcParcel<ParcelType>::move
 
         if (p.onBoundary() && td.keepParticle)
         {
-            if (p.face() > -1)
+            if (isType<processorPolyPatch>(pbMesh[p.patch(p.face())]))
             {
-                if
-                (
-                    isType<processorPolyPatch>(pbMesh[p.patch(p.face())])
-                )
-                {
-                    td.switchProcessor = true;
-                }
+                td.switchProcessor = true;
             }
         }
     }
@@ -78,6 +72,19 @@ bool Foam::DsmcParcel<ParcelType>::move
 }
 
 
+template<class ParcelType>
+template<class TrackData>
+bool Foam::DsmcParcel<ParcelType>::hitPatch
+(
+    const polyPatch&,
+    TrackData& td,
+    const label patchI
+)
+{
+    return false;
+}
+
+
 template<class ParcelType>
 template<class TrackData>
 void Foam::DsmcParcel<ParcelType>::hitProcessorPatch
@@ -138,7 +145,7 @@ void Foam::DsmcParcel<ParcelType>::hitWallPatch
 
     const scalar fA = mag(wpp.faceAreas()[wppLocalFace]);
 
-    const scalar deltaT = td.cloud().mesh().time().deltaT().value();
+    const scalar deltaT = td.cloud().cachedDeltaT();
 
     scalar deltaQ = td.cloud().nParticle()*(preIE - postIE)/(deltaT*fA);
 
diff --git a/src/lagrangian/dsmc/parcels/Templates/DsmcParcel/DsmcParcel.H b/src/lagrangian/dsmc/parcels/Templates/DsmcParcel/DsmcParcel.H
index bbc2fd1539b2fa4f5a267c2b942fe3373ebe635b..af8e350e7fd8ec756ba9957eb74c4f00b9152157 100644
--- a/src/lagrangian/dsmc/parcels/Templates/DsmcParcel/DsmcParcel.H
+++ b/src/lagrangian/dsmc/parcels/Templates/DsmcParcel/DsmcParcel.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -239,6 +239,16 @@ public:
 
         // Patch interactions
 
+            //- Overridable function to handle the particle hitting a patch
+            //  Executed before other patch-hitting functions
+            template<class TrackData>
+            bool hitPatch
+            (
+                const polyPatch&,
+                TrackData& td,
+                const label patchI
+            );
+
             //- Overridable function to handle the particle hitting a
             //  processorPatch
             template<class TrackData>
diff --git a/src/lagrangian/dsmc/parcels/Templates/DsmcParcel/DsmcParcelI.H b/src/lagrangian/dsmc/parcels/Templates/DsmcParcel/DsmcParcelI.H
index ff86419186fee680205fe2b70e0d0d2a6c705e61..239571ceaef99cb46f15003212de45ba09cbeb88 100644
--- a/src/lagrangian/dsmc/parcels/Templates/DsmcParcel/DsmcParcelI.H
+++ b/src/lagrangian/dsmc/parcels/Templates/DsmcParcel/DsmcParcelI.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/lagrangian/dsmc/parcels/Templates/DsmcParcel/DsmcParcelIO.C b/src/lagrangian/dsmc/parcels/Templates/DsmcParcel/DsmcParcelIO.C
index b8bc688c09640bfd462f754fc87175a46334c9ff..6677591009bd879cf23747f964a81a9e8dcb7911 100644
--- a/src/lagrangian/dsmc/parcels/Templates/DsmcParcel/DsmcParcelIO.C
+++ b/src/lagrangian/dsmc/parcels/Templates/DsmcParcel/DsmcParcelIO.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/lagrangian/dsmc/parcels/derived/dsmcParcel/defineDsmcParcel.C b/src/lagrangian/dsmc/parcels/derived/dsmcParcel/defineDsmcParcel.C
index d3b71359da80c68830d37927e499e44441758ae7..d5691241363954d6b766123bd81548356c51d763 100644
--- a/src/lagrangian/dsmc/parcels/derived/dsmcParcel/defineDsmcParcel.C
+++ b/src/lagrangian/dsmc/parcels/derived/dsmcParcel/defineDsmcParcel.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/lagrangian/dsmc/parcels/derived/dsmcParcel/dsmcParcel.C b/src/lagrangian/dsmc/parcels/derived/dsmcParcel/dsmcParcel.C
index 8f52fcdabf62a8dbd9e7cba06295a3ea41cbbfba..e09afe9a5dcb14d5fb48f307e84a261f0798dc96 100644
--- a/src/lagrangian/dsmc/parcels/derived/dsmcParcel/dsmcParcel.C
+++ b/src/lagrangian/dsmc/parcels/derived/dsmcParcel/dsmcParcel.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/lagrangian/dsmc/parcels/derived/dsmcParcel/dsmcParcel.H b/src/lagrangian/dsmc/parcels/derived/dsmcParcel/dsmcParcel.H
index 24d9c9ada4f4654f8911c151e78b806d782807eb..f2676c5ed9c7aa5b3abf25fcb3fc6bea09b88fab 100644
--- a/src/lagrangian/dsmc/parcels/derived/dsmcParcel/dsmcParcel.H
+++ b/src/lagrangian/dsmc/parcels/derived/dsmcParcel/dsmcParcel.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/lagrangian/dsmc/parcels/derived/dsmcParcel/makeDsmcParcelBinaryCollisionModels.C b/src/lagrangian/dsmc/parcels/derived/dsmcParcel/makeDsmcParcelBinaryCollisionModels.C
index de2444687b785586345a50d8eaf922bd63073b10..487cedad29b3d1d7314e1c7a5517b1089a6860bd 100644
--- a/src/lagrangian/dsmc/parcels/derived/dsmcParcel/makeDsmcParcelBinaryCollisionModels.C
+++ b/src/lagrangian/dsmc/parcels/derived/dsmcParcel/makeDsmcParcelBinaryCollisionModels.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/lagrangian/dsmc/parcels/derived/dsmcParcel/makeDsmcParcelInflowBoundaryModels.C b/src/lagrangian/dsmc/parcels/derived/dsmcParcel/makeDsmcParcelInflowBoundaryModels.C
index c3ee121ff02fedac07f42ff28e5169fe4a7b9f33..ef9191104500f41013e774b0f9b2caf7f4103d11 100644
--- a/src/lagrangian/dsmc/parcels/derived/dsmcParcel/makeDsmcParcelInflowBoundaryModels.C
+++ b/src/lagrangian/dsmc/parcels/derived/dsmcParcel/makeDsmcParcelInflowBoundaryModels.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/lagrangian/dsmc/parcels/derived/dsmcParcel/makeDsmcParcelWallInteractionModels.C b/src/lagrangian/dsmc/parcels/derived/dsmcParcel/makeDsmcParcelWallInteractionModels.C
index 874c787d6a75c4be73c84b26c0032938d7f4b802..f15d0bdadd6090c6a39f4403abb97d69015ce91e 100644
--- a/src/lagrangian/dsmc/parcels/derived/dsmcParcel/makeDsmcParcelWallInteractionModels.C
+++ b/src/lagrangian/dsmc/parcels/derived/dsmcParcel/makeDsmcParcelWallInteractionModels.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/lagrangian/dsmc/submodels/BinaryCollisionModel/BinaryCollisionModel/BinaryCollisionModel.C b/src/lagrangian/dsmc/submodels/BinaryCollisionModel/BinaryCollisionModel/BinaryCollisionModel.C
index 0118014f9c62b6ecec5a2d93bef0b9425db04cc9..cdd10231225037881f87a90d62f79bb2fce9e350 100644
--- a/src/lagrangian/dsmc/submodels/BinaryCollisionModel/BinaryCollisionModel/BinaryCollisionModel.C
+++ b/src/lagrangian/dsmc/submodels/BinaryCollisionModel/BinaryCollisionModel/BinaryCollisionModel.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/lagrangian/dsmc/submodels/BinaryCollisionModel/BinaryCollisionModel/BinaryCollisionModel.H b/src/lagrangian/dsmc/submodels/BinaryCollisionModel/BinaryCollisionModel/BinaryCollisionModel.H
index 771115c98428b86253f8d4920b9ad577067b7bd5..0dc8f02ea7d73f24da679049d2a3172e442e2c0d 100644
--- a/src/lagrangian/dsmc/submodels/BinaryCollisionModel/BinaryCollisionModel/BinaryCollisionModel.H
+++ b/src/lagrangian/dsmc/submodels/BinaryCollisionModel/BinaryCollisionModel/BinaryCollisionModel.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -152,26 +152,26 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-#define makeBinaryCollisionModel(CloudType)                            \
+#define makeBinaryCollisionModel(CloudType)                                   \
                                                                               \
     defineNamedTemplateTypeNameAndDebug                                       \
     (                                                                         \
-        BinaryCollisionModel<CloudType>,                               \
+        BinaryCollisionModel<CloudType>,                                      \
         0                                                                     \
     );                                                                        \
                                                                               \
     defineTemplateRunTimeSelectionTable                                       \
     (                                                                         \
-        BinaryCollisionModel<CloudType>,                               \
+        BinaryCollisionModel<CloudType>,                                      \
         dictionary                                                            \
     );
 
 
-#define makeBinaryCollisionModelType(SS, CloudType, ParcelType)        \
+#define makeBinaryCollisionModelType(SS, CloudType, ParcelType)               \
                                                                               \
     defineNamedTemplateTypeNameAndDebug(SS<CloudType<ParcelType> >, 0);       \
                                                                               \
-    BinaryCollisionModel<CloudType<ParcelType> >::                     \
+    BinaryCollisionModel<CloudType<ParcelType> >::                            \
         adddictionaryConstructorToTable<SS<CloudType<ParcelType> > >          \
             add##SS##CloudType##ParcelType##ConstructorToTable_;
 
diff --git a/src/lagrangian/dsmc/submodels/BinaryCollisionModel/BinaryCollisionModel/NewBinaryCollisionModel.C b/src/lagrangian/dsmc/submodels/BinaryCollisionModel/BinaryCollisionModel/NewBinaryCollisionModel.C
index 8878164cdbf1425fcf9838a369ca9b855fcb60d4..12c74f6697e7044396331aec3a95bc9326594ee4 100644
--- a/src/lagrangian/dsmc/submodels/BinaryCollisionModel/BinaryCollisionModel/NewBinaryCollisionModel.C
+++ b/src/lagrangian/dsmc/submodels/BinaryCollisionModel/BinaryCollisionModel/NewBinaryCollisionModel.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/lagrangian/dsmc/submodels/BinaryCollisionModel/LarsenBorgnakkeVariableHardSphere/LarsenBorgnakkeVariableHardSphere.C b/src/lagrangian/dsmc/submodels/BinaryCollisionModel/LarsenBorgnakkeVariableHardSphere/LarsenBorgnakkeVariableHardSphere.C
index b6deaf1f0064cb65ed6c3e3b7d93cee12587b624..69af3a855b3f2f60a81d80b1441a4028e7ac079b 100644
--- a/src/lagrangian/dsmc/submodels/BinaryCollisionModel/LarsenBorgnakkeVariableHardSphere/LarsenBorgnakkeVariableHardSphere.C
+++ b/src/lagrangian/dsmc/submodels/BinaryCollisionModel/LarsenBorgnakkeVariableHardSphere/LarsenBorgnakkeVariableHardSphere.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -97,6 +97,7 @@ Foam::LarsenBorgnakkeVariableHardSphere<CloudType>::LarsenBorgnakkeVariableHardS
 )
 :
     BinaryCollisionModel<CloudType>(dict, cloud, typeName),
+    Tref_(readScalar(this->coeffDict().lookup("Tref"))),
     relaxationCollisionNumber_
     (
         readScalar(this->coeffDict().lookup("relaxationCollisionNumber"))
@@ -156,7 +157,7 @@ Foam::scalar Foam::LarsenBorgnakkeVariableHardSphere<CloudType>::sigmaTcR
     // calculating cross section = pi*dPQ^2, where dPQ is from Bird, eq. 4.79
     scalar sigmaTPQ =
         mathematicalConstant::pi*dPQ*dPQ
-       *pow(2.0*CloudType::kb*CloudType::Tref/(mR*cR*cR), omegaPQ - 0.5)
+       *pow(2.0*CloudType::kb*Tref_/(mR*cR*cR), omegaPQ - 0.5)
        /exp(Foam::lgamma(2.5 - omegaPQ));
 
     return sigmaTPQ*cR;
diff --git a/src/lagrangian/dsmc/submodels/BinaryCollisionModel/LarsenBorgnakkeVariableHardSphere/LarsenBorgnakkeVariableHardSphere.H b/src/lagrangian/dsmc/submodels/BinaryCollisionModel/LarsenBorgnakkeVariableHardSphere/LarsenBorgnakkeVariableHardSphere.H
index c95d70f24c1f4ad0cfa394728258594664c3f89a..0b95c9fb4e0966b64afae0fbaeeaf03db662416a 100644
--- a/src/lagrangian/dsmc/submodels/BinaryCollisionModel/LarsenBorgnakkeVariableHardSphere/LarsenBorgnakkeVariableHardSphere.H
+++ b/src/lagrangian/dsmc/submodels/BinaryCollisionModel/LarsenBorgnakkeVariableHardSphere/LarsenBorgnakkeVariableHardSphere.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -50,6 +50,9 @@ class LarsenBorgnakkeVariableHardSphere
 {
     // Private data
 
+        //- Reference temperature
+        const scalar Tref_;
+
         //- Relaxation collision number
         const scalar relaxationCollisionNumber_;
 
diff --git a/src/lagrangian/dsmc/submodels/BinaryCollisionModel/VariableHardSphere/VariableHardSphere.C b/src/lagrangian/dsmc/submodels/BinaryCollisionModel/VariableHardSphere/VariableHardSphere.C
index de47f1550dc9c66018d5fc3a4e3d60da8f64c0c2..29b389a65ae197b866edb2019069e3667be96c07 100644
--- a/src/lagrangian/dsmc/submodels/BinaryCollisionModel/VariableHardSphere/VariableHardSphere.C
+++ b/src/lagrangian/dsmc/submodels/BinaryCollisionModel/VariableHardSphere/VariableHardSphere.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -35,7 +35,8 @@ Foam::VariableHardSphere<CloudType>::VariableHardSphere
     CloudType& cloud
 )
 :
-    BinaryCollisionModel<CloudType>(dict, cloud, typeName)
+    BinaryCollisionModel<CloudType>(dict, cloud, typeName),
+    Tref_(readScalar(this->coeffDict().lookup("Tref")))
 {}
 
 
@@ -90,7 +91,7 @@ Foam::scalar Foam::VariableHardSphere<CloudType>::sigmaTcR
     // calculating cross section = pi*dPQ^2, where dPQ is from Bird, eq. 4.79
     scalar sigmaTPQ =
         mathematicalConstant::pi*dPQ*dPQ
-       *pow(2.0*CloudType::kb*CloudType::Tref/(mR*cR*cR), omegaPQ - 0.5)
+       *pow(2.0*CloudType::kb*Tref_/(mR*cR*cR), omegaPQ - 0.5)
        /exp(Foam::lgamma(2.5 - omegaPQ));
 
     return sigmaTPQ*cR;
diff --git a/src/lagrangian/dsmc/submodels/BinaryCollisionModel/VariableHardSphere/VariableHardSphere.H b/src/lagrangian/dsmc/submodels/BinaryCollisionModel/VariableHardSphere/VariableHardSphere.H
index a1dbdb9a270c0e7c8dcb3021601fc88355e035c2..ee58d08d6a3295ca42b75714bb3e4e73577c081c 100644
--- a/src/lagrangian/dsmc/submodels/BinaryCollisionModel/VariableHardSphere/VariableHardSphere.H
+++ b/src/lagrangian/dsmc/submodels/BinaryCollisionModel/VariableHardSphere/VariableHardSphere.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -47,6 +47,12 @@ class VariableHardSphere
 :
     public BinaryCollisionModel<CloudType>
 {
+    // Private data
+
+        //- Reference temperature
+        const scalar Tref_;
+
+
 public:
 
     //- Runtime type information
diff --git a/src/lagrangian/dsmc/submodels/InflowBoundaryModel/FreeStream/FreeStream.C b/src/lagrangian/dsmc/submodels/InflowBoundaryModel/FreeStream/FreeStream.C
index 9d791a1ed3421049f77fd6d4fa6fcc4cf29be9c8..0f0e135e4c9ab1042852cd547c000c9a00c2ae3c 100644
--- a/src/lagrangian/dsmc/submodels/InflowBoundaryModel/FreeStream/FreeStream.C
+++ b/src/lagrangian/dsmc/submodels/InflowBoundaryModel/FreeStream/FreeStream.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -126,7 +126,7 @@ void Foam::FreeStream<CloudType>::inflow()
 
     const polyMesh& mesh(cloud.mesh());
 
-    const scalar deltaT = mesh.time().deltaT().value();
+    const scalar deltaT = cloud.cachedDeltaT();
 
     Random& rndGen(cloud.rndGen());
 
@@ -162,6 +162,13 @@ void Foam::FreeStream<CloudType>::inflow()
 
             scalar mass = cloud.constProps(typeId).mass();
 
+            if (min(boundaryT[patchI]) < SMALL)
+            {
+                FatalErrorIn ("Foam::FreeStream<CloudType>::inflow()")
+                    << "Zero boundary temperature detected, check boundaryT condition." << nl
+                    << nl << abort(FatalError);
+            }
+
             scalarField mostProbableSpeed
             (
                 cloud.maxwellianMostProbableSpeed
diff --git a/src/lagrangian/dsmc/submodels/InflowBoundaryModel/FreeStream/FreeStream.H b/src/lagrangian/dsmc/submodels/InflowBoundaryModel/FreeStream/FreeStream.H
index 03c2fe2abb72fe657ef9905162585099c445693d..5ecf6ed33c4bc3dc24786c5c2465aa63d5e789df 100644
--- a/src/lagrangian/dsmc/submodels/InflowBoundaryModel/FreeStream/FreeStream.H
+++ b/src/lagrangian/dsmc/submodels/InflowBoundaryModel/FreeStream/FreeStream.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/lagrangian/dsmc/submodels/InflowBoundaryModel/InflowBoundaryModel/InflowBoundaryModel.C b/src/lagrangian/dsmc/submodels/InflowBoundaryModel/InflowBoundaryModel/InflowBoundaryModel.C
index 8e99e3f43f8191a69c57f9855d702d607dcf50d5..bcbc21d4103668c8a71ebd30c7a546703d324a28 100644
--- a/src/lagrangian/dsmc/submodels/InflowBoundaryModel/InflowBoundaryModel/InflowBoundaryModel.C
+++ b/src/lagrangian/dsmc/submodels/InflowBoundaryModel/InflowBoundaryModel/InflowBoundaryModel.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/lagrangian/dsmc/submodels/InflowBoundaryModel/InflowBoundaryModel/InflowBoundaryModel.H b/src/lagrangian/dsmc/submodels/InflowBoundaryModel/InflowBoundaryModel/InflowBoundaryModel.H
index 6b01a82f40f1233dadbf1ad27434e0659c540a84..a86f857946e56252cb70693a54db3befb7cf95b5 100644
--- a/src/lagrangian/dsmc/submodels/InflowBoundaryModel/InflowBoundaryModel/InflowBoundaryModel.H
+++ b/src/lagrangian/dsmc/submodels/InflowBoundaryModel/InflowBoundaryModel/InflowBoundaryModel.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/lagrangian/dsmc/submodels/InflowBoundaryModel/InflowBoundaryModel/NewInflowBoundaryModel.C b/src/lagrangian/dsmc/submodels/InflowBoundaryModel/InflowBoundaryModel/NewInflowBoundaryModel.C
index 3abc5b29368d1af2c13fb65f30775d57ecfc461c..bc1005bdaf58e60923fdfdf7a95f9a79c895b279 100644
--- a/src/lagrangian/dsmc/submodels/InflowBoundaryModel/InflowBoundaryModel/NewInflowBoundaryModel.C
+++ b/src/lagrangian/dsmc/submodels/InflowBoundaryModel/InflowBoundaryModel/NewInflowBoundaryModel.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/lagrangian/dsmc/submodels/InflowBoundaryModel/NoInflow/NoInflow.C b/src/lagrangian/dsmc/submodels/InflowBoundaryModel/NoInflow/NoInflow.C
index d04db500daa1fa762ada76543d72bb045a606da0..9711ab5a3ced1d7fa8c3f8c485748bb1c3186512 100644
--- a/src/lagrangian/dsmc/submodels/InflowBoundaryModel/NoInflow/NoInflow.C
+++ b/src/lagrangian/dsmc/submodels/InflowBoundaryModel/NoInflow/NoInflow.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/lagrangian/dsmc/submodels/InflowBoundaryModel/NoInflow/NoInflow.H b/src/lagrangian/dsmc/submodels/InflowBoundaryModel/NoInflow/NoInflow.H
index e3f46622e93c87519220169803ba5cdbd6c509ac..747d5595efeb20b619f77a49cf30e83075e9f283 100644
--- a/src/lagrangian/dsmc/submodels/InflowBoundaryModel/NoInflow/NoInflow.H
+++ b/src/lagrangian/dsmc/submodels/InflowBoundaryModel/NoInflow/NoInflow.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/lagrangian/dsmc/submodels/WallInteractionModel/MaxwellianThermal/MaxwellianThermal.C b/src/lagrangian/dsmc/submodels/WallInteractionModel/MaxwellianThermal/MaxwellianThermal.C
index c2c12ce5ca7d835941c812b6920a09ddc694355f..e7213561c0d2a2f2dacd103daeee8a74676c7aaf 100644
--- a/src/lagrangian/dsmc/submodels/WallInteractionModel/MaxwellianThermal/MaxwellianThermal.C
+++ b/src/lagrangian/dsmc/submodels/WallInteractionModel/MaxwellianThermal/MaxwellianThermal.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/lagrangian/dsmc/submodels/WallInteractionModel/MaxwellianThermal/MaxwellianThermal.H b/src/lagrangian/dsmc/submodels/WallInteractionModel/MaxwellianThermal/MaxwellianThermal.H
index 2b71beaba006c224e5c41dea13a6a79aa6b68dcc..8978723bacd5a345a79844e8cbe0ed228f8349a2 100644
--- a/src/lagrangian/dsmc/submodels/WallInteractionModel/MaxwellianThermal/MaxwellianThermal.H
+++ b/src/lagrangian/dsmc/submodels/WallInteractionModel/MaxwellianThermal/MaxwellianThermal.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/lagrangian/dsmc/submodels/WallInteractionModel/SpecularReflection/SpecularReflection.C b/src/lagrangian/dsmc/submodels/WallInteractionModel/SpecularReflection/SpecularReflection.C
index 4de5507bf00f07b9df5d646cefb4f889e029d265..1fb5ab3208404f235f264a54035c27263edac463 100644
--- a/src/lagrangian/dsmc/submodels/WallInteractionModel/SpecularReflection/SpecularReflection.C
+++ b/src/lagrangian/dsmc/submodels/WallInteractionModel/SpecularReflection/SpecularReflection.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/lagrangian/dsmc/submodels/WallInteractionModel/SpecularReflection/SpecularReflection.H b/src/lagrangian/dsmc/submodels/WallInteractionModel/SpecularReflection/SpecularReflection.H
index d2208bd3503d29b6ca40a4805718a9f655882134..c1d6d50e33da8af9054cd01f08b39451afa846ce 100644
--- a/src/lagrangian/dsmc/submodels/WallInteractionModel/SpecularReflection/SpecularReflection.H
+++ b/src/lagrangian/dsmc/submodels/WallInteractionModel/SpecularReflection/SpecularReflection.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/lagrangian/dsmc/submodels/WallInteractionModel/WallInteractionModel/NewWallInteractionModel.C b/src/lagrangian/dsmc/submodels/WallInteractionModel/WallInteractionModel/NewWallInteractionModel.C
index 85652f2379327af4db6aa9c9a6e8e3bcff873dfc..97197cd669ec6316ab43c8f1b10d927a68cd0025 100644
--- a/src/lagrangian/dsmc/submodels/WallInteractionModel/WallInteractionModel/NewWallInteractionModel.C
+++ b/src/lagrangian/dsmc/submodels/WallInteractionModel/WallInteractionModel/NewWallInteractionModel.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/lagrangian/dsmc/submodels/WallInteractionModel/WallInteractionModel/WallInteractionModel.C b/src/lagrangian/dsmc/submodels/WallInteractionModel/WallInteractionModel/WallInteractionModel.C
index 060d5dd76d9c59f1a2c4e896550c0fb1ee88f1df..a0874d9913d1660333c1cfb2fffa599084e3877f 100644
--- a/src/lagrangian/dsmc/submodels/WallInteractionModel/WallInteractionModel/WallInteractionModel.C
+++ b/src/lagrangian/dsmc/submodels/WallInteractionModel/WallInteractionModel/WallInteractionModel.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/lagrangian/dsmc/submodels/WallInteractionModel/WallInteractionModel/WallInteractionModel.H b/src/lagrangian/dsmc/submodels/WallInteractionModel/WallInteractionModel/WallInteractionModel.H
index 582bf2b1065ce26ec0113398357fed1a75d92a69..e9c7ffd33f001d555b9567a198554091745f683b 100644
--- a/src/lagrangian/dsmc/submodels/WallInteractionModel/WallInteractionModel/WallInteractionModel.H
+++ b/src/lagrangian/dsmc/submodels/WallInteractionModel/WallInteractionModel/WallInteractionModel.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/lagrangian/intermediate/IntegrationScheme/Analytical/Analytical.H b/src/lagrangian/intermediate/IntegrationScheme/Analytical/Analytical.H
index 51c4aa5614cf70ccba558c2c5463f89ba4786963..aefef71c0bdf7f13809926b4f6ae595b6816372a 100644
--- a/src/lagrangian/intermediate/IntegrationScheme/Analytical/Analytical.H
+++ b/src/lagrangian/intermediate/IntegrationScheme/Analytical/Analytical.H
@@ -49,7 +49,6 @@ class Analytical
 :
     public IntegrationScheme<Type>
 {
-
 public:
 
     //- Runtime type information
@@ -59,16 +58,11 @@ public:
     // Constructors
 
         //- Construct from components
-        Analytical
-        (
-            const word& phiName,
-            const dictionary& dict
-        );
+        Analytical(const word& phiName, const dictionary& dict);
 
 
     //- Destructor
-
-        virtual ~Analytical();
+    virtual ~Analytical();
 
 
     // Member Functions
diff --git a/src/lagrangian/intermediate/IntegrationScheme/Euler/Euler.H b/src/lagrangian/intermediate/IntegrationScheme/Euler/Euler.H
index 1062351c4c072c312fe30b8b891f28d58ab72267..279a80d8a79f23490a5b87744f093f2e84f35b6c 100644
--- a/src/lagrangian/intermediate/IntegrationScheme/Euler/Euler.H
+++ b/src/lagrangian/intermediate/IntegrationScheme/Euler/Euler.H
@@ -49,7 +49,6 @@ class Euler
 :
     public IntegrationScheme<Type>
 {
-
 public:
 
     //- Runtime type information
@@ -59,16 +58,11 @@ public:
     // Constructors
 
         //- Construct from components
-        Euler
-        (
-            const word& phiName,
-            const dictionary& dict
-        );
+        Euler(const word& phiName, const dictionary& dict);
 
 
     //- Destructor
-
-        virtual ~Euler();
+    virtual ~Euler();
 
 
     // Member Functions
diff --git a/src/lagrangian/intermediate/IntegrationScheme/IntegrationScheme/IntegrationScheme.H b/src/lagrangian/intermediate/IntegrationScheme/IntegrationScheme/IntegrationScheme.H
index 1ecc8c593419b580bbf69b96a996b21c89bed68d..78b1dec715c074426e6363ad323c3597cee63bb8 100644
--- a/src/lagrangian/intermediate/IntegrationScheme/IntegrationScheme/IntegrationScheme.H
+++ b/src/lagrangian/intermediate/IntegrationScheme/IntegrationScheme/IntegrationScheme.H
@@ -110,6 +110,7 @@ public:
 
 
 private:
+
     // Private data
 
         //- Name of the Integration variable
@@ -152,11 +153,7 @@ public:
     // Constructors
 
         //- Construct from components
-        IntegrationScheme
-        (
-            const word& phiName,
-            const dictionary& dict
-        );
+        IntegrationScheme(const word& phiName, const dictionary& dict);
 
 
     // Selectors
@@ -170,8 +167,7 @@ public:
 
 
     //- Destructor
-
-        virtual ~IntegrationScheme();
+    virtual ~IntegrationScheme();
 
 
     // Member Functions
diff --git a/src/lagrangian/intermediate/Make/files b/src/lagrangian/intermediate/Make/files
index ab3933d123056df6031137fba97cb49f07253b93..791138314619b734da0035075f4bdf801ffd71a4 100644
--- a/src/lagrangian/intermediate/Make/files
+++ b/src/lagrangian/intermediate/Make/files
@@ -1,55 +1,79 @@
+PARCELS=parcels
+BASEPARCELS=$(PARCELS)/baseClasses
+DERIVEDPARCELS=$(PARCELS)/derived
+
+CLOUDS=clouds
+BASECLOUDS=$(CLOUDS)/baseClasses
+DERIVEDCLOUDS=$(CLOUDS)/derived
+
+
 /* Parcels */
-parcels/derived/basicKinematicParcel/basicKinematicParcel.C
-parcels/derived/basicThermoParcel/basicThermoParcel.C
-parcels/derived/basicReactingParcel/basicReactingParcel.C
+$(BASEPARCELS)/reactingParcel/reactingParcel.C
+
 
 /* Cloud base classes */
-clouds/baseClasses/kinematicCloud/kinematicCloud.C
-clouds/baseClasses/thermoCloud/thermoCloud.C
-clouds/baseClasses/reactingCloud/reactingCloud.C
+$(BASECLOUDS)/kinematicCloud/kinematicCloud.C
+$(BASECLOUDS)/thermoCloud/thermoCloud.C
+$(BASECLOUDS)/reactingCloud/reactingCloud.C
+$(BASECLOUDS)/reactingMultiphaseCloud/reactingMultiphaseCloud.C
+
+
+/* Cloud container/injection mechanisms */
+$(DERIVEDCLOUDS)/basicKinematicCloud/basicKinematicCloud.C
+$(DERIVEDCLOUDS)/basicThermoCloud/basicThermoCloud.C
+$(DERIVEDCLOUDS)/BasicReactingCloud/defineBasicReactingCloud.C
+$(DERIVEDCLOUDS)/BasicReactingMultiphaseCloud/defineBasicReactingMultiphaseCloud.C
 
-/* Injection mechanisms */
-clouds/derived/basicKinematicCloud/basicKinematicCloud.C
-clouds/derived/basicThermoCloud/basicThermoCloud.C
-clouds/derived/basicReactingCloud/basicReactingCloud.C
 
 /* kinematic parcel sub-models */
-parcels/derived/basicKinematicParcel/defineBasicKinematicParcel.C
-parcels/derived/basicKinematicParcel/makeBasicKinematicParcelDispersionModels.C
-parcels/derived/basicKinematicParcel/makeBasicKinematicParcelDragModels.C
-parcels/derived/basicKinematicParcel/makeBasicKinematicParcelInjectionModels.C
-parcels/derived/basicKinematicParcel/makeBasicKinematicParcelHeatTransferModels.C
-parcels/derived/basicKinematicParcel/makeBasicKinematicParcelWallInteractionModels.C
+KINEMATICPARCEL=$(DERIVEDPARCELS)/basicKinematicParcel
+$(KINEMATICPARCEL)/basicKinematicParcel.C
+$(KINEMATICPARCEL)/defineBasicKinematicParcel.C
+$(KINEMATICPARCEL)/makeBasicKinematicParcelSubmodels.C
+
 
 /* thermo parcel sub-models */
-parcels/derived/basicThermoParcel/defineBasicThermoParcel.C
-parcels/derived/basicThermoParcel/makeBasicThermoParcelDispersionModels.C
-parcels/derived/basicThermoParcel/makeBasicThermoParcelDragModels.C
-parcels/derived/basicThermoParcel/makeBasicThermoParcelInjectionModels.C
-parcels/derived/basicThermoParcel/makeBasicThermoParcelHeatTransferModels.C
-parcels/derived/basicThermoParcel/makeBasicThermoParcelWallInteractionModels.C
+THERMOPARCEL=$(DERIVEDPARCELS)/basicThermoParcel
+$(THERMOPARCEL)/basicThermoParcel.C
+$(THERMOPARCEL)/defineBasicThermoParcel.C
+$(THERMOPARCEL)/makeBasicThermoParcelSubmodels.C
+
 
 /* reacting parcel sub-models */
-parcels/derived/basicReactingParcel/defineBasicReactingParcel.C
-parcels/derived/basicReactingParcel/makeBasicReactingParcelCompositionModels.C
-parcels/derived/basicReactingParcel/makeBasicReactingParcelDragModels.C
-parcels/derived/basicReactingParcel/makeBasicReactingParcelDispersionModels.C
-parcels/derived/basicReactingParcel/makeBasicReactingParcelInjectionModels.C
-parcels/derived/basicReactingParcel/makeBasicReactingParcelHeatTransferModels.C
-parcels/derived/basicReactingParcel/makeBasicReactingParcelMassTransferModels.C
-parcels/derived/basicReactingParcel/makeBasicReactingParcelSurfaceReactionModels.C
-parcels/derived/basicReactingParcel/makeBasicReactingParcelWallInteractionModels.C
+REACTINGPARCEL=$(DERIVEDPARCELS)/BasicReactingParcel
+$(REACTINGPARCEL)/defineBasicReactingParcel.C
+$(REACTINGPARCEL)/makeBasicReactingParcelSubmodels.C
+
+
+/* reacting multiphase parcel sub-models */
+REACTINGMPPARCEL=$(DERIVEDPARCELS)/BasicReactingMultiphaseParcel
+$(REACTINGMPPARCEL)/defineBasicReactingMultiphaseParcel.C
+$(REACTINGMPPARCEL)/makeBasicReactingMultiphaseParcelSubmodels.C
+
 
 /* bolt-on models */
 submodels/addOns/radiation/absorptionEmission/cloudAbsorptionEmission/cloudAbsorptionEmission.C
 submodels/addOns/radiation/scatter/cloudScatter/cloudScatter.C
 
+
+/* data entries */
+submodels/IO/DataEntry/makeDataEntries.C
+submodels/IO/DataEntry/polynomial/polynomial.C
+submodels/IO/DataEntry/polynomial/polynomialIO.C
+
+
 /* integration schemes */
 IntegrationScheme/makeIntegrationSchemes.C
 
 
-/* Data entries */
-submodels/IO/DataEntry/makeDataEntries.C
+/* particle forces */
+particleForces/particleForces.C
+
+
+/* phase properties */
+phaseProperties/phaseProperties/phaseProperties.C
+phaseProperties/phaseProperties/phasePropertiesIO.C
+phaseProperties/phasePropertiesList/phasePropertiesList.C
 
 
 LIB = $(FOAM_LIBBIN)/liblagrangianIntermediate
diff --git a/src/lagrangian/intermediate/Make/options b/src/lagrangian/intermediate/Make/options
index 4304ffde9f967b3b3faac828a98e9a891e623b8b..f3525972826a471984552d2ea2df7172861bafd1 100644
--- a/src/lagrangian/intermediate/Make/options
+++ b/src/lagrangian/intermediate/Make/options
@@ -1,5 +1,6 @@
 EXE_INC = \
     -I$(LIB_SRC)/finiteVolume/lnInclude \
+    -I$(LIB_SRC)/meshTools/lnInclude \
     -I$(LIB_SRC)/lagrangian/basic/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/pdfs/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \
@@ -8,7 +9,7 @@ EXE_INC = \
     -I$(LIB_SRC)/thermophysicalModels/liquidMixture/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/solids/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/solidMixture/lnInclude \
-    -I$(LIB_SRC)/thermophysicalModels/combustion/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/radiation/lnInclude \
     -I$(LIB_SRC)/turbulenceModels \
     -I$(LIB_SRC)/turbulenceModels/compressible/turbulenceModel \
@@ -17,6 +18,8 @@ EXE_INC = \
     -I$(LIB_SRC)/turbulenceModels/compressible/LES/lnInclude
 
 LIB_LIBS = \
+    -lfiniteVolume \
+    -lmeshTools \
     -llagrangian \
     -lpdf \
     -lliquids \
@@ -25,7 +28,6 @@ LIB_LIBS = \
     -lsolidMixture \
     -lspecie \
     -lbasicThermophysicalModels \
-    -lcombustionThermophysicalModels \
+    -lreactionThermophysicalModels \
     -lcompressibleRASModels \
-    -lcompressibleLESModels \
-    -lfiniteVolume
+    -lcompressibleLESModels
diff --git a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.C b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.C
index 8a8723a5395610c4c3129b40538912abde99a244..e473102c1a9084fd87e0794aa55d843c80604432 100644
--- a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.C
+++ b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.C
@@ -25,67 +25,35 @@ License
 \*---------------------------------------------------------------------------*/
 
 #include "KinematicCloud.H"
-#include "DispersionModel.H"
-#include "DragModel.H"
-#include "InjectionModel.H"
-#include "WallInteractionModel.H"
 #include "IntegrationScheme.H"
 #include "interpolation.H"
 
-
-// * * * * * * * * * * * Protected Member Functions  * * * * * * * * * * * * //
-
-template<class ParcelType>
-void Foam::KinematicCloud<ParcelType>::addNewParcel
-(
-    const vector& position,
-    const label cellId,
-    const scalar d,
-    const vector& U,
-    const scalar nParticles,
-    const scalar lagrangianDt
-)
-{
-    ParcelType* pPtr = new ParcelType
-    (
-        *this,
-        parcelTypeId_,
-        position,
-        cellId,
-        d,
-        U,
-        nParticles,
-        constProps_
-    );
-
-    scalar continuousDt = this->db().time().deltaT().value();
-    pPtr->stepFraction() = (continuousDt - lagrangianDt)/continuousDt;
-
-    addParticle(pPtr);
-}
-
+#include "DispersionModel.H"
+#include "DragModel.H"
+#include "InjectionModel.H"
+#include "PatchInteractionModel.H"
+#include "PostProcessingModel.H"
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
 template<class ParcelType>
 Foam::KinematicCloud<ParcelType>::KinematicCloud
 (
-    const word& cloudType,
+    const word& cloudName,
     const volScalarField& rho,
     const volVectorField& U,
     const volScalarField& mu,
     const dimensionedVector& g
 )
 :
-    Cloud<ParcelType>(rho.mesh(), cloudType, false),
+    Cloud<ParcelType>(rho.mesh(), cloudName, false),
     kinematicCloud(),
-    cloudType_(cloudType),
     mesh_(rho.mesh()),
     particleProperties_
     (
         IOobject
         (
-            cloudType + "Properties",
+            cloudName + "Properties",
             rho.mesh().time().constant(),
             rho.mesh(),
             IOobject::MUST_READ,
@@ -95,11 +63,16 @@ Foam::KinematicCloud<ParcelType>::KinematicCloud
     constProps_(particleProperties_),
     parcelTypeId_(readLabel(particleProperties_.lookup("parcelTypeId"))),
     coupled_(particleProperties_.lookup("coupled")),
+    cellValueSourceCorrection_
+    (
+        particleProperties_.lookup("cellValueSourceCorrection")
+    ),
     rndGen_(label(0)),
     rho_(rho),
     U_(U),
     mu_(mu),
     g_(g),
+    forces_(mesh_, particleProperties_, g_.value()),
     interpolationSchemes_(particleProperties_.subDict("interpolationSchemes")),
     dispersionModel_
     (
@@ -125,14 +98,22 @@ Foam::KinematicCloud<ParcelType>::KinematicCloud
             *this
         )
     ),
-    wallInteractionModel_
+    patchInteractionModel_
     (
-        WallInteractionModel<KinematicCloud<ParcelType> >::New
+        PatchInteractionModel<KinematicCloud<ParcelType> >::New
         (
             particleProperties_,
             *this
         )
     ),
+    postProcessingModel_
+    (
+        PostProcessingModel<KinematicCloud<ParcelType> >::New
+        (
+            this->particleProperties_,
+            *this
+        )
+    ),
     UIntegrator_
     (
         vectorIntegrationScheme::New
@@ -153,21 +134,7 @@ Foam::KinematicCloud<ParcelType>::KinematicCloud
             false
         ),
         mesh_,
-        dimensionedVector("zero", dimensionSet(1, 1, -1, 0, 0), vector::zero)
-    ),
-    UCoeff_
-    (
-        IOobject
-        (
-            this->name() + "UCoeff",
-            this->db().time().timeName(),
-            this->db(),
-            IOobject::NO_READ,
-            IOobject::NO_WRITE,
-            false
-        ),
-        mesh_,
-        dimensionedScalar("zero",  dimensionSet(1, 0, -1, 0, 0), 0.0)
+        dimensionedVector("zero", dimMass*dimVelocity, vector::zero)
     )
 {}
 
@@ -181,17 +148,59 @@ Foam::KinematicCloud<ParcelType>::~KinematicCloud()
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
+template<class ParcelType>
+void Foam::KinematicCloud<ParcelType>::checkParcelProperties
+(
+    ParcelType& parcel,
+    const scalar lagrangianDt,
+    const bool fullyDescribed
+)
+{
+    if (!fullyDescribed)
+    {
+        parcel.rho() = constProps_.rho0();
+    }
+
+    scalar carrierDt = this->db().time().deltaT().value();
+    parcel.stepFraction() = (carrierDt - lagrangianDt)/carrierDt;
+}
+
+
 template<class ParcelType>
 void Foam::KinematicCloud<ParcelType>::resetSourceTerms()
 {
     UTrans_.field() = vector::zero;
-    UCoeff_.field() = 0.0;
+}
+
+
+template<class ParcelType>
+void Foam::KinematicCloud<ParcelType>::preEvolve()
+{
+    this->dispersion().cacheFields(true);
+    forces_.cacheFields(true);
+}
+
+
+template<class ParcelType>
+void Foam::KinematicCloud<ParcelType>::postEvolve()
+{
+    if (debug)
+    {
+        this->writePositions();
+    }
+
+    this->dispersion().cacheFields(false);
+    forces_.cacheFields(false);
+
+    this->postProcessing().post();
 }
 
 
 template<class ParcelType>
 void Foam::KinematicCloud<ParcelType>::evolve()
 {
+    preEvolve();
+
     autoPtr<interpolation<scalar> > rhoInterpolator =
         interpolation<scalar>::New
         (
@@ -225,26 +234,23 @@ void Foam::KinematicCloud<ParcelType>::evolve()
 
     this->injection().inject(td);
 
-    if (debug)
-    {
-        this->dumpParticlePositions();
-    }
-
     if (coupled_)
     {
         resetSourceTerms();
     }
 
     Cloud<ParcelType>::move(td);
+
+    postEvolve();
 }
 
 
 template<class ParcelType>
 void Foam::KinematicCloud<ParcelType>::info() const
 {
-    Info<< "Cloud name: " << this->name() << nl
+    Info<< "Cloud: " << this->name() << nl
         << "    Parcels added during this run   = "
-        << returnReduce(this->injection().nParcelsAddedTotal(), sumOp<label>())
+        << returnReduce(this->injection().parcelsAddedTotal(), sumOp<label>())
             << nl
         << "    Mass introduced during this run = "
         << returnReduce(this->injection().massInjected(), sumOp<scalar>())
@@ -252,29 +258,7 @@ void Foam::KinematicCloud<ParcelType>::info() const
         << "    Current number of parcels       = "
         << returnReduce(this->size(), sumOp<label>()) << nl
         << "    Current mass in system          = "
-        << returnReduce(massInSystem(), sumOp<scalar>()) << nl
-        << endl;
-}
-
-
-template<class ParcelType>
-void Foam::KinematicCloud<ParcelType>::dumpParticlePositions() const
-{
-    OFstream pObj
-    (
-        this->db().time().path()/"parcelPositions_"
-      + this->name() + "_"
-      + name(this->injection().nInjections()) + ".obj"
-    );
-
-    forAllConstIter(typename KinematicCloud<ParcelType>, *this, iter)
-    {
-        const ParcelType& p = iter();
-        pObj<< "v " << p.position().x() << " " << p.position().y() << " "
-            << p.position().z() << nl;
-    }
-
-    pObj.flush();
+        << returnReduce(massInSystem(), sumOp<scalar>()) << nl;
 }
 
 
diff --git a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.H b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.H
index d606b38c3dac1c1cea73a96f3e3a29d34cc85222..ee2b3bafe2c2329048734b33fcd99d6154316a83 100644
--- a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.H
+++ b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.H
@@ -51,7 +51,7 @@ SourceFiles
 #include "fvMesh.H"
 #include "volFields.H"
 #include "fvMatrices.H"
-#include "fvm.H"
+#include "particleForces.H"
 
 #include "IntegrationSchemesFwd.H"
 
@@ -72,7 +72,10 @@ template<class CloudType>
 class InjectionModel;
 
 template<class CloudType>
-class WallInteractionModel;
+class PostProcessingModel;
+
+template<class CloudType>
+class PatchInteractionModel;
 
 /*---------------------------------------------------------------------------*\
                        Class KinematicCloud Declaration
@@ -84,14 +87,18 @@ class KinematicCloud
     public Cloud<ParcelType>,
     public kinematicCloud
 {
+    // Private Member Functions
+
+        //- Disallow default bitwise copy construct
+        KinematicCloud(const KinematicCloud&);
+
+        //- Disallow default bitwise assignment
+        void operator=(const KinematicCloud&);
 
-private:
 
-    // Private data
+protected:
 
-        //- Cloud type - used to set the name of the parcel properties
-        //  dictionary by appending "Properties"
-        const word cloudType_;
+    // Protected data
 
         //- References to the mesh and time databases
         const fvMesh& mesh_;
@@ -108,7 +115,11 @@ private:
 
         //- Flag to indicate whether parcels are coupled to the carrier phase
         //  i.e. whether or not to generate source terms for carrier phase
-        Switch coupled_;
+        const Switch coupled_;
+
+        //- Flag to correct cell values with latest transfer information
+        //  during the lagrangian timestep
+        const Switch cellValueSourceCorrection_;
 
         //- Random number generator - used by some injection routines
         Random rndGen_;
@@ -132,6 +143,9 @@ private:
             const dimensionedVector& g_;
 
 
+        //- Optional particle forces
+        particleForces forces_;
+
         //- Interpolation schemes dictionary
         dictionary interpolationSchemes_;
 
@@ -149,9 +163,13 @@ private:
             autoPtr<InjectionModel<KinematicCloud<ParcelType> > >
                 injectionModel_;
 
-            //- Wall interaction model
-            autoPtr<WallInteractionModel<KinematicCloud<ParcelType> > >
-                wallInteractionModel_;
+            //- Patch interaction model
+            autoPtr<PatchInteractionModel<KinematicCloud<ParcelType> > >
+                patchInteractionModel_;
+
+            //- Post-processing model
+            autoPtr<PostProcessingModel<KinematicCloud<ParcelType> > >
+                postProcessingModel_;
 
 
         // Reference to the particle integration schemes
@@ -165,17 +183,14 @@ private:
             //- Momentum
             DimensionedField<vector, volMesh> UTrans_;
 
-            //- Coefficient for carrier phase U equation
-            DimensionedField<scalar, volMesh> UCoeff_;
 
+        // Cloud evolution functions
 
-    // Private Member Functions
+            //- Pre-evolve
+            void preEvolve();
 
-        //- Disallow default bitwise copy construct
-        KinematicCloud(const KinematicCloud&);
-
-        //- Disallow default bitwise assignment
-        void operator=(const KinematicCloud&);
+            //- Post-evolve
+            void postEvolve();
 
 
 public:
@@ -185,7 +200,7 @@ public:
         //- Construct given carrier gas fields
         KinematicCloud
         (
-            const word& cloudType,
+            const word& cloudName,
             const volScalarField& rho,
             const volVectorField& U,
             const volScalarField& mu,
@@ -197,15 +212,16 @@ public:
     virtual ~KinematicCloud();
 
 
+    //- Type of parcel the cloud was instantiated for
+    typedef ParcelType parcelType;
+
+
     // Member Functions
 
         // Access
 
             // References to the mesh and databases
 
-                //- Return the cloud type
-                inline const word& cloudType() const;
-
                 //- Return the parcel type id
                 inline label parcelTypeId() const;
 
@@ -215,9 +231,17 @@ public:
                 //- Return particle properties dictionary
                 inline const IOdictionary& particleProperties() const;
 
+                //- Return the constant properties
+                inline const typename ParcelType::constantProperties&
+                    constProps() const;
+
+
             //- Return coupled flag
             inline const Switch coupled() const;
 
+            //- Return cell value correction flag
+            inline const Switch cellValueSourceCorrection() const;
+
             //- Return refernce to the random object
             inline Random& rndGen();
 
@@ -240,6 +264,10 @@ public:
                 inline const dimensionedVector& g() const;
 
 
+            //- Optional particle forces
+            inline const particleForces& forces() const;
+
+
             // Interpolations
 
                 //- Return reference to the interpolation dictionary
@@ -248,27 +276,33 @@ public:
 
             // Sub-models
 
-                //- Return reference to dispersion model
+                //- Return const-access to the dispersion model
                 inline const DispersionModel<KinematicCloud<ParcelType> >&
                     dispersion() const;
 
+                //- Return reference to the dispersion model
                 inline DispersionModel<KinematicCloud<ParcelType> >&
                     dispersion();
 
-                //- Return reference to drag model
+                //- Return const-access to the drag model
                 inline const DragModel<KinematicCloud<ParcelType> >&
                     drag() const;
 
-                //- Return reference to injection model
+                //- Return const access to the injection model
                 inline const InjectionModel<KinematicCloud<ParcelType> >&
                     injection() const;
 
+                //- Return reference to the injection model
                 inline InjectionModel<KinematicCloud<ParcelType> >&
                     injection();
 
-                //- Return reference to wall interaction model
-                inline const WallInteractionModel<KinematicCloud<ParcelType> >&
-                    wallInteraction() const;
+                //- Return const-access to the patch interaction model
+                inline const PatchInteractionModel<KinematicCloud<ParcelType> >&
+                    patchInteraction() const;
+
+                //- Return reference to post-processing model
+                inline PostProcessingModel<KinematicCloud<ParcelType> >&
+                    postProcessing();
 
 
             // Integration schemes
@@ -284,14 +318,8 @@ public:
                     //- Return reference to momentum source
                     inline DimensionedField<vector, volMesh>& UTrans();
 
-                    //- Coefficient for carrier phase U equation
-                    inline DimensionedField<scalar, volMesh>& UCoeff();
-
                     //- Return tmp momentum source term - fully explicit
-                    inline tmp<DimensionedField<vector, volMesh> > SU1() const;
-
-                    //- Return tmp momentum source term - semi-implicit
-                    inline tmp<fvVectorMatrix> SU2(volVectorField& U) const;
+                    inline tmp<DimensionedField<vector, volMesh> > SU() const;
 
 
         // Check
@@ -305,9 +333,6 @@ public:
             //- Print cloud information
             void info() const;
 
-            //- Dump particle positions to .obj file
-            void dumpParticlePositions() const;
-
 
             // Fields
 
@@ -319,18 +344,19 @@ public:
                 //  Note: for particles belonging to this cloud only
                 inline const tmp<volScalarField> alpha() const;
 
+                //- Return the particle effective density field
+                //  Note: for particles belonging to this cloud only
+                inline const tmp<volScalarField> rhoEff() const;
+
 
         // Cloud evolution functions
 
-            //- Add new parcel
-            void addNewParcel
+            //- Check parcel properties
+            void checkParcelProperties
             (
-                const vector& position,
-                const label cellId,
-                const scalar d,
-                const vector& U,
-                const scalar nParticles,
-                const scalar lagrangianDt
+                ParcelType& parcel,
+                const scalar lagrangianDt,
+                const bool fullyDescribed
             );
 
             //- Reset the spray source terms
diff --git a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloudI.H b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloudI.H
index 2b8cca12d1657de733eb7ebb1e99b50fe8a59e8c..1f48632d152a1952201bcd5479dab0f36f4421cf 100644
--- a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloudI.H
+++ b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloudI.H
@@ -24,14 +24,9 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
-
-template<class ParcelType>
-inline const Foam::word& Foam::KinematicCloud<ParcelType>::cloudType() const
-{
-    return cloudType_;
-}
+#include "fvmSup.H"
 
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 template<class ParcelType>
 inline Foam::label Foam::KinematicCloud<ParcelType>::parcelTypeId() const
@@ -55,6 +50,14 @@ Foam::KinematicCloud<ParcelType>::particleProperties() const
 }
 
 
+template<class ParcelType>
+inline const typename ParcelType::constantProperties&
+Foam::KinematicCloud<ParcelType>::constProps() const
+{
+    return constProps_;
+}
+
+
 template<class ParcelType>
 inline const Foam::Switch Foam::KinematicCloud<ParcelType>::coupled() const
 {
@@ -62,6 +65,14 @@ inline const Foam::Switch Foam::KinematicCloud<ParcelType>::coupled() const
 }
 
 
+template <class ParcelType>
+inline const Foam::Switch
+Foam::KinematicCloud<ParcelType>::cellValueSourceCorrection() const
+{
+    return cellValueSourceCorrection_;
+}
+
+
 template<class ParcelType>
 inline const Foam::volScalarField&
 Foam::KinematicCloud<ParcelType>::rho() const
@@ -91,6 +102,15 @@ Foam::KinematicCloud<ParcelType>::g() const
     return g_;
 }
 
+
+template<class ParcelType>
+inline const Foam::particleForces&
+Foam::KinematicCloud<ParcelType>::forces() const
+{
+    return forces_;
+}
+
+
 template<class ParcelType>
 inline const Foam::dictionary&
 Foam::KinematicCloud<ParcelType>::interpolationSchemes() const
@@ -131,6 +151,14 @@ Foam::KinematicCloud<ParcelType>::injection() const
 }
 
 
+template<class ParcelType>
+inline const Foam::PatchInteractionModel<Foam::KinematicCloud<ParcelType> >&
+Foam::KinematicCloud<ParcelType>::patchInteraction() const
+{
+    return patchInteractionModel_;
+}
+
+
 template<class ParcelType>
 inline Foam::InjectionModel<Foam::KinematicCloud<ParcelType> >&
 Foam::KinematicCloud<ParcelType>::injection()
@@ -140,10 +168,10 @@ Foam::KinematicCloud<ParcelType>::injection()
 
 
 template<class ParcelType>
-inline const Foam::WallInteractionModel<Foam::KinematicCloud<ParcelType> >&
-Foam::KinematicCloud<ParcelType>::wallInteraction() const
+inline Foam::PostProcessingModel<Foam::KinematicCloud<ParcelType> >&
+Foam::KinematicCloud<ParcelType>::postProcessing()
 {
-    return wallInteractionModel_;
+    return postProcessingModel_();
 }
 
 
@@ -184,25 +212,17 @@ Foam::KinematicCloud<ParcelType>::UTrans()
 }
 
 
-template<class ParcelType>
-inline Foam::DimensionedField<Foam::scalar, Foam::volMesh>&
-Foam::KinematicCloud<ParcelType>::UCoeff()
-{
-    return UCoeff_;
-}
-
-
 template<class ParcelType>
 inline Foam::tmp<Foam::DimensionedField<Foam::vector, Foam::volMesh> >
-Foam::KinematicCloud<ParcelType>::SU1() const
+Foam::KinematicCloud<ParcelType>::SU() const
 {
-    tmp<DimensionedField<vector, volMesh> > tSU1
+    tmp<DimensionedField<vector, volMesh> > tSU
     (
         new DimensionedField<vector, volMesh>
         (
             IOobject
             (
-                this->name() + "SU1",
+                this->name() + "SU",
                 this->db().time().timeName(),
                 this->mesh(),
                 IOobject::NO_READ,
@@ -212,34 +232,16 @@ Foam::KinematicCloud<ParcelType>::SU1() const
             dimensionedVector
             (
                  "zero",
-                 dimensionSet(1, -2, -2, 0, 0),
+                 dimDensity*dimVelocity/dimTime,
                  vector::zero
             )
         )
     );
 
-    vectorField& SU1 = tSU1().field();
-    SU1 = UTrans_/(mesh_.V()*this->db().time().deltaT());
-
-    return tSU1;
-}
-
+    vectorField& SU = tSU().field();
+    SU = UTrans_/(mesh_.V()*this->db().time().deltaT());
 
-template<class ParcelType>
-inline Foam::tmp<Foam::fvVectorMatrix>
-Foam::KinematicCloud<ParcelType>::SU2(volVectorField& U) const
-{
-    if (debug)
-    {
-        Info<< "UTrans min/max = "
-            << min(UTrans_) << ", " << max(UTrans_) << endl;
-        Info<< "UCoeff min/max = "
-            << min(UCoeff_) << ", " << max(UCoeff_) << endl;
-    }
-
-    return UTrans_/(mesh_.V()*this->db().time().deltaT())
-         - fvm::Sp(UCoeff_/mesh_.V(), U)
-         + UCoeff_/mesh_.V()*U;
+    return tSU;
 }
 
 
@@ -261,7 +263,7 @@ Foam::KinematicCloud<ParcelType>::theta() const
                 false
             ),
             mesh_,
-            dimensionedScalar("zero", dimensionSet(0, 0, 0, 0, 0), 0.0)
+            dimensionedScalar("zero", dimless, 0.0)
         )
     );
 
@@ -274,7 +276,7 @@ Foam::KinematicCloud<ParcelType>::theta() const
         theta[cellI] += p.nParticle()*p.volume();
     }
 
-    theta /= mesh().cellVolumes();
+    theta /= mesh().V();
 
     return ttheta;
 }
@@ -298,7 +300,7 @@ Foam::KinematicCloud<ParcelType>::alpha() const
                 false
             ),
             mesh_,
-            dimensionedScalar("zero", dimensionSet(0, 0, 0, 0, 0), 0.0)
+            dimensionedScalar("zero", dimless, 0.0)
         )
     );
 
@@ -311,10 +313,47 @@ Foam::KinematicCloud<ParcelType>::alpha() const
         alpha[cellI] += p.nParticle()*p.mass();
     }
 
-    alpha /= (mesh().cellVolumes()*rho_);
+    alpha /= (mesh().V()*rho_);
 
     return talpha;
 }
 
 
+template<class ParcelType>
+inline const Foam::tmp<Foam::volScalarField>
+Foam::KinematicCloud<ParcelType>::rhoEff() const
+{
+    tmp<volScalarField> trhoEff
+    (
+        new volScalarField
+        (
+            IOobject
+            (
+                this->name() + "RhoEff",
+                this->db().time().timeName(),
+                this->db(),
+                IOobject::NO_READ,
+                IOobject::NO_WRITE,
+                false
+            ),
+            mesh_,
+            dimensionedScalar("zero", dimDensity, 0.0)
+        )
+    );
+
+    scalarField& rhoEff = trhoEff().internalField();
+    forAllConstIter(typename KinematicCloud<ParcelType>, *this, iter)
+    {
+        const ParcelType& p = iter();
+        const label cellI = p.cell();
+
+        rhoEff[cellI] += p.nParticle()*p.mass();
+    }
+
+    rhoEff /= mesh().V();
+
+    return trhoEff;
+}
+
+
 // ************************************************************************* //
diff --git a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.C b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.C
index b574435cb83ac7714386f3ae9ff0da4377b19698..1e58d2876cc52a74661e11277a2b933524e1d475 100644
--- a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.C
+++ b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.C
@@ -25,43 +25,36 @@ License
 \*---------------------------------------------------------------------------*/
 
 #include "ReactingCloud.H"
+
 #include "CompositionModel.H"
-#include "MassTransferModel.H"
-#include "SurfaceReactionModel.H"
+#include "PhaseChangeModel.H"
 
 // * * * * * * * * * * * Protected Member Functions  * * * * * * * * * * * * //
 
 template<class ParcelType>
-void Foam::ReactingCloud<ParcelType>::addNewParcel
+void Foam::ReactingCloud<ParcelType>::checkSuppliedComposition
 (
-    const vector& position,
-    const label cellId,
-    const scalar d,
-    const vector& U,
-    const scalar nParticles,
-    const scalar lagrangianDt
+    const scalarField& YSupplied,
+    const scalarField& Y,
+    const word& YName
 )
 {
-    ParcelType* pPtr = new ParcelType
-    (
-        *this,
-        this->parcelTypeId(),
-        position,
-        cellId,
-        d,
-        U,
-        nParticles,
-        composition().YGas0(),
-        composition().YLiquid0(),
-        composition().YSolid0(),
-        composition().YMixture0(),
-        constProps_
-    );
-
-    scalar continuousDt = this->db().time().deltaT().value();
-    pPtr->stepFraction() = (continuousDt - lagrangianDt)/continuousDt;
-
-    addParticle(pPtr);
+    if (YSupplied.size() != Y.size())
+    {
+        FatalErrorIn
+        (
+            "ReactingCloud<ParcelType>::checkSuppliedComposition"
+            "("
+                "const scalarField&, "
+                "const scalarField&, "
+                "const word&"
+            ")"
+        )   << YName << " supplied, but size is not compatible with "
+            << "parcel composition: " << nl << "    "
+            << YName << "(" << YSupplied.size() << ") vs required composition "
+            << YName << "(" << Y.size() << ")" << nl
+            << abort(FatalError);
+    }
 }
 
 
@@ -70,44 +63,38 @@ void Foam::ReactingCloud<ParcelType>::addNewParcel
 template<class ParcelType>
 Foam::ReactingCloud<ParcelType>::ReactingCloud
 (
-    const word& cloudType,
+    const word& cloudName,
     const volScalarField& rho,
     const volVectorField& U,
     const dimensionedVector& g,
-    hCombustionThermo& thermo,
-    PtrList<specieReactingProperties>& gases
+    basicThermo& thermo
 )
 :
-    ThermoCloud<ParcelType>(cloudType, rho, U, g, thermo),
+    ThermoCloud<ParcelType>(cloudName, rho, U, g, thermo),
     reactingCloud(),
     constProps_(this->particleProperties()),
-    carrierThermo_(thermo),
-    gases_(gases),
-    compositionModel_
+    mcCarrierThermo_
     (
-        CompositionModel<ReactingCloud<ParcelType> >::New
-        (
-            this->particleProperties(),
-            *this
-        )
+        dynamic_cast<multiComponentMixture<thermoType>&>(thermo)
     ),
-    massTransferModel_
+    compositionModel_
     (
-        MassTransferModel<ReactingCloud<ParcelType> >::New
+        CompositionModel<ReactingCloud<ParcelType> >::New
         (
             this->particleProperties(),
             *this
         )
     ),
-    surfaceReactionModel_
+    phaseChangeModel_
     (
-        SurfaceReactionModel<ReactingCloud<ParcelType> >::New
+        PhaseChangeModel<ReactingCloud<ParcelType> >::New
         (
             this->particleProperties(),
             *this
         )
     ),
-    rhoTrans_(thermo.composition().Y().size())
+    rhoTrans_(mcCarrierThermo_.species().size()),
+    dMassPhaseChange_(0.0)
 {
     // Set storage for mass source fields and initialise to zero
     forAll(rhoTrans_, i)
@@ -119,12 +106,12 @@ Foam::ReactingCloud<ParcelType>::ReactingCloud
             (
                 IOobject
                 (
-                     this->name() + "rhoTrans" + Foam::name(i),
-                     this->db().time().timeName(),
-                     this->db(),
-                     IOobject::NO_READ,
-                     IOobject::NO_WRITE,
-                     false
+                    this->name() + "rhoTrans_" + mcCarrierThermo_.species()[i],
+                    this->db().time().timeName(),
+                    this->db(),
+                    IOobject::NO_READ,
+                    IOobject::NO_WRITE,
+                    false
                 ),
                 this->mesh(),
                 dimensionedScalar("zero", dimMass, 0.0)
@@ -143,6 +130,40 @@ Foam::ReactingCloud<ParcelType>::~ReactingCloud()
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
+template<class ParcelType>
+void Foam::ReactingCloud<ParcelType>::checkParcelProperties
+(
+    ParcelType& parcel,
+    const scalar lagrangianDt,
+    const bool fullyDescribed
+)
+{
+    ThermoCloud<ParcelType>::checkParcelProperties
+    (
+        parcel,
+        lagrangianDt,
+        fullyDescribed
+    );
+
+    if (!fullyDescribed)
+    {
+        parcel.Y() = composition().YMixture0();
+    }
+    else
+    {
+        checkSuppliedComposition
+        (
+            parcel.Y(),
+            composition().YMixture0(),
+            "YMixture"
+        );
+    }
+
+    // derived information - store initial mass
+    parcel.mass0() = parcel.mass();
+}
+
+
 template<class ParcelType>
 void Foam::ReactingCloud<ParcelType>::resetSourceTerms()
 {
@@ -154,44 +175,60 @@ void Foam::ReactingCloud<ParcelType>::resetSourceTerms()
 }
 
 
+template<class ParcelType>
+void Foam::ReactingCloud<ParcelType>::preEvolve()
+{
+    ThermoCloud<ParcelType>::preEvolve();
+}
+
+
+template<class ParcelType>
+void Foam::ReactingCloud<ParcelType>::postEvolve()
+{
+    ThermoCloud<ParcelType>::postEvolve();
+}
+
+
 template<class ParcelType>
 void Foam::ReactingCloud<ParcelType>::evolve()
 {
-    const volScalarField& T = carrierThermo_.T();
-    const volScalarField cp = carrierThermo_.Cp();
-    const volScalarField& p = carrierThermo_.p();
+    preEvolve();
+
+    const volScalarField& T = this->carrierThermo().T();
+    const volScalarField cp = this->carrierThermo().Cp();
+    const volScalarField& p = this->carrierThermo().p();
 
-    autoPtr<interpolation<scalar> > rhoInterpolator = interpolation<scalar>::New
+    autoPtr<interpolation<scalar> > rhoInterp = interpolation<scalar>::New
     (
         this->interpolationSchemes(),
         this->rho()
     );
 
-    autoPtr<interpolation<vector> > UInterpolator = interpolation<vector>::New
+    autoPtr<interpolation<vector> > UInterp = interpolation<vector>::New
     (
         this->interpolationSchemes(),
         this->U()
     );
 
-    autoPtr<interpolation<scalar> > muInterpolator = interpolation<scalar>::New
+    autoPtr<interpolation<scalar> > muInterp = interpolation<scalar>::New
     (
         this->interpolationSchemes(),
         this->mu()
     );
 
-    autoPtr<interpolation<scalar> > TInterpolator = interpolation<scalar>::New
+    autoPtr<interpolation<scalar> > TInterp = interpolation<scalar>::New
     (
         this->interpolationSchemes(),
         T
     );
 
-    autoPtr<interpolation<scalar> > cpInterpolator = interpolation<scalar>::New
+    autoPtr<interpolation<scalar> > cpInterp = interpolation<scalar>::New
     (
         this->interpolationSchemes(),
         cp
     );
 
-    autoPtr<interpolation<scalar> > pInterpolator = interpolation<scalar>::New
+    autoPtr<interpolation<scalar> > pInterp = interpolation<scalar>::New
     (
         this->interpolationSchemes(),
         p
@@ -201,28 +238,42 @@ void Foam::ReactingCloud<ParcelType>::evolve()
     (
         *this,
         constProps_,
-        rhoInterpolator(),
-        UInterpolator(),
-        muInterpolator(),
-        TInterpolator(),
-        cpInterpolator(),
-        pInterpolator(),
+        rhoInterp(),
+        UInterp(),
+        muInterp(),
+        TInterp(),
+        cpInterp(),
+        pInterp(),
         this->g().value()
     );
 
     this->injection().inject(td);
 
-    if (debug)
-    {
-        this->dumpParticlePositions();
-    }
-
     if (this->coupled())
     {
         resetSourceTerms();
     }
 
     Cloud<ParcelType>::move(td);
+
+    postEvolve();
+}
+
+
+template<class ParcelType>
+void Foam::ReactingCloud<ParcelType>::info() const
+{
+    ThermoCloud<ParcelType>::info();
+
+    Info<< "    Mass transfer phase change      = "
+        << returnReduce(dMassPhaseChange_, sumOp<scalar>()) << nl;
+}
+
+
+template<class ParcelType>
+void Foam::ReactingCloud<ParcelType>::addToMassPhaseChange(const scalar dMass)
+{
+    dMassPhaseChange_ += dMass;
 }
 
 
diff --git a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.H b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.H
index 0e3f97320a882e0c2c0f19b6ce7eb33ef3edfcca..74b75ea4162ed61c921b4a3eaf329ed0349fe3f3 100644
--- a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.H
+++ b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.H
@@ -26,9 +26,11 @@ Class
     Foam::ReactingCloud
 
 Description
-    Templated base class for reactive cloud
-    - Adds to kinematic cloud
-      - Heat transfer
+    Templated base class for reacting cloud
+
+    - Adds to thermodynamic cloud
+      - Variable composition (single phase)
+      - Phase change
 
 SourceFiles
     ReactingCloudI.H
@@ -39,13 +41,9 @@ SourceFiles
 #ifndef ReactingCloud_H
 #define ReactingCloud_H
 
-#include "autoPtr.H"
-#include "hCombustionThermo.H"
-
 #include "ThermoCloud.H"
 #include "reactingCloud.H"
-
-#include "ReactingCloudThermoTypes.H"
+#include "multiComponentMixture.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -58,13 +56,10 @@ template<class CloudType>
 class CompositionModel;
 
 template<class CloudType>
-class MassTransferModel;
-
-template<class CloudType>
-class SurfaceReactionModel;
+class PhaseChangeModel;
 
 /*---------------------------------------------------------------------------*\
-                        Class ReactingCloud Declaration
+                      Class ReactingCloud Declaration
 \*---------------------------------------------------------------------------*/
 
 template<class ParcelType>
@@ -73,17 +68,33 @@ class ReactingCloud
     public ThermoCloud<ParcelType>,
     public reactingCloud
 {
+public:
 
-    // Private data
+    //- Type of thermodynamics the cloud was instantiated for
+    typedef typename ParcelType::thermoType thermoType;
+
+
+private:
+
+    // Private Member Functions
+
+        //- Disallow default bitwise copy construct
+        ReactingCloud(const ReactingCloud&);
+
+        //- Disallow default bitwise assignment
+        void operator=(const ReactingCloud&);
+
+
+protected:
+
+    // Protected data
 
         //- Parcel constant properties
         typename ParcelType::constantProperties constProps_;
 
-        //- Thermodynamics package (combustion)
-        hCombustionThermo& carrierThermo_;
+        //- Multi-component carrier phase thermo
+        multiComponentMixture<thermoType>& mcCarrierThermo_;
 
-        //- Gas phase properties
-        PtrList<specieReactingProperties>& gases_;
 
         // References to the cloud sub-models
 
@@ -91,13 +102,10 @@ class ReactingCloud
             autoPtr<CompositionModel<ReactingCloud<ParcelType> > >
                 compositionModel_;
 
-            //- Mass transfer model
-            autoPtr<MassTransferModel<ReactingCloud<ParcelType> > >
-                massTransferModel_;
+            //- Reacting phase change model
+            autoPtr<PhaseChangeModel<ReactingCloud<ParcelType> > >
+                phaseChangeModel_;
 
-            //- Surface reaction model
-            autoPtr<SurfaceReactionModel<ReactingCloud<ParcelType> > >
-                surfaceReactionModel_;
 
         // Sources
 
@@ -105,52 +113,71 @@ class ReactingCloud
             PtrList<DimensionedField<scalar, volMesh> > rhoTrans_;
 
 
-    // Private Member Functions
+        // Check
 
-        //- Disallow default bitwise copy construct
-        ReactingCloud(const ReactingCloud&);
+            //- Total mass transferred to continuous phase via phase change
+            scalar dMassPhaseChange_;
 
-        //- Disallow default bitwise assignment
-        void operator=(const ReactingCloud&);
 
+    // Protected Member Functions
 
-public:
+        // New parcel helper functions
+
+            //- Check that size of a composition field is valid
+            void checkSuppliedComposition
+            (
+                const scalarField& YSupplied,
+                const scalarField& Y,
+                const word& YName
+            );
+
+
+        // Cloud evolution functions
 
-    //- Runtime type information
-//    TypeName("ReactingCloud");
+            //- Pre-evolve
+            void preEvolve();
 
+            //- Post-evolve
+            void postEvolve();
+
+
+public:
 
     // Constructors
 
         //- Construct given carrier gas fields
         ReactingCloud
         (
-            const word& cloudType,
+            const word& cloudName,
             const volScalarField& rho,
             const volVectorField& U,
             const dimensionedVector& g,
-            hCombustionThermo& thermo,
-            PtrList<specieReactingProperties>& gases
+            basicThermo& thermo
         );
 
 
-    // Destructor
+    //- Destructor
+    virtual ~ReactingCloud();
 
-        virtual ~ReactingCloud();
+
+    //- Type of parcel the cloud was instantiated for
+    typedef ParcelType parcelType;
 
 
     // Member Functions
 
         // Access
 
-            //- Return const access to carrier phase thermo package
-            inline const hCombustionThermo& carrierThermo() const;
+            //- Return the constant properties
+            inline const typename ParcelType::constantProperties&
+                constProps() const;
 
-            //- Return access to carrier phase thermo package
-            inline hCombustionThermo& carrierThermo();
+            //- Return const access to multi-component carrier phase thermo
+            inline const multiComponentMixture<thermoType>&
+                mcCarrierThermo() const;
 
-            //- Gas phase properties
-            inline const PtrList<specieReactingProperties>& gases() const;
+            //- Return access to multi-component carrier phase thermo
+            inline multiComponentMixture<thermoType>& mcCarrierThermo();
 
 
             // Sub-models
@@ -159,13 +186,9 @@ public:
                 inline const CompositionModel<ReactingCloud<ParcelType> >&
                     composition() const;
 
-                //- Return reference to mass transfer model
-                inline const MassTransferModel<ReactingCloud<ParcelType> >&
-                    massTransfer() const;
-
-                //- Return reference to surface reaction model
-                inline const SurfaceReactionModel<ReactingCloud<ParcelType> >&
-                    surfaceReaction() const;
+                //- Return reference to reacting phase change model
+                inline const PhaseChangeModel<ReactingCloud<ParcelType> >&
+                    phaseChange() const;
 
 
             // Sources
@@ -180,28 +203,32 @@ public:
                     inline PtrList<DimensionedField<scalar, volMesh> >&
                         rhoTrans();
 
-                    //- Return tmp mass source for field i
-                    //  Fully explicit
+                    //- Return tmp mass source for field i - fully explicit
                     inline tmp<DimensionedField<scalar, volMesh> >
-                        Srho1(const label i) const;
+                        Srho(const label i) const;
 
                     //- Return tmp total mass source for carrier phase
-                    //  Fully explicit
-                    inline tmp<DimensionedField<scalar, volMesh> >
-                        Srho1() const;
+                    //  - fully explicit
+                    inline tmp<DimensionedField<scalar, volMesh> > Srho() const;
+
+
+        // Check
+
+            //- Print cloud information
+            void info() const;
+
+            //- Add to cumulative phase change mass transfer
+            void addToMassPhaseChange(const scalar dMass);
 
 
         // Cloud evolution functions
 
-            //- Add new parcel
-            void addNewParcel
+            //- Check parcel properties
+            void checkParcelProperties
             (
-                const vector& position,
-                const label cellId,
-                const scalar d,
-                const vector& U,
-                const scalar nParticles,
-                const scalar lagrangianDt
+                ParcelType& parcel,
+                const scalar lagrangianDt,
+                const bool fullyDescribed
             );
 
             //- Reset the spray source terms
diff --git a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloudI.H b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloudI.H
index 016d40d5c0d1f34064ff2e01f0240f6333f77b5e..b59686482706c47710e3041ad8b4f85e13b693c4 100644
--- a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloudI.H
+++ b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloudI.H
@@ -27,26 +27,26 @@ License
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 template<class ParcelType>
-inline const Foam::hCombustionThermo&
-Foam::ReactingCloud<ParcelType>::carrierThermo() const
+inline const typename ParcelType::constantProperties&
+Foam::ReactingCloud<ParcelType>::constProps() const
 {
-    return carrierThermo_;
+    return constProps_;
 }
 
 
 template<class ParcelType>
-inline Foam::hCombustionThermo&
-Foam::ReactingCloud<ParcelType>::carrierThermo()
+inline const Foam::multiComponentMixture<typename ParcelType::thermoType>&
+Foam::ReactingCloud<ParcelType>::mcCarrierThermo() const
 {
-    return carrierThermo_;
+    return mcCarrierThermo_;
 }
 
 
 template<class ParcelType>
-inline const Foam::PtrList<Foam::specieReactingProperties>&
-Foam::ReactingCloud<ParcelType>::gases() const
+inline Foam::multiComponentMixture<typename ParcelType::thermoType>&
+Foam::ReactingCloud<ParcelType>::mcCarrierThermo()
 {
-    return gases_;
+    return mcCarrierThermo_;
 }
 
 
@@ -59,18 +59,10 @@ Foam::ReactingCloud<ParcelType>::composition() const
 
 
 template<class ParcelType>
-inline const Foam::MassTransferModel<Foam::ReactingCloud<ParcelType> >&
-Foam::ReactingCloud<ParcelType>::massTransfer() const
+inline const Foam::PhaseChangeModel<Foam::ReactingCloud<ParcelType> >&
+Foam::ReactingCloud<ParcelType>::phaseChange() const
 {
-    return massTransferModel_;
-}
-
-
-template<class ParcelType>
-inline const Foam::SurfaceReactionModel<Foam::ReactingCloud<ParcelType> >&
-Foam::ReactingCloud<ParcelType>::surfaceReaction() const
-{
-    return surfaceReactionModel_;
+    return phaseChangeModel_;
 }
 
 
@@ -92,7 +84,7 @@ Foam::ReactingCloud<ParcelType>::rhoTrans()
 
 template<class ParcelType>
 inline Foam::tmp<Foam::DimensionedField<Foam::scalar, Foam::volMesh> >
-Foam::ReactingCloud<ParcelType>::Srho1(const label i) const
+Foam::ReactingCloud<ParcelType>::Srho(const label i) const
 {
     return rhoTrans_[i]/(this->db().time().deltaT()*this->mesh().V());
 }
@@ -100,7 +92,7 @@ Foam::ReactingCloud<ParcelType>::Srho1(const label i) const
 
 template<class ParcelType>
 inline Foam::tmp<Foam::DimensionedField<Foam::scalar, Foam::volMesh> >
-Foam::ReactingCloud<ParcelType>::Srho1() const
+Foam::ReactingCloud<ParcelType>::Srho() const
 {
     tmp<DimensionedField<scalar, volMesh> > trhoTrans
     (
@@ -129,4 +121,5 @@ Foam::ReactingCloud<ParcelType>::Srho1() const
     return trhoTrans/(this->db().time().deltaT()*this->mesh().V());
 }
 
+
 // ************************************************************************* //
diff --git a/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.C b/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.C
new file mode 100644
index 0000000000000000000000000000000000000000..5e7dee64bcf6f593cde895c9e3f5d34220c269c7
--- /dev/null
+++ b/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.C
@@ -0,0 +1,248 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "ReactingMultiphaseCloud.H"
+
+#include "DevolatilisationModel.H"
+#include "SurfaceReactionModel.H"
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template<class ParcelType>
+Foam::ReactingMultiphaseCloud<ParcelType>::ReactingMultiphaseCloud
+(
+    const word& cloudName,
+    const volScalarField& rho,
+    const volVectorField& U,
+    const dimensionedVector& g,
+    basicThermo& thermo
+)
+:
+    ReactingCloud<ParcelType>(cloudName, rho, U, g, thermo),
+    reactingMultiphaseCloud(),
+    constProps_(this->particleProperties()),
+    devolatilisationModel_
+    (
+        DevolatilisationModel<ReactingMultiphaseCloud<ParcelType> >::New
+        (
+            this->particleProperties(),
+            *this
+        )
+    ),
+    surfaceReactionModel_
+    (
+        SurfaceReactionModel<ReactingMultiphaseCloud<ParcelType> >::New
+        (
+            this->particleProperties(),
+            *this
+        )
+    ),
+    dMassDevolatilisation_(0.0)
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+template<class ParcelType>
+Foam::ReactingMultiphaseCloud<ParcelType>::~ReactingMultiphaseCloud()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+template<class ParcelType>
+void Foam::ReactingMultiphaseCloud<ParcelType>::checkParcelProperties
+(
+    ParcelType& parcel,
+    const scalar lagrangianDt,
+    const bool fullyDescribed
+)
+{
+    ReactingCloud<ParcelType>::checkParcelProperties
+    (
+        parcel,
+        lagrangianDt,
+        fullyDescribed
+    );
+
+    label idGas = this->composition().idGas();
+    label idLiquid = this->composition().idLiquid();
+    label idSolid = this->composition().idSolid();
+
+    if (!fullyDescribed)
+    {
+        parcel.YGas() = this->composition().Y0(idGas);
+        parcel.YLiquid() = this->composition().Y0(idLiquid);
+        parcel.YSolid() = this->composition().Y0(idSolid);
+    }
+    else
+    {
+        this->checkSuppliedComposition
+        (
+            parcel.YGas(),
+            this->composition().Y0(idGas),
+            "YGas"
+        );
+        this->checkSuppliedComposition
+        (
+            parcel.YLiquid(),
+            this->composition().Y0(idLiquid),
+            "YLiquid"
+        );
+        this->checkSuppliedComposition
+        (
+            parcel.YSolid(),
+            this->composition().Y0(idSolid),
+            "YSolid"
+        );
+    }
+}
+
+
+template<class ParcelType>
+void Foam::ReactingMultiphaseCloud<ParcelType>::resetSourceTerms()
+{
+    ReactingCloud<ParcelType>::resetSourceTerms();
+}
+
+
+template<class ParcelType>
+void Foam::ReactingMultiphaseCloud<ParcelType>::preEvolve()
+{
+    ReactingCloud<ParcelType>::preEvolve();
+}
+
+
+template<class ParcelType>
+void Foam::ReactingMultiphaseCloud<ParcelType>::postEvolve()
+{
+    ReactingCloud<ParcelType>::postEvolve();
+}
+
+
+template<class ParcelType>
+void Foam::ReactingMultiphaseCloud<ParcelType>::evolve()
+{
+    preEvolve();
+
+    const volScalarField& T = this->carrierThermo().T();
+    const volScalarField cp = this->carrierThermo().Cp();
+    const volScalarField& p = this->carrierThermo().p();
+
+    autoPtr<interpolation<scalar> > rhoInterp = interpolation<scalar>::New
+    (
+        this->interpolationSchemes(),
+        this->rho()
+    );
+
+    autoPtr<interpolation<vector> > UInterp = interpolation<vector>::New
+    (
+        this->interpolationSchemes(),
+        this->U()
+    );
+
+    autoPtr<interpolation<scalar> > muInterp = interpolation<scalar>::New
+    (
+        this->interpolationSchemes(),
+        this->mu()
+    );
+
+    autoPtr<interpolation<scalar> > TInterp = interpolation<scalar>::New
+    (
+        this->interpolationSchemes(),
+        T
+    );
+
+    autoPtr<interpolation<scalar> > cpInterp = interpolation<scalar>::New
+    (
+        this->interpolationSchemes(),
+        cp
+    );
+
+    autoPtr<interpolation<scalar> > pInterp = interpolation<scalar>::New
+    (
+        this->interpolationSchemes(),
+        p
+    );
+
+    typename ParcelType::trackData td
+    (
+        *this,
+        constProps_,
+        rhoInterp(),
+        UInterp(),
+        muInterp(),
+        TInterp(),
+        cpInterp(),
+        pInterp(),
+        this->g().value()
+    );
+
+    this->injection().inject(td);
+
+    if (this->coupled())
+    {
+        resetSourceTerms();
+    }
+
+    Cloud<ParcelType>::move(td);
+
+    postEvolve();
+}
+
+
+template<class ParcelType>
+void Foam::ReactingMultiphaseCloud<ParcelType>::info() const
+{
+    ReactingCloud<ParcelType>::info();
+    Info<< "    Mass transfer devolatilisation  = "
+        << returnReduce(dMassDevolatilisation_, sumOp<scalar>()) << nl;
+    Info<< "    Mass transfer surface reaction  = "
+        << returnReduce(dMassSurfaceReaction_, sumOp<scalar>()) << nl;
+}
+
+
+template<class ParcelType>
+void Foam::ReactingMultiphaseCloud<ParcelType>::addToMassDevolatilisation
+(
+    const scalar dMass
+)
+{
+    dMassDevolatilisation_ += dMass;
+}
+
+
+template<class ParcelType>
+void Foam::ReactingMultiphaseCloud<ParcelType>::addToMassSurfaceReaction
+(
+    const scalar dMass
+)
+{
+    dMassSurfaceReaction_ += dMass;
+}
+
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.H b/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.H
new file mode 100644
index 0000000000000000000000000000000000000000..b073308407451d7655177fa454a2e770a5c19565
--- /dev/null
+++ b/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.H
@@ -0,0 +1,223 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::ReactingMultiphaseCloud
+
+Description
+    Templated base class for multiphase reacting cloud
+
+    - Adds to reacting cloud
+      - multiphase composition
+      - devolatilisatsion
+      - surface reactions
+
+SourceFiles
+    ReactingMultiphaseCloudI.H
+    ReactingMultiphaseCloud.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef ReactingMultiphaseCloud_H
+#define ReactingMultiphaseCloud_H
+
+#include "ReactingCloud.H"
+#include "reactingMultiphaseCloud.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+// Forward declaration of classes
+
+template<class CloudType>
+class DevolatilisationModel;
+
+template<class CloudType>
+class SurfaceReactionModel;
+
+/*---------------------------------------------------------------------------*\
+                   Class ReactingMultiphaseCloud Declaration
+\*---------------------------------------------------------------------------*/
+
+template<class ParcelType>
+class ReactingMultiphaseCloud
+:
+    public ReactingCloud<ParcelType>,
+    public reactingMultiphaseCloud
+{
+    // Private member functions
+
+        //- Disallow default bitwise copy construct
+        ReactingMultiphaseCloud(const ReactingMultiphaseCloud&);
+
+        //- Disallow default bitwise assignment
+        void operator=(const ReactingMultiphaseCloud&);
+
+
+protected:
+
+    // Protected data
+
+        //- Parcel constant properties
+        typename ParcelType::constantProperties constProps_;
+
+
+        // References to the cloud sub-models
+
+            //- Devolatilisation model
+            autoPtr
+            <
+                DevolatilisationModel<ReactingMultiphaseCloud<ParcelType> >
+            >
+            devolatilisationModel_;
+
+            //- Surface reaction model
+            autoPtr
+            <
+                SurfaceReactionModel<ReactingMultiphaseCloud<ParcelType> >
+            >
+            surfaceReactionModel_;
+
+
+        // Check
+
+            //- Total mass transferred to continuous phase via devolatilisation
+            scalar dMassDevolatilisation_;
+
+            //- Total mass transferred to continuous phase via surface
+            //  reactions
+            scalar dMassSurfaceReaction_;
+
+
+    // Protected member functions
+
+        // Cloud evolution functions
+
+            //- Pre-evolve
+            void preEvolve();
+
+            //- Post-evolve
+            void postEvolve();
+
+
+public:
+
+    // Constructors
+
+        //- Construct given carrier gas fields
+        ReactingMultiphaseCloud
+        (
+            const word& cloudName,
+            const volScalarField& rho,
+            const volVectorField& U,
+            const dimensionedVector& g,
+            basicThermo& thermo
+        );
+
+
+    //- Destructor
+    virtual ~ReactingMultiphaseCloud();
+
+
+    //- Type of parcel the cloud was instantiated for
+    typedef ParcelType parcelType;
+
+
+    // Member Functions
+
+        // Access
+
+            //- Return the constant properties
+            inline const typename ParcelType::constantProperties&
+                constProps() const;
+
+
+            // Sub-models
+
+                //- Return reference to devolatilisation model
+                inline const DevolatilisationModel
+                <
+                    ReactingMultiphaseCloud<ParcelType>
+                >&
+                devolatilisation() const;
+
+                //- Return reference to reacting surface reaction model
+                inline const SurfaceReactionModel
+                <
+                    ReactingMultiphaseCloud<ParcelType>
+                >&
+                surfaceReaction() const;
+
+
+        // Check
+
+            //- Print cloud information
+            void info() const;
+
+            //- Add to cumulative volatilisation mass transfer
+            void addToMassDevolatilisation(const scalar dMass);
+
+            //- Add to cumulative surface reaction transfer
+            void addToMassSurfaceReaction(const scalar dMass);
+
+
+        // Cloud evolution functions
+
+            //- Check parcel properties
+            void checkParcelProperties
+            (
+                ParcelType& parcel,
+                const scalar lagrangianDt,
+                const bool fullyDescribed
+            );
+
+            //- Reset the spray source terms
+            void resetSourceTerms();
+
+            //- Evolve the spray (inject, move)
+            void evolve();
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "ReactingMultiphaseCloudI.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#ifdef NoRepository
+#   include "ReactingMultiphaseCloud.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloudI.H b/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloudI.H
new file mode 100644
index 0000000000000000000000000000000000000000..ac0b0291501e909bcb086e6a3c835b30dee3643f
--- /dev/null
+++ b/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloudI.H
@@ -0,0 +1,59 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+template<class ParcelType>
+inline const typename ParcelType::constantProperties&
+Foam::ReactingMultiphaseCloud<ParcelType>::constProps() const
+{
+    return constProps_;
+}
+
+
+template<class ParcelType>
+inline const Foam::DevolatilisationModel
+<
+    Foam::ReactingMultiphaseCloud<ParcelType>
+>&
+Foam::ReactingMultiphaseCloud<ParcelType>::devolatilisation() const
+{
+    return devolatilisationModel_;
+}
+
+
+template<class ParcelType>
+inline const Foam::SurfaceReactionModel
+<
+    Foam::ReactingMultiphaseCloud<ParcelType>
+>&
+Foam::ReactingMultiphaseCloud<ParcelType>::surfaceReaction() const
+{
+    return surfaceReactionModel_;
+}
+
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.C b/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.C
index 8a284024ff6ef97e8a25ea348066e40bd6b889ec..0585629246ec074406f04a9d4a11c6ce077deb8c 100644
--- a/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.C
+++ b/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.C
@@ -25,49 +25,17 @@ License
 \*---------------------------------------------------------------------------*/
 
 #include "ThermoCloud.H"
-#include "HeatTransferModel.H"
-
 #include "interpolationCellPoint.H"
 #include "ThermoParcel.H"
 
-// * * * * * * * * * * * Protected Member Functions  * * * * * * * * * * * * //
-
-template<class ParcelType>
-void Foam::ThermoCloud<ParcelType>::addNewParcel
-(
-    const vector& position,
-    const label cellId,
-    const scalar d,
-    const vector& U,
-    const scalar nParticles,
-    const scalar lagrangianDt
-)
-{
-    ParcelType* pPtr = new ParcelType
-    (
-        *this,
-        this->parcelTypeId(),
-        position,
-        cellId,
-        d,
-        U,
-        nParticles,
-        constProps_
-    );
-
-    scalar continuousDt = this->db().time().deltaT().value();
-    pPtr->stepFraction() = (continuousDt - lagrangianDt)/continuousDt;
-
-    addParticle(pPtr);
-}
-
+#include "HeatTransferModel.H"
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
 template<class ParcelType>
 Foam::ThermoCloud<ParcelType>::ThermoCloud
 (
-    const word& cloudType,
+    const word& cloudName,
     const volScalarField& rho,
     const volVectorField& U,
     const dimensionedVector& g,
@@ -76,7 +44,7 @@ Foam::ThermoCloud<ParcelType>::ThermoCloud
 :
     KinematicCloud<ParcelType>
     (
-        cloudType,
+        cloudName,
         rho,
         U,
         thermo.mu(),
@@ -102,11 +70,11 @@ Foam::ThermoCloud<ParcelType>::ThermoCloud
         )
     ),
     radiation_(this->particleProperties().lookup("radiation")),
-    hTrans_
+    hsTrans_
     (
         IOobject
         (
-            this->name() + "hTrans",
+            this->name() + "hsTrans",
             this->db().time().timeName(),
             this->db(),
             IOobject::NO_READ,
@@ -116,11 +84,11 @@ Foam::ThermoCloud<ParcelType>::ThermoCloud
         this->mesh(),
         dimensionedScalar("zero", dimensionSet(1, 2, -2, 0, 0), 0.0)
     ),
-    hCoeff_
+    hcTrans_
     (
         IOobject
         (
-            this->name() + "hCoeff",
+            this->name() + "hcTrans",
             this->db().time().timeName(),
             this->db(),
             IOobject::NO_READ,
@@ -128,7 +96,7 @@ Foam::ThermoCloud<ParcelType>::ThermoCloud
             false
         ),
         this->mesh(),
-        dimensionedScalar("zero", dimensionSet(1, 2, -3, -1, 0), 0.0)
+        dimensionedScalar("zero", dimensionSet(1, 2, -2, 0, 0), 0.0)
     )
 {}
 
@@ -142,46 +110,85 @@ Foam::ThermoCloud<ParcelType>::~ThermoCloud()
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
+template<class ParcelType>
+void Foam::ThermoCloud<ParcelType>::checkParcelProperties
+(
+    ParcelType& parcel,
+    const scalar lagrangianDt,
+    const bool fullyDescribed
+)
+{
+    KinematicCloud<ParcelType>::checkParcelProperties
+    (
+        parcel,
+        lagrangianDt,
+        fullyDescribed
+    );
+
+    if (!fullyDescribed)
+    {
+        parcel.T() = constProps_.T0();
+        parcel.cp() = constProps_.cp0();
+    }
+}
+
+
 template<class ParcelType>
 void Foam::ThermoCloud<ParcelType>::resetSourceTerms()
 {
     KinematicCloud<ParcelType>::resetSourceTerms();
-    hTrans_.field() = 0.0;
-    hCoeff_.field() = 0.0;
+    hsTrans_.field() = 0.0;
+    hcTrans_.field() = 0.0;
+}
+
+
+template<class ParcelType>
+void Foam::ThermoCloud<ParcelType>::preEvolve()
+{
+    KinematicCloud<ParcelType>::preEvolve();
+}
+
+
+template<class ParcelType>
+void Foam::ThermoCloud<ParcelType>::postEvolve()
+{
+    KinematicCloud<ParcelType>::postEvolve();
 }
 
 
 template<class ParcelType>
 void Foam::ThermoCloud<ParcelType>::evolve()
 {
+    preEvolve();
+
     const volScalarField& T = carrierThermo_.T();
     const volScalarField cp = carrierThermo_.Cp();
 
-    autoPtr<interpolation<scalar> > rhoInterpolator = interpolation<scalar>::New
+    autoPtr<interpolation<scalar> > rhoInterp = interpolation<scalar>::New
     (
         this->interpolationSchemes(),
         this->rho()
     );
 
-    autoPtr<interpolation<vector> > UInterpolator = interpolation<vector>::New
+    autoPtr<interpolation<vector> > UInterp = interpolation<vector>::New
     (
         this->interpolationSchemes(),
         this->U()
     );
 
-    autoPtr<interpolation<scalar> > muInterpolator = interpolation<scalar>::New
+    autoPtr<interpolation<scalar> > muInterp = interpolation<scalar>::New
     (
         this->interpolationSchemes(),
         this->mu()
     );
 
-    autoPtr<interpolation<scalar> > TInterpolator = interpolation<scalar>::New
+    autoPtr<interpolation<scalar> > TInterp = interpolation<scalar>::New
     (
         this->interpolationSchemes(),
         T
     );
 
-    autoPtr<interpolation<scalar> > cpInterpolator = interpolation<scalar>::New
+    autoPtr<interpolation<scalar> > cpInterp = interpolation<scalar>::New
     (
         this->interpolationSchemes(),
         cp
@@ -191,27 +198,31 @@ void Foam::ThermoCloud<ParcelType>::evolve()
     (
         *this,
         constProps_,
-        rhoInterpolator(),
-        UInterpolator(),
-        muInterpolator(),
-        TInterpolator(),
-        cpInterpolator(),
+        rhoInterp(),
+        UInterp(),
+        muInterp(),
+        TInterp(),
+        cpInterp(),
         this->g().value()
     );
 
     this->injection().inject(td);
 
-    if (debug)
-    {
-        this->dumpParticlePositions();
-    }
-
     if (this->coupled())
     {
         resetSourceTerms();
     }
 
     Cloud<ParcelType>::move(td);
+
+    postEvolve();
+}
+
+
+template<class ParcelType>
+void Foam::ThermoCloud<ParcelType>::info() const
+{
+    KinematicCloud<ParcelType>::info();
 }
 
 
diff --git a/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.H b/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.H
index 84603dd4ff257b173d330450dc99bcf9a5a348e7..151b0764117334be96ac1df2b4eb8376d0724349 100644
--- a/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.H
+++ b/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.H
@@ -27,6 +27,7 @@ Class
 
 Description
     Templated base class for thermodynamic cloud
+
     - Adds to kinematic cloud
       - Heat transfer
 
@@ -39,12 +40,9 @@ SourceFiles
 #ifndef ThermoCloud_H
 #define ThermoCloud_H
 
-#include "autoPtr.H"
-#include "hCombustionThermo.H"
-
 #include "KinematicCloud.H"
 #include "thermoCloud.H"
-
+#include "basicThermo.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -66,8 +64,18 @@ class ThermoCloud
     public KinematicCloud<ParcelType>,
     public thermoCloud
 {
+    // Private Member Functions
+
+        //- Disallow default bitwise copy construct
+        ThermoCloud(const ThermoCloud&);
 
-    // Private data
+        //- Disallow default bitwise assignment
+        void operator=(const ThermoCloud&);
+
+
+protected:
+
+    // Protected data
 
         //- Thermo parcel constant properties
         typename ParcelType::constantProperties constProps_;
@@ -100,34 +108,35 @@ class ThermoCloud
 
         // Sources
 
-            //- Enthalpy transfer
-            DimensionedField<scalar, volMesh> hTrans_;
+            //- Sensible enthalpy transfer
+            DimensionedField<scalar, volMesh> hsTrans_;
 
-            //- Coefficient for carrier phase h equation
-            DimensionedField<scalar, volMesh> hCoeff_;
+            //- Chemical enthalpy transfer
+            // - If solving for total enthalpy, the carrier phase enthalpy will
+            //   receive the full enthalpy of reaction via creation of reaction
+            //   products
+            DimensionedField<scalar, volMesh> hcTrans_;
 
 
-    // Private Member Functions
+    // Protected member functions
 
-        //- Disallow default bitwise copy construct
-        ThermoCloud(const ThermoCloud&);
-
-        //- Disallow default bitwise assignment
-        void operator=(const ThermoCloud&);
+        // Cloud evolution functions
 
+            //- Pre-evolve
+            void preEvolve();
 
-public:
+            //- Post-evolve
+            void postEvolve();
 
-    //- Runtime type information
-//    TypeName("ThermoCloud");
 
+public:
 
     // Constructors
 
         //- Construct given carrier gas fields
         ThermoCloud
         (
-            const word& cloudType,
+            const word& cloudName,
             const volScalarField& rho,
             const volVectorField& U,
             const dimensionedVector& g,
@@ -135,15 +144,22 @@ public:
         );
 
 
-    // Destructor
+    //- Destructor
+    virtual ~ThermoCloud();
 
-        virtual ~ThermoCloud();
+
+    //- Type of parcel the cloud was instantiated for
+    typedef ParcelType parcelType;
 
 
     // Member Functions
 
         // Access
 
+            //- Return the constant properties
+            inline const typename ParcelType::constantProperties&
+                constProps() const;
+
             //- Return const access to thermo package
             inline const basicThermo& carrierThermo() const;
 
@@ -174,17 +190,20 @@ public:
 
                 // Enthalpy
 
-                    //- Return reference to enthalpy source
-                    inline DimensionedField<scalar, volMesh>& hTrans();
+                    //- Return reference to sensible enthalpy source
+                    inline DimensionedField<scalar, volMesh>& hsTrans();
+
+                    //- Return tmp total sensible enthalpy source term
+                    inline tmp<DimensionedField<scalar, volMesh> > Shs() const;
 
-                    //- Coefficient for carrier phase h equation
-                    inline DimensionedField<scalar, volMesh>& hCoeff();
+                    //- Return reference to chemical enthalpy source
+                    inline DimensionedField<scalar, volMesh>& hcTrans();
 
-                    //- return tmp enthalpy source term - fully explicit
-                    inline tmp<DimensionedField<scalar, volMesh> > Sh1() const;
+                    //- Return tmp chemical enthalpy source term
+                    inline tmp<DimensionedField<scalar, volMesh> > Shc() const;
 
-                    //- Return tmp enthalpy source term - semi-implicit
-                    inline tmp<fvScalarMatrix> Sh2(volScalarField& h) const;
+                    //- Return tmp total enthalpy source term
+                    inline tmp<DimensionedField<scalar, volMesh> > Sh() const;
 
 
                 // Radiation - overrides thermoCloud virtual abstract members
@@ -199,17 +218,20 @@ public:
                     inline tmp<volScalarField> sigmap() const;
 
 
+        // Check
+
+            //- Print cloud information
+            void info() const;
+
+
         // Cloud evolution functions
 
-            //- Add new parcel
-            void addNewParcel
+            //- Check parcel properties
+            void checkParcelProperties
             (
-                const vector& position,
-                const label cellId,
-                const scalar d,
-                const vector& U,
-                const scalar nParticles,
-                const scalar lagrangianDt
+                ParcelType& parcel,
+                const scalar lagrangianDt,
+                const bool fullyDescribed
             );
 
             //- Reset the spray source terms
diff --git a/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloudI.H b/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloudI.H
index 94f12b85a2cb350d75b792a366b9b6077e4658ef..ee38bfd4533d18b89b1c5f7dac6188deb4fb01c7 100644
--- a/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloudI.H
+++ b/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloudI.H
@@ -28,6 +28,14 @@ License
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
+template<class ParcelType>
+inline const typename ParcelType::constantProperties&
+Foam::ThermoCloud<ParcelType>::constProps() const
+{
+    return constProps_;
+}
+
+
 template<class ParcelType>
 inline const Foam::basicThermo&
 Foam::ThermoCloud<ParcelType>::carrierThermo() const
@@ -69,31 +77,65 @@ inline bool Foam::ThermoCloud<ParcelType>::radiation() const
 
 template<class ParcelType>
 inline Foam::DimensionedField<Foam::scalar, Foam::volMesh>&
-Foam::ThermoCloud<ParcelType>::hTrans()
+Foam::ThermoCloud<ParcelType>::hsTrans()
+{
+    return hsTrans_;
+}
+
+
+template<class ParcelType>
+inline Foam::tmp<Foam::DimensionedField<Foam::scalar, Foam::volMesh> >
+Foam::ThermoCloud<ParcelType>::Shs() const
 {
-    return hTrans_;
+    tmp<DimensionedField<scalar, volMesh> > tShs
+    (
+        new DimensionedField<scalar, volMesh>
+        (
+            IOobject
+            (
+                this->name() + "Shs",
+                this->db().time().timeName(),
+                this->mesh(),
+                IOobject::NO_READ,
+                IOobject::AUTO_WRITE,
+                false
+            ),
+            this->mesh(),
+            dimensionedScalar
+            (
+                "zero",
+                dimMass/dimLength/pow3(dimTime),
+                0.0
+            )
+        )
+    );
+
+    scalarField& Shs = tShs().field();
+    Shs = hsTrans_/(this->mesh().V()*this->db().time().deltaT());
+
+    return tShs;
 }
 
 
 template<class ParcelType>
 inline Foam::DimensionedField<Foam::scalar, Foam::volMesh>&
-Foam::ThermoCloud<ParcelType>::hCoeff()
+Foam::ThermoCloud<ParcelType>::hcTrans()
 {
-    return hCoeff_;
+    return hcTrans_;
 }
 
 
 template<class ParcelType>
 inline Foam::tmp<Foam::DimensionedField<Foam::scalar, Foam::volMesh> >
-Foam::ThermoCloud<ParcelType>::Sh1() const
+Foam::ThermoCloud<ParcelType>::Shc() const
 {
-    tmp<DimensionedField<scalar, volMesh> > tSh1
+    tmp<DimensionedField<scalar, volMesh> > tShc
     (
         new DimensionedField<scalar, volMesh>
         (
             IOobject
             (
-                this->name() + "Sh1",
+                this->name() + "Shc",
                 this->db().time().timeName(),
                 this->mesh(),
                 IOobject::NO_READ,
@@ -110,30 +152,44 @@ Foam::ThermoCloud<ParcelType>::Sh1() const
         )
     );
 
-    scalarField& Sh1 = tSh1().field();
-    Sh1 = hTrans_/(this->mesh().V()*this->db().time().deltaT());
+    scalarField& Shc = tShc().field();
+    Shc = hcTrans_/(this->mesh().V()*this->db().time().deltaT());
 
-    return tSh1;
+    return tShc;
 }
 
 
 template<class ParcelType>
-inline Foam::tmp<Foam::fvScalarMatrix>
-Foam::ThermoCloud<ParcelType>::Sh2(volScalarField& h) const
+inline Foam::tmp<Foam::DimensionedField<Foam::scalar, Foam::volMesh> >
+Foam::ThermoCloud<ParcelType>::Sh() const
 {
-    const volScalarField cp = carrierThermo_.Cp();
+    tmp<DimensionedField<scalar, volMesh> > tSh
+    (
+        new DimensionedField<scalar, volMesh>
+        (
+            IOobject
+            (
+                this->name() + "Sh",
+                this->db().time().timeName(),
+                this->mesh(),
+                IOobject::NO_READ,
+                IOobject::AUTO_WRITE,
+                false
+            ),
+            this->mesh(),
+            dimensionedScalar
+            (
+                "zero",
+                dimMass/dimLength/pow3(dimTime),
+                0.0
+            )
+        )
+    );
 
-    if (debug)
-    {
-        Info<< "hTrans min/max = "
-            << min(hTrans_) << ", " << max(hTrans_) << endl;
-        Info<< "hCoeff min/max = "
-            << min(hCoeff_) << ", " << max(hCoeff_) << endl;
-    }
+    scalarField& Sh = tSh().field();
+    Sh = (hsTrans_ + hcTrans_)/(this->mesh().V()*this->db().time().deltaT());
 
-    return hTrans_/(this->mesh().V()*this->db().time().deltaT())
-         - fvm::Sp(hCoeff_/(cp*this->mesh().V()), h)
-         + hCoeff_/(cp*this->mesh().V())*h;
+    return tSh;
 }
 
 
diff --git a/src/lagrangian/intermediate/clouds/baseClasses/kinematicCloud/kinematicCloud.H b/src/lagrangian/intermediate/clouds/baseClasses/kinematicCloud/kinematicCloud.H
index 68f3a9dfdf275bdd4ce0bb8c8c81b54043e8fa09..37ab0548157a1178a8d427f2ebd035abb2c2ea0e 100644
--- a/src/lagrangian/intermediate/clouds/baseClasses/kinematicCloud/kinematicCloud.H
+++ b/src/lagrangian/intermediate/clouds/baseClasses/kinematicCloud/kinematicCloud.H
@@ -29,13 +29,14 @@ Description
     Virtual abstract base class for templated KinematicCloud
 
 SourceFiles
+    kinematicCloud.H
 
 \*---------------------------------------------------------------------------*/
 
 #ifndef kinematicCloud_H
 #define kinematicCloud_H
 
-#include "volFields.H"
+#include "typeInfo.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -48,7 +49,6 @@ namespace Foam
 
 class kinematicCloud
 {
-
     // Private Member Functions
 
         //- Disallow default bitwise copy construct
@@ -69,14 +69,8 @@ public:
         kinematicCloud();
 
 
-    // Destructors
-
-        virtual ~kinematicCloud();
-
-
-    // Member Functions
-
-        // Access
+    //- Destructor
+    virtual ~kinematicCloud();
 };
 
 
diff --git a/src/lagrangian/intermediate/clouds/baseClasses/reactingCloud/reactingCloud.H b/src/lagrangian/intermediate/clouds/baseClasses/reactingCloud/reactingCloud.H
index be585991ed6e147b70c76cbb11632400cf1eee1e..aef3eeba66c2eafebfbf2e76f6529f2586a79594 100644
--- a/src/lagrangian/intermediate/clouds/baseClasses/reactingCloud/reactingCloud.H
+++ b/src/lagrangian/intermediate/clouds/baseClasses/reactingCloud/reactingCloud.H
@@ -29,13 +29,14 @@ Description
     Virtual abstract base class for templated ReactingCloud
 
 SourceFiles
+    reactingCloud.C
 
 \*---------------------------------------------------------------------------*/
 
 #ifndef reactingCloud_H
 #define reactingCloud_H
 
-#include "volFields.H"
+#include "typeInfo.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -48,7 +49,6 @@ namespace Foam
 
 class reactingCloud
 {
-
     // Private Member Functions
 
         //- Disallow default bitwise copy construct
@@ -69,14 +69,8 @@ public:
         reactingCloud();
 
 
-    // Destructors
-
-        virtual ~reactingCloud();
-
-
-    // Member Functions
-
-        // Access
+    //- Destructor
+    virtual ~reactingCloud();
 };
 
 
diff --git a/src/lagrangian/intermediate/clouds/baseClasses/reactingMultiphaseCloud/reactingMultiphaseCloud.C b/src/lagrangian/intermediate/clouds/baseClasses/reactingMultiphaseCloud/reactingMultiphaseCloud.C
new file mode 100644
index 0000000000000000000000000000000000000000..2fbe3815c949047e11488f75992d8fdf6b078289
--- /dev/null
+++ b/src/lagrangian/intermediate/clouds/baseClasses/reactingMultiphaseCloud/reactingMultiphaseCloud.C
@@ -0,0 +1,49 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "reactingMultiphaseCloud.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    defineTypeNameAndDebug(reactingMultiphaseCloud, 0);
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::reactingMultiphaseCloud::reactingMultiphaseCloud()
+{}
+
+
+// * * * * * * * * * * * * * * * *  Destructors  * * * * * * * * * * * * * * //
+
+Foam::reactingMultiphaseCloud::~reactingMultiphaseCloud()
+{}
+
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/clouds/baseClasses/reactingMultiphaseCloud/reactingMultiphaseCloud.H b/src/lagrangian/intermediate/clouds/baseClasses/reactingMultiphaseCloud/reactingMultiphaseCloud.H
new file mode 100644
index 0000000000000000000000000000000000000000..4cbe6f69177f1d826467a7629606e027d40b5db2
--- /dev/null
+++ b/src/lagrangian/intermediate/clouds/baseClasses/reactingMultiphaseCloud/reactingMultiphaseCloud.H
@@ -0,0 +1,85 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::reactingMultiphaseCloud
+
+Description
+    Virtual abstract base class for templated reactingMultiphaseCloud
+
+SourceFiles
+    reactingMultiphaseCloud.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef reactingMultiphaseCloud_H
+#define reactingMultiphaseCloud_H
+
+#include "typeInfo.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+                  Class reactingMultiphaseCloud Declaration
+\*---------------------------------------------------------------------------*/
+
+class reactingMultiphaseCloud
+{
+    // Private Member Functions
+
+        //- Disallow default bitwise copy construct
+        reactingMultiphaseCloud(const reactingMultiphaseCloud&);
+
+        //- Disallow default bitwise assignment
+        void operator=(const reactingMultiphaseCloud&);
+
+
+public:
+
+    //- Runtime type information
+    TypeName("reactingMultiphaseCloud");
+
+    // Constructors
+
+        //- Null constructor
+        reactingMultiphaseCloud();
+
+
+    //- Destructor
+    virtual ~reactingMultiphaseCloud();
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/clouds/baseClasses/thermoCloud/thermoCloud.H b/src/lagrangian/intermediate/clouds/baseClasses/thermoCloud/thermoCloud.H
index bcab4df9fabd35b6d503456f73874e5e5ab2cd19..9eff9c62ee4a3d3d45c57668ef50fb8400229e43 100644
--- a/src/lagrangian/intermediate/clouds/baseClasses/thermoCloud/thermoCloud.H
+++ b/src/lagrangian/intermediate/clouds/baseClasses/thermoCloud/thermoCloud.H
@@ -29,6 +29,7 @@ Description
     Virtual abstract base class for templated ThermoCloud
 
 SourceFiles
+    thermoCloud.C
 
 \*---------------------------------------------------------------------------*/
 
@@ -48,7 +49,6 @@ namespace Foam
 
 class thermoCloud
 {
-
     // Private Member Functions
 
         //- Disallow default bitwise copy construct
@@ -69,9 +69,8 @@ public:
         thermoCloud();
 
 
-    // Destructors
-
-        virtual ~thermoCloud();
+    //- Destructor
+    virtual ~thermoCloud();
 
 
     // Member Functions
diff --git a/src/lagrangian/intermediate/clouds/derived/basicReactingCloud/basicReactingCloud.C b/src/lagrangian/intermediate/clouds/derived/BasicReactingCloud/BasicReactingCloud.C
similarity index 73%
rename from src/lagrangian/intermediate/clouds/derived/basicReactingCloud/basicReactingCloud.C
rename to src/lagrangian/intermediate/clouds/derived/BasicReactingCloud/BasicReactingCloud.C
index 6cd0e4d4fe453044c8d9e6366ba5410d681728f7..e59ca18ecf7dcf98670722534fc12059f9cd6665 100644
--- a/src/lagrangian/intermediate/clouds/derived/basicReactingCloud/basicReactingCloud.C
+++ b/src/lagrangian/intermediate/clouds/derived/BasicReactingCloud/BasicReactingCloud.C
@@ -24,53 +24,46 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "basicReactingCloud.H"
-
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
-
-namespace Foam
-{
-    defineTypeNameAndDebug(basicReactingCloud, 0);
-};
-
+#include "BasicReactingCloud.H"
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::basicReactingCloud::basicReactingCloud
+template<class ThermoType>
+Foam::BasicReactingCloud<ThermoType>::BasicReactingCloud
 (
-    const word& cloudType,
+    const word& cloudName,
     const volScalarField& rho,
     const volVectorField& U,
     const dimensionedVector& g,
-    hCombustionThermo& thermo,
-    PtrList<specieReactingProperties>& gases
+    basicThermo& thermo
 )
 :
-    ReactingCloud<basicReactingParcel>
+    ReactingCloud<BasicReactingParcel<ThermoType> >
     (
-        cloudType,
+        cloudName,
         rho,
         U,
         g,
-        thermo,
-        gases
+        thermo
     )
 {
-    basicReactingParcel::readFields(*this);
+    BasicReactingParcel<ThermoType>::readFields(*this);
 }
 
 
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
-Foam::basicReactingCloud::~basicReactingCloud()
+template<class ThermoType>
+Foam::BasicReactingCloud<ThermoType>::~BasicReactingCloud()
 {}
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-void Foam::basicReactingCloud::writeFields() const
+template<class ThermoType>
+void Foam::BasicReactingCloud<ThermoType>::writeFields() const
 {
-    basicReactingParcel::writeFields(*this);
+    BasicReactingParcel<ThermoType>::writeFields(*this);
 }
 
 
diff --git a/src/lagrangian/intermediate/clouds/derived/BasicReactingCloud/BasicReactingCloud.H b/src/lagrangian/intermediate/clouds/derived/BasicReactingCloud/BasicReactingCloud.H
new file mode 100644
index 0000000000000000000000000000000000000000..0dea7344a6656abfd275f4001a81ed05c5a3c8b0
--- /dev/null
+++ b/src/lagrangian/intermediate/clouds/derived/BasicReactingCloud/BasicReactingCloud.H
@@ -0,0 +1,113 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::BasicReactingCloud
+
+Description
+    Reacting cloud templated on the type of carrier phase thermodynamics
+
+SourceFiles
+    BasicReactingCloud.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef BasicReactingCloud_H
+#define BasicReactingCloud_H
+
+#include "ReactingCloud.H"
+#include "BasicReactingParcel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+// Forward declaration of classes
+template<class ThermoType>
+class BasicReactingCloud;
+
+/*---------------------------------------------------------------------------*\
+                        Class BasicReactingCloud Declaration
+\*---------------------------------------------------------------------------*/
+
+template<class ThermoType>
+class BasicReactingCloud
+:
+    public ReactingCloud<BasicReactingParcel<ThermoType> >
+{
+    // Private Member Functions
+
+        //- Disallow default bitwise copy construct
+        BasicReactingCloud(const BasicReactingCloud&);
+
+        //- Disallow default bitwise assignment
+        void operator=(const BasicReactingCloud&);
+
+
+public:
+
+    //- Runtime type information
+    TypeName("BasicReactingCloud");
+
+
+    // Constructors
+
+        //- Construct given carrier gas fields
+        BasicReactingCloud
+        (
+            const word& cloudName,
+            const volScalarField& rho,
+            const volVectorField& U,
+            const dimensionedVector& g,
+            basicThermo& thermo
+        );
+
+
+    //- Destructor
+    ~BasicReactingCloud();
+
+
+    // Member Functions
+
+        //- Write fields
+        virtual void writeFields() const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#ifdef NoRepository
+    #include "BasicReactingCloud.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/clouds/derived/BasicReactingCloud/defineBasicReactingCloud.C b/src/lagrangian/intermediate/clouds/derived/BasicReactingCloud/defineBasicReactingCloud.C
new file mode 100644
index 0000000000000000000000000000000000000000..ca5b9e809062d6fac2137e44c146fe5c59beea21
--- /dev/null
+++ b/src/lagrangian/intermediate/clouds/derived/BasicReactingCloud/defineBasicReactingCloud.C
@@ -0,0 +1,38 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "createReactingCloudTypes.H"
+#include "BasicReactingCloud.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    createReactingCloudType(BasicReactingCloud);
+};
+
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/clouds/derived/BasicReactingMultiphaseCloud/BasicReactingMultiphaseCloud.C b/src/lagrangian/intermediate/clouds/derived/BasicReactingMultiphaseCloud/BasicReactingMultiphaseCloud.C
new file mode 100644
index 0000000000000000000000000000000000000000..6f08db20167346b0b1fc41e9c669661c38d39861
--- /dev/null
+++ b/src/lagrangian/intermediate/clouds/derived/BasicReactingMultiphaseCloud/BasicReactingMultiphaseCloud.C
@@ -0,0 +1,70 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "BasicReactingMultiphaseCloud.H"
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template<class ThermoType>
+Foam::BasicReactingMultiphaseCloud<ThermoType>::BasicReactingMultiphaseCloud
+(
+    const word& cloudName,
+    const volScalarField& rho,
+    const volVectorField& U,
+    const dimensionedVector& g,
+    basicThermo& thermo
+)
+:
+    ReactingMultiphaseCloud<BasicReactingMultiphaseParcel<ThermoType> >
+    (
+        cloudName,
+        rho,
+        U,
+        g,
+        thermo
+    )
+{
+    BasicReactingMultiphaseParcel<ThermoType>::readFields(*this);
+}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+template<class ThermoType>
+Foam::BasicReactingMultiphaseCloud<ThermoType>::~BasicReactingMultiphaseCloud()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+template<class ThermoType>
+void Foam::BasicReactingMultiphaseCloud<ThermoType>::writeFields() const
+{
+    BasicReactingMultiphaseParcel<ThermoType>::writeFields(*this);
+}
+
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/clouds/derived/BasicReactingMultiphaseCloud/BasicReactingMultiphaseCloud.H b/src/lagrangian/intermediate/clouds/derived/BasicReactingMultiphaseCloud/BasicReactingMultiphaseCloud.H
new file mode 100644
index 0000000000000000000000000000000000000000..11b6fb237873433fd102c1976eb19746246bfa82
--- /dev/null
+++ b/src/lagrangian/intermediate/clouds/derived/BasicReactingMultiphaseCloud/BasicReactingMultiphaseCloud.H
@@ -0,0 +1,113 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::BasicReactingMultiphaseCloud
+
+Description
+    Reacting multiphase cloud templated on the type of carrier phase thermodynamics
+
+SourceFiles
+    BasicReactingMultiphaseCloud.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef BasicReactingMultiphaseCloud_H
+#define BasicReactingMultiphaseCloud_H
+
+#include "ReactingMultiphaseCloud.H"
+#include "BasicReactingMultiphaseParcel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+// Forward declaration of classes
+template<class ThermoType>
+class BasicReactingMultiphaseCloud;
+
+/*---------------------------------------------------------------------------*\
+                Class BasicReactingMultiphaseCloud Declaration
+\*---------------------------------------------------------------------------*/
+
+template<class ThermoType>
+class BasicReactingMultiphaseCloud
+:
+    public ReactingMultiphaseCloud<BasicReactingMultiphaseParcel<ThermoType> >
+{
+    // Private Member Functions
+
+        //- Disallow default bitwise copy construct
+        BasicReactingMultiphaseCloud(const BasicReactingMultiphaseCloud&);
+
+        //- Disallow default bitwise assignment
+        void operator=(const BasicReactingMultiphaseCloud&);
+
+
+public:
+
+    //- Runtime type information
+    TypeName("BasicReactingMultiphaseCloud");
+
+
+    // Constructors
+
+        //- Construct given carrier gas fields
+        BasicReactingMultiphaseCloud
+        (
+            const word& cloudName,
+            const volScalarField& rho,
+            const volVectorField& U,
+            const dimensionedVector& g,
+            basicThermo& thermo
+        );
+
+
+    //- Destructor
+    ~BasicReactingMultiphaseCloud();
+
+
+    // Member Functions
+
+        //- Write fields
+        virtual void writeFields() const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#ifdef NoRepository
+    #include "BasicReactingMultiphaseCloud.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/clouds/derived/BasicReactingMultiphaseCloud/defineBasicReactingMultiphaseCloud.C b/src/lagrangian/intermediate/clouds/derived/BasicReactingMultiphaseCloud/defineBasicReactingMultiphaseCloud.C
new file mode 100644
index 0000000000000000000000000000000000000000..d23115997d07bccb9ef83af7ff595635db9c634a
--- /dev/null
+++ b/src/lagrangian/intermediate/clouds/derived/BasicReactingMultiphaseCloud/defineBasicReactingMultiphaseCloud.C
@@ -0,0 +1,38 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "createReactingCloudTypes.H"
+#include "BasicReactingMultiphaseCloud.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    createReactingCloudType(BasicReactingMultiphaseCloud);
+};
+
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/clouds/derived/basicKinematicCloud/basicKinematicCloud.C b/src/lagrangian/intermediate/clouds/derived/basicKinematicCloud/basicKinematicCloud.C
index 4e52274f8e029298574e7da9b1606a821743e754..15ab7afdfcdf1673493fab546a2e0787aa86ab3f 100644
--- a/src/lagrangian/intermediate/clouds/derived/basicKinematicCloud/basicKinematicCloud.C
+++ b/src/lagrangian/intermediate/clouds/derived/basicKinematicCloud/basicKinematicCloud.C
@@ -38,14 +38,14 @@ namespace Foam
 
 Foam::basicKinematicCloud::basicKinematicCloud
 (
-    const word& cloudType,
+    const word& cloudName,
     const volScalarField& rho,
     const volVectorField& U,
     const volScalarField& mu,
     const dimensionedVector& g
 )
 :
-    KinematicCloud<basicKinematicParcel>(cloudType, rho, U, mu, g)
+    KinematicCloud<basicKinematicParcel>(cloudName, rho, U, mu, g)
 {
     basicKinematicParcel::readFields(*this);
 }
@@ -64,4 +64,5 @@ void Foam::basicKinematicCloud::writeFields() const
     basicKinematicParcel::writeFields(*this);
 }
 
+
 // ************************************************************************* //
diff --git a/src/lagrangian/intermediate/clouds/derived/basicKinematicCloud/basicKinematicCloud.H b/src/lagrangian/intermediate/clouds/derived/basicKinematicCloud/basicKinematicCloud.H
index d8a4ebc81c75eb317fa4d10a0e743711149a429a..9b2c6003d318c1c413a986aed963c4ee6946ea4c 100644
--- a/src/lagrangian/intermediate/clouds/derived/basicKinematicCloud/basicKinematicCloud.H
+++ b/src/lagrangian/intermediate/clouds/derived/basicKinematicCloud/basicKinematicCloud.H
@@ -52,7 +52,6 @@ class basicKinematicCloud
 :
     public KinematicCloud<basicKinematicParcel>
 {
-
     // Private member functions
 
         //- Disallow default bitwise copy construct
@@ -73,7 +72,7 @@ public:
         //- Construct from components
         basicKinematicCloud
         (
-            const word& cloudType,
+            const word& cloudName,
             const volScalarField& rho,
             const volVectorField& U,
             const volScalarField& mu,
@@ -82,14 +81,13 @@ public:
 
 
     //- Destructor
-
-        ~basicKinematicCloud();
+    ~basicKinematicCloud();
 
 
     // Member functions
 
         //- Write fields
-        void writeFields() const;
+        virtual void writeFields() const;
 };
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/lagrangian/intermediate/clouds/derived/basicThermoCloud/basicThermoCloud.C b/src/lagrangian/intermediate/clouds/derived/basicThermoCloud/basicThermoCloud.C
index 9d73a6533c91bc03c94cffec4dc767097feb565d..fc7ee7dc26eb80fbf66a701b839b8ef13a36fd25 100644
--- a/src/lagrangian/intermediate/clouds/derived/basicThermoCloud/basicThermoCloud.C
+++ b/src/lagrangian/intermediate/clouds/derived/basicThermoCloud/basicThermoCloud.C
@@ -38,14 +38,14 @@ namespace Foam
 
 Foam::basicThermoCloud::basicThermoCloud
 (
-    const word& cloudType,
+    const word& cloudName,
     const volScalarField& rho,
     const volVectorField& U,
     const dimensionedVector& g,
     basicThermo& thermo
 )
 :
-    ThermoCloud<basicThermoParcel>(cloudType, rho, U, g, thermo)
+    ThermoCloud<basicThermoParcel>(cloudName, rho, U, g, thermo)
 {
     basicThermoParcel::readFields(*this);
 }
diff --git a/src/lagrangian/intermediate/clouds/derived/basicThermoCloud/basicThermoCloud.H b/src/lagrangian/intermediate/clouds/derived/basicThermoCloud/basicThermoCloud.H
index c3002c13546ccb4f7c83bb837570c712214da06b..cbe3695d5d42f44aea195f5e4c1e67978ffe030b 100644
--- a/src/lagrangian/intermediate/clouds/derived/basicThermoCloud/basicThermoCloud.H
+++ b/src/lagrangian/intermediate/clouds/derived/basicThermoCloud/basicThermoCloud.H
@@ -26,6 +26,7 @@ Class
     Foam::basicThermoCloud
 
 Description
+    Cloud class to introduce thermodynamic parcels
 
 SourceFiles
     basicThermoCloud.C
@@ -51,7 +52,6 @@ class basicThermoCloud
 :
     public ThermoCloud<basicThermoParcel>
 {
-
     // Private Member Functions
 
         //- Disallow default bitwise copy construct
@@ -75,7 +75,7 @@ public:
         //- Construct given carrier gas fields
         basicThermoCloud
         (
-            const word& cloudType,
+            const word& cloudName,
             const volScalarField& rho,
             const volVectorField& U,
             const dimensionedVector& g,
@@ -84,14 +84,13 @@ public:
 
 
     //- Destructor
-
-        ~basicThermoCloud();
+    ~basicThermoCloud();
 
 
     // Member Functions
 
         //- Write fields
-        void writeFields() const;
+        virtual void writeFields() const;
 };
 
 
diff --git a/src/lagrangian/intermediate/clouds/include/createReactingCloudTypes.H b/src/lagrangian/intermediate/clouds/include/createReactingCloudTypes.H
new file mode 100644
index 0000000000000000000000000000000000000000..14f439e28524df4fe17cb0269b9409207e003082
--- /dev/null
+++ b/src/lagrangian/intermediate/clouds/include/createReactingCloudTypes.H
@@ -0,0 +1,50 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef createReactingCloudTypes_H
+#define createReactingCloudTypes_H
+
+#include "thermoPhysicsTypes.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#define createReactingCloudType(CloudType)                                    \
+                                                                              \
+    createReactingCloudThermoType(CloudType, constGasThermoPhysics);          \
+    createReactingCloudThermoType(CloudType, gasThermoPhysics);               \
+    createReactingCloudThermoType(CloudType, icoPoly8ThermoPhysics);
+
+
+#define createReactingCloudThermoType(CloudType, ThermoType)                  \
+                                                                              \
+    defineTemplateTypeNameAndDebug(CloudType<ThermoType>, 0);
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.C b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.C
index 3cbb291f575d4eff84b567600e805972c51bc6b9..cf4dc68acb02f7bf0059016e305ce0516e0aa971 100644
--- a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.C
+++ b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.C
@@ -31,22 +31,39 @@ License
 
 template<class ParcelType>
 template<class TrackData>
-void Foam::KinematicParcel<ParcelType>::updateCellQuantities
+void Foam::KinematicParcel<ParcelType>::setCellValues
 (
     TrackData& td,
     const scalar dt,
-    const label celli
+    const label cellI
 )
 {
-    rhoc_ = td.rhoInterp().interpolate(this->position(), celli);
-    Uc_ = td.UInterp().interpolate(this->position(), celli);
-    muc_ = td.muInterp().interpolate(this->position(), celli);
+    rhoc_ = td.rhoInterp().interpolate(this->position(), cellI);
+    if (rhoc_ < td.constProps().rhoMin())
+    {
+        WarningIn
+        (
+            "void Foam::KinematicParcel<ParcelType>::setCellValues"
+            "("
+                "TrackData&, "
+                "const scalar, "
+                "const label"
+            ")"
+        )   << "Limiting observed density in cell " << cellI << " to "
+            << td.constProps().rhoMin() <<  nl << endl;
+
+        rhoc_ = td.constProps().rhoMin();
+    }
+
+    Uc_ = td.UInterp().interpolate(this->position(), cellI);
+
+    muc_ = td.muInterp().interpolate(this->position(), cellI);
 
     // Apply dispersion components to carrier phase velocity
     Uc_ = td.cloud().dispersion().update
     (
         dt,
-        celli,
+        cellI,
         U_,
         Uc_,
         UTurb_,
@@ -57,153 +74,142 @@ void Foam::KinematicParcel<ParcelType>::updateCellQuantities
 
 template<class ParcelType>
 template<class TrackData>
-void Foam::KinematicParcel<ParcelType>::calcCoupled
+void Foam::KinematicParcel<ParcelType>::cellValueSourceCorrection
 (
     TrackData& td,
     const scalar dt,
-    const label celli
+    const label cellI
 )
 {
-    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    // Define local properties at beginning of timestep
-    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//    const scalar mass0 = mass();
-//    const vector U0 = U_;
-
-
-    // ~~~~~~~~~~~~~~~~~~~~~~~~~
-    // Initialise transfer terms
-    // ~~~~~~~~~~~~~~~~~~~~~~~~~
-
-    // Momentum transfer from the particle to the carrier phase
-    vector dUTrans = vector::zero;
-
-
-    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    // Calculate velocity - update U
-    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    scalar Cud = 0.0;
-    const vector U1 = calcVelocity(td, dt, Cud, dUTrans);
-
-
-    // ~~~~~~~~~~~~~~~~~~~~~~~
-    // Accumulate source terms
-    // ~~~~~~~~~~~~~~~~~~~~~~~
-
-    // Update momentum transfer
-    td.cloud().UTrans()[celli] += nParticle_*dUTrans;
-
-    // Accumulate coefficient to be applied in carrier phase momentum coupling
-    td.cloud().UCoeff()[celli] += nParticle_*mass()*Cud;
-
-
-    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    // Set new particle properties
-    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    this->U() = U1;
+    Uc_ += td.cloud().UTrans()[cellI]/massCell(cellI);
 }
 
 
 template<class ParcelType>
 template<class TrackData>
-void Foam::KinematicParcel<ParcelType>::calcUncoupled
+void Foam::KinematicParcel<ParcelType>::calc
 (
     TrackData& td,
     const scalar dt,
-    const label
+    const label cellI
 )
 {
-    // ~~~~~~~~~~~~~~~~~~~~~~~~~
-    // Initialise transfer terms
-    // ~~~~~~~~~~~~~~~~~~~~~~~~~
+    // Define local properties at beginning of time step
+    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    const scalar np0 = nParticle_;
+    const scalar d0 = d_;
+    const vector U0 = U_;
+    const scalar rho0 = rho_;
+    const scalar mass0 = mass();
+
+
+    // Explicit momentum source for particle
+    vector Su = vector::zero;
 
     // Momentum transfer from the particle to the carrier phase
     vector dUTrans = vector::zero;
 
 
-    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    // Calculate velocity - update U
-    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    scalar Cud = 0.0;
-    this->U() = calcVelocity(td, dt, Cud, dUTrans);
+    // Motion
+    // ~~~~~~
+
+    // Calculate new particle velocity
+    vector U1 = calcVelocity(td, dt, cellI, d0, U0, rho0, mass0, Su, dUTrans);
+
+
+    // Accumulate carrier phase source terms
+    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    if (td.cloud().coupled())
+    {
+        // Update momentum transfer
+        td.cloud().UTrans()[cellI] += np0*dUTrans;
+    }
+
+
+    // Set new particle properties
+    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    U_ = U1;
 }
 
 
 template<class ParcelType>
 template<class TrackData>
-Foam::vector Foam::KinematicParcel<ParcelType>::calcVelocity
+const Foam::vector Foam::KinematicParcel<ParcelType>::calcVelocity
 (
     TrackData& td,
     const scalar dt,
-    scalar& Cud,
+    const label cellI,
+    const scalar d,
+    const vector& U,
+    const scalar rho,
+    const scalar mass,
+    const vector& Su,
     vector& dUTrans
-)
+) const
 {
-    // Correct carrier phase velocity for 2-D slab cases
-    const polyMeshInfo& meshInfo = td.cloud().meshInfo();
-    if (meshInfo.caseIs2dSlab())
-    {
-        Uc_.component(meshInfo.emptyComponent()) = 0.0;
-    }
+    const polyMesh& mesh = this->cloud().pMesh();
+
+    // Momentum transfer coefficient
+    const scalar utc =
+        td.cloud().drag().utc(U - Uc_, d, rhoc_, muc_) + ROOTVSMALL;
 
-    // Return linearised term from drag model
-    Cud = td.cloud().drag().Cu(U_ - Uc_, d_, rhoc_, rho_, muc_);
+    // Momentum source due to particle forces
+    const vector FCoupled =
+        mass*td.cloud().forces().calcCoupled(cellI, dt, rhoc_, rho, Uc_, U);
+    const vector FNonCoupled =
+        mass*td.cloud().forces().calcNonCoupled(cellI, dt, rhoc_, rho, Uc_, U);
 
 
-    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    // Set new particle velocity
-    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    // New particle velocity
+    //~~~~~~~~~~~~~~~~~~~~~~
 
     // Update velocity - treat as 3-D
-    const vector ap = Uc_ + (1 - rhoc_/rho_)/(Cud + VSMALL)*td.g();
-    const scalar bp = Cud;
+    const scalar As = this->areaS(d);
+    const vector ap = Uc_ + (FCoupled + FNonCoupled + Su)/(utc*As);
+    const scalar bp = 6.0*utc/(rho*d);
 
-    vector Unew = td.cloud().UIntegrator().integrate(U_, dt, ap, bp).value();
+    IntegrationScheme<vector>::integrationResult Ures =
+        td.cloud().UIntegrator().integrate(U, dt, ap, bp);
 
-//    Info<< "U_, Unew = " << U_ << ", " << Unew << endl;
+    vector Unew = Ures.value();
 
-    // Calculate the momentum transfer to the continuous phase
-    // - do not include gravity impulse
-    dUTrans = -mass()*(Unew - U_ - dt*td.g());
+    dUTrans += dt*(utc*As*(Ures.average() - Uc_) - FCoupled);
 
-    // Make corrections for 2-D cases
-    if (meshInfo.caseIs2d())
-    {
-        if (meshInfo.caseIs2dSlab())
-        {
-            // Remove the slab normal parcel velocity component
-            Unew.component(meshInfo.emptyComponent()) = 0.0;
-            dUTrans.component(meshInfo.emptyComponent()) = 0.0;
-
-            // Snap parcels to central plane
-            this->position().component(meshInfo.emptyComponent()) =
-                meshInfo.centrePoint().component(meshInfo.emptyComponent());
-        }
-        else if (meshInfo.caseIs2dWedge())
-        {
-            // Snap parcels to central plane
-            this->position().component(meshInfo.emptyComponent()) = 0.0;
-        }
-        else
-        {
-            FatalErrorIn("void Foam::KinematicParcel::calcVelocity")
-                << "Could not determine 2-D case geometry" << nl
-                << abort(FatalError);
-        }
-    }
+    // Apply correction to velocity and dUTrans for reduced-D cases
+    meshTools::constrainDirection(mesh, mesh.solutionD(), Unew);
+    meshTools::constrainDirection(mesh, mesh.solutionD(), dUTrans);
 
     return Unew;
 }
 
 
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template <class ParcelType>
+Foam::KinematicParcel<ParcelType>::KinematicParcel
+(
+    const KinematicParcel<ParcelType>& p
+)
+:
+    Particle<ParcelType>(p),
+    typeId_(p.typeId_),
+    nParticle_(p.nParticle_),
+    d_(p.d_),
+    U_(p.U_),
+    rho_(p.rho_),
+    tTurb_(p.tTurb_),
+    UTurb_(p.UTurb_),
+    rhoc_(p.rhoc_),
+    Uc_(p.Uc_),
+    muc_(p.muc_)
+{}
+
+
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 template<class ParcelType>
 template<class TrackData>
-bool Foam::KinematicParcel<ParcelType>::move
-(
-    TrackData& td
-)
+bool Foam::KinematicParcel<ParcelType>::move(TrackData& td)
 {
     ParcelType& p = static_cast<ParcelType&>(*this);
 
@@ -219,46 +225,40 @@ bool Foam::KinematicParcel<ParcelType>::move
 
     while (td.keepParticle && !td.switchProcessor && tEnd > ROOTVSMALL)
     {
+        // Apply correction to position for reduced-D cases
+        meshTools::constrainToMeshCentre(mesh, p.position());
+
         // Set the Lagrangian time-step
         scalar dt = min(dtMax, tEnd);
 
-        // Remember which cell the Parcel is in
-        // since this will change if a face is hit
-        label celli = p.cell();
+        // Remember which cell the Parcel is in since this will change if a
+        // face is hit
+        label cellI = p.cell();
 
         dt *= p.trackToFace(p.position() + dt*U_, td);
 
         tEnd -= dt;
         p.stepFraction() = 1.0 - tEnd/deltaT;
 
-        // Update cell based properties
-        p.updateCellQuantities(td, dt, celli);
-
         // Avoid problems with extremely small timesteps
         if (dt > ROOTVSMALL)
         {
-            if (td.cloud().coupled())
-            {
-                p.calcCoupled(td, dt, celli);
-            }
-            else
+            // Update cell based properties
+            p.setCellValues(td, dt, cellI);
+
+            if (td.cloud().cellValueSourceCorrection())
             {
-                p.calcUncoupled(td, dt, celli);
+                p.cellValueSourceCorrection(td, dt, cellI);
             }
+
+            p.calc(td, dt, cellI);
         }
 
         if (p.onBoundary() && td.keepParticle)
         {
-            if (p.face() > -1)
+            if (isType<processorPolyPatch>(pbMesh[p.patch(p.face())]))
             {
-                if
-                (
-                    isType<processorPolyPatch>
-                        (pbMesh[p.patch(p.face())])
-                )
-                {
-                    td.switchProcessor = true;
-                }
+                td.switchProcessor = true;
             }
         }
     }
@@ -267,6 +267,34 @@ bool Foam::KinematicParcel<ParcelType>::move
 }
 
 
+template<class ParcelType>
+template<class TrackData>
+bool Foam::KinematicParcel<ParcelType>::hitPatch
+(
+    const polyPatch& pp,
+    TrackData& td,
+    const label patchI
+)
+{
+    ParcelType& p = static_cast<ParcelType&>(*this);
+    td.cloud().postProcessing().postPatch(p, patchI);
+
+    return td.cloud().patchInteraction().correct(pp, this->face(), U_);
+}
+
+
+template<class ParcelType>
+bool Foam::KinematicParcel<ParcelType>::hitPatch
+(
+    const polyPatch& pp,
+    int& td,
+    const label patchI
+)
+{
+    return false;
+}
+
+
 template<class ParcelType>
 template<class TrackData>
 void Foam::KinematicParcel<ParcelType>::hitProcessorPatch
@@ -296,7 +324,7 @@ void Foam::KinematicParcel<ParcelType>::hitWallPatch
     TrackData& td
 )
 {
-    td.cloud().wallInteraction().correct(wpp, this->face(), U_);
+    // Wall interactions handled by generic hitPatch function
 }
 
 
@@ -322,19 +350,12 @@ void Foam::KinematicParcel<ParcelType>::hitPatch
 
 
 template<class ParcelType>
-void Foam::KinematicParcel<ParcelType>::hitPatch
-(
-    const polyPatch&,
-    int&
-)
+void Foam::KinematicParcel<ParcelType>::hitPatch(const polyPatch&, int&)
 {}
 
 
 template<class ParcelType>
-void Foam::KinematicParcel<ParcelType>::transformProperties
-(
-    const tensor& T
-)
+void Foam::KinematicParcel<ParcelType>::transformProperties(const tensor& T)
 {
     Particle<ParcelType>::transformProperties(T);
     U_ = transform(T, U_);
@@ -351,7 +372,7 @@ void Foam::KinematicParcel<ParcelType>::transformProperties
 }
 
 
-// * * * * * * * * * * * * * * * *  IOStream operators * * * * * * * * * * * //
+// * * * * * * * * * * * * * * IOStream operators  * * * * * * * * * * * * * //
 
 #include "KinematicParcelIO.C"
 
diff --git a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.H b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.H
index 34c66a89334f6231c81f00d7e0937ba05ac33bbc..049ab26bac5569c8f4bf98716ef9309ff10b5f9d 100644
--- a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.H
+++ b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.H
@@ -31,7 +31,7 @@ Description
 
     Sub-models include:
     - drag
-    - break-up
+    - turbulent dispersion
     - wall interactions
 
 SourceFiles
@@ -79,15 +79,19 @@ class KinematicParcel
 :
     public Particle<ParcelType>
 {
-
 public:
 
     //- Class to hold kinematic particle constant properties
     class constantProperties
     {
-
         // Private data
 
+            //- Constant properties dictionary
+            const dictionary dict_;
+
+            //- Minimum density [kg/m3]
+            const scalar rhoMin_;
+
             //- Particle density [kg/m3] (constant)
             const scalar rho0_;
 
@@ -98,10 +102,16 @@ public:
     public:
 
         //- Constructor
-        constantProperties(const dictionary& dict);
+        constantProperties(const dictionary& parentDict);
 
         // Member functions
 
+            //- Return const access to the constant properties dictionary
+            inline const dictionary& dict() const;
+
+            //- Return const access to the minimum density
+            inline scalar rhoMin() const;
+
             //- Return const access to the particle density
             inline scalar rho0() const;
 
@@ -115,7 +125,6 @@ public:
     :
         public Particle<ParcelType>::trackData
     {
-
         // Private data
 
             //- Reference to the cloud containing this particle
@@ -183,22 +192,22 @@ public:
 
 protected:
 
-    // Protected member data
+    // Protected data
 
         // Parcel properties
 
             //- Parcel type id
             label typeId_;
 
+            //- Number of particles in Parcel
+            scalar nParticle_;
+
             //- Diameter [m]
             scalar d_;
 
             //- Velocity of Parcel [m/s]
             vector U_;
 
-            //- Number of particles in Parcel
-            scalar nParticle_;
-
             //- Density [kg/m3]
             scalar rho_;
 
@@ -211,13 +220,13 @@ protected:
 
         // Cell-based quantities
 
-            // - Density [kg/m3]
+            //- Density [kg/m3]
             scalar rhoc_;
 
-            // - Velocity [m/s]
+            //- Velocity [m/s]
             vector Uc_;
 
-            // - Viscosity [Pa.s]
+            //- Viscosity [Pa.s]
             scalar muc_;
 
 
@@ -225,35 +234,55 @@ protected:
 
         //- Calculate new particle velocity
         template<class TrackData>
-        vector calcVelocity
+        const vector calcVelocity
         (
             TrackData& td,
-            const scalar dt,
-            scalar& Cud,
-            vector& dUTrans
-        );
+            const scalar dt,           // timestep
+            const label cellI,         // owner cell
+            const scalar d,            // diameter
+            const vector& U,           // velocity
+            const scalar rho,          // density
+            const scalar mass,         // mass
+            const vector& Su,          // explicit particle momentum source
+            vector& dUTrans            // momentum transfer to carrier
+        ) const;
 
 
 public:
 
-    //- Runtime type information
-    TypeName("KinematicParcel");
+    // Static data members
+
+        //- String representation of properties
+        static string propHeader;
+
+        //- Runtime type information
+        TypeName("KinematicParcel");
+
 
     friend class Cloud<ParcelType>;
 
 
     // Constructors
 
+        //- Construct from owner, position, and cloud owner
+        //  Other properties initialised as null
+        inline KinematicParcel
+        (
+            KinematicCloud<ParcelType>& owner,
+            const vector& position,
+            const label cellI
+        );
+
         //- Construct from components
         inline KinematicParcel
         (
             KinematicCloud<ParcelType>& owner,
-            const label typeId,
             const vector& position,
-            const label celli,
+            const label cellI,
+            const label typeId,
+            const scalar nParticle0,
             const scalar d0,
             const vector& U0,
-            const scalar nParticle0,
             const constantProperties& constProps
         );
 
@@ -265,10 +294,13 @@ public:
             bool readFields = true
         );
 
+        //- Construct as a copy
+        KinematicParcel(const KinematicParcel& p);
+
         //- Construct and return a clone
-        autoPtr<ParcelType> clone() const
+        autoPtr<KinematicParcel> clone() const
         {
-            return autoPtr<ParcelType>(new KinematicParcel<ParcelType>(*this));
+            return autoPtr<KinematicParcel>(new KinematicParcel(*this));
         }
 
 
@@ -276,21 +308,18 @@ public:
 
         // Access
 
-            //- Return type id
+            //- Return const access to type id
             inline label typeId() const;
 
+            //- Return const access to number of particles
+            inline scalar nParticle() const;
+
             //- Return const access to diameter
             inline scalar d() const;
 
             //- Return const access to velocity
             inline const vector& U() const;
 
-            //- Return const access to relative velocity
-            inline const vector& Ur() const;
-
-            //- Return const access to number of particles
-            inline scalar nParticle() const;
-
             //- Return const access to density
             inline scalar rho() const;
 
@@ -300,25 +329,21 @@ public:
             //- Return const access to turbulent velocity fluctuation
             inline const vector& UTurb() const;
 
-            //- The nearest distance to a wall that
-            //  the particle can be in the n direction
-            inline scalar wallImpactDistance(const vector& n) const;
-
 
         // Edit
 
+            //- Return access to type id
+            inline label typeId();
+
+            //- Return access to number of particles
+            inline scalar& nParticle();
+
             //- Return access to diameter
             inline scalar& d();
 
             //- Return access to velocity
             inline vector& U();
 
-            //- Return access to relative velocity
-            inline vector& Ur();
-
-            //- Return access to number of particles
-            inline scalar& nParticle();
-
             //- Return access to density
             inline scalar& rho();
 
@@ -331,50 +356,66 @@ public:
 
         // Helper functions
 
+            //- The nearest distance to a wall that
+            //  the particle can be in the n direction
+            inline scalar wallImpactDistance(const vector& n) const;
+
             //- Return the index of the face to be used in the interpolation
             //  routine
             inline label faceInterpolation() const;
 
-            //- Particle volume
-            inline scalar volume() const;
+            //- Cell owner mass
+            inline scalar massCell(const label cellI) const;
 
             //- Particle mass
             inline scalar mass() const;
 
+            //- Particle volume
+            inline scalar volume() const;
+
+            //- Particle volume for a given diameter
+            inline scalar volume(const scalar d) const;
+
             //- Particle projected area
             inline scalar areaP() const;
 
+            //- Projected area for given diameter
+            inline scalar areaP(const scalar d) const;
+
             //- Particle surface area
             inline scalar areaS() const;
 
+            //- Surface area for given diameter
+            inline scalar areaS(const scalar d) const;
+
 
         // Main calculation loop
 
-            //- Update cell based quantities
+            //- Set cell values
             template<class TrackData>
-            void updateCellQuantities
+            void setCellValues
             (
                 TrackData& td,
                 const scalar dt,
-                const label celli
+                const label cellI
             );
 
-            //- Coupled calculation with the continuous phase
+            //- Correct cell values using latest transfer information
             template<class TrackData>
-            void calcCoupled
+            void cellValueSourceCorrection
             (
                 TrackData& td,
                 const scalar dt,
-                const label celli
+                const label cellI
             );
 
-            //- Uncoupled calculation with the continuous phase
+            //- Update parcel properties over the time interval
             template<class TrackData>
-            void calcUncoupled
+            void calc
             (
                 TrackData& td,
                 const scalar dt,
-                const label
+                const label cellI
             );
 
 
@@ -387,6 +428,27 @@ public:
 
         // Patch interactions
 
+            //- Overridable function to handle the particle hitting a patch
+            //  Executed before other patch-hitting functions
+            template<class TrackData>
+            bool hitPatch
+            (
+                const polyPatch& p,
+                TrackData& td,
+                const label patchI
+            );
+
+
+            //- Overridable function to handle the particle hitting a patch
+            //  Executed before other patch-hitting functions without trackData
+            bool hitPatch
+            (
+                const polyPatch& p,
+                int& td,
+                const label patchI
+            );
+
+
             //- Overridable function to handle the particle hitting a
             //  processorPatch
             template<class TrackData>
@@ -447,8 +509,10 @@ public:
 
         // I-O
 
+            //- Read
             static void readFields(KinematicCloud<ParcelType>& c);
 
+            //- Write
             static void writeFields(const KinematicCloud<ParcelType>& c);
 
 
diff --git a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcelI.H b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcelI.H
index 4b4ec3cce77c1a9adafb941257312962c2a96301..e0d927153780af56e42ac11af2db03636bd583b0 100644
--- a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcelI.H
+++ b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcelI.H
@@ -29,11 +29,16 @@ License
 template <class ParcelType>
 inline Foam::KinematicParcel<ParcelType>::constantProperties::constantProperties
 (
-    const dictionary& dict
+    const dictionary& parentDict
 )
 :
-    rho0_(dimensionedScalar(dict.lookup("rho0")).value()),
-    minParticleMass_(dimensionedScalar(dict.lookup("minParticleMass")).value())
+    dict_(parentDict.subDict("constantProperties")),
+    rhoMin_(dimensionedScalar(dict_.lookup("rhoMin")).value()),
+    rho0_(dimensionedScalar(dict_.lookup("rho0")).value()),
+    minParticleMass_
+    (
+        dimensionedScalar(dict_.lookup("minParticleMass")).value()
+    )
 {}
 
 
@@ -62,20 +67,42 @@ template <class ParcelType>
 inline Foam::KinematicParcel<ParcelType>::KinematicParcel
 (
     KinematicCloud<ParcelType>& owner,
-    const label typeId,
     const vector& position,
-    const label celli,
+    const label cellI
+)
+:
+    Particle<ParcelType>(owner, position, cellI),
+    typeId_(owner.parcelTypeId()),
+    nParticle_(0),
+    d_(0.0),
+    U_(vector::zero),
+    rho_(0.0),
+    tTurb_(0.0),
+    UTurb_(vector::zero),
+    rhoc_(0.0),
+    Uc_(vector::zero),
+    muc_(0.0)
+{}
+
+
+template <class ParcelType>
+inline Foam::KinematicParcel<ParcelType>::KinematicParcel
+(
+    KinematicCloud<ParcelType>& owner,
+    const vector& position,
+    const label cellI,
+    const label typeId,
+    const scalar nParticle0,
     const scalar d0,
     const vector& U0,
-    const scalar nParticle0,
     const constantProperties& constProps
 )
 :
-    Particle<ParcelType>(owner, position, celli),
+    Particle<ParcelType>(owner, position, cellI),
     typeId_(typeId),
+    nParticle_(nParticle0),
     d_(d0),
     U_(U0),
-    nParticle_(nParticle0),
     rho_(constProps.rho0()),
     tTurb_(0.0),
     UTurb_(vector::zero),
@@ -87,6 +114,22 @@ inline Foam::KinematicParcel<ParcelType>::KinematicParcel
 
 // * * * * * * * * * constantProperties Member Functions * * * * * * * * * * //
 
+template <class ParcelType>
+inline const Foam::dictionary&
+Foam::KinematicParcel<ParcelType>::constantProperties::dict() const
+{
+    return dict_;
+}
+
+
+template <class ParcelType>
+inline Foam::scalar
+Foam::KinematicParcel<ParcelType>::constantProperties::rhoMin() const
+{
+    return rhoMin_;
+}
+
+
 template <class ParcelType>
 inline Foam::scalar
 Foam::KinematicParcel<ParcelType>::constantProperties::rho0() const
@@ -163,62 +206,51 @@ inline Foam::label Foam::KinematicParcel<ParcelType>::typeId() const
 
 
 template <class ParcelType>
-inline Foam::scalar Foam::KinematicParcel<ParcelType>::d() const
+inline Foam::scalar Foam::KinematicParcel<ParcelType>::nParticle() const
 {
-    return d_;
+    return nParticle_;
 }
 
 
 template <class ParcelType>
-inline Foam::scalar& Foam::KinematicParcel<ParcelType>::d()
+inline Foam::scalar Foam::KinematicParcel<ParcelType>::d() const
 {
     return d_;
 }
 
 
 template <class ParcelType>
-inline Foam::scalar Foam::KinematicParcel<ParcelType>::wallImpactDistance
-(
-    const vector&
-) const
+inline const Foam::vector& Foam::KinematicParcel<ParcelType>::U() const
 {
-    return 0.5*d_;
+    return U_;
 }
 
 
 template <class ParcelType>
-inline Foam::label Foam::KinematicParcel<ParcelType>::faceInterpolation() const
+inline Foam::scalar Foam::KinematicParcel<ParcelType>::rho() const
 {
-    // Use volume-based interpolation if dealing with external faces
-    if (this->cloud().internalFace(this->face()))
-    {
-        return this->face();
-    }
-    else
-    {
-        return -1;
-    }
+    return rho_;
 }
 
 
 template <class ParcelType>
-inline const Foam::vector& Foam::KinematicParcel<ParcelType>::U() const
+inline Foam::scalar Foam::KinematicParcel<ParcelType>::tTurb() const
 {
-    return U_;
+    return tTurb_;
 }
 
 
 template <class ParcelType>
-inline Foam::vector& Foam::KinematicParcel<ParcelType>::U()
+inline const Foam::vector& Foam::KinematicParcel<ParcelType>::UTurb() const
 {
-    return U_;
+    return UTurb_;
 }
 
 
 template <class ParcelType>
-inline Foam::scalar Foam::KinematicParcel<ParcelType>::nParticle() const
+inline Foam::label Foam::KinematicParcel<ParcelType>::typeId()
 {
-    return nParticle_;
+    return typeId_;
 }
 
 
@@ -230,23 +262,23 @@ inline Foam::scalar& Foam::KinematicParcel<ParcelType>::nParticle()
 
 
 template <class ParcelType>
-inline Foam::scalar Foam::KinematicParcel<ParcelType>::rho() const
+inline Foam::scalar& Foam::KinematicParcel<ParcelType>::d()
 {
-    return rho_;
+    return d_;
 }
 
 
 template <class ParcelType>
-inline Foam::scalar& Foam::KinematicParcel<ParcelType>::rho()
+inline Foam::vector& Foam::KinematicParcel<ParcelType>::U()
 {
-    return rho_;
+    return U_;
 }
 
 
 template <class ParcelType>
-inline Foam::scalar Foam::KinematicParcel<ParcelType>::tTurb() const
+inline Foam::scalar& Foam::KinematicParcel<ParcelType>::rho()
 {
-    return tTurb_;
+    return rho_;
 }
 
 
@@ -258,23 +290,44 @@ inline Foam::scalar& Foam::KinematicParcel<ParcelType>::tTurb()
 
 
 template <class ParcelType>
-inline const Foam::vector& Foam::KinematicParcel<ParcelType>::UTurb() const
+inline Foam::vector& Foam::KinematicParcel<ParcelType>::UTurb()
 {
     return UTurb_;
 }
 
 
 template <class ParcelType>
-inline Foam::vector& Foam::KinematicParcel<ParcelType>::UTurb()
+inline Foam::scalar Foam::KinematicParcel<ParcelType>::wallImpactDistance
+(
+    const vector&
+) const
 {
-    return UTurb_;
+    return 0.5*d_;
 }
 
 
 template <class ParcelType>
-inline Foam::scalar Foam::KinematicParcel<ParcelType>::volume() const
+inline Foam::label Foam::KinematicParcel<ParcelType>::faceInterpolation() const
 {
-    return mathematicalConstant::pi/6.0*pow3(d_);
+    // Use volume-based interpolation if dealing with external faces
+    if (this->cloud().internalFace(this->face()))
+    {
+        return this->face();
+    }
+    else
+    {
+        return -1;
+    }
+}
+
+
+template <class ParcelType>
+inline Foam::scalar Foam::KinematicParcel<ParcelType>::massCell
+(
+    const label cellI
+) const
+{
+    return rhoc_*this->cloud().pMesh().cellVolumes()[cellI];
 }
 
 
@@ -285,17 +338,48 @@ inline Foam::scalar Foam::KinematicParcel<ParcelType>::mass() const
 }
 
 
+template <class ParcelType>
+inline Foam::scalar Foam::KinematicParcel<ParcelType>::volume() const
+{
+    return volume(d_);
+}
+
+
+template <class ParcelType>
+inline Foam::scalar
+Foam::KinematicParcel<ParcelType>::volume(const scalar d) const
+{
+    return mathematicalConstant::pi/6.0*pow3(d);
+}
+
+
 template <class ParcelType>
 inline Foam::scalar Foam::KinematicParcel<ParcelType>::areaP() const
 {
-    return 0.25*areaS();
+    return areaP(d_);
+}
+
+
+template <class ParcelType>
+inline Foam::scalar
+Foam::KinematicParcel<ParcelType>::areaP(const scalar d) const
+{
+    return 0.25*areaS(d);
 }
 
 
 template <class ParcelType>
 inline Foam::scalar Foam::KinematicParcel<ParcelType>::areaS() const
 {
-    return mathematicalConstant::pi*d_*d_;
+    return areaS(d_);
+}
+
+
+template <class ParcelType>
+inline Foam::scalar
+Foam::KinematicParcel<ParcelType>::areaS(const scalar d) const
+{
+    return mathematicalConstant::pi*d*d;
 }
 
 
diff --git a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcelIO.C b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcelIO.C
index 36535ab6a09a5621656db29f1be3cc68a8626873..c69199cfb7ce7887bc0ae6212057b8ac6ed3974e 100644
--- a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcelIO.C
+++ b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcelIO.C
@@ -29,6 +29,20 @@ License
 #include "IOField.H"
 #include "Cloud.H"
 
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+template <class ParcelType>
+Foam::string Foam::KinematicParcel<ParcelType>::propHeader =
+    Particle<ParcelType>::propHeader
+  + " typeId"
+  + " nParticle"
+  + " d"
+  + " (Ux Uy Uz)"
+  + " rho"
+  + " tTurb"
+  + " UTurb";
+
+
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
 template <class ParcelType>
@@ -41,9 +55,9 @@ Foam::KinematicParcel<ParcelType>::KinematicParcel
 :
     Particle<ParcelType>(cloud, is, readFields),
     typeId_(0),
+    nParticle_(0.0),
     d_(0.0),
     U_(vector::zero),
-    nParticle_(0.0),
     rho_(0.0),
     tTurb_(0.0),
     UTurb_(vector::zero),
@@ -56,9 +70,9 @@ Foam::KinematicParcel<ParcelType>::KinematicParcel
         if (is.format() == IOstream::ASCII)
         {
             typeId_ = readLabel(is);
+            nParticle_ = readScalar(is);
             d_ = readScalar(is);
             is >> U_;
-            nParticle_ = readScalar(is);
             rho_ = readScalar(is);
             tTurb_ = readScalar(is);
             is >> UTurb_;
@@ -69,9 +83,9 @@ Foam::KinematicParcel<ParcelType>::KinematicParcel
             (
                 reinterpret_cast<char*>(&typeId_),
                 sizeof(typeId_)
+              + sizeof(nParticle_)
               + sizeof(d_)
               + sizeof(U_)
-              + sizeof(nParticle_)
               + sizeof(rho_)
               + sizeof(tTurb_)
               + sizeof(UTurb_)
@@ -102,15 +116,16 @@ void Foam::KinematicParcel<ParcelType>::readFields
     IOField<label> typeId(c.fieldIOobject("typeId", IOobject::MUST_READ));
     c.checkFieldIOobject(c, typeId);
 
+    IOField<scalar>
+        nParticle(c.fieldIOobject("nParticle", IOobject::MUST_READ));
+    c.checkFieldIOobject(c, nParticle);
+
     IOField<scalar> d(c.fieldIOobject("d", IOobject::MUST_READ));
     c.checkFieldIOobject(c, d);
 
     IOField<vector> U(c.fieldIOobject("U", IOobject::MUST_READ));
     c.checkFieldIOobject(c, U);
 
-    IOField<scalar> nParticle(c.fieldIOobject("nParticle", IOobject::MUST_READ));
-    c.checkFieldIOobject(c, nParticle);
-
     IOField<scalar> rho(c.fieldIOobject("rho", IOobject::MUST_READ));
     c.checkFieldIOobject(c, rho);
 
@@ -126,9 +141,9 @@ void Foam::KinematicParcel<ParcelType>::readFields
         ParcelType& p = iter();
 
         p.typeId_ = typeId[i];
+        p.nParticle_ = nParticle[i];
         p.d_ = d[i];
         p.U_ = U[i];
-        p.nParticle_ = nParticle[i];
         p.rho_ = rho[i];
         p.tTurb_ = tTurb[i];
         p.UTurb_ = UTurb[i];
@@ -148,13 +163,13 @@ void Foam::KinematicParcel<ParcelType>::writeFields
     label np =  c.size();
 
     IOField<label> typeId(c.fieldIOobject("typeId", IOobject::NO_READ), np);
-    IOField<scalar> d(c.fieldIOobject("d", IOobject::NO_READ), np);
-    IOField<vector> U(c.fieldIOobject("U", IOobject::NO_READ), np);
     IOField<scalar> nParticle
     (
         c.fieldIOobject("nParticle", IOobject::NO_READ),
         np
     );
+    IOField<scalar> d(c.fieldIOobject("d", IOobject::NO_READ), np);
+    IOField<vector> U(c.fieldIOobject("U", IOobject::NO_READ), np);
     IOField<scalar> rho(c.fieldIOobject("rho", IOobject::NO_READ), np);
     IOField<scalar> tTurb(c.fieldIOobject("tTurb", IOobject::NO_READ), np);
     IOField<vector> UTurb(c.fieldIOobject("UTurb", IOobject::NO_READ), np);
@@ -165,9 +180,9 @@ void Foam::KinematicParcel<ParcelType>::writeFields
         const KinematicParcel<ParcelType>& p = iter();
 
         typeId[i] = p.typeId();
+        nParticle[i] = p.nParticle();
         d[i] = p.d();
         U[i] = p.U();
-        nParticle[i] = p.nParticle();
         rho[i] = p.rho();
         tTurb[i] = p.tTurb();
         UTurb[i] = p.UTurb();
@@ -175,9 +190,9 @@ void Foam::KinematicParcel<ParcelType>::writeFields
     }
 
     typeId.write();
+    nParticle.write();
     d.write();
     U.write();
-    nParticle.write();
     rho.write();
     tTurb.write();
     UTurb.write();
@@ -195,25 +210,25 @@ Foam::Ostream& Foam::operator<<
 {
     if (os.format() == IOstream::ASCII)
     {
-        os  << static_cast<const Particle<ParcelType>& >(p)
+        os  << static_cast<const Particle<ParcelType>&>(p)
             << token::SPACE << p.typeId()
+            << token::SPACE << p.nParticle()
             << token::SPACE << p.d()
             << token::SPACE << p.U()
-            << token::SPACE << p.nParticle()
             << token::SPACE << p.rho()
             << token::SPACE << p.tTurb()
             << token::SPACE << p.UTurb();
     }
     else
     {
-        os  << static_cast<const Particle<ParcelType>& >(p);
+        os  << static_cast<const Particle<ParcelType>&>(p);
         os.write
         (
             reinterpret_cast<const char*>(&p.typeId_),
             sizeof(p.typeId())
+          + sizeof(p.nParticle())
           + sizeof(p.d())
           + sizeof(p.U())
-          + sizeof(p.nParticle())
           + sizeof(p.rho())
           + sizeof(p.tTurb())
           + sizeof(p.UTurb())
diff --git a/src/lagrangian/intermediate/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcel.C b/src/lagrangian/intermediate/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcel.C
new file mode 100644
index 0000000000000000000000000000000000000000..682cad335ad2c0c9ad36aa89c11f5799adfc47dc
--- /dev/null
+++ b/src/lagrangian/intermediate/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcel.C
@@ -0,0 +1,588 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "ReactingMultiphaseParcel.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+template<class ParcelType>
+const Foam::label Foam::ReactingMultiphaseParcel<ParcelType>::GAS(0);
+
+template<class ParcelType>
+const Foam::label Foam::ReactingMultiphaseParcel<ParcelType>::LIQ(1);
+
+template<class ParcelType>
+const Foam::label Foam::ReactingMultiphaseParcel<ParcelType>::SLD(2);
+
+
+// * * * * * * * * * * * *  Private Member Functions * * * * * * * * * * * * //
+
+template<class ParcelType>
+template<class TrackData>
+Foam::scalar Foam::ReactingMultiphaseParcel<ParcelType>::cpEff
+(
+    TrackData& td,
+    const scalar p,
+    const scalar T,
+    const label idG,
+    const label idL,
+    const label idS
+) const
+{
+    return
+        this->Y_[GAS]*td.cloud().composition().cp(idG, YGas_, p, T)
+      + this->Y_[LIQ]*td.cloud().composition().cp(idL, YLiquid_, p, T)
+      + this->Y_[SLD]*td.cloud().composition().cp(idS, YSolid_, p, T);
+}
+
+
+template<class ParcelType>
+template<class TrackData>
+Foam::scalar Foam::ReactingMultiphaseParcel<ParcelType>::HEff
+(
+    TrackData& td,
+    const scalar p,
+    const scalar T,
+    const label idG,
+    const label idL,
+    const label idS
+) const
+{
+    return
+        this->Y_[GAS]*td.cloud().composition().H(idG, YGas_, p, T)
+      + this->Y_[LIQ]*td.cloud().composition().H(idL, YLiquid_, p, T)
+      + this->Y_[SLD]*td.cloud().composition().H(idS, YSolid_, p, T);
+}
+
+
+template<class ParcelType>
+template<class TrackData>
+Foam::scalar Foam::ReactingMultiphaseParcel<ParcelType>::LEff
+(
+    TrackData& td,
+    const scalar p,
+    const scalar T,
+    const label idG,
+    const label idL,
+    const label idS
+) const
+{
+    return
+        this->Y_[GAS]*td.cloud().composition().L(idG, YGas_, p, T)
+      + this->Y_[LIQ]*td.cloud().composition().L(idL, YLiquid_, p, T)
+      + this->Y_[SLD]*td.cloud().composition().L(idS, YSolid_, p, T);
+}
+
+
+template<class ParcelType>
+Foam::scalar Foam::ReactingMultiphaseParcel<ParcelType>::updateMassFractions
+(
+    const scalar mass0,
+    const scalarField& dMassGas,
+    const scalarField& dMassLiquid,
+    const scalarField& dMassSolid
+)
+{
+    scalarField& YMix = this->Y_;
+
+    scalar massGas =
+        this->updateMassFraction(mass0*YMix[GAS], dMassGas, YGas_);
+    scalar massLiquid =
+        this->updateMassFraction(mass0*YMix[LIQ], dMassLiquid, YLiquid_);
+    scalar massSolid =
+        this->updateMassFraction(mass0*YMix[SLD], dMassSolid, YSolid_);
+
+    scalar massNew = max(massGas + massLiquid + massSolid, ROOTVSMALL);
+
+    YMix[GAS] = massGas/massNew;
+    YMix[LIQ] = massLiquid/massNew;
+    YMix[SLD] = 1.0 - YMix[GAS] - YMix[LIQ];
+
+    return massNew;
+}
+
+
+// * * * * * * * * * * *  Protected Member Functions * * * * * * * * * * * * //
+
+template<class ParcelType>
+template<class TrackData>
+void Foam::ReactingMultiphaseParcel<ParcelType>::setCellValues
+(
+    TrackData& td,
+    const scalar dt,
+    const label cellI
+)
+{
+    ReactingParcel<ParcelType>::setCellValues(td, dt, cellI);
+}
+
+
+template<class ParcelType>
+template<class TrackData>
+void Foam::ReactingMultiphaseParcel<ParcelType>::cellValueSourceCorrection
+(
+    TrackData& td,
+    const scalar dt,
+    const label cellI
+)
+{
+    scalar massCell = this->massCell(cellI);
+
+    scalar addedMass = 0.0;
+    forAll(td.cloud().rhoTrans(), i)
+    {
+        addedMass += td.cloud().rhoTrans(i)[cellI];
+    }
+
+    this->rhoc_ += addedMass/td.cloud().pMesh().cellVolumes()[cellI];
+
+    scalar massCellNew = massCell + addedMass;
+    this->Uc_ += td.cloud().UTrans()[cellI]/massCellNew;
+
+    scalar cpEff = 0;
+    if (addedMass > ROOTVSMALL)
+    {
+        forAll(td.cloud().rhoTrans(), i)
+        {
+            scalar Y = td.cloud().rhoTrans(i)[cellI]/addedMass;
+            cpEff +=
+                Y*td.cloud().mcCarrierThermo().speciesData()[i].Cp(this->Tc_);
+        }
+    }
+    const scalar cpc = td.cpInterp().psi()[cellI];
+    this->cpc_ = (massCell*cpc + addedMass*cpEff)/massCellNew;
+
+    this->Tc_ += td.cloud().hsTrans()[cellI]/(this->cpc_*massCellNew);
+}
+
+
+template<class ParcelType>
+template<class TrackData>
+void Foam::ReactingMultiphaseParcel<ParcelType>::calc
+(
+    TrackData& td,
+    const scalar dt,
+    const label cellI
+)
+{
+    // Define local properties at beginning of timestep
+    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    const scalar np0 = this->nParticle_;
+    const scalar d0 = this->d_;
+    const vector& U0 = this->U_;
+    const scalar rho0 = this->rho_;
+    const scalar T0 = this->T_;
+    const scalar cp0 = this->cp_;
+    const scalar mass0 = this->mass();
+
+    const scalar pc = this->pc_;
+
+    const scalarField& YMix = this->Y_;
+    const label idG = td.cloud().composition().idGas();
+    const label idL = td.cloud().composition().idLiquid();
+    const label idS = td.cloud().composition().idSolid();
+
+    // Explicit momentum source for particle
+    vector Su = vector::zero;
+
+    // Momentum transfer from the particle to the carrier phase
+    vector dUTrans = vector::zero;
+
+    // Explicit enthalpy source for particle
+    scalar Sh = 0.0;
+
+    // Sensible enthalpy transfer from the particle to the carrier phase
+    scalar dhsTrans = 0.0;
+
+
+    // Devolatilisation
+    // ~~~~~~~~~~~~~~~~
+
+    // Mass transfer due to devolatilisation
+    scalarField dMassDV(YGas_.size(), 0.0);
+
+    // Calc mass and enthalpy transfer due to devolatilisation
+    calcDevolatilisation
+    (
+        td,
+        dt,
+        T0,
+        mass0,
+        this->mass0_,
+        idG,
+        YMix[GAS],
+        YGas_,
+        canCombust_,
+        dMassDV,
+        Sh,
+        dhsTrans
+    );
+
+
+    // Surface reactions
+    // ~~~~~~~~~~~~~~~~~
+
+    // Change in carrier phase composition due to surface reactions
+    scalarField dMassSRGas(YGas_.size(), 0.0);
+    scalarField dMassSRLiquid(YLiquid_.size(), 0.0);
+    scalarField dMassSRSolid(YSolid_.size(), 0.0);
+    scalarField
+        dMassSRCarrier
+        (
+            td.cloud().mcCarrierThermo().species().size(),
+            0.0
+        );
+
+    // Clac mass and enthalpy transfer due to surface reactions
+    calcSurfaceReactions
+    (
+        td,
+        dt,
+        cellI,
+        d0,
+        T0,
+        mass0,
+        canCombust_,
+        dMassDV,    // assuming d(mass) due to phase change is non-volatile
+        YMix,
+        YGas_,
+        YLiquid_,
+        YSolid_,
+        dMassSRGas,
+        dMassSRLiquid,
+        dMassSRSolid,
+        dMassSRCarrier,
+        Sh,
+        dhsTrans
+    );
+
+
+    // Phase change in liquid phase
+    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+    // Mass transfer due to phase change
+    scalarField dMassPC(YLiquid_.size(), 0.0);
+
+    // Calc mass and enthalpy transfer due to phase change
+    calcPhaseChange
+    (
+        td,
+        dt,
+        cellI,
+        d0,
+        T0,
+        U0,
+        mass0,
+        idL,
+        YMix[LIQ],
+        YLiquid_,
+        dMassPC,
+        Sh,
+        dhsTrans
+    );
+
+
+    // Update component mass fractions
+    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+    scalarField dMassGas = dMassDV + dMassSRGas;
+    scalarField dMassLiquid = dMassPC + dMassSRLiquid;
+    scalarField dMassSolid = dMassSRSolid;
+
+    scalar mass1 =
+        updateMassFractions(mass0, dMassGas, dMassLiquid, dMassSolid);
+
+
+    // Heat transfer
+    // ~~~~~~~~~~~~~
+
+    // Calculate new particle temperature
+    scalar T1 =
+        calcHeatTransfer(td, dt, cellI, d0, U0, rho0, T0, cp0, Sh, dhsTrans);
+
+
+    // Motion
+    // ~~~~~~
+
+    // Calculate new particle velocity
+    vector U1 = calcVelocity(td, dt, cellI, d0, U0, rho0, mass0, Su, dUTrans);
+
+    dUTrans += 0.5*(mass0 - mass1)*(U0 + U1);
+
+
+    // Accumulate carrier phase source terms
+    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+    if (td.cloud().coupled())
+    {
+        // Transfer mass lost from particle to carrier mass source
+        forAll(YGas_, i)
+        {
+            label gid = td.cloud().composition().localToGlobalCarrierId(GAS, i);
+            td.cloud().rhoTrans(gid)[cellI] += np0*dMassGas[i];
+            td.cloud().hcTrans()[cellI] +=
+                np0
+               *dMassGas[i]
+               *td.cloud().mcCarrierThermo().speciesData()[gid].H(T0);
+        }
+        forAll(YLiquid_, i)
+        {
+            label gid = td.cloud().composition().localToGlobalCarrierId(LIQ, i);
+            td.cloud().rhoTrans(gid)[cellI] += np0*dMassLiquid[i];
+            td.cloud().hcTrans()[cellI] +=
+                np0
+               *dMassLiquid[i]
+               *td.cloud().mcCarrierThermo().speciesData()[gid].H(T0);
+        }
+/*
+        // No mapping between solid components and carrier phase
+        forAll(YSolid_, i)
+        {
+            label gid = td.cloud().composition().localToGlobalCarrierId(SLD, i);
+            td.cloud().rhoTrans(gid)[cellI] += np0*dMassSolid[i];
+            td.cloud().hcTrans()[cellI] +=
+                np0
+               *dMassSolid[i]
+               *td.cloud().mcCarrierThermo().speciesData()[gid].H(T0);
+        }
+*/
+        forAll(dMassSRCarrier, i)
+        {
+            td.cloud().rhoTrans(i)[cellI] += np0*dMassSRCarrier[i];
+            td.cloud().hcTrans()[cellI] +=
+                np0
+               *dMassSRCarrier[i]
+               *td.cloud().mcCarrierThermo().speciesData()[i].H(T0);
+        }
+
+        // Update momentum transfer
+        td.cloud().UTrans()[cellI] += np0*dUTrans;
+
+        // Update sensible enthalpy transfer
+        td.cloud().hsTrans()[cellI] += np0*dhsTrans;
+    }
+
+
+    // Remove the particle when mass falls below minimum threshold
+    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+    if (mass1 < td.constProps().minParticleMass())
+    {
+        td.keepParticle = false;
+
+        if (td.cloud().coupled())
+        {
+            // Absorb parcel into carrier phase
+            forAll(YGas_, i)
+            {
+                label gid =
+                    td.cloud().composition().localToGlobalCarrierId(GAS, i);
+                td.cloud().rhoTrans(gid)[cellI] += np0*mass1*YMix[GAS]*YGas_[i];
+            }
+            forAll(YLiquid_, i)
+            {
+                label gid =
+                    td.cloud().composition().localToGlobalCarrierId(LIQ, i);
+                td.cloud().rhoTrans(gid)[cellI] +=
+                    np0*mass1*YMix[LIQ]*YLiquid_[i];
+            }
+/*
+            // No mapping between solid components and carrier phase
+            forAll(YSolid_, i)
+            {
+                label gid =
+                    td.cloud().composition().localToGlobalCarrierId(SLD, i);
+                td.cloud().rhoTrans(gid)[cellI] +=
+                    np0*mass1*YMix[SLD]*YSolid_[i];
+            }
+*/
+            td.cloud().UTrans()[cellI] += np0*mass1*U1;
+            td.cloud().hsTrans()[cellI] +=
+                np0*mass1*HEff(td, pc, T1, idG, idL, idS);
+        }
+    }
+
+
+    // Set new particle properties
+    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+    else
+    {
+        this->cp_ = cpEff(td, pc, T1, idG, idL, idS);
+        this->T_ = T1;
+        this->U_ = U1;
+
+        // Update particle density or diameter
+        if (td.constProps().constantVolume())
+        {
+            this->rho_ = mass1/this->volume();
+        }
+        else
+        {
+            this->d_ = cbrt(mass1/this->rho_*6.0/mathematicalConstant::pi);
+        }
+    }
+}
+
+
+template<class ParcelType>
+template<class TrackData>
+void Foam::ReactingMultiphaseParcel<ParcelType>::calcDevolatilisation
+(
+    TrackData& td,
+    const scalar dt,
+    const scalar T,
+    const scalar mass,
+    const scalar mass0,
+    const label idVolatile,
+    const scalar YVolatileTot,
+    const scalarField& YVolatile,
+    bool& canCombust,
+    scalarField& dMassDV,
+    scalar& Sh,
+    scalar& dhsTrans
+) const
+{
+    // Check that model is active, and that the parcel temperature is
+    // within necessary limits for devolatilisation to occur
+    if
+    (
+        !td.cloud().devolatilisation().active()
+     || T < td.constProps().Tvap()
+    )
+    {
+        return;
+    }
+
+    // Total mass of volatiles evolved
+    const scalar dMassTot = td.cloud().devolatilisation().calculate
+    (
+        dt,
+        mass0,
+        mass,
+        T,
+        td.cloud().composition().YMixture0()[idVolatile],
+        YVolatileTot,
+        canCombust
+    );
+
+    // Volatile mass transfer - equal components of each volatile specie
+    dMassDV = YVolatile*dMassTot;
+
+    td.cloud().addToMassDevolatilisation(this->nParticle_*dMassTot);
+
+    Sh -= dMassTot*td.constProps().LDevol()/dt;
+}
+
+
+template<class ParcelType>
+template<class TrackData>
+void Foam::ReactingMultiphaseParcel<ParcelType>::calcSurfaceReactions
+(
+    TrackData& td,
+    const scalar dt,
+    const label cellI,
+    const scalar d,
+    const scalar T,
+    const scalar mass,
+    const bool canCombust,
+    const scalarField& dMassVolatile,
+    const scalarField& YMix,
+    const scalarField& YGas,
+    const scalarField& YLiquid,
+    const scalarField& YSolid,
+    scalarField& dMassSRGas,
+    scalarField& dMassSRLiquid,
+    scalarField& dMassSRSolid,
+    scalarField& dMassSRCarrier,
+    scalar& Sh,
+    scalar& dhsTrans
+) const
+{
+    // Check that model is active
+    if (!td.cloud().surfaceReaction().active() || !canCombust)
+    {
+        return;
+    }
+
+    // Update surface reactions
+    const scalar hReaction = td.cloud().surfaceReaction().calculate
+    (
+        dt,
+        cellI,
+        d,
+        T,
+        this->Tc_,
+        this->pc_,
+        this->rhoc_,
+        mass,
+        YGas,
+        YLiquid,
+        YSolid,
+        YMix,
+        dMassVolatile,
+        dMassSRGas,
+        dMassSRLiquid,
+        dMassSRSolid,
+        dMassSRCarrier
+    );
+
+    td.cloud().addToMassSurfaceReaction
+    (
+        this->nParticle_
+       *(sum(dMassSRGas) + sum(dMassSRLiquid) + sum(dMassSRSolid))
+    );
+
+    const scalar xsi = min(T/5000.0, 1.0);
+    const scalar hRetentionCoeffMod =
+        (1.0 - xsi*xsi)*td.constProps().hRetentionCoeff();
+
+    Sh += hRetentionCoeffMod *hReaction/dt;
+
+    dhsTrans += (1.0 - hRetentionCoeffMod)*hReaction;
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template <class ParcelType>
+Foam::ReactingMultiphaseParcel<ParcelType>::ReactingMultiphaseParcel
+(
+    const ReactingMultiphaseParcel<ParcelType>& p
+)
+:
+    ReactingParcel<ParcelType>(p),
+    YGas_(p.YGas_),
+    YLiquid_(p.YLiquid_),
+    YSolid_(p.YSolid_)
+{}
+
+
+// * * * * * * * * * * * * * * IOStream operators  * * * * * * * * * * * * * //
+
+#include "ReactingMultiphaseParcelIO.C"
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcel.H b/src/lagrangian/intermediate/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcel.H
new file mode 100644
index 0000000000000000000000000000000000000000..e4e311ed90c37ac860a52be6c7a3332ef5c11913
--- /dev/null
+++ b/src/lagrangian/intermediate/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcel.H
@@ -0,0 +1,434 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::ReactingMultiphaseParcel
+
+Description
+    Multiphase variant of the reacting parcel class with one/two-way coupling
+    with the continuous phase.
+
+SourceFiles
+    ReactingMultiphaseParcelI.H
+    ReactingMultiphaseParcel.C
+    ReactingMultiphaseParcelIO.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef ReactingMultiphaseParcel_H
+#define ReactingMultiphaseParcel_H
+
+#include "ReactingParcel.H"
+#include "ReactingMultiphaseCloud.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+template<class ParcelType>
+class ReactingMultiphaseParcel;
+
+template<class ParcelType>
+Ostream& operator<<
+(
+    Ostream&,
+    const ReactingMultiphaseParcel<ParcelType>&
+);
+
+/*---------------------------------------------------------------------------*\
+                 Class ReactingMultiphaseParcel Declaration
+\*---------------------------------------------------------------------------*/
+
+template<class ParcelType>
+class ReactingMultiphaseParcel
+:
+    public ReactingParcel<ParcelType>
+{
+public:
+
+    // IDs of phases in ReacingParcel phase list (Y)
+
+        static const label GAS;
+        static const label LIQ;
+        static const label SLD;
+
+
+    //- Class to hold reacting multiphase particle constant properties
+    class constantProperties
+    :
+        public ReactingParcel<ParcelType>::constantProperties
+    {
+        // Private data
+
+            //- Latent heat of devolatilisation [J/kg]
+            const scalar LDevol_;
+
+            //- Fraction of enthalpy retained by parcel due to surface
+            //  reactions
+            scalar hRetentionCoeff_;
+
+
+    public:
+
+        //- Constructor
+        constantProperties(const dictionary& parentDict);
+
+        // Access
+
+            //- Return const access to the latent heat of devolatilisation
+            inline scalar LDevol() const;
+
+            //- Return const access to the fraction of enthalpy retained by
+            //  parcel due to surface reactions
+            inline scalar hRetentionCoeff() const;
+    };
+
+
+    //- Class used to pass reacting tracking data to the trackToFace function
+    class trackData
+    :
+        public ReactingParcel<ParcelType>::trackData
+    {
+        // Private data
+
+            //- Reference to the cloud containing this particle
+            ReactingMultiphaseCloud<ParcelType>& cloud_;
+
+            //- Particle constant properties
+            const constantProperties& constProps_;
+
+
+    public:
+
+        // Constructors
+
+            //- Construct from components
+            inline trackData
+            (
+                ReactingMultiphaseCloud<ParcelType>& cloud,
+                const constantProperties& constProps,
+                const interpolation<scalar>& rhoInterp,
+                const interpolation<vector>& UInterp,
+                const interpolation<scalar>& muInterp,
+                const interpolation<scalar>& TInterp,
+                const interpolation<scalar>& CpInterp,
+                const interpolation<scalar>& pInterp,
+                const vector& g
+            );
+
+
+        // Member functions
+
+            //- Return access to the owner cloud
+            inline ReactingMultiphaseCloud<ParcelType>& cloud();
+
+            //- Return const access to the constant properties
+            inline const constantProperties& constProps() const;
+    };
+
+
+private:
+
+    // Private member functions
+
+        //- Return the mixture effective specific heat capacity
+        template<class TrackData>
+        scalar cpEff
+        (
+            TrackData& td,
+            const scalar p,
+            const scalar T,
+            const label idG,
+            const label idL,
+            const label idS
+        ) const;
+
+        //- Return the mixture effective enthalpy
+        template<class TrackData>
+        scalar HEff
+        (
+            TrackData& td,
+            const scalar p,
+            const scalar T,
+            const label idG,
+            const label idL,
+            const label idS
+        ) const;
+
+        //- Return the mixture effective latent heat
+        template<class TrackData>
+        scalar LEff
+        (
+            TrackData& td,
+            const scalar p,
+            const scalar T,
+            const label idG,
+            const label idL,
+            const label idS
+        ) const;
+
+        //- Update the mass fractions (Y, YGas, YLiquid, YSolid)
+        scalar updateMassFractions
+        (
+            const scalar mass0,
+            const scalarField& dMassGas,
+            const scalarField& dMassLiquid,
+            const scalarField& dMassSolid
+        );
+
+
+protected:
+
+    // Protected data
+
+        // Parcel properties
+
+            //- Mass fractions of gases []
+            scalarField YGas_;
+
+            //- Mass fractions of liquids []
+            scalarField YLiquid_;
+
+            //- Mass fractions of solids []
+            scalarField YSolid_;
+
+            //- Flag to say that the particle is allowed to combust
+            //  Only true after volatile content falls below threshold value
+            bool canCombust_;
+
+
+    // Protected member functions
+
+        //- Calculate Devolatilisation
+        template<class TrackData>
+        void calcDevolatilisation
+        (
+            TrackData& td,
+            const scalar dt,           // timestep
+            const scalar T,            // temperature
+            const scalar mass,         // mass
+            const scalar mass0,        // mass (initial on injection)
+            const label idVolatile,    // id of volatile phase
+            const scalar YVolatileTot, // total volatile mass fraction
+            const scalarField& YVolatile, // volatile component mass fractions
+            bool& canCombust,          // 'can combust' flag
+            scalarField& dMassDV,      // mass transfer - local to particle
+            scalar& Sh,                // explicit particle enthalpy source
+            scalar& dhsTrans           // sensible enthalpy transfer to carrier
+        ) const;
+
+        //- Calculate surface reactions
+        template<class TrackData>
+        void calcSurfaceReactions
+        (
+            TrackData& td,
+            const scalar dt,           // timestep
+            const label cellI,         // owner cell
+            const scalar d,            // diameter
+            const scalar T,            // temperature
+            const scalar mass,         // mass
+            const bool canCombust,     // 'can combust' flag
+            const scalarField& dMassVolatile, // mass transfer of volatiles
+            const scalarField& YMix,   // mixture mass fractions
+            const scalarField& YGas,   // gas-phase mass fractions
+            const scalarField& YLiquid,// liquid-phase mass fractions
+            const scalarField& YSolid, // solid-phase mass fractions
+            scalarField& dMassSRGas,   // gas-phase mass transfer - local
+            scalarField& dMassSRLiquid,// liquid-phase mass transfer - local
+            scalarField& dMassSRSolid, // solid-phase mass transfer - local
+            scalarField& dMassSRCarrier, // carrier phase mass transfer
+            scalar& Sh,                // explicit particle enthalpy source
+            scalar& dhsTrans           // sensible enthalpy transfer to carrier
+        ) const;
+
+
+public:
+
+    // Static data members
+
+        //- String representation of properties
+        static string propHeader;
+
+        //- Runtime type information
+        TypeName("ReactingMultiphaseParcel");
+
+
+    friend class Cloud<ParcelType>;
+
+
+    // Constructors
+
+        //- Construct from owner, position, and cloud owner
+        //  Other properties initialised as null
+        inline ReactingMultiphaseParcel
+        (
+            ReactingMultiphaseCloud<ParcelType>& owner,
+            const vector& position,
+            const label cellI
+        );
+
+
+        //- Construct from components
+        inline ReactingMultiphaseParcel
+        (
+            ReactingMultiphaseCloud<ParcelType>& owner,
+            const vector& position,
+            const label cellI,
+            const label typeId,
+            const scalar nParticle0,
+            const scalar d0,
+            const vector& U0,
+            const scalarField& Y0,
+            const scalarField& YGas0,
+            const scalarField& YLiquid0,
+            const scalarField& YSolid0,
+            const constantProperties& constProps
+        );
+
+        //- Construct from Istream
+        ReactingMultiphaseParcel
+        (
+            const Cloud<ParcelType>& c,
+            Istream& is,
+            bool readFields = true
+        );
+
+        //- Construct as a copy
+        ReactingMultiphaseParcel(const ReactingMultiphaseParcel& p);
+
+        //- Construct and return a clone
+        autoPtr<ReactingMultiphaseParcel> clone() const
+        {
+            return
+                autoPtr<ReactingMultiphaseParcel>
+                (
+                    new ReactingMultiphaseParcel(*this)
+                );
+        }
+
+
+    // Member Functions
+
+        // Access
+
+            //- Return const access to mass fractions of gases
+            inline const scalarField& YGas() const;
+
+            //- Return const access to mass fractions of liquids
+            inline const scalarField& YLiquid() const;
+
+            //- Return const access to mass fractions of solids
+            inline const scalarField& YSolid() const;
+
+            //- Return const access to the canCombust flag
+            inline bool canCombust() const;
+
+
+        // Edit
+
+            //- Return access to mass fractions of gases
+            inline scalarField& YGas();
+
+            //- Return access to mass fractions of liquids
+            inline scalarField& YLiquid();
+
+            //- Return access to mass fractions of solids
+            inline scalarField& YSolid();
+
+            //- Return access to the canCombust flag
+            inline bool& canCombust();
+
+
+        // Main calculation loop
+
+            //- Set cell values
+            template<class TrackData>
+            void setCellValues
+            (
+                TrackData& td,
+                const scalar dt,
+                const label cellI
+            );
+
+            //- Correct cell values using latest transfer information
+            template<class TrackData>
+            void cellValueSourceCorrection
+            (
+                TrackData& td,
+                const scalar dt,
+                const label cellI
+            );
+
+            //- Update parcel properties over the time interval
+            template<class TrackData>
+            void calc
+            (
+                TrackData& td,
+                const scalar dt,
+                const label cellI
+            );
+
+
+        // I-O
+
+            //- Read
+            static void readFields(ReactingMultiphaseCloud<ParcelType>& c);
+
+            //- Write
+            static void writeFields
+            (
+                const ReactingMultiphaseCloud<ParcelType>& c
+            );
+
+
+    // Ostream Operator
+
+        friend Ostream& operator<< <ParcelType>
+        (
+            Ostream&,
+            const ReactingMultiphaseParcel<ParcelType>&
+        );
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "ReactingMultiphaseParcelI.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#ifdef NoRepository
+    #include "ReactingMultiphaseParcel.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcelI.H b/src/lagrangian/intermediate/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcelI.H
new file mode 100644
index 0000000000000000000000000000000000000000..c512c5572847966c507b83edbf13a14d2502efb0
--- /dev/null
+++ b/src/lagrangian/intermediate/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcelI.H
@@ -0,0 +1,238 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template<class ParcelType>
+inline Foam::ReactingMultiphaseParcel<ParcelType>::constantProperties::
+constantProperties
+(
+    const dictionary& parentDict
+)
+:
+    ReactingParcel<ParcelType>::constantProperties(parentDict),
+    LDevol_(dimensionedScalar(this->dict().lookup("LDevol")).value()),
+    hRetentionCoeff_
+    (
+        dimensionedScalar(this->dict().lookup("hRetentionCoeff")).value()
+    )
+{
+    if ((hRetentionCoeff_ < 0) || (hRetentionCoeff_ > 1))
+    {
+        FatalErrorIn
+        (
+            "ReactingMultiphaseParcel<ParcelType>::constantProperties::"
+            "constantProperties"
+        )   << "hRetentionCoeff must be in the range 0 to 1" << nl
+            << exit(FatalError) << endl;
+    }
+
+    hRetentionCoeff_ = max(1e-06, hRetentionCoeff_);
+}
+
+
+template<class ParcelType>
+inline Foam::ReactingMultiphaseParcel<ParcelType>::trackData::trackData
+(
+    ReactingMultiphaseCloud<ParcelType>& cloud,
+    const constantProperties& constProps,
+    const interpolation<scalar>& rhoInterp,
+    const interpolation<vector>& UInterp,
+    const interpolation<scalar>& muInterp,
+    const interpolation<scalar>& TInterp,
+    const interpolation<scalar>& CpInterp,
+    const interpolation<scalar>& pInterp,
+    const vector& g
+)
+:
+    ReactingParcel<ParcelType>::trackData
+    (
+        cloud,
+        constProps,
+        rhoInterp,
+        UInterp,
+        muInterp,
+        TInterp,
+        CpInterp,
+        pInterp,
+        g
+    ),
+    cloud_(cloud),
+    constProps_(constProps)
+{}
+
+
+template <class ParcelType>
+inline Foam::ReactingMultiphaseParcel<ParcelType>::ReactingMultiphaseParcel
+(
+    ReactingMultiphaseCloud<ParcelType>& owner,
+    const vector& position,
+    const label cellI
+)
+:
+    ReactingParcel<ParcelType>(owner, position, cellI),
+    YGas_(0),
+    YLiquid_(0),
+    YSolid_(0),
+    canCombust_(false)
+{}
+
+
+template<class ParcelType>
+inline Foam::ReactingMultiphaseParcel<ParcelType>::ReactingMultiphaseParcel
+(
+    ReactingMultiphaseCloud<ParcelType>& owner,
+    const vector& position,
+    const label cellI,
+    const label typeId,
+    const scalar nParticle0,
+    const scalar d0,
+    const vector& U0,
+    const scalarField& Y0,
+    const scalarField& YGas0,
+    const scalarField& YLiquid0,
+    const scalarField& YSolid0,
+    const constantProperties& constProps
+)
+:
+    ReactingParcel<ParcelType>
+    (
+        owner,
+        position,
+        cellI,
+        typeId,
+        nParticle0,
+        d0,
+        U0,
+        Y0,
+        constProps
+    ),
+    YGas_(YGas0),
+    YLiquid_(YLiquid0),
+    YSolid_(YSolid0),
+    canCombust_(false)
+{}
+
+
+// * * * * * * * * * constantProperties Member Functions * * * * * * * * * * //
+
+template<class ParcelType>
+inline Foam::scalar
+Foam::ReactingMultiphaseParcel<ParcelType>::constantProperties::LDevol() const
+{
+    return LDevol_;
+}
+
+
+template<class ParcelType>
+inline Foam::scalar
+Foam::ReactingMultiphaseParcel<ParcelType>::constantProperties::
+hRetentionCoeff() const
+{
+    return hRetentionCoeff_;
+}
+
+
+// * * * * * * * * * * * trackData Member Functions  * * * * * * * * * * * * //
+
+template<class ParcelType>
+inline Foam::ReactingMultiphaseCloud<ParcelType>&
+Foam::ReactingMultiphaseParcel<ParcelType>::trackData::cloud()
+{
+    return cloud_;
+}
+
+
+template<class ParcelType>
+inline const typename Foam::ReactingMultiphaseParcel<ParcelType>::
+constantProperties&
+Foam::ReactingMultiphaseParcel<ParcelType>::trackData::constProps() const
+{
+    return constProps_;
+}
+
+
+// * * * * * * * * * * ThermoParcel Member Functions * * * * * * * * * * * * //
+
+template<class ParcelType>
+inline const Foam::scalarField& Foam::ReactingMultiphaseParcel<ParcelType>::
+YGas() const
+{
+    return YGas_;
+}
+
+
+template<class ParcelType>
+inline const Foam::scalarField& Foam::ReactingMultiphaseParcel<ParcelType>::
+YLiquid() const
+{
+    return YLiquid_;
+}
+
+
+template<class ParcelType>
+inline const Foam::scalarField& Foam::ReactingMultiphaseParcel<ParcelType>::
+YSolid() const
+{
+    return YSolid_;
+}
+
+
+template<class ParcelType>
+inline bool Foam::ReactingMultiphaseParcel<ParcelType>::canCombust() const
+{
+    return canCombust_;
+}
+
+
+template<class ParcelType>
+inline Foam::scalarField& Foam::ReactingMultiphaseParcel<ParcelType>::YGas()
+{
+    return YGas_;
+}
+
+
+template<class ParcelType>
+inline Foam::scalarField& Foam::ReactingMultiphaseParcel<ParcelType>::YLiquid()
+{
+    return YLiquid_;
+}
+
+
+template<class ParcelType>
+inline Foam::scalarField& Foam::ReactingMultiphaseParcel<ParcelType>::YSolid()
+{
+    return YSolid_;
+}
+
+
+template<class ParcelType>
+inline bool& Foam::ReactingMultiphaseParcel<ParcelType>::canCombust()
+{
+    return canCombust_;
+}
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcelIO.C b/src/lagrangian/intermediate/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcelIO.C
new file mode 100644
index 0000000000000000000000000000000000000000..512f21e9530950563d4d71e0cfb89e1f54215000
--- /dev/null
+++ b/src/lagrangian/intermediate/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcelIO.C
@@ -0,0 +1,314 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "ReactingMultiphaseParcel.H"
+#include "IOstreams.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+template <class ParcelType>
+Foam::string Foam::ReactingMultiphaseParcel<ParcelType>::propHeader =
+    ReactingParcel<ParcelType>::propHeader
+  + " nGas(Y1..YN)"
+  + " nLiquid(Y1..YN)"
+  + " nSolid(Y1..YN)";
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template<class ParcelType>
+Foam::ReactingMultiphaseParcel<ParcelType>::ReactingMultiphaseParcel
+(
+    const Cloud<ParcelType>& cloud,
+    Istream& is,
+    bool readFields
+)
+:
+    ReactingParcel<ParcelType>(cloud, is, readFields),
+    YGas_(0),
+    YLiquid_(0),
+    YSolid_(0),
+    canCombust_(false)
+{
+    if (readFields)
+    {
+        const ReactingMultiphaseCloud<ParcelType>& cR =
+            dynamic_cast<const ReactingMultiphaseCloud<ParcelType>&>(cloud);
+
+        const label idGas = cR.composition().idGas();
+        const label nGas = cR.composition().componentNames(idGas).size();
+        const label idLiquid = cR.composition().idLiquid();
+        const label nLiquid = cR.composition().componentNames(idLiquid).size();
+        const label idSolid = cR.composition().idGas();
+        const label nSolid = cR.composition().componentNames(idSolid).size();
+
+        YGas_.setSize(nGas);
+        YLiquid_.setSize(nLiquid);
+        YSolid_.setSize(nSolid);
+
+        is >> YGas_ >> YLiquid_ >> YSolid_;
+
+        // scale the mass fractions
+        const scalarField& YMix = this->Y_;
+        YGas_ /= YMix[GAS] + ROOTVSMALL;
+        YLiquid_ /= YMix[LIQ] + ROOTVSMALL;
+        YSolid_ /= YMix[SLD] + ROOTVSMALL;
+    }
+
+    // Check state of Istream
+    is.check
+    (
+        "ReactingMultiphaseParcel<ParcelType>::ReactingMultiphaseParcel"
+        "("
+            "const Cloud<ParcelType>&, "
+            "Istream&, "
+            "bool"
+        ")"
+    );
+}
+
+
+template<class ParcelType>
+void Foam::ReactingMultiphaseParcel<ParcelType>::readFields
+(
+    ReactingMultiphaseCloud<ParcelType>& c
+)
+{
+    if (!c.size())
+    {
+        return;
+    }
+
+    ReactingParcel<ParcelType>::readFields(c);
+
+    // Get names and sizes for each Y...
+    const label idGas = c.composition().idGas();
+    const wordList& gasNames = c.composition().componentNames(idGas);
+    const label idLiquid = c.composition().idLiquid();
+    const wordList& liquidNames = c.composition().componentNames(idLiquid);
+    const label idSolid = c.composition().idSolid();
+    const wordList& solidNames = c.composition().componentNames(idSolid);
+    const wordList& stateLabels = c.composition().stateLabels();
+
+    // Set storage for each Y... for each parcel
+    forAllIter(typename Cloud<ParcelType>, c, iter)
+    {
+        ReactingMultiphaseParcel<ParcelType>& p = iter();
+        p.YGas_.setSize(gasNames.size(), 0.0);
+        p.YLiquid_.setSize(liquidNames.size(), 0.0);
+        p.YSolid_.setSize(solidNames.size(), 0.0);
+    }
+
+    // Populate YGas for each parcel
+    forAll(gasNames, j)
+    {
+        IOField<scalar> YGas
+        (
+            c.fieldIOobject
+            (
+                "Y" + gasNames[j] + stateLabels[idGas],
+                IOobject::MUST_READ
+            )
+        );
+
+        label i = 0;
+        forAllIter(typename Cloud<ParcelType>, c, iter)
+        {
+            ReactingMultiphaseParcel<ParcelType>& p = iter();
+            p.YGas_[j] = YGas[i++]/(p.Y()[GAS] + ROOTVSMALL);
+        }
+    }
+    // Populate YLiquid for each parcel
+    forAll(liquidNames, j)
+    {
+        IOField<scalar> YLiquid
+        (
+            c.fieldIOobject
+            (
+                "Y" + liquidNames[j] + stateLabels[idLiquid],
+                 IOobject::MUST_READ
+            )
+        );
+
+        label i = 0;
+        forAllIter(typename Cloud<ParcelType>, c, iter)
+        {
+            ReactingMultiphaseParcel<ParcelType>& p = iter();
+            p.YLiquid_[j] = YLiquid[i++]/(p.Y()[LIQ] + ROOTVSMALL);
+        }
+    }
+    // Populate YSolid for each parcel
+    forAll(solidNames, j)
+    {
+        IOField<scalar> YSolid
+        (
+            c.fieldIOobject
+            (
+                "Y" + solidNames[j] + stateLabels[idSolid],
+                IOobject::MUST_READ
+            )
+        );
+
+        label i = 0;
+        forAllIter(typename Cloud<ParcelType>, c, iter)
+        {
+            ReactingMultiphaseParcel<ParcelType>& p = iter();
+            p.YSolid_[j] = YSolid[i++]/(p.Y()[SLD] + ROOTVSMALL);
+        }
+    }
+}
+
+
+template<class ParcelType>
+void Foam::ReactingMultiphaseParcel<ParcelType>::writeFields
+(
+    const ReactingMultiphaseCloud<ParcelType>& c
+)
+{
+    ReactingParcel<ParcelType>::writeFields(c);
+
+    label np =  c.size();
+
+    // Write the composition fractions
+    if (np > 0)
+    {
+        const wordList& stateLabels = c.composition().stateLabels();
+
+        const label idGas = c.composition().idGas();
+        const wordList& gasNames = c.composition().componentNames(idGas);
+        forAll(gasNames, j)
+        {
+            IOField<scalar> YGas
+            (
+                c.fieldIOobject
+                (
+                    "Y" + gasNames[j] + stateLabels[idGas],
+                    IOobject::NO_READ
+                ),
+                np
+            );
+
+            label i = 0;
+            forAllConstIter(typename Cloud<ParcelType>, c, iter)
+            {
+                const ReactingMultiphaseParcel<ParcelType>& p0 = iter();
+                YGas[i++] = p0.YGas()[j]*p0.Y()[GAS];
+            }
+
+            YGas.write();
+        }
+
+        const label idLiquid = c.composition().idLiquid();
+        const wordList& liquidNames = c.composition().componentNames(idLiquid);
+        forAll(liquidNames, j)
+        {
+            IOField<scalar> YLiquid
+            (
+                c.fieldIOobject
+                (
+                    "Y" + liquidNames[j] + stateLabels[idLiquid],
+                    IOobject::NO_READ
+                ),
+                np
+            );
+
+            label i = 0;
+            forAllConstIter(typename Cloud<ParcelType>, c, iter)
+            {
+                const ReactingMultiphaseParcel<ParcelType>& p0 = iter();
+                YLiquid[i++] = p0.YLiquid()[j]*p0.Y()[LIQ];
+            }
+
+            YLiquid.write();
+        }
+
+        const label idSolid = c.composition().idSolid();
+        const wordList& solidNames = c.composition().componentNames(idSolid);
+        forAll(solidNames, j)
+        {
+            IOField<scalar> YSolid
+            (
+                c.fieldIOobject
+                (
+                    "Y" + solidNames[j] + stateLabels[idSolid],
+                    IOobject::NO_READ
+                ),
+                np
+            );
+
+            label i = 0;
+            forAllConstIter(typename Cloud<ParcelType>, c, iter)
+            {
+                const ReactingMultiphaseParcel<ParcelType>& p0 = iter();
+                YSolid[i++] = p0.YSolid()[j]*p0.Y()[SLD];
+            }
+
+            YSolid.write();
+        }
+    }
+}
+
+
+// * * * * * * * * * * * * * * * IOstream Operators  * * * * * * * * * * * * //
+
+template<class ParcelType>
+Foam::Ostream& Foam::operator<<
+(
+    Ostream& os,
+    const ReactingMultiphaseParcel<ParcelType>& p
+)
+{
+    scalarField YGasLoc = p.YGas()*p.Y()[0];
+    scalarField YLiquidLoc = p.YLiquid()*p.Y()[1];
+    scalarField YSolidLoc = p.YSolid()*p.Y()[2];
+    if (os.format() == IOstream::ASCII)
+    {
+        os  << static_cast<const ReactingParcel<ParcelType>&>(p)
+            << token::SPACE << YGasLoc
+            << token::SPACE << YLiquidLoc
+            << token::SPACE << YSolidLoc;
+    }
+    else
+    {
+        os  << static_cast<const ReactingParcel<ParcelType>&>(p);
+        os  << YGasLoc << YLiquidLoc << YSolidLoc;
+    }
+
+    // Check state of Ostream
+    os.check
+    (
+        "Ostream& operator<<"
+        "("
+            "Ostream&, "
+            "const ReactingMultiphaseParcel<ParcelType>&"
+        ")"
+    );
+
+    return os;
+}
+
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcel.C b/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcel.C
index 394b3ce38e017ef3d2cc6487708f17760d2b9493..b1733762e5994e12e9574d6d03c0dc552180fd2f 100644
--- a/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcel.C
+++ b/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcel.C
@@ -30,271 +30,225 @@ License
 
 template<class ParcelType>
 template<class TrackData>
-void Foam::ReactingParcel<ParcelType>::updateCellQuantities
+void Foam::ReactingParcel<ParcelType>::setCellValues
 (
     TrackData& td,
     const scalar dt,
-    const label celli
+    const label cellI
 )
 {
-    ThermoParcel<ParcelType>::updateCellQuantities(td, dt, celli);
+    ThermoParcel<ParcelType>::setCellValues(td, dt, cellI);
 
-    pc_ = td.pInterp().interpolate(this->position(), celli);
+    pc_ = td.pInterp().interpolate(this->position(), cellI);
+    if (pc_ < td.constProps().pMin())
+    {
+        WarningIn
+        (
+            "void Foam::ReactingParcel<ParcelType>::setCellValues"
+            "("
+                "TrackData&, "
+                "const scalar, "
+                "const label"
+            ")"
+        )   << "Limiting observed pressure in cell " << cellI << " to "
+            << td.constProps().pMin() <<  nl << endl;
+
+        pc_ = td.constProps().pMin();
+    }
 }
 
 
 template<class ParcelType>
 template<class TrackData>
-void Foam::ReactingParcel<ParcelType>::calcCoupled
+void Foam::ReactingParcel<ParcelType>::cellValueSourceCorrection
 (
     TrackData& td,
     const scalar dt,
-    const label celli
+    const label cellI
 )
 {
-    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    // Define local properties at beginning of timestep
-    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    const vector U0 = this->U_;
-    const scalar mass0 = this->mass();
-    const scalar cp0 = this->cp_;
-    const scalar np0 = this->nParticle_;
-    const scalar T0 = this->T_;
-
-    // ~~~~~~~~~~~~~~~~~~~~~~~~~
-    // Initialise transfer terms
-    // ~~~~~~~~~~~~~~~~~~~~~~~~~
-
-    // Momentum transfer from the particle to the carrier phase
-    vector dUTrans = vector::zero;
-
-    // Enthalpy transfer from the particle to the carrier phase
-    scalar dhTrans = 0.0;
-
-    // Mass transfer from particle to carrier phase
-    // - components exist in particle already
-    scalarList dMassMT(td.cloud().gases().size(), 0.0);
-
-    // Mass transfer due to surface reactions from particle to carrier phase
-    // - components do not necessarily exist in particle already
-    scalarList dMassSR(td.cloud().gases().size(), 0.0);
-
-
-    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    // Calculate velocity - update U
-    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    scalar Cud = 0.0;
-    const vector U1 = calcVelocity(td, dt, Cud, dUTrans);
-
-
-    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    // Calculate heat transfer - update T
-    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    scalar htc = 0.0;
-    scalar T1 = calcHeatTransfer(td, dt, celli, htc, dhTrans);
-
-
-    // ~~~~~~~~~~~~~~~~~~~~~~~
-    // Calculate mass transfer
-    // ~~~~~~~~~~~~~~~~~~~~~~~
-    calcMassTransfer(td, dt, T0, T1, dMassMT);
-
-
-    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    // Calculate surface reactions
-    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-    // Initialise enthalpy retention to zero
-    scalar dhRet = 0.0;
-
-    calcSurfaceReactions(td, dt, celli, T0, T1, dMassMT, dMassSR, dhRet);
-
-    // New total mass
-    const scalar mass1 = mass0 - sum(dMassMT) - sum(dMassSR);
-
-    // Correct particle temperature to account for latent heat of
-    // devolatilisation
-    T1 -=
-        td.constProps().Ldevol()
-       *sum(dMassMT)
-       /(0.5*(mass0 + mass1)*cp0);
-
-    // Add retained enthalpy from surface reaction to particle and remove
-    // from gas
-    T1 += dhRet/(0.5*(mass0 + mass1)*cp0);
-    dhTrans -= dhRet;
+    scalar massCell = this->massCell(cellI);
 
-    // Correct dhTrans to account for enthalpy of evolved volatiles
-    dhTrans +=
-        sum(dMassMT)
-       *td.cloud().composition().HGas(YGas_, 0.5*(T0 + T1));
-
-    // Correct dhTrans to account for enthalpy of consumed solids
-    dhTrans +=
-        sum(dMassSR)
-       *td.cloud().composition().HSolid(YSolid_, 0.5*(T0 + T1));
+    scalar addedMass = 0.0;
+    forAll(td.cloud().rhoTrans(), i)
+    {
+        addedMass += td.cloud().rhoTrans(i)[cellI];
+    }
 
+    this->rhoc_ += addedMass/td.cloud().pMesh().cellVolumes()[cellI];
 
-    // ~~~~~~~~~~~~~~~~~~~~~~~
-    // Accumulate source terms
-    // ~~~~~~~~~~~~~~~~~~~~~~~
+    scalar massCellNew = massCell + addedMass;
+    this->Uc_ += td.cloud().UTrans()[cellI]/massCellNew;
 
-    // Transfer mass lost from particle to carrier mass source
-    forAll(dMassMT, i)
+    scalar cpEff = 0;
+    if (addedMass > ROOTVSMALL)
     {
-        td.cloud().rhoTrans(i)[celli] += np0*(dMassMT[i] + dMassSR[i]);
+        forAll(td.cloud().rhoTrans(), i)
+        {
+            scalar Y = td.cloud().rhoTrans(i)[cellI]/addedMass;
+            cpEff +=
+                Y*td.cloud().mcCarrierThermo().speciesData()[i].Cp(this->Tc_);
+        }
     }
+    const scalar cpc = td.cpInterp().psi()[cellI];
+    this->cpc_ = (massCell*cpc + addedMass*cpEff)/massCellNew;
 
-    // Update momentum transfer
-    td.cloud().UTrans()[celli] += np0*dUTrans;
-
-    // Accumulate coefficient to be applied in carrier phase momentum coupling
-    td.cloud().UCoeff()[celli] += np0*mass0*Cud;
-
-    // Update enthalpy transfer
-    // - enthalpy of lost solids already accounted for
-    td.cloud().hTrans()[celli] += np0*dhTrans;
+    this->Tc_ += td.cloud().hsTrans()[cellI]/(this->cpc_*massCellNew);
+}
 
-    // Accumulate coefficient to be applied in carrier phase enthalpy coupling
-    td.cloud().hCoeff()[celli] += np0*htc*this->areaS();
 
+template<class ParcelType>
+Foam::scalar Foam::ReactingParcel<ParcelType>::updateMassFraction
+(
+    const scalar mass0,
+    const scalarField& dMass,
+    scalarField& Y
+) const
+{
+    scalar mass1 = mass0 - sum(dMass);
 
-    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    // Remove the particle when mass falls below minimum threshold
-    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    if (mass1 < td.constProps().minParticleMass())
+    // only update the mass fractions if the new particle mass is finite
+    if (mass1 > ROOTVSMALL)
     {
-        td.keepParticle = false;
-
-        // Absorb particle(s) into carrier phase
-        forAll(dMassMT, i)
+        forAll(Y, i)
         {
-            td.cloud().rhoTrans(i)[celli] += np0*dMassMT[i];
+            Y[i] = (Y[i]*mass0 - dMass[i])/mass1;
         }
-        td.cloud().hTrans()[celli] +=
-            np0*mass1
-           *(
-                YMixture_[0]*td.cloud().composition().HGas(YGas_, T1)
-              + YMixture_[2]*td.cloud().composition().HSolid(YSolid_, T1)
-            );
-        td.cloud().UTrans()[celli] += np0*mass1*U1;
     }
-    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    // Set new particle properties
-    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    else
-    {
-        this->U_ = U1;
-        this->T_ = T1;
-        this->cp_ =
-            YMixture_[0]*td.cloud().composition().cpGas(YGas_, T1)
-          + YMixture_[1]*td.cloud().composition().cpLiquid(YLiquid_, pc_, T1)
-          + YMixture_[2]*td.cloud().composition().cpSolid(YSolid_);
 
-        // Update particle density or diameter
-        if (td.constProps().constantVolume())
-        {
-            this->rho_ = mass1/this->volume();
-        }
-        else
-        {
-            this->d_ = cbrt(mass1/this->rho_*6.0/mathematicalConstant::pi);
-        }
-    }
+    return mass1;
 }
 
 
 template<class ParcelType>
 template<class TrackData>
-void Foam::ReactingParcel<ParcelType>::calcUncoupled
+void Foam::ReactingParcel<ParcelType>::calc
 (
     TrackData& td,
     const scalar dt,
-    const label celli
+    const label cellI
 )
 {
-    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    // Define local properties at beginning of timestep
-    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    // Define local properties at beginning of time step
+    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    const scalar np0 = this->nParticle_;
+    const scalar d0 = this->d_;
+    const vector& U0 = this->U_;
+    const scalar rho0 = this->rho_;
     const scalar T0 = this->T_;
-    const scalar mass0 = this->mass();
     const scalar cp0 = this->cp_;
+    const scalar mass0 = this->mass();
 
-    // ~~~~~~~~~~~~~~~~~~~~~~~~~
-    // Initialise transfer terms
-    // ~~~~~~~~~~~~~~~~~~~~~~~~~
+    // Explicit momentum source for particle
+    vector Su = vector::zero;
 
     // Momentum transfer from the particle to the carrier phase
     vector dUTrans = vector::zero;
 
-    // Enthalpy transfer from the particle to the carrier phase
-    scalar dhTrans = 0.0;
+    // Explicit enthalpy source for particle
+    scalar Sh = 0.0;
 
-    // Mass transfer from particle to carrier phase
-    // - components exist in particle already
-    scalarList dMassMT(td.cloud().gases().size(), 0.0);
+    // Sensible enthalpy transfer from the particle to the carrier phase
+    scalar dhsTrans = 0.0;
 
-    // Mass transfer due to surface reactions from particle to carrier phase
-    // - components do not necessarily exist in particle already
-    scalarList dMassSR(td.cloud().gases().size(), 0.0);
 
+    // Phase change
+    // ~~~~~~~~~~~~
 
-    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    // Calculate velocity - update U
-    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    scalar Cud = 0.0;
-    const vector U1 = calcVelocity(td, dt, Cud, dUTrans);
+    // Mass transfer due to phase change
+    scalarField dMassPC(Y_.size(), 0.0);
 
+    // Calc mass and enthalpy transfer due to phase change
+    calcPhaseChange
+    (
+        td,
+        dt,
+        cellI,
+        d0,
+        T0,
+        U0,
+        mass0,
+        0,
+        1.0,
+        Y_,
+        dMassPC,
+        Sh,
+        dhsTrans
+    );
 
-    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    // Calculate heat transfer - update T
-    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    scalar htc = 0.0;
-    scalar T1 = calcHeatTransfer(td, dt, celli, htc, dhTrans);
+    // Update particle component mass and mass fractions
+    scalar mass1 = updateMassFraction(mass0, dMassPC, Y_);
 
 
-    // ~~~~~~~~~~~~~~~~~~~~~~~
-    // Calculate mass transfer
-    // ~~~~~~~~~~~~~~~~~~~~~~~
-    calcMassTransfer(td, dt, T0, T1, dMassMT);
+    // Heat transfer
+    // ~~~~~~~~~~~~~
 
+    // Calculate new particle temperature
+    scalar T1 =
+        calcHeatTransfer(td, dt, cellI, d0, U0, rho0, T0, cp0, Sh, dhsTrans);
 
-    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    // Calculate surface reactions
-    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-    // Initialise enthalpy retention to zero
-    scalar dhRet = 0.0;
+    // Motion
+    // ~~~~~~
 
-    calcSurfaceReactions(td, dt, celli, T0, T1, dMassMT, dMassSR, dhRet);
+    // Calculate new particle velocity
+    vector U1 = calcVelocity(td, dt, cellI, d0, U0, rho0, mass0, Su, dUTrans);
 
-    // New total mass
-    const scalar mass1 = mass0 - sum(dMassMT) - sum(dMassSR);
+    dUTrans += 0.5*(mass0 - mass1)*(U0 + U1);
 
-    // New specific heat capacity
-    const scalar cp1 =
-        YMixture_[0]*td.cloud().composition().cpGas(YGas_, T1)
-      + YMixture_[1]*td.cloud().composition().cpLiquid(YLiquid_, pc_, T1)
-      + YMixture_[2]*td.cloud().composition().cpSolid(YSolid_);
+    // Accumulate carrier phase source terms
+    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    if (td.cloud().coupled())
+    {
+        // Transfer mass lost from particle to carrier mass source
+        forAll(dMassPC, i)
+        {
+            label gid = td.cloud().composition().localToGlobalCarrierId(0, i);
+            td.cloud().rhoTrans(gid)[cellI] += np0*dMassPC[i];
+            td.cloud().hcTrans()[cellI] +=
+                np0
+               *dMassPC[i]
+               *td.cloud().mcCarrierThermo().speciesData()[gid].H(T0);
+        }
+
+        // Update momentum transfer
+        td.cloud().UTrans()[cellI] += np0*dUTrans;
+
+        // Update sensible enthalpy transfer
+        td.cloud().hsTrans()[cellI] += np0*dhsTrans;
+    }
 
-    // Add retained enthalpy to particle
-    T1 += dhRet/(mass0*0.5*(cp0 + cp1));
 
-    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     // Remove the particle when mass falls below minimum threshold
     // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     if (mass1 < td.constProps().minParticleMass())
     {
         td.keepParticle = false;
+
+        if (td.cloud().coupled())
+        {
+            // Absorb parcel into carrier phase
+            forAll(Y_, i)
+            {
+                label gid =
+                    td.cloud().composition().localToGlobalCarrierId(0, i);
+                td.cloud().rhoTrans(gid)[cellI] += np0*mass1*Y_[i];
+            }
+            td.cloud().UTrans()[cellI] += np0*mass1*U1;
+            td.cloud().hcTrans()[cellI] +=
+                np0*mass1*td.cloud().composition().H(0, Y_, pc_, T1);
+        }
     }
-    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+
     // Set new particle properties
     // ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
     else
     {
-        this->U_ = U1;
+        this->cp_ = td.cloud().composition().cp(0, Y_, pc_, T1);
         this->T_ = T1;
-        this->cp_ = cp1;
+        this->U_ = U1;
 
         // Update particle density or diameter
         if (td.constProps().constantVolume())
@@ -311,112 +265,87 @@ void Foam::ReactingParcel<ParcelType>::calcUncoupled
 
 template<class ParcelType>
 template<class TrackData>
-void Foam::ReactingParcel<ParcelType>::calcMassTransfer
+void Foam::ReactingParcel<ParcelType>::calcPhaseChange
 (
     TrackData& td,
     const scalar dt,
-    const scalar T0,
-    const scalar T1,
-    scalarList& dMassMT
+    const label cellI,
+    const scalar d,
+    const scalar T,
+    const vector& U,
+    const scalar mass,
+    const label idPhase,
+    const scalar YPhase,
+    const scalarField& YComponents,
+    scalarField& dMassPC,
+    scalar& Sh,
+    scalar& dhsTrans
 )
 {
-    if (td.cloud().composition().YMixture0()[1]>SMALL)
-    {
-        notImplemented
-        (
-            "void Foam::ReactingParcel<ParcelType>::"
-            "calcMassTransfer(...): no treatment currently "
-            "available for particles containing liquid species"
-        )
-    }
-
-    // Check that model is active, and that the parcel temperature is
-    // within necessary limits for mass transfer to occur
     if
     (
-        !td.cloud().massTransfer().active()
-     || this->T_<td.constProps().Tvap()
-     || this->T_<td.constProps().Tbp()
+        !td.cloud().phaseChange().active()
+     || T < td.constProps().Tvap()
+     || YPhase < SMALL
     )
     {
         return;
     }
 
-    // Determine mass to add to carrier phase
-    const scalar mass = this->mass();
-    const scalar dMassTot = td.cloud().massTransfer().calculate
+    // Calculate mass transfer due to phase change
+    td.cloud().phaseChange().calculate
     (
         dt,
-        mass0_,
-        mass,
-        td.cloud().composition().YMixture0(),
-        YMixture_,
-        T0,
-        canCombust_
+        cellI,
+        d,
+        T,
+        pc_,
+        this->Tc_,
+        this->muc_/(this->rhoc_ + ROOTVSMALL),
+        U - this->Uc_,
+        dMassPC
     );
 
-    // Update (total) mass fractions
-    YMixture_[0] = (YMixture_[0]*mass - dMassTot)/(mass - dMassTot);
-    YMixture_[1] = YMixture_[1]*mass/(mass - dMassTot);
-    YMixture_[2] = 1.0 - YMixture_[0] - YMixture_[1];
+    // Limit phase change mass by availability of each specie
+    dMassPC = min(mass*YPhase*YComponents, dMassPC);
+
+    scalar dMassTot = sum(dMassPC);
 
-    // Add to cummulative mass transfer
-    forAll (YGas_, i)
+    // Add to cumulative phase change mass
+    td.cloud().addToMassPhaseChange(this->nParticle_*dMassTot);
+
+    // Enthalphy transfer to carrier phase
+    label id;
+    forAll(YComponents, i)
     {
-        label id = td.cloud().composition().gasGlobalIds()[i];
+        id = td.cloud().composition().localToGlobalCarrierId(idPhase, i);
+        const scalar hv = td.cloud().mcCarrierThermo().speciesData()[id].H(T);
+
+        id = td.cloud().composition().globalIds(idPhase)[i];
+        const scalar hl =
+            td.cloud().composition().liquids().properties()[id].h(pc_, T);
 
-        // Mass transfer
-        scalar volatileMass = YGas_[i]*dMassTot;
-        dMassMT[id] += volatileMass;
+        Sh += dMassPC[i]*(hl - hv)/dt;
     }
 }
 
 
-template<class ParcelType>
-template<class TrackData>
-void Foam::ReactingParcel<ParcelType>::calcSurfaceReactions
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template <class ParcelType>
+Foam::ReactingParcel<ParcelType>::ReactingParcel
 (
-    TrackData& td,
-    const scalar dt,
-    const label celli,
-    const scalar T0,
-    const scalar T1,
-    const scalarList& dMassMT,
-    scalarList& dMassSR,
-    scalar& dhRet
+    const ReactingParcel<ParcelType>& p
 )
-{
-    // Check that model is active
-    if (!td.cloud().surfaceReaction().active() || !canCombust_)
-    {
-        return;
-    }
-
-    // Update mass transfer(s)
-    // - Also updates Y()'s
-    td.cloud().surfaceReaction().calculate
-    (
-        dt,
-        celli,
-        this->d_,
-        T0,
-        T1,
-        this->Tc_,
-        pc_,
-        this->rhoc_,
-        this->mass(),
-        dMassMT,
-        YGas_,
-        YLiquid_,
-        YSolid_,
-        YMixture_,
-        dMassSR,
-        dhRet
-    );
-}
+:
+    ThermoParcel<ParcelType>(p),
+    mass0_(p.mass0_),
+    Y_(p.Y_),
+    pc_(p.pc_)
+{}
 
 
-// * * * * * * * * * * * * * * * *  IOStream operators * * * * * * * * * * * //
+// * * * * * * * * * * * * * * IOStream operators  * * * * * * * * * * * * * //
 
 #include "ReactingParcelIO.C"
 
diff --git a/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcel.H b/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcel.H
index 2a29e35ac53c9c87646c88e4bb1ea5d8998efe35..8e351f96f098362f9532da369751e16ced11bcbe 100644
--- a/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcel.H
+++ b/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcel.H
@@ -26,9 +26,8 @@ Class
     Foam::ReactingParcel
 
 Description
-    Reactinf parcel class with one/two-way coupling with the continuous
-    phase. Includes thermo parcel sub-models, plus:
-    - combustion
+    Reacting parcel class with one/two-way coupling with the continuous
+    phase.
 
 SourceFiles
     ReactingParcelI.H
@@ -47,6 +46,7 @@ SourceFiles
 
 #include "ThermoParcel.H"
 #include "ReactingCloud.H"
+#include "reactingParcel.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -70,9 +70,9 @@ Ostream& operator<<
 template<class ParcelType>
 class ReactingParcel
 :
+    public reactingParcel,
     public ThermoParcel<ParcelType>
 {
-
 public:
 
     //- Class to hold reacting particle constant properties
@@ -80,40 +80,33 @@ public:
     :
         public ThermoParcel<ParcelType>::constantProperties
     {
-
         // Private data
 
-            //- Vapourisation temperature [K]
-            const scalar Tvap_;
-
-            //- Boiling point [K]
-            const scalar Tbp_;
-
-            //- Latent heat of devolatilisation [J/kg]
-            const scalar Ldevol_;
+            //- Minimum pressure [Pa]
+            const scalar pMin_;
 
             //- Constant volume flag - e.g. during mass transfer
             Switch constantVolume_;
 
+            //- Vaporisation temperature [K]
+            const scalar Tvap_;
+
 
     public:
 
         //- Constructor
-        constantProperties(const dictionary& dict);
+        constantProperties(const dictionary& parentDict);
 
         // Access
 
-            //- Return const access to the vapourisation temperature
-            inline scalar Tvap() const;
-
-            //- Return const access to the boiling point
-            inline scalar Tbp() const;
-
-            //- Return const access to the latent heat of devolatilisation
-            inline scalar Ldevol() const;
+            //- Return const access to the minimum pressure
+            inline scalar pMin() const;
 
             //- Return const access to the constant volume flag
             inline Switch constantVolume() const;
+
+            //- Return const access to the vaporisation temperature
+            inline scalar Tvap() const;
     };
 
 
@@ -162,7 +155,7 @@ public:
             //- Return const access to the constant properties
             inline const constantProperties& constProps() const;
 
-            //- Return conat access to the interpolator for continuous
+            //- Return const access to the interpolator for continuous
             //  phase pressure field
             inline const interpolation<scalar>& pInterp() const;
     };
@@ -178,20 +171,7 @@ protected:
             scalar mass0_;
 
             //- Mass fractions of mixture []
-            scalarField YMixture_;
-
-            //- Mass fractions of gases []
-            scalarField YGas_;
-
-            //- Mass fractions of liquids []
-            scalarField YLiquid_;
-
-            //- Mass fractions of solids []
-            scalarField YSolid_;
-
-            //- Flag to say that the particle is allowed to combust
-            //  Only true after volatile content falls below threshold value
-            bool canCombust_;
+            scalarField Y_;
 
 
         // Cell-based quantities
@@ -202,56 +182,70 @@ protected:
 
     // Protected member functions
 
-        //- Calculate mass transfer
+        //- Calculate Phase change
         template<class TrackData>
-        void calcMassTransfer
+        void calcPhaseChange
         (
             TrackData& td,
-            const scalar dt,
-            const scalar T0,
-            const scalar T1,
-            scalarList& dMassMT
+            const scalar dt,           // timestep
+            const label cellI,         // owner cell
+            const scalar d,            // diameter
+            const scalar T,            // temperature
+            const vector& U,           // velocity
+            const scalar mass,         // mass
+            const label idPhase,       // id of phase involved in phase change
+            const scalar YPhase,       // total mass fraction
+            const scalarField& YComponents, // component mass fractions
+            scalarField& dMassPC,      // mass transfer - local to particle
+            scalar& Sh,                // explicit particle enthalpy source
+            scalar& dhsTrans           // sensible enthalpy transfer to carrier
         );
 
-        //- Calculate surface reactions
-        template<class TrackData>
-        void calcSurfaceReactions
+        //- Update mass fraction
+        scalar updateMassFraction
         (
-            TrackData& td,
-            const scalar dt,
-            const label celli,
-            const scalar T0,
-            const scalar T1,
-            const scalarList& dMassMT,
-            scalarList& dMassSR,
-            scalar& dhRet
-        );
+            const scalar mass0,
+            const scalarField& dMass,
+            scalarField& Y
+        ) const;
 
 
 public:
 
-    //- Runtime type information
-    TypeName("ReactingParcel");
+    // Static data members
+
+        //- String representation of properties
+        static string propHeader;
+
+        //- Runtime type information
+        TypeName("ReactingParcel");
+
 
     friend class Cloud<ParcelType>;
 
 
     // Constructors
 
+        //- Construct from owner, position, and cloud owner
+        //  Other properties initialised as null
+        inline ReactingParcel
+        (
+            ReactingCloud<ParcelType>& owner,
+            const vector& position,
+            const label cellI
+        );
+
         //- Construct from components
         inline ReactingParcel
         (
             ReactingCloud<ParcelType>& owner,
-            const label typeId,
             const vector& position,
-            const label celli,
+            const label cellI,
+            const label typeId,
+            const scalar nParticle0,
             const scalar d0,
             const vector& U0,
-            const scalar nParticle0,
-            const scalarField& YGas0,
-            const scalarField& YLiquid0,
-            const scalarField& YSolid0,
-            const scalarField& YMixture0,
+            const scalarField& Y0,
             const constantProperties& constProps
         );
 
@@ -263,10 +257,13 @@ public:
             bool readFields = true
         );
 
+        //- Construct as a copy
+        ReactingParcel(const ReactingParcel& p);
+
         //- Construct and return a clone
-        autoPtr<ParcelType> clone() const
+        autoPtr<ReactingParcel> clone() const
         {
-            return autoPtr<ParcelType>(new ReactingParcel<ParcelType>(*this));
+            return autoPtr<ReactingParcel>(new ReactingParcel(*this));
         }
 
 
@@ -274,74 +271,61 @@ public:
 
         // Access
 
-            //- Return const access to mass fractions of gases
-            inline const scalarField& YGas() const;
-
-            //- Return const access to mass fractions of liquids
-            inline const scalarField& YLiquid() const;
-
-            //- Return const access to mass fractions of solids
-            inline const scalarField& YSolid() const;
-
-            //- Return const access to mass fractions of mixture
-            inline const scalarField& YMixture() const;
-
             //- Return const access to initial mass
             inline scalar mass0() const;
 
+            //- Return const access to mass fractions of mixture
+            inline const scalarField& Y() const;
 
-        // Edit
-
-            //- Return access to mass fractions of gases
-            inline scalarField& YGas();
-
-            //- Return access to mass fractions of liquids
-            inline scalarField& YLiquid();
+            //- Return the owner cell pressure
+            inline scalar pc() const;
 
-            //- Return access to mass fractions of solids
-            inline scalarField& YSolid();
 
-            //- Return access to mass fractions of mixture
-            inline scalarField& YMixture();
+        // Edit
 
             //- Return access to initial mass
             inline scalar& mass0();
 
+            //- Return access to mass fractions of mixture
+            inline scalarField& Y();
+
 
         // Main calculation loop
 
-            //- Update cell based quantities
+            //- Set cell values
             template<class TrackData>
-            void updateCellQuantities
+            void setCellValues
             (
                 TrackData& td,
                 const scalar dt,
-                const label celli
+                const label cellI
             );
 
-            //- Coupled calculation with the continuous phase
+            //- Correct cell values using latest transfer information
             template<class TrackData>
-            void calcCoupled
+            void cellValueSourceCorrection
             (
                 TrackData& td,
                 const scalar dt,
-                const label celli
+                const label cellI
             );
 
-            //- Uncoupled calculation with the continuous phase
+            //- Update parcel properties over the time interval
             template<class TrackData>
-            void calcUncoupled
+            void calc
             (
                 TrackData& td,
                 const scalar dt,
-                const label
+                const label cellI
             );
 
 
         // I-O
 
+            //- Read
             static void readFields(ReactingCloud<ParcelType>& c);
 
+            //- Write
             static void writeFields(const ReactingCloud<ParcelType>& c);
 
 
@@ -374,4 +358,3 @@ public:
 #endif
 
 // ************************************************************************* //
-
diff --git a/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcelI.H b/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcelI.H
index d4db4722d673bdcc400ea9b36784a2d277288c0d..5c2b3c7b2d4b0fb885052120a4eec448831e01d7 100644
--- a/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcelI.H
+++ b/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcelI.H
@@ -29,14 +29,13 @@ License
 template<class ParcelType>
 inline Foam::ReactingParcel<ParcelType>::constantProperties::constantProperties
 (
-    const dictionary& dict
+    const dictionary& parentDict
 )
 :
-    ThermoParcel<ParcelType>::constantProperties(dict),
-    Tvap_(dimensionedScalar(dict.lookup("Tvap")).value()),
-    Tbp_(dimensionedScalar(dict.lookup("Tbp")).value()),
-    Ldevol_(dimensionedScalar(dict.lookup("Ldevol")).value()),
-    constantVolume_(dict.lookup("constantVolume"))
+    ThermoParcel<ParcelType>::constantProperties(parentDict),
+    pMin_(dimensionedScalar(this->dict().lookup("pMin")).value()),
+    constantVolume_(this->dict().lookup("constantVolume")),
+    Tvap_(dimensionedScalar(this->dict().lookup("Tvap")).value())
 {}
 
 
@@ -75,35 +74,44 @@ template<class ParcelType>
 inline Foam::ReactingParcel<ParcelType>::ReactingParcel
 (
     ReactingCloud<ParcelType>& owner,
-    const label typeId,
     const vector& position,
-    const label celli,
+    const label cellI
+)
+:
+    ThermoParcel<ParcelType>(owner, position, cellI),
+    mass0_(0.0),
+    Y_(0),
+    pc_(0.0)
+{}
+
+
+template<class ParcelType>
+inline Foam::ReactingParcel<ParcelType>::ReactingParcel
+(
+    ReactingCloud<ParcelType>& owner,
+    const vector& position,
+    const label cellI,
+    const label typeId,
+    const scalar nParticle0,
     const scalar d0,
     const vector& U0,
-    const scalar nParticle0,
-    const scalarField& YGas0,
-    const scalarField& YLiquid0,
-    const scalarField& YSolid0,
-    const scalarField& YMixture0,
+    const scalarField& Y0,
     const constantProperties& constProps
 )
 :
     ThermoParcel<ParcelType>
     (
         owner,
-        typeId,
         position,
-        celli,
+        cellI,
+        typeId,
+        nParticle0,
         d0,
         U0,
-        nParticle0,
         constProps
     ),
     mass0_(0.0),
-    YMixture_(YMixture0),
-    YGas_(YGas0),
-    YLiquid_(YLiquid0),
-    YSolid_(YSolid0),
+    Y_(Y0),
     pc_(0.0)
 {
     // Set initial parcel mass
@@ -115,33 +123,25 @@ inline Foam::ReactingParcel<ParcelType>::ReactingParcel
 
 template<class ParcelType>
 inline Foam::scalar
-Foam::ReactingParcel<ParcelType>::constantProperties::Tvap() const
+Foam::ReactingParcel<ParcelType>::constantProperties::pMin() const
 {
-    return Tvap_;
+    return pMin_;
 }
 
 
 template<class ParcelType>
-inline Foam::scalar
-Foam::ReactingParcel<ParcelType>::constantProperties::Tbp() const
+inline Foam::Switch
+Foam::ReactingParcel<ParcelType>::constantProperties::constantVolume() const
 {
-    return Tbp_;
+    return constantVolume_;
 }
 
 
 template<class ParcelType>
 inline Foam::scalar
-Foam::ReactingParcel<ParcelType>::constantProperties::Ldevol() const
-{
-    return Ldevol_;
-}
-
-
-template<class ParcelType>
-inline Foam::Switch
-Foam::ReactingParcel<ParcelType>::constantProperties::constantVolume() const
+Foam::ReactingParcel<ParcelType>::constantProperties::Tvap() const
 {
-    return constantVolume_;
+    return Tvap_;
 }
 
 
@@ -174,72 +174,37 @@ Foam::ReactingParcel<ParcelType>::trackData::pInterp() const
 // * * * * * * * * * * ThermoParcel Member Functions * * * * * * * * * * * * //
 
 template<class ParcelType>
-inline const Foam::scalarField& Foam::ReactingParcel<ParcelType>::YGas() const
-{
-    return YGas_;
-}
-
-
-template<class ParcelType>
-inline Foam::scalarField& Foam::ReactingParcel<ParcelType>::YGas()
-{
-    return YGas_;
-}
-
-
-template<class ParcelType>
-inline const Foam::scalarField& Foam::ReactingParcel<ParcelType>::YLiquid() const
-{
-    return YLiquid_;
-}
-
-
-template<class ParcelType>
-inline Foam::scalarField& Foam::ReactingParcel<ParcelType>::YLiquid()
-{
-    return YLiquid_;
-}
-
-
-template<class ParcelType>
-inline const Foam::scalarField& Foam::ReactingParcel<ParcelType>::YSolid() const
-{
-    return YSolid_;
-}
-
-
-template<class ParcelType>
-inline Foam::scalarField& Foam::ReactingParcel<ParcelType>::YSolid()
+inline Foam::scalar Foam::ReactingParcel<ParcelType>::mass0() const
 {
-    return YSolid_;
+    return mass0_;
 }
 
 
 template<class ParcelType>
-inline const Foam::scalarField& Foam::ReactingParcel<ParcelType>::YMixture() const
+inline const Foam::scalarField& Foam::ReactingParcel<ParcelType>::Y() const
 {
-    return YMixture_;
+    return Y_;
 }
 
 
 template<class ParcelType>
-inline Foam::scalarField& Foam::ReactingParcel<ParcelType>::YMixture()
+inline Foam::scalar Foam::ReactingParcel<ParcelType>::pc() const
 {
-    return YMixture_;
+    return pc_;
 }
 
 
 template<class ParcelType>
-inline Foam::scalar Foam::ReactingParcel<ParcelType>::mass0() const
+inline Foam::scalar& Foam::ReactingParcel<ParcelType>::mass0()
 {
     return mass0_;
 }
 
 
 template<class ParcelType>
-inline Foam::scalar& Foam::ReactingParcel<ParcelType>::mass0()
+inline Foam::scalarField& Foam::ReactingParcel<ParcelType>::Y()
 {
-    return mass0_;
+    return Y_;
 }
 
 
diff --git a/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcelIO.C b/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcelIO.C
index fb9a9142736a0870a43cb5ac661f893b4432e18d..b72d2af25a20f7525bd461f8aa1b24f07e4bf8b7 100644
--- a/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcelIO.C
+++ b/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcelIO.C
@@ -27,6 +27,15 @@ License
 #include "ReactingParcel.H"
 #include "IOstreams.H"
 
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+template <class ParcelType>
+Foam::string Foam::ReactingParcel<ParcelType>::propHeader =
+    ThermoParcel<ParcelType>::propHeader
+  + " mass0"
+  + " nPhases(Y1..YN)";
+
+
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
 template<class ParcelType>
@@ -39,33 +48,20 @@ Foam::ReactingParcel<ParcelType>::ReactingParcel
 :
     ThermoParcel<ParcelType>(cloud, is, readFields),
     mass0_(0.0),
-    YMixture_(0),
-    YGas_(0),
-    YLiquid_(0),
-    YSolid_(0),
+    Y_(0),
     pc_(0.0)
 {
     if (readFields)
     {
         const ReactingCloud<ParcelType>& cR =
-            dynamic_cast<const ReactingCloud<ParcelType>& >(cloud);
+            dynamic_cast<const ReactingCloud<ParcelType>&>(cloud);
 
-        const label nMixture = cR.composition().compositionNames().size();
-        const label nGas = cR.composition().gasNames().size();
-        const label nLiquid = cR.composition().liquidNames().size();
-        const label nSolid = cR.composition().solidNames().size();
-
-        YMixture_.setSize(nMixture);
-        YGas_.setSize(nGas);
-        YLiquid_.setSize(nLiquid);
-        YSolid_.setSize(nSolid);
+        const label nMixture = cR.composition().phaseTypes().size();
+        Y_.setSize(nMixture);
 
         if (is.format() == IOstream::ASCII)
         {
-            is >> mass0_ >> YMixture_ >> YGas_ >> YLiquid_ >> YSolid_;
-            YGas_ /= YMixture_[0] + VSMALL;
-            YLiquid_ /= YMixture_[1] + VSMALL;
-            YSolid_ /= YMixture_[2] + VSMALL;
+            is >> mass0_ >> Y_;
         }
         else
         {
@@ -74,10 +70,7 @@ Foam::ReactingParcel<ParcelType>::ReactingParcel
                 reinterpret_cast<char*>(&mass0_),
               + sizeof(mass0_)
             );
-            is >> YMixture_ >> YGas_ >> YLiquid_ >> YSolid_;
-            YGas_ /= YMixture_[0] + VSMALL;
-            YLiquid_ /= YMixture_[1] + VSMALL;
-            YSolid_ /= YMixture_[2] + VSMALL;
+            is >> Y_;
         }
     }
 
@@ -85,7 +78,11 @@ Foam::ReactingParcel<ParcelType>::ReactingParcel
     is.check
     (
         "ReactingParcel<ParcelType>::ReactingParcel"
-        "(const Cloud<ParcelType>&, Istream&, bool)"
+        "("
+            "const Cloud<ParcelType>&, "
+            "Istream&, "
+            "bool"
+        ")"
     );
 }
 
@@ -114,83 +111,39 @@ void Foam::ReactingParcel<ParcelType>::readFields
     }
 
     // Get names and sizes for each Y...
-    const wordList compositionNames = c.composition().compositionNames();
-    const wordList gasNames = c.composition().gasNames();
-    const wordList liquidNames = c.composition().liquidNames();
-    const wordList solidNames = c.composition().solidNames();
-    const label nComposition = compositionNames.size();
-    const label nGas = gasNames.size();
-    const label nLiquid = liquidNames.size();
-    const label nSolid = solidNames.size();
-
-    // Set storage for each Y... for each parcel
-    forAllIter(typename Cloud<ParcelType>, c, iter)
+    const wordList& phaseTypes = c.composition().phaseTypes();
+    const label nPhases = phaseTypes.size();
+    wordList stateLabels(nPhases, "");
+    if (c.composition().nPhase() == 1)
     {
-        ReactingParcel<ParcelType>& p = iter();
-        p.YMixture_.setSize(nComposition, 0.0);
-        p.YGas_.setSize(nGas, 0.0);
-        p.YLiquid_.setSize(nLiquid, 0.0);
-        p.YSolid_.setSize(nSolid, 0.0);
+        stateLabels = c.composition().stateLabels();
     }
 
-    // Populate YMixture for each parcel
-    forAll(compositionNames, j)
-    {
-        IOField<scalar> YMixture
-        (
-            c.fieldIOobject("Y" + compositionNames[j], IOobject::MUST_READ)
-        );
 
-        label i = 0;
-        forAllIter(typename Cloud<ParcelType>, c, iter)
-        {
-            ReactingParcel<ParcelType>& p = iter();
-            p.YMixture_[j] = YMixture[i++];
-        }
-    }
-    // Populate YGas for each parcel
-    forAll(gasNames, j)
+    // Set storage for each Y... for each parcel
+    forAllIter(typename Cloud<ParcelType>, c, iter)
     {
-        IOField<scalar> YGas
-        (
-            c.fieldIOobject("Y" + gasNames[j], IOobject::MUST_READ)
-        );
-
-        label i = 0;
-        forAllIter(typename Cloud<ParcelType>, c, iter)
-        {
-            ReactingParcel<ParcelType>& p = iter();
-            p.YGas_[j] = YGas[i++]/p.YMixture_[0];
-        }
+        ReactingParcel<ParcelType>& p = iter();
+        p.Y_.setSize(nPhases, 0.0);
     }
-    // Populate YLiquid for each parcel
-    forAll(liquidNames, j)
-    {
-        IOField<scalar> YLiquid
-        (
-            c.fieldIOobject("Y" + liquidNames[j], IOobject::MUST_READ)
-        );
 
-        label i = 0;
-        forAllIter(typename Cloud<ParcelType>, c, iter)
-        {
-            ReactingParcel<ParcelType>& p = iter();
-            p.YLiquid_[j] = YLiquid[i++]/p.YMixture_[1];
-        }
-    }
-    // Populate YSolid for each parcel
-    forAll(solidNames, j)
+    // Populate Y for each parcel
+    forAll(phaseTypes, j)
     {
-        IOField<scalar> YSolid
+        IOField<scalar> Y
         (
-            c.fieldIOobject("Y" + solidNames[j], IOobject::MUST_READ)
+            c.fieldIOobject
+            (
+                "Y" + phaseTypes[j] + stateLabels[j],
+                 IOobject::MUST_READ
+            )
         );
 
         label i = 0;
         forAllIter(typename Cloud<ParcelType>, c, iter)
         {
             ReactingParcel<ParcelType>& p = iter();
-            p.YSolid_[j] = YSolid[i++]/p.YMixture_[2];
+            p.Y_[j] = Y[i++];
         }
     }
 }
@@ -204,82 +157,37 @@ void Foam::ReactingParcel<ParcelType>::writeFields
 {
     ThermoParcel<ParcelType>::writeFields(c);
 
-    label np =  c.size();
-
-    IOField<scalar> mass0(c.fieldIOobject("mass0", IOobject::NO_READ), np);
+    const label np =  c.size();
 
-    label i = 0;
-    forAllConstIter(typename Cloud<ParcelType>, c, iter)
-    {
-        const ReactingParcel<ParcelType>& p = iter();
-        mass0[i++] = p.mass0_;
-    }
-
-    mass0.write();
-
-    // Write the composition fractions
     if (np > 0)
     {
-        const wordList compositionNames = c.composition().compositionNames();
-        forAll(compositionNames, j)
-        {
-            IOField<scalar> YMixture
-            (
-                c.fieldIOobject("Y" + compositionNames[j], IOobject::NO_READ),
-                np
-            );
-
-            label i = 0;
-            forAllConstIter(typename Cloud<ParcelType>, c, iter)
-            {
-                const ReactingParcel<ParcelType>& p0 = iter();
-                YMixture[i++] = p0.YMixture()[j];
-            }
+        IOField<scalar> mass0(c.fieldIOobject("mass0", IOobject::NO_READ), np);
 
-            YMixture.write();
-        }
-        const wordList& gasNames = c.composition().gasNames();
-        forAll(gasNames, j)
+        label i = 0;
+        forAllConstIter(typename Cloud<ParcelType>, c, iter)
         {
-            IOField<scalar> YGas
-            (
-                c.fieldIOobject("Y" + gasNames[j], IOobject::NO_READ),
-                np
-            );
-
-            label i = 0;
-            forAllConstIter(typename Cloud<ParcelType>, c, iter)
-            {
-                const ReactingParcel<ParcelType>& p0 = iter();
-                YGas[i++] = p0.YGas()[j]*p0.YMixture()[0];
-            }
-
-            YGas.write();
+            const ReactingParcel<ParcelType>& p = iter();
+            mass0[i++] = p.mass0_;
         }
-        const wordList& liquidNames = c.composition().liquidNames();
-        forAll(liquidNames, j)
-        {
-            IOField<scalar> YLiquid
-            (
-                c.fieldIOobject("Y" + liquidNames[j], IOobject::NO_READ),
-                np
-            );
+        mass0.write();
 
-            label i = 0;
-            forAllConstIter(typename Cloud<ParcelType>, c, iter)
-            {
-                const ReactingParcel<ParcelType>& p0 = iter();
-                YLiquid[i++] = p0.YLiquid()[j]*p0.YMixture()[1];
-            }
-
-            YLiquid.write();
+        // Write the composition fractions
+        const wordList& phaseTypes = c.composition().phaseTypes();
+        wordList stateLabels(phaseTypes.size(), "");
+        if (c.composition().nPhase() == 1)
+        {
+            stateLabels = c.composition().stateLabels();
         }
-        const wordList& solidNames = c.composition().solidNames();
-        forAll(solidNames, j)
+
+        forAll(phaseTypes, j)
         {
-            IOField<scalar> YSolid
+            IOField<scalar> Y
             (
-                c.fieldIOobject("Y" + solidNames[j], IOobject::NO_READ),
+                c.fieldIOobject
+                (
+                    "Y" + phaseTypes[j] + stateLabels[j],
+                    IOobject::NO_READ
+                ),
                 np
             );
 
@@ -287,10 +195,10 @@ void Foam::ReactingParcel<ParcelType>::writeFields
             forAllConstIter(typename Cloud<ParcelType>, c, iter)
             {
                 const ReactingParcel<ParcelType>& p0 = iter();
-                YSolid[i++] = p0.YSolid()[j]*p0.YMixture()[2];
+                Y[i++] = p0.Y()[j];
             }
 
-            YSolid.write();
+            Y.write();
         }
     }
 }
@@ -305,27 +213,21 @@ Foam::Ostream& Foam::operator<<
     const ReactingParcel<ParcelType>& p
 )
 {
-    scalarField YGasLoc = p.YGas()*p.YMixture()[0];
-    scalarField YLiquidLoc = p.YLiquid()*p.YMixture()[1];
-    scalarField YSolidLoc = p.YSolid()*p.YMixture()[2];
     if (os.format() == IOstream::ASCII)
     {
-        os  << static_cast<const ThermoParcel<ParcelType>& >(p)
+        os  << static_cast<const ThermoParcel<ParcelType>&>(p)
             << token::SPACE << p.mass0()
-            << token::SPACE << p.YMixture()
-            << token::SPACE << YGasLoc
-            << token::SPACE << YLiquidLoc
-            << token::SPACE << YSolidLoc;
+            << token::SPACE << p.Y();
     }
     else
     {
-        os  << static_cast<const ThermoParcel<ParcelType>& >(p);
+        os  << static_cast<const ThermoParcel<ParcelType>&>(p);
         os.write
         (
             reinterpret_cast<const char*>(&p.mass0_),
             sizeof(p.mass0())
         );
-        os << p.YMixture() << YGasLoc << YLiquidLoc << YSolidLoc;
+        os  << p.Y();
     }
 
     // Check state of Ostream
diff --git a/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcel.C b/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcel.C
index 16854519d04f47a6eba987ed11d12cf6162006fc..6449b95dbacdf47a075589230aeb425d026f4bb1 100644
--- a/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcel.C
+++ b/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcel.C
@@ -30,121 +30,114 @@ License
 
 template<class ParcelType>
 template<class TrackData>
-void Foam::ThermoParcel<ParcelType>::updateCellQuantities
+void Foam::ThermoParcel<ParcelType>::setCellValues
 (
     TrackData& td,
     const scalar dt,
-    const label celli
+    const label cellI
 )
 {
-    KinematicParcel<ParcelType>::updateCellQuantities(td, dt, celli);
+    KinematicParcel<ParcelType>::setCellValues(td, dt, cellI);
 
-    Tc_ = td.TInterp().interpolate(this->position(), celli);
-    cpc_ = td.cpInterp().interpolate(this->position(), celli);
+    cpc_ = td.cpInterp().interpolate(this->position(), cellI);
+
+    Tc_ = td.TInterp().interpolate(this->position(), cellI);
+
+    if (Tc_ < td.constProps().TMin())
+    {
+        WarningIn
+        (
+            "void Foam::ThermoParcel<ParcelType>::setCellValues"
+            "("
+                "TrackData&, "
+                "const scalar, "
+                "const label"
+            ")"
+        )   << "Limiting observed temperature in cell " << cellI << " to "
+            << td.constProps().TMin() <<  nl << endl;
+
+        Tc_ = td.constProps().TMin();
+    }
 }
 
 
 template<class ParcelType>
 template<class TrackData>
-void Foam::ThermoParcel<ParcelType>::calcCoupled
+void Foam::ThermoParcel<ParcelType>::cellValueSourceCorrection
 (
     TrackData& td,
     const scalar dt,
-    const label celli
+    const label cellI
 )
 {
-    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    // Define local properties at beginning of timestep
-    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    const vector U0 = this->U_;
-    const scalar mass0 = this->mass();
-    const scalar np0 = this->nParticle_;
-//    const scalar T0 = T_;
-//    const scalar cp0 = cp_;
-
-
-    // ~~~~~~~~~~~~~~~~~~~~~~~~~
-    // Initialise transfer terms
-    // ~~~~~~~~~~~~~~~~~~~~~~~~~
-
-    // Momentum transfer from the particle to the carrier phase
-    vector dUTrans = vector::zero;
-
-    // Enthalpy transfer from the particle to the carrier phase
-    scalar dhTrans = 0.0;
-
-
-    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    // Calculate velocity - update U
-    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    scalar Cud = 0.0;
-    const vector U1 = calcVelocity(td, dt, Cud, dUTrans);
+    this->Uc_ += td.cloud().UTrans()[cellI]/this->massCell(cellI);
 
-
-    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    // Calculate heat transfer - update T
-    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    scalar htc = 0.0;
-    const scalar T1 = calcHeatTransfer(td, dt, celli, htc, dhTrans);
-
-
-    // ~~~~~~~~~~~~~~~~~~~~~~~
-    // Accumulate source terms
-    // ~~~~~~~~~~~~~~~~~~~~~~~
-
-    // Update momentum transfer
-    td.cloud().UTrans()[celli] += np0*dUTrans;
-
-    // Accumulate coefficient to be applied in carrier phase momentum coupling
-    td.cloud().UCoeff()[celli] += np0*mass0*Cud;
-
-    // Update enthalpy transfer
-    td.cloud().hTrans()[celli] += np0*dhTrans;
-
-    // Accumulate coefficient to be applied in carrier phase enthalpy coupling
-    td.cloud().hCoeff()[celli] += np0*htc*this->areaS();
-
-
-    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    // Set new particle properties
-    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    this->U() = U1;
-    this->T() = T1;
+    scalar cpMean = td.cpInterp().psi()[cellI];
+    Tc_ += td.cloud().hsTrans()[cellI]/(cpMean*this->massCell(cellI));
 }
 
 
 template<class ParcelType>
 template<class TrackData>
-void Foam::ThermoParcel<ParcelType>::calcUncoupled
+void Foam::ThermoParcel<ParcelType>::calc
 (
     TrackData& td,
     const scalar dt,
-    const label celli
+    const label cellI
 )
 {
-    // ~~~~~~~~~~~~~~~~~~~~~~~~~
-    // Initialise transfer terms
-    // ~~~~~~~~~~~~~~~~~~~~~~~~~
+    // Define local properties at beginning of time step
+    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    const scalar np0 = this->nParticle_;
+    const scalar d0 = this->d_;
+    const vector U0 = this->U_;
+    const scalar rho0 = this->rho_;
+    const scalar T0 = this->T_;
+    const scalar cp0 = this->cp_;
+    const scalar mass0 = this->mass();
+
+    // Explicit momentum source for particle
+    vector Su = vector::zero;
 
     // Momentum transfer from the particle to the carrier phase
     vector dUTrans = vector::zero;
 
-    // Enthalpy transfer from the particle to the carrier phase
-    scalar dhTrans = 0.0;
+    // Explicit enthalpy source for particle
+    scalar Sh = 0.0;
+
+    // Sensible enthalpy transfer from the particle to the carrier phase
+    scalar dhsTrans = 0.0;
+
+    // Heat transfer
+    // ~~~~~~~~~~~~~
+
+    // Calculate new particle velocity
+    scalar T1 =
+        calcHeatTransfer(td, dt, cellI, d0, U0, rho0, T0, cp0, Sh, dhsTrans);
+
+
+    // Motion
+    // ~~~~~~
 
+    // Calculate new particle velocity
+    vector U1 = calcVelocity(td, dt, cellI, d0, U0, rho0, mass0, Su, dUTrans);
 
-    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    // Calculate velocity - update U
-    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    scalar Cud = 0.0;
-    this->U_ = calcVelocity(td, dt, Cud, dUTrans);
 
+    //  Accumulate carrier phase source terms
+    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    if (td.cloud().coupled())
+    {
+        // Update momentum transfer
+        td.cloud().UTrans()[cellI] += np0*dUTrans;
+
+        // Update sensible enthalpy transfer
+        td.cloud().hsTrans()[cellI] += np0*dhsTrans;
+    }
 
-    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    // Calculate heat transfer - update T
-    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    scalar htc = 0.0;
-    T_ = calcHeatTransfer(td, dt, celli, htc, dhTrans);
+    // Set new particle properties
+    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    this->U_ = U1;
+    T_ = T1;
 }
 
 
@@ -154,69 +147,93 @@ Foam::scalar Foam::ThermoParcel<ParcelType>::calcHeatTransfer
 (
     TrackData& td,
     const scalar dt,
-    const label celli,
-    scalar& htc,
-    scalar& dhTrans
+    const label cellI,
+    const scalar d,
+    const vector& U,
+    const scalar rho,
+    const scalar T,
+    const scalar cp,
+    const scalar Sh,
+    scalar& dhsTrans
 )
 {
     if (!td.cloud().heatTransfer().active())
     {
-        htc = 0.0;
-        dhTrans = 0.0;
-        return T_;
+        return T;
     }
 
     // Calc heat transfer coefficient
-    htc = td.cloud().heatTransfer().h
+    scalar htc = td.cloud().heatTransfer().h
     (
-        this->d_,
-        this->U_ - this->Uc_,
+        d,
+        U - this->Uc_,
         this->rhoc_,
-        this->rho_,
+        rho,
         cpc_,
-        cp_,
+        cp,
         this->muc_
     );
 
-    // Determine ap and bp coefficients
-    scalar ap = Tc_;
-    scalar bp = htc;
-    if (td.cloud().radiation())
+    const scalar As = this->areaS(d);
+
+    if (mag(htc) < ROOTVSMALL && !td.cloud().radiation())
     {
-        // Carrier phase incident radiation field
-        // - The G field is not interpolated to the parcel position
-        //   Instead, the cell centre value is applied directly
-        const scalarField& G = td.cloud().mesh().objectRegistry
-            ::lookupObject<volScalarField>("G");
+        return  T + dt*Sh/(this->volume(d)*rho*cp);
+    }
+
+    scalar ap;
+    scalar bp;
 
-        // Helper variables
+    if (td.cloud().radiation())
+    {
+        const scalarField& G =
+            td.cloud().mesh().objectRegistry::lookupObject<volScalarField>("G");
         const scalar sigma = radiation::sigmaSB.value();
         const scalar epsilon = td.constProps().epsilon0();
-        const scalar epsilonSigmaT3 = epsilon*sigma*pow3(T_);
-        ap = (htc*Tc_ + 0.25*epsilon*G[celli])/(htc + epsilonSigmaT3);
-        bp += epsilonSigmaT3;
-    }
-    bp *= 6.0/(this->rho_*this->d_*cp_);
 
+        ap =
+            (Sh/As + htc*Tc_ + epsilon*G[cellI]/4.0)
+           /(htc + epsilon*sigma*pow3(T));
 
-    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    // Set new particle temperature
-    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+        bp =
+            6.0
+           *(Sh/As + htc*(Tc_ - T) + epsilon*(G[cellI]/4.0 - sigma*pow4(T)))
+           /(rho*d*cp*(ap - T));
+    }
+    else
+    {
+        ap = Tc_ + Sh/As/htc;
+        bp = 6.0*(Sh/As + htc*(Tc_ - T))/(rho*d*cp*(ap - T));
+    }
 
     // Integrate to find the new parcel temperature
     IntegrationScheme<scalar>::integrationResult Tres =
-        td.cloud().TIntegrator().integrate(T_, dt, ap, bp);
+        td.cloud().TIntegrator().integrate(T, dt, ap, bp);
 
-    // Using average parcel temperature for enthalpy transfer calculation
-    dhTrans = dt*this->areaS()*htc*(Tres.average() - Tc_);
+    dhsTrans += dt*htc*As*(Tres.average() - Tc_);
 
     return Tres.value();
 }
 
 
-// * * * * * * * * * * * * * * * *  IOStream operators * * * * * * * * * * * //
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template <class ParcelType>
+Foam::ThermoParcel<ParcelType>::ThermoParcel
+(
+    const ThermoParcel<ParcelType>& p
+)
+:
+    KinematicParcel<ParcelType>(p),
+    T_(p.T_),
+    cp_(p.cp_),
+    Tc_(p.Tc_),
+    cpc_(p.cpc_)
+{}
+
+
+// * * * * * * * * * * * * * * IOStream operators  * * * * * * * * * * * * * //
 
 #include "ThermoParcelIO.C"
 
 // ************************************************************************* //
-
diff --git a/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcel.H b/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcel.H
index 9d54beba256a5a8318db89ecb291b41384f75b0a..c11fecd11dc9166cfe5f1753686cf6bcd6030132 100644
--- a/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcel.H
+++ b/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcel.H
@@ -72,7 +72,6 @@ class ThermoParcel
 :
     public KinematicParcel<ParcelType>
 {
-
 public:
 
     //- Class to hold thermo particle constant properties
@@ -86,6 +85,9 @@ public:
             //- Particle initial temperature [K]
             const scalar T0_;
 
+            //- Minimum temperature [K]
+            const scalar TMin_;
+
             //- Particle specific heat capacity [J/(kg.K)]
             const scalar cp0_;
 
@@ -99,24 +101,28 @@ public:
     public:
 
         // Constructors
-        constantProperties(const dictionary& dict);
+        constantProperties(const dictionary& parentDict);
 
         // Member functions
 
             // Access
 
-                //- Return const access to particle initial temperature [K]
+                //- Return const access to the particle initial temperature [K]
                 inline scalar T0() const;
 
-                //- Return const access to particle specific heat capacity
+                //- Return const access to minimum temperature [K]
+                inline scalar TMin() const;
+
+                //- Return const access to the particle specific heat capacity
                 //  [J/(kg.K)]
                 inline scalar cp0() const;
 
-                //- Return const access to Particle emissivity [] (radiation)
+                //- Return const access to the particle emissivity []
+                //  Active for radiation only
                 inline scalar epsilon0() const;
 
-                //- Return const access to Particle scattering factor []
-                //  (radiation)
+                //- Return const access to the particle scattering factor []
+                //  Active for radiation only
                 inline scalar f0() const;
     };
 
@@ -140,7 +146,7 @@ public:
                 //- Temperature field interpolator
                 const interpolation<scalar>& TInterp_;
 
-                //- Scpecific heat capacity field interpolator
+                //- Specific heat capacity field interpolator
                 const interpolation<scalar>& cpInterp_;
 
 
@@ -170,11 +176,11 @@ public:
             //- Return const access to the owner cloud
             inline const constantProperties& constProps() const;
 
-            //- Return conat access to the interpolator for continuous
+            //- Return const access to the interpolator for continuous
             //  phase temperature field
             inline const interpolation<scalar>& TInterp() const;
 
-            //- Return conat access to the interpolator for continuous
+            //- Return const access to the interpolator for continuous
             //  phase specific heat capacity field
             inline const interpolation<scalar>& cpInterp() const;
     };
@@ -209,33 +215,53 @@ protected:
         scalar calcHeatTransfer
         (
             TrackData& td,
-            const scalar dt,
-            const label celli,
-            scalar& htc,
-            scalar& dhTrans
+            const scalar dt,           // timestep
+            const label cellI,         // owner cell
+            const scalar d,            // diameter
+            const vector& U,           // velocity
+            const scalar rho,          // density
+            const scalar T,            // temperature
+            const scalar cp,           // specific heat capacity
+            const scalar Sh,           // explicit particle enthalpy source
+            scalar& dhsTrans           // sensible enthalpy transfer to carrier
         );
 
 
 public:
 
-    //- Runtime type information
-    TypeName("ThermoParcel");
+    // Static data members
+
+        //- String representation of properties
+        static string propHeader;
+
+        //- Runtime type information
+        TypeName("ThermoParcel");
+
 
     friend class Cloud<ParcelType>;
 
 
     // Constructors
 
+        //- Construct from owner, position, and cloud owner
+        //  Other properties initialised as null
+        inline ThermoParcel
+        (
+            ThermoCloud<ParcelType>& owner,
+            const vector& position,
+            const label cellI
+        );
+
         //- Construct from components
         inline ThermoParcel
         (
             ThermoCloud<ParcelType>& owner,
-            const label typeId,
             const vector& position,
-            const label celli,
+            const label cellI,
+            const label typeId,
+            const scalar nParticle0,
             const scalar d0,
             const vector& U0,
-            const scalar nParticle0,
             const constantProperties& constProps
         );
 
@@ -247,10 +273,13 @@ public:
             bool readFields = true
         );
 
+        //- Construct as a copy
+        ThermoParcel(const ThermoParcel& p);
+
         //- Construct and return a clone
-        autoPtr<ParcelType> clone() const
+        autoPtr<ThermoParcel> clone() const
         {
-            return autoPtr<ParcelType>(new ThermoParcel<ParcelType>(*this));
+            return autoPtr<ThermoParcel>(new ThermoParcel(*this));
         }
 
 
@@ -276,38 +305,40 @@ public:
 
         // Main calculation loop
 
-            //- Update cell based quantities
+            //- Set cell values
             template<class TrackData>
-            void updateCellQuantities
+            void setCellValues
             (
                 TrackData& td,
                 const scalar dt,
-                const label celli
+                const label cellI
             );
 
-            //- Coupled calculation with the continuous phase
+            //- Correct cell values using latest transfer information
             template<class TrackData>
-            void calcCoupled
+            void cellValueSourceCorrection
             (
                 TrackData& td,
                 const scalar dt,
-                const label celli
+                const label cellI
             );
 
-            //- Uncoupled calculation with the continuous phase
+            //- Update parcel properties over the time interval
             template<class TrackData>
-            void calcUncoupled
+            void calc
             (
                 TrackData& td,
                 const scalar dt,
-                const label
+                const label cellI
             );
 
 
         // I-O
 
+            //- Read
             static void readFields(ThermoCloud<ParcelType>& c);
 
+            //- Write
             static void writeFields(const ThermoCloud<ParcelType>& c);
 
 
@@ -340,4 +371,3 @@ public:
 #endif
 
 // ************************************************************************* //
-
diff --git a/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcelI.H b/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcelI.H
index f1f6e1d8fdec3dcc61cc2fd734e7ab3d17235df7..8ce0cb56915196a30a7348af7582c64161d17523 100644
--- a/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcelI.H
+++ b/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcelI.H
@@ -29,14 +29,15 @@ License
 template<class ParcelType>
 inline Foam::ThermoParcel<ParcelType>::constantProperties::constantProperties
 (
-    const dictionary& dict
+    const dictionary& parentDict
 )
 :
-    KinematicParcel<ParcelType>::constantProperties(dict),
-    T0_(dimensionedScalar(dict.lookup("T0")).value()),
-    cp0_(dimensionedScalar(dict.lookup("cp0")).value()),
-    epsilon0_(dimensionedScalar(dict.lookup("epsilon0")).value()),
-    f0_(dimensionedScalar(dict.lookup("f0")).value())
+    KinematicParcel<ParcelType>::constantProperties(parentDict),
+    T0_(dimensionedScalar(this->dict().lookup("T0")).value()),
+    TMin_(dimensionedScalar(this->dict().lookup("TMin")).value()),
+    cp0_(dimensionedScalar(this->dict().lookup("cp0")).value()),
+    epsilon0_(dimensionedScalar(this->dict().lookup("epsilon0")).value()),
+    f0_(dimensionedScalar(this->dict().lookup("f0")).value())
 {}
 
 
@@ -73,24 +74,40 @@ template<class ParcelType>
 inline Foam::ThermoParcel<ParcelType>::ThermoParcel
 (
     ThermoCloud<ParcelType>& owner,
-    const label typeId,
     const vector& position,
-    const label celli,
+    const label cellI
+)
+:
+    KinematicParcel<ParcelType>(owner, position, cellI),
+    T_(0.0),
+    cp_(0.0),
+    Tc_(0.0),
+    cpc_(0.0)
+{}
+
+
+template<class ParcelType>
+inline Foam::ThermoParcel<ParcelType>::ThermoParcel
+(
+    ThermoCloud<ParcelType>& owner,
+    const vector& position,
+    const label cellI,
+    const label typeId,
+    const scalar nParticle0,
     const scalar d0,
     const vector& U0,
-    const scalar nParticle0,
     const constantProperties& constProps
 )
 :
     KinematicParcel<ParcelType>
     (
         owner,
-        typeId,
         position,
-        celli,
+        cellI,
+        typeId,
+        nParticle0,
         d0,
         U0,
-        nParticle0,
         constProps
     ),
     T_(constProps.T0()),
@@ -110,6 +127,14 @@ Foam::ThermoParcel<ParcelType>::constantProperties::T0() const
 }
 
 
+template <class ParcelType>
+inline Foam::scalar
+Foam::ThermoParcel<ParcelType>::constantProperties::TMin() const
+{
+    return TMin_;
+}
+
+
 template <class ParcelType>
 inline Foam::scalar
 Foam::ThermoParcel<ParcelType>::constantProperties::cp0() const
@@ -178,16 +203,16 @@ inline Foam::scalar Foam::ThermoParcel<ParcelType>::T() const
 
 
 template<class ParcelType>
-inline Foam::scalar& Foam::ThermoParcel<ParcelType>::T()
+inline Foam::scalar Foam::ThermoParcel<ParcelType>::cp() const
 {
-    return T_;
+    return cp_;
 }
 
 
 template<class ParcelType>
-inline Foam::scalar Foam::ThermoParcel<ParcelType>::cp() const
+inline Foam::scalar& Foam::ThermoParcel<ParcelType>::T()
 {
-    return cp_;
+    return T_;
 }
 
 
diff --git a/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcelIO.C b/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcelIO.C
index 08433679bb205ef7c9044d9e75c7a9aa5a2825cc..827b2f36f41ec7f94068c8f6a7213800d2fa26bb 100644
--- a/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcelIO.C
+++ b/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcelIO.C
@@ -27,6 +27,15 @@ License
 #include "ThermoParcel.H"
 #include "IOstreams.H"
 
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+template <class ParcelType>
+Foam::string Foam::ThermoParcel<ParcelType>::propHeader =
+    KinematicParcel<ParcelType>::propHeader
+  + " T"
+  + " cp";
+
+
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
 template<class ParcelType>
@@ -140,13 +149,13 @@ Foam::Ostream& Foam::operator<<
 {
     if (os.format() == IOstream::ASCII)
     {
-        os  << static_cast<const KinematicParcel<ParcelType>& >(p)
+        os  << static_cast<const KinematicParcel<ParcelType>&>(p)
             << token::SPACE << p.T()
             << token::SPACE << p.cp();
     }
     else
     {
-        os  << static_cast<const KinematicParcel<ParcelType>& >(p);
+        os  << static_cast<const KinematicParcel<ParcelType>&>(p);
         os.write
         (
             reinterpret_cast<const char*>(&p.T_),
diff --git a/src/lagrangian/intermediate/parcels/baseClasses/reactingParcel/reactingParcel.C b/src/lagrangian/intermediate/parcels/baseClasses/reactingParcel/reactingParcel.C
new file mode 100644
index 0000000000000000000000000000000000000000..2974454658e5349c0ec4ddd1a354a85b30334db8
--- /dev/null
+++ b/src/lagrangian/intermediate/parcels/baseClasses/reactingParcel/reactingParcel.C
@@ -0,0 +1,49 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "reactingParcel.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    defineTypeNameAndDebug(reactingParcel, 0);
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::reactingParcel::reactingParcel()
+{}
+
+
+// * * * * * * * * * * * * * * * *  Destructors  * * * * * * * * * * * * * * //
+
+Foam::reactingParcel::~reactingParcel()
+{}
+
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/baseClasses/reactingParcel/reactingParcel.H b/src/lagrangian/intermediate/parcels/baseClasses/reactingParcel/reactingParcel.H
new file mode 100644
index 0000000000000000000000000000000000000000..e78b15347d4483d63cba2e7ef0b24a6f4727a3cc
--- /dev/null
+++ b/src/lagrangian/intermediate/parcels/baseClasses/reactingParcel/reactingParcel.H
@@ -0,0 +1,81 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::basicReactingParcel
+
+Description
+    Base class for reacting parcel - simply used to set the contiguous flag
+
+SourceFiles
+    reactingParcel.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef reactingParcel_H
+#define reactingParcel_H
+
+#include "typeInfo.H"
+#include "contiguous.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+                       Class reactingParcel Declaration
+\*---------------------------------------------------------------------------*/
+
+class reactingParcel
+{
+public:
+
+    //- Run-time type information
+    TypeName("reactingParcel");
+
+    //- Construct null
+    reactingParcel();
+
+    //- Destructor
+    virtual ~reactingParcel();
+};
+
+
+template<>
+inline bool contiguous<reactingParcel>()
+{
+    return false; // Derived classes include scalar lists/fields
+}
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/BasicReactingMultiphaseParcel.C b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/BasicReactingMultiphaseParcel.C
new file mode 100644
index 0000000000000000000000000000000000000000..2189d8d8be909c0a6c852955b82a9af5839e9576
--- /dev/null
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/BasicReactingMultiphaseParcel.C
@@ -0,0 +1,120 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "BasicReactingMultiphaseParcel.H"
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template<class ThermoType>
+Foam::BasicReactingMultiphaseParcel<ThermoType>::BasicReactingMultiphaseParcel
+(
+    ReactingMultiphaseCloud<BasicReactingMultiphaseParcel<ThermoType> >& owner,
+    const vector& position,
+    const label cellI
+)
+:
+    ReactingMultiphaseParcel<BasicReactingMultiphaseParcel<ThermoType> >
+    (
+        owner,
+        position,
+        cellI
+    )
+{}
+
+
+template<class ThermoType>
+Foam::BasicReactingMultiphaseParcel<ThermoType>::BasicReactingMultiphaseParcel
+(
+    ReactingMultiphaseCloud<BasicReactingMultiphaseParcel<ThermoType> >& owner,
+    const vector& position,
+    const label cellI,
+    const label typeId,
+    const scalar nParticle0,
+    const scalar d0,
+    const vector& U0,
+    const scalarField& YGas0,
+    const scalarField& YLiquid0,
+    const scalarField& YSolid0,
+    const scalarField& Y0,
+    const typename
+        ReactingMultiphaseParcel<BasicReactingMultiphaseParcel>::
+        constantProperties& constProps
+)
+:
+    ReactingMultiphaseParcel<BasicReactingMultiphaseParcel<ThermoType> >
+    (
+        owner,
+        position,
+        cellI,
+        typeId,
+        nParticle0,
+        d0,
+        U0,
+        YGas0,
+        YLiquid0,
+        YSolid0,
+        Y0,
+        constProps
+    )
+{}
+
+
+template<class ThermoType>
+Foam::BasicReactingMultiphaseParcel<ThermoType>::BasicReactingMultiphaseParcel
+(
+    const Cloud<BasicReactingMultiphaseParcel<ThermoType> >& cloud,
+    Istream& is,
+    bool readFields
+)
+:
+    ReactingMultiphaseParcel<BasicReactingMultiphaseParcel<ThermoType> >
+    (
+        cloud,
+        is,
+        readFields
+    )
+{}
+
+
+template<class ThermoType>
+Foam::BasicReactingMultiphaseParcel<ThermoType>::BasicReactingMultiphaseParcel
+(
+    const BasicReactingMultiphaseParcel<ThermoType>& p
+)
+:
+    ReactingMultiphaseParcel<BasicReactingMultiphaseParcel<ThermoType> >(p)
+{}
+
+
+// * * * * * * * * * * * * * * * *  Destructors  * * * * * * * * * * * * * * //
+
+template<class ThermoType>
+Foam::BasicReactingMultiphaseParcel<ThermoType>::
+~BasicReactingMultiphaseParcel()
+{}
+
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/BasicReactingMultiphaseParcel.H b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/BasicReactingMultiphaseParcel.H
new file mode 100644
index 0000000000000000000000000000000000000000..f216f8f54780b9b87ac2d928dd9ab4e2f9fbf4c9
--- /dev/null
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/BasicReactingMultiphaseParcel.H
@@ -0,0 +1,141 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::BasicReactingMultiphaseParcel
+
+Description
+
+
+SourceFiles
+    BasicReactingMultiphaseParcel.C
+    BasicReactingMultiphaseParcelIO.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef BasicReactingMultiphaseParcel_H
+#define BasicReactingMultiphaseParcel_H
+
+#include "ReactingMultiphaseParcel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+
+namespace Foam
+{
+
+// Forward declaration of classes
+template<class ThermoType>
+class BasicReactingMultiphaseParcel;
+
+/*---------------------------------------------------------------------------*\
+               Class BasicReactingMultiphaseParcel Declaration
+\*---------------------------------------------------------------------------*/
+
+template<class ThermoType>
+class BasicReactingMultiphaseParcel
+:
+    public ReactingMultiphaseParcel<BasicReactingMultiphaseParcel<ThermoType> >
+{
+
+public:
+
+    //- The type of thermodynamics this parcel was instantiated for
+    typedef ThermoType thermoType;
+
+    //- Run-time type information
+    TypeName("BasicReactingMultiphaseParcel");
+
+    // Constructors
+
+        //- Construct from owner, position, and cloud owner
+        //  Other properties initialised as null
+        BasicReactingMultiphaseParcel
+        (
+             ReactingMultiphaseCloud<BasicReactingMultiphaseParcel>& owner,
+             const vector& position,
+             const label cellI
+        );
+
+        //- Construct from components
+        BasicReactingMultiphaseParcel
+        (
+             ReactingMultiphaseCloud<BasicReactingMultiphaseParcel>& owner,
+             const vector& position,
+             const label cellI,
+             const label typeId,
+             const scalar nParticle0,
+             const scalar d0,
+             const vector& U0,
+             const scalarField& YGas0,
+             const scalarField& YLiquid0,
+             const scalarField& YSolid0,
+             const scalarField& Y0,
+             const typename
+                ReactingMultiphaseParcel<BasicReactingMultiphaseParcel>::
+                constantProperties& constProps
+        );
+
+        //- Construct from Istream
+        BasicReactingMultiphaseParcel
+        (
+            const Cloud<BasicReactingMultiphaseParcel>& c,
+            Istream& is,
+            bool readFields = true
+        );
+
+        //- Construct as a copy
+        BasicReactingMultiphaseParcel(const BasicReactingMultiphaseParcel& p);
+
+        //- Construct and return a clone
+        autoPtr<BasicReactingMultiphaseParcel> clone() const
+        {
+            return
+                autoPtr<BasicReactingMultiphaseParcel>
+                (
+                    new BasicReactingMultiphaseParcel(*this)
+                );
+        }
+
+
+    //- Destructor
+    virtual ~BasicReactingMultiphaseParcel();
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#ifdef NoRepository
+    #include "BasicReactingMultiphaseParcel.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/defineBasicReactingMultiphaseParcel.C b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/defineBasicReactingMultiphaseParcel.C
new file mode 100644
index 0000000000000000000000000000000000000000..d73d63e9dd6d1a3dae186c26aa94faaf94767624
--- /dev/null
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/defineBasicReactingMultiphaseParcel.C
@@ -0,0 +1,38 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "createReactingMultiphaseParcelTypes.H"
+#include "BasicReactingMultiphaseParcel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    createReactingMultiphaseParcelType(BasicReactingMultiphaseParcel);
+};
+
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/makeBasicReactingMultiphaseParcelSubmodels.C b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/makeBasicReactingMultiphaseParcelSubmodels.C
new file mode 100644
index 0000000000000000000000000000000000000000..08c87530c37f60cfc1736f1894152080b6870a85
--- /dev/null
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/makeBasicReactingMultiphaseParcelSubmodels.C
@@ -0,0 +1,77 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "BasicReactingMultiphaseParcel.H"
+
+// Kinematic
+#include "makeReactingParcelDispersionModels.H"
+#include "makeReactingParcelDragModels.H"
+#include "makeReactingMultiphaseParcelInjectionModels.H" // MP variant
+#include "makeReactingParcelPatchInteractionModels.H"
+#include "makeReactingParcelPostProcessingModels.H"
+
+// Thermodynamic
+#include "makeReactingParcelHeatTransferModels.H"
+
+// Reacting
+#include "makeReactingMultiphaseParcelCompositionModels.H" // MP variant
+#include "makeReactingParcelPhaseChangeModels.H"
+
+// Reacting multiphase
+#include "makeReactingMultiphaseParcelDevolatilisationModels.H"
+#include "makeReactingMultiphaseParcelSurfaceReactionModels.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    // Kinematic sub-models
+    makeReactingDispersionModels(BasicReactingMultiphaseParcel);
+    makeReactingDragModels(BasicReactingMultiphaseParcel);
+    makeReactingMultiphaseInjectionModels(BasicReactingMultiphaseParcel);
+    makeReactingPatchInteractionModels(BasicReactingMultiphaseParcel);
+    makeReactingPostProcessingModels(BasicReactingMultiphaseParcel);
+
+    // Thermo sub-models
+    makeReactingHeatTransferModels(BasicReactingMultiphaseParcel);
+
+    // Reacting sub-models
+    makeReactingMultiphaseCompositionModels(BasicReactingMultiphaseParcel);
+    makeReactingPhaseChangeModels(BasicReactingMultiphaseParcel);
+
+    // Reacting multiphase sub-models
+    makeReactingMultiphaseDevolatilisationModels
+    (
+        BasicReactingMultiphaseParcel
+    );
+    makeReactingMultiphaseSurfaceReactionModels
+    (
+        BasicReactingMultiphaseParcel
+    );
+};
+
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/BasicReactingParcel.C b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/BasicReactingParcel.C
new file mode 100644
index 0000000000000000000000000000000000000000..d2b00fdf73f3b6aef58d7d53fbe37a79f4f16f51
--- /dev/null
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/BasicReactingParcel.C
@@ -0,0 +1,102 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "BasicReactingParcel.H"
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template<class ThermoType>
+Foam::BasicReactingParcel<ThermoType>::BasicReactingParcel
+(
+    ReactingCloud<BasicReactingParcel<ThermoType> >& owner,
+    const vector& position,
+    const label cellI
+)
+:
+    ReactingParcel<BasicReactingParcel<ThermoType> >(owner, position, cellI)
+{}
+
+
+template<class ThermoType>
+Foam::BasicReactingParcel<ThermoType>::BasicReactingParcel
+(
+    ReactingCloud<BasicReactingParcel<ThermoType> >& owner,
+    const vector& position,
+    const label cellI,
+    const label typeId,
+    const scalar nParticle0,
+    const scalar d0,
+    const vector& U0,
+    const scalarField& Y0,
+    const typename ReactingParcel<BasicReactingParcel<ThermoType> >::
+        constantProperties& constProps
+)
+:
+    ReactingParcel<BasicReactingParcel<ThermoType> >
+    (
+        owner,
+        position,
+        cellI,
+        typeId,
+        nParticle0,
+        d0,
+        U0,
+        Y0,
+        constProps
+    )
+{}
+
+
+template<class ThermoType>
+Foam::BasicReactingParcel<ThermoType>::BasicReactingParcel
+(
+    const Cloud<BasicReactingParcel<ThermoType> >& cloud,
+    Istream& is,
+    bool readFields
+)
+:
+    ReactingParcel<BasicReactingParcel<ThermoType> >(cloud, is, readFields)
+{}
+
+
+template<class ThermoType>
+Foam::BasicReactingParcel<ThermoType>::BasicReactingParcel
+(
+    const BasicReactingParcel<ThermoType>& p
+)
+:
+    ReactingParcel<BasicReactingParcel>(p)
+{}
+
+
+// * * * * * * * * * * * * * * * *  Destructors  * * * * * * * * * * * * * * //
+
+template<class ThermoType>
+Foam::BasicReactingParcel<ThermoType>::~BasicReactingParcel()
+{}
+
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/BasicReactingParcel.H b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/BasicReactingParcel.H
new file mode 100644
index 0000000000000000000000000000000000000000..b8b44eb237e4e2973a1abdbabab0fd943a61fbf7
--- /dev/null
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/BasicReactingParcel.H
@@ -0,0 +1,136 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::BasicReactingParcel
+
+Description
+
+
+SourceFiles
+    BasicReactingParcel.C
+    BasicReactingParcelIO.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef BasicReactingParcel_H
+#define BasicReactingParcel_H
+
+#include "ReactingParcel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+// Forward declaration of classes
+template<class ThermoType>
+class BasicReactingParcel;
+
+/*---------------------------------------------------------------------------*\
+                    Class BasicReactingParcel Declaration
+\*---------------------------------------------------------------------------*/
+
+template<class ThermoType>
+class BasicReactingParcel
+:
+    public ReactingParcel<BasicReactingParcel<ThermoType> >
+{
+
+public:
+
+    //- The type of thermodynamics this parcel was instantiated for
+    typedef ThermoType thermoType;
+
+    //- Run-time type information
+    TypeName("BasicReactingParcel");
+
+    // Constructors
+
+        //- Construct from owner, position, and cloud owner
+        //  Other properties initialised as null
+        BasicReactingParcel
+        (
+            ReactingCloud<BasicReactingParcel>& owner,
+            const vector& position,
+            const label cellI
+        );
+
+        //- Construct from components
+        BasicReactingParcel
+        (
+            ReactingCloud<BasicReactingParcel>& owner,
+            const vector& position,
+            const label cellI,
+            const label typeId,
+            const scalar nParticle0,
+            const scalar d0,
+            const vector& U0,
+            const scalarField& Y0,
+            const typename ReactingParcel<BasicReactingParcel>::
+                constantProperties& constProps
+        );
+
+        //- Construct from Istream
+        BasicReactingParcel
+        (
+            const Cloud<BasicReactingParcel>& c,
+            Istream& is,
+            bool readFields = true
+        );
+
+        //- Construct as a copy
+        BasicReactingParcel(const BasicReactingParcel& p);
+
+        //- Construct and return a clone
+        autoPtr<BasicReactingParcel> clone() const
+        {
+            return
+                autoPtr<BasicReactingParcel>
+                (
+                    new BasicReactingParcel(*this)
+                );
+        }
+
+
+    //- Destructor
+    virtual ~BasicReactingParcel();
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#ifdef NoRepository
+    #include "BasicReactingParcel.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/defineBasicReactingParcel.C b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/defineBasicReactingParcel.C
new file mode 100644
index 0000000000000000000000000000000000000000..2c2e78630d691b2d398b09cbb32587da5e617e3d
--- /dev/null
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/defineBasicReactingParcel.C
@@ -0,0 +1,38 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "createReactingParcelTypes.H"
+#include "BasicReactingParcel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    createReactingParcelType(BasicReactingParcel);
+};
+
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/makeBasicReactingParcelSubmodels.C b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/makeBasicReactingParcelSubmodels.C
new file mode 100644
index 0000000000000000000000000000000000000000..a05fd96a37ccedb7d6d77d03705ab66ec50fa611
--- /dev/null
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/makeBasicReactingParcelSubmodels.C
@@ -0,0 +1,63 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "BasicReactingParcel.H"
+
+// Kinematic
+#include "makeReactingParcelDispersionModels.H"
+#include "makeReactingParcelDragModels.H"
+#include "makeReactingParcelInjectionModels.H"
+#include "makeReactingParcelPatchInteractionModels.H"
+#include "makeReactingParcelPostProcessingModels.H"
+
+// Thermodynamic
+#include "makeReactingParcelHeatTransferModels.H"
+
+// Reacting
+#include "makeReactingParcelCompositionModels.H"
+#include "makeReactingParcelPhaseChangeModels.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    // Kinematic sub-models
+    makeReactingDispersionModels(BasicReactingParcel);
+    makeReactingDragModels(BasicReactingParcel);
+    makeReactingInjectionModels(BasicReactingParcel);
+    makeReactingPatchInteractionModels(BasicReactingParcel);
+    makeReactingPostProcessingModels(BasicReactingParcel);
+
+    // Thermo sub-models
+    makeReactingHeatTransferModels(BasicReactingParcel);
+
+    // Reacting sub-models
+    makeReactingCompositionModels(BasicReactingParcel);
+    makeReactingPhaseChangeModels(BasicReactingParcel);
+};
+
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/basicKinematicParcel.C b/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/basicKinematicParcel.C
index 244f49ad9078c278a8497ce893490c988dde43f7..e7f883dcfdacd0c275f2bb7b7f8c942c1957e980 100644
--- a/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/basicKinematicParcel.C
+++ b/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/basicKinematicParcel.C
@@ -41,24 +41,35 @@ namespace Foam
 Foam::basicKinematicParcel::basicKinematicParcel
 (
     KinematicCloud<basicKinematicParcel>& owner,
-    const label typeId,
     const vector& position,
-    const label celli,
+    const label cellI
+)
+:
+    KinematicParcel<basicKinematicParcel>(owner, position, cellI)
+{}
+
+
+Foam::basicKinematicParcel::basicKinematicParcel
+(
+    KinematicCloud<basicKinematicParcel>& owner,
+    const vector& position,
+    const label cellI,
+    const label typeId,
+    const scalar nParticle0,
     const scalar d0,
     const vector& U0,
-    const scalar nParticle0,
     const constantProperties& constProps
 )
 :
     KinematicParcel<basicKinematicParcel>
     (
         owner,
-        typeId,
         position,
-        celli,
+        cellI,
+        typeId,
+        nParticle0,
         d0,
         U0,
-        nParticle0,
         constProps
     )
 {}
@@ -75,6 +86,15 @@ Foam::basicKinematicParcel::basicKinematicParcel
 {}
 
 
+Foam::basicKinematicParcel::basicKinematicParcel
+(
+    const basicKinematicParcel& p
+)
+:
+    KinematicParcel<basicKinematicParcel>(p)
+{}
+
+
 // * * * * * * * * * * * * * * * *  Destructors  * * * * * * * * * * * * * * //
 
 Foam::basicKinematicParcel::~basicKinematicParcel()
diff --git a/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/basicKinematicParcel.H b/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/basicKinematicParcel.H
index decc0b57e83b1d66ab9bf4074a6c718e5b74dc7a..18b43cbbadc5baa621870b145d8c22b32b8f050e 100644
--- a/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/basicKinematicParcel.H
+++ b/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/basicKinematicParcel.H
@@ -44,7 +44,7 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                         Class basicKinematicParcel Declaration
+                   Class basicKinematicParcel Declaration
 \*---------------------------------------------------------------------------*/
 
 class basicKinematicParcel
@@ -60,16 +60,25 @@ public:
 
     // Constructors
 
+        //- Construct from owner, position, and cloud owner
+        //  Other properties initialised as null
+        basicKinematicParcel
+        (
+            KinematicCloud<basicKinematicParcel>& owner,
+            const vector& position,
+            const label cellI
+        );
+
         //- Construct from components
         basicKinematicParcel
         (
             KinematicCloud<basicKinematicParcel>& owner,
-            const label typeId,
             const vector& position,
-            const label celli,
+            const label cellI,
+            const label typeId,
+            const scalar nParticle0,
             const scalar d0,
             const vector& U0,
-            const scalar nParticle0,
             const constantProperties& constProps
         );
 
@@ -81,17 +90,22 @@ public:
             bool readFields = true
         );
 
+        //- Construct as a copy
+        basicKinematicParcel(const basicKinematicParcel& p);
+
         //- Construct and return a clone
         autoPtr<basicKinematicParcel> clone() const
         {
-            return autoPtr<basicKinematicParcel>
-                (new basicKinematicParcel(*this));
+            return
+                autoPtr<basicKinematicParcel>
+                (
+                    new basicKinematicParcel(*this)
+                );
         }
 
 
     //- Destructor
-
-        virtual ~basicKinematicParcel();
+    virtual ~basicKinematicParcel();
 };
 
 
diff --git a/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/defineBasicKinematicParcel.C b/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/defineBasicKinematicParcel.C
index 82698ce0dfd1682ec94fecd6ef5447c1adcb6891..e7c1b578da4973a572b62987e48346ca2427152c 100644
--- a/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/defineBasicKinematicParcel.C
+++ b/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/defineBasicKinematicParcel.C
@@ -26,15 +26,17 @@ License
 
 #include "basicKinematicParcel.H"
 #include "KinematicCloud.H"
+#include "makeParcelIOList.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 namespace Foam
 {
-//    defineTemplateTypeNameAndDebug(IOPosition<basicKinematicParcel>, 0);
-
     defineTemplateTypeNameAndDebug(Cloud<basicKinematicParcel>, 0);
 
     defineParcelTypeNameAndDebug(KinematicCloud<basicKinematicParcel>, 0);
-//    defineTemplateTypeNameAndDebug(KinematicCloud<basicKinematicParcel>, 0);
+
+    makeParcelIOList(basicKinematicParcel);
 };
 
 
diff --git a/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/makeBasicKinematicParcelDispersionModels.C b/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/makeBasicKinematicParcelDispersionModels.C
deleted file mode 100644
index 07a256da8bbc42e672f342a4335f8231de3489e4..0000000000000000000000000000000000000000
--- a/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/makeBasicKinematicParcelDispersionModels.C
+++ /dev/null
@@ -1,65 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by the
-    Free Software Foundation; either version 2 of the License, or (at your
-    option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM; if not, write to the Free Software Foundation,
-    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-\*---------------------------------------------------------------------------*/
-
-#include "basicKinematicParcel.H"
-#include "KinematicCloud.H"
-#include "NoDispersion.H"
-#include "GradientDispersionRAS.H"
-#include "StochasticDispersionRAS.H"
-
-namespace Foam
-{
-    makeDispersionModel(KinematicCloud<basicKinematicParcel>);
-
-    defineNamedTemplateTypeNameAndDebug
-    (
-        DispersionRASModel<KinematicCloud<basicKinematicParcel> >,
-        0
-    );
-
-    // Add instances of dispersion model to the table
-    makeDispersionModelType
-    (
-        NoDispersion,
-        KinematicCloud,
-        basicKinematicParcel
-    );
-    makeDispersionModelType
-    (
-        GradientDispersionRAS,
-        KinematicCloud,
-        basicKinematicParcel
-    );
-    makeDispersionModelType
-    (
-        StochasticDispersionRAS,
-        KinematicCloud,
-        basicKinematicParcel
-    );
-};
-
-
-// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/makeBasicKinematicParcelDragModels.C b/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/makeBasicKinematicParcelDragModels.C
deleted file mode 100644
index b21de1c4489572d4faca52563464af57d31be0b5..0000000000000000000000000000000000000000
--- a/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/makeBasicKinematicParcelDragModels.C
+++ /dev/null
@@ -1,42 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by the
-    Free Software Foundation; either version 2 of the License, or (at your
-    option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM; if not, write to the Free Software Foundation,
-    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-\*---------------------------------------------------------------------------*/
-
-#include "basicKinematicParcel.H"
-#include "KinematicCloud.H"
-#include "NoDrag.H"
-#include "SphereDrag.H"
-
-namespace Foam
-{
-    makeDragModel(KinematicCloud<basicKinematicParcel>);
-
-    // Add instances of drag model to the table
-    makeDragModelType(NoDrag, KinematicCloud, basicKinematicParcel);
-    makeDragModelType(SphereDrag, KinematicCloud, basicKinematicParcel);
-};
-
-
-// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/makeBasicKinematicParcelHeatTransferModels.C b/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/makeBasicKinematicParcelHeatTransferModels.C
deleted file mode 100644
index 1ae2a21d5fe6be7e469867785c88c4c16378a352..0000000000000000000000000000000000000000
--- a/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/makeBasicKinematicParcelHeatTransferModels.C
+++ /dev/null
@@ -1,45 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by the
-    Free Software Foundation; either version 2 of the License, or (at your
-    option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM; if not, write to the Free Software Foundation,
-    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-\*---------------------------------------------------------------------------*/
-
-#include "basicKinematicParcel.H"
-#include "KinematicCloud.H"
-#include "NoHeatTransfer.H"
-
-namespace Foam
-{
-    makeHeatTransferModel(KinematicCloud<basicKinematicParcel>);
-
-    // Add instances of heat transfer model to the table
-    makeHeatTransferModelType
-    (
-        NoHeatTransfer,
-        KinematicCloud,
-        basicKinematicParcel
-    );
-};
-
-
-// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/makeBasicKinematicParcelInjectionModels.C b/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/makeBasicKinematicParcelInjectionModels.C
deleted file mode 100644
index 4d3668bbe4fa3b64652c18f5ff00c53e669b8c3b..0000000000000000000000000000000000000000
--- a/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/makeBasicKinematicParcelInjectionModels.C
+++ /dev/null
@@ -1,59 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by the
-    Free Software Foundation; either version 2 of the License, or (at your
-    option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM; if not, write to the Free Software Foundation,
-    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-\*---------------------------------------------------------------------------*/
-
-#include "basicKinematicParcel.H"
-#include "KinematicCloud.H"
-#include "NoInjection.H"
-#include "ManualInjection.H"
-#include "ConeInjection.H"
-
-namespace Foam
-{
-    makeInjectionModel(KinematicCloud<basicKinematicParcel>);
-
-    // Add instances of injection model to the table
-    makeInjectionModelType
-    (
-        NoInjection,
-        KinematicCloud,
-        basicKinematicParcel
-    );
-    makeInjectionModelType
-    (
-        ManualInjection,
-        KinematicCloud,
-        basicKinematicParcel
-    );
-    makeInjectionModelType
-    (
-        ConeInjection,
-        KinematicCloud,
-        basicKinematicParcel
-    );
-};
-
-
-// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/makeBasicKinematicParcelSubmodels.C b/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/makeBasicKinematicParcelSubmodels.C
new file mode 100644
index 0000000000000000000000000000000000000000..6aaa63f9c0614e9b462fba14bb5a96923051ce39
--- /dev/null
+++ b/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/makeBasicKinematicParcelSubmodels.C
@@ -0,0 +1,49 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "basicKinematicParcel.H"
+
+// Kinematic
+#include "makeParcelDispersionModels.H"
+#include "makeParcelDragModels.H"
+#include "makeParcelInjectionModels.H"
+#include "makeParcelPatchInteractionModels.H"
+#include "makeParcelPostProcessingModels.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    // Kinematic sub-models
+    makeParcelDispersionModels(basicKinematicParcel);
+    makeParcelDragModels(basicKinematicParcel);
+    makeParcelInjectionModels(basicKinematicParcel);
+    makeParcelPatchInteractionModels(basicKinematicParcel);
+    makeParcelPostProcessingModels(basicKinematicParcel);
+};
+
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/makeBasicKinematicParcelWallInteractionModels.C b/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/makeBasicKinematicParcelWallInteractionModels.C
deleted file mode 100644
index 3ec099a4cfc72865838630b384a0cca6ab5c00ef..0000000000000000000000000000000000000000
--- a/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/makeBasicKinematicParcelWallInteractionModels.C
+++ /dev/null
@@ -1,52 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by the
-    Free Software Foundation; either version 2 of the License, or (at your
-    option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM; if not, write to the Free Software Foundation,
-    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-\*---------------------------------------------------------------------------*/
-
-#include "basicKinematicParcel.H"
-#include "KinematicCloud.H"
-#include "Rebound.H"
-#include "StandardWallInteraction.H"
-
-namespace Foam
-{
-    makeWallInteractionModel(KinematicCloud<basicKinematicParcel>);
-
-    // Add instances of wall interaction model to the table
-    makeWallInteractionModelType
-    (
-        Rebound,
-        KinematicCloud,
-        basicKinematicParcel
-    );
-    makeWallInteractionModelType
-    (
-        StandardWallInteraction,
-        KinematicCloud,
-        basicKinematicParcel
-    );
-};
-
-
-// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/defineBasicReactingParcel.C b/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/defineBasicReactingParcel.C
deleted file mode 100644
index 5c45881ccf773ea0a287385acc024160d90dcacf..0000000000000000000000000000000000000000
--- a/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/defineBasicReactingParcel.C
+++ /dev/null
@@ -1,53 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by the
-    Free Software Foundation; either version 2 of the License, or (at your
-    option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM; if not, write to the Free Software Foundation,
-    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-\*---------------------------------------------------------------------------*/
-
-#include "basicReactingParcel.H"
-#include "ReactingCloud.H"
-
-namespace Foam
-{
-    defineTemplateTypeNameAndDebug(Cloud<basicReactingParcel>, 0);
-
-    defineParcelTypeNameAndDebug(KinematicParcel<basicReactingParcel>, 0);
-//    defineTemplateTypeNameAndDebug(KinematicParcel<basicReactingParcel>, 0);
-    defineParcelTypeNameAndDebug(ThermoParcel<basicReactingParcel>, 0);
-    defineTemplateTypeNameAndDebug(ThermoParcel<basicReactingParcel>, 0);
-    defineParcelTypeNameAndDebug(ReactingParcel<basicReactingParcel>, 0);
-    defineTemplateTypeNameAndDebug(ReactingParcel<basicReactingParcel>, 0);
-
-    defineParcelTypeNameAndDebug(KinematicCloud<basicReactingParcel>, 0);
-//    defineTemplateTypeNameAndDebug(KinematicCloud<basicReactingParcel>, 0);
-
-    defineParcelTypeNameAndDebug(ThermoCloud<basicReactingParcel>, 0);
-//    defineTemplateTypeNameAndDebug(ThermoCloud<basicReactingParcel>, 0);
-
-    defineParcelTypeNameAndDebug(ReactingCloud<basicReactingParcel>, 0);
-//    defineTemplateTypeNameAndDebug(ReactingCloud<basicReactingParcel>, 0);
-
-};
-
-
-// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelCompositionModels.C b/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelCompositionModels.C
deleted file mode 100644
index f5cdead7272e68d6ca0d4405a44dbda704c46583..0000000000000000000000000000000000000000
--- a/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelCompositionModels.C
+++ /dev/null
@@ -1,45 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by the
-    Free Software Foundation; either version 2 of the License, or (at your
-    option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM; if not, write to the Free Software Foundation,
-    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-\*---------------------------------------------------------------------------*/
-
-#include "basicReactingParcel.H"
-#include "ReactingCloud.H"
-#include "SingleMixtureFraction.H"
-
-namespace Foam
-{
-    makeCompositionModel(ReactingCloud<basicReactingParcel>);
-
-    // Add instances of composition model to the table
-    makeCompositionModelType
-    (
-        SingleMixtureFraction,
-        ReactingCloud,
-        basicReactingParcel
-    );
-};
-
-
-// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelDispersionModels.C b/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelDispersionModels.C
deleted file mode 100644
index 79e2149a6a9d8f72e3b117977aff6c198bff5db8..0000000000000000000000000000000000000000
--- a/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelDispersionModels.C
+++ /dev/null
@@ -1,65 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by the
-    Free Software Foundation; either version 2 of the License, or (at your
-    option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM; if not, write to the Free Software Foundation,
-    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-\*---------------------------------------------------------------------------*/
-
-#include "basicReactingParcel.H"
-#include "KinematicCloud.H"
-#include "NoDispersion.H"
-#include "GradientDispersionRAS.H"
-#include "StochasticDispersionRAS.H"
-
-namespace Foam
-{
-    makeDispersionModel(KinematicCloud<basicReactingParcel>);
-
-    defineNamedTemplateTypeNameAndDebug
-    (
-        DispersionRASModel<KinematicCloud<basicReactingParcel> >,
-        0
-    );
-
-    // Add instances of dispersion model to the table
-    makeDispersionModelType
-    (
-        NoDispersion,
-        KinematicCloud,
-        basicReactingParcel
-    );
-    makeDispersionModelType
-    (
-        GradientDispersionRAS,
-        KinematicCloud,
-        basicReactingParcel
-    );
-    makeDispersionModelType
-    (
-        StochasticDispersionRAS,
-        KinematicCloud,
-        basicReactingParcel
-    );
-};
-
-
-// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelDragModels.C b/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelDragModels.C
deleted file mode 100644
index 69943e76c37d818ce11dd2bfca308f4022e39215..0000000000000000000000000000000000000000
--- a/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelDragModels.C
+++ /dev/null
@@ -1,42 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by the
-    Free Software Foundation; either version 2 of the License, or (at your
-    option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM; if not, write to the Free Software Foundation,
-    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-\*---------------------------------------------------------------------------*/
-
-#include "basicReactingParcel.H"
-#include "KinematicCloud.H"
-#include "NoDrag.H"
-#include "SphereDrag.H"
-
-namespace Foam
-{
-    makeDragModel(KinematicCloud<basicReactingParcel>);
-
-    // Add instances of drag model to the table
-    makeDragModelType(NoDrag, KinematicCloud, basicReactingParcel);
-    makeDragModelType(SphereDrag, KinematicCloud, basicReactingParcel);
-};
-
-
-// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelHeatTransferModels.C b/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelHeatTransferModels.C
deleted file mode 100644
index 73bf380c82cd1618bf3dbd9b19661018cdbf4f65..0000000000000000000000000000000000000000
--- a/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelHeatTransferModels.C
+++ /dev/null
@@ -1,52 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by the
-    Free Software Foundation; either version 2 of the License, or (at your
-    option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM; if not, write to the Free Software Foundation,
-    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-\*---------------------------------------------------------------------------*/
-
-#include "basicReactingParcel.H"
-#include "ThermoCloud.H"
-#include "NoHeatTransfer.H"
-#include "RanzMarshall.H"
-
-namespace Foam
-{
-    makeHeatTransferModel(ThermoCloud<basicReactingParcel>);
-
-    // Add instances of heat transfer model to the table
-    makeHeatTransferModelType
-    (
-        NoHeatTransfer,
-        ThermoCloud,
-        basicReactingParcel
-    );
-    makeHeatTransferModelType
-    (
-        RanzMarshall,
-        ThermoCloud,
-        basicReactingParcel
-    );
-};
-
-
-// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelInjectionModels.C b/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelInjectionModels.C
deleted file mode 100644
index ed9f2bd6bed545df27462044b009421ae45bf126..0000000000000000000000000000000000000000
--- a/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelInjectionModels.C
+++ /dev/null
@@ -1,59 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by the
-    Free Software Foundation; either version 2 of the License, or (at your
-    option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM; if not, write to the Free Software Foundation,
-    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-\*---------------------------------------------------------------------------*/
-
-#include "basicReactingParcel.H"
-#include "ReactingCloud.H"
-#include "NoInjection.H"
-#include "ManualInjection.H"
-#include "ConeInjection.H"
-
-namespace Foam
-{
-    makeInjectionModel(KinematicCloud<basicReactingParcel>);
-
-    // Add instances of injection model to the table
-    makeInjectionModelType
-    (
-        NoInjection,
-        KinematicCloud,
-        basicReactingParcel
-    );
-    makeInjectionModelType
-    (
-        ManualInjection,
-        KinematicCloud,
-        basicReactingParcel
-    );
-    makeInjectionModelType
-    (
-        ConeInjection,
-        KinematicCloud,
-        basicReactingParcel
-    );
-};
-
-
-// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelMassTransferModels.C b/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelMassTransferModels.C
deleted file mode 100644
index 28cc3039980c3cdc498312f85505b7837998dcc8..0000000000000000000000000000000000000000
--- a/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelMassTransferModels.C
+++ /dev/null
@@ -1,59 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by the
-    Free Software Foundation; either version 2 of the License, or (at your
-    option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM; if not, write to the Free Software Foundation,
-    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-\*---------------------------------------------------------------------------*/
-
-#include "basicReactingParcel.H"
-#include "ThermoCloud.H"
-#include "NoMassTransfer.H"
-#include "ConstantRateDevolatilisation.H"
-#include "SingleKineticRateDevolatilisation.H"
-
-namespace Foam
-{
-    makeMassTransferModel(ReactingCloud<basicReactingParcel>);
-
-    // Add instances of mass transfer model to the table
-    makeMassTransferModelType
-    (
-        NoMassTransfer,
-        ReactingCloud,
-        basicReactingParcel
-    );
-    makeMassTransferModelType
-    (
-        ConstantRateDevolatilisation,
-        ReactingCloud,
-        basicReactingParcel
-    );
-    makeMassTransferModelType
-    (
-        SingleKineticRateDevolatilisation,
-        ReactingCloud,
-        basicReactingParcel
-    );
-};
-
-
-// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelSurfaceReactionModels.C b/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelSurfaceReactionModels.C
deleted file mode 100644
index e242d7e2fa89f35351dbaacc40655871247f2421..0000000000000000000000000000000000000000
--- a/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelSurfaceReactionModels.C
+++ /dev/null
@@ -1,45 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by the
-    Free Software Foundation; either version 2 of the License, or (at your
-    option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM; if not, write to the Free Software Foundation,
-    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-\*---------------------------------------------------------------------------*/
-
-#include "basicReactingParcel.H"
-#include "ReactingCloud.H"
-#include "NoSurfaceReaction.H"
-
-namespace Foam
-{
-    makeSurfaceReactionModel(ReactingCloud<basicReactingParcel>);
-
-    // Add instances of surface reaction model to the table
-    makeSurfaceReactionModelType
-    (
-        NoSurfaceReaction,
-        ReactingCloud,
-        basicReactingParcel
-    );
-};
-
-
-// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelWallInteractionModels.C b/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelWallInteractionModels.C
deleted file mode 100644
index 6cc346e8d98ac4d55f8ad0f743e8c36832ebb6c3..0000000000000000000000000000000000000000
--- a/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelWallInteractionModels.C
+++ /dev/null
@@ -1,53 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by the
-    Free Software Foundation; either version 2 of the License, or (at your
-    option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM; if not, write to the Free Software Foundation,
-    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-\*---------------------------------------------------------------------------*/
-
-#include "basicReactingParcel.H"
-#include "KinematicCloud.H"
-#include "Rebound.H"
-#include "StandardWallInteraction.H"
-
-namespace Foam
-{
-    makeWallInteractionModel(KinematicCloud<basicReactingParcel>);
-//    makeWallInteractionModel(ReactingCloud<basicReactingParcel>);
-
-    // Add instances of wall interaction model to the table
-    makeWallInteractionModelType
-    (
-        Rebound,
-        KinematicCloud,
-        basicReactingParcel
-    );
-    makeWallInteractionModelType
-    (
-        StandardWallInteraction,
-        KinematicCloud,
-        basicReactingParcel
-    );
-};
-
-
-// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/basicThermoParcel.C b/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/basicThermoParcel.C
index edbeef83b38b4b005527b2a0d99dbab9be1f1c36..7f2524cbd282cfb8d9543c069d22b07db8add93b 100644
--- a/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/basicThermoParcel.C
+++ b/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/basicThermoParcel.C
@@ -41,24 +41,35 @@ namespace Foam
 Foam::basicThermoParcel::basicThermoParcel
 (
     ThermoCloud<basicThermoParcel>& owner,
-    const label typeId,
     const vector position,
-    const label celli,
+    const label cellI
+)
+:
+    ThermoParcel<basicThermoParcel>(owner, position, cellI)
+{}
+
+
+Foam::basicThermoParcel::basicThermoParcel
+(
+    ThermoCloud<basicThermoParcel>& owner,
+    const vector position,
+    const label cellI,
+    const label typeId,
+    const scalar nParticle0,
     const scalar d0,
     const vector U0,
-    const scalar nParticle0,
     const constantProperties& constProps
 )
 :
     ThermoParcel<basicThermoParcel>
     (
         owner,
-        typeId,
         position,
-        celli,
+        cellI,
+        typeId,
+        nParticle0,
         d0,
         U0,
-        nParticle0,
         constProps
     )
 {}
@@ -75,6 +86,15 @@ Foam::basicThermoParcel::basicThermoParcel
 {}
 
 
+Foam::basicThermoParcel::basicThermoParcel
+(
+    const basicThermoParcel& p
+)
+:
+    ThermoParcel<basicThermoParcel>(p)
+{}
+
+
 // * * * * * * * * * * * * * * * *  Destructors  * * * * * * * * * * * * * * //
 
 Foam::basicThermoParcel::~basicThermoParcel()
diff --git a/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/basicThermoParcel.H b/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/basicThermoParcel.H
index 0eb00002df4dccecfd3292642d1fa69f2b08955e..974c36e23a96f51bb57d3009fea0a1951fbf331e 100644
--- a/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/basicThermoParcel.H
+++ b/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/basicThermoParcel.H
@@ -44,7 +44,7 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                         Class basicThermoParcel Declaration
+                      Class basicThermoParcel Declaration
 \*---------------------------------------------------------------------------*/
 
 class basicThermoParcel
@@ -59,16 +59,25 @@ public:
 
     // Constructors
 
+       //- Construct from owner, position, and cloud owner
+       //  Other properties initialised as null
+       basicThermoParcel
+       (
+            ThermoCloud<basicThermoParcel>& owner,
+            const vector position,
+            const label cellI
+       );
+
        //- Construct from components
        basicThermoParcel
        (
             ThermoCloud<basicThermoParcel>& owner,
-            const label typeId,
             const vector position,
-            const label celli,
+            const label cellI,
+            const label typeId,
+            const scalar nParticle0,
             const scalar d0,
             const vector U0,
-            const scalar nParticle0,
             const constantProperties& constProps
         );
 
@@ -80,16 +89,22 @@ public:
             bool readFields = true
         );
 
+        //- Construct as a copy
+        basicThermoParcel(const basicThermoParcel& p);
+
         //- Construct and return a clone
         autoPtr<basicThermoParcel> clone() const
         {
-            return autoPtr<basicThermoParcel>(new basicThermoParcel(*this));
+            return
+                autoPtr<basicThermoParcel>
+                (
+                    new basicThermoParcel(*this)
+                );
         }
 
 
-    // Destructors
-
-        virtual ~basicThermoParcel();
+    //- Destructor
+    virtual ~basicThermoParcel();
 };
 
 
diff --git a/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/defineBasicThermoParcel.C b/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/defineBasicThermoParcel.C
index ba76c4675628d835618cb695e419defbe6103cf8..2e67f54e815ab2e3e296126edae8ccd005471e2c 100644
--- a/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/defineBasicThermoParcel.C
+++ b/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/defineBasicThermoParcel.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -26,21 +26,23 @@ License
 
 #include "basicThermoParcel.H"
 #include "ThermoCloud.H"
+#include "makeParcelIOList.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 namespace Foam
 {
     defineTemplateTypeNameAndDebug(Cloud<basicThermoParcel>, 0);
 
     defineParcelTypeNameAndDebug(KinematicParcel<basicThermoParcel>, 0);
-//    defineTemplateTypeNameAndDebug(KinematicParcel<basicThermoParcel>, 0);
     defineParcelTypeNameAndDebug(ThermoParcel<basicThermoParcel>, 0);
     defineTemplateTypeNameAndDebug(ThermoParcel<basicThermoParcel>, 0);
 
     defineParcelTypeNameAndDebug(KinematicCloud<basicThermoParcel>, 0);
-//    defineTemplateTypeNameAndDebug(KinematicCloud<basicThermoParcel>, 0);
 
     defineParcelTypeNameAndDebug(ThermoCloud<basicThermoParcel>, 0);
-//    defineTemplateTypeNameAndDebug(ThermoCloud<basicThermoParcel>, 0);
+
+    makeParcelIOList(basicThermoParcel);
 };
 
 
diff --git a/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/makeBasicThermoParcelDispersionModels.C b/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/makeBasicThermoParcelDispersionModels.C
deleted file mode 100644
index f1ab424f9bab6113a373e34b735d8f3a13ebbaa8..0000000000000000000000000000000000000000
--- a/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/makeBasicThermoParcelDispersionModels.C
+++ /dev/null
@@ -1,65 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by the
-    Free Software Foundation; either version 2 of the License, or (at your
-    option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM; if not, write to the Free Software Foundation,
-    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-\*---------------------------------------------------------------------------*/
-
-#include "basicThermoParcel.H"
-#include "KinematicCloud.H"
-#include "NoDispersion.H"
-#include "GradientDispersionRAS.H"
-#include "StochasticDispersionRAS.H"
-
-namespace Foam
-{
-    makeDispersionModel(KinematicCloud<basicThermoParcel>);
-
-    defineNamedTemplateTypeNameAndDebug
-    (
-        DispersionRASModel<KinematicCloud<basicThermoParcel> >,
-        0
-    );
-
-    // Add instances of dispersion model to the table
-    makeDispersionModelType
-    (
-        NoDispersion,
-        KinematicCloud,
-        basicThermoParcel
-    );
-    makeDispersionModelType
-    (
-        GradientDispersionRAS,
-        KinematicCloud,
-        basicThermoParcel
-    );
-    makeDispersionModelType
-    (
-        StochasticDispersionRAS,
-        KinematicCloud,
-        basicThermoParcel
-    );
-};
-
-
-// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/makeBasicThermoParcelDragModels.C b/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/makeBasicThermoParcelDragModels.C
deleted file mode 100644
index b477000cf52757a84ae0a148128eaf60800e4bff..0000000000000000000000000000000000000000
--- a/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/makeBasicThermoParcelDragModels.C
+++ /dev/null
@@ -1,42 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by the
-    Free Software Foundation; either version 2 of the License, or (at your
-    option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM; if not, write to the Free Software Foundation,
-    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-\*---------------------------------------------------------------------------*/
-
-#include "basicThermoParcel.H"
-#include "KinematicCloud.H"
-#include "NoDrag.H"
-#include "SphereDrag.H"
-
-namespace Foam
-{
-    makeDragModel(KinematicCloud<basicThermoParcel>);
-
-    // Add instances of drag model to the table
-    makeDragModelType(NoDrag, KinematicCloud, basicThermoParcel);
-    makeDragModelType(SphereDrag, KinematicCloud, basicThermoParcel);
-};
-
-
-// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/makeBasicThermoParcelHeatTransferModels.C b/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/makeBasicThermoParcelHeatTransferModels.C
deleted file mode 100644
index d8a3c67c97560553618be1ecb21cef4c8636fa22..0000000000000000000000000000000000000000
--- a/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/makeBasicThermoParcelHeatTransferModels.C
+++ /dev/null
@@ -1,42 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by the
-    Free Software Foundation; either version 2 of the License, or (at your
-    option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM; if not, write to the Free Software Foundation,
-    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-\*---------------------------------------------------------------------------*/
-
-#include "basicThermoParcel.H"
-#include "ThermoCloud.H"
-#include "NoHeatTransfer.H"
-#include "RanzMarshall.H"
-
-namespace Foam
-{
-    makeHeatTransferModel(ThermoCloud<basicThermoParcel>);
-
-    // Add instances of heat transfer model to the table
-    makeHeatTransferModelType(NoHeatTransfer, ThermoCloud, basicThermoParcel);
-    makeHeatTransferModelType(RanzMarshall, ThermoCloud, basicThermoParcel);
-};
-
-
-// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/makeBasicThermoParcelInjectionModels.C b/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/makeBasicThermoParcelInjectionModels.C
deleted file mode 100644
index cb51b8685257ca1a7860fd0d30e7e421d21fd5e8..0000000000000000000000000000000000000000
--- a/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/makeBasicThermoParcelInjectionModels.C
+++ /dev/null
@@ -1,46 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by the
-    Free Software Foundation; either version 2 of the License, or (at your
-    option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM; if not, write to the Free Software Foundation,
-    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-\*---------------------------------------------------------------------------*/
-
-#include "basicThermoParcel.H"
-#include "ThermoCloud.H"
-#include "NoInjection.H"
-#include "ManualInjection.H"
-#include "ConeInjection.H"
-
-namespace Foam
-{
-    makeInjectionModel(KinematicCloud<basicThermoParcel>);
-
-    // Add instances of injection model to the table
-    makeInjectionModelType(NoInjection, KinematicCloud, basicThermoParcel);
-
-    makeInjectionModelType(ManualInjection, KinematicCloud, basicThermoParcel);
-
-    makeInjectionModelType(ConeInjection, KinematicCloud, basicThermoParcel);
-};
-
-
-// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/makeBasicThermoParcelSubmodels.C b/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/makeBasicThermoParcelSubmodels.C
new file mode 100644
index 0000000000000000000000000000000000000000..044d8db68ed797c97f9b181bdec78326a1ee9656
--- /dev/null
+++ b/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/makeBasicThermoParcelSubmodels.C
@@ -0,0 +1,55 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "basicThermoParcel.H"
+
+// Kinematic
+#include "makeParcelDispersionModels.H"
+#include "makeParcelDragModels.H"
+#include "makeParcelInjectionModels.H"
+#include "makeParcelPatchInteractionModels.H"
+#include "makeParcelPostProcessingModels.H"
+
+// Thermodynamic
+#include "makeParcelHeatTransferModels.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    // Kinematic sub-models
+    makeParcelDispersionModels(basicThermoParcel);
+    makeParcelDragModels(basicThermoParcel);
+    makeParcelInjectionModels(basicThermoParcel);
+    makeParcelPatchInteractionModels(basicThermoParcel);
+    makeParcelPostProcessingModels(basicThermoParcel);
+
+    // Thermo sub-models
+    makeParcelHeatTransferModels(basicThermoParcel);
+};
+
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/makeBasicThermoParcelWallInteractionModels.C b/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/makeBasicThermoParcelWallInteractionModels.C
deleted file mode 100644
index 03402510f6925d545dbbded33781f55c63d2bf14..0000000000000000000000000000000000000000
--- a/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/makeBasicThermoParcelWallInteractionModels.C
+++ /dev/null
@@ -1,52 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by the
-    Free Software Foundation; either version 2 of the License, or (at your
-    option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM; if not, write to the Free Software Foundation,
-    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-\*---------------------------------------------------------------------------*/
-
-#include "basicThermoParcel.H"
-#include "KinematicCloud.H"
-#include "Rebound.H"
-#include "StandardWallInteraction.H"
-
-namespace Foam
-{
-    makeWallInteractionModel(KinematicCloud<basicThermoParcel>);
-
-    // Add instances of wall interaction model to the table
-    makeWallInteractionModelType
-    (
-        Rebound,
-        KinematicCloud,
-        basicThermoParcel
-    );
-    makeWallInteractionModelType
-    (
-        StandardWallInteraction,
-        KinematicCloud,
-        basicThermoParcel
-    );
-};
-
-
-// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/include/createReactingMultiphaseParcelTypes.H b/src/lagrangian/intermediate/parcels/include/createReactingMultiphaseParcelTypes.H
new file mode 100644
index 0000000000000000000000000000000000000000..de8d5a04caa4633e833f33b58f7d564b2043a030
--- /dev/null
+++ b/src/lagrangian/intermediate/parcels/include/createReactingMultiphaseParcelTypes.H
@@ -0,0 +1,99 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef createReactingMultiphaseParcelTypes_H
+#define createReactingMultiphaseParcelTypes_H
+
+#include "makeParcelIOList.H"
+#include "thermoPhysicsTypes.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#define createReactingMultiphaseParcelType(ParcelType)                        \
+                                                                              \
+    createReactingMultiphaseParcelThermoType                                  \
+    (                                                                         \
+        ParcelType,                                                           \
+        constGasThermoPhysics                                                 \
+    );                                                                        \
+    createReactingMultiphaseParcelThermoType                                  \
+    (                                                                         \
+        ParcelType,                                                           \
+        gasThermoPhysics                                                      \
+    );                                                                        \
+    createReactingMultiphaseParcelThermoType                                  \
+    (                                                                         \
+        ParcelType,                                                           \
+        icoPoly8ThermoPhysics                                                 \
+    );
+
+
+#define createReactingMultiphaseParcelThermoType(ParcelType, ThermoType)      \
+                                                                              \
+    typedef ParcelType<ThermoType> ParcelType##ThermoType;                    \
+                                                                              \
+    makeParcelIOList(ParcelType##ThermoType);                                 \
+                                                                              \
+    defineTemplateTypeNameAndDebug(ParcelType##ThermoType, 0);                \
+    defineTemplateTypeNameAndDebug(Particle<ParcelType##ThermoType>, 0);      \
+    defineTemplateTypeNameAndDebug(Cloud<ParcelType##ThermoType>, 0);         \
+                                                                              \
+    defineParcelTypeNameAndDebug(KinematicParcel<ParcelType##ThermoType>, 0); \
+    defineTemplateTypeNameAndDebug                                            \
+    (                                                                         \
+        KinematicParcel<ParcelType##ThermoType>,                              \
+        0                                                                     \
+    );                                                                        \
+    defineParcelTypeNameAndDebug(ThermoParcel<ParcelType##ThermoType>, 0);    \
+    defineTemplateTypeNameAndDebug(ThermoParcel<ParcelType##ThermoType>, 0);  \
+    defineParcelTypeNameAndDebug(ReactingParcel<ParcelType##ThermoType>, 0);  \
+    defineTemplateTypeNameAndDebug(ReactingParcel<ParcelType##ThermoType>, 0);\
+    defineParcelTypeNameAndDebug                                              \
+    (                                                                         \
+        ReactingMultiphaseParcel<ParcelType##ThermoType>,                     \
+        0                                                                     \
+    );                                                                        \
+    defineTemplateTypeNameAndDebug                                            \
+    (                                                                         \
+        ReactingMultiphaseParcel<ParcelType##ThermoType>,                     \
+        0                                                                     \
+    );                                                                        \
+                                                                              \
+    defineParcelTypeNameAndDebug(KinematicCloud<ParcelType##ThermoType>, 0);  \
+    defineParcelTypeNameAndDebug(ThermoCloud<ParcelType##ThermoType>, 0);     \
+    defineParcelTypeNameAndDebug(ReactingCloud<ParcelType##ThermoType>, 0);   \
+    defineParcelTypeNameAndDebug                                              \
+    (                                                                         \
+        ReactingMultiphaseCloud<ParcelType##ThermoType>,                      \
+        0                                                                     \
+    );
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/include/createReactingParcelTypes.H b/src/lagrangian/intermediate/parcels/include/createReactingParcelTypes.H
new file mode 100644
index 0000000000000000000000000000000000000000..bea3f8a9dcd16fffeab554456c2b94ca27ba9013
--- /dev/null
+++ b/src/lagrangian/intermediate/parcels/include/createReactingParcelTypes.H
@@ -0,0 +1,72 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef createReactingParcelTypes_H
+#define createReactingParcelTypes_H
+
+#include "makeParcelIOList.H"
+#include "thermoPhysicsTypes.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#define createReactingParcelType(ParcelType)                                  \
+                                                                              \
+    createReactingParcelThermoType(ParcelType, constGasThermoPhysics);        \
+    createReactingParcelThermoType(ParcelType, gasThermoPhysics);             \
+    createReactingParcelThermoType(ParcelType, icoPoly8ThermoPhysics);
+
+
+#define createReactingParcelThermoType(ParcelType, ThermoType)                \
+                                                                              \
+    typedef ParcelType<ThermoType> ParcelType##ThermoType;                    \
+                                                                              \
+    makeParcelIOList(ParcelType##ThermoType);                                 \
+                                                                              \
+    defineTemplateTypeNameAndDebug(ParcelType##ThermoType, 0);                \
+    defineTemplateTypeNameAndDebug(Particle<ParcelType##ThermoType>, 0);      \
+    defineTemplateTypeNameAndDebug(Cloud<ParcelType##ThermoType>, 0);         \
+                                                                              \
+    defineParcelTypeNameAndDebug(KinematicParcel<ParcelType##ThermoType>, 0); \
+    defineTemplateTypeNameAndDebug                                            \
+    (                                                                         \
+        KinematicParcel<ParcelType##ThermoType>,                              \
+        0                                                                     \
+    );                                                                        \
+    defineParcelTypeNameAndDebug(ThermoParcel<ParcelType##ThermoType>, 0);    \
+    defineTemplateTypeNameAndDebug(ThermoParcel<ParcelType##ThermoType>, 0);  \
+    defineParcelTypeNameAndDebug(ReactingParcel<ParcelType##ThermoType>, 0);  \
+    defineTemplateTypeNameAndDebug(ReactingParcel<ParcelType##ThermoType>, 0);\
+                                                                              \
+    defineParcelTypeNameAndDebug(KinematicCloud<ParcelType##ThermoType>, 0);  \
+    defineParcelTypeNameAndDebug(ThermoCloud<ParcelType##ThermoType>, 0);     \
+    defineParcelTypeNameAndDebug(ReactingCloud<ParcelType##ThermoType>, 0);
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/include/createTrackedReactingParcelTypes.H b/src/lagrangian/intermediate/parcels/include/createTrackedReactingParcelTypes.H
new file mode 100644
index 0000000000000000000000000000000000000000..95e46e3d6fed33aea291f3b0313ad727b8cff119
--- /dev/null
+++ b/src/lagrangian/intermediate/parcels/include/createTrackedReactingParcelTypes.H
@@ -0,0 +1,75 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef createTrackedReactingParcelTypes_H
+#define createTrackedReactingParcelTypes_H
+
+#include "createReactingParcelTypes.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#define createTrackedReactingParcelType(ParcelType)                           \
+                                                                              \
+    createTrackedReactingParcelThermoType                                     \
+    (                                                                         \
+        ParcelType,                                                           \
+        constGasThermoPhysics                                                 \
+    );                                                                        \
+    createTrackedReactingParcelThermoType                                     \
+    (                                                                         \
+        ParcelType,                                                           \
+        gasThermoPhysics                                                      \
+    );                                                                        \
+    createTrackedReactingParcelThermoType                                     \
+    (                                                                         \
+        ParcelType,                                                           \
+        icoPoly8ThermoPhysics                                                 \
+    );
+
+
+#define createTrackedReactingParcelThermoType(ParcelType, ThermoType)         \
+                                                                              \
+    createReactingParcelThermoType(ParcelType, ThermoType);                   \
+                                                                              \
+    typedef ParcelType<ThermoType> ParcelType##ThermoType;                    \
+                                                                              \
+    defineParcelTypeNameAndDebug                                              \
+    (                                                                         \
+        TrackedReactingParcel<ParcelType##ThermoType>,                        \
+        0                                                                     \
+    );                                                                        \
+    defineTemplateTypeNameAndDebug                                            \
+    (                                                                         \
+        TrackedReactingParcel<ParcelType##ThermoType>,                        \
+        0                                                                     \
+    );
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/include/makeParcelDispersionModels.H b/src/lagrangian/intermediate/parcels/include/makeParcelDispersionModels.H
new file mode 100644
index 0000000000000000000000000000000000000000..4763688f5205dd39241b779c1ad47738c12318c8
--- /dev/null
+++ b/src/lagrangian/intermediate/parcels/include/makeParcelDispersionModels.H
@@ -0,0 +1,74 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef makeParcelDispersionModels_h
+#define makeParcelDispersionModels_h
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "KinematicCloud.H"
+
+#include "NoDispersion.H"
+#include "GradientDispersionRAS.H"
+#include "StochasticDispersionRAS.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#define makeParcelDispersionModels(ParcelType)                                \
+                                                                              \
+    makeDispersionModel(KinematicCloud<ParcelType>);                          \
+                                                                              \
+    defineNamedTemplateTypeNameAndDebug                                       \
+    (                                                                         \
+        DispersionRASModel<KinematicCloud<ParcelType> >,                      \
+        0                                                                     \
+    );                                                                        \
+                                                                              \
+    makeDispersionModelType                                                   \
+    (                                                                         \
+        NoDispersion,                                                         \
+        KinematicCloud,                                                       \
+        ParcelType                                                            \
+    );                                                                        \
+    makeDispersionModelType                                                   \
+    (                                                                         \
+        GradientDispersionRAS,                                                \
+        KinematicCloud,                                                       \
+        ParcelType                                                            \
+    );                                                                        \
+    makeDispersionModelType                                                   \
+    (                                                                         \
+        StochasticDispersionRAS,                                              \
+        KinematicCloud,                                                       \
+        ParcelType                                                            \
+    );
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/include/makeParcelDragModels.H b/src/lagrangian/intermediate/parcels/include/makeParcelDragModels.H
new file mode 100644
index 0000000000000000000000000000000000000000..0d47aaf2393bd880b63e3cdbeafb4fdfa12e952a
--- /dev/null
+++ b/src/lagrangian/intermediate/parcels/include/makeParcelDragModels.H
@@ -0,0 +1,51 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef makeParcelDragModels_H
+#define makeParcelDragModels_H
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "KinematicCloud.H"
+
+#include "NoDrag.H"
+#include "SphereDrag.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#define makeParcelDragModels(ParcelType)                                     \
+                                                                             \
+    makeDragModel(KinematicCloud<ParcelType>);                               \
+                                                                             \
+    makeDragModelType(NoDrag, KinematicCloud, ParcelType);                   \
+    makeDragModelType(SphereDrag, KinematicCloud, ParcelType);
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/include/makeParcelHeatTransferModels.H b/src/lagrangian/intermediate/parcels/include/makeParcelHeatTransferModels.H
new file mode 100644
index 0000000000000000000000000000000000000000..a2ce1942020b529d3ec1c651296ae8bc53ebeead
--- /dev/null
+++ b/src/lagrangian/intermediate/parcels/include/makeParcelHeatTransferModels.H
@@ -0,0 +1,61 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef makeParcelHeatTransferModels_H
+#define makeParcelHeatTransferModels_H
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "ThermoCloud.H"
+
+#include "NoHeatTransfer.H"
+#include "RanzMarshall.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#define makeParcelHeatTransferModels(ParcelType)                              \
+                                                                              \
+    makeHeatTransferModel(ThermoCloud<ParcelType>);                           \
+                                                                              \
+    makeHeatTransferModelType                                                 \
+    (                                                                         \
+        NoHeatTransfer,                                                       \
+        ThermoCloud,                                                          \
+        ParcelType                                                            \
+    );                                                                        \
+    makeHeatTransferModelType                                                 \
+    (                                                                         \
+        RanzMarshall,                                                         \
+        ThermoCloud,                                                          \
+        ParcelType                                                            \
+    );                                                                        \
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/include/makeParcelInjectionModels.H b/src/lagrangian/intermediate/parcels/include/makeParcelInjectionModels.H
new file mode 100644
index 0000000000000000000000000000000000000000..c247249f9d252f20f41c3ab38e5115f6736d2dfd
--- /dev/null
+++ b/src/lagrangian/intermediate/parcels/include/makeParcelInjectionModels.H
@@ -0,0 +1,96 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef makeParcelInjectionModels_H
+#define makeParcelInjectionModels_H
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "KinematicCloud.H"
+
+#include "ConeInjection.H"
+#include "ConeInjectionMP.H"
+#include "FieldActivatedInjection.H"
+#include "KinematicLookupTableInjection.H"
+#include "ManualInjection.H"
+#include "NoInjection.H"
+#include "PatchInjection.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#define makeParcelInjectionModels(ParcelType)                                 \
+                                                                              \
+    makeInjectionModel(KinematicCloud<ParcelType>);                           \
+                                                                              \
+    makeInjectionModelType                                                    \
+    (                                                                         \
+        ConeInjection,                                                        \
+        KinematicCloud,                                                       \
+        ParcelType                                                            \
+    );                                                                        \
+    makeInjectionModelType                                                    \
+    (                                                                         \
+        ConeInjectionMP,                                                      \
+        KinematicCloud,                                                       \
+        ParcelType                                                            \
+    );                                                                        \
+    makeInjectionModelType                                                    \
+    (                                                                         \
+        FieldActivatedInjection,                                              \
+        KinematicCloud,                                                       \
+        ParcelType                                                            \
+    );                                                                        \
+    makeInjectionModelType                                                    \
+    (                                                                         \
+        KinematicLookupTableInjection,                                        \
+        KinematicCloud,                                                       \
+        ParcelType                                                            \
+    );                                                                        \
+    makeInjectionModelType                                                    \
+    (                                                                         \
+        ManualInjection,                                                      \
+        KinematicCloud,                                                       \
+        ParcelType                                                            \
+    );                                                                        \
+    makeInjectionModelType                                                    \
+    (                                                                         \
+        NoInjection,                                                          \
+        KinematicCloud,                                                       \
+        ParcelType                                                            \
+    );                                                                        \
+    makeInjectionModelType                                                    \
+    (                                                                         \
+        PatchInjection,                                                       \
+        KinematicCloud,                                                       \
+        ParcelType                                                            \
+    );
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/include/makeParcelPatchInteractionModels.H b/src/lagrangian/intermediate/parcels/include/makeParcelPatchInteractionModels.H
new file mode 100644
index 0000000000000000000000000000000000000000..f3141b67d3eb99584852a8830c2fb3968ae7c51b
--- /dev/null
+++ b/src/lagrangian/intermediate/parcels/include/makeParcelPatchInteractionModels.H
@@ -0,0 +1,68 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef makeParcelPatchInteractionModels_H
+#define makeParcelPatchInteractionModels_H
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "KinematicCloud.H"
+
+#include "LocalInteraction.H"
+#include "Rebound.H"
+#include "StandardWallInteraction.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#define makeParcelPatchInteractionModels(ParcelType)                          \
+                                                                              \
+    makePatchInteractionModel(KinematicCloud<ParcelType>);                    \
+                                                                              \
+    makePatchInteractionModelType                                             \
+    (                                                                         \
+        LocalInteraction,                                                     \
+        KinematicCloud,                                                       \
+        ParcelType                                                            \
+    );                                                                        \
+    makePatchInteractionModelType                                             \
+    (                                                                         \
+        Rebound,                                                              \
+        KinematicCloud,                                                       \
+        ParcelType                                                            \
+    );                                                                        \
+    makePatchInteractionModelType                                             \
+    (                                                                         \
+        StandardWallInteraction,                                              \
+        KinematicCloud,                                                       \
+        ParcelType                                                            \
+    );
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/include/makeParcelPostProcessingModels.H b/src/lagrangian/intermediate/parcels/include/makeParcelPostProcessingModels.H
new file mode 100644
index 0000000000000000000000000000000000000000..51aa8e2a53c07127d0b6ba4e902ca29cda84eae4
--- /dev/null
+++ b/src/lagrangian/intermediate/parcels/include/makeParcelPostProcessingModels.H
@@ -0,0 +1,61 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef makeParcelPostProcessingModels_H
+#define makeParcelPostProcessingModels_H
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "KinematicCloud.H"
+
+#include "NoPostProcessing.H"
+#include "PatchPostProcessing.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#define makeParcelPostProcessingModels(ParcelType)                            \
+                                                                              \
+    makePostProcessingModel(KinematicCloud<ParcelType>);                      \
+                                                                              \
+    makePostProcessingModelType                                               \
+    (                                                                         \
+        NoPostProcessing,                                                     \
+        KinematicCloud,                                                       \
+        ParcelType                                                            \
+    );                                                                        \
+    makePostProcessingModelType                                               \
+    (                                                                         \
+        PatchPostProcessing,                                                  \
+        KinematicCloud,                                                       \
+        ParcelType                                                            \
+    );
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/include/makeReactingMultiphaseParcelCompositionModels.H b/src/lagrangian/intermediate/parcels/include/makeReactingMultiphaseParcelCompositionModels.H
new file mode 100644
index 0000000000000000000000000000000000000000..4f703d49676c80b883930a4cdf3286b4bf069715
--- /dev/null
+++ b/src/lagrangian/intermediate/parcels/include/makeReactingMultiphaseParcelCompositionModels.H
@@ -0,0 +1,75 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef makeReactingMultiphaseParcelCompositionModels_H
+#define makeReactingMultiphaseParcelCompositionModels_H
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "thermoPhysicsTypes.H"
+#include "ReactingCloud.H"
+
+#include "SingleMixtureFraction.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#define makeReactingMultiphaseCompositionModels(ParcelType)                   \
+                                                                              \
+    makeReactingMultiphaseCompositionModelThermoType                          \
+    (                                                                         \
+        ParcelType,                                                           \
+        constGasThermoPhysics                                                 \
+    );                                                                        \
+    makeReactingMultiphaseCompositionModelThermoType                          \
+    (                                                                         \
+        ParcelType,                                                           \
+        gasThermoPhysics                                                      \
+    );                                                                        \
+    makeReactingMultiphaseCompositionModelThermoType                          \
+    (                                                                         \
+        ParcelType,                                                           \
+        icoPoly8ThermoPhysics                                                 \
+    );
+
+
+#define makeReactingMultiphaseCompositionModelThermoType(ParcelType, ThermoType)\
+                                                                              \
+    makeCompositionModel(ReactingCloud<ParcelType<ThermoType> >);             \
+                                                                              \
+    makeCompositionModelThermoType                                            \
+    (                                                                         \
+        SingleMixtureFraction,                                                \
+        ReactingCloud,                                                        \
+        ParcelType,                                                           \
+        ThermoType                                                            \
+    );
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/include/makeReactingMultiphaseParcelDevolatilisationModels.H b/src/lagrangian/intermediate/parcels/include/makeReactingMultiphaseParcelDevolatilisationModels.H
new file mode 100644
index 0000000000000000000000000000000000000000..d293222c5b516b20003677f424f10cbb723603bd
--- /dev/null
+++ b/src/lagrangian/intermediate/parcels/include/makeReactingMultiphaseParcelDevolatilisationModels.H
@@ -0,0 +1,94 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef makeReactingMultiphaseParcelDevolatilisationModels_H
+#define makeReactingMultiphaseParcelDevolatilisationModels_H
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "thermoPhysicsTypes.H"
+#include "ReactingMultiphaseCloud.H"
+
+#include "ConstantRateDevolatilisation.H"
+#include "NoDevolatilisation.H"
+#include "SingleKineticRateDevolatilisation.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#define makeReactingMultiphaseDevolatilisationModels(ParcelType)              \
+                                                                              \
+    makeReactingMultiphaseDevolatilisationModelThermoType                     \
+    (                                                                         \
+        ParcelType,                                                           \
+        constGasThermoPhysics                                                 \
+    );                                                                        \
+    makeReactingMultiphaseDevolatilisationModelThermoType                     \
+    (                                                                         \
+        ParcelType,                                                           \
+        gasThermoPhysics                                                      \
+    );                                                                        \
+    makeReactingMultiphaseDevolatilisationModelThermoType                     \
+    (                                                                         \
+        ParcelType,                                                           \
+        icoPoly8ThermoPhysics                                                 \
+    );
+
+
+#define makeReactingMultiphaseDevolatilisationModelThermoType(ParcelType, ThermoType)\
+                                                                              \
+    makeDevolatilisationModel                                                 \
+    (                                                                         \
+        ReactingMultiphaseCloud<ParcelType<ThermoType> >                      \
+    );                                                                        \
+                                                                              \
+    makeDevolatilisationModelThermoType                                       \
+    (                                                                         \
+        ConstantRateDevolatilisation,                                         \
+        ReactingMultiphaseCloud,                                              \
+        ParcelType,                                                           \
+        ThermoType                                                            \
+    );                                                                        \
+    makeDevolatilisationModelThermoType                                       \
+    (                                                                         \
+        NoDevolatilisation,                                                   \
+        ReactingMultiphaseCloud,                                              \
+        ParcelType,                                                           \
+        ThermoType                                                            \
+    );                                                                        \
+    makeDevolatilisationModelThermoType                                       \
+    (                                                                         \
+        SingleKineticRateDevolatilisation,                                    \
+        ReactingMultiphaseCloud,                                              \
+        ParcelType,                                                           \
+        ThermoType                                                            \
+    );
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/include/makeReactingMultiphaseParcelInjectionModels.H b/src/lagrangian/intermediate/parcels/include/makeReactingMultiphaseParcelInjectionModels.H
new file mode 100644
index 0000000000000000000000000000000000000000..e93dce23757777bd0975f7d2c337225d3034b820
--- /dev/null
+++ b/src/lagrangian/intermediate/parcels/include/makeReactingMultiphaseParcelInjectionModels.H
@@ -0,0 +1,117 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef makeReactingMultiphaseParcelInjectionModels_H
+#define makeReactingMultiphaseParcelInjectionModels_H
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "thermoPhysicsTypes.H"
+#include "KinematicCloud.H"
+
+#include "ConeInjection.H"
+#include "ConeInjectionMP.H"
+#include "FieldActivatedInjection.H"
+#include "ManualInjection.H"
+#include "NoInjection.H"
+#include "PatchInjection.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#define makeReactingMultiphaseInjectionModels(ParcelType)                     \
+                                                                              \
+    makeReactingMultiphaseInjectionModelThermoType                            \
+    (                                                                         \
+        ParcelType,                                                           \
+        constGasThermoPhysics                                                 \
+    );                                                                        \
+                                                                              \
+    makeReactingMultiphaseInjectionModelThermoType                            \
+    (                                                                         \
+        ParcelType,                                                           \
+        gasThermoPhysics                                                      \
+    );                                                                        \
+                                                                              \
+    makeReactingMultiphaseInjectionModelThermoType                            \
+    (                                                                         \
+        ParcelType,                                                           \
+        icoPoly8ThermoPhysics                                                 \
+    );
+
+
+#define makeReactingMultiphaseInjectionModelThermoType(ParcelType, ThermoType)\
+                                                                              \
+    makeInjectionModel(KinematicCloud<ParcelType<ThermoType> >);              \
+                                                                              \
+    makeInjectionModelThermoType                                              \
+    (                                                                         \
+        ConeInjection,                                                        \
+        KinematicCloud,                                                       \
+        ParcelType,                                                           \
+        ThermoType                                                            \
+    );                                                                        \
+    makeInjectionModelThermoType                                              \
+    (                                                                         \
+        ConeInjectionMP,                                                      \
+        KinematicCloud,                                                       \
+        ParcelType,                                                           \
+        ThermoType                                                            \
+    );                                                                        \
+    makeInjectionModelThermoType                                              \
+    (                                                                         \
+        FieldActivatedInjection,                                              \
+        KinematicCloud,                                                       \
+        ParcelType,                                                           \
+        ThermoType                                                            \
+    );                                                                        \
+    makeInjectionModelThermoType                                              \
+    (                                                                         \
+        ManualInjection,                                                      \
+        KinematicCloud,                                                       \
+        ParcelType,                                                           \
+        ThermoType                                                            \
+    );                                                                        \
+    makeInjectionModelThermoType                                              \
+    (                                                                         \
+        NoInjection,                                                          \
+        KinematicCloud,                                                       \
+        ParcelType,                                                           \
+        ThermoType                                                            \
+    );                                                                        \
+    makeInjectionModelThermoType                                              \
+    (                                                                         \
+        PatchInjection,                                                       \
+        KinematicCloud,                                                       \
+        ParcelType,                                                           \
+        ThermoType                                                            \
+    );                                                                        \
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/include/makeReactingMultiphaseParcelSurfaceReactionModels.H b/src/lagrangian/intermediate/parcels/include/makeReactingMultiphaseParcelSurfaceReactionModels.H
new file mode 100644
index 0000000000000000000000000000000000000000..47bbdcefb3d02d4525423438a549de8b2c668969
--- /dev/null
+++ b/src/lagrangian/intermediate/parcels/include/makeReactingMultiphaseParcelSurfaceReactionModels.H
@@ -0,0 +1,78 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef makeReactingMultiphaseParcelSurfaceReactionModels_H
+#define makeReactingMultiphaseParcelSurfaceReactionModels_H
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "thermoPhysicsTypes.H"
+#include "ReactingMultiphaseCloud.H"
+
+#include "NoSurfaceReaction.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#define makeReactingMultiphaseSurfaceReactionModels(ParcelType)               \
+                                                                              \
+    makeReactingMultiphaseSurfaceReactionModelThermoType                      \
+    (                                                                         \
+        ParcelType,                                                           \
+        constGasThermoPhysics                                                 \
+    );                                                                        \
+    makeReactingMultiphaseSurfaceReactionModelThermoType                      \
+    (                                                                         \
+        ParcelType,                                                           \
+        gasThermoPhysics                                                      \
+    );                                                                        \
+    makeReactingMultiphaseSurfaceReactionModelThermoType                      \
+    (                                                                         \
+        ParcelType,                                                           \
+        icoPoly8ThermoPhysics                                                 \
+    );
+
+
+#define makeReactingMultiphaseSurfaceReactionModelThermoType(ParcelType, ThermoType)\
+                                                                              \
+    makeSurfaceReactionModel                                                  \
+    (                                                                         \
+        ReactingMultiphaseCloud<ParcelType<ThermoType> >                      \
+    );                                                                        \
+                                                                              \
+    makeSurfaceReactionModelThermoType                                        \
+    (                                                                         \
+        NoSurfaceReaction,                                                    \
+        ReactingMultiphaseCloud,                                              \
+        ParcelType,                                                           \
+        ThermoType                                                            \
+    );
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/include/makeReactingParcelCompositionModels.H b/src/lagrangian/intermediate/parcels/include/makeReactingParcelCompositionModels.H
new file mode 100644
index 0000000000000000000000000000000000000000..d20439fccb8d6cc970a06e4a28fd9a180ab1e022
--- /dev/null
+++ b/src/lagrangian/intermediate/parcels/include/makeReactingParcelCompositionModels.H
@@ -0,0 +1,75 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef makeReactingParcelCompositionModels_H
+#define makeReactingParcelCompositionModels_H
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "thermoPhysicsTypes.H"
+#include "ReactingCloud.H"
+
+#include "SinglePhaseMixture.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#define makeReactingCompositionModels(ParcelType)                             \
+                                                                              \
+    makeReactingCompositionModelThermoType                                    \
+    (                                                                         \
+        ParcelType,                                                           \
+        constGasThermoPhysics                                                 \
+    );                                                                        \
+    makeReactingCompositionModelThermoType                                    \
+    (                                                                         \
+        ParcelType,                                                           \
+        gasThermoPhysics                                                      \
+    );                                                                        \
+    makeReactingCompositionModelThermoType                                    \
+    (                                                                         \
+        ParcelType,                                                           \
+        icoPoly8ThermoPhysics                                                 \
+    );
+
+
+#define makeReactingCompositionModelThermoType(ParcelType, ThermoType)        \
+                                                                              \
+    makeCompositionModel(ReactingCloud<ParcelType<ThermoType> >);             \
+                                                                              \
+    makeCompositionModelThermoType                                            \
+    (                                                                         \
+        SinglePhaseMixture,                                                   \
+        ReactingCloud,                                                        \
+        ParcelType,                                                           \
+        ThermoType                                                            \
+    );
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/include/makeReactingParcelDispersionModels.H b/src/lagrangian/intermediate/parcels/include/makeReactingParcelDispersionModels.H
new file mode 100644
index 0000000000000000000000000000000000000000..394cb9c2499dcd6fcd802b995d9ffe5a141c8753
--- /dev/null
+++ b/src/lagrangian/intermediate/parcels/include/makeReactingParcelDispersionModels.H
@@ -0,0 +1,99 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef makeReactingParcelDispersionModels_H
+#define makeReactingParcelDispersionModels_H
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "thermoPhysicsTypes.H"
+#include "KinematicCloud.H"
+
+#include "NoDispersion.H"
+#include "GradientDispersionRAS.H"
+#include "StochasticDispersionRAS.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#define makeReactingDispersionModels(ParcelType)                              \
+                                                                              \
+    makeReactingDispersionModelThermoType                                     \
+    (                                                                         \
+        ParcelType,                                                           \
+        constGasThermoPhysics                                                 \
+    );                                                                        \
+                                                                              \
+    makeReactingDispersionModelThermoType                                     \
+    (                                                                         \
+        ParcelType,                                                           \
+        gasThermoPhysics                                                      \
+    );                                                                        \
+                                                                              \
+    makeReactingDispersionModelThermoType                                     \
+    (                                                                         \
+        ParcelType,                                                           \
+        icoPoly8ThermoPhysics                                                 \
+    );
+
+
+#define makeReactingDispersionModelThermoType(ParcelType, ThermoType)         \
+                                                                              \
+    makeDispersionModel(KinematicCloud<ParcelType<ThermoType> >);             \
+                                                                              \
+    defineNamedTemplateTypeNameAndDebug                                       \
+    (                                                                         \
+        DispersionRASModel<KinematicCloud<ParcelType<ThermoType> > >,         \
+        0                                                                     \
+    );                                                                        \
+                                                                              \
+    makeDispersionModelThermoType                                             \
+    (                                                                         \
+        NoDispersion,                                                         \
+        KinematicCloud,                                                       \
+        ParcelType,                                                           \
+        ThermoType                                                            \
+    );                                                                        \
+    makeDispersionModelThermoType                                             \
+    (                                                                         \
+        GradientDispersionRAS,                                                \
+        KinematicCloud,                                                       \
+        ParcelType,                                                           \
+        ThermoType                                                            \
+    );                                                                        \
+    makeDispersionModelThermoType                                             \
+    (                                                                         \
+        StochasticDispersionRAS,                                              \
+        KinematicCloud,                                                       \
+        ParcelType,                                                           \
+        ThermoType                                                            \
+    );
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/include/makeReactingParcelDragModels.H b/src/lagrangian/intermediate/parcels/include/makeReactingParcelDragModels.H
new file mode 100644
index 0000000000000000000000000000000000000000..a41d440ddce190334336a3e3ec843b80ebbb36be
--- /dev/null
+++ b/src/lagrangian/intermediate/parcels/include/makeReactingParcelDragModels.H
@@ -0,0 +1,83 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef makeReactingParcelDragModels_H
+#define makeReactingParcelDragModels_H
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "thermoPhysicsTypes.H"
+#include "KinematicCloud.H"
+
+#include "NoDrag.H"
+#include "SphereDrag.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#define makeReactingDragModels(ParcelType)                                    \
+                                                                              \
+    makeReactingDragModelThermoType                                           \
+    (                                                                         \
+        ParcelType,                                                           \
+        constGasThermoPhysics                                                 \
+    );                                                                        \
+    makeReactingDragModelThermoType                                           \
+    (                                                                         \
+        ParcelType,                                                           \
+        gasThermoPhysics                                                      \
+    );                                                                        \
+    makeReactingDragModelThermoType                                           \
+    (                                                                         \
+        ParcelType,                                                           \
+        icoPoly8ThermoPhysics                                                 \
+    );
+
+
+#define makeReactingDragModelThermoType(ParcelType, ThermoType)               \
+                                                                              \
+    makeDragModel(KinematicCloud<ParcelType<ThermoType> >);                   \
+                                                                              \
+    makeDragModelThermoType                                                   \
+    (                                                                         \
+        NoDrag,                                                               \
+        KinematicCloud,                                                       \
+        ParcelType,                                                           \
+        ThermoType                                                            \
+    );                                                                        \
+    makeDragModelThermoType                                                   \
+    (                                                                         \
+        SphereDrag,                                                           \
+        KinematicCloud,                                                       \
+        ParcelType,                                                           \
+        ThermoType                                                            \
+    );
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/include/makeReactingParcelHeatTransferModels.H b/src/lagrangian/intermediate/parcels/include/makeReactingParcelHeatTransferModels.H
new file mode 100644
index 0000000000000000000000000000000000000000..0bfe7af9a8a6e3222cead0703e94ae700e5ba107
--- /dev/null
+++ b/src/lagrangian/intermediate/parcels/include/makeReactingParcelHeatTransferModels.H
@@ -0,0 +1,83 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef makeReactingParcelHeatTransferModels_H
+#define makeReactingParcelHeatTransferModels_H
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "thermoPhysicsTypes.H"
+#include "ThermoCloud.H"
+
+#include "NoHeatTransfer.H"
+#include "RanzMarshall.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#define makeReactingHeatTransferModels(ParcelType)                            \
+                                                                              \
+    makeReactingHeatTransferModelThermoType                                   \
+    (                                                                         \
+        ParcelType,                                                           \
+        constGasThermoPhysics                                                 \
+    );                                                                        \
+    makeReactingHeatTransferModelThermoType                                   \
+    (                                                                         \
+        ParcelType,                                                           \
+        gasThermoPhysics                                                      \
+    );                                                                        \
+    makeReactingHeatTransferModelThermoType                                   \
+    (                                                                         \
+        ParcelType,                                                           \
+        icoPoly8ThermoPhysics                                                 \
+    );
+
+
+#define makeReactingHeatTransferModelThermoType(ParcelType, ThermoType)       \
+                                                                              \
+    makeHeatTransferModel(ThermoCloud<ParcelType<ThermoType> >);              \
+                                                                              \
+    makeHeatTransferModelThermoType                                           \
+    (                                                                         \
+        NoHeatTransfer,                                                       \
+        ThermoCloud,                                                          \
+        ParcelType,                                                           \
+        ThermoType                                                            \
+    );                                                                        \
+    makeHeatTransferModelThermoType                                           \
+    (                                                                         \
+        RanzMarshall,                                                         \
+        ThermoCloud,                                                          \
+        ParcelType,                                                           \
+        ThermoType                                                            \
+    );                                                                        \
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/include/makeReactingParcelInjectionModels.H b/src/lagrangian/intermediate/parcels/include/makeReactingParcelInjectionModels.H
new file mode 100644
index 0000000000000000000000000000000000000000..41ca35fcf513a58fee6717c7a7dd11acd1784553
--- /dev/null
+++ b/src/lagrangian/intermediate/parcels/include/makeReactingParcelInjectionModels.H
@@ -0,0 +1,125 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef makeReactingParcelInjectionModels_H
+#define makeReactingParcelInjectionModels_H
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "thermoPhysicsTypes.H"
+#include "KinematicCloud.H"
+
+#include "ConeInjection.H"
+#include "ConeInjectionMP.H"
+#include "FieldActivatedInjection.H"
+#include "ManualInjection.H"
+#include "NoInjection.H"
+#include "PatchInjection.H"
+#include "ReactingLookupTableInjection.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#define makeReactingInjectionModels(ParcelType)                               \
+                                                                              \
+    makeReactingInjectionModelThermoType                                      \
+    (                                                                         \
+        ParcelType,                                                           \
+        constGasThermoPhysics                                                 \
+    );                                                                        \
+                                                                              \
+    makeReactingInjectionModelThermoType                                      \
+    (                                                                         \
+        ParcelType,                                                           \
+        gasThermoPhysics                                                      \
+    );                                                                        \
+                                                                              \
+    makeReactingInjectionModelThermoType                                      \
+    (                                                                         \
+        ParcelType,                                                           \
+        icoPoly8ThermoPhysics                                                 \
+    );
+
+
+#define makeReactingInjectionModelThermoType(ParcelType, ThermoType)          \
+                                                                              \
+    makeInjectionModel(KinematicCloud<ParcelType<ThermoType> >);              \
+                                                                              \
+    makeInjectionModelThermoType                                              \
+    (                                                                         \
+        ConeInjection,                                                        \
+        KinematicCloud,                                                       \
+        ParcelType,                                                           \
+        ThermoType                                                            \
+    );                                                                        \
+    makeInjectionModelThermoType                                              \
+    (                                                                         \
+        ConeInjectionMP,                                                      \
+        KinematicCloud,                                                       \
+        ParcelType,                                                           \
+        ThermoType                                                            \
+    );                                                                        \
+    makeInjectionModelThermoType                                              \
+    (                                                                         \
+        FieldActivatedInjection,                                              \
+        KinematicCloud,                                                       \
+        ParcelType,                                                           \
+        ThermoType                                                            \
+    );                                                                        \
+    makeInjectionModelThermoType                                              \
+    (                                                                         \
+        ManualInjection,                                                      \
+        KinematicCloud,                                                       \
+        ParcelType,                                                           \
+        ThermoType                                                            \
+    );                                                                        \
+    makeInjectionModelThermoType                                              \
+    (                                                                         \
+        NoInjection,                                                          \
+        KinematicCloud,                                                       \
+        ParcelType,                                                           \
+        ThermoType                                                            \
+    );                                                                        \
+    makeInjectionModelThermoType                                              \
+    (                                                                         \
+        PatchInjection,                                                       \
+        KinematicCloud,                                                       \
+        ParcelType,                                                           \
+        ThermoType                                                            \
+    );                                                                        \
+    makeInjectionModelThermoType                                              \
+    (                                                                         \
+        ReactingLookupTableInjection,                                         \
+        KinematicCloud,                                                       \
+        ParcelType,                                                           \
+        ThermoType                                                            \
+    );
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/include/makeReactingParcelPatchInteractionModels.H b/src/lagrangian/intermediate/parcels/include/makeReactingParcelPatchInteractionModels.H
new file mode 100644
index 0000000000000000000000000000000000000000..c25a4202f0c59171e25f57e6c2e5b03ddeee5c4f
--- /dev/null
+++ b/src/lagrangian/intermediate/parcels/include/makeReactingParcelPatchInteractionModels.H
@@ -0,0 +1,93 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef makeReactingParcelPatchInteractionModels_H
+#define makeReactingParcelPatchInteractionModels_H
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "thermoPhysicsTypes.H"
+#include "KinematicCloud.H"
+
+#include "LocalInteraction.H"
+#include "Rebound.H"
+#include "StandardWallInteraction.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#define makeReactingPatchInteractionModels(ParcelType)                        \
+                                                                              \
+    makeReactingPatchInteractionModelThermoType                               \
+    (                                                                         \
+        ParcelType,                                                           \
+        constGasThermoPhysics                                                 \
+    );                                                                        \
+                                                                              \
+    makeReactingPatchInteractionModelThermoType                               \
+    (                                                                         \
+        ParcelType,                                                           \
+        gasThermoPhysics                                                      \
+    );                                                                        \
+                                                                              \
+    makeReactingPatchInteractionModelThermoType                               \
+    (                                                                         \
+        ParcelType,                                                           \
+        icoPoly8ThermoPhysics                                                 \
+    );
+
+
+#define makeReactingPatchInteractionModelThermoType(ParcelType, ThermoType)   \
+                                                                              \
+    makePatchInteractionModel(KinematicCloud<ParcelType<ThermoType> >);       \
+                                                                              \
+    makePatchInteractionModelThermoType                                       \
+    (                                                                         \
+        LocalInteraction,                                                     \
+        KinematicCloud,                                                       \
+        ParcelType,                                                           \
+        ThermoType                                                            \
+    );                                                                        \
+    makePatchInteractionModelThermoType                                       \
+    (                                                                         \
+        Rebound,                                                     \
+        KinematicCloud,                                                       \
+        ParcelType,                                                           \
+        ThermoType                                                            \
+    );                                                                        \
+    makePatchInteractionModelThermoType                                       \
+    (                                                                         \
+        StandardWallInteraction,                                              \
+        KinematicCloud,                                                       \
+        ParcelType,                                                           \
+        ThermoType                                                            \
+    );
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/include/makeReactingParcelPhaseChangeModels.H b/src/lagrangian/intermediate/parcels/include/makeReactingParcelPhaseChangeModels.H
new file mode 100644
index 0000000000000000000000000000000000000000..57a067198eef490da220569e5544684aa4c3abc4
--- /dev/null
+++ b/src/lagrangian/intermediate/parcels/include/makeReactingParcelPhaseChangeModels.H
@@ -0,0 +1,85 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef makeReactingParcelPhaseChangeModels_H
+#define makeReactingParcelPhaseChangeModels_H
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "thermoPhysicsTypes.H"
+#include "ReactingCloud.H"
+
+#include "NoPhaseChange.H"
+#include "LiquidEvaporation.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#define makeReactingPhaseChangeModels(ParcelType)                             \
+                                                                              \
+    makeReactingPhaseChangeModelThermoType                                    \
+    (                                                                         \
+        ParcelType,                                                           \
+        constGasThermoPhysics                                                 \
+    );                                                                        \
+                                                                              \
+    makeReactingPhaseChangeModelThermoType                                    \
+    (                                                                         \
+        ParcelType,                                                           \
+        gasThermoPhysics                                                      \
+    );                                                                        \
+                                                                              \
+    makeReactingPhaseChangeModelThermoType                                    \
+    (                                                                         \
+        ParcelType,                                                           \
+        icoPoly8ThermoPhysics                                                 \
+    );
+
+
+#define makeReactingPhaseChangeModelThermoType(ParcelType, ThermoType)        \
+                                                                              \
+    makePhaseChangeModel(ReactingCloud<ParcelType<ThermoType> >);             \
+                                                                              \
+    makePhaseChangeModelThermoType                                            \
+    (                                                                         \
+        NoPhaseChange,                                                        \
+        ReactingCloud,                                                        \
+        ParcelType,                                                           \
+        ThermoType                                                            \
+    );                                                                        \
+    makePhaseChangeModelThermoType                                            \
+    (                                                                         \
+        LiquidEvaporation,                                                    \
+        ReactingCloud,                                                        \
+        ParcelType,                                                           \
+        ThermoType                                                            \
+    );
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/include/makeReactingParcelPostProcessingModels.H b/src/lagrangian/intermediate/parcels/include/makeReactingParcelPostProcessingModels.H
new file mode 100644
index 0000000000000000000000000000000000000000..ae7f226e362e15f7132ff7b02d7954025856bd84
--- /dev/null
+++ b/src/lagrangian/intermediate/parcels/include/makeReactingParcelPostProcessingModels.H
@@ -0,0 +1,85 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef makeReactingParcelPostProcessingModels_H
+#define makeReactingParcelPostProcessingModels_H
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "thermoPhysicsTypes.H"
+#include "KinematicCloud.H"
+
+#include "NoPostProcessing.H"
+#include "PatchPostProcessing.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#define makeReactingPostProcessingModels(ParcelType)                          \
+                                                                              \
+    makeReactingPostProcessingModelThermoType                                 \
+    (                                                                         \
+        ParcelType,                                                           \
+        constGasThermoPhysics                                                 \
+    );                                                                        \
+                                                                              \
+    makeReactingPostProcessingModelThermoType                                 \
+    (                                                                         \
+        ParcelType,                                                           \
+        gasThermoPhysics                                                      \
+    );                                                                        \
+                                                                              \
+    makeReactingPostProcessingModelThermoType                                 \
+    (                                                                         \
+        ParcelType,                                                           \
+        icoPoly8ThermoPhysics                                                 \
+    );
+
+
+#define makeReactingPostProcessingModelThermoType(ParcelType, ThermoType)     \
+                                                                              \
+    makePostProcessingModel(KinematicCloud<ParcelType<ThermoType> >);         \
+                                                                              \
+    makePostProcessingModelThermoType                                         \
+    (                                                                         \
+        NoPostProcessing,                                                     \
+        KinematicCloud,                                                       \
+        ParcelType,                                                           \
+        ThermoType                                                            \
+    );                                                                        \
+    makePostProcessingModelThermoType                                         \
+    (                                                                         \
+        PatchPostProcessing,                                                  \
+        KinematicCloud,                                                       \
+        ParcelType,                                                           \
+        ThermoType                                                            \
+    );
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/particleForces/particleForces.C b/src/lagrangian/intermediate/particleForces/particleForces.C
new file mode 100644
index 0000000000000000000000000000000000000000..5320566c84382e91f744263062c1e2c7b493dd3f
--- /dev/null
+++ b/src/lagrangian/intermediate/particleForces/particleForces.C
@@ -0,0 +1,191 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "particleForces.H"
+#include "fvMesh.H"
+#include "volFields.H"
+#include "fvcGrad.H"
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::particleForces::particleForces
+(
+    const fvMesh& mesh,
+    const dictionary& dict,
+    const vector& g
+)
+:
+    mesh_(mesh),
+    dict_(dict.subDict("particleForces")),
+    g_(g),
+    gradUPtr_(NULL),
+    gravity_(dict_.lookup("gravity")),
+    virtualMass_(dict_.lookup("virtualMass")),
+    Cvm_(0.0),
+    pressureGradient_(dict_.lookup("pressureGradient")),
+    UName_(dict_.lookupOrDefault<word>("U", "U"))
+{
+    if (virtualMass_)
+    {
+        dict_.lookup("Cvm") >> Cvm_;
+    }
+}
+
+
+Foam::particleForces::particleForces(const particleForces& f)
+:
+    mesh_(f.mesh_),
+    dict_(f.dict_),
+    g_(f.g_),
+    gradUPtr_(f.gradUPtr_),
+    gravity_(f.gravity_),
+    virtualMass_(f.virtualMass_),
+    Cvm_(f.Cvm_),
+    pressureGradient_(f.pressureGradient_),
+    UName_(f.UName_)
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::particleForces::~particleForces()
+{
+    cacheFields(false);
+}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+const Foam::dictionary& Foam::particleForces::dict() const
+{
+    return dict_;
+}
+
+
+const Foam::vector& Foam::particleForces::g() const
+{
+    return g_;
+}
+
+
+Foam::Switch Foam::particleForces::gravity() const
+{
+    return gravity_;
+}
+
+
+Foam::Switch Foam::particleForces::virtualMass() const
+{
+    return virtualMass_;
+}
+
+
+Foam::Switch Foam::particleForces::pressureGradient() const
+{
+    return pressureGradient_;
+}
+
+
+const Foam::word& Foam::particleForces::UName() const
+{
+    return UName_;
+}
+
+
+void Foam::particleForces::cacheFields(const bool store)
+{
+    if (store && pressureGradient_)
+    {
+        const volVectorField U = mesh_.lookupObject<volVectorField>(UName_);
+        gradUPtr_ = fvc::grad(U).ptr();
+    }
+    else
+    {
+        if (gradUPtr_)
+        {
+            delete gradUPtr_;
+        }
+    }
+}
+
+
+Foam::vector Foam::particleForces::calcCoupled
+(
+    const label cellI,
+    const scalar dt,
+    const scalar rhoc,
+    const scalar rho,
+    const vector& Uc,
+    const vector& U
+) const
+{
+    vector Ftot = vector::zero;
+
+    // Virtual mass force
+    if (virtualMass_)
+    {
+        notImplemented
+        (
+            "Foam::particleForces::calcCoupled(...) - virtual mass force"
+        );
+//        Ftot += Cvm_*rhoc/rho*d(Uc - U)/dt;
+    }
+
+    // Pressure gradient force
+    if (pressureGradient_)
+    {
+        const volTensorField& gradU = *gradUPtr_;
+        Ftot += rhoc/rho*(U & gradU[cellI]);
+    }
+
+    return Ftot;
+}
+
+
+Foam::vector Foam::particleForces::calcNonCoupled
+(
+    const label cellI,
+    const scalar dt,
+    const scalar rhoc,
+    const scalar rho,
+    const vector& Uc,
+    const vector& U
+) const
+{
+    vector Ftot = vector::zero;
+
+    // Gravity force
+    if (gravity_)
+    {
+        Ftot += g_*(1.0 - rhoc/rho);
+    }
+
+    return Ftot;
+}
+
+
+// ************************************************************************* //
+
diff --git a/src/lagrangian/intermediate/particleForces/particleForces.H b/src/lagrangian/intermediate/particleForces/particleForces.H
new file mode 100644
index 0000000000000000000000000000000000000000..fbe88a6dc832e7fd545a1a673aaf2dce90178a23
--- /dev/null
+++ b/src/lagrangian/intermediate/particleForces/particleForces.H
@@ -0,0 +1,177 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::particleForces
+
+Description
+    Particle forces
+
+SourceFiles
+    particleForces.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef particleForces_H
+#define particleForces_H
+
+#include "dictionary.H"
+#include "Switch.H"
+#include "vector.H"
+#include "volFieldsFwd.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+// Forward class declarations
+class fvMesh;
+
+/*---------------------------------------------------------------------------*\
+                      Class particleForces Declaration
+\*---------------------------------------------------------------------------*/
+
+class particleForces
+{
+    // Private data
+
+        //- Reference to the mesh database
+        const fvMesh& mesh_;
+
+        //- The particleForces dictionary
+        const dictionary& dict_;
+
+        //- Gravity
+        const vector g_;
+
+        //- Velocity gradient field
+        const volTensorField* gradUPtr_;
+
+
+        // Forces to include in particle motion evaluation
+
+            //- Gravity
+            Switch gravity_;
+
+            //- Virtual mass
+            Switch virtualMass_;
+
+            //- Virtual mass force coefficient
+            scalar Cvm_;
+
+            //- Pressure gradient
+            Switch pressureGradient_;
+
+
+        // Additional info
+
+            //- Name of velucity field - default = "U"
+            const word UName_;
+
+
+public:
+
+    // Constructors
+
+        //- Construct from mesh, dictionary and gravity
+        particleForces
+        (
+            const fvMesh& mesh,
+            const dictionary& dict,
+            const vector& g
+        );
+
+        //- Construct copy
+        particleForces(const particleForces& f);
+
+
+    //- Destructor
+    ~particleForces();
+
+
+    // Member Functions
+
+        // Access
+
+            //- Return the particleForces dictionary
+            const dictionary& dict() const;
+
+            //- Return the gravity vector
+            const vector& g() const;
+
+            //- Return gravity force activate switch
+            Switch gravity() const;
+
+            //- Return virtual mass force activate switch
+            Switch virtualMass() const;
+
+            //- Return virtual mass force coefficient
+            Switch Cvm() const;
+
+            //- Return pressure gradient force activate switch
+            Switch pressureGradient() const;
+
+            //- Return name of velocity field
+            const word& UName() const;
+
+
+       // Evaluation
+
+            //- Cache carrier fields
+            void cacheFields(const bool store);
+
+            //- Calculate action/reaction forces between carrier and particles
+            vector calcCoupled
+            (
+                const label cellI,
+                const scalar dt,
+                const scalar rhoc,
+                const scalar rho,
+                const vector& Uc,
+                const vector& U
+            ) const;
+
+            //- Calculate external forces applied to the particles
+            vector calcNonCoupled
+            (
+                const label cellI,
+                const scalar dt,
+                const scalar rhoc,
+                const scalar rho,
+                const vector& Uc,
+                const vector& U
+            ) const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/phaseProperties/phaseProperties/phaseProperties.C b/src/lagrangian/intermediate/phaseProperties/phaseProperties/phaseProperties.C
new file mode 100644
index 0000000000000000000000000000000000000000..5f04d57d30689b22b5ea80684aed369fc1c1d12b
--- /dev/null
+++ b/src/lagrangian/intermediate/phaseProperties/phaseProperties/phaseProperties.C
@@ -0,0 +1,360 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "phaseProperties.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+template<>
+const char* Foam::NamedEnum<Foam::phaseProperties::phaseType, 4>::names[] =
+{
+    "gas",
+    "liquid",
+    "solid",
+    "unknown"
+};
+
+
+const Foam::NamedEnum<Foam::phaseProperties::phaseType, 4>
+    Foam::phaseProperties::phaseTypeNames_;
+
+
+// * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
+
+void Foam::phaseProperties::setGlobalIds(const wordList& globalNames)
+{
+    forAll(names_, i)
+    {
+        forAll(globalNames, j)
+        {
+            if (globalNames[j] == names_[i])
+            {
+                globalIds_[i] = j;
+                break;
+            }
+        }
+        if (globalIds_[i] == -1)
+        {
+            FatalErrorIn
+            (
+                "void Foam::phaseProperties::setGlobalIds(const wordList&)"
+            )   << "Could not find specie " << names_[i]
+                << " in species list" <<  nl
+                << "Available species are: " << nl << globalNames << nl
+                << exit(FatalError);
+        }
+    }
+}
+
+
+void Foam::phaseProperties::setGlobalCarrierIds
+(
+    const wordList& carrierNames
+)
+{
+    globalCarrierIds_ = -1;
+
+    forAll(names_, i)
+    {
+        forAll (carrierNames, j)
+        {
+            if (carrierNames[j] == names_[i])
+            {
+                globalCarrierIds_[i] = j;
+                break;
+            }
+        }
+        if (globalCarrierIds_[i] == -1)
+        {
+            FatalErrorIn
+            (
+                "void Foam::phaseProperties::setGlobalCarrierIds"
+                "("
+                    "const wordList&"
+                ")"
+            )   << "Could not find carrier specie " << names_[i]
+                << " in species list" <<  nl
+                << "Available species are: " << nl << carrierNames << nl
+                << exit(FatalError);
+        }
+    }
+}
+
+
+void Foam::phaseProperties::checkTotalMassFraction() const
+{
+    scalar total = 0.0;
+    forAll(Y_, cmptI)
+    {
+        total += Y_[cmptI];
+    }
+
+    if (Y_.size() != 0 && mag(total - 1.0) > SMALL)
+    {
+        FatalErrorIn
+        (
+            "void Foam::phaseProperties::checkTotalMassFraction() const"
+        )   << "Component fractions must total to unity for phase "
+            << phaseTypeNames_[phase_] << nl
+            << "Components: " << nl << names_ << nl << exit(FatalError);
+    }
+}
+
+
+Foam::word Foam::phaseProperties::phaseToStateLabel(const phaseType pt) const
+{
+    word state = "(unknown)";
+    switch (pt)
+    {
+        case GAS:
+        {
+            state = "(g)";
+            break;
+        }
+        case LIQUID:
+        {
+            state = "(l)";
+            break;
+        }
+        case SOLID:
+        {
+            state = "(s)";
+            break;
+        }
+        default:
+        {
+            FatalErrorIn
+            (
+                "Foam::phaseProperties::phaseToStateLabel(phaseType pt)"
+            )   << "Invalid phase: " << phaseTypeNames_[pt] << nl
+                << "    phase must be gas, liquid or solid" << nl
+                << exit(FatalError);
+        }
+    }
+
+    return state;
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::phaseProperties::phaseProperties()
+:
+    phase_(UNKNOWN),
+    stateLabel_("(unknown)"),
+    names_(0),
+    Y_(0),
+    globalIds_(0),
+    globalCarrierIds_(0)
+{}
+
+
+Foam::phaseProperties::phaseProperties(const phaseProperties& pp)
+:
+    phase_(pp.phase_),
+    stateLabel_(pp.stateLabel_),
+    names_(pp.names_),
+    Y_(pp.Y_),
+    globalIds_(pp.globalIds_),
+    globalCarrierIds_(pp.globalCarrierIds_)
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::phaseProperties::~phaseProperties()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+void Foam::phaseProperties::initialiseGlobalIds
+(
+    const wordList& gasNames,
+    const wordList& liquidNames,
+    const wordList& solidNames
+)
+{
+    // determine the addressing to map between components listed in the phase
+    // with those given in the (main) thermo properties
+    switch (phase_)
+    {
+        case GAS:
+        {
+            setGlobalIds(gasNames);
+            forAll(globalCarrierIds_, i)
+            {
+                globalCarrierIds_[i] = globalIds_[i];
+            }
+            break;
+        }
+        case LIQUID:
+        {
+            setGlobalIds(liquidNames);
+            setGlobalCarrierIds(gasNames);
+            break;
+        }
+        case SOLID:
+        {
+            setGlobalIds(solidNames);
+            WarningIn
+            (
+                "phaseProperties::initialiseGlobalIds(...)"
+            )   << "Assuming no mapping between solid and carrier species"
+                << endl;
+//            setGlobalCarrierIds(gasNames);
+            break;
+        }
+        default:
+        {
+            FatalErrorIn
+            (
+                "Foam::phaseProperties::setGlobalIds"
+                "("
+                    "const PtrList<volScalarField>&, "
+                    "const wordList&, "
+                    "const wordList&"
+                ")"
+            )   << "Invalid phase: " << phaseTypeNames_[phase_] << nl
+                << "    phase must be gas, liquid or solid" << nl
+                << exit(FatalError);
+        }
+    }
+}
+
+
+Foam::phaseProperties::phaseType Foam::phaseProperties::phase() const
+{
+    return phase_;
+}
+
+
+const Foam::word& Foam::phaseProperties::stateLabel() const
+{
+    return stateLabel_;
+}
+
+
+Foam::word Foam::phaseProperties::phaseTypeName() const
+{
+    return phaseTypeNames_[phase_];
+}
+
+
+const Foam::List<Foam::word>& Foam::phaseProperties::names() const
+{
+    return names_;
+}
+
+
+const Foam::word& Foam::phaseProperties::name(const label cmptI) const
+{
+    if (cmptI >= names_.size())
+    {
+        FatalErrorIn
+        (
+            "const Foam::word& Foam::phaseProperties::name"
+            "("
+                "const label"
+            ") const"
+        )   << "Requested component " << cmptI << "out of range" << nl
+            << "Available phase components:" << nl << names_ << nl
+            << exit(FatalError);
+    }
+
+    return names_[cmptI];
+}
+
+
+const Foam::scalarField& Foam::phaseProperties::Y() const
+{
+    return Y_;
+}
+
+
+Foam::scalar& Foam::phaseProperties::Y(const label cmptI)
+{
+    if (cmptI >= Y_.size())
+    {
+        FatalErrorIn
+        (
+            "const Foam::scalar& Foam::phaseProperties::Y"
+            "("
+                "const label"
+            ") const"
+        )   << "Requested component " << cmptI << "out of range" << nl
+            << "Available phase components:" << nl << names_ << nl
+            << exit(FatalError);
+    }
+
+    return Y_[cmptI];
+}
+
+
+Foam::label Foam::phaseProperties::globalId(const word& cmptName) const
+{
+    label id = this->id(cmptName);
+
+    if (id < 0)
+    {
+        return id;
+    }
+    else
+    {
+        return globalIds_[id];
+    }
+
+}
+
+
+const Foam::labelList& Foam::phaseProperties::globalIds() const
+{
+    return globalIds_;
+}
+
+
+const Foam::labelList& Foam::phaseProperties::globalCarrierIds() const
+{
+    return globalCarrierIds_;
+}
+
+
+Foam::label Foam::phaseProperties::id(const word& cmptName) const
+{
+    forAll(names_, cmptI)
+    {
+        if (names_[cmptI] == cmptName)
+        {
+            return cmptI;
+        }
+    }
+
+    return -1;
+}
+
+
+// ************************************************************************* //
+
diff --git a/src/lagrangian/intermediate/phaseProperties/phaseProperties/phaseProperties.H b/src/lagrangian/intermediate/phaseProperties/phaseProperties/phaseProperties.H
new file mode 100644
index 0000000000000000000000000000000000000000..eaa44b6afb59d4c0b90d2fd84c62738f739d1b16
--- /dev/null
+++ b/src/lagrangian/intermediate/phaseProperties/phaseProperties/phaseProperties.H
@@ -0,0 +1,194 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::phaseProperties
+
+Description
+    Helper class to manage multi-component phase properties
+
+SourceFiles
+    phaseProperties.C
+    phasePropertiesIO.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef phaseProperties_H
+#define phaseProperties_H
+
+#include "NamedEnum.H"
+#include "Tuple2.H"
+#include "PtrList.H"
+#include "volFields.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+                      Class phaseProperties Declaration
+\*---------------------------------------------------------------------------*/
+
+class phaseProperties
+{
+public:
+
+    // Public data
+
+        //- Phase type enumeration
+        enum phaseType
+        {
+            GAS,
+            LIQUID,
+            SOLID,
+            UNKNOWN
+        };
+
+        //- Corresponding word representations for phase type enumerations
+        static const NamedEnum<phaseType, 4> phaseTypeNames_;
+
+
+private:
+
+   // Private data
+
+        //- Phase type
+        phaseType phase_;
+
+        //- State label (s), (l), (g) etc.
+        word stateLabel_;
+
+        //- List of component names
+        List<word> names_;
+
+        //- List of component mass fractions
+        scalarField Y_;
+
+        //- Global ids
+        labelList globalIds_;
+
+        //- Map to carrier global id
+        labelList globalCarrierIds_;
+
+
+    // Private member functions
+
+        //- Set global ids
+        void setGlobalIds(const wordList& globalNames);
+
+        //- Set global carrier ids - attempts to map component names to global
+        //  carrier species
+        void setGlobalCarrierIds(const wordList& carrierNames);
+
+        //- Check the total mass fraction
+        void checkTotalMassFraction() const;
+
+        //- Set the state label
+        word phaseToStateLabel(const phaseType pt) const;
+
+
+public:
+
+    // Constructors
+
+        //- Null constructor
+        phaseProperties();
+
+        //- Construct from Istream
+        phaseProperties(Istream&);
+
+        //- Construct as copy
+        phaseProperties(const phaseProperties&);
+
+
+    //- Destructor
+    ~phaseProperties();
+
+
+    // Public member functions
+
+        //- Initialise the global ids
+        void initialiseGlobalIds
+        (
+            const wordList& gasNames,
+            const wordList& liquidNames,
+            const wordList& solidNames
+        );
+
+
+        // Access
+
+            //- Return const access to the phase type
+            phaseType phase() const;
+
+            //- Return const access to the phase state label
+            const word& stateLabel() const;
+
+            //- Return word representation of the phase type
+            word phaseTypeName() const;
+
+            //- Return the list of component names
+            const List<word>& names() const;
+
+            //- Return const access to a component name
+            const word& name(const label cmptI) const;
+
+            //- Return const access to all component mass fractions
+            const scalarField& Y() const;
+
+            //- Return non-const access to a component mass fraction
+            scalar& Y(const label cmptI);
+
+            //- Return const access to the global ids
+            const labelList& globalIds() const;
+
+            //- Return const access to the map to the carrier global ids
+            const labelList& globalCarrierIds() const;
+
+            //- Return the global id of a component in the local list by name
+            //  Returns -1 if not found
+            label globalId(const word& cmptName) const;
+
+            //- Return the id of a component in the local list by name
+            //  Returns -1 if not found
+            label id(const word& cmptName) const;
+
+
+    // IOstream Operators
+
+        friend Istream& operator>>(Istream&, phaseProperties&);
+        friend Ostream& operator<<(Ostream&, const phaseProperties&);
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/phaseProperties/phaseProperties/phasePropertiesIO.C b/src/lagrangian/intermediate/phaseProperties/phaseProperties/phasePropertiesIO.C
new file mode 100644
index 0000000000000000000000000000000000000000..f738cf2683683f5a8aaded5500f7b511772db846
--- /dev/null
+++ b/src/lagrangian/intermediate/phaseProperties/phaseProperties/phasePropertiesIO.C
@@ -0,0 +1,134 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "phaseProperties.H"
+#include "dictionaryEntry.H"
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::phaseProperties::phaseProperties(Istream& is)
+:
+    phase_(UNKNOWN),
+    stateLabel_("(unknown)"),
+    names_(0),
+    Y_(0),
+    globalIds_(0),
+    globalCarrierIds_(0)
+{
+    is.check("Foam::phaseProperties::phaseProperties(Istream& is)");
+
+    dictionaryEntry phaseInfo(dictionary::null, is);
+
+    phase_ = phaseTypeNames_[phaseInfo.keyword()];
+    stateLabel_ = phaseToStateLabel(phase_);
+
+    if (phaseInfo.size() > 0)
+    {
+        label nComponents = phaseInfo.size();
+        names_.setSize(nComponents, "unknownSpecie");
+        Y_.setSize(nComponents, 0.0);
+        globalIds_.setSize(nComponents, -1);
+        globalCarrierIds_.setSize(nComponents, -1);
+
+        label cmptI = 0;
+        forAllConstIter(IDLList<entry>, phaseInfo, iter)
+        {
+            names_[cmptI] = iter().keyword();
+            Y_[cmptI] = readScalar(phaseInfo.lookup(names_[cmptI]));
+            cmptI++;
+        }
+
+        checkTotalMassFraction();
+    }
+}
+
+
+// * * * * * * * * * * * * * * * IOstream Operators  * * * * * * * * * * * * //
+
+Foam::Istream& Foam::operator>>(Istream& is, phaseProperties& pp)
+{
+    is.check
+    (
+        "Foam::Istream& Foam::operator>>(Istream&, phaseProperties&)"
+    );
+
+    dictionaryEntry phaseInfo(dictionary::null, is);
+
+    pp.phase_ = pp.phaseTypeNames_[phaseInfo.keyword()];
+    pp.stateLabel_ = pp.phaseToStateLabel(pp.phase_);
+
+    if (phaseInfo.size() > 0)
+    {
+        label nComponents = phaseInfo.size();
+
+        pp.names_.setSize(nComponents, "unknownSpecie");
+        pp.Y_.setSize(nComponents, 0.0);
+        pp.globalIds_.setSize(nComponents, -1);
+        pp.globalCarrierIds_.setSize(nComponents, -1);
+
+        label cmptI = 0;
+        forAllConstIter(IDLList<entry>, phaseInfo, iter)
+        {
+            pp.names_[cmptI] = iter().keyword();
+            pp.Y_[cmptI] = readScalar(phaseInfo.lookup(pp.names_[cmptI]));
+            cmptI++;
+        }
+
+        pp.checkTotalMassFraction();
+    }
+
+    return is;
+}
+
+
+Foam::Ostream& Foam::operator<<(Ostream& os, const phaseProperties& pp)
+{
+    os.check
+    (
+        "Foam::Ostream& Foam::operator<<(Ostream&, const phaseProperties&)"
+    );
+
+    os  << pp.phaseTypeNames_[pp.phase_] << nl << token::BEGIN_BLOCK << nl
+        << incrIndent;
+
+    forAll(pp.names_, cmptI)
+    {
+        os.writeKeyword(pp.names_[cmptI]) << pp.Y_[cmptI]
+            << token::END_STATEMENT << nl;
+    }
+
+    os  << decrIndent << token::END_BLOCK << nl;
+
+    os.check
+    (
+        "Foam::Ostream& Foam::operator<<(Ostream&, const phaseProperties&)"
+    );
+
+    return os;
+}
+
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/phaseProperties/phasePropertiesList/phasePropertiesList.C b/src/lagrangian/intermediate/phaseProperties/phasePropertiesList/phasePropertiesList.C
new file mode 100644
index 0000000000000000000000000000000000000000..2d3f7ce7add1aec039013e7006d4b2618e2bd82c
--- /dev/null
+++ b/src/lagrangian/intermediate/phaseProperties/phasePropertiesList/phasePropertiesList.C
@@ -0,0 +1,98 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "phasePropertiesList.H"
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::phasePropertiesList::phasePropertiesList
+(
+    Istream& is,
+    const wordList& gasNames,
+    const wordList& liquidNames,
+    const wordList& solidNames
+)
+:
+    props_(is),
+    phaseTypeNames_(),
+    stateLabels_()
+{
+    forAll(props_, i)
+    {
+        props_[i].initialiseGlobalIds(gasNames, liquidNames, solidNames);
+    }
+
+    phaseTypeNames_.setSize(props_.size());
+    stateLabels_.setSize(props_.size());
+    forAll(props_, i)
+    {
+        phaseTypeNames_[i] = props_[i].phaseTypeName();
+        stateLabels_[i] = props_[i].stateLabel();
+    }
+}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::phasePropertiesList::~phasePropertiesList()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+const Foam::List<Foam::phaseProperties>&
+Foam::phasePropertiesList::props() const
+{
+    return props_;
+}
+
+
+const Foam::wordList& Foam::phasePropertiesList::phaseTypes() const
+{
+    return phaseTypeNames_;
+}
+
+
+const Foam::wordList& Foam::phasePropertiesList::stateLabels() const
+{
+    return stateLabels_;
+}
+
+
+Foam::label Foam::phasePropertiesList::size() const
+{
+    return props_.size();
+}
+
+
+const Foam::phaseProperties&
+Foam::phasePropertiesList::operator[](const label phaseI) const
+{
+    return props_[phaseI];
+}
+
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/phaseProperties/phasePropertiesList/phasePropertiesList.H b/src/lagrangian/intermediate/phaseProperties/phasePropertiesList/phasePropertiesList.H
new file mode 100644
index 0000000000000000000000000000000000000000..50f6c62ebd65cc2a3d99b6b8333aec61da49f1ac
--- /dev/null
+++ b/src/lagrangian/intermediate/phaseProperties/phasePropertiesList/phasePropertiesList.H
@@ -0,0 +1,110 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::phasePropertiesList
+
+Description
+    Simple container for a list of phase properties
+
+SourceFiles
+    phasePropertiesList.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef phasePropertiesList_H
+#define phasePropertiesList_H
+
+#include "Istream.H"
+#include "volFields.H"
+#include "wordList.H"
+#include "phaseProperties.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+                    Class phasePropertiesList Declaration
+\*---------------------------------------------------------------------------*/
+
+class phasePropertiesList
+{
+    // Private data
+
+        //- List of phase properties
+        List<phaseProperties> props_;
+
+        //- List of word representation of phase types
+        wordList phaseTypeNames_;
+
+        //- List of state labels
+        wordList stateLabels_;
+
+
+public:
+
+    //- Constructor
+    phasePropertiesList
+    (
+        Istream& is,
+        const wordList& gasNames,
+        const wordList& liquidNames,
+        const wordList& solidNames
+    );
+
+    //- Destructor
+    ~phasePropertiesList();
+
+
+    // Public member functions
+
+        //- Return the list of phase properties
+        const List<phaseProperties>& props() const;
+
+        //- Return the list of word representation of phase types
+        const wordList& phaseTypes() const;
+
+        //- Return the list of state labels
+        const wordList& stateLabels() const;
+
+        //- Return the size (number of phases)
+        label size() const;
+
+
+    // Member operators
+
+        const phaseProperties& operator[](const label) const;
+};
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/submodels/IO/DataEntry/Constant/Constant.C b/src/lagrangian/intermediate/submodels/IO/DataEntry/Constant/Constant.C
index a2df7792aa1191751936b7fcd9a747bc0f9bdb12..658fca8e7eead3ee241151f170693cbca06d1559 100644
--- a/src/lagrangian/intermediate/submodels/IO/DataEntry/Constant/Constant.C
+++ b/src/lagrangian/intermediate/submodels/IO/DataEntry/Constant/Constant.C
@@ -29,38 +29,34 @@ License
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
 template<class Type>
-Foam::Constant<Type>::Constant
-(
-    const word& entryName,
-    const dictionary& dict
-)
+Foam::Constant<Type>::Constant(const word& entryName, Istream& is)
 :
-    DataEntry<Type>(typeName, entryName, dict),
-    value_(this->dict_.lookup("value"))
+    DataEntry<Type>(entryName),
+    value_(is)
+{}
+
+
+template<class Type>
+Foam::Constant<Type>::Constant(const Constant<Type>& cnst)
+:
+    DataEntry<Type>(cnst),
+    value_(cnst.value_)
 {}
 
 
 template<>
-Foam::Constant<Foam::label>::Constant
-(
-    const word& entryName,
-    const dictionary& dict
-)
+Foam::Constant<Foam::label>::Constant(const word& entryName, Istream& is)
 :
-    DataEntry<label>(typeName, entryName, dict),
-    value_(readLabel(this->dict_.lookup("value")))
+    DataEntry<label>(entryName),
+    value_(readLabel(is))
 {}
 
 
 template<>
-Foam::Constant<Foam::scalar>::Constant
-(
-    const word& entryName,
-    const dictionary& dict
-)
+Foam::Constant<Foam::scalar>::Constant(const word& entryName, Istream& is)
 :
-    DataEntry<scalar>(typeName, entryName, dict),
-    value_(readScalar(this->dict_.lookup("value")))
+    DataEntry<scalar>(entryName),
+    value_(readScalar(is))
 {}
 
 
@@ -87,4 +83,9 @@ Type Foam::Constant<Type>::integrate(const scalar x1, const scalar x2) const
 }
 
 
+// * * * * * * * * * * * * * *  IOStream operators * * * * * * * * * * * * * //
+
+#include "ConstantIO.C"
+
+
 // ************************************************************************* //
diff --git a/src/lagrangian/intermediate/submodels/IO/DataEntry/Constant/Constant.H b/src/lagrangian/intermediate/submodels/IO/DataEntry/Constant/Constant.H
index add02c11991b00c502c0b24a55d846cdd60d97ad..ff82343c1ed6f2371bee3f0494d4158c8ab65844 100644
--- a/src/lagrangian/intermediate/submodels/IO/DataEntry/Constant/Constant.H
+++ b/src/lagrangian/intermediate/submodels/IO/DataEntry/Constant/Constant.H
@@ -28,12 +28,9 @@ Class
 Description
     Templated basic entry that holds a constant value.
 
+    Usage - for entry <entryName> having the value <value>:
     @verbatim
-        entry                    Constant
-        entryCoeffs
-        {
-            value                100.0; // Constant value
-        }
+        <entryName>    constant  <value>
     @endverbatim
 
 SourceFiles
@@ -51,6 +48,16 @@ SourceFiles
 namespace Foam
 {
 
+template<class Type>
+class Constant;
+
+template<class Type>
+Ostream& operator<<
+(
+    Ostream&,
+    const Constant<Type>&
+);
+
 /*---------------------------------------------------------------------------*\
                            Class Constant Declaration
 \*---------------------------------------------------------------------------*/
@@ -62,14 +69,12 @@ class Constant
 {
     // Private data
 
+        //- Constant value
         Type value_;
 
 
     // Private Member Functions
 
-        //- Disallow default bitwise copy construct
-        Constant(const Constant<Type>&);
-
         //- Disallow default bitwise assignment
         void operator=(const Constant<Type>&);
 
@@ -77,22 +82,20 @@ class Constant
 public:
 
     // Runtime type information
-    TypeName("Constant");
+    TypeName("constant");
 
 
     // Constructors
 
-        //- Construct from dictionary
-        Constant
-        (
-            const word& entryName,
-            const dictionary& dict
-        );
+        //- Construct from entry name and Istream
+        Constant(const word& entryName, Istream& is);
 
+        //- Copy constructor
+        Constant(const Constant<Type>& cnst);
 
-    //- Destructor
 
-        ~Constant();
+    //- Destructor
+    virtual ~Constant();
 
 
     // Member Functions
@@ -102,16 +105,24 @@ public:
 
         //- Integrate between two values
         Type integrate(const scalar x1, const scalar x2) const;
+
+
+    //- Ostream Operator
+    friend Ostream& operator<< <Type>
+    (
+        Ostream&,
+        const Constant<Type>&
+    );
 };
 
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 template<>
-Constant<label>::Constant(const word& entryName, const dictionary& dict);
+Constant<label>::Constant(const word& entryName, Istream& is);
 
 template<>
-Constant<scalar>::Constant(const word& entryName, const dictionary& dict);
+Constant<scalar>::Constant(const word& entryName, Istream& is);
 
 
 } // End namespace Foam
diff --git a/src/lagrangian/intermediate/submodels/IO/DataEntry/Constant/ConstantIO.C b/src/lagrangian/intermediate/submodels/IO/DataEntry/Constant/ConstantIO.C
new file mode 100644
index 0000000000000000000000000000000000000000..93e92a25880691cff4e488623c170a8374786270
--- /dev/null
+++ b/src/lagrangian/intermediate/submodels/IO/DataEntry/Constant/ConstantIO.C
@@ -0,0 +1,63 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "DataEntry.H"
+
+// * * * * * * * * * * * * * * * IOstream Operators  * * * * * * * * * * * * //
+
+template<class Type>
+Foam::Ostream& Foam::operator<<
+(
+    Ostream& os,
+    const Constant<Type>& cnst
+)
+{
+    if (os.format() == IOstream::ASCII)
+    {
+        os  << static_cast<const DataEntry<Type>& >(cnst)
+            << token::SPACE << cnst.value_;
+    }
+    else
+    {
+        os  << static_cast<const DataEntry<Type>& >(cnst);
+        os.write
+        (
+            reinterpret_cast<const char*>(&cnst.value_),
+            sizeof(cnst.value_)
+        );
+    }
+
+    // Check state of Ostream
+    os.check
+    (
+        "Ostream& operator<<(Ostream&, const Constant<Type>&)"
+    );
+
+    return os;
+}
+
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/submodels/IO/DataEntry/DataEntry/DataEntry.C b/src/lagrangian/intermediate/submodels/IO/DataEntry/DataEntry/DataEntry.C
index f6a99c2758aa144bfa4678769fc78905457d9b49..b107a35010cd38888518dd66f2040ebeb88f02c3 100644
--- a/src/lagrangian/intermediate/submodels/IO/DataEntry/DataEntry/DataEntry.C
+++ b/src/lagrangian/intermediate/submodels/IO/DataEntry/DataEntry/DataEntry.C
@@ -29,15 +29,16 @@ License
 // * * * * * * * * * * * * * * * * Constructor * * * * * * * * * * * * * * * //
 
 template<class Type>
-Foam::DataEntry<Type>::DataEntry
-(
-    const word& typeName,
-    const word& entryName,
-    const dictionary& dict
-)
+Foam::DataEntry<Type>::DataEntry(const word& entryName)
 :
-    dict_(dict.subDict(entryName + "Coeffs")),
-    entry_(entryName)
+    name_(entryName)
+{}
+
+
+template<class Type>
+Foam::DataEntry<Type>::DataEntry(const DataEntry<Type>& de)
+:
+    name_(de.name_)
 {}
 
 
@@ -51,10 +52,15 @@ Foam::DataEntry<Type>::~DataEntry()
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 template<class Type>
-const Foam::dictionary& Foam::DataEntry<Type>::dict() const
+const Foam::word& Foam::DataEntry<Type>::name() const
 {
-    return dict_;
+    return name_;
 }
 
 
+// * * * * * * * * * * * * * *  IOStream operators * * * * * * * * * * * * * //
+
+#include "DataEntryIO.C"
+
+
 // ************************************************************************* //
diff --git a/src/lagrangian/intermediate/submodels/IO/DataEntry/DataEntry/DataEntry.H b/src/lagrangian/intermediate/submodels/IO/DataEntry/DataEntry/DataEntry.H
index 2aeb5b0c7e1ce81fde2415ffed5599483e0eb2f9..b3a670433d98ea05c809781ab9c13b4b4507d640 100644
--- a/src/lagrangian/intermediate/submodels/IO/DataEntry/DataEntry/DataEntry.H
+++ b/src/lagrangian/intermediate/submodels/IO/DataEntry/DataEntry/DataEntry.H
@@ -26,6 +26,10 @@ Class
     Foam::DataEntry
 
 Description
+    Top level data entry class for use in dictionaries. Provides a mechanism
+    to specify a variable as a certain type, e.g. constant or table, and
+    provide functions to return the (interpolated) value, and integral between
+    limits.
 
 SourceFiles
     DataEntry.C
@@ -43,8 +47,18 @@ SourceFiles
 namespace Foam
 {
 
+template<class Type>
+class DataEntry;
+
+template<class Type>
+Ostream& operator<<
+(
+    Ostream&,
+    const DataEntry<Type>&
+);
+
 /*---------------------------------------------------------------------------*\
-                          Class DataEntry Declaration
+                         Class DataEntry Declaration
 \*---------------------------------------------------------------------------*/
 
 template<class Type>
@@ -52,9 +66,6 @@ class DataEntry
 {
     // Private Member Functions
 
-        //- Disallow default bitwise copy construct
-        DataEntry(const DataEntry<Type>&);
-
         //- Disallow default bitwise assignment
         void operator=(const DataEntry<Type>&);
 
@@ -63,11 +74,8 @@ protected:
 
     // Protected data
 
-        //- Coefficients dictionary
-        const dictionary dict_;
-
         //- Name of entry
-        const word entry_;
+        const word name_;
 
 
 public:
@@ -83,42 +91,39 @@ public:
         dictionary,
         (
             const word& entryName,
-            const dictionary& dict
+            Istream& is
         ),
-        (entryName, dict)
+        (entryName, is)
     );
 
 
     // Constructor
 
-        //- Construct from type name and dictionary
-        DataEntry
-        (
-            const word& TypeName,
-            const word& entryName,
-            const dictionary& dict
-        );
+        //- Construct from entry name
+        DataEntry(const word& entryName);
+
+        //- Copy constructor
+        DataEntry(const DataEntry<Type>& de);
 
 
     //- Selector
-        static autoPtr<DataEntry<Type> > New
-        (
-            const word& entryName,
-            const dictionary& dict
-        );
+    static autoPtr<DataEntry<Type> > New
+    (
+        const word& entryName,
+        const dictionary& dict
+    );
 
 
     //- Destructor
-
-        virtual ~DataEntry();
+    virtual ~DataEntry();
 
 
     // Member Functions
 
         // Access
 
-            //- Return the dictionary
-            const dictionary& dict() const;
+            //- Return the name of the entry
+            const word& name() const;
 
 
         // Evaluation
@@ -128,6 +133,14 @@ public:
 
             //- Integrate between two (scalar) values
             virtual Type integrate(const scalar x1, const scalar x2) const = 0;
+
+
+    //- Ostream Operator
+    friend Ostream& operator<< <Type>
+    (
+        Ostream&,
+        const DataEntry<Type>&
+    );
 };
 
 
diff --git a/src/lagrangian/intermediate/submodels/IO/DataEntry/DataEntry/DataEntryIO.C b/src/lagrangian/intermediate/submodels/IO/DataEntry/DataEntry/DataEntryIO.C
new file mode 100644
index 0000000000000000000000000000000000000000..7afa2ef2015d03bbc769771940119e54871ebe8c
--- /dev/null
+++ b/src/lagrangian/intermediate/submodels/IO/DataEntry/DataEntry/DataEntryIO.C
@@ -0,0 +1,48 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "DataEntry.H"
+
+// * * * * * * * * * * * * * * * IOstream Operators  * * * * * * * * * * * * //
+
+template<class Type>
+Foam::Ostream& Foam::operator<<
+(
+    Ostream& os,
+    const DataEntry<Type>&
+)
+{
+    // Check state of Ostream
+    os.check
+    (
+        "Ostream& operator<<(Ostream&, const DataEntry<Type>&)"
+    );
+
+    return os;
+}
+
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/submodels/IO/DataEntry/DataEntry/NewDataEntry.C b/src/lagrangian/intermediate/submodels/IO/DataEntry/DataEntry/NewDataEntry.C
index ac8f7c68609981128f4308e0744b47ea4626c643..3bed47c540e80671de9a0062f47fae0438ea362e 100644
--- a/src/lagrangian/intermediate/submodels/IO/DataEntry/DataEntry/NewDataEntry.C
+++ b/src/lagrangian/intermediate/submodels/IO/DataEntry/DataEntry/NewDataEntry.C
@@ -35,27 +35,24 @@ Foam::autoPtr<Foam::DataEntry<Type> > Foam::DataEntry<Type>::New
     const dictionary& dict
 )
 {
-    word DataEntryType(dict.lookup(entryName));
+    Istream& is(dict.lookup(entryName));
 
-    //    Info<< "Selecting DataEntry " << DataEntryType << endl;
+    word DataEntryType(is);
 
     typename dictionaryConstructorTable::iterator cstrIter =
         dictionaryConstructorTablePtr_->find(DataEntryType);
 
     if (cstrIter == dictionaryConstructorTablePtr_->end())
     {
-        FatalErrorIn
-        (
-            "DataEntry<Type>::New(const dictionary&"
-        )   << "Unknown DataEntry type "
-            << DataEntryType << " for " << entryName
-            << ", constructor not in hash table" << nl << nl
-            << "    Valid DataEntry types are :" << nl
+        FatalErrorIn("DataEntry<Type>::New(Istream&)")
+            << "Unknown DataEntry type " << DataEntryType << " for DataEntry "
+            << entryName << ". Constructor not in hash table" << nl << nl
+            << "    Valid DataEntry types are:" << nl
             << dictionaryConstructorTablePtr_->toc() << nl
             << exit(FatalError);
     }
 
-    return autoPtr<DataEntry<Type> >(cstrIter()(entryName, dict));
+    return autoPtr<DataEntry<Type> >(cstrIter()(entryName, is));
 }
 
 
diff --git a/src/lagrangian/intermediate/submodels/IO/DataEntry/Table/Table.C b/src/lagrangian/intermediate/submodels/IO/DataEntry/Table/Table.C
index f7d5dff6ca2ba2cbfcf2624081a247d75a457212..98abaf6e67e533db1dfe4d19b0656ba548d9d333 100644
--- a/src/lagrangian/intermediate/submodels/IO/DataEntry/Table/Table.C
+++ b/src/lagrangian/intermediate/submodels/IO/DataEntry/Table/Table.C
@@ -29,30 +29,28 @@ License
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
 template<class Type>
-Foam::Table<Type>::Table
-(
-    const word& entryName,
-    const dictionary& dict
-)
+Foam::Table<Type>::Table(const word& entryName, Istream& is)
 :
-    DataEntry<Type>(typeName, entryName, dict),
-    table_(this->dict_.lookup("table"))
+    DataEntry<Type>(entryName),
+    table_(is)
 {
     if (!table_.size())
     {
-        FatalErrorIn
-        (
-             "Foam::Table<Type>::Table"
-             "("
-                 "const word& entryName,"
-                 "const dictionary& dict"
-             ")"
-        ) << "Table is invalid (empty)" << nl
-          << exit(FatalError);
+        FatalErrorIn("Foam::Table<Type>::Table(const Istream&)")
+            << "Table for entry " << this->name_ << " is invalid (empty)"
+            << nl << exit(FatalError);
     }
 }
 
 
+template<class Type>
+Foam::Table<Type>::Table(const Table<Type>& tbl)
+:
+    DataEntry<Type>(tbl),
+    table_(tbl.table_)
+{}
+
+
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
 template<class Type>
@@ -142,4 +140,9 @@ Type Foam::Table<Type>::integrate(const scalar x1, const scalar x2) const
 }
 
 
+// * * * * * * * * * * * * * *  IOStream operators * * * * * * * * * * * * * //
+
+#include "TableIO.C"
+
+
 // ************************************************************************* //
diff --git a/src/lagrangian/intermediate/submodels/IO/DataEntry/Table/Table.H b/src/lagrangian/intermediate/submodels/IO/DataEntry/Table/Table.H
index c336840567fd43e4c1777266205304f375c83e22..2bd1152bf4ce27ff37630c54c4083d4bb3a38953 100644
--- a/src/lagrangian/intermediate/submodels/IO/DataEntry/Table/Table.H
+++ b/src/lagrangian/intermediate/submodels/IO/DataEntry/Table/Table.H
@@ -28,18 +28,14 @@ Class
 Description
     Templated table container data entry. Items are stored in a list of
     Tuple2's. First column is always stored as scalar entries. Data is read
-    in the form, e.g. for (scalar, vector):
+    in the form, e.g. for an entry <entryName> that is (scalar, vector):
 
     @verbatim
-        entry                    Table
-        entryCoeffs
-        {
-            table
-            (
-                0.0 (1 2 3)
-                1.0 (4 5 6)
-            )
-        }
+        <entryName>   table
+        (
+            0.0 (1 2 3)
+            1.0 (4 5 6)
+        );
     @endverbatim
 
 SourceFiles
@@ -58,6 +54,16 @@ SourceFiles
 namespace Foam
 {
 
+template<class Type>
+class Table;
+
+template<class Type>
+Ostream& operator<<
+(
+    Ostream&,
+    const Table<Type>&
+);
+
 /*---------------------------------------------------------------------------*\
                            Class Table Declaration
 \*---------------------------------------------------------------------------*/
@@ -69,38 +75,33 @@ class Table
 {
     // Private data
 
-       //- Table data
-       List<Tuple2<scalar, Type> > table_;
+        //- Table data
+        List<Tuple2<scalar, Type> > table_;
 
 
     // Private Member Functions
 
-        //- Disallow default bitwise copy construct
-        Table(const Table<Type>&);
-
         //- Disallow default bitwise assignment
         void operator=(const Table<Type>&);
 
 
 public:
 
-    // Runtime type information
-    TypeName("Table");
+    //- Runtime type information
+    TypeName("table");
 
 
     // Constructors
 
-        //- Construct from dictionary
-        Table
-        (
-            const word& entryName,
-            const dictionary& dict
-        );
+        //- Construct from entry name and Istream
+        Table(const word& entryName, Istream& is);
 
+        //- Copy constructor
+        Table(const Table<Type>& tbl);
 
-    //- Destructor
 
-        ~Table();
+    //- Destructor
+    virtual ~Table();
 
 
     // Member Functions
@@ -110,6 +111,14 @@ public:
 
         //- Integrate between two (scalar) values
         Type integrate(const scalar x1, const scalar x2) const;
+
+
+    //- Ostream Operator
+    friend Ostream& operator<< <Type>
+    (
+        Ostream&,
+        const Constant<Type>&
+    );
 };
 
 
diff --git a/src/lagrangian/intermediate/submodels/IO/DataEntry/Table/TableIO.C b/src/lagrangian/intermediate/submodels/IO/DataEntry/Table/TableIO.C
new file mode 100644
index 0000000000000000000000000000000000000000..dda24c362aa97abe5f4bb38ec0f72747711a6758
--- /dev/null
+++ b/src/lagrangian/intermediate/submodels/IO/DataEntry/Table/TableIO.C
@@ -0,0 +1,63 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "DataEntry.H"
+
+// * * * * * * * * * * * * * * * IOstream Operators  * * * * * * * * * * * * //
+
+template<class Type>
+Foam::Ostream& Foam::operator<<
+(
+    Ostream& os,
+    const Table<Type>& tbl
+)
+{
+    if (os.format() == IOstream::ASCII)
+    {
+        os  << static_cast<const DataEntry<Type>& >(tbl)
+            << token::SPACE << tbl.table_;
+    }
+    else
+    {
+        os  << static_cast<const DataEntry<Type>& >(tbl);
+        os.write
+        (
+            reinterpret_cast<const char*>(&tbl.table_),
+            sizeof(tbl.table_)
+        );
+    }
+
+    // Check state of Ostream
+    os.check
+    (
+        "Ostream& operator<<(Ostream&, const Table<Type>&)"
+    );
+
+    return os;
+}
+
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/submodels/IO/DataEntry/polynomial/polynomial.C b/src/lagrangian/intermediate/submodels/IO/DataEntry/polynomial/polynomial.C
new file mode 100644
index 0000000000000000000000000000000000000000..276d54146be209caa8c656b964e388547940330e
--- /dev/null
+++ b/src/lagrangian/intermediate/submodels/IO/DataEntry/polynomial/polynomial.C
@@ -0,0 +1,97 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "polynomial.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    defineTypeNameAndDebug(polynomial, 0);
+}
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::polynomial::polynomial(const word& entryName, Istream& is)
+:
+    DataEntry<scalar>(entryName),
+    coeffs_(is)
+{
+    if (!coeffs_.size())
+    {
+        FatalErrorIn("Foam::polynomial::polynomial(const word&, Istream&)")
+            << "polynomial coefficients for entry " << this->name_
+            << " is invalid (empty)" << nl << exit(FatalError);
+    }
+}
+
+
+Foam::polynomial::polynomial(const polynomial& poly)
+:
+    DataEntry<scalar>(poly),
+    coeffs_(poly.coeffs_)
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::polynomial::~polynomial()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::scalar Foam::polynomial::value(const scalar x) const
+{
+    scalar y = 0.0;
+    forAll(coeffs_, i)
+    {
+        y += coeffs_[i].first()*pow(x, coeffs_[i].second());
+    }
+
+    return y;
+}
+
+
+Foam::scalar Foam::polynomial::integrate(const scalar x1, const scalar x2) const
+{
+    scalar intx = 0.0;
+
+    forAll(coeffs_, i)
+    {
+        intx +=
+            coeffs_[i].first()/(coeffs_[i].second() + 1)
+           *(
+                pow(x2, coeffs_[i].second() + 1)
+              - pow(x1, coeffs_[i].second() + 1)
+            );
+    }
+
+    return intx;
+}
+
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/submodels/IO/DataEntry/polynomial/polynomial.H b/src/lagrangian/intermediate/submodels/IO/DataEntry/polynomial/polynomial.H
new file mode 100644
index 0000000000000000000000000000000000000000..6d3cd51f65fddea75f11082b43297873f6113c27
--- /dev/null
+++ b/src/lagrangian/intermediate/submodels/IO/DataEntry/polynomial/polynomial.H
@@ -0,0 +1,132 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::polynomial
+
+Description
+    Polynomial container data entry for scalars. Items are stored in a list of
+    Tuple2's. Data is input in the form, e.g. for an entry <entryName> that
+    describes y = x^2 + 2x^3
+
+    @verbatim
+        <entryName>   polynomial
+        (
+            (1    2)
+            (2    3)
+        );
+    @endverbatim
+
+SourceFiles
+    polynomial.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef polynomial_H
+#define polynomial_H
+
+#include "DataEntry.H"
+#include "Tuple2.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+// Forward declaration of classes
+class polynomial;
+
+// Forward declaration of friend functions
+Ostream& operator<<
+(
+    Ostream&,
+    const polynomial&
+);
+
+/*---------------------------------------------------------------------------*\
+                        Class polynomial Declaration
+\*---------------------------------------------------------------------------*/
+
+class polynomial
+:
+    public DataEntry<scalar>
+{
+    // Private data
+
+        //- Polynomial coefficients - list of prefactor, exponent
+        List<Tuple2<scalar, scalar> > coeffs_;
+
+
+    // Private Member Functions
+
+        //- Disallow default bitwise assignment
+        void operator=(const polynomial&);
+
+
+public:
+
+    //- Runtime type information
+    TypeName("polynomial");
+
+
+    // Constructors
+
+        //- Construct from entry name and Istream
+        polynomial(const word& entryName, Istream& is);
+
+        //- Copy constructor
+        polynomial(const polynomial& poly);
+
+
+    //- Destructor
+    virtual ~polynomial();
+
+
+    // Member Functions
+
+        //- Return polynomial value
+        scalar value(const scalar x) const;
+
+        //- Integrate between two (scalar) values
+        scalar integrate(const scalar x1, const scalar x2) const;
+
+
+    //- Ostream Operator
+    friend Ostream& operator<<
+    (
+        Ostream&,
+        const polynomial&
+    );
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/submodels/IO/DataEntry/polynomial/polynomialIO.C b/src/lagrangian/intermediate/submodels/IO/DataEntry/polynomial/polynomialIO.C
new file mode 100644
index 0000000000000000000000000000000000000000..05c34b645fc696abd1a6ed7c82e27683a9175508
--- /dev/null
+++ b/src/lagrangian/intermediate/submodels/IO/DataEntry/polynomial/polynomialIO.C
@@ -0,0 +1,62 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "polynomial.H"
+
+// * * * * * * * * * * * * * * * IOstream Operators  * * * * * * * * * * * * //
+
+Foam::Ostream& Foam::operator<<
+(
+    Ostream& os,
+    const polynomial& poly
+)
+{
+    if (os.format() == IOstream::ASCII)
+    {
+        os  << static_cast<const DataEntry<scalar>& >(poly)
+            << token::SPACE << poly.coeffs_;
+    }
+    else
+    {
+        os  << static_cast<const DataEntry<scalar>& >(poly);
+        os.write
+        (
+            reinterpret_cast<const char*>(&poly.coeffs_),
+            sizeof(poly.coeffs_)
+        );
+    }
+
+    // Check state of Ostream
+    os.check
+    (
+        "Ostream& operator<<(Ostream&, const polynomial&)"
+    );
+
+    return os;
+}
+
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/submodels/IO/IOList/makeParcelIOList.H b/src/lagrangian/intermediate/submodels/IO/IOList/makeParcelIOList.H
new file mode 100644
index 0000000000000000000000000000000000000000..fb463a8289e69b43508b45e5c9e4d9a35e9d3729
--- /dev/null
+++ b/src/lagrangian/intermediate/submodels/IO/IOList/makeParcelIOList.H
@@ -0,0 +1,53 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Description
+    Macros for defining parcel IOLists
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef makeParcelIOList_H
+#define makeParcelIOList_H
+
+#include "IOPtrList.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#define makeParcelIOList(ParcelType)                                          \
+                                                                              \
+    typedef IOPtrList<ParcelType> IOPtrList##ParcelType;                      \
+                                                                              \
+    defineTemplateTypeNameAndDebugWithName                                    \
+    (                                                                         \
+        IOPtrList##ParcelType,                                                \
+        "IOPtrList<"#ParcelType">",                                           \
+        0                                                                     \
+    );
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
+
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/DispersionModel/DispersionModel.C b/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/DispersionModel/DispersionModel.C
index d583a551c1729a89c0864e66f562ad8b16d32b51..dc89a44b9d7752fc1eff83570c90185e40b2e995 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/DispersionModel/DispersionModel.C
+++ b/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/DispersionModel/DispersionModel.C
@@ -22,14 +22,20 @@ License
     along with OpenFOAM; if not, write to the Free Software Foundation,
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
-Description
-
 \*---------------------------------------------------------------------------*/
 
 #include "DispersionModel.H"
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
+template<class CloudType>
+Foam::DispersionModel<CloudType>::DispersionModel(CloudType& owner)
+:
+    dict_(dictionary::null),
+    owner_(owner)
+{}
+
+
 template<class CloudType>
 Foam::DispersionModel<CloudType>::DispersionModel
 (
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/DispersionModel/DispersionModel.H b/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/DispersionModel/DispersionModel.H
index d2c4da4c302cece2958fc1114b86c2a93dbdc4ca..8587eacccadd6df46244adbdda9403627d604417 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/DispersionModel/DispersionModel.H
+++ b/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/DispersionModel/DispersionModel.H
@@ -42,7 +42,7 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                          Class DispersionModel Declaration
+                        Class DispersionModel Declaration
 \*---------------------------------------------------------------------------*/
 
 template<class CloudType>
@@ -54,7 +54,7 @@ class DispersionModel
         //- Cloud dictionary
         const dictionary& dict_;
 
-        // Reference to the owner cloud class
+        //- Reference to the owner cloud class
         CloudType& owner_;
 
 
@@ -81,6 +81,9 @@ public:
 
     // Constructors
 
+        //- Construct null from owner
+        DispersionModel(CloudType& owner);
+
         //- Construct from components
         DispersionModel
         (
@@ -89,18 +92,16 @@ public:
         );
 
 
-    // Destructor
-
-        virtual ~DispersionModel();
+    //- Destructor
+    virtual ~DispersionModel();
 
 
-    // Selector
-
-        static autoPtr<DispersionModel<CloudType> > New
-        (
-            const dictionary& dict,
-            CloudType& owner
-        );
+    //- Selector
+    static autoPtr<DispersionModel<CloudType> > New
+    (
+        const dictionary& dict,
+        CloudType& owner
+    );
 
 
     // Access
@@ -120,6 +121,9 @@ public:
         //- Flag to indicate whether model activates injection model
         virtual bool active() const = 0;
 
+        //- Cache carrier fields
+        virtual void cacheFields(const bool store) = 0;
+
         //- Update (disperse particles)
         virtual vector update
         (
@@ -159,6 +163,20 @@ public:
             add##SS##CloudType##ParcelType##ConstructorToTable_;
 
 
+#define makeDispersionModelThermoType(SS, CloudType, ParcelType, ThermoType)  \
+                                                                              \
+    defineNamedTemplateTypeNameAndDebug                                       \
+    (                                                                         \
+        SS<CloudType<ParcelType<ThermoType> > >,                              \
+        0                                                                     \
+    );                                                                        \
+                                                                              \
+    DispersionModel<CloudType<ParcelType<ThermoType> > >::                    \
+        adddictionaryConstructorToTable                                       \
+            <SS<CloudType<ParcelType<ThermoType> > > >                        \
+            add##SS##CloudType##ParcelType##ThermoType##ConstructorToTable_;
+
+
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 #ifdef NoRepository
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/DispersionModel/NewDispersionModel.C b/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/DispersionModel/NewDispersionModel.C
index 4db4d79194320d0f7d3788f2fc96c9a8c5309e6e..09717b8e86401a504900962c0863d57d82521d8b 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/DispersionModel/NewDispersionModel.C
+++ b/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/DispersionModel/NewDispersionModel.C
@@ -38,10 +38,7 @@ Foam::DispersionModel<CloudType>::New
     CloudType& owner
 )
 {
-    word DispersionModelType
-    (
-        dict.lookup("DispersionModel")
-    );
+    word DispersionModelType(dict.lookup("DispersionModel"));
 
     Info<< "Selecting DispersionModel " << DispersionModelType << endl;
 
@@ -53,11 +50,14 @@ Foam::DispersionModel<CloudType>::New
         FatalErrorIn
         (
             "DispersionModel<CloudType>::New"
-            "(const dictionary&, CloudType&)"
+            "("
+                "const dictionary&, "
+                "CloudType&"
+            ")"
         )   << "Unknown DispersionModelType type "
             << DispersionModelType
             << ", constructor not in hash table" << nl << nl
-            << "    Valid DispersionModel types are :" << nl
+            << "    Valid DispersionModel types are:" << nl
             << dictionaryConstructorTablePtr_->toc() << exit(FatalError);
     }
 
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/DispersionRASModel/DispersionRASModel.C b/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/DispersionRASModel/DispersionRASModel.C
index 4e834244453dd2403aae07d6793562107d1b1ab1..3689acf8f4783b985f7e77f8ef37adf591d3f99d 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/DispersionRASModel/DispersionRASModel.C
+++ b/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/DispersionRASModel/DispersionRASModel.C
@@ -22,8 +22,6 @@ License
     along with OpenFOAM; if not, write to the Free Software Foundation,
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
-Description
-
 \*---------------------------------------------------------------------------*/
 
 #include "DispersionRASModel.H"
@@ -44,7 +42,11 @@ Foam::DispersionRASModel<CloudType>::DispersionRASModel
         (
             "RASProperties"
         )
-    )
+    ),
+    kPtr_(NULL),
+    ownK_(false),
+    epsilonPtr_(NULL),
+    ownEpsilon_(false)
 {}
 
 
@@ -52,7 +54,56 @@ Foam::DispersionRASModel<CloudType>::DispersionRASModel
 
 template<class CloudType>
 Foam::DispersionRASModel<CloudType>::~DispersionRASModel()
-{}
+{
+    cacheFields(false);
+}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+template<class CloudType>
+void Foam::DispersionRASModel<CloudType>::cacheFields(const bool store)
+{
+    if (store)
+    {
+        tmp<volScalarField> tk = this->turbulence().k();
+        if (tk.isTmp())
+        {
+            kPtr_ = tk.ptr();
+            ownK_ = true;
+        }
+        else
+        {
+            kPtr_ = tk.operator->();
+            ownK_ = false;
+        }
+
+        tmp<volScalarField> tepsilon = this->turbulence().epsilon();
+        if (tepsilon.isTmp())
+        {
+            epsilonPtr_ = tepsilon.ptr();
+            ownEpsilon_ = true;
+        }
+        else
+        {
+            epsilonPtr_ = tepsilon.operator->();
+            ownEpsilon_ = false;
+        }
+    }
+    else
+    {
+        if (ownK_ && kPtr_)
+        {
+            delete kPtr_;
+            ownK_ = false;
+        }
+        if (ownEpsilon_ && epsilonPtr_)
+        {
+            delete epsilonPtr_;
+            ownEpsilon_ = false;
+        }
+    }
+}
 
 
 // ************************************************************************* //
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/DispersionRASModel/DispersionRASModel.H b/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/DispersionRASModel/DispersionRASModel.H
index 1628f23c9b1846b296d668eed3416e8823f492a1..f95ab368854df24e0dca1a23b12a99d66f23d1d4 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/DispersionRASModel/DispersionRASModel.H
+++ b/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/DispersionRASModel/DispersionRASModel.H
@@ -50,12 +50,27 @@ class DispersionRASModel
 :
     public DispersionModel<CloudType>
 {
+protected:
 
-    // Private data
+    // Protected data
 
         //- Reference to the compressible turbulence model
         const compressible::RASModel& turbulence_;
 
+        // Locally cached turbulence fields
+
+            //- Turbulence k
+            const volScalarField* kPtr_;
+
+            //- Take ownership of the k field
+            bool ownK_;
+
+            //- Turbulence epsilon
+            const volScalarField* epsilonPtr_;
+
+            //- Take ownership of the epsilon field
+            bool ownEpsilon_;
+
 
 public:
 
@@ -73,13 +88,15 @@ public:
         );
 
 
-    // Destructor
-
-        virtual ~DispersionRASModel();
+    //- Destructor
+    virtual ~DispersionRASModel();
 
 
     // Member Functions
 
+        //- Cache carrier fields
+        virtual void cacheFields(const bool store);
+
         //- Return const access to the turbulence model
         const compressible::RASModel& turbulence() const
         {
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/GradientDispersionRAS/GradientDispersionRAS.C b/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/GradientDispersionRAS/GradientDispersionRAS.C
index e15ee595e06b5503fa4fc16cf58b7fb2d91a8902..7877af745e61c6f51b427b1e9ae39963773414f3 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/GradientDispersionRAS/GradientDispersionRAS.C
+++ b/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/GradientDispersionRAS/GradientDispersionRAS.C
@@ -22,8 +22,6 @@ License
     along with OpenFOAM; if not, write to the Free Software Foundation,
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
-Description
-
 \*---------------------------------------------------------------------------*/
 
 #include "GradientDispersionRAS.H"
@@ -37,7 +35,8 @@ Foam::GradientDispersionRAS<CloudType>::GradientDispersionRAS
     CloudType& owner
 )
 :
-    DispersionRASModel<CloudType>(dict, owner)
+    DispersionRASModel<CloudType>(dict, owner),
+    gradkPtr_(NULL)
 {}
 
 
@@ -45,7 +44,9 @@ Foam::GradientDispersionRAS<CloudType>::GradientDispersionRAS
 
 template<class CloudType>
 Foam::GradientDispersionRAS<CloudType>::~GradientDispersionRAS()
-{}
+{
+    cacheFields(false);
+}
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
@@ -57,6 +58,25 @@ bool Foam::GradientDispersionRAS<CloudType>::active() const
 }
 
 
+template<class CloudType>
+void Foam::GradientDispersionRAS<CloudType>::cacheFields(const bool store)
+{
+    DispersionRASModel<CloudType>::cacheFields(store);
+
+    if (store)
+    {
+        gradkPtr_ = fvc::grad(*this->kPtr_).ptr();
+    }
+    else
+    {
+        if (gradkPtr_)
+        {
+            delete gradkPtr_;
+        }
+    }
+}
+
+
 template<class CloudType>
 Foam::vector Foam::GradientDispersionRAS<CloudType>::update
 (
@@ -70,9 +90,9 @@ Foam::vector Foam::GradientDispersionRAS<CloudType>::update
 {
     const scalar cps = 0.16432;
 
-    const volScalarField& k = this->turbulence().k();
-    const volScalarField& epsilon = this->turbulence().epsilon();
-    const volVectorField gradk = fvc::grad(k);
+    const volScalarField& k = *this->kPtr_;
+    const volScalarField& epsilon = *this->epsilonPtr_;
+    const volVectorField& gradk = *this->gradkPtr_;
 
     const scalar UrelMag = mag(U - Uc - UTurb);
 
@@ -111,7 +131,7 @@ Foam::vector Foam::GradientDispersionRAS<CloudType>::update
             // away from the axis of symmetry
             // This creates a 'hole' in the spray and to
             // prevent this we let x1 be both negative/positive
-            if (this->owner().meshInfo().caseIs2d())
+            if (this->owner().mesh().nSolutionD() == 2)
             {
                 fac *= x1;
             }
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/GradientDispersionRAS/GradientDispersionRAS.H b/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/GradientDispersionRAS/GradientDispersionRAS.H
index 150bbeb1272fb2477982d438476ceb13686155ce..18391f4eead858e2aa42ba7e55a22f4d634b803a 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/GradientDispersionRAS/GradientDispersionRAS.H
+++ b/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/GradientDispersionRAS/GradientDispersionRAS.H
@@ -51,6 +51,13 @@ class GradientDispersionRAS
 :
     public DispersionRASModel<CloudType>
 {
+protected:
+
+    // Locally cached turbulence fields
+
+        //- Gradient of k
+        const volVectorField* gradkPtr_;
+
 
 public:
 
@@ -68,9 +75,8 @@ public:
         );
 
 
-    // Destructor
-
-        ~GradientDispersionRAS();
+    //- Destructor
+    virtual ~GradientDispersionRAS();
 
 
     // Member Functions
@@ -78,8 +84,11 @@ public:
         //- Flag to indicate whether model activates injection model
         bool active() const;
 
+        //- Cache carrier fields
+        virtual void cacheFields(const bool store);
+
         //- Update (disperse particles)
-        vector update
+        virtual vector update
         (
             const scalar dt,
             const label celli,
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/NoDispersion/NoDispersion.C b/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/NoDispersion/NoDispersion.C
index c239a281ba9162442a7987a88cfb90956661634a..a1927dfcd48e1e9e14fafeaf163c290a9cb34031 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/NoDispersion/NoDispersion.C
+++ b/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/NoDispersion/NoDispersion.C
@@ -22,8 +22,6 @@ License
     along with OpenFOAM; if not, write to the Free Software Foundation,
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
-Description
-
 \*---------------------------------------------------------------------------*/
 
 #include "NoDispersion.H"
@@ -33,11 +31,11 @@ Description
 template<class CloudType>
 Foam::NoDispersion<CloudType>::NoDispersion
 (
-    const dictionary& dict,
+    const dictionary&,
     CloudType& owner
 )
 :
-    DispersionModel<CloudType>(dict, owner)
+    DispersionModel<CloudType>(owner)
 {}
 
 
@@ -57,15 +55,22 @@ bool Foam::NoDispersion<CloudType>::active() const
 }
 
 
+template<class CloudType>
+void Foam::NoDispersion<CloudType>::cacheFields(const bool)
+{
+// do nothing
+}
+
+
 template<class CloudType>
 Foam::vector Foam::NoDispersion<CloudType>::update
 (
-    const scalar dt,
-    const label celli,
-    const vector& U,
+    const scalar,
+    const label,
+    const vector&,
     const vector& Uc,
-    vector& UTurb,
-    scalar& tTurb
+    vector&,
+    scalar&
 )
 {
     // Do nothing
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/NoDispersion/NoDispersion.H b/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/NoDispersion/NoDispersion.H
index 52632c3a835dde0074da8d310474c04ee6d57f82..93482c49ae9a164ff617f13d2ed27ae04c50536a 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/NoDispersion/NoDispersion.H
+++ b/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/NoDispersion/NoDispersion.H
@@ -26,7 +26,7 @@ Class
     Foam::NoDispersion
 
 Description
-    No turbulent dispersion of the parcels
+    Place holder for 'none' option
 
 \*---------------------------------------------------------------------------*/
 
@@ -41,7 +41,7 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                           Class NoDispersion Declaration
+                       Class NoDispersion Declaration
 \*---------------------------------------------------------------------------*/
 
 template<class CloudType>
@@ -49,11 +49,10 @@ class NoDispersion
 :
     public DispersionModel<CloudType>
 {
-
 public:
 
     //- Runtime type information
-    TypeName("NoDispersion");
+    TypeName("none");
 
 
     // Constructors
@@ -66,18 +65,20 @@ public:
         );
 
 
-    // Destructor
-
-        ~NoDispersion();
+    //- Destructor
+    virtual ~NoDispersion();
 
 
     // Member Functions
 
         //- Flag to indicate whether model activates injection model
-        bool active() const;
+        virtual bool active() const;
+
+        //- Cache carrier fields
+        virtual void cacheFields(const bool store);
 
         //- Update (disperse particles)
-        vector update
+        virtual vector update
         (
             const scalar dt,
             const label celli,
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/StochasticDispersionRAS/StochasticDispersionRAS.C b/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/StochasticDispersionRAS/StochasticDispersionRAS.C
index 6887244a98a82f13c19222c4af5371402a6fa620..ffd3fd974a0fb98b3fe17b20ef5ed70810d1f343 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/StochasticDispersionRAS/StochasticDispersionRAS.C
+++ b/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/StochasticDispersionRAS/StochasticDispersionRAS.C
@@ -22,8 +22,6 @@ License
     along with OpenFOAM; if not, write to the Free Software Foundation,
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
-Description
-
 \*---------------------------------------------------------------------------*/
 
 #include "StochasticDispersionRAS.H"
@@ -70,8 +68,8 @@ Foam::vector Foam::StochasticDispersionRAS<CloudType>::update
 {
     const scalar cps = 0.16432;
 
-    const volScalarField& k = this->turbulence().k();
-    const volScalarField& epsilon = this->turbulence().epsilon();
+    const volScalarField& k = *this->kPtr_;
+    const volScalarField& epsilon = *this->epsilonPtr_;
 
     const scalar UrelMag = mag(U - Uc - UTurb);
 
@@ -95,7 +93,8 @@ Foam::vector Foam::StochasticDispersionRAS<CloudType>::update
             dir /= mag(dir) + SMALL;
 
             // Numerical Recipes... Ch. 7. Random Numbers...
-            scalar x1, x2;
+            scalar x1 = 0.0;
+            scalar x2 = 0.0;
             scalar rsq = 10.0;
             while ((rsq > 1.0) || (rsq == 0.0))
             {
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/StochasticDispersionRAS/StochasticDispersionRAS.H b/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/StochasticDispersionRAS/StochasticDispersionRAS.H
index 596fa1d1eb60afe12040290b40ff8156e08da762..17c70b7814c9b3da80c891b091b82f2c25e31d5a 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/StochasticDispersionRAS/StochasticDispersionRAS.H
+++ b/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/StochasticDispersionRAS/StochasticDispersionRAS.H
@@ -51,7 +51,6 @@ class StochasticDispersionRAS
 :
     public DispersionRASModel<CloudType>
 {
-
 public:
 
     //- Runtime type information
@@ -68,18 +67,17 @@ public:
         );
 
 
-    // Destructor
-
-        ~StochasticDispersionRAS();
+    //- Destructor
+    virtual ~StochasticDispersionRAS();
 
 
     // Member Functions
 
         //- Flag to indicate whether model activates injection model
-        bool active() const;
+        virtual bool active() const;
 
         //- Update (disperse particles)
-        vector update
+        virtual vector update
         (
             const scalar dt,
             const label celli,
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/DragModel/DragModel/DragModel.C b/src/lagrangian/intermediate/submodels/Kinematic/DragModel/DragModel/DragModel.C
index 7494f397e693d2efc0dfd29aa4ee0c51bee2da5b..ae4e2a20629b5a917668e0787509f05f0bec7549 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/DragModel/DragModel/DragModel.C
+++ b/src/lagrangian/intermediate/submodels/Kinematic/DragModel/DragModel/DragModel.C
@@ -34,7 +34,8 @@ Foam::DragModel<CloudType>::DragModel
     const dictionary& dict,
     CloudType& owner
 )
-:   dict_(dict),
+:
+    dict_(dict),
     owner_(owner)
 {}
 
@@ -63,22 +64,21 @@ const Foam::dictionary& Foam::DragModel<CloudType>::dict() const
 
 
 template<class CloudType>
-Foam::scalar Foam::DragModel<CloudType>::Cu
+Foam::scalar Foam::DragModel<CloudType>::utc
 (
     const vector& Ur,
     const scalar d,
     const scalar rhoc,
-    const scalar rhop,
     const scalar mu
 ) const
 {
     const scalar magUr = mag(Ur);
 
-    const scalar Re = rhoc*magUr*d/(mu + SMALL);
+    const scalar Re = rhoc*magUr*d/(mu + ROOTVSMALL);
 
-    const scalar cd = Cd(Re);
+    const scalar Cd = this->Cd(Re);
 
-    return 3.0*cd*rhoc*magUr/(4.0*d*rhop);
+    return Cd*rhoc*magUr/8.0;
 }
 
 
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/DragModel/DragModel/DragModel.H b/src/lagrangian/intermediate/submodels/Kinematic/DragModel/DragModel/DragModel.H
index 31b4ac56f0e770d968f3a44dc46b953efae2439e..4b4d6c4dd83b46efae005017e1759445e3705326 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/DragModel/DragModel/DragModel.H
+++ b/src/lagrangian/intermediate/submodels/Kinematic/DragModel/DragModel/DragModel.H
@@ -25,7 +25,6 @@ License
 Class
     Foam::DragModel
 
-
 Description
     Templated drag model class
 
@@ -54,13 +53,12 @@ namespace Foam
 template<class CloudType>
 class DragModel
 {
-
     // Private data
 
         //- The cloud dictionary
         const dictionary& dict_;
 
-        // reference to the owner cloud class
+        //- Reference to the owner cloud class
         CloudType& owner_;
 
 
@@ -93,18 +91,16 @@ public:
         );
 
 
-    // Destructor
-
-        virtual ~DragModel();
-
+    //- Destructor
+    virtual ~DragModel();
 
-    // Selector
 
-        static autoPtr<DragModel<CloudType> > New
-        (
-            const dictionary& dict,
-            CloudType& cloud
-        );
+    //- Selector
+    static autoPtr<DragModel<CloudType> > New
+    (
+        const dictionary& dict,
+        CloudType& cloud
+    );
 
 
     // Access
@@ -124,14 +120,13 @@ public:
         //- Return drag coefficient
         virtual scalar Cd(const scalar Re) const = 0;
 
-        //- Return linearised coefficient for velocity equation
-        //  Drag force per unit particle mass = Cu(U - Up)
-        scalar Cu
+        //- Return momentum transfer coefficient
+        //  Drag force per unit particle surface area = utc(U - Up)
+        scalar utc
         (
             const vector& Ur,
             const scalar d,
             const scalar rhoc,
-            const scalar rhop,
             const scalar mu
         ) const;
 };
@@ -159,6 +154,20 @@ public:
             add##SS##CloudType##ParcelType##ConstructorToTable_;
 
 
+#define makeDragModelThermoType(SS, CloudType, ParcelType, ThermoType)        \
+                                                                              \
+    defineNamedTemplateTypeNameAndDebug                                       \
+    (                                                                         \
+        SS<CloudType<ParcelType<ThermoType> > >,                              \
+        0                                                                     \
+    );                                                                        \
+                                                                              \
+    DragModel<CloudType<ParcelType<ThermoType> > >::                          \
+        adddictionaryConstructorToTable                                       \
+            <SS<CloudType<ParcelType<ThermoType> > > >                        \
+            add##SS##CloudType##ParcelType##ThermoType##ConstructorToTable_;
+
+
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 #ifdef NoRepository
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/DragModel/DragModel/NewDragModel.C b/src/lagrangian/intermediate/submodels/Kinematic/DragModel/DragModel/NewDragModel.C
index 3cee2ec548d9992e5b31de7ef6b458e2c59c33b8..6e1e80d3cda7a76abc961b277ca09e87f3d09664 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/DragModel/DragModel/NewDragModel.C
+++ b/src/lagrangian/intermediate/submodels/Kinematic/DragModel/DragModel/NewDragModel.C
@@ -35,10 +35,7 @@ Foam::autoPtr<Foam::DragModel<CloudType> > Foam::DragModel<CloudType>::New
     CloudType& owner
 )
 {
-    word DragModelType
-    (
-        dict.lookup("DragModel")
-    );
+    word DragModelType(dict.lookup("DragModel"));
 
     Info<< "Selecting DragModel " << DragModelType << endl;
 
@@ -50,12 +47,14 @@ Foam::autoPtr<Foam::DragModel<CloudType> > Foam::DragModel<CloudType>::New
         FatalErrorIn
         (
             "DragModel<CloudType>::New"
-            "(const dictionary&, CloudType&)"
-        )
-            << "Unknown DragModelType type "
+            "("
+                "const dictionary&,"
+                "CloudType&"
+            ")"
+        )   << "Unknown DragModelType type "
             << DragModelType
             << ", constructor not in hash table" << nl << nl
-            << "    Valid DragModel types are :" << nl
+            << "    Valid DragModel types are:" << nl
             << dictionaryConstructorTablePtr_->toc()
             << exit(FatalError);
     }
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/DragModel/NoDrag/NoDrag.C b/src/lagrangian/intermediate/submodels/Kinematic/DragModel/NoDrag/NoDrag.C
index 31ce20689c9bd17195b71eeeeef1d6e8b8c28c0b..2d1586c9cbf058eedbeddc9bb9cd928342c063a6 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/DragModel/NoDrag/NoDrag.C
+++ b/src/lagrangian/intermediate/submodels/Kinematic/DragModel/NoDrag/NoDrag.C
@@ -29,11 +29,7 @@ License
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
 template <class CloudType>
-Foam::NoDrag<CloudType>::NoDrag
-(
-    const dictionary& dict,
-    CloudType& owner
-)
+Foam::NoDrag<CloudType>::NoDrag(const dictionary& dict, CloudType& owner)
 :
     DragModel<CloudType>(dict, owner)
 {}
@@ -56,10 +52,7 @@ bool Foam::NoDrag<CloudType>::active() const
 
 
 template<class CloudType>
-Foam::scalar Foam::NoDrag<CloudType>::Cd
-(
-    const scalar
-) const
+Foam::scalar Foam::NoDrag<CloudType>::Cd(const scalar) const
 {
     return 0.0;
 }
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/DragModel/NoDrag/NoDrag.H b/src/lagrangian/intermediate/submodels/Kinematic/DragModel/NoDrag/NoDrag.H
index c6033677c7c2d68286f22283d980ec14c8eee393..b017f50270ad14935a7fb070d2439dd57f2c4bd1 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/DragModel/NoDrag/NoDrag.H
+++ b/src/lagrangian/intermediate/submodels/Kinematic/DragModel/NoDrag/NoDrag.H
@@ -26,7 +26,7 @@ Class
     Foam::NoDrag
 
 Description
-    Dummy drag model for 'no drag'
+    Dummy drag model for 'none'
 
 \*---------------------------------------------------------------------------*/
 
@@ -48,11 +48,10 @@ class NoDrag
 :
     public DragModel<CloudType>
 {
-
 public:
 
     //- Runtime type information
-    TypeName("NoDrag");
+    TypeName("none");
 
 
     // Constructors
@@ -60,14 +59,13 @@ public:
         //- Construct from dictionary
         NoDrag
         (
-            const dictionary& dict,
-            CloudType& owner
+            const dictionary&,
+            CloudType&
         );
 
 
-    // Destructor
-
-        ~NoDrag();
+    //- Destructor
+    virtual ~NoDrag();
 
 
     // Member Functions
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/DragModel/SphereDrag/SphereDrag.C b/src/lagrangian/intermediate/submodels/Kinematic/DragModel/SphereDrag/SphereDrag.C
index c53541038362cc54c68e78406a1c6955180ec97a..e5c76c54169d262176373d1a42d778c709b630e5 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/DragModel/SphereDrag/SphereDrag.C
+++ b/src/lagrangian/intermediate/submodels/Kinematic/DragModel/SphereDrag/SphereDrag.C
@@ -56,10 +56,7 @@ bool Foam::SphereDrag<CloudType>::active() const
 
 
 template <class CloudType>
-Foam::scalar Foam::SphereDrag<CloudType>::Cd
-(
-    const scalar Re
-) const
+Foam::scalar Foam::SphereDrag<CloudType>::Cd(const scalar Re) const
 {
     scalar Cd;
     if (Re < SMALL)
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/DragModel/SphereDrag/SphereDrag.H b/src/lagrangian/intermediate/submodels/Kinematic/DragModel/SphereDrag/SphereDrag.H
index 31e8ae1d725354b23afbcca947971f504f1bc9f8..8e3afaf8aeb86a8acc18954f96f427fa4570d677 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/DragModel/SphereDrag/SphereDrag.H
+++ b/src/lagrangian/intermediate/submodels/Kinematic/DragModel/SphereDrag/SphereDrag.H
@@ -48,7 +48,6 @@ class SphereDrag
 :
     public DragModel<CloudType>
 {
-
 public:
 
     //- Runtime type information
@@ -65,9 +64,8 @@ public:
         );
 
 
-    // Destructor
-
-        ~SphereDrag();
+    //- Destructor
+    virtual ~SphereDrag();
 
 
     // Member Functions
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ConeInjection/ConeInjection.C b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ConeInjection/ConeInjection.C
index a1cc13f345d8d36b4238e539b93c16902553a2bc..b7dd300b45857b920c986b79e63726db8020f478 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ConeInjection/ConeInjection.C
+++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ConeInjection/ConeInjection.C
@@ -30,7 +30,7 @@ License
 // * * * * * * * * * * * * Protected Member Functions  * * * * * * * * * * * //
 
 template<class CloudType>
-Foam::label Foam::ConeInjection<CloudType>::nParcelsToInject
+Foam::label Foam::ConeInjection<CloudType>::parcelsToInject
 (
     const scalar time0,
     const scalar time1
@@ -77,6 +77,7 @@ Foam::ConeInjection<CloudType>::ConeInjection
     InjectionModel<CloudType>(dict, owner, typeName),
     duration_(readScalar(this->coeffDict().lookup("duration"))),
     position_(this->coeffDict().lookup("position")),
+    injectorCell_(-1),
     direction_(this->coeffDict().lookup("direction")),
     parcelsPerSecond_
     (
@@ -145,6 +146,9 @@ Foam::ConeInjection<CloudType>::ConeInjection
 
     // Set total volume to inject
     this->volumeTotal_ = volumeFlowRate_().integrate(0.0, duration_);
+
+    // Set/cache the injector cell
+    this->findCellAtPosition(injectorCell_, position_);
 }
 
 
@@ -172,47 +176,30 @@ Foam::scalar Foam::ConeInjection<CloudType>::timeEnd() const
 
 
 template<class CloudType>
-Foam::vector Foam::ConeInjection<CloudType>::position
+void Foam::ConeInjection<CloudType>::setPositionAndCell
 (
+    const label,
     const label,
     const scalar,
-    const polyMeshInfo& meshInfo
+    vector& position,
+    label& cellOwner
 )
 {
-    vector pos = position_;
-    if (meshInfo.caseIs2d())
-    {
-        if (meshInfo.caseIs2dWedge())
-        {
-            pos.component(meshInfo.emptyComponent()) = 0.0;
-        }
-        else if (meshInfo.caseIs2dSlab())
-        {
-            pos.component(meshInfo.emptyComponent()) =
-                meshInfo.centrePoint().component(meshInfo.emptyComponent());
-        }
-        else
-        {
-            FatalErrorIn
-            (
-                "Foam::vector Foam::ConeInjection<CloudType>::position"
-            )   << "Could not determine 2-D case geometry" << nl
-                << abort(FatalError);
-        }
-    }
-
-    return pos;
+    position = position_;
+    cellOwner = injectorCell_;
 }
 
 
 template<class CloudType>
-Foam::vector Foam::ConeInjection<CloudType>::velocity
+void Foam::ConeInjection<CloudType>::setProperties
 (
+    const label parcelI,
     const label,
     const scalar time,
-    const polyMeshInfo& meshInfo
+    typename CloudType::parcelType& parcel
 )
 {
+    // set particle velocity
     const scalar deg2Rad = mathematicalConstant::pi/180.0;
 
     scalar t = time - this->SOI_;
@@ -229,27 +216,26 @@ Foam::vector Foam::ConeInjection<CloudType>::velocity
     vector normal = alpha*(tanVec1_*cos(beta) + tanVec2_*sin(beta));
     vector dirVec = dcorr*direction_;
     dirVec += normal;
+    dirVec /= mag(dirVec);
 
-    // Remove empty component of velocity for slab cases
-    if (meshInfo.caseIs2dSlab())
-    {
-        dirVec.component(meshInfo.emptyComponent()) = 0.0;
-    }
+    parcel.U() = Umag_().value(t)*dirVec;
+
+    // set particle diameter
+    parcel.d() = parcelPDF_().sample();
+}
 
-    dirVec /= mag(dirVec);
 
-    return Umag_().value(t)*dirVec;
+template<class CloudType>
+bool Foam::ConeInjection<CloudType>::fullyDescribed() const
+{
+    return false;
 }
 
 
 template<class CloudType>
-Foam::scalar Foam::ConeInjection<CloudType>::d0
-(
-    const label,
-    const scalar
-) const
+bool Foam::ConeInjection<CloudType>::validInjection(const label)
 {
-    return parcelPDF_().sample();
+    return true;
 }
 
 
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ConeInjection/ConeInjection.H b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ConeInjection/ConeInjection.H
index d4f01a4b68eaca241b9b371ca66979807fb27bdf..5e6498e3d4cd31d614420da63b3225d47a9724bb 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ConeInjection/ConeInjection.H
+++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ConeInjection/ConeInjection.H
@@ -53,6 +53,8 @@ SourceFiles
 namespace Foam
 {
 
+// Forward declaration of classes
+
 template<class Type>
 class DataEntry;
 
@@ -65,17 +67,16 @@ class ConeInjection
 :
     public InjectionModel<CloudType>
 {
-
     // Private data
 
-        //- Coefficients dictionary
-        dictionary coeffDict_;
-
         //- Injection duration [s]
         const scalar duration_;
 
         //- Injector position [m]
-        const vector position_;
+        vector position_;
+
+        //- Cell containing injector position []
+        label injectorCell_;
 
         //- Injector direction []
         vector direction_;
@@ -112,14 +113,14 @@ protected:
 
     // Protected member functions
 
-        //- Number of parcels to introduce over the time step
-        label nParcelsToInject
+        //- Number of parcels to introduce over the time step relative to SOI
+        label parcelsToInject
         (
             const scalar time0,
             const scalar time1
         ) const;
 
-        //- Number of parcels to introduce over the time step
+        //- Number of parcels to introduce over the time step relative to SOI
         scalar volumeToInject
         (
             const scalar time0,
@@ -143,9 +144,8 @@ public:
         );
 
 
-    // Destructor
-
-        ~ConeInjection();
+    //- Destructor
+    virtual ~ConeInjection();
 
 
     // Member Functions
@@ -159,28 +159,31 @@ public:
 
         // Injection geometry
 
-            //- Return the injection position
-            vector position
+            //- Set the injection position and owner cell
+            virtual void setPositionAndCell
             (
-                const label iParcel,
+                const label parcelI,
+                const label nParcels,
                 const scalar time,
-                const polyMeshInfo& meshInfo
+                vector& position,
+                label& cellOwner
             );
 
-            //- Return the velocity of the parcel to introduce at a time
-            vector velocity
+            //- Set the parcel properties
+            virtual void setProperties
             (
-                const label,
+                const label parcelI,
+                const label nParcels,
                 const scalar time,
-                const polyMeshInfo& meshInfo
+                typename CloudType::parcelType& parcel
             );
 
-            //- Return the diameter of the parcel to introduce at a time
-            scalar d0
-            (
-                const label,
-                const scalar
-            ) const;
+            //- Flag to identify whether model fully describes the parcel
+            virtual bool fullyDescribed() const;
+
+            //- Return flag to identify whether or not injection of parcelI is
+            //  permitted
+            virtual bool validInjection(const label parcelI);
 };
 
 
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ConeInjectionMP/ConeInjectionMP.C b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ConeInjectionMP/ConeInjectionMP.C
new file mode 100644
index 0000000000000000000000000000000000000000..8d1b57f2317001594da9a904742f28524bb93c6e
--- /dev/null
+++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ConeInjectionMP/ConeInjectionMP.C
@@ -0,0 +1,289 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "ConeInjectionMP.H"
+#include "DataEntry.H"
+
+// * * * * * * * * * * * * Protected Member Functions  * * * * * * * * * * * //
+
+template<class CloudType>
+Foam::label Foam::ConeInjectionMP<CloudType>::parcelsToInject
+(
+    const scalar time0,
+    const scalar time1
+) const
+{
+    if ((time0 >= 0.0) && (time0 < duration_))
+    {
+        const scalar targetVolume = volumeFlowRate_().integrate(0, time1);
+
+        const label targetParcels =
+            parcelsPerInjector_*targetVolume/this->volumeTotal_;
+
+        const label nToInject = targetParcels - nInjected_;
+
+        nInjected_ += nToInject;
+
+        return positions_.size()*nToInject;
+    }
+    else
+    {
+        return 0;
+    }
+}
+
+
+template<class CloudType>
+Foam::scalar Foam::ConeInjectionMP<CloudType>::volumeToInject
+(
+    const scalar time0,
+    const scalar time1
+) const
+{
+    if ((time0 >= 0.0) && (time0 < duration_))
+    {
+        return volumeFlowRate_().integrate(time0, time1);
+    }
+    else
+    {
+        return 0.0;
+    }
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template<class CloudType>
+Foam::ConeInjectionMP<CloudType>::ConeInjectionMP
+(
+    const dictionary& dict,
+    CloudType& owner
+)
+:
+    InjectionModel<CloudType>(dict, owner, typeName),
+    positionsFile_(this->coeffDict().lookup("positionsFile")),
+    positions_
+    (
+        IOobject
+        (
+            positionsFile_,
+            owner.db().time().constant(),
+            owner.mesh(),
+            IOobject::MUST_READ,
+            IOobject::NO_WRITE
+        )
+    ),
+    injectorCells_(positions_.size()),
+    axesFile_(this->coeffDict().lookup("axesFile")),
+    axes_
+    (
+        IOobject
+        (
+            axesFile_,
+            owner.db().time().constant(),
+            owner.mesh(),
+            IOobject::MUST_READ,
+            IOobject::NO_WRITE
+        )
+    ),
+    duration_(readScalar(this->coeffDict().lookup("duration"))),
+    parcelsPerInjector_
+    (
+        readScalar(this->coeffDict().lookup("parcelsPerInjector"))
+    ),
+    volumeFlowRate_
+    (
+        DataEntry<scalar>::New
+        (
+            "volumeFlowRate",
+            this->coeffDict()
+        )
+    ),
+    Umag_
+    (
+        DataEntry<scalar>::New
+        (
+            "Umag",
+            this->coeffDict()
+        )
+    ),
+    thetaInner_
+    (
+        DataEntry<scalar>::New
+        (
+            "thetaInner",
+            this->coeffDict()
+        )
+    ),
+    thetaOuter_
+    (
+        DataEntry<scalar>::New
+        (
+            "thetaOuter",
+            this->coeffDict()
+        )
+    ),
+    parcelPDF_
+    (
+        pdf::New
+        (
+            this->coeffDict().subDict("parcelPDF"),
+            owner.rndGen()
+        )
+    ),
+    nInjected_(this->parcelsAddedTotal()),
+    tanVec1_(positions_.size()),
+    tanVec2_(positions_.size())
+{
+    // Normalise direction vector and determine direction vectors
+    // tangential to direction
+    forAll(axes_, i)
+    {
+        axes_[i] /= mag(axes_[i]);
+
+        vector tangent = vector::zero;
+        scalar magTangent = 0.0;
+
+        while (magTangent < SMALL)
+        {
+            vector v = this->owner().rndGen().vector01();
+
+            tangent = v - (v & axes_[i])*axes_[i];
+            magTangent = mag(tangent);
+        }
+
+        tanVec1_[i] = tangent/magTangent;
+        tanVec2_[i] = axes_[i]^tanVec1_[i];
+    }
+
+    // Set total volume to inject
+    this->volumeTotal_ = volumeFlowRate_().integrate(0.0, duration_);
+
+    // Set/cache the injector cells
+    forAll(positions_, i)
+    {
+        this->findCellAtPosition
+        (
+            injectorCells_[i],
+            positions_[i]
+        );
+    }
+}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+template<class CloudType>
+Foam::ConeInjectionMP<CloudType>::~ConeInjectionMP()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+template<class CloudType>
+bool Foam::ConeInjectionMP<CloudType>::active() const
+{
+    return true;
+}
+
+
+template<class CloudType>
+Foam::scalar Foam::ConeInjectionMP<CloudType>::timeEnd() const
+{
+    return this->SOI_ + duration_;
+}
+
+
+template<class CloudType>
+void Foam::ConeInjectionMP<CloudType>::setPositionAndCell
+(
+    const label parcelI,
+    const label,
+    const scalar,
+    vector& position,
+    label& cellOwner
+)
+{
+    const label i = parcelI%positions_.size();
+
+    position = positions_[i];
+    cellOwner = injectorCells_[i];
+}
+
+
+template<class CloudType>
+void Foam::ConeInjectionMP<CloudType>::setProperties
+(
+    const label parcelI,
+    const label,
+    const scalar time,
+    typename CloudType::parcelType& parcel
+)
+{
+    // set particle velocity
+    const label i = parcelI%positions_.size();
+
+    const scalar deg2Rad = mathematicalConstant::pi/180.0;
+
+    scalar t = time - this->SOI_;
+    scalar ti = thetaInner_().value(t);
+    scalar to = thetaOuter_().value(t);
+    scalar coneAngle = this->owner().rndGen().scalar01()*(to - ti) + ti;
+
+    coneAngle *= deg2Rad;
+    scalar alpha = sin(coneAngle);
+    scalar dcorr = cos(coneAngle);
+    scalar beta =
+        2.0*mathematicalConstant::pi*this->owner().rndGen().scalar01();
+
+    vector normal = alpha*(tanVec1_[i]*cos(beta) + tanVec2_[i]*sin(beta));
+    vector dirVec = dcorr*axes_[i];
+    dirVec += normal;
+
+    dirVec /= mag(dirVec);
+
+    parcel.U() = Umag_().value(t)*dirVec;
+
+    // set particle diameter
+    parcel.d() = parcelPDF_().sample();
+}
+
+
+template<class CloudType>
+bool Foam::ConeInjectionMP<CloudType>::fullyDescribed() const
+{
+    return false;
+}
+
+
+template<class CloudType>
+bool Foam::ConeInjectionMP<CloudType>::validInjection(const label)
+{
+    return true;
+}
+
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ConeInjectionMP/ConeInjectionMP.H b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ConeInjectionMP/ConeInjectionMP.H
new file mode 100644
index 0000000000000000000000000000000000000000..238d0463ef959f4a346eee1b57cf802abaa91ed9
--- /dev/null
+++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ConeInjectionMP/ConeInjectionMP.H
@@ -0,0 +1,214 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::ConeInjectionMP
+
+Description
+    Cone injection multi-point
+
+    - User specifies
+      - time of start of injection
+      - injector positions
+      - directions (along injection axes)
+      - parcel flow rate
+      - parcel velocities
+      - inner and outer cone angles
+    - Parcel diameters obtained by PDF model
+
+SourceFiles
+    ConeInjectionMP.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef ConeInjectionMP_H
+#define ConeInjectionMP_H
+
+#include "InjectionModel.H"
+#include "pdf.H"
+#include "vectorList.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+// Forward declaration of classes
+
+template<class Type>
+class DataEntry;
+
+/*---------------------------------------------------------------------------*\
+                       Class ConeInjectionMP Declaration
+\*---------------------------------------------------------------------------*/
+
+template<class CloudType>
+class ConeInjectionMP
+:
+    public InjectionModel<CloudType>
+{
+    // Private data
+
+        //- Name of file containing positions data
+        const word positionsFile_;
+
+        //- Field of injector positions
+        vectorIOField positions_;
+
+        //- Field of cell labels corresoponding to injector positions
+        labelList injectorCells_;
+
+        //- Name of file containing axes data
+        const word axesFile_;
+
+        //- Field of injector positions
+        vectorIOField axes_;
+
+        //- Injection duration [s]
+        const scalar duration_;
+
+        //- Number of parcels to introduce per injector
+        const label parcelsPerInjector_;
+
+        //- Volume flow rate of parcels to introduce relative to SOI [m^3]
+        const autoPtr<DataEntry<scalar> > volumeFlowRate_;
+
+        //- Parcel velocity magnitude relative to SOI [m/s]
+        const autoPtr<DataEntry<scalar> > Umag_;
+
+        //- Inner cone angle relative to SOI [deg]
+        const autoPtr<DataEntry<scalar> > thetaInner_;
+
+        //- Outer cone angle relative to SOI [deg]
+        const autoPtr<DataEntry<scalar> > thetaOuter_;
+
+        //- Parcel size PDF model
+        const autoPtr<pdf> parcelPDF_;
+
+        //- Number of parcels per injector already injected
+        mutable label nInjected_;
+
+
+        // Tangential vectors to the direction vector
+
+            //- First tangential vector
+            vectorList tanVec1_;
+
+            //- Second tangential vector
+            vectorList tanVec2_;
+
+
+protected:
+
+    // Protected member functions
+
+        //- Number of parcels to introduce over the time step
+        label parcelsToInject
+        (
+            const scalar time0,
+            const scalar time1
+        ) const;
+
+        //- Number of parcels to introduce over the time step
+        scalar volumeToInject
+        (
+            const scalar time0,
+            const scalar time1
+        ) const;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("ConeInjectionMP");
+
+
+    // Constructors
+
+        //- Construct from dictionary
+        ConeInjectionMP
+        (
+            const dictionary& dict,
+            CloudType& owner
+        );
+
+
+    //- Destructor
+    virtual ~ConeInjectionMP();
+
+
+    // Member Functions
+
+        //- Flag to indicate whether model activates injection model
+        bool active() const;
+
+        //- Return the end-of-injection time
+        scalar timeEnd() const;
+
+
+        // Injection geometry
+
+            //- Set the injection position and owner cell
+            virtual void setPositionAndCell
+            (
+                const label parcelI,
+                const label nParcels,
+                const scalar time,
+                vector& position,
+                label& cellOwner
+            );
+
+            //- Set the parcel properties
+            virtual void setProperties
+            (
+                const label parcelI,
+                const label nParcels,
+                const scalar time,
+                typename CloudType::parcelType& parcel
+            );
+
+            //- Flag to identify whether model fully describes the parcel
+            virtual bool fullyDescribed() const;
+
+            //- Return flag to identify whether or not injection of parcelI is
+            //  permitted
+            virtual bool validInjection(const label parcelI);
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#ifdef NoRepository
+#   include "ConeInjectionMP.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/FieldActivatedInjection/FieldActivatedInjection.C b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/FieldActivatedInjection/FieldActivatedInjection.C
new file mode 100644
index 0000000000000000000000000000000000000000..8429ca7ca6543c88b80066ec1bfde05d61063e82
--- /dev/null
+++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/FieldActivatedInjection/FieldActivatedInjection.C
@@ -0,0 +1,230 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "FieldActivatedInjection.H"
+#include "volFields.H"
+
+// * * * * * * * * * * * * Protected Member Functions  * * * * * * * * * * * //
+
+template<class CloudType>
+Foam::label Foam::FieldActivatedInjection<CloudType>::parcelsToInject
+(
+    const scalar time0,
+    const scalar time1
+) const
+{
+    if (sum(nParcelsInjected_) < nParcelsPerInjector_*positions_.size())
+    {
+        return positions_.size();
+    }
+    else
+    {
+        return 0;
+    }
+}
+
+
+template<class CloudType>
+Foam::scalar Foam::FieldActivatedInjection<CloudType>::volumeToInject
+(
+    const scalar time0,
+    const scalar time1
+) const
+{
+    if (sum(nParcelsInjected_) < nParcelsPerInjector_*positions_.size())
+    {
+        return this->volumeTotal_/nParcelsPerInjector_;
+    }
+    else
+    {
+        return 0;
+    }
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template<class CloudType>
+Foam::FieldActivatedInjection<CloudType>::FieldActivatedInjection
+(
+    const dictionary& dict,
+    CloudType& owner
+)
+:
+    InjectionModel<CloudType>(dict, owner, typeName),
+    factor_(readScalar(this->coeffDict().lookup("factor"))),
+    referenceField_
+    (
+        owner.db().objectRegistry::lookupObject<volScalarField>
+        (
+            this->coeffDict().lookup("referenceField")
+        )
+    ),
+    thresholdField_
+    (
+        owner.db().objectRegistry::lookupObject<volScalarField>
+        (
+            this->coeffDict().lookup("thresholdField")
+        )
+    ),
+    positionsFile_(this->coeffDict().lookup("positionsFile")),
+    positions_
+    (
+        IOobject
+        (
+            positionsFile_,
+            owner.db().time().constant(),
+            owner.mesh(),
+            IOobject::MUST_READ,
+            IOobject::NO_WRITE
+        )
+    ),
+    injectorCells_(positions_.size()),
+    nParcelsPerInjector_
+    (
+        readLabel(this->coeffDict().lookup("parcelsPerInjector"))
+    ),
+    nParcelsInjected_(positions_.size(), 0),
+    U0_(this->coeffDict().lookup("U0")),
+    diameters_(positions_.size()),
+    parcelPDF_
+    (
+        pdf::New
+        (
+            this->coeffDict().subDict("parcelPDF"),
+            owner.rndGen()
+        )
+    )
+{
+    // Construct parcel diameters - one per injector cell
+    forAll(diameters_, i)
+    {
+        diameters_[i] = parcelPDF_->sample();
+    }
+
+    // Determine total volume of particles to inject
+    this->volumeTotal_ =
+         nParcelsPerInjector_
+        *sum(pow3(diameters_))
+        *mathematicalConstant::pi/6.0;
+
+    // Set/cache the injector cells
+    forAll(positions_, i)
+    {
+        this->findCellAtPosition
+        (
+            injectorCells_[i],
+            positions_[i]
+        );
+    }
+}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+template<class CloudType>
+Foam::FieldActivatedInjection<CloudType>::~FieldActivatedInjection()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+template<class CloudType>
+bool Foam::FieldActivatedInjection<CloudType>::active() const
+{
+    return true;
+}
+
+
+template<class CloudType>
+Foam::scalar Foam::FieldActivatedInjection<CloudType>::timeEnd() const
+{
+    return GREAT;
+}
+
+
+template<class CloudType>
+void Foam::FieldActivatedInjection<CloudType>::setPositionAndCell
+(
+    const label parcelI,
+    const label,
+    const scalar,
+    vector& position,
+    label& cellOwner
+)
+{
+    position = positions_[parcelI];
+    cellOwner = injectorCells_[parcelI];
+}
+
+
+template<class CloudType>
+void Foam::FieldActivatedInjection<CloudType>::setProperties
+(
+    const label parcelI,
+    const label,
+    const scalar,
+    typename CloudType::parcelType& parcel
+)
+{
+    // set particle velocity
+    parcel.U() = U0_;
+
+    // set particle diameter
+    parcel.d() = diameters_[parcelI];
+}
+
+
+template<class CloudType>
+bool Foam::FieldActivatedInjection<CloudType>::fullyDescribed() const
+{
+    return false;
+}
+
+
+template<class CloudType>
+bool Foam::FieldActivatedInjection<CloudType>::validInjection
+(
+    const label parcelI
+)
+{
+    const label cellI = injectorCells_[parcelI];
+
+    if
+    (
+        nParcelsInjected_[parcelI] < nParcelsPerInjector_
+     && factor_*referenceField_[cellI] > thresholdField_[cellI]
+    )
+    {
+        nParcelsInjected_[parcelI]++;
+        return true;
+    }
+
+    return false;
+}
+
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/FieldActivatedInjection/FieldActivatedInjection.H b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/FieldActivatedInjection/FieldActivatedInjection.H
new file mode 100644
index 0000000000000000000000000000000000000000..c2f1e3cef43a0e7e1e81685fce1c7ce317c0c5f4
--- /dev/null
+++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/FieldActivatedInjection/FieldActivatedInjection.H
@@ -0,0 +1,204 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::FieldActivatedInjection
+
+Description
+    Injection at specified positions, with the conditions:
+
+    - for injection to be allowed
+
+        factor*referenceField[cellI] >= thresholdField[cellI]
+
+        where:
+          - referenceField is the field used to supply the look-up values
+          - thresholdField supplies the values beyond which the injection is
+            permitted
+
+    - limited to a user-supllied number of injections per injector location
+
+SourceFiles
+    FieldActivatedInjection.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef FieldActivatedInjection_H
+#define FieldActivatedInjection_H
+
+#include "InjectionModel.H"
+#include "pdf.H"
+#include "volFieldsFwd.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+                    Class FieldActivatedInjection Declaration
+\*---------------------------------------------------------------------------*/
+
+template<class CloudType>
+class FieldActivatedInjection
+:
+    public InjectionModel<CloudType>
+{
+    // Private data
+
+        // Model parameters
+
+            //- Factor to apply to reference field
+            const scalar factor_;
+
+            //- Reference field
+            const volScalarField& referenceField_;
+
+            //- Threshold field
+            const volScalarField& thresholdField_;
+
+
+        // Injector properties
+
+            //- Name of file containing positions data
+            const word positionsFile_;
+
+            //- Field of injector (x,y,z) positions
+            vectorIOField positions_;
+
+            //- Field of cell labels corresponding to injector positions
+            labelList injectorCells_;
+
+            //- Number of parcels per injector
+            const label nParcelsPerInjector_;
+
+            //- Field of number of parcels injected for each injector
+            labelList nParcelsInjected_;
+
+
+        // Parcel properties
+
+            //- Initial parcel velocity
+            const vector U0_;
+
+            //- Field of parcel diameters
+            scalarList diameters_;
+
+            //- Parcel size PDF model
+            const autoPtr<pdf> parcelPDF_;
+
+
+protected:
+
+    // Protected member functions
+
+        //- Number of parcels to introduce over the time step relative to SOI
+        label parcelsToInject
+        (
+            const scalar time0,
+            const scalar time1
+        ) const;
+
+        //- Volume of parcels to introduce over the time step relative to SOI
+        scalar volumeToInject
+        (
+            const scalar time0,
+            const scalar time1
+        ) const;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("FieldActivatedInjection");
+
+
+    // Constructors
+
+        //- Construct from dictionary
+        FieldActivatedInjection
+        (
+            const dictionary& dict,
+            CloudType& owner
+        );
+
+
+    // Destructor
+    virtual ~FieldActivatedInjection();
+
+
+    // Member Functions
+
+        //- Flag to indicate whether model activates injection model
+        bool active() const;
+
+        //- Return the end-of-injection time
+        scalar timeEnd() const;
+
+
+        // Injection geometry
+
+            //- Set the injection position and owner cell
+            virtual void setPositionAndCell
+            (
+                const label parcelI,
+                const label nParcels,
+                const scalar time,
+                vector& position,
+                label& cellOwner
+            );
+
+            //- Set the parcel properties
+            virtual void setProperties
+            (
+                const label parcelI,
+                const label nParcels,
+                const scalar time,
+                typename CloudType::parcelType& parcel
+            );
+
+            //- Flag to identify whether model fully describes the parcel
+            virtual bool fullyDescribed() const;
+
+            //- Return flag to identify whether or not injection of parcelI is
+            //  permitted
+            virtual bool validInjection(const label parcelI);
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#ifdef NoRepository
+#   include "FieldActivatedInjection.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.C b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.C
index 3ef7e2a8734745b170547b09e7096139c0f3bfc0..7c63f1c26247550d6bc388c3a6a229b513bbde9d 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.C
+++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.C
@@ -26,54 +26,109 @@ License
 
 #include "InjectionModel.H"
 #include "mathematicalConstants.H"
+#include "meshTools.H"
 
 // * * * * * * * * * * * Protected Member Functions  * * * * * * * * * * * * //
 
+template<class CloudType>
+void Foam::InjectionModel<CloudType>::readProps()
+{
+    IOobject propsDictHeader
+    (
+        "injectionProperties",
+        owner_.db().time().timeName(),
+        "uniform"/cloud::prefix/owner_.name(),
+        owner_.db(),
+        IOobject::MUST_READ,
+        IOobject::NO_WRITE,
+        false
+    );
+
+    if (propsDictHeader.headerOk())
+    {
+        const IOdictionary propsDict(propsDictHeader);
+
+        propsDict.readIfPresent("massInjected", massInjected_);
+        propsDict.readIfPresent("nInjections", nInjections_);
+        propsDict.readIfPresent("parcelsAddedTotal", parcelsAddedTotal_);
+        propsDict.readIfPresent("timeStep0", timeStep0_);
+    }
+}
+
+
+template<class CloudType>
+void Foam::InjectionModel<CloudType>::writeProps()
+{
+    if (owner_.db().time().outputTime())
+    {
+        IOdictionary propsDict
+        (
+            IOobject
+            (
+                "injectionProperties",
+                owner_.db().time().timeName(),
+                "uniform"/cloud::prefix/owner_.name(),
+                owner_.db(),
+                IOobject::NO_READ,
+                IOobject::NO_WRITE,
+                false
+            )
+        );
+
+        propsDict.add("massInjected", massInjected_);
+        propsDict.add("nInjections", nInjections_);
+        propsDict.add("parcelsAddedTotal", parcelsAddedTotal_);
+        propsDict.add("timeStep0", timeStep0_);
+
+        propsDict.regIOobject::write();
+    }
+}
+
+
 template<class CloudType>
 void Foam::InjectionModel<CloudType>::prepareForNextTimeStep
 (
-    const scalar time0,
-    const scalar time1,
-    label& nParcels,
-    scalar& volume
+    const scalar time,
+    label& newParcels,
+    scalar& newVolume
 )
 {
     // Initialise values
-    nParcels = 0;
-    volume = 0.0;
+    newParcels = 0;
+    newVolume = 0.0;
 
     // Return if not started injection event
-    if (time1 < SOI_)
+    if (time < SOI_)
     {
-        timeStep0_ = time1;
+        timeStep0_ = time;
         return;
     }
 
     // Make times relative to SOI
     scalar t0 = timeStep0_ - SOI_;
-    scalar t1 = time1 - SOI_;
+    scalar t1 = time - SOI_;
 
     // Number of parcels to inject
-    nParcels = nParcelsToInject(t0, t1);
+    newParcels = parcelsToInject(t0, t1);
 
     // Volume of parcels to inject
-    volume = volumeToInject(t0, t1);
+    newVolume = volumeToInject(t0, t1);
 
     // Hold previous time if no parcels, but non-zero volume fraction
-    if ((nParcels == 0) && (volume > 0.0))
+    if ((newParcels == 0) && (newVolume > 0.0))
     {
         // hold value of timeStep0_
     }
     else
     {
         // advance value of timeStep0_
-        timeStep0_ = time1;
+        timeStep0_ = time;
     }
 }
 
 
 template<class CloudType>
-void Foam::InjectionModel<CloudType>::findInjectorCellAndPosition
+void Foam::InjectionModel<CloudType>::findCellAtPosition
 (
     label& cellI,
     vector& position
@@ -88,7 +143,7 @@ void Foam::InjectionModel<CloudType>::findInjectorCellAndPosition
     if (cellI >= 0)
     {
         const vector& C = owner_.mesh().C()[cellI];
-        position += 1.0e-6*(C - position);
+        position += SMALL*(C - position);
 
         foundCell = owner_.mesh().pointInCell(position, cellI);
     }
@@ -103,7 +158,7 @@ void Foam::InjectionModel<CloudType>::findInjectorCellAndPosition
         if (cellI >= 0)
         {
             const vector& C = owner_.mesh().C()[cellI];
-            position += 1.0e-6*(C - position);
+            position += SMALL*(C - position);
 
             foundCell = owner_.mesh().pointInCell(position, cellI);
         }
@@ -114,8 +169,11 @@ void Foam::InjectionModel<CloudType>::findInjectorCellAndPosition
     {
         FatalErrorIn
         (
-            "InjectionModel<CloudType>::setInjectorCellAndPosition"
-            "(label&, vector&)"
+            "Foam::InjectionModel<CloudType>::findCellAtPosition"
+            "("
+                "label&, "
+                "vector&"
+            ")"
         )<< "Cannot find parcel injection cell. "
          << "Parcel position = " << p0 << nl
          << abort(FatalError);
@@ -126,11 +184,11 @@ void Foam::InjectionModel<CloudType>::findInjectorCellAndPosition
 template<class CloudType>
 Foam::scalar Foam::InjectionModel<CloudType>::setNumberOfParticles
 (
-    const label nParcels,
-    const scalar diameter,
+    const label parcels,
+    const scalar volume,
     const scalar volumeFraction,
-    const scalar rho,
-    const scalar volume
+    const scalar diameter,
+    const scalar rho
 )
 {
     scalar nP = 0.0;
@@ -138,7 +196,7 @@ Foam::scalar Foam::InjectionModel<CloudType>::setNumberOfParticles
     {
         case pbMass:
         {
-            nP = volumeFraction*massTotal_/nParcels
+            nP = volumeFraction*massTotal_/parcels
                /(rho*mathematicalConstant::pi/6.0*pow3(diameter));
             break;
         }
@@ -152,9 +210,15 @@ Foam::scalar Foam::InjectionModel<CloudType>::setNumberOfParticles
             nP = 0.0;
             FatalErrorIn
             (
-                "void Foam::InjectionModel<CloudType>::setNumberOfParticles"
-                "(const label, const scalar, const scalar, const scalar, "
-                "const scalar)"
+                "Foam::scalar "
+                "Foam::InjectionModel<CloudType>::setNumberOfParticles"
+                "("
+                "    const label, "
+                "    const scalar, "
+                "    const scalar, "
+                "    const scalar, "
+                "    const scalar"
+                ")"
             )<< "Unknown parcelBasis type" << nl
              << exit(FatalError);
         }
@@ -165,31 +229,52 @@ Foam::scalar Foam::InjectionModel<CloudType>::setNumberOfParticles
 
 
 template<class CloudType>
-void Foam::InjectionModel<CloudType>::postInjectCheck()
+void Foam::InjectionModel<CloudType>::postInjectCheck(const label parcelsAdded)
 {
-    if (nParcelsAdded_ > 0)
+    if (parcelsAdded > 0)
     {
-        Pout<< "\n--> Cloud: " << owner_.name() << nl
-            << "    Added " << nParcelsAdded_
-            <<  " new parcels" << nl << endl;
+        Pout<< nl
+            << "--> Cloud: " << owner_.name() << nl
+            << "    Added " << parcelsAdded
+            << " new parcels" << nl << endl;
     }
 
     // Increment total number of parcels added
-    nParcelsAddedTotal_ += nParcelsAdded_;
-
-    // Reset parcel counters
-    nParcelsAdded_ = 0;
+    parcelsAddedTotal_ += parcelsAdded;
 
     // Update time for start of next injection
     time0_ = owner_.db().time().value();
 
     // Increment number of injections
     nInjections_++;
+
+    // Write current state to properties file
+    writeProps();
 }
 
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
+template<class CloudType>
+Foam::InjectionModel<CloudType>::InjectionModel(CloudType& owner)
+:
+    dict_(dictionary::null),
+    owner_(owner),
+    coeffDict_(dictionary::null),
+    SOI_(0.0),
+    volumeTotal_(0.0),
+    massTotal_(0.0),
+    massInjected_(0.0),
+    nInjections_(0),
+    parcelsAddedTotal_(0),
+    parcelBasis_(pbNumber),
+    time0_(0.0),
+    timeStep0_(0.0)
+{
+    readProps();
+}
+
+
 template<class CloudType>
 Foam::InjectionModel<CloudType>::InjectionModel
 (
@@ -197,7 +282,8 @@ Foam::InjectionModel<CloudType>::InjectionModel
     CloudType& owner,
     const word& type
 )
-:   dict_(dict),
+:
+    dict_(dict),
     owner_(owner),
     coeffDict_(dict.subDict(type + "Coeffs")),
     SOI_(readScalar(coeffDict_.lookup("SOI"))),
@@ -205,18 +291,23 @@ Foam::InjectionModel<CloudType>::InjectionModel
     massTotal_(dimensionedScalar(coeffDict_.lookup("massTotal")).value()),
     massInjected_(0.0),
     nInjections_(0),
-    nParcelsAdded_(0),
-    nParcelsAddedTotal_(0),
-    parcelBasisType_(coeffDict_.lookup("parcelBasisType")),
+    parcelsAddedTotal_(0),
     parcelBasis_(pbNumber),
     time0_(owner.db().time().value()),
     timeStep0_(0.0)
 {
-    if (parcelBasisType_ == "mass")
+    // Provide some info
+    // - also serves to initialise mesh dimensions - needed for parallel runs
+    //   due to lazy evaluation of valid mesh dimensions
+    Info<< "    Constructing " << owner.mesh().nGeometricD() << "-D injection"
+        << endl;
+
+    word parcelBasisType = coeffDict_.lookup("parcelBasisType");
+    if (parcelBasisType == "mass")
     {
         parcelBasis_ = pbMass;
     }
-    else if (parcelBasisType_ == "number")
+    else if (parcelBasisType == "number")
     {
         parcelBasis_ = pbNumber;
     }
@@ -225,10 +316,16 @@ Foam::InjectionModel<CloudType>::InjectionModel
         FatalErrorIn
         (
             "Foam::InjectionModel<CloudType>::InjectionModel"
-            "(const dictionary&, CloudType&, const word&)"
+            "("
+                "const dictionary&, "
+                "CloudType&, "
+                "const word&"
+            ")"
         )<< "parcelBasisType must be either 'number' or 'mass'" << nl
          << exit(FatalError);
     }
+
+    readProps();
 }
 
 
@@ -245,78 +342,97 @@ template<class CloudType>
 template<class TrackData>
 void Foam::InjectionModel<CloudType>::inject(TrackData& td)
 {
+    if (!active())
+    {
+        return;
+    }
+
     const scalar time = owner_.db().time().value();
-    const scalar continuousDt = owner_.db().time().deltaT().value();
+    const scalar carrierDt = owner_.db().time().deltaT().value();
+    const polyMesh& mesh = owner_.mesh();
 
     // Prepare for next time step
-    nParcelsAdded_ = 0;
-    label nParcels = 0;
-    scalar volume = 0.0;
-    prepareForNextTimeStep(time0_, time, nParcels, volume);
+    label newParcels = 0;
+    scalar newVolume = 0.0;
+    prepareForNextTimeStep(time, newParcels, newVolume);
 
     // Return if no parcels are required
-    if (nParcels == 0)
+    if (newParcels == 0)
     {
-        postInjectCheck();
+        postInjectCheck(0);
         return;
     }
 
-    // Particle density given by constant properties
-    const scalar rho = td.constProps().rho0();
-
     // Volume fraction to introduce during this timestep
-    const scalar volFraction = volumeFraction(volume);
+    const scalar volFraction = volumeFraction(newVolume);
 
     // Duration of injection period during this timestep
-    const scalar deltaT = min
-    (
-        continuousDt,
-        min(time - SOI_, timeEnd() - time0_)
-    );
+    const scalar deltaT =
+        max(0.0, min(carrierDt, min(time - SOI_, timeEnd() - time0_)));
 
     // Pad injection time if injection starts during this timestep
     const scalar padTime = max(0.0, SOI_ - time0_);
 
-    // Introduce new parcels linearly with time
-    for (label iParcel=0; iParcel<nParcels; iParcel++)
+    // Introduce new parcels linearly across carrier phase timestep
+    label parcelsAdded = 0;
+    for (label parcelI=0; parcelI<newParcels; parcelI++)
     {
-        // Calculate the pseudo time of injection for parcel 'iParcel'
-        scalar timeInj = time0_ + padTime + deltaT*iParcel/nParcels;
-
-        // Determine injected parcel properties
-        vector pos = position(iParcel, timeInj, owner_.meshInfo());
-
-        // Diameter of parcels
-        scalar d = d0(iParcel, timeInj);
-
-        // Number of particles per parcel
-        scalar nP = setNumberOfParticles
-        (
-            nParcels,
-            d,
-            volFraction,
-            rho,
-            volume
-        );
-
-        // Velocity of parcels
-        vector U = velocity(iParcel, timeInj, owner_.meshInfo());
-
-        // Determine the injection cell
-        label cellI = -1;
-        findInjectorCellAndPosition(cellI, pos);
-
-        if (cellI >= 0)
+        if (validInjection(parcelI))
         {
-            scalar dt = time - timeInj;
-            td.cloud().addNewParcel(pos, cellI, d, U, nP, dt);
-
-            massInjected_ += nP*rho*mathematicalConstant::pi*pow3(d)/6.0;
-            nParcelsAdded_++;
+            // Calculate the pseudo time of injection for parcel 'parcelI'
+            scalar timeInj = time0_ + padTime + deltaT*parcelI/newParcels;
+
+            // Determine the injection position and owner cell
+            label cellI = -1;
+            vector pos = vector::zero;
+            setPositionAndCell(parcelI, newParcels, timeInj, pos, cellI);
+
+            if (cellI > -1)
+            {
+                // Lagrangian timestep
+                scalar dt = time - timeInj;
+
+                // Apply corrections to position for 2-D cases
+                meshTools::constrainToMeshCentre(mesh, pos);
+
+                // Create a new parcel
+                parcelType* pPtr = new parcelType(td.cloud(), pos, cellI);
+
+                // Assign new parcel properties in injection model
+                setProperties(parcelI, newParcels, timeInj, *pPtr);
+
+                // Check new parcel properties
+                td.cloud().checkParcelProperties(*pPtr, dt, fullyDescribed());
+
+                // Apply correction to velocity for 2-D cases
+                meshTools::constrainDirection
+                (
+                    mesh,
+                    mesh.solutionD(),
+                    pPtr->U()
+                );
+
+                // Number of particles per parcel
+                pPtr->nParticle() =
+                    setNumberOfParticles
+                    (
+                        newParcels,
+                        newVolume,
+                        volFraction,
+                        pPtr->d(),
+                        pPtr->rho()
+                    );
+
+                // Add the new parcel
+                td.cloud().addParticle(pPtr);
+
+                massInjected_ += pPtr->nParticle()*pPtr->mass();
+                parcelsAdded++;
+            }
         }
     }
 
-    postInjectCheck();
+    postInjectCheck(parcelsAdded);
 }
 
 
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.H b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.H
index 791631fb9934586d9116d3efb54e16aead841fc2..ad42a27030e37baee82f64915a558b2ce0392753 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.H
+++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.H
@@ -25,9 +25,20 @@ License
 Class
     Foam::InjectionModel
 
-
 Description
-    Templated injection model class
+    Templated injection model class.
+
+    The injection model nominally describes the parcel:
+    - position
+    - diameter
+    - velocity
+    In this case, the fullyDescribed() flag should be set to 0 (false). When
+    the parcel is then added to the cloud, the remaining properties are
+    populated using values supplied in the constant properties.
+
+    If, however, all of a parcel's properties are described in the model, the
+    fullDescribed() flag should be set to 1 (true).
+
 
 SourceFiles
     InjectionModel.C
@@ -54,7 +65,6 @@ namespace Foam
 template<class CloudType>
 class InjectionModel
 {
-
 public:
 
     // Enumerations
@@ -75,17 +85,29 @@ private:
         //- The cloud dictionary
         const dictionary& dict_;
 
-        // Reference to the owner cloud class
+        //- Reference to the owner cloud class
         CloudType& owner_;
 
         //- The coefficients dictionary
         const dictionary coeffDict_;
 
 
+    // Private member functions
+
+        //- Read injector properties from previous run (if applicable)
+        void readProps();
+
+        //- Write injector properties
+        void writeProps();
+
+
 protected:
 
     // Protected data
 
+        //- Convenience typedef for parcel type
+        typedef typename CloudType::parcelType parcelType;
+
         // Global injection properties
 
             //- Start of injection [s]
@@ -107,22 +129,14 @@ protected:
             //- Number of injections counter
             label nInjections_;
 
-            //- Running counter of parcels added during each injection
-            label nParcelsAdded_;
-
             //- Running counter of total number of parcels added
-            label nParcelsAddedTotal_;
+            label parcelsAddedTotal_;
 
 
         // Injection properties per Lagrangian time step
 
-            // Parcel basis
-
-                //- Parcel basis name
-                const word parcelBasisType_;
-
-                //- Parcel basis enumeration
-                parcelBasis parcelBasis_;
+            //- Parcel basis enumeration
+            parcelBasis parcelBasis_;
 
             //- Continuous phase time at start of injection time step [s]
             scalar time0_;
@@ -133,50 +147,49 @@ protected:
 
     // Protected member functions
 
-        //- Number of parcels to introduce over the time step
-        virtual label nParcelsToInject
+        //- Number of parcels to introduce over the time step relative to SOI
+        virtual label parcelsToInject
         (
             const scalar time0,
             const scalar time1
         ) const = 0;
 
-        //- Volume of parcels to introduce over the time step
+        //- Volume of parcels to introduce over the time step relative to SOI
         virtual scalar volumeToInject
         (
             const scalar time0,
             const scalar time1
         ) const = 0;
 
+        //- Additional flag to identify whether or not injection of parcelI is
+        //  permitted
+        virtual bool validInjection(const label parcelI) = 0;
 
         //- Determine properties for next time step/injection interval
-        void prepareForNextTimeStep
+        virtual void prepareForNextTimeStep
         (
-            const scalar time0,
-            const scalar time1,
-            label& nParcels,
-            scalar& volume
+            const scalar time,
+            label& newParcels,
+            scalar& newVolume
         );
 
-        //- Find the cell that contains the injector position
-        //  Will modify position slightly towards the owner cell centroid
-        virtual void findInjectorCellAndPosition
-        (
-            label& cellI,
-            vector& position
-        );
+        //- Find the cell that contains the supplied position
+        //  Will modify position slightly towards the owner cell centroid to
+        //  ensure that it lies in a cell and not edge/face
+        virtual void findCellAtPosition(label& cellI, vector& position);
 
         //- Set number of particles to inject given parcel properties
-        scalar setNumberOfParticles
+        virtual scalar setNumberOfParticles
         (
-            const label nParcels,
-            const scalar diameter,
+            const label parcels,
+            const scalar volume,
             const scalar volumeFraction,
-            const scalar rho,
-            const scalar volume
+            const scalar diameter,
+            const scalar rho
         );
 
         //- Post injection checks
-        void postInjectCheck();
+        virtual void postInjectCheck(const label parcelsAdded);
 
 
 public:
@@ -200,6 +213,9 @@ public:
 
     // Constructors
 
+        //- Construct null from owner
+        InjectionModel(CloudType& owner);
+
         //- Construct from dictionary
         InjectionModel
         (
@@ -253,7 +269,7 @@ public:
             //- Return mass of particles to introduce
             inline scalar massTotal() const;
 
-            //- Return mass of particles injected (cummulative)
+            //- Return mass of particles injected (cumulative)
             inline scalar massInjected() const;
 
             //- Return the end-of-injection time
@@ -265,7 +281,7 @@ public:
                 inline label nInjections() const;
 
                 //- Return the total number parcels added
-                inline label nParcelsAddedTotal() const;
+                inline label parcelsAddedTotal() const;
 
 
         // Per-injection event functions
@@ -280,35 +296,30 @@ public:
 
         // Injection geometry
 
-            //- Return the injection position
-            virtual vector position
+            //- Set the injection position and owner cell
+            virtual void setPositionAndCell
             (
-                const label iParcel,
+                const label parcelI,
+                const label nParcels,
                 const scalar time,
-                const polyMeshInfo& meshInfo
+                vector& position,
+                label& cellOwner
             ) = 0;
 
-            //- Return the velocity of the parcel to introduce at a time
-            virtual vector velocity
+            //- Set the parcel properties
+            virtual void setProperties
             (
-                const label iParcel,
+                const label parcelI,
+                const label nParcels,
                 const scalar time,
-                const polyMeshInfo& meshInfo
+                typename CloudType::parcelType& parcel
             ) = 0;
 
-            //- Return the diameter of the parcel to introduce at a time
-            virtual scalar d0
-            (
-                const label iParcel,
-                const scalar time
-            ) const = 0;
+            //- Flag to identify whether model fully describes the parcel
+            virtual bool fullyDescribed() const = 0;
 };
 
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-#include "InjectionModelI.H"
-
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 } // End namespace Foam
@@ -331,6 +342,25 @@ public:
             add##SS##CloudType##ParcelType##ConstructorToTable_;
 
 
+#define makeInjectionModelThermoType(SS, CloudType, ParcelType, ThermoType)   \
+                                                                              \
+    defineNamedTemplateTypeNameAndDebug                                       \
+    (                                                                         \
+        SS<CloudType<ParcelType<ThermoType> > >,                              \
+        0                                                                     \
+    );                                                                        \
+                                                                              \
+    InjectionModel<CloudType<ParcelType<ThermoType> > >::                     \
+        adddictionaryConstructorToTable                                       \
+        <SS<CloudType<ParcelType<ThermoType> > > >                            \
+            add##SS##CloudType##ParcelType##ThermoType##ConstructorToTable_;
+
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "InjectionModelI.H"
+
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 #ifdef NoRepository
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModelI.H b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModelI.H
index f02d05b902c664a032856b0b29b67ec48d7a0f09..80a142816c826fa03984fee7c502c063280a84c5 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModelI.H
+++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModelI.H
@@ -90,9 +90,9 @@ Foam::label Foam::InjectionModel<CloudType>::nInjections() const
 
 
 template<class CloudType>
-Foam::label Foam::InjectionModel<CloudType>::nParcelsAddedTotal() const
+Foam::label Foam::InjectionModel<CloudType>::parcelsAddedTotal() const
 {
-    return nParcelsAddedTotal_;
+    return parcelsAddedTotal_;
 }
 
 
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/NewInjectionModel.C b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/NewInjectionModel.C
index 3501e367aadbe48867cae7724d53b5abf1ac8b1c..c0926272c622c105007d025ecb4e025c8f906c39 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/NewInjectionModel.C
+++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/NewInjectionModel.C
@@ -36,10 +36,7 @@ Foam::InjectionModel<CloudType>::New
     CloudType& owner
 )
 {
-    word InjectionModelType
-    (
-        dict.lookup("InjectionModel")
-    );
+    word InjectionModelType(dict.lookup("InjectionModel"));
 
     Info<< "Selecting InjectionModel " << InjectionModelType << endl;
 
@@ -51,11 +48,14 @@ Foam::InjectionModel<CloudType>::New
         FatalErrorIn
         (
             "InjectionModel<CloudType>::New"
-            "(const dictionary&, CloudType&)"
+            "("
+                "const dictionary&, "
+                "CloudType&"
+            ")"
         )   << "Unknown InjectionModelType type "
             << InjectionModelType
             << ", constructor not in hash table" << nl << nl
-            << "    Valid InjectionModel types are :" << nl
+            << "    Valid InjectionModel types are:" << nl
             << dictionaryConstructorTablePtr_->toc() << exit(FatalError);
     }
 
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/KinematicLookupTableInjection/KinematicLookupTableInjection.C b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/KinematicLookupTableInjection/KinematicLookupTableInjection.C
new file mode 100644
index 0000000000000000000000000000000000000000..5fd976e0160d5ba25a548b86730e38b007085d3b
--- /dev/null
+++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/KinematicLookupTableInjection/KinematicLookupTableInjection.C
@@ -0,0 +1,241 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "KinematicLookupTableInjection.H"
+#include "scalarIOList.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+template<class CloudType>
+Foam::label Foam::KinematicLookupTableInjection<CloudType>::INPUT_FILE_COLS = 9;
+
+// * * * * * * * * * * * * Protected Member Functions  * * * * * * * * * * * //
+
+template<class CloudType>
+Foam::label Foam::KinematicLookupTableInjection<CloudType>::parcelsToInject
+(
+    const scalar time0,
+    const scalar time1
+) const
+{
+    if ((time0 >= 0.0) && (time0 < duration_))
+    {
+        return round(injectorCells_.size()*(time1 - time0)*nParcelsPerSecond_);
+    }
+    else
+    {
+        return 0;
+    }
+}
+
+
+template<class CloudType>
+Foam::scalar Foam::KinematicLookupTableInjection<CloudType>::volumeToInject
+(
+    const scalar time0,
+    const scalar time1
+) const
+{
+    scalar volume = 0.0;
+    if ((time0 >= 0.0) && (time0 < duration_))
+    {
+        forAll(mDot_, injectorI)
+        {
+            volume += mDot_[injectorI]/rho_[injectorI]*(time1 - time0);
+        }
+    }
+
+    return volume;
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template<class CloudType>
+Foam::KinematicLookupTableInjection<CloudType>::KinematicLookupTableInjection
+(
+    const dictionary& dict,
+    CloudType& owner
+)
+:
+    InjectionModel<CloudType>(dict, owner, typeName),
+    inputFileName_(this->coeffDict().lookup("inputFile")),
+    duration_(readScalar(this->coeffDict().lookup("duration"))),
+    nParcelsPerSecond_
+    (
+        readScalar(this->coeffDict().lookup("parcelsPerSecond"))
+    ),
+    x_(0),
+    U_(0),
+    d_(0),
+    rho_(0),
+    mDot_(0),
+    injectorCells_(0)
+{
+    scalarListIOList injectorData
+    (
+        IOobject
+        (
+            inputFileName_,
+            owner.db().time().constant(),
+            owner.db(),
+            IOobject::MUST_READ,
+            IOobject::NO_WRITE
+        )
+    );
+
+    x_.setSize(injectorData.size());
+    U_.setSize(injectorData.size());
+    d_.setSize(injectorData.size());
+    rho_.setSize(injectorData.size());
+    mDot_.setSize(injectorData.size());
+
+    // Populate lists
+    forAll(injectorData, injectorI)
+    {
+        if (injectorData[injectorI].size() != INPUT_FILE_COLS)
+        {
+            FatalErrorIn
+            (
+                "KinematicLookupTableInjection"
+                "("
+                    "const dictionary&,"
+                    "CloudType& owner"
+                ")"
+            )   << "Incorrect number of entries in injector specification "
+                << "- found " << injectorData[injectorI].size()
+                << ", expected " << INPUT_FILE_COLS << ":" << nl
+                << "    x0 x1 x2 u0 u1 u2 d rho mDot " << nl
+                << exit(FatalError);
+        }
+        x_[injectorI].component(0) = injectorData[injectorI][0];
+        x_[injectorI].component(1) = injectorData[injectorI][1];
+        x_[injectorI].component(2) = injectorData[injectorI][2];
+        U_[injectorI].component(0) = injectorData[injectorI][3];
+        U_[injectorI].component(1) = injectorData[injectorI][4];
+        U_[injectorI].component(2) = injectorData[injectorI][5];
+        d_[injectorI] = injectorData[injectorI][6];
+        rho_[injectorI] = injectorData[injectorI][7];
+        mDot_[injectorI] = injectorData[injectorI][8];
+    }
+
+    // Set/cache the injector cells
+    injectorCells_.setSize(injectorData.size());
+    forAll(x_, injectorI)
+    {
+        this->findCellAtPosition(injectorCells_[injectorI], x_[injectorI]);
+    }
+
+    // Determine volume of particles to inject
+    this->volumeTotal_ = 0.0;
+    forAll(mDot_, injectorI)
+    {
+        this->volumeTotal_ += mDot_[injectorI]/rho_[injectorI];
+    }
+    this->volumeTotal_ *= duration_;
+}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+template<class CloudType>
+Foam::KinematicLookupTableInjection<CloudType>::~KinematicLookupTableInjection()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+template<class CloudType>
+bool Foam::KinematicLookupTableInjection<CloudType>::active() const
+{
+    return true;
+}
+
+
+template<class CloudType>
+Foam::scalar Foam::KinematicLookupTableInjection<CloudType>::timeEnd() const
+{
+    return this->SOI_ + duration_;
+}
+
+
+template<class CloudType>
+void Foam::KinematicLookupTableInjection<CloudType>::setPositionAndCell
+(
+    const label parcelI,
+    const label nParcels,
+    const scalar time,
+    vector& position,
+    label& cellOwner
+)
+{
+    label injectorI = parcelI*injectorCells_.size()/nParcels;
+
+    position = x_[injectorI];
+    cellOwner = injectorCells_[injectorI];
+}
+
+
+template<class CloudType>
+void Foam::KinematicLookupTableInjection<CloudType>::setProperties
+(
+    const label parcelI,
+    const label nParcels,
+    const scalar,
+    typename CloudType::parcelType& parcel
+)
+{
+    label injectorI = parcelI*injectorCells_.size()/nParcels;
+
+    // set particle velocity
+    parcel.U() = U_[injectorI];
+
+    // set particle diameter
+    parcel.d() = d_[injectorI];
+
+    // set particle density
+    parcel.rho() = rho_[injectorI];
+}
+
+
+template<class CloudType>
+bool Foam::KinematicLookupTableInjection<CloudType>::fullyDescribed() const
+{
+    return true;
+}
+
+
+template<class CloudType>
+bool Foam::KinematicLookupTableInjection<CloudType>::validInjection
+(
+    const label
+)
+{
+    return true;
+}
+
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/KinematicLookupTableInjection/KinematicLookupTableInjection.H b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/KinematicLookupTableInjection/KinematicLookupTableInjection.H
new file mode 100644
index 0000000000000000000000000000000000000000..e076f0ea5821c417eb3be8aa0859f5d2e016d59a
--- /dev/null
+++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/KinematicLookupTableInjection/KinematicLookupTableInjection.H
@@ -0,0 +1,193 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::KinematicLookupTableInjection
+
+Description
+    Particle injection sources read from look-up table. Each row corresponds to
+    an injection site.
+
+    (
+        (x y z u v w d rho mDot)
+    );
+
+    where:
+        x, y, z = global cartesian co-ordinates [m]
+        u, v, w = global cartesian velocity components [m/s]
+        d       = diameter [m]
+        rho     = density [kg/m3]
+        mDot    = mass flow rate [kg/m3]
+
+SourceFiles
+    KinematicLookupTableInjection.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef KinematicLookupTableInjection_H
+#define KinematicLookupTableInjection_H
+
+#include "InjectionModel.H"
+#include "pdf.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+               Class KinematicLookupTableInjection Declaration
+\*---------------------------------------------------------------------------*/
+
+template<class CloudType>
+class KinematicLookupTableInjection
+:
+    public InjectionModel<CloudType>
+{
+    // Private data
+
+        //- Name of file containing injector/parcel data
+        const word inputFileName_;
+
+        //- Injection duration - common to all injection sources
+        const scalar duration_;
+
+        //- Number of parcels per injector - common to all injection sources
+        const label nParcelsPerSecond_;
+
+        //- List of parcel position per injector / [m]
+        List<point> x_;
+
+        //- List of parcel velocity per injector / [m]
+        List<vector> U_;
+
+        //- List of parcel diameter per injector / [m]
+        List<scalar> d_;
+
+        //- List of parcel fluid density pre injector / [kg/m3]
+        List<scalar> rho_;
+
+        //- List of parcel injection mass flow per injector / [kg/s]
+        List<scalar> mDot_;
+
+        //- List of injector cells per injector
+        List<label> injectorCells_;
+
+        //- Number of columns expected in input file
+        static label INPUT_FILE_COLS;
+
+
+protected:
+
+    // Protected member functions
+
+        //- Number of parcels to introduce over the time step relative to SOI
+        label parcelsToInject
+        (
+            const scalar time0,
+            const scalar time1
+        ) const;
+
+        //- Volume of parcels to introduce over the time step relative to SOI
+        scalar volumeToInject
+        (
+            const scalar time0,
+            const scalar time1
+        ) const;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("KinematicLookupTableInjection");
+
+
+    // Constructors
+
+        //- Construct from dictionary
+        KinematicLookupTableInjection
+        (
+            const dictionary& dict,
+            CloudType& owner
+        );
+
+
+    //- Destructor
+    virtual ~KinematicLookupTableInjection();
+
+
+    // Member Functions
+
+        //- Flag to indicate whether model activates injection model
+        bool active() const;
+
+        //- Return the end-of-injection time
+        scalar timeEnd() const;
+
+
+        // Injection geometry
+
+            //- Set the injection position and owner cell
+            virtual void setPositionAndCell
+            (
+                const label parcelI,
+                const label nParcels,
+                const scalar time,
+                vector& position,
+                label& cellOwner
+            );
+
+            //- Set the parcel properties
+            virtual void setProperties
+            (
+                const label parcelI,
+                const label nParcels,
+                const scalar time,
+                typename CloudType::parcelType& parcel
+            );
+
+            //- Flag to identify whether model fully describes the parcel
+            virtual bool fullyDescribed() const;
+
+            //- Return flag to identify whether or not injection of parcelI is
+            //  permitted
+            virtual bool validInjection(const label parcelI);
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#ifdef NoRepository
+#   include "KinematicLookupTableInjection.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ManualInjection/ManualInjection.C b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ManualInjection/ManualInjection.C
index c201b5fc4f39d4b95f55169e38bc304fa6257015..dab3cf6f13a61c9c6c669789158c590607dbff06 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ManualInjection/ManualInjection.C
+++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ManualInjection/ManualInjection.C
@@ -29,7 +29,7 @@ License
 // * * * * * * * * * * * * Protected Member Functions  * * * * * * * * * * * //
 
 template<class CloudType>
-Foam::label Foam::ManualInjection<CloudType>::nParcelsToInject
+Foam::label Foam::ManualInjection<CloudType>::parcelsToInject
 (
     const scalar time0,
     const scalar time1
@@ -105,8 +105,7 @@ Foam::ManualInjection<CloudType>::ManualInjection
     }
 
     // Determine volume of particles to inject
-    this->volumeTotal_ = sum(pow(diameters_, 3))
-        *mathematicalConstant::pi/6.0;
+    this->volumeTotal_ = sum(pow3(diameters_))*mathematicalConstant::pi/6.0;
 }
 
 
@@ -130,71 +129,53 @@ template<class CloudType>
 Foam::scalar Foam::ManualInjection<CloudType>::timeEnd() const
 {
     // Not used
-    return 0.0;
+    return this->SOI_;
 }
 
 
 template<class CloudType>
-Foam::vector Foam::ManualInjection<CloudType>::position
+void Foam::ManualInjection<CloudType>::setPositionAndCell
 (
-    const label iParcel,
-    const scalar time,
-    const polyMeshInfo& meshInfo
+    const label parcelI,
+    const label,
+    const scalar,
+    vector& position,
+    label& cellOwner
 )
 {
-    vector pos = positions_[iParcel];
-    if (meshInfo.caseIs2d())
-    {
-        if (meshInfo.caseIs2dWedge())
-        {
-            pos.component(meshInfo.emptyComponent()) = 0.0;
-        }
-        else if (meshInfo.caseIs2dSlab())
-        {
-            pos.component(meshInfo.emptyComponent()) =
-                meshInfo.centrePoint().component(meshInfo.emptyComponent());
-        }
-        else
-        {
-            FatalErrorIn
-            (
-                "Foam::vector Foam::ManualInjection<CloudType>::position"
-            )   << "Could not determine 2-D case geometry" << nl
-                << abort(FatalError);
-        }
-    }
-
-    return pos;
+    position = positions_[parcelI];
+    this->findCellAtPosition(cellOwner, position);
 }
 
 
 template<class CloudType>
-Foam::vector Foam::ManualInjection<CloudType>::velocity
+void Foam::ManualInjection<CloudType>::setProperties
 (
+    const label parcelI,
     const label,
     const scalar,
-    const polyMeshInfo& meshInfo
+    typename CloudType::parcelType& parcel
 )
 {
-    vector vel = U0_;
-    if (meshInfo.caseIs2dSlab())
-    {
-        vel.component(meshInfo.emptyComponent()) =
-            meshInfo.centrePoint().component(meshInfo.emptyComponent());
-    }
+    // set particle velocity
+    parcel.U() = U0_;
 
-    return vel;
+    // set particle diameter
+    parcel.d() = diameters_[parcelI];
 }
 
 
 template<class CloudType>
-Foam::scalar Foam::ManualInjection<CloudType>::d0
-(
-    const label iParcel,
-    const scalar
-) const
+bool Foam::ManualInjection<CloudType>::fullyDescribed() const
 {
-    return diameters_[iParcel];
+    return false;
+}
+
+
+template<class CloudType>
+bool Foam::ManualInjection<CloudType>::validInjection(const label)
+{
+    return true;
 }
 
 
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ManualInjection/ManualInjection.H b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ManualInjection/ManualInjection.H
index 6393924177576713d559c8388d0ab79a3446d339..b04fee48b58ce72104de017c4ff5660f89bc5bc5 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ManualInjection/ManualInjection.H
+++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ManualInjection/ManualInjection.H
@@ -33,19 +33,15 @@ Description
       - Parcel positions in file @c positionsFile
       - Initial parcel velocity
     - Parcel diameters obtained by PDF model
-    - All parcels introduced at the start of the calculation
-
-Note
-    Not suitable for 2-D slab/wedge simulations unless the @c positionsFile
-    describes 2-D data.
+    - All parcels introduced at SOI
 
 SourceFiles
     ManualInjection.C
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef manualInjection_H
-#define manualInjection_H
+#ifndef ManualInjection_H
+#define ManualInjection_H
 
 #include "InjectionModel.H"
 #include "pdf.H"
@@ -64,12 +60,8 @@ class ManualInjection
 :
     public InjectionModel<CloudType>
 {
-
     // Private data
 
-        //- Coefficients dictionary
-        dictionary coeffDict_;
-
         //- Name of file containing positions data
         const word positionsFile_;
 
@@ -77,7 +69,7 @@ class ManualInjection
         vectorIOField positions_;
 
         //- Field of parcel diameters
-        scalarField diameters_;
+        scalarList diameters_;
 
         //- Initial parcel velocity
         const vector U0_;
@@ -93,14 +85,14 @@ protected:
 
     // Protected member functions
 
-        //- Number of parcels to introduce over the time step
-        label nParcelsToInject
+        //- Number of parcels to introduce over the time step relative to SOI
+        label parcelsToInject
         (
             const scalar time0,
             const scalar time1
         ) const;
 
-        //- Volume of parcels to introduce over the time step
+        //- Volume of parcels to introduce over the time step relative to SOI
         scalar volumeToInject
         (
             const scalar time0,
@@ -124,9 +116,8 @@ public:
         );
 
 
-    // Destructor
-
-        ~ManualInjection();
+    //- Destructor
+    virtual ~ManualInjection();
 
 
     // Member Functions
@@ -140,28 +131,31 @@ public:
 
         // Injection geometry
 
-            //- Return the injection position
-            vector position
+            //- Set the injection position and owner cell
+            virtual void setPositionAndCell
             (
-                const label iParcel,
+                const label parcelI,
+                const label nParcels,
                 const scalar time,
-                const polyMeshInfo& meshInfo
+                vector& position,
+                label& cellOwner
             );
 
-            //- Return the velocity of the parcel to introduce at a time
-            vector velocity
+            //- Set the parcel properties
+            virtual void setProperties
             (
-                const label,
+                const label parcelI,
+                const label nParcels,
                 const scalar time,
-                const polyMeshInfo& meshInfo
+                typename CloudType::parcelType& parcel
             );
 
-            //- Return the diameter of the parcel to introduce at a time
-            scalar d0
-            (
-                const label,
-                const scalar
-            ) const;
+            //- Flag to identify whether model fully describes the parcel
+            virtual bool fullyDescribed() const;
+
+            //- Return flag to identify whether or not injection of parcelI is
+            //  permitted
+            virtual bool validInjection(const label parcelI);
 };
 
 
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/NoInjection/NoInjection.C b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/NoInjection/NoInjection.C
index d5530ba71d0307393ff8c40fc054790a001b19b4..9e8019e5373a21f031105bb8a98b598a8df80cbe 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/NoInjection/NoInjection.C
+++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/NoInjection/NoInjection.C
@@ -30,7 +30,7 @@ License
 // * * * * * * * * * * * * Protected Member Functions  * * * * * * * * * * * //
 
 template<class CloudType>
-Foam::label Foam::NoInjection<CloudType>::nParcelsToInject
+Foam::label Foam::NoInjection<CloudType>::parcelsToInject
 (
     const scalar,
     const scalar
@@ -56,11 +56,11 @@ Foam::scalar Foam::NoInjection<CloudType>::volumeToInject
 template<class CloudType>
 Foam::NoInjection<CloudType>::NoInjection
 (
-    const dictionary& dict,
+    const dictionary&,
     CloudType& owner
 )
 :
-    InjectionModel<CloudType>(dict, owner, typeName)
+    InjectionModel<CloudType>(owner)
 {}
 
 
@@ -88,37 +88,45 @@ Foam::scalar Foam::NoInjection<CloudType>::timeEnd() const
 
 
 template<class CloudType>
-Foam::vector Foam::NoInjection<CloudType>::position
+void Foam::NoInjection<CloudType>::setPositionAndCell
 (
+    const label,
     const label,
     const scalar,
-    const polyMeshInfo&
+    vector&,
+    label&
 )
-{
-    return vector::zero;
-}
+{}
 
 
 template<class CloudType>
-Foam::vector Foam::NoInjection<CloudType>::velocity
+void Foam::NoInjection<CloudType>::setProperties
 (
+    const label,
     const label,
     const scalar,
-    const polyMeshInfo&
+    typename CloudType::parcelType& parcel
 )
 {
-    return vector::zero;
+    // set particle velocity
+    parcel.U() = vector::zero;
+
+    // set particle diameter
+    parcel.d() = 0.0;
 }
 
 
 template<class CloudType>
-Foam::scalar Foam::NoInjection<CloudType>::d0
-(
-    const label,
-    const scalar
-) const
+bool Foam::NoInjection<CloudType>::fullyDescribed() const
 {
-    return 0.0;
+    return false;
+}
+
+
+template<class CloudType>
+bool Foam::NoInjection<CloudType>::validInjection(const label)
+{
+    return false;
 }
 
 
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/NoInjection/NoInjection.H b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/NoInjection/NoInjection.H
index 99f37cea4a4b5e89a7758a1b776c16c82b4387ee..935dca80e177a9ea1a3940579a4d263d92f2c7c1 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/NoInjection/NoInjection.H
+++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/NoInjection/NoInjection.H
@@ -26,15 +26,15 @@ Class
     Foam::NoInjection
 
 Description
-    Place holder for 'no injection' option
+    Place holder for 'none' option
 
 SourceFiles
     NoInjection.C
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef noInjection_H
-#define noInjection_H
+#ifndef NoInjection_H
+#define NoInjection_H
 
 #include "InjectionModel.H"
 
@@ -44,7 +44,7 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                          Class NoInjection Declaration
+                       Class NoInjection Declaration
 \*---------------------------------------------------------------------------*/
 
 template<class CloudType>
@@ -52,19 +52,18 @@ class NoInjection
 :
     public InjectionModel<CloudType>
 {
-
 protected:
 
     // Protected member functions
 
-        //- Number of parcels to introduce over the time step
-        label nParcelsToInject
+        //- Number of parcels to introduce over the time step relative to SOI
+        label parcelsToInject
         (
             const scalar,
             const scalar
         ) const;
 
-        //- Volume of parcels to introduce over the time step
+        //- Volume of parcels to introduce over the time step relative to SOI
         scalar volumeToInject
         (
             const scalar,
@@ -75,7 +74,7 @@ protected:
 public:
 
     //- Runtime type information
-    TypeName("NoInjection");
+    TypeName("none");
 
 
     // Constructors
@@ -83,14 +82,13 @@ public:
         //- Construct from components
         NoInjection
         (
-            const dictionary& dict,
-            CloudType& owner
+            const dictionary&,
+            CloudType&
         );
 
 
-    // Destructor
-
-        ~NoInjection();
+    //- Destructor
+    virtual ~NoInjection();
 
 
     // Member Functions
@@ -104,28 +102,30 @@ public:
 
         // Injection geometry
 
-            //- Return the injection position
-            vector position
+            //- Set the injection position and owner cell
+            virtual void setPositionAndCell
             (
-                const label iParcel,
+                const label parcelI,
+                const label nParcels,
                 const scalar time,
-                const polyMeshInfo& meshInfo
+                vector& position,
+                label& cellOwner
             );
 
-            //- Return the velocity of the parcel to introduce at a time
-            vector velocity
+            virtual void setProperties
             (
-                const label,
+                const label parcelI,
+                const label nParcels,
                 const scalar time,
-                const polyMeshInfo& meshInfo
+                typename CloudType::parcelType& parcel
             );
 
-            //- Return the diameter of the parcel to introduce at a time
-            scalar d0
-            (
-                const label,
-                const scalar
-            ) const;
+            //- Flag to identify whether model fully describes the parcel
+            virtual bool fullyDescribed() const;
+
+            //- Return flag to identify whether or not injection of parcelI is
+            //  permitted
+            virtual bool validInjection(const label parcelI);
 };
 
 
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/PatchInjection/PatchInjection.C b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/PatchInjection/PatchInjection.C
new file mode 100644
index 0000000000000000000000000000000000000000..b79a8a1af1052c65079478035175df424ae2e24b
--- /dev/null
+++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/PatchInjection/PatchInjection.C
@@ -0,0 +1,206 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "PatchInjection.H"
+#include "DataEntry.H"
+#include "pdf.H"
+
+// * * * * * * * * * * * * Protected Member Functions  * * * * * * * * * * * //
+
+template<class CloudType>
+Foam::label Foam::PatchInjection<CloudType>::parcelsToInject
+(
+    const scalar time0,
+    const scalar time1
+) const
+{
+    if ((time0 >= 0.0) && (time0 < duration_))
+    {
+        return round(fraction_*(time1 - time0)*parcelsPerSecond_);
+    }
+    else
+    {
+        return 0;
+    }
+}
+
+
+template<class CloudType>
+Foam::scalar Foam::PatchInjection<CloudType>::volumeToInject
+(
+    const scalar time0,
+    const scalar time1
+) const
+{
+    if ((time0 >= 0.0) && (time0 < duration_))
+    {
+        return fraction_*volumeFlowRate_().integrate(time0, time1);
+    }
+    else
+    {
+        return 0.0;
+    }
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template<class CloudType>
+Foam::PatchInjection<CloudType>::PatchInjection
+(
+    const dictionary& dict,
+    CloudType& owner
+)
+:
+    InjectionModel<CloudType>(dict, owner, typeName),
+    patchName_(this->coeffDict().lookup("patchName")),
+    duration_(readScalar(this->coeffDict().lookup("duration"))),
+    parcelsPerSecond_
+    (
+        readScalar(this->coeffDict().lookup("parcelsPerSecond"))
+    ),
+    U0_(this->coeffDict().lookup("U0")),
+    volumeFlowRate_
+    (
+        DataEntry<scalar>::New
+        (
+            "volumeFlowRate",
+            this->coeffDict()
+        )
+    ),
+    parcelPDF_
+    (
+        pdf::New
+        (
+            this->coeffDict().subDict("parcelPDF"),
+            owner.rndGen()
+        )
+    ),
+    cellOwners_(),
+    fraction_(1.0)
+{
+    label patchId = owner.mesh().boundaryMesh().findPatchID(patchName_);
+
+    if (patchId < 0)
+    {
+        FatalErrorIn
+        (
+            "PatchInjection<CloudType>::PatchInjection"
+            "("
+                "const dictionary&, "
+                "CloudType&"
+            ")"
+        )   << "Requested patch " << patchName_ << " not found" << nl
+            << "Available patches are: " << owner.mesh().boundaryMesh().names()
+            << nl << exit(FatalError);
+    }
+
+    const polyPatch& patch = owner.mesh().boundaryMesh()[patchId];
+
+    cellOwners_ = patch.faceCells();
+
+    label patchSize = cellOwners_.size();
+    label totalPatchSize = patchSize;
+    reduce(totalPatchSize, sumOp<scalar>());
+    fraction_ = patchSize/totalPatchSize;
+
+    // Set total volume to inject
+    this->volumeTotal_ = fraction_*volumeFlowRate_().integrate(0.0, duration_);
+}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+template<class CloudType>
+Foam::PatchInjection<CloudType>::~PatchInjection()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+template<class CloudType>
+bool Foam::PatchInjection<CloudType>::active() const
+{
+    return true;
+}
+
+
+template<class CloudType>
+Foam::scalar Foam::PatchInjection<CloudType>::timeEnd() const
+{
+    return this->SOI_ + duration_;
+}
+
+
+template<class CloudType>
+void Foam::PatchInjection<CloudType>::setPositionAndCell
+(
+    const label,
+    const label,
+    const scalar,
+    vector& position,
+    label& cellOwner
+)
+{
+    label cellI = this->owner().rndGen().integer(0, cellOwners_.size() - 1);
+
+    cellOwner = cellOwners_[cellI];
+    position = this->owner().mesh().C()[cellOwner];
+}
+
+
+template<class CloudType>
+void Foam::PatchInjection<CloudType>::setProperties
+(
+    const label,
+    const label,
+    const scalar,
+    typename CloudType::parcelType& parcel
+)
+{
+    // set particle velocity
+    parcel.U() = U0_;
+
+    // set particle diameter
+    parcel.d() = parcelPDF_->sample();
+}
+
+
+template<class CloudType>
+bool Foam::PatchInjection<CloudType>::fullyDescribed() const
+{
+    return false;
+}
+
+
+template<class CloudType>
+bool Foam::PatchInjection<CloudType>::validInjection(const label)
+{
+    return true;
+}
+
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/PatchInjection/PatchInjection.H b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/PatchInjection/PatchInjection.H
new file mode 100644
index 0000000000000000000000000000000000000000..05117ce3be46f62a559ec7977d708cd35d5cd796
--- /dev/null
+++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/PatchInjection/PatchInjection.H
@@ -0,0 +1,187 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::PatchInjection
+
+Description
+    Patch injection
+
+    - User specifies
+      - Total mass to inject
+      - Name of patch
+      - Injection duration
+      - Initial parcel velocity
+      - Injection volume flow rate
+    - Parcel diameters obtained by PDF model
+    - Parcels injected at cell centres adjacent to patch
+
+SourceFiles
+    PatchInjection.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef PatchInjection_H
+#define PatchInjection_H
+
+#include "InjectionModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+template<class Type>
+class DataEntry;
+
+class pdf;
+
+/*---------------------------------------------------------------------------*\
+                       Class PatchInjection Declaration
+\*---------------------------------------------------------------------------*/
+
+template<class CloudType>
+class PatchInjection
+:
+    public InjectionModel<CloudType>
+{
+    // Private data
+
+        //- Name of patch
+        const word patchName_;
+
+        //- Injection duration [s]
+        const scalar duration_;
+
+        //- Number of parcels to introduce per second []
+        const label parcelsPerSecond_;
+
+        //- Initial parcel velocity [m/s]
+        const vector U0_;
+
+        //- Volume flow rate of parcels to introduce relative to SOI [m^3/s]
+        const autoPtr<DataEntry<scalar> > volumeFlowRate_;
+
+        //- Parcel size PDF model
+        const autoPtr<pdf> parcelPDF_;
+
+        //- Cell owners
+        labelList cellOwners_;
+
+        //- Fraction of injection controlled by this processor
+        scalar fraction_;
+
+
+protected:
+
+    // Protected member functions
+
+        //- Number of parcels to introduce over the time step relative to SOI
+        label parcelsToInject
+        (
+            const scalar time0,
+            const scalar time1
+        ) const;
+
+        //- Volume of parcels to introduce over the time step relative to SOI
+        scalar volumeToInject
+        (
+            const scalar time0,
+            const scalar time1
+        ) const;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("PatchInjection");
+
+
+    // Constructors
+
+        //- Construct from dictionary
+        PatchInjection
+        (
+            const dictionary& dict,
+            CloudType& owner
+        );
+
+
+    //- Destructor
+    virtual ~PatchInjection();
+
+
+    // Member Functions
+
+        //- Flag to indicate whether model activates injection model
+        bool active() const;
+
+        //- Return the end-of-injection time
+        scalar timeEnd() const;
+
+
+        // Injection geometry
+
+            //- Set the injection position and owner cell
+            virtual void setPositionAndCell
+            (
+                const label parcelI,
+                const label nParcels,
+                const scalar time,
+                vector& position,
+                label& cellOwner
+            );
+
+            virtual void setProperties
+            (
+                const label parcelI,
+                const label nParcels,
+                const scalar time,
+                typename CloudType::parcelType& parcel
+            );
+
+            //- Flag to identify whether model fully describes the parcel
+            virtual bool fullyDescribed() const;
+
+            //- Return flag to identify whether or not injection of parcelI is
+            //  permitted
+            virtual bool validInjection(const label parcelI);
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#ifdef NoRepository
+#   include "PatchInjection.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/LocalInteraction/LocalInteraction.C b/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/LocalInteraction/LocalInteraction.C
new file mode 100644
index 0000000000000000000000000000000000000000..ffe1f09631471a82d42072887224ffc5d5313dbf
--- /dev/null
+++ b/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/LocalInteraction/LocalInteraction.C
@@ -0,0 +1,149 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "LocalInteraction.H"
+
+// * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
+
+template <class CloudType>
+Foam::label Foam::LocalInteraction<CloudType>::applyToPatch
+(
+    const label globalPatchI
+) const
+{
+    forAll(patchIds_, patchI)
+    {
+        if (patchIds_[patchI] == globalPatchI)
+        {
+            return patchI;
+        }
+    }
+
+    return -1;
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template <class CloudType>
+Foam::LocalInteraction<CloudType>::LocalInteraction
+(
+    const dictionary& dict,
+    CloudType& cloud
+)
+:
+    PatchInteractionModel<CloudType>(dict, cloud, typeName),
+    patchData_(this->coeffDict().lookup("patches")),
+    patchIds_(patchData_.size())
+{
+    const polyMesh& mesh = cloud.mesh();
+    const polyBoundaryMesh& bMesh = mesh.boundaryMesh();
+
+    forAll(patchData_, patchI)
+    {
+        const word& patchName = patchData_[patchI].patchName();
+        patchIds_[patchI] = bMesh.findPatchID(patchName);
+        if (patchIds_[patchI] < 0)
+        {
+            FatalErrorIn("LocalInteraction(const dictionary&, CloudType&)")
+                << "Patch " << patchName << " not found. Available patches "
+                << "are: " << bMesh.names() << exit(FatalError);
+        }
+    }
+
+    // check that all walls are specified
+    DynamicList<word> badWalls;
+    forAll(bMesh, patchI)
+    {
+        if
+        (
+            isA<wallPolyPatch>(bMesh[patchI])
+         && applyToPatch(bMesh[patchI].index()) < 0
+        )
+        {
+            badWalls.append(bMesh[patchI].name());
+        }
+    }
+
+    if (badWalls.size() > 0)
+    {
+        FatalErrorIn("LocalInteraction(const dictionary&, CloudType&)")
+            << "All wall patches must be specified when employing local patch "
+            << "interaction. Please specify data for patches:" << nl
+            << badWalls << nl << exit(FatalError);
+    }
+}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+template <class CloudType>
+Foam::LocalInteraction<CloudType>::~LocalInteraction()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+template<class CloudType>
+bool Foam::LocalInteraction<CloudType>::active() const
+{
+    return true;
+}
+
+
+template <class CloudType>
+bool Foam::LocalInteraction<CloudType>::correct
+(
+    const polyPatch& pp,
+    const label faceId,
+    vector& U
+) const
+{
+    label patchI = applyToPatch(pp.index());
+
+    if (patchI >= 0)
+    {
+        vector nw = pp.faceAreas()[pp.whichFace(faceId)];
+        nw /= mag(nw);
+
+        scalar Un = U & nw;
+        vector Ut = U - Un*nw;
+
+        if (Un > 0)
+        {
+            U -= (1.0 + patchData_[patchI].e())*Un*nw;
+        }
+
+        U -= patchData_[patchI].mu()*Ut;
+
+        return true;
+    }
+
+    return false;
+}
+
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/LocalInteraction/LocalInteraction.H b/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/LocalInteraction/LocalInteraction.H
new file mode 100644
index 0000000000000000000000000000000000000000..49d36e9c6d82eab8c15e1aeef2d5b0ed6fa58446
--- /dev/null
+++ b/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/LocalInteraction/LocalInteraction.H
@@ -0,0 +1,186 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::LocalInteraction
+
+Description
+    Patch interaction specified on a patch-by-patch basis
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef LocalInteraction_H
+#define LocalInteraction_H
+
+#include "PatchInteractionModel.H"
+#include "dictionaryEntry.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+/*---------------------------------------------------------------------------*\
+                      Class LocalInteraction Declaration
+\*---------------------------------------------------------------------------*/
+
+template<class CloudType>
+class LocalInteraction
+:
+    public PatchInteractionModel<CloudType>
+{
+    class patchInteractionData
+    {
+        // Private data
+
+            //- Patch name
+            word patchName_;
+
+            //- Elasticity coefficient
+            scalar e_;
+
+            //- Restitution coefficient
+            scalar mu_;
+
+
+    public:
+
+        //- Construct null
+        patchInteractionData()
+        :
+            patchName_("unknownPatch"),
+            e_(0.0),
+            mu_(0.0)
+        {}
+
+        //- Construct from dictionary
+        patchInteractionData(const dictionary& dict);
+
+        // Member functions
+
+            // Access
+
+                //- Return const access to the patch name
+                const word& patchName() const
+                {
+                    return patchName_;
+                }
+
+                //- Return const access to the elasticity coefficient
+                scalar e() const
+                {
+                    return e_;
+                }
+
+                //- Return const access to the restitution coefficient
+                scalar mu() const
+                {
+                    return mu_;
+                }
+
+
+            // I-O
+
+                //- Istream operator
+                friend Istream& operator>>(Istream& is, patchInteractionData& pid)
+                {
+                    is.check
+                    (
+                        "Istream& operator>>"
+                        "(Istream&, patchInteractionData&)"
+                    );
+
+                    const dictionaryEntry entry(dictionary::null, is);
+
+                    pid.patchName_ = entry.keyword();
+                    entry.lookup("e") >> pid.e_;
+                    entry.lookup("mu") >> pid.mu_;
+
+                    return is;
+                }
+    };
+
+
+    // Private data
+
+        //- List of participating patches
+        const List<patchInteractionData> patchData_;
+
+        //- List of participating patch ids
+        List<label> patchIds_;
+
+
+    // Private member functions
+
+        //- Returns local patchI if patch is in patchIds_ list
+        label applyToPatch(const label globalPatchI) const;
+
+
+
+public:
+
+    //- Runtime type information
+    TypeName("LocalInteraction");
+
+
+    // Constructors
+
+        //- Construct from dictionary
+        LocalInteraction(const dictionary& dict, CloudType& cloud);
+
+
+    //- Destructor
+    virtual ~LocalInteraction();
+
+
+    // Member Functions
+
+        //- Flag to indicate whether model activates patch interaction model
+        virtual bool active() const;
+
+        //- Apply velocity correction
+        //  Returns true if particle remains in same cell
+        virtual bool correct
+        (
+            const polyPatch& pp,
+            const label faceId,
+            vector& U
+        ) const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#ifdef NoRepository
+#   include "LocalInteraction.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/PatchInteractionModel/NewPatchInteractionModel.C b/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/PatchInteractionModel/NewPatchInteractionModel.C
new file mode 100644
index 0000000000000000000000000000000000000000..83740bb684d1e0dea8fdf4a8acc637fc5854170a
--- /dev/null
+++ b/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/PatchInteractionModel/NewPatchInteractionModel.C
@@ -0,0 +1,67 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "PatchInteractionModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+template<class CloudType>
+Foam::autoPtr<Foam::PatchInteractionModel<CloudType> >
+Foam::PatchInteractionModel<CloudType>::New
+(
+    const dictionary& dict,
+    CloudType& owner
+)
+{
+    word PatchInteractionModelType(dict.lookup("PatchInteractionModel"));
+
+    Info<< "Selecting PatchInteractionModel " << PatchInteractionModelType
+        << endl;
+
+    typename dictionaryConstructorTable::iterator cstrIter =
+        dictionaryConstructorTablePtr_->find(PatchInteractionModelType);
+
+    if (cstrIter == dictionaryConstructorTablePtr_->end())
+    {
+        FatalErrorIn
+        (
+            "PatchInteractionModel<CloudType>::New"
+            "("
+                "const dictionary&, "
+                "CloudType&"
+            ")"
+        )   << "Unknown PatchInteractionModelType type "
+            << PatchInteractionModelType
+            << ", constructor not in hash table" << nl << nl
+            << "    Valid PatchInteractionModel types are:" << nl
+            << dictionaryConstructorTablePtr_->toc() << exit(FatalError);
+    }
+
+    return autoPtr<PatchInteractionModel<CloudType> >(cstrIter()(dict, owner));
+}
+
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/WallInteractionModel/WallInteractionModel/WallInteractionModel.C b/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/PatchInteractionModel/PatchInteractionModel.C
similarity index 80%
rename from src/lagrangian/intermediate/submodels/Kinematic/WallInteractionModel/WallInteractionModel/WallInteractionModel.C
rename to src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/PatchInteractionModel/PatchInteractionModel.C
index a99831988fd391c2fefbf679451469818a31d0a2..117e6005c8c98cd61f275cd512c8e8ac281070a4 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/WallInteractionModel/WallInteractionModel/WallInteractionModel.C
+++ b/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/PatchInteractionModel/PatchInteractionModel.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -24,18 +24,19 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "WallInteractionModel.H"
+#include "PatchInteractionModel.H"
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
 template<class CloudType>
-Foam::WallInteractionModel<CloudType>::WallInteractionModel
+Foam::PatchInteractionModel<CloudType>::PatchInteractionModel
 (
     const dictionary& dict,
     CloudType& owner,
     const word& type
 )
-:   dict_(dict),
+:
+    dict_(dict),
     owner_(owner),
     coeffDict_(dict.subDict(type + "Coeffs"))
 {}
@@ -44,7 +45,7 @@ Foam::WallInteractionModel<CloudType>::WallInteractionModel
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
 template<class CloudType>
-Foam::WallInteractionModel<CloudType>::~WallInteractionModel()
+Foam::PatchInteractionModel<CloudType>::~PatchInteractionModel()
 {}
 
 
@@ -52,14 +53,14 @@ Foam::WallInteractionModel<CloudType>::~WallInteractionModel()
 
 template<class CloudType>
 const CloudType&
-Foam::WallInteractionModel<CloudType>::owner() const
+Foam::PatchInteractionModel<CloudType>::owner() const
 {
     return owner_;
 }
 
 
 template<class CloudType>
-const Foam::dictionary& Foam::WallInteractionModel<CloudType>::dict() const
+const Foam::dictionary& Foam::PatchInteractionModel<CloudType>::dict() const
 {
     return dict_;
 }
@@ -67,7 +68,7 @@ const Foam::dictionary& Foam::WallInteractionModel<CloudType>::dict() const
 
 template<class CloudType>
 const Foam::dictionary&
-Foam::WallInteractionModel<CloudType>::coeffDict() const
+Foam::PatchInteractionModel<CloudType>::coeffDict() const
 {
     return coeffDict_;
 }
@@ -75,7 +76,7 @@ Foam::WallInteractionModel<CloudType>::coeffDict() const
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-#include "NewWallInteractionModel.C"
+#include "NewPatchInteractionModel.C"
 
 // ************************************************************************* //
 
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/WallInteractionModel/WallInteractionModel/WallInteractionModel.H b/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/PatchInteractionModel/PatchInteractionModel.H
similarity index 63%
rename from src/lagrangian/intermediate/submodels/Kinematic/WallInteractionModel/WallInteractionModel/WallInteractionModel.H
rename to src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/PatchInteractionModel/PatchInteractionModel.H
index d99034245c511f867e9380a78f13ca3e38e4d332..986d30d3a1c20d513a170fe4d03096351f8fa790 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/WallInteractionModel/WallInteractionModel/WallInteractionModel.H
+++ b/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/PatchInteractionModel/PatchInteractionModel.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -23,20 +23,19 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::WallInteractionModel
-
+    Foam::PatchInteractionModel
 
 Description
-    Templated wall interaction model class
+    Templated patch interaction model class
 
 SourceFiles
-    WallInteractionModel.C
-    NewWallInteractionModel.C
+    PatchInteractionModel.C
+    NewPatchInteractionModel.C
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef WallInteractionModel_H
-#define WallInteractionModel_H
+#ifndef PatchInteractionModel_H
+#define PatchInteractionModel_H
 
 #include "IOdictionary.H"
 #include "autoPtr.H"
@@ -48,19 +47,18 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                     Class WallInteractionModel Declaration
+                   Class PatchInteractionModel Declaration
 \*---------------------------------------------------------------------------*/
 
 template<class CloudType>
-class WallInteractionModel
+class PatchInteractionModel
 {
-
     // Private data
 
         //- The cloud dictionary
         const dictionary& dict_;
 
-        // reference to the owner cloud class
+        //- Reference to the owner cloud class
         CloudType& owner_;
 
         //- The coefficients dictionary
@@ -70,13 +68,13 @@ class WallInteractionModel
 public:
 
     //- Runtime type information
-    TypeName("WallInteractionModel");
+    TypeName("PatchInteractionModel");
 
     //- Declare runtime constructor selection table
     declareRunTimeSelectionTable
     (
         autoPtr,
-        WallInteractionModel,
+        PatchInteractionModel,
         dictionary,
         (
             const dictionary& dict,
@@ -89,7 +87,7 @@ public:
     // Constructors
 
         //- Construct from components
-        WallInteractionModel
+        PatchInteractionModel
         (
             const dictionary& dict,
             CloudType& owner,
@@ -97,18 +95,16 @@ public:
         );
 
 
-    // Destructor
-
-        virtual ~WallInteractionModel();
-
+    //- Destructor
+    virtual ~PatchInteractionModel();
 
-    // Selector
 
-        static autoPtr<WallInteractionModel<CloudType> > New
-        (
-            const dictionary& dict,
-            CloudType& owner
-        );
+    //- Selector
+    static autoPtr<PatchInteractionModel<CloudType> > New
+    (
+        const dictionary& dict,
+        CloudType& owner
+    );
 
 
     // Access
@@ -125,13 +121,14 @@ public:
 
     // Member Functions
 
-        //- Flag to indicate whether model activates heat transfer model
+        //- Flag to indicate whether model activates patch interaction model
         virtual bool active() const = 0;
 
-        //- Apply wall correction
-        virtual void correct
+        //- Apply velocity correction
+        //  Returns true if particle remains in same cell
+        virtual bool correct
         (
-            const wallPolyPatch& wpp,
+            const polyPatch& pp,
             const label faceId,
             vector& U
         ) const = 0;
@@ -144,30 +141,44 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-#define makeWallInteractionModel(CloudType)                                   \
+#define makePatchInteractionModel(CloudType)                                  \
                                                                               \
-    defineNamedTemplateTypeNameAndDebug(WallInteractionModel<CloudType>, 0);  \
+    defineNamedTemplateTypeNameAndDebug(PatchInteractionModel<CloudType>, 0); \
                                                                               \
     defineTemplateRunTimeSelectionTable                                       \
     (                                                                         \
-        WallInteractionModel<CloudType>,                                      \
+        PatchInteractionModel<CloudType>,                                     \
         dictionary                                                            \
     );
 
 
-#define makeWallInteractionModelType(SS, CloudType, ParcelType)               \
+#define makePatchInteractionModelType(SS, CloudType, ParcelType)              \
                                                                               \
     defineNamedTemplateTypeNameAndDebug(SS<CloudType<ParcelType> >, 0);       \
                                                                               \
-    WallInteractionModel<CloudType<ParcelType> >::                            \
+    PatchInteractionModel<CloudType<ParcelType> >::                           \
         adddictionaryConstructorToTable<SS<CloudType<ParcelType> > >          \
             add##SS##CloudType##ParcelType##ConstructorToTable_;
 
 
+#define makePatchInteractionModelThermoType(SS, CloudType, ParcelType, ThermoType)\
+                                                                              \
+    defineNamedTemplateTypeNameAndDebug                                       \
+    (                                                                         \
+        SS<CloudType<ParcelType<ThermoType> > >,                              \
+        0                                                                     \
+    );                                                                        \
+                                                                              \
+    PatchInteractionModel<CloudType<ParcelType<ThermoType> > >::              \
+        adddictionaryConstructorToTable                                       \
+            <SS<CloudType<ParcelType<ThermoType> > > >                        \
+            add##SS##CloudType##ParcelType##ThermoType##ConstructorToTable_;
+
+
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 #ifdef NoRepository
-#   include "WallInteractionModel.C"
+#   include "PatchInteractionModel.C"
 #endif
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/WallInteractionModel/Rebound/Rebound.C b/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/Rebound/Rebound.C
similarity index 88%
rename from src/lagrangian/intermediate/submodels/Kinematic/WallInteractionModel/Rebound/Rebound.C
rename to src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/Rebound/Rebound.C
index 7210f71e8af6c4d751d10db50f49e8cbd808cbf9..e5cfdd3540105e38d9f32f211a131923642faadb 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/WallInteractionModel/Rebound/Rebound.C
+++ b/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/Rebound/Rebound.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -35,7 +35,7 @@ Foam::Rebound<CloudType>::Rebound
     CloudType& cloud
 )
 :
-    WallInteractionModel<CloudType>(dict, cloud, typeName),
+    PatchInteractionModel<CloudType>(dict, cloud, typeName),
     UFactor_(readScalar(this->coeffDict().lookup("UFactor")))
 {}
 
@@ -57,14 +57,14 @@ bool Foam::Rebound<CloudType>::active() const
 
 
 template<class CloudType>
-void Foam::Rebound<CloudType>::correct
+bool Foam::Rebound<CloudType>::correct
 (
-    const wallPolyPatch& wpp,
+    const polyPatch& pp,
     const label faceId,
     vector& U
 ) const
 {
-    vector nw = wpp.faceAreas()[wpp.whichFace(faceId)];
+    vector nw = pp.faceAreas()[pp.whichFace(faceId)];
     nw /= mag(nw);
 
     scalar Un = U & nw;
@@ -77,6 +77,7 @@ void Foam::Rebound<CloudType>::correct
 
     U -= Ut;
 
+    return true;
 }
 
 
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/WallInteractionModel/Rebound/Rebound.H b/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/Rebound/Rebound.H
similarity index 80%
rename from src/lagrangian/intermediate/submodels/Kinematic/WallInteractionModel/Rebound/Rebound.H
rename to src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/Rebound/Rebound.H
index 6181840a97a332579c7390176540832a1ac80184..7e3126996f92760256966da6945c608d127832bf 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/WallInteractionModel/Rebound/Rebound.H
+++ b/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/Rebound/Rebound.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -26,14 +26,14 @@ Class
     Foam::Rebound
 
 Description
-    Simple rebound wall interaction model
+    Simple rebound patch interaction model
 
 \*---------------------------------------------------------------------------*/
 
 #ifndef Rebound_H
 #define Rebound_H
 
-#include "WallInteractionModel.H"
+#include "PatchInteractionModel.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -46,7 +46,7 @@ namespace Foam
 template<class CloudType>
 class Rebound
 :
-    public WallInteractionModel<CloudType>
+    public PatchInteractionModel<CloudType>
 {
     // Private data
 
@@ -64,27 +64,23 @@ public:
     // Constructors
 
         //- Construct from dictionary
-        Rebound
-        (
-            const dictionary& dict,
-            CloudType& cloud
-        );
-
+        Rebound(const dictionary& dict, CloudType& cloud);
 
-    // Destructor
 
-        ~Rebound();
+    //- Destructor
+    virtual ~Rebound();
 
 
     // Member Functions
 
-        //- Flag to indicate whether model activates heat transfer model
-        bool active() const;
+        //- Flag to indicate whether model activates patch interaction model
+        virtual bool active() const;
 
-        //- Apply wall correction
-        virtual void correct
+        //- Apply velocity correction
+        //  Returns true if particle remains in same cell
+        virtual bool correct
         (
-            const wallPolyPatch& wpp,
+            const polyPatch& pp,
             const label faceId,
             vector& U
         ) const;
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/WallInteractionModel/StandardWallInteraction/StandardWallInteraction.C b/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/StandardWallInteraction/StandardWallInteraction.C
similarity index 80%
rename from src/lagrangian/intermediate/submodels/Kinematic/WallInteractionModel/StandardWallInteraction/StandardWallInteraction.C
rename to src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/StandardWallInteraction/StandardWallInteraction.C
index 0c09c4be378e9f5de7ce012c112489ef162d038b..f87c0dd08b927c739ee6b9ca9592f98a8df8dbda 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/WallInteractionModel/StandardWallInteraction/StandardWallInteraction.C
+++ b/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/StandardWallInteraction/StandardWallInteraction.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -24,8 +24,6 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "error.H"
-
 #include "StandardWallInteraction.H"
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
@@ -37,7 +35,7 @@ Foam::StandardWallInteraction<CloudType>::StandardWallInteraction
     CloudType& cloud
 )
 :
-    WallInteractionModel<CloudType>(dict, cloud, typeName),
+    PatchInteractionModel<CloudType>(dict, cloud, typeName),
     e_(dimensionedScalar(this->coeffDict().lookup("e")).value()),
     mu_(dimensionedScalar(this->coeffDict().lookup("mu")).value())
 {}
@@ -60,25 +58,32 @@ bool Foam::StandardWallInteraction<CloudType>::active() const
 
 
 template <class CloudType>
-void Foam::StandardWallInteraction<CloudType>::correct
+bool Foam::StandardWallInteraction<CloudType>::correct
 (
-    const wallPolyPatch& wpp,
+    const polyPatch& pp,
     const label faceId,
     vector& U
 ) const
 {
-    vector nw = wpp.faceAreas()[wpp.whichFace(faceId)];
-    nw /= mag(nw);
+    if (isA<wallPolyPatch>(pp))
+    {
+        vector nw = pp.faceAreas()[pp.whichFace(faceId)];
+        nw /= mag(nw);
 
-    scalar Un = U & nw;
-    vector Ut = U - Un*nw;
+        scalar Un = U & nw;
+        vector Ut = U - Un*nw;
 
-    if (Un > 0)
-    {
-        U -= (1.0 + e_)*Un*nw;
+        if (Un > 0)
+        {
+            U -= (1.0 + e_)*Un*nw;
+        }
+
+        U -= mu_*Ut;
+
+        return true;
     }
 
-    U -= mu_*Ut;
+    return false;
 }
 
 
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/WallInteractionModel/StandardWallInteraction/StandardWallInteraction.H b/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/StandardWallInteraction/StandardWallInteraction.H
similarity index 81%
rename from src/lagrangian/intermediate/submodels/Kinematic/WallInteractionModel/StandardWallInteraction/StandardWallInteraction.H
rename to src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/StandardWallInteraction/StandardWallInteraction.H
index 30e99d2f3e447ee30fee34eb01b91595730ca105..3e2175e4698cbbf05c5a9a7175469ae12403a4ee 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/WallInteractionModel/StandardWallInteraction/StandardWallInteraction.H
+++ b/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/StandardWallInteraction/StandardWallInteraction.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -33,7 +33,7 @@ Description
 #ifndef StandardWallInteraction_H
 #define StandardWallInteraction_H
 
-#include "WallInteractionModel.H"
+#include "PatchInteractionModel.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -46,15 +46,14 @@ namespace Foam
 template<class CloudType>
 class StandardWallInteraction
 :
-    public WallInteractionModel<CloudType>
+    public PatchInteractionModel<CloudType>
 {
-
     // Private data
 
         //- Elasticity
         const scalar e_;
 
-        //-Restitution coefficient
+        //- Restitution coefficient
         const scalar mu_;
 
 
@@ -67,27 +66,23 @@ public:
     // Constructors
 
         //- Construct from dictionary
-        StandardWallInteraction
-        (
-            const dictionary& dict,
-            CloudType& cloud
-        );
-
+        StandardWallInteraction(const dictionary& dict, CloudType& cloud);
 
-    // Destructor
 
-        ~StandardWallInteraction();
+    //- Destructor
+    virtual ~StandardWallInteraction();
 
 
     // Member Functions
 
-        //- Flag to indicate whether model activates heat transfer model
-        bool active() const;
+        //- Flag to indicate whether model activates patch interaction model
+        virtual bool active() const;
 
-        //- Apply wall correction
-        virtual void correct
+        //- Apply velocity correction
+        //  Returns true if particle remains in same cell
+        virtual bool correct
         (
-            const wallPolyPatch& wpp,
+            const polyPatch& pp,
             const label faceId,
             vector& U
         ) const;
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/PostProcessingModel/NoPostProcessing/NoPostProcessing.C b/src/lagrangian/intermediate/submodels/Kinematic/PostProcessingModel/NoPostProcessing/NoPostProcessing.C
new file mode 100644
index 0000000000000000000000000000000000000000..b1842b858a17fbd1122ef59e12e7c0400aacfda7
--- /dev/null
+++ b/src/lagrangian/intermediate/submodels/Kinematic/PostProcessingModel/NoPostProcessing/NoPostProcessing.C
@@ -0,0 +1,78 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "NoPostProcessing.H"
+
+// * * * * * * * * * * * * * protected Member Functions  * * * * * * * * * * //
+
+template<class CloudType>
+void Foam::NoPostProcessing<CloudType>::write()
+{
+// do nothing
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template<class CloudType>
+Foam::NoPostProcessing<CloudType>::NoPostProcessing
+(
+    const dictionary&,
+    CloudType& owner
+)
+:
+    PostProcessingModel<CloudType>(owner)
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+template<class CloudType>
+Foam::NoPostProcessing<CloudType>::~NoPostProcessing()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+template<class CloudType>
+bool Foam::NoPostProcessing<CloudType>::active() const
+{
+    return false;
+}
+
+
+template<class CloudType>
+void Foam::NoPostProcessing<CloudType>::postPatch
+(
+    const typename CloudType::parcelType&,
+    const label
+)
+{
+// do nothing
+}
+
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/PostProcessingModel/NoPostProcessing/NoPostProcessing.H b/src/lagrangian/intermediate/submodels/Kinematic/PostProcessingModel/NoPostProcessing/NoPostProcessing.H
new file mode 100644
index 0000000000000000000000000000000000000000..6328cc67212de074cc002511bc41612c3f820554
--- /dev/null
+++ b/src/lagrangian/intermediate/submodels/Kinematic/PostProcessingModel/NoPostProcessing/NoPostProcessing.H
@@ -0,0 +1,109 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::NoPostProcessing
+
+Description
+    Place holder for 'none' option
+
+SourceFiles
+    NoPostProcessing.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef NoPostProcessing_H
+#define NoPostProcessing_H
+
+#include "PostProcessingModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+                      Class NoPostProcessing Declaration
+\*---------------------------------------------------------------------------*/
+
+template<class CloudType>
+class NoPostProcessing
+:
+    public PostProcessingModel<CloudType>
+{
+protected:
+
+    // Protected member functions
+
+        //- Write post-processing info
+        void write();
+
+
+public:
+
+    //- Runtime type information
+    TypeName("none");
+
+
+    // Constructors
+
+        //- Construct from components
+        NoPostProcessing(const dictionary&, CloudType&);
+
+
+    //- Destructor
+    virtual ~NoPostProcessing();
+
+
+    // Member Functions
+
+        // Evaluation
+
+            //- Flag to indicate whether model activates post-processing model
+            virtual bool active() const;
+
+            //- Gather post-processing info on patch
+            virtual void postPatch
+            (
+                const typename CloudType::parcelType& p,
+                const label patchI
+            );
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#ifdef NoRepository
+#   include "NoPostProcessing.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/PostProcessingModel/PatchPostProcessing/PatchPostProcessing.C b/src/lagrangian/intermediate/submodels/Kinematic/PostProcessingModel/PatchPostProcessing/PatchPostProcessing.C
new file mode 100644
index 0000000000000000000000000000000000000000..a1e56a0fe06c6fa9ff81f6c5e5aa1f1c5f5e8991
--- /dev/null
+++ b/src/lagrangian/intermediate/submodels/Kinematic/PostProcessingModel/PatchPostProcessing/PatchPostProcessing.C
@@ -0,0 +1,157 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "PatchPostProcessing.H"
+#include "IOPtrList.H"
+
+// * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
+
+template <class CloudType>
+Foam::label Foam::PatchPostProcessing<CloudType>::applyToPatch
+(
+    const label globalPatchI
+) const
+{
+    forAll(patchIds_, patchI)
+    {
+        if (patchIds_[patchI] == globalPatchI)
+        {
+            return patchI;
+        }
+    }
+
+    return -1;
+}
+
+
+// * * * * * * * * * * * * * protected Member Functions  * * * * * * * * * * //
+
+template<class CloudType>
+void Foam::PatchPostProcessing<CloudType>::write()
+{
+    forAll(patchData_, patchI)
+    {
+        IOPtrList<parcelType> postObject
+        (
+            IOobject
+            (
+                patchNames_[patchI] + ".post",
+                this->owner().time().timeName(),
+                "postProcessing",
+                this->owner(),
+                IOobject::NO_READ,
+                IOobject::NO_WRITE
+            ),
+            patchData_[patchI].size()
+        );
+
+        forAll(postObject, ptrI)
+        {
+            postObject.set(ptrI, patchData_[patchI][ptrI].ptr());
+        }
+
+        postObject.note() = parcelType::propHeader;
+
+        postObject.writeObject
+        (
+            IOstream::ASCII,
+            IOstream::currentVersion,
+            mesh_.time().writeCompression()
+        );
+
+        patchData_[patchI].clearStorage();
+    }
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template<class CloudType>
+Foam::PatchPostProcessing<CloudType>::PatchPostProcessing
+(
+    const dictionary& dict,
+    CloudType& owner
+)
+:
+    PostProcessingModel<CloudType>(dict, owner, typeName),
+    mesh_(owner.mesh()),
+    patchNames_(this->coeffDict().lookup("patches")),
+    patchData_(patchNames_.size()),
+    patchIds_(patchNames_.size())
+{
+    forAll(patchNames_, patchI)
+    {
+        label id = mesh_.boundaryMesh().findPatchID(patchNames_[patchI]);
+        if (id < 0)
+        {
+            FatalErrorIn
+            (
+                "PatchPostProcessing<CloudType>::PatchPostProcessing"
+                "("
+                    "const dictionary&, "
+                    "CloudType& owner"
+                ")"
+            )<< "Requested patch " << patchNames_[patchI] << " not found" << nl
+             << "Available patches are: " << mesh_.boundaryMesh().names() << nl
+             << exit(FatalError);
+        }
+        patchIds_[patchI] = id;
+    }
+}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+template<class CloudType>
+Foam::PatchPostProcessing<CloudType>::~PatchPostProcessing()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+template<class CloudType>
+bool Foam::PatchPostProcessing<CloudType>::active() const
+{
+    return true;
+}
+
+
+template<class CloudType>
+void Foam::PatchPostProcessing<CloudType>::postPatch
+(
+    const parcelType& p,
+    const label patchI
+)
+{
+    label localPatchI = applyToPatch(patchI);
+    if (localPatchI >= 0 && patchData_[localPatchI].size() < maxStoredParcels_)
+    {
+        patchData_[localPatchI].append(p.clone());
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/PostProcessingModel/PatchPostProcessing/PatchPostProcessing.H b/src/lagrangian/intermediate/submodels/Kinematic/PostProcessingModel/PatchPostProcessing/PatchPostProcessing.H
new file mode 100644
index 0000000000000000000000000000000000000000..2df16c132424a414f9615e5bd3a766bbe1f0cdfd
--- /dev/null
+++ b/src/lagrangian/intermediate/submodels/Kinematic/PostProcessingModel/PatchPostProcessing/PatchPostProcessing.H
@@ -0,0 +1,154 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::PatchPostProcessing
+
+Description
+    Standard post-processing
+
+SourceFiles
+    PatchPostProcessing.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef PatchPostProcessing_H
+#define PatchPostProcessing_H
+
+#include "PostProcessingModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+                    Class PatchPostProcessing Declaration
+\*---------------------------------------------------------------------------*/
+
+template<class CloudType>
+class PatchPostProcessing
+:
+    public PostProcessingModel<CloudType>
+{
+    // Private data
+
+        typedef typename CloudType::parcelType parcelType;
+
+        //- Reference to the mesh
+        const polyMesh& mesh_;
+
+        //- Maximum number of parcels to store
+        label maxStoredParcels_;
+
+        //- List of patch names
+        wordList patchNames_;
+
+        //- List of parcel data per patch
+        List<DynamicList<autoPtr<parcelType> > > patchData_;
+
+        //- Mapping from local to global patch ids
+        labelList patchIds_;
+
+
+    // Private member functions
+
+        //- Returns local patchI if patch is in patchIds_ list
+        label applyToPatch(const label globalPatchI) const;
+
+
+protected:
+
+    // Protected member functions
+
+        //- Write post-processing info
+        void write();
+
+
+public:
+
+    //- Runtime type information
+    TypeName("PatchPostProcessing");
+
+
+    // Constructors
+
+        //- Construct from dictionary
+        PatchPostProcessing(const dictionary& dict, CloudType& owner);
+
+
+    //- Destructor
+    virtual ~PatchPostProcessing();
+
+
+    // Member Functions
+
+        // Access
+
+            //- Return const access to the mesh
+            inline const polyMesh& mesh() const;
+
+            //- Return maximum number of parcels to store per patch
+            inline label maxStoredParcels() const;
+
+            //- Return const access to the list of patch names
+            inline const wordList& patchNames() const;
+
+            //- Return const mapping from local to global patch ids
+            inline const labelList& patchIds() const;
+
+
+        // Evaluation
+
+            //- Flag to indicate whether model activates post-processing model
+            virtual bool active() const;
+
+            //- Gather post-processing info on patch
+            virtual void postPatch
+            (
+                const parcelType& p,
+                const label patchI
+            );
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "PatchPostProcessingI.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#ifdef NoRepository
+#   include "PatchPostProcessing.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/PostProcessingModel/PatchPostProcessing/PatchPostProcessingI.H b/src/lagrangian/intermediate/submodels/Kinematic/PostProcessingModel/PatchPostProcessing/PatchPostProcessingI.H
new file mode 100644
index 0000000000000000000000000000000000000000..f060eabc4b9d8d9a1d7592ff0a0ff9ac37b146f4
--- /dev/null
+++ b/src/lagrangian/intermediate/submodels/Kinematic/PostProcessingModel/PatchPostProcessing/PatchPostProcessingI.H
@@ -0,0 +1,56 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+template<class CloudType>
+const Foam::polyMesh& Foam::PatchPostProcessing<CloudType>::mesh() const
+{
+    return mesh_;
+}
+
+
+template<class CloudType>
+Foam::label Foam::PatchPostProcessing<CloudType>::maxStoredParcels() const
+{
+    return maxStoredParcels_;
+}
+
+
+template<class CloudType>
+const Foam::wordList& Foam::PatchPostProcessing<CloudType>::patchNames() const
+{
+    return patchNames_;
+}
+
+
+template<class CloudType>
+const Foam::labelList&
+Foam::PatchPostProcessing<CloudType>::patchIds() const
+{
+    return patchIds_;
+}
+
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/WallInteractionModel/WallInteractionModel/NewWallInteractionModel.C b/src/lagrangian/intermediate/submodels/Kinematic/PostProcessingModel/PostProcessingModel/NewPostProcessingModel.C
similarity index 68%
rename from src/lagrangian/intermediate/submodels/Kinematic/WallInteractionModel/WallInteractionModel/NewWallInteractionModel.C
rename to src/lagrangian/intermediate/submodels/Kinematic/PostProcessingModel/PostProcessingModel/NewPostProcessingModel.C
index ee1fd8a169e08e7c932aeaf0beaf55d53659b838..29c096b67769cefbb1626097d6f6c16b38f6ff22 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/WallInteractionModel/WallInteractionModel/NewWallInteractionModel.C
+++ b/src/lagrangian/intermediate/submodels/Kinematic/PostProcessingModel/PostProcessingModel/NewPostProcessingModel.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -24,44 +24,42 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "WallInteractionModel.H"
+#include "PostProcessingModel.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 template<class CloudType>
-Foam::autoPtr<Foam::WallInteractionModel<CloudType> >
-Foam::WallInteractionModel<CloudType>::New
+Foam::autoPtr<Foam::PostProcessingModel<CloudType> >
+Foam::PostProcessingModel<CloudType>::New
 (
     const dictionary& dict,
     CloudType& owner
 )
 {
-    word WallInteractionModelType
-    (
-        dict.lookup("WallInteractionModel")
-    );
+    word PostProcessingModelType(dict.lookup("PostProcessingModel"));
 
-    Info<< "Selecting WallInteractionModel " << WallInteractionModelType
-        << endl;
+    Info<< "Selecting PostProcessingModel " << PostProcessingModelType << endl;
 
     typename dictionaryConstructorTable::iterator cstrIter =
-        dictionaryConstructorTablePtr_->find(WallInteractionModelType);
+        dictionaryConstructorTablePtr_->find(PostProcessingModelType);
 
     if (cstrIter == dictionaryConstructorTablePtr_->end())
     {
         FatalErrorIn
         (
-            "WallInteractionModel<CloudType>::New"
-            "(const dictionary&, CloudType&)"
-        )
-            << "Unknown WallInteractionModelType type "
-            << WallInteractionModelType
+            "PostProcessingModel<CloudType>::New"
+            "("
+                "const dictionary&, "
+                "CloudType&"
+            ")"
+        )   << "Unknown PostProcessingModelType type "
+            << PostProcessingModelType
             << ", constructor not in hash table" << nl << nl
-            << "    Valid WallInteractionModel types are :" << nl
+            << "    Valid PostProcessingModel types are:" << nl
             << dictionaryConstructorTablePtr_->toc() << exit(FatalError);
     }
 
-    return autoPtr<WallInteractionModel<CloudType> >(cstrIter()(dict, owner));
+    return autoPtr<PostProcessingModel<CloudType> >(cstrIter()(dict, owner));
 }
 
 
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/PostProcessingModel/PostProcessingModel/PostProcessingModel.C b/src/lagrangian/intermediate/submodels/Kinematic/PostProcessingModel/PostProcessingModel/PostProcessingModel.C
new file mode 100644
index 0000000000000000000000000000000000000000..15d429493fee8c1be0678948a7502a8216f340ea
--- /dev/null
+++ b/src/lagrangian/intermediate/submodels/Kinematic/PostProcessingModel/PostProcessingModel/PostProcessingModel.C
@@ -0,0 +1,77 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "PostProcessingModel.H"
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template<class CloudType>
+Foam::PostProcessingModel<CloudType>::PostProcessingModel(CloudType& owner)
+:
+    dict_(dictionary::null),
+    owner_(owner),
+    coeffDict_(dictionary::null)
+{}
+
+
+template<class CloudType>
+Foam::PostProcessingModel<CloudType>::PostProcessingModel
+(
+    const dictionary& dict,
+    CloudType& owner,
+    const word& type
+)
+:
+    dict_(dict),
+    owner_(owner),
+    coeffDict_(dict.subDict(type + "Coeffs"))
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+template<class CloudType>
+Foam::PostProcessingModel<CloudType>::~PostProcessingModel()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+template<class CloudType>
+void Foam::PostProcessingModel<CloudType>::post()
+{
+    if (owner_.time().outputTime())
+    {
+        this->write();
+    }
+}
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "NewPostProcessingModel.C"
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/PostProcessingModel/PostProcessingModel/PostProcessingModel.H b/src/lagrangian/intermediate/submodels/Kinematic/PostProcessingModel/PostProcessingModel/PostProcessingModel.H
new file mode 100644
index 0000000000000000000000000000000000000000..311169aa3aa472f0659b86c1e4ed7ab9cc80e433
--- /dev/null
+++ b/src/lagrangian/intermediate/submodels/Kinematic/PostProcessingModel/PostProcessingModel/PostProcessingModel.H
@@ -0,0 +1,209 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::PostProcessingModel
+
+Description
+    Templated post-processing model class
+
+SourceFiles
+    PostProcessingModel.C
+    NewPostProcessingModel.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef PostProcessingModel_H
+#define PostProcessingModel_H
+
+#include "IOdictionary.H"
+#include "autoPtr.H"
+#include "runTimeSelectionTables.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+                    Class PostProcessingModel Declaration
+\*---------------------------------------------------------------------------*/
+
+template<class CloudType>
+class PostProcessingModel
+{
+    // Private data
+
+        //- The cloud dictionary
+        const dictionary& dict_;
+
+        //- Reference to the owner cloud class
+        CloudType& owner_;
+
+        //- The coefficients dictionary
+        const dictionary coeffDict_;
+
+
+protected:
+
+    // Protected member functions
+
+        //- Write post-processing info
+        virtual void write() = 0;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("PostProcessingModel");
+
+    //- Declare runtime constructor selection table
+    declareRunTimeSelectionTable
+    (
+        autoPtr,
+        PostProcessingModel,
+        dictionary,
+        (
+            const dictionary& dict,
+            CloudType& owner
+        ),
+        (dict, owner)
+    );
+
+
+    // Constructors
+
+        //- Construct null from owner
+        PostProcessingModel(CloudType& owner);
+
+        //- Construct from dictionary
+        PostProcessingModel
+        (
+            const dictionary& dict,
+            CloudType& owner,
+            const word& type
+        );
+
+
+    //- Destructor
+    virtual ~PostProcessingModel();
+
+
+    //- Selector
+    static autoPtr<PostProcessingModel<CloudType> > New
+    (
+        const dictionary& dict,
+        CloudType& owner
+    );
+
+
+    // Member Functions
+
+        // Access
+
+            //- Return the owner cloud dictionary
+            inline const dictionary& dict() const;
+
+            //- Return const access the owner cloud object
+            inline const CloudType& owner() const;
+
+            //- Return non-const access the owner cloud object for manipulation
+            inline CloudType& owner();
+
+            //- Return the coefficients dictionary
+            inline const dictionary& coeffDict() const;
+
+
+        // Evaluation
+
+            //- Main post-processing function
+            virtual void post();
+
+            //- Flag to indicate whether model activates post-processing model
+            virtual bool active() const = 0;
+
+            //- Gather post-processing info on patch
+            virtual void postPatch
+            (
+                const typename CloudType::parcelType& p,
+                const label patchI
+            ) = 0;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#define makePostProcessingModel(CloudType)                                    \
+                                                                              \
+    defineNamedTemplateTypeNameAndDebug(PostProcessingModel<CloudType>, 0);   \
+                                                                              \
+    defineTemplateRunTimeSelectionTable                                       \
+    (                                                                         \
+        PostProcessingModel<CloudType>,                                       \
+        dictionary                                                            \
+    );
+
+
+#define makePostProcessingModelType(SS, CloudType, ParcelType)                \
+                                                                              \
+    defineNamedTemplateTypeNameAndDebug(SS<CloudType<ParcelType> >, 0);       \
+                                                                              \
+    PostProcessingModel<CloudType<ParcelType> >::                             \
+        adddictionaryConstructorToTable<SS<CloudType<ParcelType> > >          \
+            add##SS##CloudType##ParcelType##ConstructorToTable_;
+
+
+#define makePostProcessingModelThermoType(SS, CloudType, ParcelType, ThermoType)\
+                                                                              \
+    defineNamedTemplateTypeNameAndDebug                                       \
+    (                                                                         \
+        SS<CloudType<ParcelType<ThermoType> > >,                              \
+        0                                                                     \
+    );                                                                        \
+                                                                              \
+    PostProcessingModel<CloudType<ParcelType<ThermoType> > >::                \
+        adddictionaryConstructorToTable                                       \
+            <SS<CloudType<ParcelType<ThermoType> > > >                        \
+            add##SS##CloudType##ParcelType##ThermoType##ConstructorToTable_;
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "PostProcessingModelI.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#ifdef NoRepository
+#   include "PostProcessingModel.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/PostProcessingModel/PostProcessingModel/PostProcessingModelI.H b/src/lagrangian/intermediate/submodels/Kinematic/PostProcessingModel/PostProcessingModel/PostProcessingModelI.H
new file mode 100644
index 0000000000000000000000000000000000000000..0a95224da503f494be1c5de411eb787381a4da92
--- /dev/null
+++ b/src/lagrangian/intermediate/submodels/Kinematic/PostProcessingModel/PostProcessingModel/PostProcessingModelI.H
@@ -0,0 +1,55 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+template<class CloudType>
+const Foam::dictionary& Foam::PostProcessingModel<CloudType>::dict() const
+{
+    return dict_;
+}
+
+
+template<class CloudType>
+const CloudType& Foam::PostProcessingModel<CloudType>::owner() const
+{
+    return owner_;
+}
+
+
+template<class CloudType>
+CloudType& Foam::PostProcessingModel<CloudType>::owner()
+{
+    return owner_;
+}
+
+
+template<class CloudType>
+const Foam::dictionary& Foam::PostProcessingModel<CloudType>::coeffDict() const
+{
+    return coeffDict_;
+}
+
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.C b/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.C
index 651b04153839ef57ad3f5fe66d1ce4ad4e47c13d..6ae3dabb6fd1ab3ac3efac2f5526adee30e0f3d1 100644
--- a/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.C
+++ b/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -35,18 +35,18 @@ Foam::CompositionModel<CloudType>::CompositionModel
     CloudType& owner,
     const word& type
 )
-:   dict_(dict),
+:
+    dict_(dict),
     owner_(owner),
     coeffDict_(dict.subDict(type + "Coeffs")),
-    carrierThermo_(owner.carrierThermo()),
-    gases_(owner.gases()),
+    mcCarrierThermo_(owner.mcCarrierThermo()),
     liquids_
     (
         liquidMixture::New
         (
             owner.mesh().objectRegistry::lookupObject<dictionary>
             (
-                "thermophysicalProperties"
+                owner.carrierThermo().name()
             )
         )
     ),
@@ -56,9 +56,16 @@ Foam::CompositionModel<CloudType>::CompositionModel
         (
             owner.mesh().objectRegistry::lookupObject<dictionary>
             (
-                "thermophysicalProperties"
+                owner.carrierThermo().name()
             )
         )
+    ),
+    phaseProps_
+    (
+        coeffDict_.lookup("phases"),
+        mcCarrierThermo_.species(),
+        liquids_().components(),
+        solids_().components()
     )
 {}
 
@@ -94,32 +101,446 @@ const Foam::dictionary& Foam::CompositionModel<CloudType>::coeffDict() const
 
 
 template<class CloudType>
-const Foam::hCombustionThermo&
-Foam::CompositionModel<CloudType>::carrierThermo() const
+const Foam::multiComponentMixture<typename CloudType::thermoType>&
+Foam::CompositionModel<CloudType>::mcCarrierThermo() const
 {
-    return carrierThermo_;
+    return mcCarrierThermo_;
 }
 
 
 template<class CloudType>
-const Foam::PtrList<Foam::specieReactingProperties>&
-Foam::CompositionModel<CloudType>::gases() const
+const Foam::liquidMixture& Foam::CompositionModel<CloudType>::liquids() const
 {
-    return gases_;
+    return liquids_();
 }
 
 
 template<class CloudType>
-const Foam::liquidMixture& Foam::CompositionModel<CloudType>::liquids() const
+const Foam::solidMixture& Foam::CompositionModel<CloudType>::solids() const
 {
-    return liquids_();
+    return solids_();
 }
 
 
 template<class CloudType>
-const Foam::solidMixture& Foam::CompositionModel<CloudType>::solids() const
+const Foam::phasePropertiesList&
+Foam::CompositionModel<CloudType>::phaseProps() const
 {
-    return solids_();
+    return phaseProps_;
+}
+
+
+template<class CloudType>
+Foam::label Foam::CompositionModel<CloudType>::nPhase() const
+{
+    return phaseProps_.size();
+}
+
+
+template<class CloudType>
+const Foam::wordList&
+Foam::CompositionModel<CloudType>::phaseTypes() const
+{
+    // if only 1 phase, return the constituent component names
+    if (phaseProps_.size() == 1)
+    {
+        return phaseProps_[0].names();
+    }
+    else
+    {
+        return phaseProps_.phaseTypes();
+    }
+}
+
+
+template<class CloudType>
+const Foam::wordList&
+Foam::CompositionModel<CloudType>::stateLabels() const
+{
+    return phaseProps_.stateLabels();
+}
+
+
+template<class CloudType>
+const Foam::wordList&
+Foam::CompositionModel<CloudType>::componentNames(const label phaseI) const
+{
+    return phaseProps_[phaseI].names();
+}
+
+
+template<class CloudType>
+Foam::label Foam::CompositionModel<CloudType>::globalCarrierId
+(
+    const word& cmptName
+) const
+{
+    forAll(mcCarrierThermo_.species(), i)
+    {
+        if (cmptName == mcCarrierThermo_.species()[i])
+        {
+            return i;
+        }
+    }
+
+    FatalErrorIn
+    (
+        "Foam::label Foam::CompositionModel<CloudType>::globalCarrierId"
+        "("
+            "const word&"
+        ") const"
+    )   << "Unable to determine global id for requested component "
+        << cmptName << nl << abort(FatalError);
+
+    return -1;
+}
+
+
+template<class CloudType>
+Foam::label Foam::CompositionModel<CloudType>::globalId
+(
+    const label phaseI,
+    const word& cmptName
+) const
+{
+    label id = phaseProps_[phaseI].globalId(cmptName);
+
+    if (id < 0)
+    {
+        FatalErrorIn
+        (
+            "Foam::label Foam::CompositionModel<CloudType>::globalId"
+            "("
+                "const label, "
+                "const word&"
+            ") const"
+        )   << "Unable to determine global id for requested component "
+            << cmptName << nl << abort(FatalError);
+    }
+
+    return id;
+}
+
+
+template<class CloudType>
+const Foam::labelList& Foam::CompositionModel<CloudType>::globalIds
+(
+    const label phaseI
+) const
+{
+    return phaseProps_[phaseI].globalIds();
+}
+
+
+template<class CloudType>
+Foam::label Foam::CompositionModel<CloudType>::localId
+(
+    const label phaseI,
+    const word& cmptName
+) const
+{
+    label id = phaseProps_[phaseI].id(cmptName);
+
+    if (id < 0)
+    {
+        FatalErrorIn
+        (
+            "Foam::label Foam::CompositionModel<CloudType>::localId"
+            "("
+                "const label, "
+                "const word&"
+            ") const"
+        )   << "Unable to determine local id for component " << cmptName
+            << nl << abort(FatalError);
+    }
+
+    return id;
+}
+
+
+template<class CloudType>
+Foam::label Foam::CompositionModel<CloudType>::localToGlobalCarrierId
+(
+    const label phaseI,
+    const label id
+) const
+{
+    label gid = phaseProps_[phaseI].globalCarrierIds()[id];
+
+    if (gid < 0)
+    {
+        FatalErrorIn
+        (
+            "Foam::label "
+            "Foam::CompositionModel<CloudType>::localToGlobalCarrierId"
+            "("
+                "const label, "
+                "const label"
+            ") const"
+        )   << "Unable to determine global carrier id for phase "
+            << phaseI << " with local id " << id
+            << nl << abort(FatalError);
+    }
+
+    return gid;
+}
+
+
+template<class CloudType>
+const Foam::scalarField& Foam::CompositionModel<CloudType>::Y0
+(
+    const label phaseI
+) const
+{
+    return phaseProps_[phaseI].Y();
+}
+
+
+template<class CloudType>
+Foam::scalarField Foam::CompositionModel<CloudType>::X
+(
+    const label phaseI,
+    const scalarField& Y
+) const
+{
+    const phaseProperties& props = phaseProps_[phaseI];
+    scalarField X(Y.size(), 0.0);
+    scalar WInv = 0.0;
+    switch (props.phase())
+    {
+        case phaseProperties::GAS:
+        {
+            forAll(Y, i)
+            {
+                label gid = props.globalIds()[i];
+                WInv += Y[i]/mcCarrierThermo_.speciesData()[gid].W();
+                X[i] = Y[i]/mcCarrierThermo_.speciesData()[gid].W();
+            }
+            break;
+        }
+        case phaseProperties::LIQUID:
+        {
+            forAll(Y, i)
+            {
+                label gid = props.globalIds()[i];
+                WInv += Y[i]/this->liquids().properties()[gid].W();
+                X[i] += Y[i]/this->liquids().properties()[gid].W();
+            }
+            break;
+        }
+        default:
+        {
+            FatalErrorIn
+            (
+                "Foam::scalarField Foam::CompositionModel<CloudType>::X"
+                "("
+                    "const label, "
+                    "const scalarField&"
+                ") const"
+            )   << "Only possible to convert gas and liquid mass fractions"
+                << nl << abort(FatalError);
+        }
+    }
+
+    return X/WInv;
+}
+
+
+template<class CloudType>
+Foam::scalar Foam::CompositionModel<CloudType>::H
+(
+    const label phaseI,
+    const scalarField& Y,
+    const scalar p,
+    const scalar T
+) const
+{
+    const phaseProperties& props = phaseProps_[phaseI];
+    scalar HMixture = 0.0;
+    switch (props.phase())
+    {
+        case phaseProperties::GAS:
+        {
+            forAll(Y, i)
+            {
+                label gid = props.globalIds()[i];
+                HMixture += Y[i]*mcCarrierThermo_.speciesData()[gid].H(T);
+            }
+            break;
+        }
+        case phaseProperties::LIQUID:
+        {
+            forAll(Y, i)
+            {
+                label gid = props.globalIds()[i];
+                HMixture += Y[i]*this->liquids().properties()[gid].h(p, T);
+            }
+            break;
+        }
+        case phaseProperties::SOLID:
+        {
+            forAll(Y, i)
+            {
+                label gid = props.globalIds()[i];
+                HMixture +=
+                     Y[i]
+                    *(
+                        this->solids().properties()[gid].Hf()
+                      + this->solids().properties()[gid].cp()*T
+                     );
+            }
+            break;
+        }
+        default:
+        {
+            FatalErrorIn
+            (
+                "Foam::scalar Foam::CompositionModel<CloudType>::H"
+                "("
+                "    const label, "
+                "    const scalarField&, "
+                "    const scalar, "
+                "    const scalar"
+                ") const"
+            )   << "Unknown phase enumeration" << nl << abort(FatalError);
+        }
+    }
+
+    return HMixture;
+}
+
+
+template<class CloudType>
+Foam::scalar Foam::CompositionModel<CloudType>::cp
+(
+    const label phaseI,
+    const scalarField& Y,
+    const scalar p,
+    const scalar T
+) const
+{
+    const phaseProperties& props = phaseProps_[phaseI];
+    scalar cpMixture = 0.0;
+    switch (props.phase())
+    {
+        case phaseProperties::GAS:
+        {
+            forAll(Y, i)
+            {
+                label gid = props.globalIds()[i];
+                cpMixture += Y[i]*mcCarrierThermo_.speciesData()[gid].Cp(T);
+            }
+            break;
+        }
+        case phaseProperties::LIQUID:
+        {
+            forAll(Y, i)
+            {
+                label gid = props.globalIds()[i];
+                cpMixture += Y[i]*this->liquids().properties()[gid].cp(p, T);
+            }
+            break;
+        }
+        case phaseProperties::SOLID:
+        {
+            forAll(Y, i)
+            {
+                label gid = props.globalIds()[i];
+                cpMixture += Y[i]*this->solids().properties()[gid].cp();
+            }
+            break;
+        }
+        default:
+        {
+            FatalErrorIn
+            (
+                "Foam::scalar Foam::CompositionModel<CloudType>::cp"
+                "("
+                    "const label, "
+                    "const scalarField&, "
+                    "const scalar, "
+                    "const scalar"
+                ") const"
+            )   << "Unknown phase enumeration" << nl << abort(FatalError);
+        }
+    }
+
+    return cpMixture;
+}
+
+
+template<class CloudType>
+Foam::scalar Foam::CompositionModel<CloudType>::L
+(
+    const label phaseI,
+    const scalarField& Y,
+    const scalar p,
+    const scalar T
+) const
+{
+    const phaseProperties& props = phaseProps_[phaseI];
+    scalar LMixture = 0.0;
+    switch (props.phase())
+    {
+        case phaseProperties::GAS:
+        {
+            if (debug)
+            {
+                WarningIn
+                (
+                    "Foam::scalar Foam::CompositionModel<CloudType>::L"
+                    "("
+                        "const label, "
+                        "const scalarField&, "
+                        "const scalar, "
+                        "const scalar"
+                    ") const\n"
+                )   << "No support for gaseous components" << endl;
+            }
+            break;
+        }
+        case phaseProperties::LIQUID:
+        {
+            forAll(Y, i)
+            {
+                label gid = props.globalIds()[i];
+                LMixture += Y[i]*this->liquids().properties()[gid].hl(p, T);
+            }
+            break;
+        }
+        case phaseProperties::SOLID:
+        {
+            if (debug)
+            {
+                WarningIn
+                (
+                    "Foam::scalar Foam::CompositionModel<CloudType>::L"
+                    "("
+                        "const label, "
+                        "const scalarField&, "
+                        "const scalar, "
+                        "const scalar"
+                    ") const\n"
+                )   << "No support for solid components" << endl;
+            }
+            break;
+        }
+        default:
+        {
+            FatalErrorIn
+            (
+                "Foam::scalar Foam::CompositionModel<CloudType>::L"
+                "("
+                    "const label, "
+                    "const scalarField&, "
+                    "const scalar, "
+                    "const scalar"
+                ") const"
+            )   << "Unknown phase enumeration" << nl << abort(FatalError);
+        }
+    }
+
+    return LMixture;
 }
 
 
diff --git a/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.H b/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.H
index eecd432a9610a3e2648029c589719654ac9b6fca..b3f0949defcc84b06f7f8c4b4b0a9ff900d1b079 100644
--- a/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.H
+++ b/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -25,10 +25,10 @@ License
 Class
     Foam::CompositionModel
 
-
 Description
     Templated reacting parcel composition model class
-    Consists of gases (via thermo package), liquids and solids
+    Consists of carrier species (via thermo package), and additional liquids
+    and solids
 
 SourceFiles
     CompositionModel.C
@@ -44,11 +44,13 @@ SourceFiles
 #include "runTimeSelectionTables.H"
 
 #include "PtrList.H"
-#include "hCombustionThermo.H"
+#include "multiComponentMixture.H"
 
 #include "liquidMixture.H"
 #include "solidMixture.H"
 
+#include "phasePropertiesList.H"
+
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 namespace Foam
@@ -61,7 +63,6 @@ namespace Foam
 template<class CloudType>
 class CompositionModel
 {
-
     // Private data
 
         //- The cloud dictionary
@@ -73,18 +74,18 @@ class CompositionModel
         //- The coefficients dictionary
         const dictionary& coeffDict_;
 
-        //- Reference to the carrier phase thermo package
-        hCombustionThermo& carrierThermo_;
-
-        //- Reference to the carrier phase species
-        const PtrList<specieReactingProperties>& gases_;
+        //- Reference to the multi-component carrier phase thermo
+        multiComponentMixture<typename CloudType::thermoType>& mcCarrierThermo_;
 
-        //- Global liquid properties data
+        //- Global (additional) liquid properties data
         autoPtr<liquidMixture> liquids_;
 
-        //- Global solid properties data
+        //- Global (additional) solid properties data
         autoPtr<solidMixture> solids_;
 
+        //- List of phase properties
+        phasePropertiesList phaseProps_;
+
 
 public:
 
@@ -116,18 +117,16 @@ public:
         );
 
 
-    // Destructor
-
-        virtual ~CompositionModel();
-
+    //- Destructor
+    virtual ~CompositionModel();
 
-    // Selector
 
-        static autoPtr<CompositionModel<CloudType> > New
-        (
-            const dictionary& dict,
-            CloudType& owner
-        );
+    //- Selector
+    static autoPtr<CompositionModel<CloudType> > New
+    (
+        const dictionary& dict,
+        CloudType& owner
+    );
 
 
     // Member Functions
@@ -144,105 +143,115 @@ public:
             const dictionary& coeffDict() const;
 
             //- Return the carrier phase thermo package
-            const hCombustionThermo& carrierThermo() const;
+            const multiComponentMixture<typename CloudType::thermoType>&
+                mcCarrierThermo() const;
 
-            //- Return the gases
-            const PtrList<specieReactingProperties>& gases() const;
 
-            //- Return the global liquids
-            const liquidMixture& liquids() const;
+            // Composition lists
 
-            //- Return the global solids
-            const solidMixture& solids() const;
+                //- Return the global (additional) liquids
+                const liquidMixture& liquids() const;
 
-            //- Return the list of composition names
-            virtual const wordList compositionNames() const = 0;
+                //- Return the global (additional) solids
+                const solidMixture& solids() const;
 
-            //- Return the list of gas names
-            virtual const wordList& gasNames() const = 0;
+                //- Return the list of phase properties
+                const phasePropertiesList& phaseProps() const;
 
-            //- Return local id of gas based on gasName
-            virtual label gasLocalId(const word& gasName) const = 0;
+                //- Return the number of phases
+                label nPhase() const;
 
-            //- Return global id of gas based on gasName
-            virtual label gasGlobalId(const word& gasName) const = 0;
 
-            //- Return the list indices of gases in global thermo list
-            virtual const labelList& gasGlobalIds() const = 0;
+            // Phase properties
 
-            //- Return the list of gas mass fractions
-            virtual const scalarField& YGas0() const = 0;
+                //- Return the list of phase type names
+                //  If only 1 phase, return the component names of that phase
+                const wordList& phaseTypes() const;
 
-            //- Return the list of liquid names
-            virtual const wordList& liquidNames() const = 0;
+                //- Return the list of state labels (s), (l), (g) etc.
+                const wordList& stateLabels() const;
 
-            //- Return local id of liquid based on liquidName
-            virtual label liquidLocalId(const word& liquidName) const = 0;
+                //- Return the list of component names for phaseI
+                const wordList& componentNames(const label phaseI) const;
 
-            //- Return global id of liquid based on liquidName
-            virtual label liquidGlobalId(const word& liquidName) const = 0;
+                //- Return global id of component cmptName in carrier thermo
+                label globalCarrierId(const word& cmptName) const;
 
-            //- Return the list indices of liquid in global thermo list
-            virtual const labelList& liquidGlobalIds() const = 0;
+                //- Return global id of component cmptName in phase phaseI
+                label globalId(const label phaseI, const word& cmptName) const;
 
-            //- Return the list of liquid mass fractions
-            virtual const scalarField& YLiquid0() const = 0;
+                //- Return global ids of for phase phaseI
+                const labelList& globalIds(const label phaseI) const;
 
-            //- Return the list of solid names
-            virtual const wordList& solidNames() const = 0;
+                //- Return local id of component cmptName in phase phaseI
+                label localId(const label phaseI, const word& cmptName) const;
 
-            //- Return local id of solid based on solidName
-            virtual label solidLocalId(const word& solidName) const = 0;
+                //- Return global carrier id of component given local id
+                label localToGlobalCarrierId
+                (
+                    const label phaseI,
+                    const label id
+                ) const;
 
-            //- Return global id of solid based on solidName
-            virtual label solidGlobalId(const word& solidName) const = 0;
+                //- Return the list of phase phaseI mass fractions
+                const scalarField& Y0(const label phaseI) const;
 
-            //- Return the list indices of solids in global thermo list
-            virtual const labelList& solidGlobalIds() const = 0;
+                //- Return the list of phase phaseI volume fractions fractions
+                //  based on supplied mass fractions Y
+                scalarField X
+                (
+                    const label phaseI,
+                    const scalarField& Y
+                ) const;
 
-            //- Return the list of solid mass fractions
-            virtual const scalarField& YSolid0() const = 0;
 
-            //- Return the list of mixture mass fractions
-            virtual const scalarField& YMixture0() const = 0;
+            // Mixture properties
 
-            //- Return the gas constant for the gas mixture
-            virtual scalar RGas(const scalarField& YGas) const = 0;
+                //- Return the list of mixture mass fractions
+                //  If only 1 phase, return component fractions of that phase
+                virtual const scalarField& YMixture0() const = 0;
 
-            //- Return enthalpy for the gas mixture [energy per unit mass]
-            virtual scalar HGas
-            (
-                 const scalarField& YGas,
-                 const scalar T
-            ) const = 0;
+                // Indices of gas, liquid and solid phases in phase properties
+                // list - returns -1 if not applicable
 
-            //- Return enthalpy for the solid mixture [energy per unit mass]
-            virtual scalar HSolid
-            (
-                const scalarField& YSolid,
-                const scalar T
-            ) const = 0;
+                    //- Gas id
+                    virtual label idGas() const = 0;
+
+                    //- Liquid id
+                    virtual label idLiquid() const = 0;
+
+                    //- Solid id
+                    virtual label idSolid() const = 0;
 
-            //- Return specific heat caparcity for the gas mixture
-            virtual scalar cpGas
+
+        // Evaluation
+
+            //- Return enthalpy for the phase phaseI
+            virtual scalar H
             (
-                 const scalarField& YGas,
-                 const scalar T
-            ) const = 0;
+                const label phaseI,
+                const scalarField& Y,
+                const scalar p,
+                const scalar T
+            ) const;
 
-            //- Return specific heat caparcity for the liquid mixture
-            virtual scalar cpLiquid
+            //- Return specific heat caoacity for the phase phaseI
+            virtual scalar cp
             (
-                const scalarField& YLiquid,
+                const label phaseI,
+                const scalarField& Y,
                 const scalar p,
                 const scalar T
-            ) const = 0;
+            ) const;
 
-            //- Return specific heat caparcity for the solid mixture
-            virtual scalar cpSolid
+            //- Return latent heat for the phase phaseI
+            virtual scalar L
             (
-                const scalarField& YSolid
-            ) const = 0;
+                const label phaseI,
+                const scalarField& Y,
+                const scalar p,
+                const scalar T
+            ) const;
 };
 
 
@@ -267,13 +276,18 @@ public:
     );
 
 
-#define makeCompositionModelType(SS, CloudType, ParcelType)                   \
+#define makeCompositionModelThermoType(SS, CloudType, ParcelType, ThermoType) \
                                                                               \
-    defineNamedTemplateTypeNameAndDebug(SS<CloudType<ParcelType> >, 0);       \
+    defineNamedTemplateTypeNameAndDebug                                       \
+    (                                                                         \
+        SS<CloudType<ParcelType<ThermoType> > >,                              \
+        0                                                                     \
+    );                                                                        \
                                                                               \
-    CompositionModel<CloudType<ParcelType> >::                                \
-        adddictionaryConstructorToTable<SS<CloudType<ParcelType> > >          \
-            add##SS##CloudType##ParcelType##ConstructorToTable_;
+    CompositionModel<CloudType<ParcelType<ThermoType> > >::                   \
+        adddictionaryConstructorToTable                                       \
+            <SS<CloudType<ParcelType<ThermoType> > > >                        \
+            add##SS##CloudType##ParcelType##ThermoType##ConstructorToTable_;
 
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/CompositionModel/NewCompositionModel.C b/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/CompositionModel/NewCompositionModel.C
index 7fd051cd73a8f697f75071ba816828198a2316e8..81d338176c1566f32a42aa47b41d78a4ea4b317c 100644
--- a/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/CompositionModel/NewCompositionModel.C
+++ b/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/CompositionModel/NewCompositionModel.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -36,34 +36,31 @@ Foam::CompositionModel<CloudType>::New
     CloudType& owner
 )
 {
-    word ReactingCompositionModelType
-    (
-        dict.lookup("CompositionModel")
-    );
+    word CompositionModelType(dict.lookup("CompositionModel"));
 
-    Info<< "Selecting CompositionModel "
-        << ReactingCompositionModelType << endl;
+    Info<< "Selecting CompositionModel " << CompositionModelType << endl;
 
     typename dictionaryConstructorTable::iterator cstrIter =
-        dictionaryConstructorTablePtr_->find(ReactingCompositionModelType);
+        dictionaryConstructorTablePtr_->find(CompositionModelType);
 
     if (cstrIter == dictionaryConstructorTablePtr_->end())
     {
         FatalErrorIn
         (
             "CompositionModel<CloudType>::New"
-            "(const dictionary&, CloudType&)"
-        )
-            << "Unknown ReactingCompositionModelType type "
-            << ReactingCompositionModelType
+            "("
+                "const dictionary&, "
+                "CloudType&"
+            ")"
+        )   << "Unknown CompositionModelType type "
+            << CompositionModelType
             << ", constructor not in hash table" << nl << nl
-            << "    Valid CompositionModel types are :" << nl
-            << dictionaryConstructorTablePtr_->toc()
+            << "    Valid CompositionModel types are:" << nl
+            << dictionaryConstructorTablePtr_->toc() << nl
             << exit(FatalError);
     }
 
-    return autoPtr<CompositionModel<CloudType> >
-        (cstrIter()(dict, owner));
+    return autoPtr<CompositionModel<CloudType> >(cstrIter()(dict, owner));
 }
 
 
diff --git a/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/SingleMixtureFraction/SingleMixtureFraction.C b/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/SingleMixtureFraction/SingleMixtureFraction.C
index afbaef739575eb837c5bba9912c5d37ec6e2df8d..64240eab73ef0ec1e2fb75fd1126eed020d7cdba 100644
--- a/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/SingleMixtureFraction/SingleMixtureFraction.C
+++ b/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/SingleMixtureFraction/SingleMixtureFraction.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -26,356 +26,130 @@ License
 
 #include "SingleMixtureFraction.H"
 
-// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
 
 template<class CloudType>
-Foam::SingleMixtureFraction<CloudType>::SingleMixtureFraction
-(
-    const dictionary& dict,
-    CloudType& owner
-)
-:
-    CompositionModel<CloudType>(dict, owner, typeName),
-
-    gasNames_(this->coeffDict().lookup("gasNames")),
-    gasGlobalIds_(gasNames_.size(), -1),
-    YGas0_(this->coeffDict().lookup("YGas0")),
-    YGasTot0_(readScalar(this->coeffDict().lookup("YGasTot0"))),
-
-    liquidNames_(this->coeffDict().lookup("liquidNames")),
-    liquidGlobalIds_(liquidNames_.size(), -1),
-    YLiquid0_(this->coeffDict().lookup("YLiquid0")),
-    YLiquidTot0_(readScalar(this->coeffDict().lookup("YLiquidTot0"))),
-
-    solidNames_(this->coeffDict().lookup("solidNames")),
-    solidGlobalIds_(solidNames_.size(), -1),
-    YSolid0_(this->coeffDict().lookup("YSolid0")),
-    YSolidTot0_(readScalar(this->coeffDict().lookup("YSolidTot0"))),
-
-    YMixture0_(3)
+void Foam::SingleMixtureFraction<CloudType>::constructIds()
 {
-    // Construct gasGlobalIds_ list
-    forAll(gasNames_, i)
+    forAll(this->phaseProps(), phaseI)
     {
-        forAll (this->carrierThermo().composition().Y(), j)
+        switch (this->phaseProps()[phaseI].phase())
         {
-            word specieName(this->carrierThermo().composition().Y()[j].name());
-
-            if (specieName == gasNames_[i])
+            case phaseProperties::GAS:
             {
-                gasGlobalIds_[i] = j;
+                idGas_ = phaseI;
                 break;
             }
-        }
-        if (gasGlobalIds_[i] == -1)
-        {
-            Info<< "\nThermo package species composition comprises:" << endl;
-            forAll (this->carrierThermo().composition().Y(), k)
-            {
-                Info<< this->carrierThermo().composition().Y()[k].name()
-                    << endl;
-            }
-
-            FatalErrorIn
-            (
-                "Foam::SingleMixtureFraction<CloudType>::SingleMixtureFraction"
-                "(const dictionary&, CloudType&)"
-            )   << "Could not find gas species " << gasNames_[i]
-                << " in species list" <<  exit(FatalError);
-        }
-    }
-
-    // Construct liquidGlobalIds_ list
-    forAll(liquidNames_, i)
-    {
-        forAll (this->liquids().components(), j)
-        {
-            word specieName(this->liquids().components()[j]);
-
-            if (specieName == liquidNames_[i])
+            case phaseProperties::LIQUID:
             {
-                liquidGlobalIds_[i] = j;
+                idLiquid_ = phaseI;
                 break;
             }
-        }
-        if (liquidGlobalIds_[i] == -1)
-        {
-            Info<< "\nLiquid mixture species composition comprises:" << endl;
-            forAll (this->liquids().components(), k)
-            {
-                Info<< this->liquids().components()[k] << endl;
-            }
-
-            FatalErrorIn
-            (
-                "Foam::SingleMixtureFraction<CloudType>::SingleMixtureFraction"
-                "(const dictionary&, CloudType&)"
-            )   << "Could not find liquid species " << liquidNames_[i]
-                << " in species list" <<  exit(FatalError);
-        }
-    }
-
-    // Construct solidGlobalIds_ list
-    forAll(solidNames_, i)
-    {
-        forAll (this->solids().components(), j)
-        {
-            word specieName(this->solids().components()[j]);
-
-            if (specieName == solidNames_[i])
+            case phaseProperties::SOLID:
             {
-                solidGlobalIds_[i] = j;
+                idSolid_ = phaseI;
                 break;
             }
-        }
-        if (solidGlobalIds_[i] == -1)
-        {
-            Info<< "\nSolid mixture species composition comprises:" << endl;
-            forAll (this->solids().components(), k)
+            default:
             {
-                Info<< this->solids().components()[k] << endl;
+                FatalErrorIn
+                (
+                    "void Foam::SingleMixtureFraction<CloudType>::"
+                    "constructIds()"
+                )   << "Unknown phase enumeration" << nl << abort(FatalError);
             }
-
-            FatalErrorIn
-            (
-                "Foam::SingleMixtureFraction<CloudType>::SingleMixtureFraction"
-                "(const dictionary&, CloudType&)"
-            )   << "Could not find solid species " << solidNames_[i]
-                << " in species list" <<  exit(FatalError);
         }
     }
 
-    // Set mixture fractions
-    YMixture0_[0] = YGasTot0_;
-    YMixture0_[1] = YLiquidTot0_;
-    YMixture0_[2] = YSolidTot0_;
-
-    // Check that total mass fractions = 1
-
-    if (YGas0_.size())
+    if (idGas_ < 0)
     {
-        if (mag(sum(YGas0_) - 1) > SMALL)
-        {
-            FatalErrorIn
-            (
-                "Foam::SingleMixtureFraction<CloudType>::SingleMixtureFraction"
-                "(const dictionary&, CloudType&)"
-            )<< "Mass fractions of YGas0 must sum to unity"
-             <<  exit(FatalError);
-        }
+        FatalErrorIn("Foam::SingleMixtureFraction<CloudType>::constructIds()")
+            << "No gas phase found in phase list:" << nl
+            << this->phaseTypes() << nl << endl;
     }
-    else
+    if (idLiquid_ < 0)
     {
-        YMixture0_[0] = 0.0;
+        FatalErrorIn("Foam::SingleMixtureFraction<CloudType>::constructIds()")
+            << "No liquid phase found in phase list:" << nl
+            << this->phaseTypes() << nl << endl;
     }
-
-    if (YLiquid0_.size())
+    if (idSolid_ < 0)
     {
-        if (mag(sum(YLiquid0_) - 1) > SMALL)
-        {
-            FatalErrorIn
-            (
-                "Foam::SingleMixtureFraction<CloudType>::SingleMixtureFraction"
-                "(const dictionary&, CloudType&)"
-            )<< "Mass fractions of YLiquid0 must sum to unity"
-             <<  exit(FatalError);
-        }
-    }
-    else
-    {
-        YMixture0_[1] = 0.0;
-    }
-
-    if (YSolid0_.size())
-    {
-        if (mag(sum(YSolid0_) - 1) > SMALL)
-        {
-            FatalErrorIn
-            (
-                "Foam::SingleMixtureFraction<CloudType>::SingleMixtureFraction"
-                "(const dictionary&, CloudType&)"
-            )<< "Mass fractions of YSolid0 must sum to unity"
-             <<  exit(FatalError);
-        }
-    }
-    else
-    {
-        YMixture0_[2] = 0.0;
-    }
-
-    // Check total mixture fraction sums to 1
-    if (mag(sum(YMixture0_) - 1) > SMALL)
-    {
-        FatalErrorIn
-        (
-            "Foam::SingleMixtureFraction<CloudType>::SingleMixtureFraction"
-            "(const dictionary&, CloudType&)"
-        )   << "Mass fractions YGasTot0 + YSolidTot0 + YSolidTot0 must sum "
-            << "to unity" <<  exit(FatalError);
+        FatalErrorIn("Foam::SingleMixtureFraction<CloudType>::constructIds()")
+            << "No solid phase found in phase list:" << nl
+            << this->phaseTypes() << nl << endl;
     }
 }
 
 
-// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
 template<class CloudType>
-Foam::SingleMixtureFraction<CloudType>::~SingleMixtureFraction()
-{}
-
-
-// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+Foam::SingleMixtureFraction<CloudType>::SingleMixtureFraction
+(
+    const dictionary& dict,
+    CloudType& owner
+)
+:
+    CompositionModel<CloudType>(dict, owner, typeName),
 
-template<class CloudType>
-const Foam::wordList
-Foam::SingleMixtureFraction<CloudType>::compositionNames() const
-{
-    wordList names(3);
-    names[0] = "Gas";
-    names[1] = "Liquid";
-    names[2] = "Solid";
-    return names;
-}
+    idGas_(-1),
+    idLiquid_(-1),
+    idSolid_(-1),
 
-template<class CloudType>
-const Foam::wordList&
-Foam::SingleMixtureFraction<CloudType>::gasNames() const
+    YMixture0_(3)
 {
-     return gasNames_;
-}
+    constructIds();
 
-
-template<class CloudType>
-Foam::label
-Foam::SingleMixtureFraction<CloudType>::gasLocalId(const word& gasName) const
-{
-    forAll(gasNames_, i)
+    if (this->phaseProps().size() != 3)
     {
-        if (gasName == gasNames_[i])
-        {
-            return i;
-        }
+        FatalErrorIn
+        (
+            "Foam::SingleMixtureFraction<CloudType>::"
+            "SingleMixtureFraction"
+            "("
+                "const dictionary&, "
+                "CloudType&"
+            ")"
+        )   << "Incorrect numebr of phases: " << nl
+            << "    Please specify 1 gas, 1 liquid and 1 solid" << nl
+            << exit(FatalError);
     }
 
-    WarningIn
-    (
-        "Foam::label SingleMixtureFraction<CloudType>::"
-        "gasLocalId(const word& gasName) const"
-    )<< "Gas name " << gasName << " not found in gasNames_"
-     << endl;
+    this->coeffDict().lookup("YGasTot0") >> YMixture0_[idGas_];
+    this->coeffDict().lookup("YLiquidTot0") >> YMixture0_[idLiquid_];
+    this->coeffDict().lookup("YSolidTot0") >> YMixture0_[idSolid_];
 
-    return -1;
-}
-
-
-template<class CloudType>
-Foam::label
-Foam::SingleMixtureFraction<CloudType>::gasGlobalId(const word& gasName) const
-{
-    forAll(gasNames_, i)
+    if (mag(sum(YMixture0_) - 1.0) > SMALL)
     {
-        if (gasName == gasNames_[i])
-        {
-            return gasGlobalIds_[i];
-        }
+        FatalErrorIn
+        (
+            "Foam::SingleMixtureFraction<CloudType>::"
+            "SingleMixtureFraction"
+            "("
+                "const dictionary&, "
+                "CloudType&"
+            ")"
+        )   << "Sum of phases should be 1. Phase fractions:" << nl
+            << YMixture0_ << nl << exit(FatalError);
     }
-
-    WarningIn
-    (
-        "Foam::label SingleMixtureFraction<CloudType>::"
-        "gasGlobalId(const word& gasName) const"
-    )<< "Gas name " << gasName << " not found in gasNames_"
-     << endl;
-
-    return -1;
-}
-
-
-template<class CloudType>
-const Foam::labelList&
-Foam::SingleMixtureFraction<CloudType>::gasGlobalIds() const
-{
-    return gasGlobalIds_;
-}
-
-
-template<class CloudType>
-const Foam::scalarField&
-Foam::SingleMixtureFraction<CloudType>::YGas0() const
-{
-    return YGas0_;
-}
-
-
-template<class CloudType>
-Foam::scalar Foam::SingleMixtureFraction<CloudType>::YGasTot0() const
-{
-    return YGasTot0_;
 }
 
 
-template<class CloudType>
-const Foam::wordList&
-Foam::SingleMixtureFraction<CloudType>::liquidNames() const
-{
-     return liquidNames_;
-}
-
-
-template<class CloudType>
-Foam::label Foam::SingleMixtureFraction<CloudType>::liquidLocalId
-(
-    const word& liquidName
-) const
-{
-    forAll(liquidNames_, i)
-    {
-        if (liquidName == liquidNames_[i])
-        {
-            return i;
-        }
-    }
-
-    WarningIn
-    (
-        "Foam::label SingleMixtureFraction<CloudType>::"
-        "liquidLocalId(const word& liquidName) const"
-    )<< "Liquid name " << liquidName << " not found in liquidNames_"
-     << endl;
-
-    return -1;
-}
-
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
 template<class CloudType>
-Foam::label Foam::SingleMixtureFraction<CloudType>::liquidGlobalId
-(
-    const word& liquidName
-) const
-{
-    forAll(liquidNames_, i)
-    {
-        if (liquidName == liquidNames_[i])
-        {
-            return liquidGlobalIds_[i];
-        }
-    }
+Foam::SingleMixtureFraction<CloudType>::~SingleMixtureFraction()
+{}
 
-    WarningIn
-    (
-        "Foam::label SingleMixtureFraction<CloudType>::"
-        "liquidGlobalId(const word& liquidName) const"
-    )<< "Liquid name " << liquidName << " not found in liquidNames_"
-     << endl;
-
-    return -1;
-}
 
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 template<class CloudType>
-const Foam::labelList&
-Foam::SingleMixtureFraction<CloudType>::liquidGlobalIds() const
+const Foam::scalarField&
+Foam::SingleMixtureFraction<CloudType>::YGas0() const
 {
-    return liquidGlobalIds_;
+    return this->phaseProps()[idGas_].Y();
 }
 
 
@@ -383,81 +157,7 @@ template<class CloudType>
 const Foam::scalarField&
 Foam::SingleMixtureFraction<CloudType>::YLiquid0() const
 {
-    return YLiquid0_;
-}
-
-
-template<class CloudType>
-Foam::scalar Foam::SingleMixtureFraction<CloudType>::YLiquidTot0() const
-{
-    return YLiquidTot0_;
-}
-
-
-template<class CloudType>
-const Foam::wordList&
-Foam::SingleMixtureFraction<CloudType>::solidNames() const
-{
-    return solidNames_;
-}
-
-
-template<class CloudType>
-Foam::label Foam::SingleMixtureFraction<CloudType>::solidLocalId
-(
-    const word& solidName
-) const
-{
-    forAll(solidNames_, i)
-    {
-        if (solidName == solidNames_[i])
-        {
-            return i;
-        }
-    }
-
-    WarningIn
-    (
-        "Foam::label SingleMixtureFraction<CloudType>::"
-        "SolididLocalId(const word& solidName) const"
-    )<< "Solid name " << solidName << " not found in solidNames_"
-     << endl;
-
-    return -1;
-}
-
-
-template<class CloudType>
-Foam::label
-Foam::SingleMixtureFraction<CloudType>::solidGlobalId
-(
-    const word& solidName
-) const
-{
-    forAll(solidNames_, i)
-    {
-        if (solidName == solidNames_[i])
-        {
-            return solidGlobalIds_[i];
-        }
-    }
-
-    WarningIn
-    (
-        "Foam::label SingleMixtureFraction<CloudType>::"
-        "solidGlobalId(const word& solidName) const"
-    )<< "Solid name " << solidName << " not found in solidNames_"
-     << endl;
-
-    return -1;
-}
-
-
-template<class CloudType>
-const Foam::labelList&
-Foam::SingleMixtureFraction<CloudType>::solidGlobalIds() const
-{
-    return solidGlobalIds_;
+    return this->phaseProps()[idLiquid_].Y();
 }
 
 
@@ -465,15 +165,7 @@ template<class CloudType>
 const Foam::scalarField&
 Foam::SingleMixtureFraction<CloudType>::YSolid0() const
 {
-    return YSolid0_;
-}
-
-
-template<class CloudType>
-Foam::scalar
-Foam::SingleMixtureFraction<CloudType>::YSolidTot0() const
-{
-    return YSolidTot0_;
+    return this->phaseProps()[idSolid_].Y();
 }
 
 
@@ -486,115 +178,23 @@ Foam::SingleMixtureFraction<CloudType>::YMixture0() const
 
 
 template<class CloudType>
-Foam::scalar Foam::SingleMixtureFraction<CloudType>::RGas
-(
-    const scalarField& YGas
-) const
+Foam::label Foam::SingleMixtureFraction<CloudType>::idGas() const
 {
-    scalar RGasMixture = 0.0;
-    forAll(YGas, i)
-    {
-        label id = gasGlobalIds_[i];
-        RGasMixture += YGas[i]*this->gases()[id].R();
-    }
-    return RGasMixture;
+    return idGas_;
 }
 
 
 template<class CloudType>
-Foam::scalar Foam::SingleMixtureFraction<CloudType>::HGas
-(
-    const scalarField& YGas,
-    const scalar T
-)
-const
+Foam::label Foam::SingleMixtureFraction<CloudType>::idLiquid() const
 {
-    scalar HMixture = 0.0;
-    forAll(YGas, i)
-    {
-        label id = gasGlobalIds_[i];
-        HMixture += YGas[i]*this->gases()[id].H(T);
-    }
-    return HMixture;
+    return idLiquid_;
 }
 
 
 template<class CloudType>
-Foam::scalar Foam::SingleMixtureFraction<CloudType>::HSolid
-(
-    const scalarField& YSolid,
-    const scalar T
-)
-const
+Foam::label Foam::SingleMixtureFraction<CloudType>::idSolid() const
 {
-    scalar HMixture = 0.0;
-    forAll(YSolid, i)
-    {
-        label id = solidGlobalIds_[i];
-        HMixture +=
-            YSolid[i]
-           *(
-                this->solids().properties()[id].Hf()
-              + this->solids().properties()[id].cp()*T
-            );
-    }
-    return HMixture;
-}
-
-
-template<class CloudType>
-Foam::scalar Foam::SingleMixtureFraction<CloudType>::cpGas
-(
-    const scalarField& YGas,
-    const scalar T
-)
-const
-{
-    scalar cpMixture = 0.0;
-    forAll(YGas, i)
-    {
-        label id = gasGlobalIds_[i];
-        cpMixture += YGas[i]*this->gases()[id].Cp(T);
-    }
-    return cpMixture;
-}
-
-
-template<class CloudType>
-Foam::scalar Foam::SingleMixtureFraction<CloudType>::cpLiquid
-(
-    const scalarField& YLiquid,
-    const scalar p,
-    const scalar T
-)
-const
-{
-    scalar cpMixture = 0.0;
-    forAll(YLiquid, i)
-    {
-        label id = liquidGlobalIds_[i];
-        cpMixture += YLiquid[i]*this->liquids().properties()[id].cp(p, T);
-    }
-
-    return cpMixture;
-}
-
-
-template<class CloudType>
-Foam::scalar Foam::SingleMixtureFraction<CloudType>::cpSolid
-(
-    const scalarField& YSolid
-)
-const
-{
-    scalar cpMixture = 0.0;
-    forAll(YSolid, i)
-    {
-        label id = solidGlobalIds_[i];
-        cpMixture += YSolid[i]*this->solids().properties()[id].cp();
-    }
-
-    return cpMixture;
+    return idSolid_;
 }
 
 
diff --git a/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/SingleMixtureFraction/SingleMixtureFraction.H b/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/SingleMixtureFraction/SingleMixtureFraction.H
index 6808b3503b0e2a07886e8e140ffb723e9142bb15..3555f616f7433c90b261d0403f3f2656ff1582c4 100644
--- a/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/SingleMixtureFraction/SingleMixtureFraction.H
+++ b/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/SingleMixtureFraction/SingleMixtureFraction.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -25,10 +25,8 @@ License
 Class
     Foam::SingleMixtureFraction
 
-
 Description
-    Templated parcel single mixture fraction class
-    - Each phase sums to a mass fraction of 1
+    Templated parcel multi-phase, multi-component class
 
 SourceFiles
     SingleMixtureFraction.C
@@ -54,68 +52,31 @@ class SingleMixtureFraction
 :
     public CompositionModel<CloudType>
 {
-
     // Private data
 
-        //- Parcel properties
-
-            //- List of gas names
-            const wordList gasNames_;
-
-            //- Return local id of gas based on gasName
-            label gasLocalId(const word& gasName) const;
-
-            //- Return global id of gas based on gasName
-            label gasGlobalId(const word& gasName) const;
-
-            //- List of IDs of gases in global list
-            labelList gasGlobalIds_;
-
-            //- Initial mass fractions of gases
-            const scalarField YGas0_;
-
-            //- Initial total mass fractions of gases
-            const scalar YGasTot0_;
-
-            //- List of liquid names
-            const wordList liquidNames_;
+        // Indices of the phases
 
-            //- Return local id of liquid based on liquidName
-            label liquidLocalId(const word& liquidName) const;
+            //- Gas
+            label idGas_;
 
-            //- Return global id of liquid based on liquidName
-            label liquidGlobalId(const word& liquidName) const;
+            //- Liquid
+            label idLiquid_;
 
-            //- List of IDs of liquids in global list
-            labelList liquidGlobalIds_;
+            //- Solid
+            label idSolid_;
 
-            //- Initial mass fractions of liquids
-            const scalarField YLiquid0_;
 
-            //- Initial total mass fractions of liquids
-            const scalar YLiquidTot0_;
+       // Mixture properties
 
-            //- List of solids species
-            const wordList solidNames_;
-
-            //- Return local id of solid based on solidName
-            label solidLocalId(const word& solidName) const;
-
-            //- Return global id of solid based on solidName
-            label solidGlobalId(const word& solidName) const;
-
-            //- List of IDs of solids in global list
-            labelList solidGlobalIds_;
+            //- Phase component total fractions
+            scalarField YMixture0_;
 
-            //- Initial mass fractions of solids
-            const scalarField YSolid0_;
 
-            //- Initial total mass fractions of solids
-            const scalar YSolidTot0_;
+    // Private member functions
 
-            //- Initial total mass fractions of the mixture
-            //  Index 0 = gas, 1 = liquid, 2 = solid
-            scalarField YMixture0_;
+        //- Construct the indices and check correct specification of
+        //  1 gas, 1 liquid and 1 solid
+        void constructIds();
 
 
 public:
@@ -127,86 +88,60 @@ public:
     // Constructors
 
         //- Construct from dictionary
-        SingleMixtureFraction
-        (
-            const dictionary& dict,
-            CloudType& owner
-        );
-
+        SingleMixtureFraction(const dictionary& dict, CloudType& owner);
 
-    // Destructor
 
-        virtual ~SingleMixtureFraction();
+    //- Destructor
+    virtual ~SingleMixtureFraction();
 
 
     // Member Functions
 
         // Access
 
-            //- Return the list of composition names
-            const wordList compositionNames() const;
-
-            //- Return the list of gas names
-            const wordList& gasNames() const;
-
-            //- Return the list indices of gases in global thermo list
-            const labelList& gasGlobalIds() const;
+            // Gas properties
 
-            //- Return the list of gas mass fractions
-            const scalarField& YGas0() const;
+                //- Return the list of gas mass fractions
+                const scalarField& YGas0() const;
 
-            //- Return the total gas mass fraction
-            scalar YGasTot0() const;
+                //- Return the total gas mass fraction
+                scalar YGasTot0() const;
 
-            //- Return the list of liquid names
-            const wordList& liquidNames() const;
 
-            //- Return the list indices of liquid in global thermo list
-            const labelList& liquidGlobalIds() const;
+            // Liquid properties
 
-            //- Return the list of liquid mass fractions
-            const scalarField& YLiquid0() const;
+                //- Return the list of liquid mass fractions
+                const scalarField& YLiquid0() const;
 
-            //- Return the total liquid mass fraction
-            scalar YLiquidTot0() const;
+                //- Return the total liquid mass fraction
+                scalar YLiquidTot0() const;
 
-             //- Return the list of solid names
-            const wordList& solidNames() const;
 
-            //- Return the list indices of solids in global thermo list
-            const labelList& solidGlobalIds() const;
+            // Solid properties
 
-            //- Return the list of solid mass fractions
-            const scalarField& YSolid0() const;
+                //- Return the list of solid mass fractions
+                const scalarField& YSolid0() const;
 
-            //- Return the total solid mass fraction
-            scalar YSolidTot0() const;
+                //- Return the total solid mass fraction
+                scalar YSolidTot0() const;
 
-            //- Return the list of mixture mass fractions
-            const scalarField& YMixture0() const;
 
-            //- Return the gas constant for the gas mixture
-            scalar RGas(const scalarField& YGas) const;
+            // Mixture properties
 
-            //- Return enthalpy for the gas mixture [energy per unit mass]
-            scalar HGas(const scalarField& YGas, const scalar T) const;
+                //- Return the list of mixture mass fractions
+                virtual const scalarField& YMixture0() const;
 
-            //- Return enthalpy for the solid mixture [energy per unit mass]
-            scalar HSolid(const scalarField& YSolid, const scalar T) const;
+                // Indices of gas, liquid and solid phases in phase properties
+                // list
 
-            //- Return specific heat caparcity for the gas mixture
-            scalar cpGas(const scalarField& YGas, const scalar T) const;
+                    //- Gas id
+                    virtual label idGas() const;
 
-            //- Return specific heat caparcity for the liquid mixture
-            scalar cpLiquid
-            (
-                const scalarField& YLiquid,
-                const scalar p,
-                const scalar T
-            ) const;
+                    //- Liquid id
+                    virtual label idLiquid() const;
 
-            //- Return specific heat caparcity for the solid mixture
-            scalar cpSolid(const scalarField& YSolid) const;
+                    //- Solid id
+                    virtual label idSolid() const;
 };
 
 
diff --git a/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/SinglePhaseMixture/SinglePhaseMixture.C b/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/SinglePhaseMixture/SinglePhaseMixture.C
new file mode 100644
index 0000000000000000000000000000000000000000..5be1ce0a495cb03f09176330c3f3ae4b03ef0466
--- /dev/null
+++ b/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/SinglePhaseMixture/SinglePhaseMixture.C
@@ -0,0 +1,173 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "SinglePhaseMixture.H"
+
+// * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
+
+template<class CloudType>
+void Foam::SinglePhaseMixture<CloudType>::constructIds()
+{
+    if (this->phaseProps().size() == 0)
+    {
+        FatalErrorIn
+        (
+            "void Foam::SinglePhaseMixture<CloudType>::constructIds()"
+        )   << "Phase list is empty" << nl << exit(FatalError);
+    }
+    else if (this->phaseProps().size() > 1)
+    {
+        FatalErrorIn
+        (
+            "void Foam::SinglePhaseMixture<CloudType>::constructIds()"
+        )   << "Only one phase permitted" << nl << exit(FatalError);
+    }
+
+    switch (this->phaseProps()[0].phase())
+    {
+        case phaseProperties::GAS:
+        {
+            idGas_ = 0;
+            break;
+        }
+        case phaseProperties::LIQUID:
+        {
+            idLiquid_ = 0;
+            break;
+        }
+        case phaseProperties::SOLID:
+        {
+            idSolid_ = 0;
+            break;
+        }
+        default:
+        {
+            FatalErrorIn
+            (
+                "void Foam::SinglePhaseMixture<CloudType>::constructIds()"
+            )   << "Unknown phase enumeration" << nl << abort(FatalError);
+        }
+    }
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template<class CloudType>
+Foam::SinglePhaseMixture<CloudType>::SinglePhaseMixture
+(
+    const dictionary& dict,
+    CloudType& owner
+)
+:
+    CompositionModel<CloudType>(dict, owner, typeName),
+    idGas_(-1),
+    idLiquid_(-1),
+    idSolid_(-1)
+{
+    constructIds();
+}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+template<class CloudType>
+Foam::SinglePhaseMixture<CloudType>::~SinglePhaseMixture()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+template<class CloudType>
+const Foam::scalarField&
+Foam::SinglePhaseMixture<CloudType>::YGas0() const
+{
+    notImplemented
+    (
+        "const Foam::scalarField& "
+        "Foam::SinglePhaseMixture<CloudType>::YGas0() const"
+    );
+    return this->phaseProps()[0].Y();
+}
+
+
+template<class CloudType>
+const Foam::scalarField&
+Foam::SinglePhaseMixture<CloudType>::YLiquid0() const
+{
+    notImplemented
+    (
+        "const Foam::scalarField& "
+        "Foam::SinglePhaseMixture<CloudType>::YLiquid0() const"
+    );
+    return this->phaseProps()[0].Y();
+}
+
+
+template<class CloudType>
+const Foam::scalarField&
+Foam::SinglePhaseMixture<CloudType>::YSolid0() const
+{
+    notImplemented
+    (
+        "const Foam::scalarField& "
+        "Foam::SinglePhaseMixture<CloudType>::YSolid0() const"
+    );
+    return this->phaseProps()[0].Y();
+}
+
+
+template<class CloudType>
+const Foam::scalarField&
+Foam::SinglePhaseMixture<CloudType>::YMixture0() const
+{
+    return this->phaseProps()[0].Y();
+}
+
+
+template<class CloudType>
+Foam::label Foam::SinglePhaseMixture<CloudType>::idGas() const
+{
+    return idGas_;
+}
+
+
+template<class CloudType>
+Foam::label Foam::SinglePhaseMixture<CloudType>::idLiquid() const
+{
+    return idLiquid_;
+}
+
+
+template<class CloudType>
+Foam::label Foam::SinglePhaseMixture<CloudType>::idSolid() const
+{
+    return idSolid_;
+}
+
+
+// ************************************************************************* //
+
diff --git a/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/SinglePhaseMixture/SinglePhaseMixture.H b/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/SinglePhaseMixture/SinglePhaseMixture.H
new file mode 100644
index 0000000000000000000000000000000000000000..f7fda36a90829efd6e821d9b5638f28c7add25b4
--- /dev/null
+++ b/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/SinglePhaseMixture/SinglePhaseMixture.H
@@ -0,0 +1,156 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::SinglePhaseMixture
+
+Description
+    Templated parcel single phase, multi-component class
+
+SourceFiles
+    SinglePhaseMixture.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef SinglePhaseMixture_H
+#define SinglePhaseMixture_H
+
+#include "CompositionModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+                      Class SinglePhaseMixture Declaration
+\*---------------------------------------------------------------------------*/
+
+template<class CloudType>
+class SinglePhaseMixture
+:
+    public CompositionModel<CloudType>
+{
+    // Private data
+
+        // Indices of the phases - only 1 will be set
+
+            //- Gas
+            label idGas_;
+
+            //- Liquid
+            label idLiquid_;
+
+            //- Solid
+            label idSolid_;
+
+
+    // Private member functions
+
+        //- Construct the indices and check correct specification of
+        //  1 gas or 1 liquid or 1 solid
+        void constructIds();
+
+
+public:
+
+    //- Runtime type information
+    TypeName("SinglePhaseMixture");
+
+
+    // Constructors
+
+        //- Construct from dictionary
+        SinglePhaseMixture(const dictionary& dict, CloudType& owner);
+
+
+    //- Destructor
+    virtual ~SinglePhaseMixture();
+
+
+    // Member Functions
+
+        // Access
+
+            // Gas properties
+
+                //- Return the list of gas mass fractions
+                const scalarField& YGas0() const;
+
+                //- Return the total gas mass fraction
+                scalar YGasTot0() const;
+
+
+            // Liquid properties
+
+                //- Return the list of liquid mass fractions
+                const scalarField& YLiquid0() const;
+
+                //- Return the total liquid mass fraction
+                scalar YLiquidTot0() const;
+
+
+            // Solid properties
+
+                //- Return the list of solid mass fractions
+                const scalarField& YSolid0() const;
+
+                //- Return the total solid mass fraction
+                scalar YSolidTot0() const;
+
+
+            // Mixture properties
+
+                //- Return the list of mixture mass fractions
+                virtual const scalarField& YMixture0() const;
+
+                // Indices of gas, liquid and solid phases in phase properties
+                // list
+
+                    //- Gas id
+                    virtual label idGas() const;
+
+                    //- Liquid id
+                    virtual label idLiquid() const;
+
+                    //- Solid id
+                    virtual label idSolid() const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#ifdef NoRepository
+#   include "SinglePhaseMixture.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/submodels/Reacting/InjectionModel/ReactingLookupTableInjection/ReactingLookupTableInjection.C b/src/lagrangian/intermediate/submodels/Reacting/InjectionModel/ReactingLookupTableInjection/ReactingLookupTableInjection.C
new file mode 100644
index 0000000000000000000000000000000000000000..2de0366b31230928c3cec60622aee9f8cf1b6699
--- /dev/null
+++ b/src/lagrangian/intermediate/submodels/Reacting/InjectionModel/ReactingLookupTableInjection/ReactingLookupTableInjection.C
@@ -0,0 +1,270 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "ReactingLookupTableInjection.H"
+#include "scalarIOList.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+template<class CloudType>
+Foam::label Foam::ReactingLookupTableInjection<CloudType>::INPUT_FILE_COLS = 12;
+
+// * * * * * * * * * * * * Protected Member Functions  * * * * * * * * * * * //
+
+template<class CloudType>
+Foam::label Foam::ReactingLookupTableInjection<CloudType>::parcelsToInject
+(
+    const scalar time0,
+    const scalar time1
+) const
+{
+    if ((time0 >= 0.0) && (time0 < duration_))
+    {
+        return round(injectorCells_.size()*(time1 - time0)*nParcelsPerSecond_);
+    }
+    else
+    {
+        return 0;
+    }
+}
+
+
+template<class CloudType>
+Foam::scalar Foam::ReactingLookupTableInjection<CloudType>::volumeToInject
+(
+    const scalar time0,
+    const scalar time1
+) const
+{
+    scalar volume = 0.0;
+    if ((time0 >= 0.0) && (time0 < duration_))
+    {
+        forAll(mDot_, injectorI)
+        {
+            volume += mDot_[injectorI]/rho_[injectorI]*(time1 - time0);
+        }
+    }
+
+    return volume;
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template<class CloudType>
+Foam::ReactingLookupTableInjection<CloudType>::ReactingLookupTableInjection
+(
+    const dictionary& dict,
+    CloudType& owner
+)
+:
+    InjectionModel<CloudType>(dict, owner, typeName),
+    inputFileName_(this->coeffDict().lookup("inputFile")),
+    duration_(readScalar(this->coeffDict().lookup("duration"))),
+    nParcelsPerSecond_
+    (
+        readScalar(this->coeffDict().lookup("parcelsPerSecond"))
+    ),
+    x_(0),
+    U_(0),
+    d_(0),
+    rho_(0),
+    mDot_(0),
+    T_(0),
+    cp_(0),
+    Y_(0),
+    injectorCells_(0)
+{
+    scalarListIOList injectorData
+    (
+        IOobject
+        (
+            inputFileName_,
+            owner.db().time().constant(),
+            owner.db(),
+            IOobject::MUST_READ,
+            IOobject::NO_WRITE
+        )
+    );
+
+    x_.setSize(injectorData.size());
+    U_.setSize(injectorData.size());
+    d_.setSize(injectorData.size());
+    rho_.setSize(injectorData.size());
+    mDot_.setSize(injectorData.size());
+    T_.setSize(injectorData.size());
+    cp_.setSize(injectorData.size());
+    Y_.setSize(injectorData.size());
+
+    // Populate lists
+    forAll(injectorData, injectorI)
+    {
+        if (injectorData[injectorI].size() != INPUT_FILE_COLS)
+        {
+            FatalErrorIn
+            (
+                "ReactingLookupTableInjection"
+                "("
+                    "const dictionary&,"
+                    "CloudType& owner"
+                ")"
+            )   << "Incorrect number of entries in injector specification "
+                << "- found " << injectorData[injectorI].size()
+                << ", expected a minimum of " << INPUT_FILE_COLS << ":" << nl
+                << "    x0 x1 x2 u0 u1 u2 d rho mDot T cp Y0..YN"
+                << nl << exit(FatalError);
+        }
+        x_[injectorI].component(0) = injectorData[injectorI][0];
+        x_[injectorI].component(1) = injectorData[injectorI][1];
+        x_[injectorI].component(2) = injectorData[injectorI][2];
+        U_[injectorI].component(0) = injectorData[injectorI][3];
+        U_[injectorI].component(1) = injectorData[injectorI][4];
+        U_[injectorI].component(2) = injectorData[injectorI][5];
+        d_[injectorI] = injectorData[injectorI][6];
+        rho_[injectorI] = injectorData[injectorI][7];
+        mDot_[injectorI] = injectorData[injectorI][8];
+        T_[injectorI] = injectorData[injectorI][9];
+        cp_[injectorI] = injectorData[injectorI][10];
+
+        Y_[injectorI].setSize
+        (
+            injectorData[injectorI].size() - INPUT_FILE_COLS + 1
+        );
+        label Yi = 0;
+        for
+        (
+            label i = INPUT_FILE_COLS-1;
+            i < injectorData[injectorI].size();
+            i++
+        )
+        {
+            Y_[injectorI][Yi++] = injectorData[injectorI][i];
+        }
+   }
+
+    // Set/cache the injector cells
+    injectorCells_.setSize(injectorData.size());
+    forAll(x_, injectorI)
+    {
+        this->findCellAtPosition(injectorCells_[injectorI], x_[injectorI]);
+    }
+
+    // Determine volume of particles to inject
+    this->volumeTotal_ = 0.0;
+    forAll(mDot_, injectorI)
+    {
+        this->volumeTotal_ += mDot_[injectorI]/rho_[injectorI];
+    }
+    this->volumeTotal_ *= duration_;
+}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+template<class CloudType>
+Foam::ReactingLookupTableInjection<CloudType>::~ReactingLookupTableInjection()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+template<class CloudType>
+bool Foam::ReactingLookupTableInjection<CloudType>::active() const
+{
+    return true;
+}
+
+
+template<class CloudType>
+Foam::scalar Foam::ReactingLookupTableInjection<CloudType>::timeEnd() const
+{
+    return this->SOI_ + duration_;
+}
+
+
+template<class CloudType>
+void Foam::ReactingLookupTableInjection<CloudType>::setPositionAndCell
+(
+    const label parcelI,
+    const label nParcels,
+    const scalar time,
+    vector& position,
+    label& cellOwner
+)
+{
+    label injectorI = parcelI*injectorCells_.size()/nParcels;
+
+    position = x_[injectorI];
+    cellOwner = injectorCells_[injectorI];
+}
+
+
+template<class CloudType>
+void Foam::ReactingLookupTableInjection<CloudType>::setProperties
+(
+    const label parcelI,
+    const label nParcels,
+    const scalar,
+    typename CloudType::parcelType& parcel
+)
+{
+    label injectorI = parcelI*injectorCells_.size()/nParcels;
+
+    // set particle velocity
+    parcel.U() = U_[injectorI];
+
+    // set particle diameter
+    parcel.d() = d_[injectorI];
+
+    // set particle density
+    parcel.rho() = rho_[injectorI];
+
+    // set particle temperature
+    parcel.T() = T_[injectorI];
+
+    // set particle specific heat capacity
+    parcel.cp() = cp_[injectorI];
+
+    // set particle component mass fractions
+    parcel.Y() = Y_[injectorI];
+}
+
+
+template<class CloudType>
+bool Foam::ReactingLookupTableInjection<CloudType>::fullyDescribed() const
+{
+    return true;
+}
+
+
+template<class CloudType>
+bool Foam::ReactingLookupTableInjection<CloudType>::validInjection(const label)
+{
+    return true;
+}
+
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/submodels/Reacting/InjectionModel/ReactingLookupTableInjection/ReactingLookupTableInjection.H b/src/lagrangian/intermediate/submodels/Reacting/InjectionModel/ReactingLookupTableInjection/ReactingLookupTableInjection.H
new file mode 100644
index 0000000000000000000000000000000000000000..f8b6546d5ba203a9dad0b28a2463bc1a1137f790
--- /dev/null
+++ b/src/lagrangian/intermediate/submodels/Reacting/InjectionModel/ReactingLookupTableInjection/ReactingLookupTableInjection.H
@@ -0,0 +1,204 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::ReactingLookupTableInjection
+
+Description
+    Particle injection sources read from look-up table. Each row corresponds to
+    an injection site.
+
+    (
+        (x y z u v w d rho mDot T cp Y0..YN)
+    );
+
+    where:
+        x, y, z = global cartesian co-ordinates [m]
+        u, v, w = global cartesian velocity components [m/s]
+        d       = diameter [m]
+        rho     = density [kg/m3]
+        mDot    = mass flow rate [kg/m3]
+        T       = temperature [K]
+        cp      = specific heat capacity [J/kg/K]
+
+SourceFiles
+    ReactingLookupTableInjection.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef ReactingLookupTableInjection_H
+#define ReactingLookupTableInjection_H
+
+#include "InjectionModel.H"
+#include "pdf.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+                Class ReactingLookupTableInjection Declaration
+\*---------------------------------------------------------------------------*/
+
+template<class CloudType>
+class ReactingLookupTableInjection
+:
+    public InjectionModel<CloudType>
+{
+    // Private data
+
+        //- Name of file containing injector/parcel data
+        const word inputFileName_;
+
+        //- Injection duration - common to all injection sources
+        const scalar duration_;
+
+        //- Number of parcels per injector - common to all injection sources
+        const label nParcelsPerSecond_;
+
+        //- List of parcel position per injector / [m]
+        List<point> x_;
+
+        //- List of parcel velocity per injector / [m]
+        List<vector> U_;
+
+        //- List of parcel diameter per injector / [m]
+        List<scalar> d_;
+
+        //- List of parcel fluid density pre injector / [kg/m3]
+        List<scalar> rho_;
+
+        //- List of parcel injection mass flow per injector / [kg/s]
+        List<scalar> mDot_;
+
+        //- List of parcel temperature flow per injector / [K]
+        List<scalar> T_;
+
+        //- List of parcel specific heat capacity per injector / [J/kg/K]
+        List<scalar> cp_;
+
+        //- List of parcel specie mass fractions per injector / []
+        List<scalarList> Y_;
+
+        //- List of injector cells per injector
+        List<label> injectorCells_;
+
+        //- Number of columns expected in input file
+        static label INPUT_FILE_COLS;
+
+
+protected:
+
+    // Protected member functions
+
+        //- Number of parcels to introduce over the time step relative to SOI
+        label parcelsToInject
+        (
+            const scalar time0,
+            const scalar time1
+        ) const;
+
+        //- Volume of parcels to introduce over the time step relative to SOI
+        scalar volumeToInject
+        (
+            const scalar time0,
+            const scalar time1
+        ) const;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("ReactingLookupTableInjection");
+
+
+    // Constructors
+
+        //- Construct from dictionary
+        ReactingLookupTableInjection
+        (
+            const dictionary& dict,
+            CloudType& owner
+        );
+
+
+    //- Destructor
+    virtual ~ReactingLookupTableInjection();
+
+
+    // Member Functions
+
+        //- Flag to indicate whether model activates injection model
+        bool active() const;
+
+        //- Return the end-of-injection time
+        scalar timeEnd() const;
+
+
+        // Injection geometry
+
+            //- Set the injection position and owner cell
+            virtual void setPositionAndCell
+            (
+                const label parcelI,
+                const label nParcels,
+                const scalar time,
+                vector& position,
+                label& cellOwner
+            );
+
+            //- Set the parcel properties
+            virtual void setProperties
+            (
+                const label parcelI,
+                const label nParcels,
+                const scalar time,
+                typename CloudType::parcelType& parcel
+            );
+
+            //- Flag to identify whether model fully describes the parcel
+            virtual bool fullyDescribed() const;
+
+            //- Return flag to identify whether or not injection of parcelI is
+            //  permitted
+            virtual bool validInjection(const label parcelI);
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#ifdef NoRepository
+#   include "ReactingLookupTableInjection.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/LiquidEvaporation/LiquidEvaporation.C b/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/LiquidEvaporation/LiquidEvaporation.C
new file mode 100644
index 0000000000000000000000000000000000000000..19429ba6817e94bdaab43a832c7d1494c0a99638
--- /dev/null
+++ b/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/LiquidEvaporation/LiquidEvaporation.C
@@ -0,0 +1,198 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "LiquidEvaporation.H"
+#include "specie.H"
+
+// * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
+
+template<class CloudType>
+Foam::scalarField Foam::LiquidEvaporation<CloudType>::calcXc
+(
+    const label cellI
+) const
+{
+    scalarField Xc(this->owner().mcCarrierThermo().Y().size());
+
+    scalar Winv = 0.0;
+    forAll(Xc, i)
+    {
+        scalar Y = this->owner().mcCarrierThermo().Y()[i][cellI];
+        Winv += Y/this->owner().mcCarrierThermo().speciesData()[i].W();
+        Xc[i] = Y/this->owner().mcCarrierThermo().speciesData()[i].W();
+    }
+
+    return Xc/Winv;
+}
+
+
+template <class CloudType>
+Foam::scalar Foam::LiquidEvaporation<CloudType>::Sh
+(
+    const scalar Re,
+    const scalar Sc
+) const
+{
+    return 2.0 + 0.6*Foam::sqrt(Re)*pow(Sc, 0.333);
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template <class CloudType>
+Foam::LiquidEvaporation<CloudType>::LiquidEvaporation
+(
+    const dictionary& dict,
+    CloudType& owner
+)
+:
+    PhaseChangeModel<CloudType>(dict, owner, typeName),
+    liquids_
+    (
+        liquidMixture::New
+        (
+            owner.mesh().objectRegistry::lookupObject<dictionary>
+            (
+                owner.carrierThermo().name()
+            )
+        )
+    ),
+    activeLiquids_(this->coeffDict().lookup("activeLiquids")),
+    liqToCarrierMap_(activeLiquids_.size(), -1),
+    liqToLiqMap_(activeLiquids_.size(), -1)
+{
+    if (activeLiquids_.size() == 0)
+    {
+        WarningIn
+        (
+            "Foam::LiquidEvaporation<CloudType>::LiquidEvaporation"
+            "("
+                "const dictionary& dict, "
+                "CloudType& owner"
+            ")"
+        )   << "Evaporation model selected, but no active liquids defined"
+            << nl << endl;
+    }
+
+    // Determine mapping between liquid and carrier phase species
+    forAll(activeLiquids_, i)
+    {
+        liqToCarrierMap_[i] =
+            owner.composition().globalCarrierId(activeLiquids_[i]);
+    }
+
+    // Determine mapping between model active liquids and global liquids
+    label idLiquid = owner.composition().idLiquid();
+    forAll(activeLiquids_, i)
+    {
+        liqToLiqMap_[i] =
+            owner.composition().localId(idLiquid, activeLiquids_[i]);
+    }
+}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+template <class CloudType>
+Foam::LiquidEvaporation<CloudType>::~LiquidEvaporation()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+template<class CloudType>
+bool Foam::LiquidEvaporation<CloudType>::active() const
+{
+    return true;
+}
+
+
+template<class CloudType>
+void Foam::LiquidEvaporation<CloudType>::calculate
+(
+    const scalar dt,
+    const label cellI,
+    const scalar d,
+    const scalar T,
+    const scalar pc,
+    const scalar Tc,
+    const scalar nuc,
+    const vector& Ur,
+    scalarField& dMassPC
+) const
+{
+    // construct carrier phase species volume fractions for cell, cellI
+    scalarField Xc = calcXc(cellI);
+
+    // droplet surface area
+    scalar A = mathematicalConstant::pi*sqr(d);
+
+    // Reynolds number
+    scalar Re = mag(Ur)*d/(nuc + ROOTVSMALL);
+
+    // film temperature evaluated using the 2/3 rule
+    scalar Tf = (2.0*T + Tc)/3.0;
+
+    // calculate mass transfer of each specie in liquid
+    forAll(activeLiquids_, i)
+    {
+        label gid = liqToCarrierMap_[i];
+        label lid = liqToLiqMap_[i];
+
+        // vapour diffusivity at film temperature and cell pressure [m2/s]
+        scalar Dab = liquids_->properties()[lid].D(pc, Tf);
+
+        // saturation pressure for species i at film temperature and cell
+        // pressure [pa] - carrier phase pressure assumed equal to the liquid
+        // vapour pressure close to the surface
+        // - limited to pc if pSat > pc
+        scalar pSat = min(liquids_->properties()[lid].pv(pc, Tf), pc);
+
+        // Schmidt number
+        scalar Sc = nuc/(Dab + ROOTVSMALL);
+
+        // Sherwood number
+        scalar Sh = this->Sh(Re, Sc);
+
+        // mass transfer coefficient [m/s]
+        scalar kc = Sh*Dab/(d + ROOTVSMALL);
+
+        // vapour concentration at droplet surface at film temperature [kmol/m3]
+        scalar Cs = pSat/(specie::RR*Tf);
+
+        // vapour concentration in bulk gas at film temperature [kmol/m3]
+        scalar Cinf = Xc[gid]*pc/(specie::RR*Tf);
+
+        // molar flux of vapour [kmol/m2/s]
+        scalar Ni = max(kc*(Cs - Cinf), 0.0);
+
+        // mass transfer [kg]
+        dMassPC[lid] += Ni*A*liquids_->properties()[lid].W()*dt;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/applications/utilities/preProcessing/mdInitialise/molConfig_old/molConfig.H b/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/LiquidEvaporation/LiquidEvaporation.H
similarity index 51%
rename from applications/utilities/preProcessing/mdInitialise/molConfig_old/molConfig.H
rename to src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/LiquidEvaporation/LiquidEvaporation.H
index 3b0ba8fd504846ecb073c7083593eff38dec23c0..7e569736cab10d9dbb4dac3f464f9a5abbf2a22d 100644
--- a/applications/utilities/preProcessing/mdInitialise/molConfig_old/molConfig.H
+++ b/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/LiquidEvaporation/LiquidEvaporation.H
@@ -23,112 +23,97 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::molConfig
+    Foam::LiquidEvaporation
 
 Description
-
-SourceFiles
-    molConfigI.H
-    molConfig.C
-    molConfigIO.C
+    Liquid evaporation model
+    - uses ideal gas assumption
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef molConfig_H
-#define molConfig_H
-
-#include "labelVector.H"
-#include "scalar.H"
-#include "vector.H"
-#include "labelField.H"
-#include "scalarField.H"
-#include "vectorField.H"
-#include "IOField.H"
-#include "EulerCoordinateRotation.H"
-#include "Random.H"
+#ifndef LiquidEvaporation_H
+#define LiquidEvaporation_H
 
-#include "Time.H"
-#include "IOdictionary.H"
-#include "IOstreams.H"
-#include "moleculeCloud.H"
+#include "PhaseChangeModel.H"
+#include "liquidMixture.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 namespace Foam
 {
-
 /*---------------------------------------------------------------------------*\
-                           Class molConfig Declaration
+                     Class LiquidEvaporation Declaration
 \*---------------------------------------------------------------------------*/
 
-class molConfig
+template<class CloudType>
+class LiquidEvaporation
+:
+    public PhaseChangeModel<CloudType>
 {
-    // Private data
+protected:
 
-        const IOdictionary& molConfigDescription_;
+    // Protected data
 
-        const polyMesh& mesh_;
+        //- Global liquid properties data
+        autoPtr<liquidMixture> liquids_;
 
-        DynamicList<word> idList_;
+        //- List of active liquid names
+        List<word> activeLiquids_;
 
-        labelField id_;
+        //- Mapping between liquid and carrier species
+        List<label> liqToCarrierMap_;
 
-        scalarField mass_;
+        //- Mapping between local and global liquid species
+        List<label> liqToLiqMap_;
 
-        vectorField positions_;
 
-        labelField cells_;
+    // Protected member functions
 
-        vectorField U_;
+        //- Sherwood number as a function of Reynolds and Schmidt numbers
+        scalar Sh(const scalar Re, const scalar Sc) const;
 
-        vectorField A_;
+        //- Calculate the carrier phase component volume fractions at cellI
+        scalarField calcXc(const label cellI) const;
 
-        labelField tethered_;
 
-        vectorField tetherPositions_;
-
-        label nMol_;
+public:
 
+    //- Runtime type information
+    TypeName("LiquidEvaporation");
 
-public:
 
     // Constructors
 
-        //- Construct from IOdictionary and mesh
-        molConfig(IOdictionary&, const polyMesh&);
-
+        //- Construct from dictionary
+        LiquidEvaporation
+        (
+            const dictionary& dict,
+            CloudType& cloud
+        );
 
-    // Destructor
 
-        ~molConfig();
+    //- Destructor
+    virtual ~LiquidEvaporation();
 
 
     // Member Functions
 
-        void createMolecules();
-
-
-        // Access
-
-            inline const List<word>& molIdList() const;
-
-            inline const labelField& id() const;
-
-            inline const scalarField& mass() const;
-
-            inline const vectorField& positions() const;
-
-            inline const labelField& cells() const;
-
-            inline const vectorField& U() const;
-
-            inline const vectorField& A() const;
-
-            inline const labelField& tethered() const;
-
-            inline const vectorField& tetherPositions() const;
-
-            inline label nMol() const;
+        //- Flag to indicate whether model activates phase change model
+        virtual bool active() const;
+
+        //- Update model
+        virtual void calculate
+        (
+            const scalar dt,
+            const label cellI,
+            const scalar d,
+            const scalar T,
+            const scalar pc,
+            const scalar Tc,
+            const scalar nuc,
+            const vector& Ur,
+            scalarField& dMassPC
+        ) const;
 };
 
 
@@ -138,7 +123,9 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-#include "molConfigI.H"
+#ifdef NoRepository
+#   include "LiquidEvaporation.C"
+#endif
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
diff --git a/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/NoPhaseChange/NoPhaseChange.C b/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/NoPhaseChange/NoPhaseChange.C
new file mode 100644
index 0000000000000000000000000000000000000000..ee3779b22ec64d22ad28d3cdf935a7fe641aece1
--- /dev/null
+++ b/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/NoPhaseChange/NoPhaseChange.C
@@ -0,0 +1,76 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "NoPhaseChange.H"
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template <class CloudType>
+Foam::NoPhaseChange<CloudType>::NoPhaseChange
+(
+    const dictionary&,
+    CloudType& owner
+)
+:
+    PhaseChangeModel<CloudType>(owner)
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+template <class CloudType>
+Foam::NoPhaseChange<CloudType>::~NoPhaseChange()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+template<class CloudType>
+bool Foam::NoPhaseChange<CloudType>::active() const
+{
+    return false;
+}
+
+
+template<class CloudType>
+void Foam::NoPhaseChange<CloudType>::calculate
+(
+    const scalar,
+    const label,
+    const scalar,
+    const scalar,
+    const scalar,
+    const scalar,
+    const scalar,
+    const vector&,
+    scalarField&
+) const
+{
+    // Nothing to do...
+}
+
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/NoPhaseChange/NoPhaseChange.H b/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/NoPhaseChange/NoPhaseChange.H
new file mode 100644
index 0000000000000000000000000000000000000000..007fa73344ff48732e4dd396c97b8bb131c8e53c
--- /dev/null
+++ b/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/NoPhaseChange/NoPhaseChange.H
@@ -0,0 +1,102 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::NoPhaseChange
+
+Description
+    Dummy phase change model for 'none'
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef NoPhaseChange_H
+#define NoPhaseChange_H
+
+#include "PhaseChangeModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+/*---------------------------------------------------------------------------*\
+                       Class NoPhaseChange Declaration
+\*---------------------------------------------------------------------------*/
+
+template<class CloudType>
+class NoPhaseChange
+:
+    public PhaseChangeModel<CloudType>
+{
+public:
+
+    //- Runtime type information
+    TypeName("none");
+
+
+    // Constructors
+
+        //- Construct from dictionary
+        NoPhaseChange(const dictionary&, CloudType&);
+
+
+    //- Destructor
+    virtual ~NoPhaseChange();
+
+
+    // Member Functions
+
+        //- Flag to indicate whether model activates phase change model
+        virtual bool active() const;
+
+        //- Update model
+        virtual void calculate
+        (
+            const scalar dt,
+            const label cellI,
+            const scalar d,
+            const scalar T,
+            const scalar pc,
+            const scalar Tc,
+            const scalar nuc,
+            const vector& Ur,
+            scalarField& dMassPC
+        ) const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#ifdef NoRepository
+#   include "NoPhaseChange.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/submodels/Reacting/MassTransferModel/MassTransferModel/NewMassTransferModel.C b/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/PhaseChangeModel/NewPhaseChangeModel.C
similarity index 71%
rename from src/lagrangian/intermediate/submodels/Reacting/MassTransferModel/MassTransferModel/NewMassTransferModel.C
rename to src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/PhaseChangeModel/NewPhaseChangeModel.C
index 416dd02ad93dc68af4d00de19382e855a54c627e..efb611522a8ce744d28f0033029d58f309e5bbfa 100644
--- a/src/lagrangian/intermediate/submodels/Reacting/MassTransferModel/MassTransferModel/NewMassTransferModel.C
+++ b/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/PhaseChangeModel/NewPhaseChangeModel.C
@@ -24,43 +24,42 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "MassTransferModel.H"
+#include "PhaseChangeModel.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 template<class CloudType>
-Foam::autoPtr<Foam::MassTransferModel<CloudType> >
-Foam::MassTransferModel<CloudType>::New
+Foam::autoPtr<Foam::PhaseChangeModel<CloudType> >
+Foam::PhaseChangeModel<CloudType>::New
 (
     const dictionary& dict,
     CloudType& owner
 )
 {
-    word MassTransferModelType
-    (
-        dict.lookup("MassTransferModel")
-    );
+    word PhaseChangeModelType(dict.lookup("PhaseChangeModel"));
 
-    Info<< "Selecting MassTransferModel " << MassTransferModelType << endl;
+    Info<< "Selecting PhaseChangeModel " << PhaseChangeModelType << endl;
 
     typename dictionaryConstructorTable::iterator cstrIter =
-        dictionaryConstructorTablePtr_->find(MassTransferModelType);
+        dictionaryConstructorTablePtr_->find(PhaseChangeModelType);
 
     if (cstrIter == dictionaryConstructorTablePtr_->end())
     {
         FatalErrorIn
         (
-            "MassTransferModel<CloudType>::New"
-            "(const dictionary&, CloudType&)"
-        )
-            << "Unknown MassTransferModelType type "
-            << MassTransferModelType
+            "PhaseChangeModel<CloudType>::New"
+            "("
+                "const dictionary&, "
+                "CloudType&"
+            ")"
+        )   << "Unknown PhaseChangeModelType type "
+            << PhaseChangeModelType
             << ", constructor not in hash table" << nl << nl
-            << "    Valid MassTransferModel types are :" << nl
+            << "    Valid PhaseChangeModel types are:" << nl
             << dictionaryConstructorTablePtr_->toc() << exit(FatalError);
     }
 
-    return autoPtr<MassTransferModel<CloudType> >(cstrIter()(dict, owner));
+    return autoPtr<PhaseChangeModel<CloudType> >(cstrIter()(dict, owner));
 }
 
 
diff --git a/src/lagrangian/intermediate/submodels/Reacting/MassTransferModel/MassTransferModel/MassTransferModel.C b/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/PhaseChangeModel/PhaseChangeModel.C
similarity index 76%
rename from src/lagrangian/intermediate/submodels/Reacting/MassTransferModel/MassTransferModel/MassTransferModel.C
rename to src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/PhaseChangeModel/PhaseChangeModel.C
index fc05b32540f3d783dc2bd295caa4c802e400bc31..b9fbdb2011463904670d4e98a912c75fe273d08c 100644
--- a/src/lagrangian/intermediate/submodels/Reacting/MassTransferModel/MassTransferModel/MassTransferModel.C
+++ b/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/PhaseChangeModel/PhaseChangeModel.C
@@ -24,18 +24,31 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "MassTransferModel.H"
+#include "PhaseChangeModel.H"
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
 template<class CloudType>
-Foam::MassTransferModel<CloudType>::MassTransferModel
+Foam::PhaseChangeModel<CloudType>::PhaseChangeModel
+(
+    CloudType& owner
+)
+:
+    dict_(dictionary::null),
+    owner_(owner),
+    coeffDict_(dictionary::null)
+{}
+
+
+template<class CloudType>
+Foam::PhaseChangeModel<CloudType>::PhaseChangeModel
 (
     const dictionary& dict,
     CloudType& owner,
     const word& type
 )
-:   dict_(dict),
+:
+    dict_(dict),
     owner_(owner),
     coeffDict_(dict.subDict(type + "Coeffs"))
 {}
@@ -44,27 +57,27 @@ Foam::MassTransferModel<CloudType>::MassTransferModel
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
 template<class CloudType>
-Foam::MassTransferModel<CloudType>::~MassTransferModel()
+Foam::PhaseChangeModel<CloudType>::~PhaseChangeModel()
 {}
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 template<class CloudType>
-const CloudType& Foam::MassTransferModel<CloudType>::owner() const
+const CloudType& Foam::PhaseChangeModel<CloudType>::owner() const
 {
     return owner_;
 }
 
 
 template<class CloudType>
-const Foam::dictionary& Foam::MassTransferModel<CloudType>::dict() const
+const Foam::dictionary& Foam::PhaseChangeModel<CloudType>::dict() const
 {
     return dict_;
 }
 
 
 template<class CloudType>
-const Foam::dictionary& Foam::MassTransferModel<CloudType>::coeffDict() const
+const Foam::dictionary& Foam::PhaseChangeModel<CloudType>::coeffDict() const
 {
     return coeffDict_;
 }
@@ -72,7 +85,7 @@ const Foam::dictionary& Foam::MassTransferModel<CloudType>::coeffDict() const
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-#include "NewMassTransferModel.C"
+#include "NewPhaseChangeModel.C"
 
 // ************************************************************************* //
 
diff --git a/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/PhaseChangeModel/PhaseChangeModel.H b/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/PhaseChangeModel/PhaseChangeModel.H
new file mode 100644
index 0000000000000000000000000000000000000000..2e0f03a3f52510fb46a661246636c0cad340bbc8
--- /dev/null
+++ b/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/PhaseChangeModel/PhaseChangeModel.H
@@ -0,0 +1,195 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::PhaseChangeModel
+
+Description
+    Templated phase change model class
+
+SourceFiles
+    PhaseChangeModel.C
+    NewPhaseChangeModel.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef PhaseChangeModel_H
+#define PhaseChangeModel_H
+
+#include "IOdictionary.H"
+#include "autoPtr.H"
+#include "runTimeSelectionTables.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+                      Class PhaseChangeModel Declaration
+\*---------------------------------------------------------------------------*/
+
+template<class CloudType>
+class PhaseChangeModel
+{
+protected:
+
+    // Protected data
+
+        //- The cloud dictionary
+        const dictionary& dict_;
+
+        //- Reference to the owner cloud class
+        CloudType& owner_;
+
+        //- The coefficient dictionary
+        const dictionary coeffDict_;
+
+
+    // Protected member functions
+
+        //- Sherwood number
+        scalar Sh() const;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("PhaseChangeModel");
+
+    //- Declare runtime constructor selection table
+    declareRunTimeSelectionTable
+    (
+        autoPtr,
+        PhaseChangeModel,
+        dictionary,
+        (
+            const dictionary& dict,
+            CloudType& owner
+        ),
+        (dict, owner)
+    );
+
+
+    // Constructors
+
+        //- Construct null from owner
+        PhaseChangeModel(CloudType& owner);
+
+        //- Construct from dictionary
+        PhaseChangeModel
+        (
+            const dictionary& dict,
+            CloudType& owner,
+            const word& type
+        );
+
+
+    //- Destructor
+    virtual ~PhaseChangeModel();
+
+
+    //- Selector
+    static autoPtr<PhaseChangeModel<CloudType> > New
+    (
+        const dictionary& dict,
+        CloudType& owner
+    );
+
+
+    // Access
+
+        //- Return the owner cloud object
+        const CloudType& owner() const;
+
+        //- Return the cloud dictionary
+        const dictionary& dict() const;
+
+        //- Return the coefficient dictionary
+        const dictionary& coeffDict() const;
+
+
+    // Member Functions
+
+        //- Flag to indicate whether model activates phase change model
+        virtual bool active() const = 0;
+
+        //- Update model
+        virtual void calculate
+        (
+            const scalar dt,
+            const label cellI,
+            const scalar d,
+            const scalar T,
+            const scalar pc,
+            const scalar Tc,
+            const scalar nuc,
+            const vector& Ur,
+            scalarField& dMassPC
+        ) const = 0;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#define makePhaseChangeModel(CloudType)                                       \
+                                                                              \
+    defineNamedTemplateTypeNameAndDebug(PhaseChangeModel<CloudType>, 0);      \
+                                                                              \
+    defineTemplateRunTimeSelectionTable                                       \
+    (                                                                         \
+        PhaseChangeModel<CloudType>,                                          \
+        dictionary                                                            \
+    );
+
+
+#define makePhaseChangeModelThermoType(SS, CloudType, ParcelType, ThermoType) \
+                                                                              \
+    defineNamedTemplateTypeNameAndDebug                                       \
+    (                                                                         \
+        SS<CloudType<ParcelType<ThermoType> > >,                              \
+        0                                                                     \
+    );                                                                        \
+                                                                              \
+    PhaseChangeModel<CloudType<ParcelType<ThermoType> > >::                   \
+        adddictionaryConstructorToTable                                       \
+            <SS<CloudType<ParcelType<ThermoType> > > >                        \
+            add##SS##CloudType##ParcelType##ThermoType##ConstructorToTable_;
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#ifdef NoRepository
+#   include "PhaseChangeModel.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/submodels/Reacting/MassTransferModel/ConstantRateDevolatilisation/ConstantRateDevolatilisation.C b/src/lagrangian/intermediate/submodels/ReactingMultiphase/DevolatilisationModel/ConstantRateDevolatilisation/ConstantRateDevolatilisation.C
similarity index 87%
rename from src/lagrangian/intermediate/submodels/Reacting/MassTransferModel/ConstantRateDevolatilisation/ConstantRateDevolatilisation.C
rename to src/lagrangian/intermediate/submodels/ReactingMultiphase/DevolatilisationModel/ConstantRateDevolatilisation/ConstantRateDevolatilisation.C
index 913fa89fc56a5ed5af668e6d3de84ec63e53b028..d8d522ff90b4909cbab192757e19ae553637d187 100644
--- a/src/lagrangian/intermediate/submodels/Reacting/MassTransferModel/ConstantRateDevolatilisation/ConstantRateDevolatilisation.C
+++ b/src/lagrangian/intermediate/submodels/ReactingMultiphase/DevolatilisationModel/ConstantRateDevolatilisation/ConstantRateDevolatilisation.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -35,7 +35,7 @@ Foam::ConstantRateDevolatilisation<CloudType>::ConstantRateDevolatilisation
     CloudType& owner
 )
 :
-    MassTransferModel<CloudType>(dict, owner, typeName),
+    DevolatilisationModel<CloudType>(dict, owner, typeName),
     A0_(dimensionedScalar(this->coeffDict().lookup("A0")).value()),
     volatileResidualCoeff_
     (
@@ -66,21 +66,21 @@ Foam::scalar Foam::ConstantRateDevolatilisation<CloudType>::calculate
     const scalar dt,
     const scalar mass0,
     const scalar mass,
-    const scalarField& YMixture0,
-    const scalarField& YMixture,
     const scalar T,
+    const scalar YVolatile0,
+    const scalar YVolatile,
     bool& canCombust
 ) const
 {
-    const scalar massVolatile0 = YMixture0[0]*mass0;
-    const scalar massVolatile  = YMixture[0]*mass;
+    const scalar massVolatile0 = YVolatile0*mass0;
+    const scalar massVolatile  = YVolatile*mass;
 
     if (massVolatile <= volatileResidualCoeff_*massVolatile0)
     {
         canCombust = true;
     }
 
-    // Volatile mass transfer from particle to carrier gas phase
+    // Volatile devolatilisation from particle to carrier gas phase
     const scalar dMass = min(dt*A0_*massVolatile0, massVolatile);
 
     return dMass;
diff --git a/src/lagrangian/intermediate/submodels/Reacting/MassTransferModel/ConstantRateDevolatilisation/ConstantRateDevolatilisation.H b/src/lagrangian/intermediate/submodels/ReactingMultiphase/DevolatilisationModel/ConstantRateDevolatilisation/ConstantRateDevolatilisation.H
similarity index 87%
rename from src/lagrangian/intermediate/submodels/Reacting/MassTransferModel/ConstantRateDevolatilisation/ConstantRateDevolatilisation.H
rename to src/lagrangian/intermediate/submodels/ReactingMultiphase/DevolatilisationModel/ConstantRateDevolatilisation/ConstantRateDevolatilisation.H
index 093a05b327d9a05b67abc73be9bf81717f8e7b87..b787a9b28254a4c8c09972040a276ace88e47975 100644
--- a/src/lagrangian/intermediate/submodels/Reacting/MassTransferModel/ConstantRateDevolatilisation/ConstantRateDevolatilisation.H
+++ b/src/lagrangian/intermediate/submodels/ReactingMultiphase/DevolatilisationModel/ConstantRateDevolatilisation/ConstantRateDevolatilisation.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -34,7 +34,7 @@ Description
 #ifndef ConstantRateDevolatilisation_H
 #define ConstantRateDevolatilisation_H
 
-#include "MassTransferModel.H"
+#include "DevolatilisationModel.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -47,9 +47,8 @@ namespace Foam
 template<class CloudType>
 class ConstantRateDevolatilisation
 :
-    public MassTransferModel<CloudType>
+    public DevolatilisationModel<CloudType>
 {
-
     // Private data
 
         // Model constants
@@ -79,25 +78,24 @@ public:
         );
 
 
-    // Destructor
-
-        ~ConstantRateDevolatilisation();
+    //- Destructor
+    virtual ~ConstantRateDevolatilisation();
 
 
     // Member Functions
 
-        //- Flag to indicate whether model activates mass transfer model
-        bool active() const;
+        //- Flag to indicate whether model activates devolatilisation model
+        virtual bool active() const;
 
         //- Update model
-        scalar calculate
+        virtual scalar calculate
         (
             const scalar dt,
             const scalar mass0,
             const scalar mass,
-            const scalarField& YMixture0,
-            const scalarField& YMixture,
             const scalar T,
+            const scalar YVolatile0,
+            const scalar YVolatile,
             bool& canCombust
         ) const;
 };
diff --git a/src/lagrangian/intermediate/submodels/ReactingMultiphase/DevolatilisationModel/DevolatilisationModel/DevolatilisationModel.C b/src/lagrangian/intermediate/submodels/ReactingMultiphase/DevolatilisationModel/DevolatilisationModel/DevolatilisationModel.C
new file mode 100644
index 0000000000000000000000000000000000000000..4239eb19958f8c70326f6aba9a7eea4fe23181ae
--- /dev/null
+++ b/src/lagrangian/intermediate/submodels/ReactingMultiphase/DevolatilisationModel/DevolatilisationModel/DevolatilisationModel.C
@@ -0,0 +1,91 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "DevolatilisationModel.H"
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template<class CloudType>
+Foam::DevolatilisationModel<CloudType>::DevolatilisationModel
+(
+    CloudType& owner
+)
+:
+    dict_(dictionary::null),
+    owner_(owner),
+    coeffDict_(dictionary::null)
+{}
+
+
+template<class CloudType>
+Foam::DevolatilisationModel<CloudType>::DevolatilisationModel
+(
+    const dictionary& dict,
+    CloudType& owner,
+    const word& type
+)
+:
+    dict_(dict),
+    owner_(owner),
+    coeffDict_(dict.subDict(type + "Coeffs"))
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+template<class CloudType>
+Foam::DevolatilisationModel<CloudType>::~DevolatilisationModel()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+template<class CloudType>
+const CloudType& Foam::DevolatilisationModel<CloudType>::owner() const
+{
+    return owner_;
+}
+
+
+template<class CloudType>
+const Foam::dictionary& Foam::DevolatilisationModel<CloudType>::dict() const
+{
+    return dict_;
+}
+
+
+template<class CloudType>
+const Foam::dictionary& Foam::DevolatilisationModel<CloudType>::coeffDict() const
+{
+    return coeffDict_;
+}
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "NewDevolatilisationModel.C"
+
+// ************************************************************************* //
+
diff --git a/src/lagrangian/intermediate/submodels/Reacting/MassTransferModel/MassTransferModel/MassTransferModel.H b/src/lagrangian/intermediate/submodels/ReactingMultiphase/DevolatilisationModel/DevolatilisationModel/DevolatilisationModel.H
similarity index 67%
rename from src/lagrangian/intermediate/submodels/Reacting/MassTransferModel/MassTransferModel/MassTransferModel.H
rename to src/lagrangian/intermediate/submodels/ReactingMultiphase/DevolatilisationModel/DevolatilisationModel/DevolatilisationModel.H
index 25d476e340a4c5f6396f24cedf4951f804105ec3..b7edc60275d7b403049c66a4a1157c3c01f71167 100644
--- a/src/lagrangian/intermediate/submodels/Reacting/MassTransferModel/MassTransferModel/MassTransferModel.H
+++ b/src/lagrangian/intermediate/submodels/ReactingMultiphase/DevolatilisationModel/DevolatilisationModel/DevolatilisationModel.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -23,20 +23,19 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::MassTransferModel
-
+    Foam::DevolatilisationModel
 
 Description
-    Templated mass transfer model class
+    Templated devolatilisation model class
 
 SourceFiles
-    MassTransferModel.C
-    NewMassTransferModel.C
+    DevolatilisationModel.C
+    NewDevolatilisationModel.C
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef MassTransferModel_H
-#define MassTransferModel_H
+#ifndef DevolatilisationModel_H
+#define DevolatilisationModel_H
 
 #include "IOdictionary.H"
 #include "autoPtr.H"
@@ -48,13 +47,12 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                      Class MassTransferModel Declaration
+                      Class DevolatilisationModel Declaration
 \*---------------------------------------------------------------------------*/
 
 template<class CloudType>
-class MassTransferModel
+class DevolatilisationModel
 {
-
 protected:
 
     // Protected data
@@ -72,13 +70,13 @@ protected:
 public:
 
     //- Runtime type information
-    TypeName("MassTransferModel");
+    TypeName("DevolatilisationModel");
 
     //- Declare runtime constructor selection table
     declareRunTimeSelectionTable
     (
         autoPtr,
-        MassTransferModel,
+        DevolatilisationModel,
         dictionary,
         (
             const dictionary& dict,
@@ -90,8 +88,11 @@ public:
 
     // Constructors
 
+        //- Construct null from owner
+        DevolatilisationModel(CloudType& owner);
+
         //- Construct from dictionary
-        MassTransferModel
+        DevolatilisationModel
         (
             const dictionary& dict,
             CloudType& owner,
@@ -99,18 +100,16 @@ public:
         );
 
 
-    // Destructor
+    //- Destructor
+    virtual ~DevolatilisationModel();
 
-        virtual ~MassTransferModel();
 
-
-    // Selector
-
-        static autoPtr<MassTransferModel<CloudType> > New
-        (
-            const dictionary& dict,
-            CloudType& owner
-        );
+    //- Selector
+    static autoPtr<DevolatilisationModel<CloudType> > New
+    (
+        const dictionary& dict,
+        CloudType& owner
+    );
 
 
     // Access
@@ -127,7 +126,7 @@ public:
 
     // Member Functions
 
-        //- Flag to indicate whether model activates mass transfer model
+        //- Flag to indicate whether model activates devolatilisation model
         virtual bool active() const = 0;
 
         //- Update model
@@ -136,9 +135,9 @@ public:
             const scalar dt,
             const scalar mass0,
             const scalar mass,
-            const scalarField& YMixture0,
-            const scalarField& YMixture,
             const scalar T,
+            const scalar YVolatile0,
+            const scalar YVolatile,
             bool& canCombust
         ) const = 0;
 };
@@ -150,30 +149,35 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-#define makeMassTransferModel(CloudType)                                      \
+#define makeDevolatilisationModel(CloudType)                                  \
                                                                               \
-    defineNamedTemplateTypeNameAndDebug(MassTransferModel<CloudType>, 0);     \
+    defineNamedTemplateTypeNameAndDebug(DevolatilisationModel<CloudType>, 0); \
                                                                               \
     defineTemplateRunTimeSelectionTable                                       \
     (                                                                         \
-        MassTransferModel<CloudType>,                                         \
+        DevolatilisationModel<CloudType>,                                     \
         dictionary                                                            \
     );
 
 
-#define makeMassTransferModelType(SS, CloudType, ParcelType)                  \
+#define makeDevolatilisationModelThermoType(SS, CloudType, ParcelType, ThermoType)\
                                                                               \
-    defineNamedTemplateTypeNameAndDebug(SS<CloudType<ParcelType> >, 0);       \
+    defineNamedTemplateTypeNameAndDebug                                       \
+    (                                                                         \
+        SS<CloudType<ParcelType<ThermoType> > >,                              \
+        0                                                                     \
+    );                                                                        \
                                                                               \
-    MassTransferModel<CloudType<ParcelType> >::                               \
-        adddictionaryConstructorToTable<SS<CloudType<ParcelType> > >          \
-            add##SS##CloudType##ParcelType##ConstructorToTable_;
+    DevolatilisationModel<CloudType<ParcelType<ThermoType> > >::              \
+        adddictionaryConstructorToTable                                       \
+            <SS<CloudType<ParcelType<ThermoType> > > >                        \
+            add##SS##CloudType##ParcelType##ThermoType##ConstructorToTable_;
 
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 #ifdef NoRepository
-#   include "MassTransferModel.C"
+#   include "DevolatilisationModel.C"
 #endif
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/lagrangian/intermediate/submodels/ReactingMultiphase/DevolatilisationModel/DevolatilisationModel/NewDevolatilisationModel.C b/src/lagrangian/intermediate/submodels/ReactingMultiphase/DevolatilisationModel/DevolatilisationModel/NewDevolatilisationModel.C
new file mode 100644
index 0000000000000000000000000000000000000000..cac0375b2816f94748edd2a0f12944a38483a51e
--- /dev/null
+++ b/src/lagrangian/intermediate/submodels/ReactingMultiphase/DevolatilisationModel/DevolatilisationModel/NewDevolatilisationModel.C
@@ -0,0 +1,67 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "DevolatilisationModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+template<class CloudType>
+Foam::autoPtr<Foam::DevolatilisationModel<CloudType> >
+Foam::DevolatilisationModel<CloudType>::New
+(
+    const dictionary& dict,
+    CloudType& owner
+)
+{
+    word DevolatilisationModelType(dict.lookup("DevolatilisationModel"));
+
+    Info<< "Selecting DevolatilisationModel " << DevolatilisationModelType
+        << endl;
+
+    typename dictionaryConstructorTable::iterator cstrIter =
+        dictionaryConstructorTablePtr_->find(DevolatilisationModelType);
+
+    if (cstrIter == dictionaryConstructorTablePtr_->end())
+    {
+        FatalErrorIn
+        (
+            "DevolatilisationModel<CloudType>::New"
+            "("
+                "const dictionary&, "
+                "CloudType&"
+            ")"
+        )   << "Unknown DevolatilisationModelType type "
+            << DevolatilisationModelType
+            << ", constructor not in hash table" << nl << nl
+            << "    Valid DevolatilisationModel types are:" << nl
+            << dictionaryConstructorTablePtr_->toc() << exit(FatalError);
+    }
+
+    return autoPtr<DevolatilisationModel<CloudType> >(cstrIter()(dict, owner));
+}
+
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/submodels/Reacting/MassTransferModel/NoMassTransfer/NoMassTransfer.C b/src/lagrangian/intermediate/submodels/ReactingMultiphase/DevolatilisationModel/NoDevolatilisation/NoDevolatilisation.C
similarity index 80%
rename from src/lagrangian/intermediate/submodels/Reacting/MassTransferModel/NoMassTransfer/NoMassTransfer.C
rename to src/lagrangian/intermediate/submodels/ReactingMultiphase/DevolatilisationModel/NoDevolatilisation/NoDevolatilisation.C
index f619c510e8298914b3cb8974ca32765ba6f6c7b5..0961826a23c089aea4dd03fe2d22f652f851cf35 100644
--- a/src/lagrangian/intermediate/submodels/Reacting/MassTransferModel/NoMassTransfer/NoMassTransfer.C
+++ b/src/lagrangian/intermediate/submodels/ReactingMultiphase/DevolatilisationModel/NoDevolatilisation/NoDevolatilisation.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -24,45 +24,45 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "NoMassTransfer.H"
+#include "NoDevolatilisation.H"
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
 template <class CloudType>
-Foam::NoMassTransfer<CloudType>::NoMassTransfer
+Foam::NoDevolatilisation<CloudType>::NoDevolatilisation
 (
-    const dictionary& dict,
-    CloudType& cloud
+    const dictionary&,
+    CloudType& owner
 )
 :
-    MassTransferModel<CloudType>(dict, cloud, typeName)
+    DevolatilisationModel<CloudType>(owner)
 {}
 
 
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
 template <class CloudType>
-Foam::NoMassTransfer<CloudType>::~NoMassTransfer()
+Foam::NoDevolatilisation<CloudType>::~NoDevolatilisation()
 {}
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 template<class CloudType>
-bool Foam::NoMassTransfer<CloudType>::active() const
+bool Foam::NoDevolatilisation<CloudType>::active() const
 {
     return false;
 }
 
 
 template<class CloudType>
-Foam::scalar Foam::NoMassTransfer<CloudType>::calculate
+Foam::scalar Foam::NoDevolatilisation<CloudType>::calculate
 (
     const scalar,
     const scalar,
     const scalar,
-    const scalarField&,
-    const scalarField&,
+    const scalar,
+    const scalar,
     const scalar,
     bool& canCombust
 ) const
diff --git a/src/lagrangian/intermediate/submodels/Reacting/MassTransferModel/NoMassTransfer/NoMassTransfer.H b/src/lagrangian/intermediate/submodels/ReactingMultiphase/DevolatilisationModel/NoDevolatilisation/NoDevolatilisation.H
similarity index 74%
rename from src/lagrangian/intermediate/submodels/Reacting/MassTransferModel/NoMassTransfer/NoMassTransfer.H
rename to src/lagrangian/intermediate/submodels/ReactingMultiphase/DevolatilisationModel/NoDevolatilisation/NoDevolatilisation.H
index 54f671c1201273be7792d54c8de55e15a15f9c65..687978a0a2a20af61a28e4b94fce803d669ad6f6 100644
--- a/src/lagrangian/intermediate/submodels/Reacting/MassTransferModel/NoMassTransfer/NoMassTransfer.H
+++ b/src/lagrangian/intermediate/submodels/ReactingMultiphase/DevolatilisationModel/NoDevolatilisation/NoDevolatilisation.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -23,66 +23,61 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::NoMassTransfer
+    Foam::NoDevolatilisation
 
 Description
-    Dummy mass transfer model for 'no mass transfer'
+    Dummy devolatilisation model for 'none'
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef NoMassTransfer_H
-#define NoMassTransfer_H
+#ifndef NoDevolatilisation_H
+#define NoDevolatilisation_H
 
-#include "MassTransferModel.H"
+#include "DevolatilisationModel.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 namespace Foam
 {
 /*---------------------------------------------------------------------------*\
-                            Class NoMassTransfer Declaration
+                     Class NoDevolatilisation Declaration
 \*---------------------------------------------------------------------------*/
 
 template<class CloudType>
-class NoMassTransfer
+class NoDevolatilisation
 :
-    public MassTransferModel<CloudType>
+    public DevolatilisationModel<CloudType>
 {
 
 public:
 
     //- Runtime type information
-    TypeName("NoMassTransfer");
+    TypeName("none");
 
 
     // Constructors
 
         //- Construct from dictionary
-        NoMassTransfer
-        (
-            const dictionary& dict,
-            CloudType& cloud
-        );
-
+        NoDevolatilisation(const dictionary&, CloudType& owner);
 
-    // Destructor
 
-        ~NoMassTransfer();
+    //- Destructor
+    virtual ~NoDevolatilisation();
 
 
     // Member Functions
 
-        //- Flag to indicate whether model activates mass transfer model
-        bool active() const;
+        //- Flag to indicate whether model activates devolatilisation model
+        virtual bool active() const;
 
         //- Update model
-        scalar calculate
+        virtual scalar calculate
         (
             const scalar,
             const scalar,
             const scalar,
-            const scalarField&,
-            const scalarField&,
+            const scalar,
+            const scalar,
             const scalar,
             bool&
         ) const;
@@ -96,7 +91,7 @@ public:
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 #ifdef NoRepository
-#   include "NoMassTransfer.C"
+#   include "NoDevolatilisation.C"
 #endif
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/lagrangian/intermediate/submodels/Reacting/MassTransferModel/SingleKineticRateDevolatilisation/SingleKineticRateDevolatilisation.C b/src/lagrangian/intermediate/submodels/ReactingMultiphase/DevolatilisationModel/SingleKineticRateDevolatilisation/SingleKineticRateDevolatilisation.C
similarity index 85%
rename from src/lagrangian/intermediate/submodels/Reacting/MassTransferModel/SingleKineticRateDevolatilisation/SingleKineticRateDevolatilisation.C
rename to src/lagrangian/intermediate/submodels/ReactingMultiphase/DevolatilisationModel/SingleKineticRateDevolatilisation/SingleKineticRateDevolatilisation.C
index 7b92768b25e96dc93e9d91ae6e1e6e7c667d8591..6f95dd54f9482924d3d355771a0ab00172f55c9c 100644
--- a/src/lagrangian/intermediate/submodels/Reacting/MassTransferModel/SingleKineticRateDevolatilisation/SingleKineticRateDevolatilisation.C
+++ b/src/lagrangian/intermediate/submodels/ReactingMultiphase/DevolatilisationModel/SingleKineticRateDevolatilisation/SingleKineticRateDevolatilisation.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -29,13 +29,14 @@ License
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
 template <class CloudType>
-Foam::SingleKineticRateDevolatilisation<CloudType>::SingleKineticRateDevolatilisation
+Foam::SingleKineticRateDevolatilisation<CloudType>::
+SingleKineticRateDevolatilisation
 (
     const dictionary& dict,
     CloudType& owner
 )
 :
-    MassTransferModel<CloudType>(dict, owner, typeName),
+    DevolatilisationModel<CloudType>(dict, owner, typeName),
     A1_(dimensionedScalar(this->coeffDict().lookup("A1")).value()),
     E_(dimensionedScalar(this->coeffDict().lookup("E")).value()),
     volatileResidualCoeff_
@@ -68,14 +69,14 @@ Foam::scalar Foam::SingleKineticRateDevolatilisation<CloudType>::calculate
     const scalar dt,
     const scalar mass0,
     const scalar mass,
-    const scalarField& YMixture0,
-    const scalarField& YMixture,
     const scalar T,
+    const scalar YVolatile0,
+    const scalar YVolatile,
     bool& canCombust
 ) const
 {
-    const scalar massVolatile0 = YMixture0[0]*mass;
-    const scalar massVolatile = YMixture[0]*mass;
+    const scalar massVolatile0 = YVolatile0*mass;
+    const scalar massVolatile = YVolatile*mass;
 
     if (massVolatile <= volatileResidualCoeff_*massVolatile0)
     {
@@ -85,7 +86,7 @@ Foam::scalar Foam::SingleKineticRateDevolatilisation<CloudType>::calculate
     // Kinetic rate
     const scalar kappa = A1_*exp(-E_/(specie::RR*T));
 
-    // Volatile mass transfer from particle to carrier gas phase
+    // Volatile devolatilisation from particle to carrier gas phase
     const scalar dMass = min(dt*kappa*massVolatile, massVolatile);
 
     return dMass;
diff --git a/src/lagrangian/intermediate/submodels/Reacting/MassTransferModel/SingleKineticRateDevolatilisation/SingleKineticRateDevolatilisation.H b/src/lagrangian/intermediate/submodels/ReactingMultiphase/DevolatilisationModel/SingleKineticRateDevolatilisation/SingleKineticRateDevolatilisation.H
similarity index 87%
rename from src/lagrangian/intermediate/submodels/Reacting/MassTransferModel/SingleKineticRateDevolatilisation/SingleKineticRateDevolatilisation.H
rename to src/lagrangian/intermediate/submodels/ReactingMultiphase/DevolatilisationModel/SingleKineticRateDevolatilisation/SingleKineticRateDevolatilisation.H
index 6db27bffce94cd39972be3549826af5b8ba18652..48fec17b833019497d909c42bfebdc0e2e7f5838 100644
--- a/src/lagrangian/intermediate/submodels/Reacting/MassTransferModel/SingleKineticRateDevolatilisation/SingleKineticRateDevolatilisation.H
+++ b/src/lagrangian/intermediate/submodels/ReactingMultiphase/DevolatilisationModel/SingleKineticRateDevolatilisation/SingleKineticRateDevolatilisation.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -33,7 +33,7 @@ Description
 #ifndef SingleKineticRateDevolatilisation_H
 #define SingleKineticRateDevolatilisation_H
 
-#include "MassTransferModel.H"
+#include "DevolatilisationModel.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -46,9 +46,8 @@ namespace Foam
 template<class CloudType>
 class SingleKineticRateDevolatilisation
 :
-    public MassTransferModel<CloudType>
+    public DevolatilisationModel<CloudType>
 {
-
     // Private data
 
         // Model constants
@@ -81,25 +80,24 @@ public:
         );
 
 
-    // Destructor
-
-        ~SingleKineticRateDevolatilisation();
+    //- Destructor
+    virtual ~SingleKineticRateDevolatilisation();
 
 
     // Member Functions
 
-        //- Flag to indicate whether model activates mass transfer model
-        bool active() const;
+        //- Flag to indicate whether model activates devolatilisation model
+        virtual bool active() const;
 
         //- Update model
-        scalar calculate
+        virtual scalar calculate
         (
             const scalar dt,
             const scalar mass0,
             const scalar mass,
-            const scalarField& YMixture0,
-            const scalarField& YMixture,
             const scalar T,
+            const scalar YVolatile0,
+            const scalar YVolatile,
             bool& canCombust
         ) const;
 };
diff --git a/src/lagrangian/intermediate/submodels/Reacting/SurfaceReactionModel/NoSurfaceReaction/NoSurfaceReaction.C b/src/lagrangian/intermediate/submodels/ReactingMultiphase/SurfaceReactionModel/NoSurfaceReaction/NoSurfaceReaction.C
similarity index 79%
rename from src/lagrangian/intermediate/submodels/Reacting/SurfaceReactionModel/NoSurfaceReaction/NoSurfaceReaction.C
rename to src/lagrangian/intermediate/submodels/ReactingMultiphase/SurfaceReactionModel/NoSurfaceReaction/NoSurfaceReaction.C
index 3923455a9219d32f099112d19936c705724f5f3b..53eecf01f92c3452f6abd714291d02f765c644bf 100644
--- a/src/lagrangian/intermediate/submodels/Reacting/SurfaceReactionModel/NoSurfaceReaction/NoSurfaceReaction.C
+++ b/src/lagrangian/intermediate/submodels/ReactingMultiphase/SurfaceReactionModel/NoSurfaceReaction/NoSurfaceReaction.C
@@ -31,11 +31,11 @@ License
 template <class CloudType>
 Foam::NoSurfaceReaction<CloudType>::NoSurfaceReaction
 (
-    const dictionary& dict,
+    const dictionary&,
     CloudType& owner
 )
 :
-    SurfaceReactionModel<CloudType>(dict, owner, typeName)
+    SurfaceReactionModel<CloudType>(owner)
 {}
 
 
@@ -56,27 +56,29 @@ bool Foam::NoSurfaceReaction<CloudType>::active() const
 
 
 template<class CloudType>
-void Foam::NoSurfaceReaction<CloudType>::calculate
+Foam::scalar Foam::NoSurfaceReaction<CloudType>::calculate
 (
-    const scalar dt,
-    const label celli,
-    const scalar dp,
-    const scalar T0,
-    const scalar T1,
-    const scalar Tc,
-    const scalar pc,
-    const scalar rhoc,
-    const scalar massp,
-    const scalarList& dMassMT,
-    scalarField& YGas,
-    scalarField& YLiquid,
-    scalarField& YSolid,
-    scalarField& YMixture,
-    scalarList& dMassSR,
-    scalar& dhRet
+    const scalar,
+    const label,
+    const scalar,
+    const scalar,
+    const scalar,
+    const scalar,
+    const scalar,
+    const scalar,
+    const scalarField&,
+    const scalarField&,
+    const scalarField&,
+    const scalarField&,
+    const scalarField&,
+    scalarField&,
+    scalarField&,
+    scalarField&,
+    scalarField&
 ) const
 {
     // do nothing
+    return 0.0;
 }
 
 
diff --git a/src/lagrangian/intermediate/submodels/Reacting/SurfaceReactionModel/NoSurfaceReaction/NoSurfaceReaction.H b/src/lagrangian/intermediate/submodels/ReactingMultiphase/SurfaceReactionModel/NoSurfaceReaction/NoSurfaceReaction.H
similarity index 78%
rename from src/lagrangian/intermediate/submodels/Reacting/SurfaceReactionModel/NoSurfaceReaction/NoSurfaceReaction.H
rename to src/lagrangian/intermediate/submodels/ReactingMultiphase/SurfaceReactionModel/NoSurfaceReaction/NoSurfaceReaction.H
index 18aaeb8179527b05349b0bfa15f0f48fa892d5ce..d3c99ebd5dad8546cda80b8469a8a0bdab536ee3 100644
--- a/src/lagrangian/intermediate/submodels/Reacting/SurfaceReactionModel/NoSurfaceReaction/NoSurfaceReaction.H
+++ b/src/lagrangian/intermediate/submodels/ReactingMultiphase/SurfaceReactionModel/NoSurfaceReaction/NoSurfaceReaction.H
@@ -26,7 +26,7 @@ Class
     Foam::NoSurfaceReaction
 
 Description
-    Dummy Devolatisation model for 'no devolatisation'
+    Dummy surface reaction model for 'none'
 
 \*---------------------------------------------------------------------------*/
 
@@ -40,7 +40,7 @@ Description
 namespace Foam
 {
 /*---------------------------------------------------------------------------*\
-                            Class NoSurfaceReaction Declaration
+                     Class NoSurfaceReaction Declaration
 \*---------------------------------------------------------------------------*/
 
 template<class CloudType>
@@ -48,11 +48,10 @@ class NoSurfaceReaction
 :
     public SurfaceReactionModel<CloudType>
 {
-
 public:
 
     //- Runtime type information
-    TypeName("NoSurfaceReaction");
+    TypeName("none");
 
 
     // Constructors
@@ -65,35 +64,35 @@ public:
         );
 
 
-    // Destructor
-
-        ~NoSurfaceReaction();
+    //- Destructor
+    virtual ~NoSurfaceReaction();
 
 
     // Member Functions
 
         //- Flag to indicate whether model activates devolatisation model
-        bool active() const;
+        virtual bool active() const;
 
         //- Update surface reactions
-        void calculate
+        virtual scalar calculate
         (
             const scalar dt,
-            const label celli,
-            const scalar dp,
-            const scalar T0,
-            const scalar T1,
+            const label cellI,
+            const scalar d,
+            const scalar T,
             const scalar Tc,
             const scalar pc,
             const scalar rhoc,
-            const scalar massp,
-            const scalarList& dMassMT,
-            scalarField& YGas,
-            scalarField& YLiquid,
-            scalarField& YSolid,
-            scalarField& YMixture,
-            scalarList& dMassSR,
-            scalar& dhRet
+            const scalar mass,
+            const scalarField& YGas,
+            const scalarField& YLiquid,
+            const scalarField& YSolid,
+            const scalarField& YMixture,
+            const scalarField& dMassVolatile,
+            scalarField& dMassGas,
+            scalarField& dMassLiquid,
+            scalarField& dMassSolid,
+            scalarField& dMassSRCarrier
         ) const;
 };
 
diff --git a/src/lagrangian/intermediate/submodels/Reacting/SurfaceReactionModel/SurfaceReactionModel/NewSurfaceReactionModel.C b/src/lagrangian/intermediate/submodels/ReactingMultiphase/SurfaceReactionModel/SurfaceReactionModel/NewSurfaceReactionModel.C
similarity index 88%
rename from src/lagrangian/intermediate/submodels/Reacting/SurfaceReactionModel/SurfaceReactionModel/NewSurfaceReactionModel.C
rename to src/lagrangian/intermediate/submodels/ReactingMultiphase/SurfaceReactionModel/SurfaceReactionModel/NewSurfaceReactionModel.C
index 2303e58f21c0e81702bff59ba360f925d533e5bc..348bfa8a8c7dac79636131ac7489b0b27baefd27 100644
--- a/src/lagrangian/intermediate/submodels/Reacting/SurfaceReactionModel/SurfaceReactionModel/NewSurfaceReactionModel.C
+++ b/src/lagrangian/intermediate/submodels/ReactingMultiphase/SurfaceReactionModel/SurfaceReactionModel/NewSurfaceReactionModel.C
@@ -36,10 +36,7 @@ Foam::SurfaceReactionModel<CloudType>::New
     CloudType& owner
 )
 {
-    word SurfaceReactionModelType
-    (
-        dict.lookup("SurfaceReactionModel")
-    );
+    word SurfaceReactionModelType(dict.lookup("SurfaceReactionModel"));
 
     Info<< "Selecting SurfaceReactionModel " << SurfaceReactionModelType
         << endl;
@@ -52,12 +49,14 @@ Foam::SurfaceReactionModel<CloudType>::New
         FatalErrorIn
         (
             "SurfaceReactionModel<CloudType>::New"
-            "(const dictionary&, CloudType&)"
-        )
-            << "Unknown SurfaceReactionModelType type "
+            "("
+                "const dictionary&, "
+                "CloudType&"
+            ")"
+        )   << "Unknown SurfaceReactionModelType type "
             << SurfaceReactionModelType
             << ", constructor not in hash table" << nl << nl
-            << "    Valid SurfaceReactionModel types are :" << nl
+            << "    Valid SurfaceReactionModel types are:" << nl
             << dictionaryConstructorTablePtr_->toc() << exit(FatalError);
     }
 
diff --git a/src/lagrangian/intermediate/submodels/Reacting/SurfaceReactionModel/SurfaceReactionModel/SurfaceReactionModel.C b/src/lagrangian/intermediate/submodels/ReactingMultiphase/SurfaceReactionModel/SurfaceReactionModel/SurfaceReactionModel.C
similarity index 91%
rename from src/lagrangian/intermediate/submodels/Reacting/SurfaceReactionModel/SurfaceReactionModel/SurfaceReactionModel.C
rename to src/lagrangian/intermediate/submodels/ReactingMultiphase/SurfaceReactionModel/SurfaceReactionModel/SurfaceReactionModel.C
index 1173ea1c59d17e30077a49cacf61a6194957a55d..79e953e873263b6259b5f7dd5a22a75e8cf4b988 100644
--- a/src/lagrangian/intermediate/submodels/Reacting/SurfaceReactionModel/SurfaceReactionModel/SurfaceReactionModel.C
+++ b/src/lagrangian/intermediate/submodels/ReactingMultiphase/SurfaceReactionModel/SurfaceReactionModel/SurfaceReactionModel.C
@@ -28,6 +28,18 @@ License
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
+template<class CloudType>
+Foam::SurfaceReactionModel<CloudType>::SurfaceReactionModel
+(
+    CloudType& owner
+)
+:
+    dict_(dictionary::null),
+    owner_(owner),
+    coeffDict_(dictionary::null)
+{}
+
+
 template<class CloudType>
 Foam::SurfaceReactionModel<CloudType>::SurfaceReactionModel
 (
@@ -35,7 +47,8 @@ Foam::SurfaceReactionModel<CloudType>::SurfaceReactionModel
     CloudType& owner,
     const word& type
 )
-:   dict_(dict),
+:
+    dict_(dict),
     owner_(owner),
     coeffDict_(dict.subDict(type + "Coeffs"))
 {}
@@ -49,6 +62,7 @@ Foam::SurfaceReactionModel<CloudType>::~SurfaceReactionModel()
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
 template<class CloudType>
 const CloudType& Foam::SurfaceReactionModel<CloudType>::owner() const
 {
diff --git a/src/lagrangian/intermediate/submodels/Reacting/SurfaceReactionModel/SurfaceReactionModel/SurfaceReactionModel.H b/src/lagrangian/intermediate/submodels/ReactingMultiphase/SurfaceReactionModel/SurfaceReactionModel/SurfaceReactionModel.H
similarity index 73%
rename from src/lagrangian/intermediate/submodels/Reacting/SurfaceReactionModel/SurfaceReactionModel/SurfaceReactionModel.H
rename to src/lagrangian/intermediate/submodels/ReactingMultiphase/SurfaceReactionModel/SurfaceReactionModel/SurfaceReactionModel.H
index d89bf0cbf643084170edf3e4d564200721b38b96..f876563fec613eadc020828d1ab89e9cea0bcaf9 100644
--- a/src/lagrangian/intermediate/submodels/Reacting/SurfaceReactionModel/SurfaceReactionModel/SurfaceReactionModel.H
+++ b/src/lagrangian/intermediate/submodels/ReactingMultiphase/SurfaceReactionModel/SurfaceReactionModel/SurfaceReactionModel.H
@@ -25,7 +25,6 @@ License
 Class
     Foam::SurfaceReactionModel
 
-
 Description
     Templated surface reaction model class
 
@@ -43,7 +42,6 @@ SourceFiles
 #include "runTimeSelectionTables.H"
 
 #include "scalarField.H"
-#include "scalarList.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -57,13 +55,12 @@ namespace Foam
 template<class CloudType>
 class SurfaceReactionModel
 {
-
     // Private data
 
         //- The cloud dictionary
         const dictionary& dict_;
 
-        // reference to the owner cloud class
+        //- Reference to the owner cloud class
         CloudType& owner_;
 
         //- The coefficients dictionary
@@ -92,6 +89,9 @@ public:
 
     // Constructors
 
+        //- Construct null from owner
+        SurfaceReactionModel(CloudType& owner);
+
         //- Construct from dictionary
         SurfaceReactionModel
         (
@@ -101,18 +101,16 @@ public:
         );
 
 
-    // Destructor
-
-        virtual ~SurfaceReactionModel();
+    //- Destructor
+    virtual ~SurfaceReactionModel();
 
 
-    // Selector
-
-        static autoPtr<SurfaceReactionModel<CloudType> > New
-        (
-            const dictionary& dict,
-            CloudType& cloud
-        );
+    //- Selector
+    static autoPtr<SurfaceReactionModel<CloudType> > New
+    (
+        const dictionary& dict,
+        CloudType& cloud
+    );
 
 
     // Access
@@ -129,28 +127,30 @@ public:
 
     // Member Functions
 
-        //- Flag to indicate whether model activates devolatisation model
+        //- Flag to indicate whether model activates surface reaction model
         virtual bool active() const = 0;
 
         //- Update surface reactions
-        virtual void calculate
+        //  Returns the heat of reaction
+        virtual scalar calculate
         (
             const scalar dt,
-            const label celli,
-            const scalar dp,
-            const scalar T0,
-            const scalar T1,
+            const label cellI,
+            const scalar d,
+            const scalar T,
             const scalar Tc,
             const scalar pc,
             const scalar rhoc,
-            const scalar massp,
-            const scalarList& dMassMT,
-            scalarField& YGas,
-            scalarField& YLiquid,
-            scalarField& YSolid,
-            scalarField& YMixture,
-            scalarList& dMassSR,
-            scalar& dhRet
+            const scalar mass,
+            const scalarField& YGas,
+            const scalarField& YLiquid,
+            const scalarField& YSolid,
+            const scalarField& YMixture,
+            const scalarField& dMassVolatile,
+            scalarField& dMassGas,
+            scalarField& dMassLiquid,
+            scalarField& dMassSolid,
+            scalarField& dMassSRCarrier
         ) const = 0;
 };
 
@@ -172,22 +172,18 @@ public:
     );
 
 
-#define makeSurfaceReactionModelType(SS, CloudType, ParcelType)               \
-                                                                              \
-    defineNamedTemplateTypeNameAndDebug(SS<CloudType<ParcelType> >, 0);       \
-                                                                              \
-    SurfaceReactionModel<CloudType<ParcelType> >::                            \
-        adddictionaryConstructorToTable<SS<CloudType<ParcelType> > >          \
-            add##SS##CloudType##ParcelType##ConstructorToTable_;
-
-
-#define makeSurfaceReactionModelTypeInstance(SS, CloudType, ParcelType)       \
+#define makeSurfaceReactionModelThermoType(SS, CloudType, ParcelType, ThermoType)\
                                                                               \
-    defineNamedTemplateTypeNameAndDebug(SS, 0);                               \
+    defineNamedTemplateTypeNameAndDebug                                       \
+    (                                                                         \
+        SS<CloudType<ParcelType<ThermoType> > >,                              \
+        0                                                                     \
+    );                                                                        \
                                                                               \
-    SurfaceReactionModel<CloudType<ParcelType> >::                            \
-        adddictionaryConstructorToTable<SS>                                   \
-            add##SS##CloudType##ParcelType##ConstructorToTable_;
+    SurfaceReactionModel<CloudType<ParcelType<ThermoType> > >::               \
+        adddictionaryConstructorToTable                                       \
+            <SS<CloudType<ParcelType<ThermoType> > > >                        \
+            add##SS##CloudType##ParcelType##ThermoType##ConstructorToTable_;
 
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/lagrangian/intermediate/submodels/Thermodynamic/HeatTransferModel/HeatTransferModel/HeatTransferModel.C b/src/lagrangian/intermediate/submodels/Thermodynamic/HeatTransferModel/HeatTransferModel/HeatTransferModel.C
index 64d33f815f0c64d21cb3d369a5011b98c50e3549..37b5276269d3f01e9563f6f4b087c13afc63647a 100644
--- a/src/lagrangian/intermediate/submodels/Thermodynamic/HeatTransferModel/HeatTransferModel/HeatTransferModel.C
+++ b/src/lagrangian/intermediate/submodels/Thermodynamic/HeatTransferModel/HeatTransferModel/HeatTransferModel.C
@@ -28,6 +28,15 @@ License
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
+template<class CloudType>
+Foam::HeatTransferModel<CloudType>::HeatTransferModel(CloudType& owner)
+:
+    dict_(dictionary::null),
+    owner_(owner),
+    coeffDict_(dictionary::null)
+{}
+
+
 template<class CloudType>
 Foam::HeatTransferModel<CloudType>::HeatTransferModel
 (
@@ -35,7 +44,8 @@ Foam::HeatTransferModel<CloudType>::HeatTransferModel
     CloudType& owner,
     const word& type
 )
-:   dict_(dict),
+:
+    dict_(dict),
     owner_(owner),
     coeffDict_(dict.subDict(type + "Coeffs"))
 {}
@@ -83,7 +93,7 @@ Foam::scalar Foam::HeatTransferModel<CloudType>::h
     const scalar muc
 ) const
 {
-    const scalar Re = rhoc*mag(Ur)*dp/(muc + SMALL);
+    const scalar Re = rhoc*mag(Ur)*dp/(muc + ROOTVSMALL);
 
 //    const scalar Pr = muc/alphac;
     const scalar Pr = this->Pr();
@@ -108,7 +118,7 @@ Foam::scalar Foam::HeatTransferModel<CloudType>::Cu
     const scalar muc
 ) const
 {
-    const scalar Re = rhoc*mag(Ur)*dp/(muc + SMALL);
+    const scalar Re = rhoc*mag(Ur)*dp/(muc + ROOTVSMALL);
 
 //    const scalar Pr = muc/alphac;
     const scalar Pr = this->Pr();
diff --git a/src/lagrangian/intermediate/submodels/Thermodynamic/HeatTransferModel/HeatTransferModel/HeatTransferModel.H b/src/lagrangian/intermediate/submodels/Thermodynamic/HeatTransferModel/HeatTransferModel/HeatTransferModel.H
index 1866093986ec5fa758c474aa59b70aaf16a0a45f..baf61f2395e973377c975c5f21b4c8f5c6b313fd 100644
--- a/src/lagrangian/intermediate/submodels/Thermodynamic/HeatTransferModel/HeatTransferModel/HeatTransferModel.H
+++ b/src/lagrangian/intermediate/submodels/Thermodynamic/HeatTransferModel/HeatTransferModel/HeatTransferModel.H
@@ -25,7 +25,6 @@ License
 Class
     Foam::HeatTransferModel
 
-
 Description
     Templated heat transfer model class
 
@@ -54,7 +53,6 @@ namespace Foam
 template<class CloudType>
 class HeatTransferModel
 {
-
     // Private data
 
         //- The cloud dictionary
@@ -63,7 +61,7 @@ class HeatTransferModel
         //- Reference to the owner cloud class
         CloudType& owner_;
 
-        //- The coefficents dictionary
+        //- The coefficients dictionary
         const dictionary coeffDict_;
 
 
@@ -88,6 +86,9 @@ public:
 
     // Constructors
 
+        //- Construct null from owner
+        HeatTransferModel(CloudType& owner);
+
         //- Construct from dictionary
         HeatTransferModel
         (
@@ -97,18 +98,16 @@ public:
         );
 
 
-    // Destructor
-
-        virtual ~HeatTransferModel();
+    //- Destructor
+    virtual ~HeatTransferModel();
 
 
-    // Selector
-
-        static autoPtr<HeatTransferModel<CloudType> > New
-        (
-            const dictionary& dict,
-            CloudType& owner
-        );
+    //- Selector
+    static autoPtr<HeatTransferModel<CloudType> > New
+    (
+        const dictionary& dict,
+        CloudType& owner
+    );
 
 
     // Access
@@ -139,7 +138,7 @@ public:
         virtual scalar Pr() const = 0;
 
         //- Return heat transfer coefficient
-        scalar h
+        virtual scalar h
         (
             const scalar dp,
             const vector& Ur,
@@ -151,7 +150,7 @@ public:
         ) const;
 
         //- Return linearised coefficient for temperature equation
-        scalar Cu
+        virtual scalar Cu
         (
             const scalar dp,
             const vector& Ur,
@@ -190,6 +189,20 @@ public:
             add##SS##CloudType##ParcelType##ConstructorToTable_;
 
 
+#define makeHeatTransferModelThermoType(SS, CloudType, ParcelType, ThermoType)\
+                                                                              \
+    defineNamedTemplateTypeNameAndDebug                                       \
+    (                                                                         \
+        SS<CloudType<ParcelType<ThermoType> > >,                              \
+        0                                                                     \
+    );                                                                        \
+                                                                              \
+    HeatTransferModel<CloudType<ParcelType<ThermoType> > >::                  \
+        adddictionaryConstructorToTable                                       \
+            <SS<CloudType<ParcelType<ThermoType> > > >                        \
+            add##SS##CloudType##ParcelType##ThermoType##ConstructorToTable_;
+
+
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 #ifdef NoRepository
diff --git a/src/lagrangian/intermediate/submodels/Thermodynamic/HeatTransferModel/HeatTransferModel/NewHeatTransferModel.C b/src/lagrangian/intermediate/submodels/Thermodynamic/HeatTransferModel/HeatTransferModel/NewHeatTransferModel.C
index fb0362bbc3ae584bd27e0fa4f4d6a9d40af0044c..d5d4748c4db4727e12eb5164a8bd2285c124599c 100644
--- a/src/lagrangian/intermediate/submodels/Thermodynamic/HeatTransferModel/HeatTransferModel/NewHeatTransferModel.C
+++ b/src/lagrangian/intermediate/submodels/Thermodynamic/HeatTransferModel/HeatTransferModel/NewHeatTransferModel.C
@@ -36,10 +36,7 @@ Foam::HeatTransferModel<CloudType>::New
     CloudType& owner
 )
 {
-    word HeatTransferModelType
-    (
-        dict.lookup("HeatTransferModel")
-    );
+    word HeatTransferModelType(dict.lookup("HeatTransferModel"));
 
     Info<< "Selecting HeatTransferModel " << HeatTransferModelType << endl;
 
@@ -51,12 +48,14 @@ Foam::HeatTransferModel<CloudType>::New
         FatalErrorIn
         (
             "HeatTransferModel<CloudType>::New"
-            "(const dictionary&, CloudType&)"
-        )
-            << "Unknown HeatTransferModelType type "
+            "("
+                "const dictionary&, "
+                "CloudType&"
+            ")"
+        )   << "Unknown HeatTransferModelType type "
             << HeatTransferModelType
             << ", constructor not in hash table" << nl << nl
-            << "    Valid HeatTransferModel types are :" << nl
+            << "    Valid HeatTransferModel types are:" << nl
             << dictionaryConstructorTablePtr_->toc() << exit(FatalError);
     }
 
diff --git a/src/lagrangian/intermediate/submodels/Thermodynamic/HeatTransferModel/NoHeatTransfer/NoHeatTransfer.C b/src/lagrangian/intermediate/submodels/Thermodynamic/HeatTransferModel/NoHeatTransfer/NoHeatTransfer.C
index ab80ae9895f3109e6d769fdcbd39dfdf88c9ebbb..c50dd4d511f29a3ba4ff25980140e949e57d96a6 100644
--- a/src/lagrangian/intermediate/submodels/Thermodynamic/HeatTransferModel/NoHeatTransfer/NoHeatTransfer.C
+++ b/src/lagrangian/intermediate/submodels/Thermodynamic/HeatTransferModel/NoHeatTransfer/NoHeatTransfer.C
@@ -31,11 +31,11 @@ License
 template <class CloudType>
 Foam::NoHeatTransfer<CloudType>::NoHeatTransfer
 (
-    const dictionary& dict,
-    CloudType& cloud
+    const dictionary&,
+    CloudType& owner
 )
 :
-    HeatTransferModel<CloudType>(dict, cloud, typeName)
+    HeatTransferModel<CloudType>(owner)
 {}
 
 
diff --git a/src/lagrangian/intermediate/submodels/Thermodynamic/HeatTransferModel/NoHeatTransfer/NoHeatTransfer.H b/src/lagrangian/intermediate/submodels/Thermodynamic/HeatTransferModel/NoHeatTransfer/NoHeatTransfer.H
index 641605465ebde9ec14937007d7ce161f91f53843..2941b4c2b7b9f6eb08515dff5e39c669fcc333a7 100644
--- a/src/lagrangian/intermediate/submodels/Thermodynamic/HeatTransferModel/NoHeatTransfer/NoHeatTransfer.H
+++ b/src/lagrangian/intermediate/submodels/Thermodynamic/HeatTransferModel/NoHeatTransfer/NoHeatTransfer.H
@@ -26,7 +26,7 @@ Class
     Foam::NoHeatTransfer
 
 Description
-    Dummy heat transfer model for 'no heat transfer'
+    Dummy heat transfer model for 'none'
 
 \*---------------------------------------------------------------------------*/
 
@@ -40,7 +40,7 @@ Description
 namespace Foam
 {
 /*---------------------------------------------------------------------------*\
-                          Class NoHeatTransfer Declaration
+                       Class NoHeatTransfer Declaration
 \*---------------------------------------------------------------------------*/
 
 template<class CloudType>
@@ -48,42 +48,36 @@ class NoHeatTransfer
 :
     public HeatTransferModel<CloudType>
 {
-
 public:
 
     //- Runtime type information
-    TypeName("NoHeatTransfer");
+    TypeName("none");
 
 
     // Constructors
 
         //- Construct from dictionary
-        NoHeatTransfer
-        (
-            const dictionary& dict,
-            CloudType& cloud
-        );
-
+        NoHeatTransfer(const dictionary&, CloudType& owner);
 
-    // Destructor
 
-        ~NoHeatTransfer();
+    //- Destructor
+    virtual ~NoHeatTransfer();
 
 
     // Member Functions
 
         //- Flag to indicate whether model activates heat transfer model
-        bool active() const;
+        virtual bool active() const;
 
         //- Nusselt number
-        scalar Nu
+        virtual scalar Nu
         (
             const scalar,
             const scalar
         ) const;
 
         //- Prandtl number
-        scalar Pr() const;
+        virtual scalar Pr() const;
 };
 
 
diff --git a/src/lagrangian/intermediate/submodels/Thermodynamic/HeatTransferModel/RanzMarshall/RanzMarshall.C b/src/lagrangian/intermediate/submodels/Thermodynamic/HeatTransferModel/RanzMarshall/RanzMarshall.C
index 3cfe1f712c78f92c238bf23aee85ffa3fe6440fe..8e9b6e9379e1dacf996c00baed606fcf1f092bc2 100644
--- a/src/lagrangian/intermediate/submodels/Thermodynamic/HeatTransferModel/RanzMarshall/RanzMarshall.C
+++ b/src/lagrangian/intermediate/submodels/Thermodynamic/HeatTransferModel/RanzMarshall/RanzMarshall.C
@@ -24,8 +24,6 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "error.H"
-
 #include "RanzMarshall.H"
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
@@ -65,7 +63,7 @@ Foam::scalar Foam::RanzMarshall<CloudType>::Nu
     const scalar Pr
 ) const
 {
-    return 2.0 + 0.6*pow(Re, 1.0/2.0)*pow(Pr, 1.0/3.0);
+    return 2.0 + 0.6*pow(Re, 0.5)*pow(Pr, 0.333);
 }
 
 
diff --git a/src/lagrangian/intermediate/submodels/Thermodynamic/HeatTransferModel/RanzMarshall/RanzMarshall.H b/src/lagrangian/intermediate/submodels/Thermodynamic/HeatTransferModel/RanzMarshall/RanzMarshall.H
index 09a3abb4f65220f5fbf4b2d934095243ba54be71..f010160c1feb51aef1ec100b5fd4ae04692dc95c 100644
--- a/src/lagrangian/intermediate/submodels/Thermodynamic/HeatTransferModel/RanzMarshall/RanzMarshall.H
+++ b/src/lagrangian/intermediate/submodels/Thermodynamic/HeatTransferModel/RanzMarshall/RanzMarshall.H
@@ -48,7 +48,6 @@ class RanzMarshall
 :
     public HeatTransferModel<CloudType>
 {
-
     // Private data
 
         // Prandtl number
@@ -71,25 +70,24 @@ public:
         );
 
 
-    // Destructor
-
-        ~RanzMarshall();
+    //- Destructor
+    virtual ~RanzMarshall();
 
 
     // Member Functions
 
         //- Flag to indicate whether model activates heat transfer model
-        bool active() const;
+        virtual bool active() const;
 
         //- Nusselt number
-        scalar Nu
+        virtual scalar Nu
         (
             const scalar Re,
             const scalar Pr
         ) const;
 
         //- Prandtl number
-        scalar Pr() const;
+        virtual scalar Pr() const;
 };
 
 
diff --git a/src/lagrangian/intermediate/submodels/Thermodynamic/InjectionModel/ThermoLookupTableInjection/ThermoLookupTableInjection.C b/src/lagrangian/intermediate/submodels/Thermodynamic/InjectionModel/ThermoLookupTableInjection/ThermoLookupTableInjection.C
new file mode 100644
index 0000000000000000000000000000000000000000..ad7e13b6d20417d9364345d3da04628588241777
--- /dev/null
+++ b/src/lagrangian/intermediate/submodels/Thermodynamic/InjectionModel/ThermoLookupTableInjection/ThermoLookupTableInjection.C
@@ -0,0 +1,250 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "ThermoLookupTableInjection.H"
+#include "scalarIOList.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+template<class CloudType>
+Foam::label Foam::ThermoLookupTableInjection<CloudType>::INPUT_FILE_COLS = 11;
+
+// * * * * * * * * * * * * Protected Member Functions  * * * * * * * * * * * //
+
+template<class CloudType>
+Foam::label Foam::ThermoLookupTableInjection<CloudType>::parcelsToInject
+(
+    const scalar time0,
+    const scalar time1
+) const
+{
+    if ((time0 >= 0.0) && (time0 < duration_))
+    {
+        return round(injectorCells_.size()*(time1 - time0)*nParcelsPerSecond_);
+    }
+    else
+    {
+        return 0;
+    }
+}
+
+
+template<class CloudType>
+Foam::scalar Foam::ThermoLookupTableInjection<CloudType>::volumeToInject
+(
+    const scalar time0,
+    const scalar time1
+) const
+{
+    scalar volume = 0.0;
+    if ((time0 >= 0.0) && (time0 < duration_))
+    {
+        forAll(mDot_, injectorI)
+        {
+            volume += mDot_[injectorI]/rho_[injectorI]*(time1 - time0);
+        }
+    }
+
+    return volume;
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template<class CloudType>
+Foam::ThermoLookupTableInjection<CloudType>::ThermoLookupTableInjection
+(
+    const dictionary& dict,
+    CloudType& owner
+)
+:
+    InjectionModel<CloudType>(dict, owner, typeName),
+    inputFileName_(this->coeffDict().lookup("inputFile")),
+    duration_(readScalar(this->coeffDict().lookup("duration"))),
+    nParcelsPerSecond_
+    (
+        readScalar(this->coeffDict().lookup("parcelsPerSecond"))
+    ),
+    x_(0),
+    U_(0),
+    d_(0),
+    rho_(0),
+    mDot_(0),
+    T_(0),
+    cp_(0),
+    injectorCells_(0)
+{
+    scalarListIOList injectorData
+    (
+        IOobject
+        (
+            inputFileName_,
+            owner.db().time().constant(),
+            owner.db(),
+            IOobject::MUST_READ,
+            IOobject::NO_WRITE
+        )
+    );
+
+    x_.setSize(injectorData.size());
+    U_.setSize(injectorData.size());
+    d_.setSize(injectorData.size());
+    rho_.setSize(injectorData.size());
+    mDot_.setSize(injectorData.size());
+    T_.setSize(injectorData.size());
+    cp_.setSize(injectorData.size());
+
+    // Populate lists
+    forAll(injectorData, injectorI)
+    {
+        if (injectorData[injectorI].size() != INPUT_FILE_COLS)
+        {
+            FatalErrorIn
+            (
+                "ThermoLookupTableInjection"
+                "("
+                    "const dictionary&,"
+                    "CloudType& owner"
+                ")"
+            )   << "Incorrect number of entries in injector specification "
+                << "- found " << injectorData[injectorI].size()
+                << ", expected " << INPUT_FILE_COLS << ":" << nl
+                << "    x0 x1 x2 u0 u1 u2 d rho mDot T cp"
+                << nl << exit(FatalError);
+        }
+        x_[injectorI].component(0) = injectorData[injectorI][0];
+        x_[injectorI].component(1) = injectorData[injectorI][1];
+        x_[injectorI].component(2) = injectorData[injectorI][2];
+        U_[injectorI].component(0) = injectorData[injectorI][3];
+        U_[injectorI].component(1) = injectorData[injectorI][4];
+        U_[injectorI].component(2) = injectorData[injectorI][5];
+        d_[injectorI] = injectorData[injectorI][6];
+        rho_[injectorI] = injectorData[injectorI][7];
+        mDot_[injectorI] = injectorData[injectorI][8];
+        T_[injectorI] = injectorData[injectorI][9];
+        cp_[injectorI] = injectorData[injectorI][10];
+   }
+
+    // Set/cache the injector cells
+    injectorCells_.setSize(injectorData.size());
+    forAll(x_, injectorI)
+    {
+        this->findCellAtPosition(injectorCells_[injectorI], x_[injectorI]);
+    }
+
+    // Determine volume of particles to inject
+    this->volumeTotal_ = 0.0;
+    forAll(mDot_, injectorI)
+    {
+        this->volumeTotal_ += mDot_[injectorI]/rho_[injectorI];
+    }
+    this->volumeTotal_ *= duration_;
+}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+template<class CloudType>
+Foam::ThermoLookupTableInjection<CloudType>::~ThermoLookupTableInjection()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+template<class CloudType>
+bool Foam::ThermoLookupTableInjection<CloudType>::active() const
+{
+    return true;
+}
+
+
+template<class CloudType>
+Foam::scalar Foam::ThermoLookupTableInjection<CloudType>::timeEnd() const
+{
+    return this->SOI_ + duration_;
+}
+
+
+template<class CloudType>
+void Foam::ThermoLookupTableInjection<CloudType>::setPositionAndCell
+(
+    const label parcelI,
+    const label nParcels,
+    const scalar time,
+    vector& position,
+    label& cellOwner
+)
+{
+    label injectorI = parcelI*injectorCells_.size()/nParcels;
+
+    position = x_[injectorI];
+    cellOwner = injectorCells_[injectorI];
+}
+
+
+template<class CloudType>
+void Foam::ThermoLookupTableInjection<CloudType>::setProperties
+(
+    const label parcelI,
+    const label nParcels,
+    const scalar,
+    typename CloudType::parcelType* pPtr
+)
+{
+    label injectorI = parcelI*injectorCells_.size()/nParcels;
+
+    // set particle velocity
+    parcel.U() = U_[injectorI];
+
+    // set particle diameter
+    parcel.d() = d_[injectorI];
+
+    // set particle density
+    parcel.rho() = rho_[injectorI];
+
+    // set particle temperature
+    parcel.T() = T_[injectorI];
+
+    // set particle specific heat capacity
+    parcel.cp() = cp_[injectorI];
+}
+
+
+template<class CloudType>
+bool Foam::ThermoLookupTableInjection<CloudType>::fullyDescribed() const
+{
+    return true;
+}
+
+
+template<class CloudType>
+bool Foam::ThermoLookupTableInjection<CloudType>::validInjection(const label)
+{
+    return true;
+}
+
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/submodels/Thermodynamic/InjectionModel/ThermoLookupTableInjection/ThermoLookupTableInjection.H b/src/lagrangian/intermediate/submodels/Thermodynamic/InjectionModel/ThermoLookupTableInjection/ThermoLookupTableInjection.H
new file mode 100644
index 0000000000000000000000000000000000000000..5c53b0337e2dbfa885cd175846cfd2fb364bcff5
--- /dev/null
+++ b/src/lagrangian/intermediate/submodels/Thermodynamic/InjectionModel/ThermoLookupTableInjection/ThermoLookupTableInjection.H
@@ -0,0 +1,204 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::ThermoLookupTableInjection
+
+Description
+    Particle injection sources read from look-up table. Each row corresponds to
+    an injection site.
+
+    (
+        (x y z u v w d rho mDot T cp)
+    );
+
+    where:
+        x, y, z = global cartesian co-ordinates [m]
+        u, v, w = global cartesian velocity components [m/s]
+        d       = diameter [m]
+        rho     = density [kg/m3]
+        mDot    = mass flow rate [kg/m3]
+        T       = temperature [K]
+        cp      = specific heat capacity [J/kg/K]
+
+SourceFiles
+    ThermoLookupTableInjection.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef ThermoLookupTableInjection_H
+#define ThermoLookupTableInjection_H
+
+#include "InjectionModel.H"
+#include "pdf.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+                Class ThermoLookupTableInjection Declaration
+\*---------------------------------------------------------------------------*/
+
+template<class CloudType>
+class ThermoLookupTableInjection
+:
+    public InjectionModel<CloudType>
+{
+    // Private data
+
+        //- Name of file containing injector/parcel data
+        const word inputFileName_;
+
+        //- Injection duration - common to all injection sources
+        const scalar duration_;
+
+        //- Number of parcels per injector - common to all injection sources
+        const label nParcelsPerSecond_;
+
+        //- List of parcel position per injector / [m]
+        List<point> x_;
+
+        //- List of parcel velocity per injector / [m]
+        List<vector> U_;
+
+        //- List of parcel diameter per injector / [m]
+        List<scalar> d_;
+
+        //- List of parcel fluid density pre injector / [kg/m3]
+        List<scalar> rho_;
+
+        //- List of parcel injection mass flow per injector / [kg/s]
+        List<scalar> mDot_;
+
+        //- List of parcel temperature flow per injector / [K]
+        List<scalar> T_;
+
+        //- List of parcel specific heat capacity per injector / [J/kg/K]
+        List<scalar> cp_;
+
+        //- List of injector cells per injector
+        List<label> injectorCells_;
+
+        //- Number of columns expected in input file
+        static label INPUT_FILE_COLS;
+
+
+protected:
+
+    // Protected member functions
+
+        //- Number of parcels to introduce over the time step relative to SOI
+        label parcelsToInject
+        (
+            const scalar time0,
+            const scalar time1
+        ) const;
+
+        //- Volume of parcels to introduce over the time step relative to SOI
+        scalar volumeToInject
+        (
+            const scalar time0,
+            const scalar time1
+        ) const;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("ThermoLookupTableInjection");
+
+
+    // Constructors
+
+        //- Construct from dictionary
+        ThermoLookupTableInjection
+        (
+            const dictionary& dict,
+            CloudType& owner
+        );
+
+
+    //- Destructor
+    virtual ~ThermoLookupTableInjection();
+
+
+    // Member Functions
+
+        //- Flag to indicate whether model activates injection model
+        bool active() const;
+
+        //- Return the end-of-injection time
+        scalar timeEnd() const;
+
+
+        // Injection geometry
+
+            //- Set the injection position and owner cell
+            virtual void setPositionAndCell
+            (
+                const label parcelI,
+                const label nParcels,
+                const scalar time,
+                vector& position,
+                label& cellOwner
+            );
+
+            //- Set the parcel properties
+            virtual void setProperties
+            (
+                const label parcelI,
+                const label nParcels,
+                const scalar time,
+                typename CloudType::parcelType& parcel
+            );
+
+            //- Flag to identify whether model fully describes the parcel
+            virtual bool fullyDescribed() const
+            {
+                return true;
+            }
+
+            //- Return flag to identify whether or not injection of parcelI is
+            //  permitted
+            virtual bool validInjection(const label parcelI);
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#ifdef NoRepository
+#   include "ThermoLookupTableInjection.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/submodels/addOns/radiation/absorptionEmission/cloudAbsorptionEmission/cloudAbsorptionEmission.C b/src/lagrangian/intermediate/submodels/addOns/radiation/absorptionEmission/cloudAbsorptionEmission/cloudAbsorptionEmission.C
index de19513e4a91a97816bf4515bfd8207e36a0dae4..fae1d15e6b2aadaad63af8cc36531a29314ee21a 100644
--- a/src/lagrangian/intermediate/submodels/addOns/radiation/absorptionEmission/cloudAbsorptionEmission/cloudAbsorptionEmission.C
+++ b/src/lagrangian/intermediate/submodels/addOns/radiation/absorptionEmission/cloudAbsorptionEmission/cloudAbsorptionEmission.C
@@ -72,7 +72,7 @@ Foam::radiation::cloudAbsorptionEmission::~cloudAbsorptionEmission()
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 Foam::tmp<Foam::volScalarField>
-Foam::radiation::cloudAbsorptionEmission::aDisp() const
+Foam::radiation::cloudAbsorptionEmission::aDisp(const label) const
 {
     tmp<volScalarField> ta
     (
@@ -107,7 +107,7 @@ Foam::radiation::cloudAbsorptionEmission::aDisp() const
 
 
 Foam::tmp<Foam::volScalarField>
-Foam::radiation::cloudAbsorptionEmission::eDisp() const
+Foam::radiation::cloudAbsorptionEmission::eDisp(const label bandI) const
 {
     tmp<volScalarField> te
     (
@@ -132,7 +132,7 @@ Foam::radiation::cloudAbsorptionEmission::eDisp() const
 
 
 Foam::tmp<Foam::volScalarField>
-Foam::radiation::cloudAbsorptionEmission::EDisp() const
+Foam::radiation::cloudAbsorptionEmission::EDisp(const label bandI) const
 {
     tmp<volScalarField> tE
     (
diff --git a/src/lagrangian/intermediate/submodels/addOns/radiation/absorptionEmission/cloudAbsorptionEmission/cloudAbsorptionEmission.H b/src/lagrangian/intermediate/submodels/addOns/radiation/absorptionEmission/cloudAbsorptionEmission/cloudAbsorptionEmission.H
index eeb8ce7cb23564901c47e5df5abb7b4e30922d09..a737764e88ce9add4f113e6c324ddd1bd9f8f266 100644
--- a/src/lagrangian/intermediate/submodels/addOns/radiation/absorptionEmission/cloudAbsorptionEmission/cloudAbsorptionEmission.H
+++ b/src/lagrangian/intermediate/submodels/addOns/radiation/absorptionEmission/cloudAbsorptionEmission/cloudAbsorptionEmission.H
@@ -53,7 +53,6 @@ class cloudAbsorptionEmission
 :
     public absorptionEmissionModel
 {
-
     // Private data
 
         //- Coefficients dictionary
@@ -72,16 +71,11 @@ public:
     // Constructors
 
         //- Construct from components
-        cloudAbsorptionEmission
-        (
-            const dictionary& dict,
-            const fvMesh& mesh
-        );
+        cloudAbsorptionEmission(const dictionary& dict, const fvMesh& mesh);
 
 
     // Destructor
-
-        ~cloudAbsorptionEmission();
+    virtual ~cloudAbsorptionEmission();
 
 
     // Member Operators
@@ -91,19 +85,19 @@ public:
             // Absorption coefficient
 
                 //- Absorption coefficient for dispersed phase
-                tmp<volScalarField> aDisp() const;
+                virtual tmp<volScalarField> aDisp(const label bandI = 0) const;
 
 
             // Emission coefficient
 
                 //- Emission coefficient for dispersed phase
-                tmp<volScalarField> eDisp() const;
+                virtual tmp<volScalarField> eDisp(const label bandI = 0) const;
 
 
             // Emission contribution
 
                 //- Return emission contribution for dispersed phase
-                tmp<volScalarField> EDisp() const;
+                virtual tmp<volScalarField> EDisp(const label bandI = 0) const;
 };
 
 
diff --git a/src/lagrangian/intermediate/submodels/addOns/radiation/scatter/cloudScatter/cloudScatter.H b/src/lagrangian/intermediate/submodels/addOns/radiation/scatter/cloudScatter/cloudScatter.H
index 288edd839116a8e4ac8f6cf1bb332caf0656d8ab..2d36e281f4756692ed43914b9071ff9aed9ca6a9 100644
--- a/src/lagrangian/intermediate/submodels/addOns/radiation/scatter/cloudScatter/cloudScatter.H
+++ b/src/lagrangian/intermediate/submodels/addOns/radiation/scatter/cloudScatter/cloudScatter.H
@@ -46,16 +46,13 @@ namespace radiation
 {
 
 /*---------------------------------------------------------------------------*\
-                           Class cloudScatter Declaration
+                         Class cloudScatter Declaration
 \*---------------------------------------------------------------------------*/
 
 class cloudScatter
 :
     public scatterModel
 {
-
-private:
-
     // Private data
 
         //- Absorption model dictionary
@@ -82,14 +79,11 @@ public:
 
 
     // Destructor
-
-        ~cloudScatter();
+    virtual ~cloudScatter();
 
 
     // Member Operators
 
-        // Edit
-
         // Access
 
             //- Return scatter coefficient
diff --git a/src/lagrangian/molecularDynamics/molecularMeasurements/bufferedAccumulator/bufferedAccumulator.C b/src/lagrangian/molecularDynamics/molecularMeasurements/bufferedAccumulator/bufferedAccumulator.C
index 18d46cb90a7fc2b5ee9a1f67422df61d9e7e1c41..de7d31fcb5291c99895422b2b75fe76be6439db7 100644
--- a/src/lagrangian/molecularDynamics/molecularMeasurements/bufferedAccumulator/bufferedAccumulator.C
+++ b/src/lagrangian/molecularDynamics/molecularMeasurements/bufferedAccumulator/bufferedAccumulator.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -126,6 +126,7 @@ void Foam::bufferedAccumulator<Type>::setSizes
     }
 }
 
+
 template<class Type>
 Foam::label Foam::bufferedAccumulator<Type>::addToBuffers
 (
@@ -184,11 +185,10 @@ Foam::Field<Type> Foam::bufferedAccumulator<Type>::averaged() const
         WarningIn
         (
             "bufferedAccumulator<Type>::averagedbufferedAccumulator() const"
-        )
-        << "Averaged correlation function requested but averagesTaken = "
-        << averagesTaken_
-        << ". Returning empty field."
-        << endl;
+        )   << "Averaged correlation function requested but averagesTaken = "
+            << averagesTaken_
+            << ". Returning empty field."
+            << endl;
 
         return Field<Type>(bufferLength(), pTraits<Type>::zero);
     }
@@ -218,8 +218,7 @@ void Foam::bufferedAccumulator<Type>::operator=
         FatalErrorIn
         (
             "bufferedAccumulator<Type>::operator=(const bufferedAccumulator&)"
-        )
-            << "Attempted assignment to self"
+        )   << "Attempted assignment to self"
             << abort(FatalError);
     }
 
diff --git a/src/lagrangian/molecularDynamics/molecularMeasurements/bufferedAccumulator/bufferedAccumulator.H b/src/lagrangian/molecularDynamics/molecularMeasurements/bufferedAccumulator/bufferedAccumulator.H
index 53b8f9371dd64468a985ff1d25f0fa3bb8d93159..ed8afa2115883a602a094c2fe13aa07345a7ea72 100644
--- a/src/lagrangian/molecularDynamics/molecularMeasurements/bufferedAccumulator/bufferedAccumulator.H
+++ b/src/lagrangian/molecularDynamics/molecularMeasurements/bufferedAccumulator/bufferedAccumulator.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/lagrangian/molecularDynamics/molecularMeasurements/bufferedAccumulator/bufferedAccumulatorI.H b/src/lagrangian/molecularDynamics/molecularMeasurements/bufferedAccumulator/bufferedAccumulatorI.H
index 96531509c8e0d2ea371b09409cdbe4866890a0ca..28bcde97a990a81bddd15374513182f1773eea60 100644
--- a/src/lagrangian/molecularDynamics/molecularMeasurements/bufferedAccumulator/bufferedAccumulatorI.H
+++ b/src/lagrangian/molecularDynamics/molecularMeasurements/bufferedAccumulator/bufferedAccumulatorI.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/lagrangian/molecularDynamics/molecularMeasurements/bufferedAccumulator/bufferedAccumulatorIO.C b/src/lagrangian/molecularDynamics/molecularMeasurements/bufferedAccumulator/bufferedAccumulatorIO.C
index 8e5d7c9d729d0f2d6c1a273143c80cceb3083333..ec1956a345dba0d1454ebec2a1e73da58e92a2db 100644
--- a/src/lagrangian/molecularDynamics/molecularMeasurements/bufferedAccumulator/bufferedAccumulatorIO.C
+++ b/src/lagrangian/molecularDynamics/molecularMeasurements/bufferedAccumulator/bufferedAccumulatorIO.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -34,9 +34,9 @@ Foam::Ostream&
 Foam::operator<<(Ostream& os, const bufferedAccumulator<Type>& bA)
 {
 
-    os<< bA.averagesTaken_
-      << static_cast<const List< Field<Type> >&>(bA)
-      << bA.bufferOffsets();
+    os  << bA.averagesTaken_
+        << static_cast<const List< Field<Type> >&>(bA)
+        << bA.bufferOffsets();
 
     // Check state of Ostream
     os.check
diff --git a/src/lagrangian/molecularDynamics/molecularMeasurements/correlationFunction/correlationFunction.C b/src/lagrangian/molecularDynamics/molecularMeasurements/correlationFunction/correlationFunction.C
index eca654aa2dd4302c0e25ffdae2ffd40e3416f7df..cce0d86a22c0d6f9000d2f3b6f2d9a35e48b10bc 100644
--- a/src/lagrangian/molecularDynamics/molecularMeasurements/correlationFunction/correlationFunction.C
+++ b/src/lagrangian/molecularDynamics/molecularMeasurements/correlationFunction/correlationFunction.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -138,7 +138,7 @@ void Foam::correlationFunction<Type>::calculateCorrelationFunction
         FatalErrorIn("correlationFunction<Type>::calculateCorrelationFunction")
             << "Trying to supply a Field of length"
             << currentValues.size()
-            <<" to calculate the correlation function.  "
+            << " to calculate the correlation function. "
             << "Expecting a Field of length "
             << measurandFieldSize() << nl
             << abort(FatalError);
@@ -205,7 +205,7 @@ Foam::scalar Foam::correlationFunction<Type>::integral() const
 
     scalar cFIntegral = 0.0;
 
-    for(label v = 0; v < averageCF.size() - 1; v++)
+    for (label v = 0; v < averageCF.size() - 1; v++)
     {
         cFIntegral +=
             0.5
diff --git a/src/lagrangian/molecularDynamics/molecularMeasurements/correlationFunction/correlationFunction.H b/src/lagrangian/molecularDynamics/molecularMeasurements/correlationFunction/correlationFunction.H
index 2b8753676c5a67253808bdcad17c2d291e5ffe0a..fe2071aff372af8f680c640fd4559afb74dcba3b 100644
--- a/src/lagrangian/molecularDynamics/molecularMeasurements/correlationFunction/correlationFunction.H
+++ b/src/lagrangian/molecularDynamics/molecularMeasurements/correlationFunction/correlationFunction.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -155,7 +155,10 @@ public:
     // IOstream Operators
 
         friend Ostream& operator<< <Type>
-        (Ostream&, const correlationFunction<Type>&);
+        (
+            Ostream&,
+            const correlationFunction<Type>&
+        );
 };
 
 
diff --git a/src/lagrangian/molecularDynamics/molecularMeasurements/correlationFunction/correlationFunctionI.H b/src/lagrangian/molecularDynamics/molecularMeasurements/correlationFunction/correlationFunctionI.H
index d07d54eca0ac442309a989a15941c76bb48a836b..adbf70505994612da152d42fd4b95ae273507c2b 100644
--- a/src/lagrangian/molecularDynamics/molecularMeasurements/correlationFunction/correlationFunctionI.H
+++ b/src/lagrangian/molecularDynamics/molecularMeasurements/correlationFunction/correlationFunctionI.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/lagrangian/molecularDynamics/molecularMeasurements/correlationFunction/correlationFunctionIO.C b/src/lagrangian/molecularDynamics/molecularMeasurements/correlationFunction/correlationFunctionIO.C
index 7dcbcc1eda11ad23905087e6f196b29fd45d016a..aa62cdcaf6e0797077492306873cf8db4aea0679 100644
--- a/src/lagrangian/molecularDynamics/molecularMeasurements/correlationFunction/correlationFunctionIO.C
+++ b/src/lagrangian/molecularDynamics/molecularMeasurements/correlationFunction/correlationFunctionIO.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -34,10 +34,10 @@ bool Foam::correlationFunction<Type>::writeAveraged(Ostream& os) const
 
     forAll(averageCF, v)
     {
-        os<< v*sampleInterval()
-          << token::SPACE
-          << averageCF[v]
-          << nl;
+        os  << v*sampleInterval()
+            << token::SPACE
+            << averageCF[v]
+            << nl;
     }
 
     return os.good();
@@ -51,12 +51,12 @@ Foam::Ostream& Foam::operator<<
     const correlationFunction<Type>& cF
 )
 {
-    os<< cF.duration()
-      << nl << cF.sampleInterval()
-      << nl << cF.averagingInterval()
-      << nl << cF.sampleSteps()
-      << nl << cF.tZeroBuffers()
-      << nl << static_cast<const bufferedAccumulator<scalar>&>(cF);
+    os  << cF.duration()
+        << nl << cF.sampleInterval()
+        << nl << cF.averagingInterval()
+        << nl << cF.sampleSteps()
+        << nl << cF.tZeroBuffers()
+        << nl << static_cast<const bufferedAccumulator<scalar>&>(cF);
 
     // Check state of Ostream
     os.check
diff --git a/src/lagrangian/molecularDynamics/molecularMeasurements/distribution/distribution.C b/src/lagrangian/molecularDynamics/molecularMeasurements/distribution/distribution.C
index a4a08b08fa6efd78597d0be45985c227f4d094ad..439ed64bdf06229f8b13fd6424a9336f14f43187 100644
--- a/src/lagrangian/molecularDynamics/molecularMeasurements/distribution/distribution.C
+++ b/src/lagrangian/molecularDynamics/molecularMeasurements/distribution/distribution.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -75,7 +75,7 @@ label distribution::totalEntries() const
                 << "sumOfEntries = " << sumOfEntries
                 << ". This is most likely to be because too many samples "
                 << "have been added to the bins and the label has 'rolled "
-                << "round'.  Try distribution::approxTotalEntries which "
+                << "round'. Try distribution::approxTotalEntries which "
                 << "returns a scalar." << endl;
 
             sumOfEntries = -1;
@@ -336,8 +336,8 @@ List< Pair<scalar> > distribution::normalisedShifted(const scalar shiftValue)
                    *(oldDist[u].second() - oldDist[u-1].second())
                   +
                     (
-                        oldDist[u-1].second() * oldDist[u].first()
-                      - oldDist[u].second() * oldDist[u-1].first()
+                        oldDist[u-1].second()*oldDist[u].first()
+                      - oldDist[u].second()*oldDist[u-1].first()
                     )
                     /binWidth_;
             }
@@ -348,7 +348,7 @@ List< Pair<scalar> > distribution::normalisedShifted(const scalar shiftValue)
             {
                 newDist[u].second() =
                     (0.5 + scalar(newKey))*-oldDist[u].second()
-                  + oldDist[u].second() * (oldDist[u].first() + binWidth_)
+                  + oldDist[u].second()*(oldDist[u].first() + binWidth_)
                    /binWidth_;
             }
             else
@@ -358,8 +358,8 @@ List< Pair<scalar> > distribution::normalisedShifted(const scalar shiftValue)
                    *(oldDist[u+1].second() - oldDist[u].second())
                   +
                     (
-                        oldDist[u].second() * oldDist[u+1].first()
-                      - oldDist[u+1].second() * oldDist[u].first()
+                        oldDist[u].second()*oldDist[u+1].first()
+                      - oldDist[u+1].second()*oldDist[u].first()
                     )
                    /binWidth_;
             }
@@ -395,7 +395,7 @@ List<Pair<scalar> > distribution::raw()
     {
         label key = keys[k];
 
-        rawDist[k].first() = (0.5 + scalar(key)) * binWidth_;
+        rawDist[k].first() = (0.5 + scalar(key))*binWidth_;
 
         rawDist[k].second() = scalar((*this)[key]);
     }
diff --git a/src/lagrangian/molecularDynamics/molecularMeasurements/distribution/distribution.H b/src/lagrangian/molecularDynamics/molecularMeasurements/distribution/distribution.H
index 597d2eedb087aa8af9427a1cfa659e1f8820bf6e..da1ce973bc7d3fa9dceabbcf4dd2e5f2b39a1b87 100644
--- a/src/lagrangian/molecularDynamics/molecularMeasurements/distribution/distribution.H
+++ b/src/lagrangian/molecularDynamics/molecularMeasurements/distribution/distribution.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -30,7 +30,6 @@ Description
 SourceFiles
     distributionI.H
     distribution.C
-    distributionIO.C
 
 \*---------------------------------------------------------------------------*/
 
@@ -46,7 +45,7 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                           Class distribution Declaration
+                        Class distribution Declaration
 \*---------------------------------------------------------------------------*/
 
 class distribution
diff --git a/src/lagrangian/molecularDynamics/molecularMeasurements/distribution/distributionI.H b/src/lagrangian/molecularDynamics/molecularMeasurements/distribution/distributionI.H
index 988d76de31c8e38ca0a41f91d94c331d052f0111..4bc3596a50957e656072444188f5c02267d37c12 100644
--- a/src/lagrangian/molecularDynamics/molecularMeasurements/distribution/distributionI.H
+++ b/src/lagrangian/molecularDynamics/molecularMeasurements/distribution/distributionI.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/lagrangian/molecularDynamics/molecule/Make/files b/src/lagrangian/molecularDynamics/molecule/Make/files
old mode 100755
new mode 100644
diff --git a/src/lagrangian/molecularDynamics/molecule/Make/options b/src/lagrangian/molecularDynamics/molecule/Make/options
old mode 100755
new mode 100644
diff --git a/src/lagrangian/molecularDynamics/molecule/interactionLists/directInteractionList/directInteractionList.C b/src/lagrangian/molecularDynamics/molecule/interactionLists/directInteractionList/directInteractionList.C
index ba3a3d90669ec95b43e98e780b7f7bb0c1324f79..1556db83178b50ca625860d22292e4de7612069a 100644
--- a/src/lagrangian/molecularDynamics/molecule/interactionLists/directInteractionList/directInteractionList.C
+++ b/src/lagrangian/molecularDynamics/molecule/interactionLists/directInteractionList/directInteractionList.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -79,8 +79,12 @@ void Foam::directInteractionList::buildDirectInteractionList
                             {
                                 if
                                 (
-                                    findIndex(directInteractionList[cellI],
-                                    cellJ) == -1
+                                    findIndex
+                                    (
+                                        directInteractionList[cellI],
+                                        cellJ
+                                    )
+                                 == -1
                                 )
                                 {
                                     directInteractionList[cellI].append(cellJ);
@@ -91,8 +95,13 @@ void Foam::directInteractionList::buildDirectInteractionList
                             {
                                 if
                                 (
-                                    findIndex(directInteractionList[cellJ],
-                                    cellI) == -1
+                                    findIndex
+                                    (
+                                        directInteractionList[cellJ],
+                                        cellI
+                                    )
+                                 ==
+                                    -1
                                 )
                                 {
                                     directInteractionList[cellJ].append(cellI);
@@ -109,18 +118,16 @@ void Foam::directInteractionList::buildDirectInteractionList
         Info<< tab << "Point-Face, Edge-Edge direct interaction list build."
             << endl;
 
-        forAll (mesh.points(), p)
+        forAll(mesh.points(), p)
         {
             forAll(mesh.faces(), f)
             {
-                if(il_.testPointFaceDistance(p, f))
+                if (il_.testPointFaceDistance(p, f))
                 {
                     const labelList& pCells(mesh.pointCells()[p]);
 
                     const label cellO(mesh.faceOwner()[f]);
 
-                    const label cellN(mesh.faceNeighbour()[f]);
-
                     forAll(pCells, pC)
                     {
                         const label cellI(pCells[pC]);
@@ -131,8 +138,13 @@ void Foam::directInteractionList::buildDirectInteractionList
                         {
                             if
                             (
-                                findIndex(directInteractionList[cellI],
-                                cellO) == -1
+                                findIndex
+                                (
+                                    directInteractionList[cellI],
+                                    cellO
+                                )
+                             ==
+                                -1
                             )
                             {
                                 directInteractionList[cellI].append(cellO);
@@ -143,8 +155,13 @@ void Foam::directInteractionList::buildDirectInteractionList
                         {
                             if
                             (
-                                findIndex(directInteractionList[cellO],
-                                cellI) == -1
+                                findIndex
+                                (
+                                    directInteractionList[cellO],
+                                    cellI
+                                )
+                             ==
+                                -1
                             )
                             {
                                 directInteractionList[cellO].append(cellI);
@@ -156,12 +173,19 @@ void Foam::directInteractionList::buildDirectInteractionList
                             // boundary faces will not have neighbour
                             // information
 
+                            const label cellN(mesh.faceNeighbour()[f]);
+
                             if (cellN > cellI)
                             {
                                 if
                                 (
-                                    findIndex(directInteractionList[cellI],
-                                    cellN) == -1
+                                    findIndex
+                                    (
+                                        directInteractionList[cellI],
+                                        cellN
+                                    )
+                                 ==
+                                    -1
                                 )
                                 {
                                     directInteractionList[cellI].append(cellN);
@@ -172,8 +196,13 @@ void Foam::directInteractionList::buildDirectInteractionList
                             {
                                 if
                                 (
-                                    findIndex(directInteractionList[cellN],
-                                    cellI) == -1
+                                    findIndex
+                                    (
+                                        directInteractionList[cellN],
+                                        cellI
+                                    )
+                                 ==
+                                    -1
                                 )
                                 {
                                     directInteractionList[cellN].append(cellI);
@@ -187,7 +216,7 @@ void Foam::directInteractionList::buildDirectInteractionList
 
         label edgeJIndex;
 
-        forAll (mesh.edges(), edgeIIndex)
+        forAll(mesh.edges(), edgeIIndex)
         {
             const edge& eI(mesh.edges()[edgeIIndex]);
 
@@ -218,8 +247,13 @@ void Foam::directInteractionList::buildDirectInteractionList
                             {
                                 if
                                 (
-                                    findIndex(directInteractionList[cellI],
-                                    cellJ) == -1
+                                    findIndex
+                                    (
+                                        directInteractionList[cellI],
+                                        cellJ
+                                    )
+                                 ==
+                                    -1
                                 )
                                 {
                                     directInteractionList[cellI].append(cellJ);
@@ -230,8 +264,13 @@ void Foam::directInteractionList::buildDirectInteractionList
                             {
                                 if
                                 (
-                                    findIndex(directInteractionList[cellJ],
-                                    cellI) == -1
+                                    findIndex
+                                    (
+                                        directInteractionList[cellJ],
+                                        cellI
+                                    )
+                                 ==
+                                    -1
                                 )
                                 {
                                     directInteractionList[cellJ].append(cellI);
@@ -272,11 +311,11 @@ Foam::directInteractionList::directInteractionList
     labelListList(il.mesh().nCells()),
     il_(il)
 {
-    if((*this).size() > 1)
+    if ((*this).size() > 1)
     {
         buildDirectInteractionList(pointPointListBuild);
     }
-    else if((*this).size() == 1)
+    else if ((*this).size() == 1)
     {
         Info<< nl
             << "Single cell mesh, no direct interaction lists required."
@@ -305,16 +344,4 @@ Foam::directInteractionList::~directInteractionList()
 {}
 
 
-// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
-
-
-// * * * * * * * * * * * * * * * Member Operators  * * * * * * * * * * * * * //
-
-
-// * * * * * * * * * * * * * * * Friend Functions  * * * * * * * * * * * * * //
-
-
-// * * * * * * * * * * * * * * * Friend Operators  * * * * * * * * * * * * * //
-
-
 // ************************************************************************* //
diff --git a/src/lagrangian/molecularDynamics/molecule/interactionLists/directInteractionList/directInteractionList.H b/src/lagrangian/molecularDynamics/molecule/interactionLists/directInteractionList/directInteractionList.H
index 3777b0b098e7552bf8d78724a4e205e0c098d4cd..8a85404ca04d3c962da39ff74237be3742090092 100644
--- a/src/lagrangian/molecularDynamics/molecule/interactionLists/directInteractionList/directInteractionList.H
+++ b/src/lagrangian/molecularDynamics/molecule/interactionLists/directInteractionList/directInteractionList.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -59,6 +59,7 @@ class directInteractionList
 
         const interactionLists& il_;
 
+
     // Private Member Functions
 
         void buildDirectInteractionList
@@ -72,6 +73,7 @@ class directInteractionList
         //- Disallow default bitwise assignment
         void operator=(const directInteractionList&);
 
+
 public:
 
     // Constructors
@@ -89,6 +91,7 @@ public:
             const interactionLists& il
         );
 
+
     // Destructor
 
         ~directInteractionList();
@@ -100,12 +103,6 @@ public:
 
         inline const interactionLists& il() const;
 
-        // Check
-
-        // Edit
-
-        // Write
-
 
     // IOstream Operators
 
diff --git a/src/lagrangian/molecularDynamics/molecule/interactionLists/directInteractionList/directInteractionListI.H b/src/lagrangian/molecularDynamics/molecule/interactionLists/directInteractionList/directInteractionListI.H
index 7c1ded995b372b0fb911ee6d75c22666c43bc657..34c1d65080664619ce92f4df416337ffee87c774 100644
--- a/src/lagrangian/molecularDynamics/molecule/interactionLists/directInteractionList/directInteractionListI.H
+++ b/src/lagrangian/molecularDynamics/molecule/interactionLists/directInteractionList/directInteractionListI.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -24,8 +24,6 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 inline const Foam::interactionLists& Foam::directInteractionList::il() const
@@ -34,7 +32,4 @@ inline const Foam::interactionLists& Foam::directInteractionList::il() const
 }
 
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-
 // ************************************************************************* //
diff --git a/src/lagrangian/molecularDynamics/molecule/interactionLists/interactionLists.C b/src/lagrangian/molecularDynamics/molecule/interactionLists/interactionLists.C
index 411d6dbfba2c3f8a0cbb30a6bbdbd72825a6ea3d..f1036eaa0e937bd2121f80187ef61199cd3d75e4 100644
--- a/src/lagrangian/molecularDynamics/molecule/interactionLists/interactionLists.C
+++ b/src/lagrangian/molecularDynamics/molecule/interactionLists/interactionLists.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -342,6 +342,7 @@ bool Foam::interactionLists::testPointFaceDistance
     );
 }
 
+
 bool Foam::interactionLists::testPointFaceDistance
 (
     const vector& p,
diff --git a/src/lagrangian/molecularDynamics/molecule/interactionLists/interactionLists.H b/src/lagrangian/molecularDynamics/molecule/interactionLists/interactionLists.H
index a8d28133eb7fd3d516878407a28843b79558db20..744b59b067a17867b1cd4906281183f9c30d6f6a 100644
--- a/src/lagrangian/molecularDynamics/molecule/interactionLists/interactionLists.H
+++ b/src/lagrangian/molecularDynamics/molecule/interactionLists/interactionLists.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -52,7 +52,7 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                           Class interactionLists Declaration
+                       Class interactionLists Declaration
 \*---------------------------------------------------------------------------*/
 
 class interactionLists
@@ -71,6 +71,7 @@ class interactionLists
 
         List<receivingReferralList> cellReceivingReferralLists_;
 
+
     // Private Member Functions
 
         //- Build referralLists which define how to send information
@@ -83,6 +84,7 @@ class interactionLists
         //- Disallow default bitwise assignment
         void operator=(const interactionLists&);
 
+
 public:
 
     // Static data members
@@ -90,6 +92,7 @@ public:
         //- Tolerance for checking that faces on a patch segment
         static scalar transTol;
 
+
     // Constructors
 
         //- Construct and create all information from the mesh
@@ -103,6 +106,7 @@ public:
         //- Construct from file
         interactionLists(const polyMesh& mesh);
 
+
     // Destructor
 
         ~interactionLists();
@@ -177,6 +181,7 @@ public:
                 const labelList& segmentPoints
             ) const;
 
+
         // Access
 
             inline const polyMesh& mesh() const;
diff --git a/src/lagrangian/molecularDynamics/molecule/interactionLists/interactionListsI.H b/src/lagrangian/molecularDynamics/molecule/interactionLists/interactionListsI.H
index 6749e05be018287c98f4385ab4bd05a5bf195f00..7c5c4ec1227cb102a33473e80dacca1c265c76dd 100644
--- a/src/lagrangian/molecularDynamics/molecule/interactionLists/interactionListsI.H
+++ b/src/lagrangian/molecularDynamics/molecule/interactionLists/interactionListsI.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/lagrangian/molecularDynamics/molecule/interactionLists/referralLists/receivingReferralList.C b/src/lagrangian/molecularDynamics/molecule/interactionLists/referralLists/receivingReferralList.C
index db0831eaee88874b252d43d33b984394d284d712..2f646fcba5f50ccc11ada22d43874e35f69674e4 100644
--- a/src/lagrangian/molecularDynamics/molecule/interactionLists/referralLists/receivingReferralList.C
+++ b/src/lagrangian/molecularDynamics/molecule/interactionLists/referralLists/receivingReferralList.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -143,7 +143,7 @@ bool operator==
 
 Foam::Istream& Foam::operator>>(Istream& is, receivingReferralList& rRL)
 {
-    is >> rRL.sourceProc_ >> static_cast<labelListList&>(rRL);
+    is  >> rRL.sourceProc_ >> static_cast<labelListList&>(rRL);
 
     is.check
     (
@@ -160,7 +160,7 @@ Foam::Ostream& Foam::operator<<
     const receivingReferralList& rRL
 )
 {
-    os << rRL.sourceProc() << token::SPACE
+    os  << rRL.sourceProc() << token::SPACE
         << static_cast< const labelListList& >(rRL);
 
     os.check
@@ -171,7 +171,5 @@ Foam::Ostream& Foam::operator<<
     return os;
 }
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
 
 // ************************************************************************* //
diff --git a/src/lagrangian/molecularDynamics/molecule/interactionLists/referralLists/receivingReferralList.H b/src/lagrangian/molecularDynamics/molecule/interactionLists/referralLists/receivingReferralList.H
index b7ec5a26fac197a1a140a13feea420ad2c0e0065..91ebe8eb32c9ff2fa0781c6e29739d95bf0ffe54 100644
--- a/src/lagrangian/molecularDynamics/molecule/interactionLists/referralLists/receivingReferralList.H
+++ b/src/lagrangian/molecularDynamics/molecule/interactionLists/referralLists/receivingReferralList.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/lagrangian/molecularDynamics/molecule/interactionLists/referralLists/receivingReferralListI.H b/src/lagrangian/molecularDynamics/molecule/interactionLists/referralLists/receivingReferralListI.H
index 48b11405b4d5013ffd9e8cdf9617dfe45aa5e405..084863b01a0ee09739adcff006d103eedae04306 100644
--- a/src/lagrangian/molecularDynamics/molecule/interactionLists/referralLists/receivingReferralListI.H
+++ b/src/lagrangian/molecularDynamics/molecule/interactionLists/referralLists/receivingReferralListI.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -24,8 +24,6 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 inline Foam::label Foam::receivingReferralList::sourceProc() const
@@ -46,7 +44,4 @@ inline bool operator!=
 }
 
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-
 // ************************************************************************* //
diff --git a/src/lagrangian/molecularDynamics/molecule/interactionLists/referralLists/sendingReferralList.C b/src/lagrangian/molecularDynamics/molecule/interactionLists/referralLists/sendingReferralList.C
index bb0b3b1e529dba4a01554d02009c0673bd738cb4..6235ddabfad51cd0d2c79c59e691926ef1cdd6c0 100644
--- a/src/lagrangian/molecularDynamics/molecule/interactionLists/referralLists/sendingReferralList.C
+++ b/src/lagrangian/molecularDynamics/molecule/interactionLists/referralLists/sendingReferralList.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -145,7 +145,7 @@ Foam::Istream& Foam::operator>>
     sendingReferralList& sRL
 )
 {
-    is >> sRL.destinationProc_ >> static_cast<labelList&>(sRL);
+    is  >> sRL.destinationProc_ >> static_cast<labelList&>(sRL);
 
     is.check("Istream& operator<<(Istream& f, const sendingReferralList& sRL");
 
@@ -159,7 +159,7 @@ Foam::Ostream& Foam::operator<<
     const sendingReferralList& rL
 )
 {
-    os << rL.destinationProc() << token::SPACE
+    os  << rL.destinationProc() << token::SPACE
         << static_cast< const labelList& >(rL);
 
     os.check("Ostream& operator<<(Ostream& f, const sendingReferralList& rL");
@@ -168,6 +168,4 @@ Foam::Ostream& Foam::operator<<
 }
 
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
 // ************************************************************************* //
diff --git a/src/lagrangian/molecularDynamics/molecule/interactionLists/referralLists/sendingReferralList.H b/src/lagrangian/molecularDynamics/molecule/interactionLists/referralLists/sendingReferralList.H
index 30afadebee5fb469aa4c62100a2bb04b7930450e..b7b9bf082cc971abc4c66e82687633a1684f22ad 100644
--- a/src/lagrangian/molecularDynamics/molecule/interactionLists/referralLists/sendingReferralList.H
+++ b/src/lagrangian/molecularDynamics/molecule/interactionLists/referralLists/sendingReferralList.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/lagrangian/molecularDynamics/molecule/interactionLists/referralLists/sendingReferralListI.H b/src/lagrangian/molecularDynamics/molecule/interactionLists/referralLists/sendingReferralListI.H
index 51c569cfd20ca906ce2ecb12a4369eaf3c6bfac5..d34ffd3595413511dfaabdb643ae0991db287a64 100644
--- a/src/lagrangian/molecularDynamics/molecule/interactionLists/referralLists/sendingReferralListI.H
+++ b/src/lagrangian/molecularDynamics/molecule/interactionLists/referralLists/sendingReferralListI.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -24,8 +24,6 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 inline Foam::label Foam::sendingReferralList::destinationProc() const
@@ -46,6 +44,4 @@ inline bool operator!=
 }
 
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
 // ************************************************************************* //
diff --git a/src/lagrangian/molecularDynamics/molecule/interactionLists/referredCell/referredCell.C b/src/lagrangian/molecularDynamics/molecule/interactionLists/referredCell/referredCell.C
index 194caa11e2c5066838cf1fb3ba1033c493a3baec..225ad5902a01ca024526ef4e8b43326f90e4f677 100644
--- a/src/lagrangian/molecularDynamics/molecule/interactionLists/referredCell/referredCell.C
+++ b/src/lagrangian/molecularDynamics/molecule/interactionLists/referredCell/referredCell.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -38,7 +38,7 @@ void referredCell::setConstructionData
     const label sourceCell
 )
 {
-    // * * * * * * * * * * * Points * * * * * * * * * * *
+    // Points
 
     const labelList& points = mesh.cellPoints()[sourceCell];
 
@@ -51,7 +51,8 @@ void referredCell::setConstructionData
 
     vertexPositions_ = referPositions(sourceCellVertices);
 
-    // * * * * * * * * * * * Edges * * * * * * * * * * *
+
+    // Edges
 
     const labelList& edges = mesh.cellEdges()[sourceCell];
 
@@ -64,7 +65,8 @@ void referredCell::setConstructionData
 
     locallyMapEdgeList(points, sourceCellEdges);
 
-    // * * * * * * * * * * * Faces * * * * * * * * * * *
+
+    // Faces
 
     labelList faces(mesh.cells()[sourceCell]);
 
@@ -383,8 +385,8 @@ bool referredCell::duplicate(const referredCell& refCellDupl) const
     return
     (
         sourceProc_ == refCellDupl.sourceProc()
-        && sourceCell_ == refCellDupl.sourceCell()
-        && mag(offset_ - refCellDupl.offset()) < interactionLists::transTol
+     && sourceCell_ == refCellDupl.sourceCell()
+     && mag(offset_ - refCellDupl.offset()) < interactionLists::transTol
     );
 }
 
@@ -394,8 +396,8 @@ bool referredCell::duplicate(const label procNo,const label nCells) const
     return
     (
         sourceProc_ == procNo
-        && sourceCell_ < nCells
-        && mag(offset_) < interactionLists::transTol
+     && sourceCell_ < nCells
+     && mag(offset_) < interactionLists::transTol
     );
 }
 
@@ -405,7 +407,7 @@ bool referredCell::duplicate(const label procNo,const label nCells) const
 Istream& operator>>(Istream& is, referredCell& rC)
 {
 
-    is >> rC.sourceProc_
+    is  >> rC.sourceProc_
         >> rC.sourceCell_
         >> rC.vertexPositions_
         >> rC.edges_
@@ -424,7 +426,7 @@ Istream& operator>>(Istream& is, referredCell& rC)
 Ostream& operator<<(Ostream& os, const referredCell& rC)
 {
 
-    os << rC.sourceProc()
+    os  << rC.sourceProc()
         << token::SPACE << rC.sourceCell()
         << token::SPACE << rC.vertexPositions()
         << token::SPACE << rC.edges()
diff --git a/src/lagrangian/molecularDynamics/molecule/interactionLists/referredCell/referredCell.H b/src/lagrangian/molecularDynamics/molecule/interactionLists/referredCell/referredCell.H
index 789c9e4d4143ceca47ccd82cf31c51ff33433623..666b4f9268297675083c85fb810e85723951d14f 100644
--- a/src/lagrangian/molecularDynamics/molecule/interactionLists/referredCell/referredCell.H
+++ b/src/lagrangian/molecularDynamics/molecule/interactionLists/referredCell/referredCell.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -53,7 +53,7 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                           Class referredCell Declaration
+                          Class referredCell Declaration
 \*---------------------------------------------------------------------------*/
 
 class referredCell
diff --git a/src/lagrangian/molecularDynamics/molecule/interactionLists/referredCell/referredCellI.H b/src/lagrangian/molecularDynamics/molecule/interactionLists/referredCell/referredCellI.H
index a7427c141da9f57cd6febff42d33b6acc4bce4ba..bd3954e83cd678b91428e7dabd33ecfa100f4b7d 100644
--- a/src/lagrangian/molecularDynamics/molecule/interactionLists/referredCell/referredCellI.H
+++ b/src/lagrangian/molecularDynamics/molecule/interactionLists/referredCell/referredCellI.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/lagrangian/molecularDynamics/molecule/interactionLists/referredCellList/referredCellList.C b/src/lagrangian/molecularDynamics/molecule/interactionLists/referredCellList/referredCellList.C
index fbc5c1740be6b14d7b1d8fd475f2c3a53d2011d6..2ba95daa18e09e821868d574cebe524b087c94cc 100644
--- a/src/lagrangian/molecularDynamics/molecule/interactionLists/referredCellList/referredCellList.C
+++ b/src/lagrangian/molecularDynamics/molecule/interactionLists/referredCellList/referredCellList.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -357,7 +357,7 @@ void Foam::referredCellList::buildReferredCellList
 
     label iterationNo = 0;
 
-    while(cellsReferredThisIteration)
+    while (cellsReferredThisIteration)
     {
         label refIntListStartSize = referredInteractionList.size();
 
@@ -499,7 +499,10 @@ void Foam::referredCellList::buildReferredCellList
                                 (
                                     meshPointsOnThisSegment,
                                     facePoint
-                                ) == -1)
+                                )
+                             ==
+                                -1
+                            )
                             {
                                 meshPointsOnThisSegment.append(facePoint);
                             }
@@ -610,18 +613,20 @@ void Foam::referredCellList::buildReferredCellList
 
                     forAll(referredCellsFoundInRange,cFIR)
                     {
-                        referredCell& existingRefCell = referredInteractionList
-                        [
-                            referredCellsFoundInRange[cFIR]
-                        ];
+                        referredCell& existingRefCell =
+                            referredInteractionList
+                            [
+                                referredCellsFoundInRange[cFIR]
+                            ];
 
-                        referredCell cellToReRefer = existingRefCell.reRefer
-                        (
-                            patch.faceCentres()[0],
-                            patch.faceCentres()[patch.size()/2],
-                            patch.faceNormals()[0],
-                            patch.faceNormals()[patch.size()/2]
-                        );
+                        referredCell cellToReRefer =
+                            existingRefCell.reRefer
+                            (
+                                patch.faceCentres()[0],
+                                patch.faceCentres()[patch.size()/2],
+                                patch.faceNormals()[0],
+                                patch.faceNormals()[patch.size()/2]
+                            );
 
                         // Test all existing referred and real cells to check
                         // duplicates are not being made or cells aren't being
@@ -705,7 +710,9 @@ void Foam::referredCellList::buildReferredCellList
                                 (
                                     meshEdgesOnThisSegment,
                                     faceEdge
-                                ) == -1
+                                )
+                             ==
+                                -1
                             )
                             {
                                 meshEdgesOnThisSegment.append(faceEdge);
@@ -724,7 +731,10 @@ void Foam::referredCellList::buildReferredCellList
                                 (
                                     meshPointsOnThisSegment,
                                     facePoint
-                                ) == -1)
+                                )
+                             ==
+                                -1
+                            )
                             {
                                 meshPointsOnThisSegment.append(facePoint);
                             }
@@ -823,28 +833,30 @@ void Foam::referredCellList::buildReferredCellList
                     referredInteractionList.shrink();
 
                     referredCellsFoundInRange =
-                    il_.referredCellsInRangeOfSegment
-                    (
-                        referredInteractionList,
-                        meshFacesOnThisSegment,
-                        meshEdgesOnThisSegment,
-                        meshPointsOnThisSegment
-                    );
+                        il_.referredCellsInRangeOfSegment
+                        (
+                            referredInteractionList,
+                            meshFacesOnThisSegment,
+                            meshEdgesOnThisSegment,
+                            meshPointsOnThisSegment
+                        );
 
                     forAll(referredCellsFoundInRange,cFIR)
                     {
-                        referredCell& existingRefCell = referredInteractionList
-                        [
-                            referredCellsFoundInRange[cFIR]
-                        ];
+                        referredCell& existingRefCell =
+                            referredInteractionList
+                            [
+                                referredCellsFoundInRange[cFIR]
+                            ];
 
-                        referredCell cellToReRefer = existingRefCell.reRefer
-                        (
-                            patch.faceCentres()[patch.size()/2],
-                            patch.faceCentres()[0],
-                            patch.faceNormals()[patch.size()/2],
-                            patch.faceNormals()[0]
-                        );
+                        referredCell cellToReRefer =
+                            existingRefCell.reRefer
+                            (
+                                patch.faceCentres()[patch.size()/2],
+                                patch.faceCentres()[0],
+                                patch.faceNormals()[patch.size()/2],
+                                patch.faceNormals()[0]
+                            );
 
                         // Test all existing referred and real cells to check
                         // duplicates are not being made or cells aren't being
@@ -901,15 +913,15 @@ void Foam::referredCellList::buildReferredCellList
             forAll(procPatches,pP)
             {
                 const processorPolyPatch& patch =
-                refCast<const processorPolyPatch>
-                (
-                    mesh.boundaryMesh()[procPatches[pP]]
-                );
+                    refCast<const processorPolyPatch>
+                    (
+                        mesh.boundaryMesh()[procPatches[pP]]
+                    );
 
                 DynamicList<referredCell> referredCellsToTransfer;
 
                 const vectorList& neighbFaceCentres =
-                allNeighbourFaceCentres[pP];
+                    allNeighbourFaceCentres[pP];
 
                 const vectorList& neighbFaceAreas = allNeighbourFaceAreas[pP];
 
@@ -971,7 +983,9 @@ void Foam::referredCellList::buildReferredCellList
                                 (
                                     meshEdgesOnThisSegment,
                                     faceEdge
-                                ) == -1
+                                )
+                             ==
+                                -1
                             )
                             {
                                 meshEdgesOnThisSegment.append(faceEdge);
@@ -990,7 +1004,9 @@ void Foam::referredCellList::buildReferredCellList
                                 (
                                     meshPointsOnThisSegment,
                                     facePoint
-                                ) == -1
+                                )
+                             ==
+                                -1
                             )
                             {
                                 meshPointsOnThisSegment.append(facePoint);
@@ -1032,7 +1048,7 @@ void Foam::referredCellList::buildReferredCellList
                             forAll(realCellsFoundInRange,cFIR)
                             {
                                 const label realCell =
-                                realCellsFoundInRange[cFIR];
+                                    realCellsFoundInRange[cFIR];
 
                                 referredCell cellToRefer
                                 (
@@ -1074,19 +1090,20 @@ void Foam::referredCellList::buildReferredCellList
                         forAll(referredCellsFoundInRange,cFIR)
                         {
                             referredCell& existingRefCell =
-                            referredInteractionList
-                            [
-                                referredCellsFoundInRange[cFIR]
-                            ];
+                                referredInteractionList
+                                [
+                                    referredCellsFoundInRange[cFIR]
+                                ];
 
-                            referredCell cellToReRefer = existingRefCell.reRefer
-                            (
-                                patch.faceCentres()[faceT],
-                                neighbFaceCentres[faceT],
-                                patch.faceNormals()[faceT],
-                                neighbFaceAreas[faceT]
-                                /(mag(neighbFaceAreas[faceT]) + VSMALL)
-                            );
+                            referredCell cellToReRefer =
+                                existingRefCell.reRefer
+                                (
+                                    patch.faceCentres()[faceT],
+                                    neighbFaceCentres[faceT],
+                                    patch.faceNormals()[faceT],
+                                    neighbFaceAreas[faceT]
+                                    /(mag(neighbFaceAreas[faceT]) + VSMALL)
+                                );
 
                             referredCellsToTransfer.append(cellToReRefer);
                         }
@@ -1409,6 +1426,7 @@ void Foam::referredCellList::buildReferredCellList
     }
 }
 
+
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
 Foam::referredCellList::referredCellList
@@ -1557,7 +1575,4 @@ void Foam::referredCellList::referMolecules
 }
 
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-
 // ************************************************************************* //
diff --git a/src/lagrangian/molecularDynamics/molecule/interactionLists/referredCellList/referredCellList.H b/src/lagrangian/molecularDynamics/molecule/interactionLists/referredCellList/referredCellList.H
index e323a9dcb661ae3af8add5b25d9ee764936e804d..c8a77cb27f320ad9a4c8f46921725363b4e1c569 100644
--- a/src/lagrangian/molecularDynamics/molecule/interactionLists/referredCellList/referredCellList.H
+++ b/src/lagrangian/molecularDynamics/molecule/interactionLists/referredCellList/referredCellList.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -48,7 +48,7 @@ namespace Foam
 class interactionLists;
 
 /*---------------------------------------------------------------------------*\
-                        Class referredCellList Declaration
+                      Class referredCellList Declaration
 \*---------------------------------------------------------------------------*/
 
 class referredCellList
@@ -59,7 +59,8 @@ class referredCellList
 
         const interactionLists& il_;
 
-        // Private Member Functions
+
+    // Private Member Functions
 
         void buildReferredCellList
         (
diff --git a/src/lagrangian/molecularDynamics/molecule/interactionLists/referredCellList/referredCellListI.H b/src/lagrangian/molecularDynamics/molecule/interactionLists/referredCellList/referredCellListI.H
index a81d6cf8e834faf72acb2f36d5859fec030d2b0f..588bf94eabb916d7a36caddc02f72cc99c1f6a21 100644
--- a/src/lagrangian/molecularDynamics/molecule/interactionLists/referredCellList/referredCellListI.H
+++ b/src/lagrangian/molecularDynamics/molecule/interactionLists/referredCellList/referredCellListI.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/lagrangian/molecularDynamics/molecule/interactionLists/referredMolecule/referredMolecule.C b/src/lagrangian/molecularDynamics/molecule/interactionLists/referredMolecule/referredMolecule.C
index 3db08989c320039f1df76b76456b4cd82898db03..c1e2e487695d4f1305809dde4c3a8412ed6ecac5 100644
--- a/src/lagrangian/molecularDynamics/molecule/interactionLists/referredMolecule/referredMolecule.C
+++ b/src/lagrangian/molecularDynamics/molecule/interactionLists/referredMolecule/referredMolecule.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -83,6 +83,4 @@ Foam::Ostream& Foam::operator<<
 }
 
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
 // ************************************************************************* //
diff --git a/src/lagrangian/molecularDynamics/molecule/interactionLists/referredMolecule/referredMolecule.H b/src/lagrangian/molecularDynamics/molecule/interactionLists/referredMolecule/referredMolecule.H
index 13fd0983d74d342b793c7b328b39cb27e8aaaf97..27c3c98ee39f45991318c192ba51c0ff34b01b7b 100644
--- a/src/lagrangian/molecularDynamics/molecule/interactionLists/referredMolecule/referredMolecule.H
+++ b/src/lagrangian/molecularDynamics/molecule/interactionLists/referredMolecule/referredMolecule.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -45,7 +45,7 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                           Class referredMolecule Declaration
+                      Class referredMolecule Declaration
 \*---------------------------------------------------------------------------*/
 
 class referredMolecule
diff --git a/src/lagrangian/molecularDynamics/molecule/interactionLists/referredMolecule/referredMoleculeI.H b/src/lagrangian/molecularDynamics/molecule/interactionLists/referredMolecule/referredMoleculeI.H
index 102bd5e30fb0db48a965283f9bb49cc41f636173..1db2f9a923f957a4c4e4a64b22c29bba34f22e69 100644
--- a/src/lagrangian/molecularDynamics/molecule/interactionLists/referredMolecule/referredMoleculeI.H
+++ b/src/lagrangian/molecularDynamics/molecule/interactionLists/referredMolecule/referredMoleculeI.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -45,6 +45,7 @@ Foam::referredMolecule::sitePositions() const
     return sitePositions_;
 }
 
+
 // * * * * * * * * * * * * * * * Friend Operators  * * * * * * * * * * * * * //
 
 inline bool Foam::operator==
@@ -71,6 +72,4 @@ inline bool Foam::operator!=
 }
 
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
 // ************************************************************************* //
diff --git a/src/lagrangian/molecularDynamics/molecule/mdTools/averageMDFields.H b/src/lagrangian/molecularDynamics/molecule/mdTools/averageMDFields.H
index db0c24bc95e00bc77c0de6f358e5434ecffbf0fa..9781c9d70f415b8c92d90d29d3b05ec015bcebcc 100644
--- a/src/lagrangian/molecularDynamics/molecule/mdTools/averageMDFields.H
+++ b/src/lagrangian/molecularDynamics/molecule/mdTools/averageMDFields.H
@@ -5,68 +5,68 @@ if (runTime.outputTime())
     \*-----------------------------------------------------------------------*/
 
     scalarField totalRhoN_sum(mesh.nCells(), 0.0);
-    
+
     forAll (allSpeciesRhoN, rN)
     {
         allSpeciesRhoN[rN].internalField() =
             allSpeciesN_RU[rN]
             /mesh.cellVolumes()
             /nAveragingSteps;
-            
+
         totalRhoN_sum += allSpeciesRhoN[rN].internalField();
     }
-    
+
     totalRhoN.internalField() = totalRhoN_sum;
-    
-    
+
+
     /*-----------------------------------------------------------------------*\
         Mass density
     \*-----------------------------------------------------------------------*/
-    
+
     scalarField totalRhoM_sum(mesh.nCells(), 0.0);
-    
+
     forAll (allSpeciesRhoM, rM)
     {
         allSpeciesRhoM[rM].internalField() =
             allSpeciesM_RU[rM]
             /mesh.cellVolumes()
             /nAveragingSteps;
-            
+
         totalRhoM_sum += allSpeciesRhoM[rM].internalField();
     }
-    
+
     totalRhoM.internalField() = totalRhoM_sum;
-    
+
     /*-----------------------------------------------------------------------*\
         Bulk velocity
     \*-----------------------------------------------------------------------*/
-    
+
     vectorField totalMomentum_sum(mesh.nCells(), vector::zero);
-    
+
     scalarField totalMass_sum(mesh.nCells(), 0.0);
-    
+
     forAll (allSpeciesVelocity, v)
     {
         // A check for 1/0 molecules is required.
-    
+
         vectorField& singleSpeciesVelocity
         (
             allSpeciesVelocity[v].internalField()
         );
-        
+
         forAll(singleSpeciesVelocity, sSV)
         {
-            if(allSpeciesN_RU[v][sSV])
+            if (allSpeciesN_RU[v][sSV])
             {
-                singleSpeciesVelocity[sSV] = 
+                singleSpeciesVelocity[sSV] =
                     allSpeciesVelocitySum_RU[v][sSV]
                     /allSpeciesN_RU[v][sSV];
-                    
+
                 totalMomentum_sum[sSV] +=
                     allSpeciesM_RU[v][sSV]
                     /allSpeciesN_RU[v][sSV]
                     *allSpeciesVelocitySum_RU[v][sSV];
-                    
+
                 totalMass_sum[sSV] += allSpeciesM_RU[v][sSV];
             }
             else
@@ -75,10 +75,10 @@ if (runTime.outputTime())
             }
         }
     }
-    
+
     forAll(totalVelocity.internalField(), tV)
     {
-        if(totalMass_sum[tV] > VSMALL)
+        if (totalMass_sum[tV] > VSMALL)
         {
             totalVelocity.internalField()[tV] =
                 totalMomentum_sum[tV]
@@ -90,34 +90,33 @@ if (runTime.outputTime())
             vector::zero;
         }
     }
-    
+
     /*-----------------------------------------------------------------------*\
         Kinetic temperature
     \*-----------------------------------------------------------------------*/
-    
+
     scalarField totalTemperatureVTerms_sum(mesh.nCells(), 0.0);
-    
+
     scalarField totalN_sum(mesh.nCells(), 0.0);
-    
+
     forAll (allSpeciesTemperature, t)
     {
         // A check for 1/0 molecules is required.
-    
+
         scalarField& singleSpeciesTemp
         (
             allSpeciesTemperature[t].internalField()
         );
-        
+
         forAll(singleSpeciesTemp, sST)
         {
-            if(allSpeciesN_RU[t][sST])
+            if (allSpeciesN_RU[t][sST])
             {
-                singleSpeciesTemp[sST] = 
+                singleSpeciesTemp[sST] =
                     allSpeciesM_RU[t][sST]
                     /allSpeciesN_RU[t][sST]
                     /(3.0 * moleculeCloud::kb * allSpeciesN_RU[t][sST])
-                    *
-                    (
+                   *(
                         allSpeciesVelocityMagSquaredSum_RU[t][sST]
                         -
                         (
@@ -127,14 +126,13 @@ if (runTime.outputTime())
                         )
                         /allSpeciesN_RU[t][sST]
                     );
-                    
+
                 totalTemperatureVTerms_sum[sST] +=
                     allSpeciesM_RU[t][sST]
-                    /allSpeciesN_RU[t][sST]
-                    *
-                    (
+                   /allSpeciesN_RU[t][sST]
+                   *(
                         allSpeciesVelocityMagSquaredSum_RU[t][sST]
-                        -
+                      -
                         (
                             allSpeciesVelocitySum_RU[t][sST]
                             &
@@ -142,7 +140,7 @@ if (runTime.outputTime())
                         )
                         /allSpeciesN_RU[t][sST]
                     );
-                    
+
                 totalN_sum[sST] += allSpeciesN_RU[t][sST];
             }
             else
@@ -151,7 +149,7 @@ if (runTime.outputTime())
             }
         }
     }
-    
+
     forAll(totalTemperature.internalField(), tT)
     {
         if(totalN_sum[tT] > 0)
@@ -165,41 +163,39 @@ if (runTime.outputTime())
             totalTemperature.internalField()[tT] = 0.0;
         }
     }
-    
+
     /*-----------------------------------------------------------------------*\
         Mean kinetic energy
     \*-----------------------------------------------------------------------*/
-    
+
     scalarField totalKE_sum(mesh.nCells(), 0.0);
-    
+
     forAll (allSpeciesMeanKE, mKE)
     {
         // A check for 1/0 molecules is required.
-    
+
         scalarField& singleSpeciesMeanKE
         (
             allSpeciesMeanKE[mKE].internalField()
         );
-        
+
         forAll(singleSpeciesMeanKE, sSMKE)
         {
             if(allSpeciesN_RU[mKE][sSMKE])
             {
-                singleSpeciesMeanKE[sSMKE] = 
+                singleSpeciesMeanKE[sSMKE] =
                     allSpeciesM_RU[mKE][sSMKE]
-                    /allSpeciesN_RU[mKE][sSMKE]
-                    /(2.0 * allSpeciesN_RU[mKE][sSMKE])
-                    *
-                    (
+                   /allSpeciesN_RU[mKE][sSMKE]
+                   /(2.0*allSpeciesN_RU[mKE][sSMKE])
+                   *(
                         allSpeciesVelocityMagSquaredSum_RU[mKE][sSMKE]
                     );
-                    
+
                 totalKE_sum[sSMKE] +=
                     allSpeciesM_RU[mKE][sSMKE]
                     /allSpeciesN_RU[mKE][sSMKE]
                     /2.0
-                    *
-                    (
+                   *(
                         allSpeciesVelocityMagSquaredSum_RU[mKE][sSMKE]
                     );
             }
@@ -209,7 +205,7 @@ if (runTime.outputTime())
             }
         }
     }
-    
+
     forAll(totalMeanKE.internalField(), tMKE)
     {
         if(totalN_sum[tMKE] > 0)
diff --git a/src/lagrangian/molecularDynamics/molecule/mdTools/calculateAutoCorrelationFunctions.H b/src/lagrangian/molecularDynamics/molecule/mdTools/calculateAutoCorrelationFunctions.H
index ce0113352e38b7ce230510a5786346efa706bb47..968cfa93cb80339db241aaf317418d678dbbcaa5 100644
--- a/src/lagrangian/molecularDynamics/molecule/mdTools/calculateAutoCorrelationFunctions.H
+++ b/src/lagrangian/molecularDynamics/molecule/mdTools/calculateAutoCorrelationFunctions.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -60,18 +60,15 @@ if (mesh.time().timeIndex() % pacf.sampleSteps() == 0)
     {
         p.x() +=
             mol().mass() * mol().U().y() * mol().U().z()
-            +
-            0.5 * mol().rf().yz();
+          + 0.5*mol().rf().yz();
 
         p.y() +=
             mol().mass() * mol().U().z() * mol().U().x()
-            +
-            0.5 * mol().rf().zx();
+          + 0.5*mol().rf().zx();
 
         p.z() +=
             mol().mass() * mol().U().x() * mol().U().y()
-            +
-            0.5 * mol().rf().xy();
+          + 0.5*mol().rf().xy();
     }
 
     pacf.calculateCorrelationFunction(p);
@@ -93,12 +90,10 @@ if (mesh.time().timeIndex() % hfacf.sampleSteps() == 0)
     {
         s +=
         (
-            0.5 * mol().mass() * magSqr(mol().U())
-            +
-            mol().potentialEnergy()
-        ) * mol().U()
-        +
-        0.5 * ( mol().rf() & mol().U() );
+            0.5*mol().mass()*magSqr(mol().U())
+          + mol().potentialEnergy()
+        )*mol().U()
+      + 0.5*(mol().rf() & mol().U());
     }
 
     hfacf.calculateCorrelationFunction(s);
diff --git a/src/lagrangian/molecularDynamics/molecule/mdTools/calculateTransportProperties.H b/src/lagrangian/molecularDynamics/molecule/mdTools/calculateTransportProperties.H
index 1ffbcc15b79d4b45fd462d6c799747370b7d137b..0ee094ff149a2d25a9b9ff89d8f31420557039b0 100644
--- a/src/lagrangian/molecularDynamics/molecule/mdTools/calculateTransportProperties.H
+++ b/src/lagrangian/molecularDynamics/molecule/mdTools/calculateTransportProperties.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -37,7 +37,7 @@ if (writeVacf)
     }
 }
 
-Info << "Diffusion coefficient = "
+Info<< "Diffusion coefficient = "
     << vacf.integral() << endl;
 
 if (writePacf)
@@ -57,13 +57,13 @@ Info<< "Viscosity = "
     << pacf.integral()/averageTemperature/moleculeCloud::kb/meshVolume
     << endl;
 
-if(writeHFacf)
+if (writeHFacf)
 {
     OFstream hfacfFile
     (
         runTime.path()/ + "hfacf"
     );
-    
+
     if (!hfacf.writeAveraged(hfacfFile))
     {
         FatalErrorIn(args.executable())
@@ -73,7 +73,7 @@ if(writeHFacf)
     }
 }
 
-Info << "Thermal conductivity = "
+Info<< "Thermal conductivity = "
     << hfacf.integral()
         /averageTemperature
         /averageTemperature
diff --git a/src/lagrangian/molecularDynamics/molecule/mdTools/createAutoCorrelationFunctions.H b/src/lagrangian/molecularDynamics/molecule/mdTools/createAutoCorrelationFunctions.H
index 6821055ae0036f84b57eaabda6ee2eff4d2842ca..ab2d593cc682aec604752381264053cc4edc3840 100644
--- a/src/lagrangian/molecularDynamics/molecule/mdTools/createAutoCorrelationFunctions.H
+++ b/src/lagrangian/molecularDynamics/molecule/mdTools/createAutoCorrelationFunctions.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/lagrangian/molecularDynamics/molecule/mdTools/md.H b/src/lagrangian/molecularDynamics/molecule/mdTools/md.H
index ae4ab08124268c2dbeb756c5c8fc932abc84b07e..9a079764ae823abdac17a56236003610c44863df 100644
--- a/src/lagrangian/molecularDynamics/molecule/mdTools/md.H
+++ b/src/lagrangian/molecularDynamics/molecule/mdTools/md.H
@@ -1,11 +1,9 @@
 #ifndef md_H
 #define md_H
-
-#   include "potential.H"
-#   include "moleculeCloud.H"
-#   include "correlationFunction.H"
-#   include "distribution.H"
-#   include "reducedUnits.H"
-
+    #include "potential.H"
+    #include "moleculeCloud.H"
+    #include "correlationFunction.H"
+    #include "distribution.H"
+    #include "reducedUnits.H"
 #endif
 
diff --git a/src/lagrangian/molecularDynamics/molecule/mdTools/meanMomentumEnergyAndNMols.H b/src/lagrangian/molecularDynamics/molecule/mdTools/meanMomentumEnergyAndNMols.H
index 8688d63669bbda4a361b5d4b91d348b2bb2cdc21..fb5118bb5a484f0ce77bb3dd7a88b0e88aa2fd14 100644
--- a/src/lagrangian/molecularDynamics/molecule/mdTools/meanMomentumEnergyAndNMols.H
+++ b/src/lagrangian/molecularDynamics/molecule/mdTools/meanMomentumEnergyAndNMols.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -52,6 +52,8 @@ scalar singleStepTotalrDotf = 0.0;
 
 label singleStepNMols = molecules.size();
 
+label singleStepDOFs = 0;
+
 {
     IDLList<molecule>::iterator mol(molecules.begin());
 
@@ -85,9 +87,11 @@ label singleStepNMols = molecules.size();
     {
         label molId = mol().id();
 
-        scalar molMass(molecules.constProps(molId).mass());
+        const molecule::constantProperties cP(molecules.constProps(molId));
+
+        scalar molMass(cP.mass());
 
-        const diagTensor& molMoI(molecules.constProps(molId).momentOfInertia());
+        const diagTensor& molMoI(cP.momentOfInertia());
 
         const vector& molV(mol().v());
 
@@ -112,6 +116,8 @@ label singleStepNMols = molecules.size();
         singleStepTotalPE += mol().potentialEnergy();
 
         singleStepTotalrDotf += tr(mol().rf());
+
+        singleStepDOFs += cP.degreesOfFreedom();
     }
 }
 
@@ -134,50 +140,53 @@ if (Pstream::parRun())
     reduce(singleStepTotalrDotf, sumOp<scalar>());
 
     reduce(singleStepNMols, sumOp<label>());
+
+    reduce(singleStepDOFs, sumOp<label>());
 }
 
 if (singleStepNMols)
 {
-    Info<< "Number of mols in system = "
+    Info<< "Number of molecules in system = "
         << singleStepNMols << nl
         << "Overall number density = "
         << singleStepNMols/meshVolume << nl
         << "Overall mass density = "
         << singleStepTotalMass/meshVolume << nl
-        << "Average linear momentum per mol = "
+        << "Average linear momentum per molecule = "
         << singleStepTotalLinearMomentum/singleStepNMols << ' '
         << mag(singleStepTotalLinearMomentum)/singleStepNMols << nl
-        << "Average angular momentum per mol = "
+        << "Average angular momentum per molecule = "
         << singleStepTotalAngularMomentum << ' '
         << mag(singleStepTotalAngularMomentum)/singleStepNMols << nl
         << "Maximum |velocity| = "
         << singleStepMaxVelocityMag << nl
-        << "Average linear KE per mol = "
+        << "Average linear KE per molecule = "
         << singleStepTotalLinearKE/singleStepNMols << nl
-        << "Average angular KE per mol = "
+        << "Average angular KE per molecule = "
         << singleStepTotalAngularKE/singleStepNMols << nl
-        << "Average PE per mol = "
+        << "Average PE per molecule = "
         << singleStepTotalPE/singleStepNMols << nl
-        << "Average TE per mol = "
+        << "Average TE per molecule = "
         <<
         (
             singleStepTotalLinearKE
-            + singleStepTotalAngularKE
-            + singleStepTotalPE
+          + singleStepTotalAngularKE
+          + singleStepTotalPE
         )
         /singleStepNMols
         << endl;
 
-//     Info << singleStepNMols << " "
-// //     << singleStepTotalMomentum/singleStepTotalMass << " "
-//     << singleStepMaxVelocityMag << " "
-//     << singleStepTotalKE/singleStepNMols << " "
-//     << singleStepTotalPE/singleStepNMols << " "
-//     << (singleStepTotalKE + singleStepTotalPE)/singleStepNMols << endl;
+        // Info << singleStepNMols << " "
+        //     << singleStepTotalMomentum/singleStepTotalMass << " "
+        //     << singleStepMaxVelocityMag << " "
+        //     << singleStepTotalKE/singleStepNMols << " "
+        //     << singleStepTotalPE/singleStepNMols << " "
+        //     << (singleStepTotalKE + singleStepTotalPE)
+        //        /singleStepNMols << endl;
 }
 else
 {
-    Info << "No molecules in system" << endl;
+    Info<< "No molecules in system" << endl;
 }
 
 
diff --git a/src/lagrangian/molecularDynamics/molecule/mdTools/resetMDFields.H b/src/lagrangian/molecularDynamics/molecule/mdTools/resetMDFields.H
index ff274a33366d579e1a12ae49cf425bd7f9b34cc9..af0197b5fe4dc0fc2e75858e9f49ba86f3b0a273 100644
--- a/src/lagrangian/molecularDynamics/molecule/mdTools/resetMDFields.H
+++ b/src/lagrangian/molecularDynamics/molecule/mdTools/resetMDFields.H
@@ -3,24 +3,24 @@ if (runTime.outputTime())
     allSpeciesN_RU = List< scalarField >
     (
         molecules.potential().nIds(),
-        scalarField (mesh.nCells(), 0.0)
+        scalarField(mesh.nCells(), 0.0)
     );
 
     allSpeciesM_RU = List< scalarField >
     (
         molecules.potential().nIds(),
-        scalarField (mesh.nCells(), 0.0)
+        scalarField(mesh.nCells(), 0.0)
     );
 
     allSpeciesVelocitySum_RU = List< vectorField >
     (
         molecules.potential().nIds(),
-        vectorField (mesh.nCells(), vector::zero)
+        vectorField(mesh.nCells(), vector::zero)
     );
 
     allSpeciesVelocityMagSquaredSum_RU = List< scalarField >
     (
         molecules.potential().nIds(),
-        scalarField (mesh.nCells(), 0.0)
+        scalarField(mesh.nCells(), 0.0)
     );
 }
diff --git a/src/lagrangian/molecularDynamics/molecule/mdTools/temperatureAndPressure.H b/src/lagrangian/molecularDynamics/molecule/mdTools/temperatureAndPressure.H
index 4ba2bc1bc4d3188c4137b20d50626f963f0550bc..788763b163df63c6e173b91ce6905bd81384f758 100644
--- a/src/lagrangian/molecularDynamics/molecule/mdTools/temperatureAndPressure.H
+++ b/src/lagrangian/molecularDynamics/molecule/mdTools/temperatureAndPressure.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -47,17 +47,17 @@ accumulatedTotalrDotfSum += singleStepTotalrDotf;
 
 accumulatedNMols += singleStepNMols;
 
+accumulatedDOFs += singleStepDOFs;
+
 if (runTime.outputTime())
 {
-    // calculate averages
-
     if (accumulatedNMols)
     {
         Info << "calculating averages" << endl;
 
         averageTemperature =
         (
-            2.0/(6.0 * moleculeCloud::kb * accumulatedNMols)
+            2.0/(moleculeCloud::kb * accumulatedDOFs)
             *
             (
                 accumulatedTotalLinearKE + accumulatedTotalAngularKE
@@ -79,27 +79,20 @@ if (runTime.outputTime())
             meshVolume
         );
 
-        // output values
-
         Info << "----------------------------------------" << nl
             << "Averaged properties" << nl
             << "Average |velocity| = "
-                << mag(accumulatedTotalLinearMomentum)/accumulatedTotalMass
-                << " m/s" << nl
-            << "Average temperature = "
-                << averageTemperature << " K" << nl
-            << "Average pressure = "
-                << averagePressure << " N/m^2" << nl
+            << mag(accumulatedTotalLinearMomentum)/accumulatedTotalMass << nl
+            << "Average temperature = " << averageTemperature << nl
+            << "Average pressure = " << averagePressure << nl
             << "----------------------------------------" << endl;
     }
     else
     {
-        Info << "Not averaging temperature and pressure: "
+        Info<< "Not averaging temperature and pressure: "
             << "no molecules in system" << endl;
     }
 
-    // reset counters
-
     accumulatedTotalLinearMomentum = vector::zero;
 
     accumulatedTotalMass = 0.0;
@@ -113,6 +106,9 @@ if (runTime.outputTime())
     accumulatedTotalrDotfSum = 0.0;
 
     accumulatedNMols = 0;
+
+    accumulatedDOFs = 0;
 }
 
+
 // ************************************************************************* //
diff --git a/src/lagrangian/molecularDynamics/molecule/mdTools/temperatureAndPressureVariables.H b/src/lagrangian/molecularDynamics/molecule/mdTools/temperatureAndPressureVariables.H
index e5e236271f834659d2c1662427e95e66164408a3..9856c9d4da82a62412ce5a96c73bd8c7656456fc 100644
--- a/src/lagrangian/molecularDynamics/molecule/mdTools/temperatureAndPressureVariables.H
+++ b/src/lagrangian/molecularDynamics/molecule/mdTools/temperatureAndPressureVariables.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -44,6 +44,8 @@ scalar accumulatedTotalrDotfSum = 0.0;
 
 label accumulatedNMols = 0;
 
+label accumulatedDOFs = 0;
+
 scalar averageTemperature = 0.0;
 
 scalar averagePressure = 0.0;
diff --git a/src/lagrangian/molecularDynamics/molecule/mdTools/temperatureEquilibration.H b/src/lagrangian/molecularDynamics/molecule/mdTools/temperatureEquilibration.H
index 1d924db4b49ad84b14895c13d45152e0ee4c0134..b1ac5d4230e4de124495c8f45e53542380a961db 100644
--- a/src/lagrangian/molecularDynamics/molecule/mdTools/temperatureEquilibration.H
+++ b/src/lagrangian/molecularDynamics/molecule/mdTools/temperatureEquilibration.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/lagrangian/molecularDynamics/molecule/molecule/molecule.C b/src/lagrangian/molecularDynamics/molecule/molecule/molecule.C
index ac45040c096840c13064609ed9b80de5b6ef4543..64c5c45ccf9bc54036aca97284dbe6d218a314f2 100644
--- a/src/lagrangian/molecularDynamics/molecule/molecule/molecule.C
+++ b/src/lagrangian/molecularDynamics/molecule/molecule/molecule.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -241,6 +241,28 @@ void Foam::molecule::setSiteSizes(label size)
 }
 
 
+bool Foam::molecule::hitPatch
+(
+    const polyPatch&,
+    molecule::trackData&,
+    const label
+)
+{
+    return false;
+}
+
+
+bool Foam::molecule::hitPatch
+(
+    const polyPatch&,
+    int&,
+    const label
+)
+{
+    return false;
+}
+
+
 void Foam::molecule::hitProcessorPatch
 (
     const processorPolyPatch&,
diff --git a/src/lagrangian/molecularDynamics/molecule/molecule/molecule.H b/src/lagrangian/molecularDynamics/molecule/molecule/molecule.H
index 04e33428e99948adae78dbf6645dabc258d42ddd..ef2de145c464a7e5cefe15e652bcf34cd440c908 100644
--- a/src/lagrangian/molecularDynamics/molecule/molecule/molecule.H
+++ b/src/lagrangian/molecularDynamics/molecule/molecule/molecule.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -82,6 +82,8 @@ public:
 
             Field<vector> siteReferencePositions_;
 
+            List<scalar> siteMasses_;
+
             List<scalar> siteCharges_;
 
             List<label> siteIds_;
@@ -106,6 +108,7 @@ public:
 
             bool linearMoleculeTest() const;
 
+
     public:
 
         inline constantProperties();
@@ -117,6 +120,8 @@ public:
 
         inline const Field<vector>& siteReferencePositions() const;
 
+        inline const List<scalar>& siteMasses() const;
+
         inline const List<scalar>& siteCharges() const;
 
         inline const List<label>& siteIds() const;
@@ -137,6 +142,8 @@ public:
 
         inline bool pointMolecule() const;
 
+        inline label degreesOfFreedom() const;
+
         inline scalar mass() const;
 
         inline label nSites() const;
@@ -208,6 +215,7 @@ private:
 
         List<vector> sitePositions_;
 
+
     // Private Member Functions
 
         tensor rotationTensorX(scalar deltaT) const;
@@ -216,6 +224,7 @@ private:
 
         tensor rotationTensorZ(scalar deltaT) const;
 
+
 public:
 
     friend class Cloud<molecule>;
@@ -256,7 +265,8 @@ public:
 
     // Member Functions
 
-        //- Tracking
+        // Tracking
+
             bool move(trackData&);
 
             void transformProperties(const tensor& T);
@@ -267,6 +277,7 @@ public:
 
             void setSiteSizes(label size);
 
+
         // Access
 
             inline const tensor& Q() const;
@@ -305,8 +316,27 @@ public:
 
             inline label id() const;
 
+
     // Member Operators
 
+        //- Overridable function to handle the particle hitting a patch
+        //  Executed before other patch-hitting functions
+        bool hitPatch
+        (
+            const polyPatch&,
+            molecule::trackData& td,
+            const label patchI
+        );
+
+        //- Overridable function to handle the particle hitting a patch
+        //  Executed before other patch-hitting functions without trackData
+        bool hitPatch
+        (
+            const polyPatch& p,
+            int& td,
+            const label patchI
+        );
+
         //- Overridable function to handle the particle hitting a processorPatch
         void hitProcessorPatch
         (
diff --git a/src/lagrangian/molecularDynamics/molecule/molecule/moleculeI.H b/src/lagrangian/molecularDynamics/molecule/molecule/moleculeI.H
index eb80dd930fb7fa22ad6ed70d27cbd78930433340..447a04e4ea3e047f045ac56cf55af05aa2849cac 100644
--- a/src/lagrangian/molecularDynamics/molecule/molecule/moleculeI.H
+++ b/src/lagrangian/molecularDynamics/molecule/molecule/moleculeI.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -29,6 +29,7 @@ License
 inline Foam::molecule::constantProperties::constantProperties()
 :
     siteReferencePositions_(Field<vector>(0)),
+    siteMasses_(List<scalar>(0)),
     siteCharges_(List<scalar>(0)),
     siteIds_(List<label>(0)),
     pairPotentialSites_(List<bool>(false)),
@@ -44,6 +45,7 @@ inline Foam::molecule::constantProperties::constantProperties
 )
 :
     siteReferencePositions_(dict.lookup("siteReferencePositions")),
+    siteMasses_(dict.lookup("siteMasses")),
     siteCharges_(dict.lookup("siteCharges")),
     siteIds_(List<word>(dict.lookup("siteIds")).size(), -1),
     pairPotentialSites_(),
@@ -59,9 +61,7 @@ inline Foam::molecule::constantProperties::constantProperties
         List<word>(dict.lookup("pairPotentialSiteIds"))
     );
 
-    scalarList siteMasses(dict.lookup("siteMasses"));
-
-    mass_ = sum(siteMasses);
+    mass_ = sum(siteMasses_);
 
     vector centreOfMass(vector::zero);
 
@@ -70,7 +70,7 @@ inline Foam::molecule::constantProperties::constantProperties
 
     forAll(siteReferencePositions_, i)
     {
-        centreOfMass += siteReferencePositions_[i]*siteMasses[i];
+        centreOfMass += siteReferencePositions_[i]*siteMasses_[i];
     }
 
     centreOfMass /= mass_;
@@ -106,7 +106,7 @@ inline Foam::molecule::constantProperties::constantProperties
 
         forAll(siteReferencePositions_, i)
         {
-            centreOfMass += siteReferencePositions_[i]*siteMasses[i];
+            centreOfMass += siteReferencePositions_[i]*siteMasses_[i];
         }
 
         centreOfMass /= mass_;
@@ -119,10 +119,8 @@ inline Foam::molecule::constantProperties::constantProperties
         {
             const vector& p(siteReferencePositions_[i]);
 
-            momOfInertia += siteMasses[i]*diagTensor
-            (
-                0, p.x()*p.x(), p.x()*p.x()
-            );
+            momOfInertia +=
+                siteMasses_[i]*diagTensor(0, p.x()*p.x(), p.x()*p.x());
         }
 
         momentOfInertia_ = diagTensor
@@ -144,7 +142,7 @@ inline Foam::molecule::constantProperties::constantProperties
         {
             const vector& p(siteReferencePositions_[i]);
 
-            momOfInertia += siteMasses[i]*tensor
+            momOfInertia += siteMasses_[i]*tensor
             (
                 p.y()*p.y() + p.z()*p.z(), -p.x()*p.y(), -p.x()*p.z(),
                 -p.y()*p.x(), p.x()*p.x() + p.z()*p.z(), -p.y()*p.z(),
@@ -156,8 +154,7 @@ inline Foam::molecule::constantProperties::constantProperties
         {
             FatalErrorIn("molecule::constantProperties::constantProperties")
                 << "An eigenvalue of the inertia tensor is zero, the molecule "
-                << dict.name()
-                << " is not a valid 6DOF shape."
+                << dict.name() << " is not a valid 6DOF shape."
                 << nl << abort(FatalError);
         }
 
@@ -172,7 +169,7 @@ inline Foam::molecule::constantProperties::constantProperties
         // global axes
 
         tensor Q =
-        vector(1,0,0)*e.x() + vector(0,1,0)*e.y() + vector(0,0,1)*e.z();
+            vector(1,0,0)*e.x() + vector(0,1,0)*e.y() + vector(0,0,1)*e.z();
 
         // Transform the site positions
 
@@ -187,7 +184,7 @@ inline Foam::molecule::constantProperties::constantProperties
 
         forAll(siteReferencePositions_, i)
         {
-            centreOfMass += siteReferencePositions_[i]*siteMasses[i];
+            centreOfMass += siteReferencePositions_[i]*siteMasses_[i];
         }
 
         centreOfMass /= mass_;
@@ -203,7 +200,7 @@ inline Foam::molecule::constantProperties::constantProperties
         {
             const vector& p(siteReferencePositions_[i]);
 
-            momOfInertia += siteMasses[i]*tensor
+            momOfInertia += siteMasses_[i]*tensor
             (
                 p.y()*p.y() + p.z()*p.z(), -p.x()*p.y(), -p.x()*p.z(),
                 -p.y()*p.x(), p.x()*p.x() + p.z()*p.z(), -p.y()*p.z(),
@@ -337,6 +334,13 @@ Foam::molecule::constantProperties::siteReferencePositions() const
 }
 
 
+inline const Foam::List<Foam::scalar>&
+Foam::molecule::constantProperties::siteMasses() const
+{
+    return siteMasses_;
+}
+
+
 inline const Foam::List<Foam::scalar>&
 Foam::molecule::constantProperties::siteCharges() const
 {
@@ -372,7 +376,7 @@ inline bool Foam::molecule::constantProperties::pairPotentialSite
 {
     label s = findIndex(siteIds_, sId);
 
-    if(s == -1)
+    if (s == -1)
     {
         FatalErrorIn("moleculeI.H") << nl
             << sId << " site not found."
@@ -396,10 +400,12 @@ inline bool Foam::molecule::constantProperties::electrostaticSite
 {
     label s = findIndex(siteIds_, sId);
 
-    if(s == -1)
+    if (s == -1)
     {
-        FatalErrorIn("moleculeI.H") << nl
-            << sId << " site not found."
+        FatalErrorIn
+        (
+            "molecule::constantProperties::electrostaticSite(label)"
+        )   << sId << " site not found."
             << nl << abort(FatalError);
     }
 
@@ -416,7 +422,7 @@ Foam::molecule::constantProperties::momentOfInertia() const
 
 inline bool Foam::molecule::constantProperties::linearMolecule() const
 {
-    return (momentOfInertia_.xx() < 0);
+    return ((momentOfInertia_.xx() < 0) && (momentOfInertia_.yy() > 0));
 }
 
 
@@ -426,6 +432,23 @@ inline bool Foam::molecule::constantProperties::pointMolecule() const
 }
 
 
+inline Foam::label Foam::molecule::constantProperties::degreesOfFreedom() const
+{
+    if (linearMolecule())
+    {
+        return 5;
+    }
+    else if (pointMolecule())
+    {
+        return 3;
+    }
+    else
+    {
+        return 6;
+    }
+}
+
+
 inline Foam::scalar Foam::molecule::constantProperties::mass() const
 {
     return mass_;
@@ -592,6 +615,4 @@ inline Foam::label Foam::molecule::id() const
 }
 
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
 // ************************************************************************* //
diff --git a/src/lagrangian/molecularDynamics/molecule/molecule/moleculeIO.C b/src/lagrangian/molecularDynamics/molecule/molecule/moleculeIO.C
index c1e99d8a0bd06b79cf0dbdf36b4b1dde46485ea2..04ae825df59f5914dfc968ee84c58c13b387de62 100644
--- a/src/lagrangian/molecularDynamics/molecule/molecule/moleculeIO.C
+++ b/src/lagrangian/molecularDynamics/molecule/molecule/moleculeIO.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -55,16 +55,16 @@ Foam::molecule::molecule
     {
         if (is.format() == IOstream::ASCII)
         {
-            is >> Q_;
-            is >> v_;
-            is >> a_;
-            is >> pi_;
-            is >> tau_;
-            is >> siteForces_;
-            is >> sitePositions_;
-            is >> specialPosition_;
+            is  >> Q_;
+            is  >> v_;
+            is  >> a_;
+            is  >> pi_;
+            is  >> tau_;
+            is  >> siteForces_;
+            is  >> sitePositions_;
+            is  >> specialPosition_;
             potentialEnergy_ = readScalar(is);
-            is >> rf_;
+            is  >> rf_;
             special_ = readLabel(is);
             id_ = readLabel(is);
         }
@@ -74,18 +74,18 @@ Foam::molecule::molecule
             (
                 reinterpret_cast<char*>(&Q_),
                 sizeof(Q_)
-                + sizeof(v_)
-                + sizeof(a_)
-                + sizeof(pi_)
-                + sizeof(tau_)
-                + sizeof(specialPosition_)
-                + sizeof(potentialEnergy_)
-                + sizeof(rf_)
-                + sizeof(special_)
-                + sizeof(id_)
+              + sizeof(v_)
+              + sizeof(a_)
+              + sizeof(pi_)
+              + sizeof(tau_)
+              + sizeof(specialPosition_)
+              + sizeof(potentialEnergy_)
+              + sizeof(rf_)
+              + sizeof(special_)
+              + sizeof(id_)
             );
 
-            is >> siteForces_ >> sitePositions_;
+            is  >> siteForces_ >> sitePositions_;
         }
     }
 
@@ -169,6 +169,38 @@ void Foam::molecule::writeFields(const moleculeCloud& mC)
     IOField<label> special(mC.fieldIOobject("special", IOobject::NO_READ), np);
     IOField<label> id(mC.fieldIOobject("id", IOobject::NO_READ), np);
 
+    // Post processing fields
+
+    IOField<vector> piGlobal
+    (
+        mC.fieldIOobject("piGlobal", IOobject::NO_READ),
+        np
+    );
+
+    IOField<vector> tauGlobal
+    (
+        mC.fieldIOobject("tauGlobal", IOobject::NO_READ),
+        np
+    );
+
+    IOField<vector> orientation1
+    (
+        mC.fieldIOobject("orientation1", IOobject::NO_READ),
+        np
+    );
+
+    IOField<vector> orientation2
+    (
+        mC.fieldIOobject("orientation2", IOobject::NO_READ),
+        np
+    );
+
+    IOField<vector> orientation3
+    (
+        mC.fieldIOobject("orientation3", IOobject::NO_READ),
+        np
+    );
+
     label i = 0;
     forAllConstIter(moleculeCloud, mC, iter)
     {
@@ -182,6 +214,14 @@ void Foam::molecule::writeFields(const moleculeCloud& mC)
         specialPosition[i] = mol.specialPosition_;
         special[i] = mol.special_;
         id[i] = mol.id_;
+
+        piGlobal[i] = mol.Q_ & mol.pi_;
+        tauGlobal[i] = mol.Q_ & mol.tau_;
+
+        orientation1[i] = mol.Q_ & vector(1,0,0);
+        orientation2[i] = mol.Q_ & vector(0,1,0);
+        orientation3[i] = mol.Q_ & vector(0,0,1);
+
         i++;
     }
 
@@ -193,6 +233,18 @@ void Foam::molecule::writeFields(const moleculeCloud& mC)
     specialPosition.write();
     special.write();
     id.write();
+
+    piGlobal.write();
+    tauGlobal.write();
+
+    orientation1.write();
+    orientation2.write();
+    orientation3.write();
+
+    mC.writeXYZ
+    (
+        mC.mesh().time().timePath() + "/lagrangian" + "/moleculeCloud.xmol"
+    );
 }
 
 
@@ -225,17 +277,17 @@ Foam::Ostream& Foam::operator<<(Ostream& os, const molecule& mol)
         (
             reinterpret_cast<const char*>(&mol.Q_),
             sizeof(mol.Q_)
-            + sizeof(mol.v_)
-            + sizeof(mol.a_)
-            + sizeof(mol.pi_)
-            + sizeof(mol.tau_)
-            + sizeof(mol.specialPosition_)
-            + sizeof(mol.potentialEnergy_)
-            + sizeof(mol.rf_)
-            + sizeof(mol.special_)
-            + sizeof(mol.id_)
+          + sizeof(mol.v_)
+          + sizeof(mol.a_)
+          + sizeof(mol.pi_)
+          + sizeof(mol.tau_)
+          + sizeof(mol.specialPosition_)
+          + sizeof(mol.potentialEnergy_)
+          + sizeof(mol.rf_)
+          + sizeof(mol.special_)
+          + sizeof(mol.id_)
         );
-        os << mol.siteForces_ << mol.sitePositions_;
+        os  << mol.siteForces_ << mol.sitePositions_;
     }
 
     // Check state of Ostream
diff --git a/src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloud.C b/src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloud.C
index a0c45a73655871aaf5b819f6e0f854bb40310790..113fb829421dc6bc1591701c4a54c4e4cd3f05d5 100644
--- a/src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloud.C
+++ b/src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloud.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -507,7 +507,7 @@ void Foam::moleculeCloud::initialiseMolecules
             else
             {
                 const dictionary& zoneDict =
-                mdInitialiseDict.subDict(zone.name());
+                    mdInitialiseDict.subDict(zone.name());
 
                 const scalar temperature
                 (
@@ -530,7 +530,7 @@ void Foam::moleculeCloud::initialiseMolecules
                 {
                     FatalErrorIn("Foam::moleculeCloud::initialiseMolecules")
                         << "latticeIds and latticePositions must be the same "
-                            << " size." << nl
+                        << " size." << nl
                         << abort(FatalError);
                 }
 
@@ -548,6 +548,15 @@ void Foam::moleculeCloud::initialiseMolecules
                         zoneDict.lookup("numberDensity")
                     );
 
+                    if (numberDensity < VSMALL)
+                    {
+                        WarningIn("moleculeCloud::initialiseMolecules")
+                            << "numberDensity too small, not filling zone "
+                            << zone.name() << endl;
+
+                        continue;
+                    }
+
                     latticeCellScale = pow
                     (
                         latticeIds.size()/(det(latticeCellShape)*numberDensity),
@@ -572,9 +581,19 @@ void Foam::moleculeCloud::initialiseMolecules
                         zoneDict.lookup("massDensity")
                     );
 
+                    if (massDensity < VSMALL)
+                    {
+                        WarningIn("moleculeCloud::initialiseMolecules")
+                            << "massDensity too small, not filling zone "
+                            << zone.name() << endl;
+
+                        continue;
+                    }
+
+
                     latticeCellScale = pow
                     (
-                        unitCellMass /(det(latticeCellShape)*massDensity),
+                        unitCellMass/(det(latticeCellShape)*massDensity),
                         (1.0/3.0)
                     );
                 }
@@ -906,7 +925,7 @@ void Foam::moleculeCloud::initialiseMolecules
                     )
                     {
                         WarningIn("Foam::moleculeCloud::initialiseMolecules()")
-                        << "A whole layer of unit cells was placed "
+                            << "A whole layer of unit cells was placed "
                             << "outside the bounds of the mesh, but no "
                             << "molecules have been placed in zone '"
                             << zone.name()
@@ -928,7 +947,6 @@ void Foam::moleculeCloud::initialiseMolecules
 
                     n++;
                 }
-
             }
         }
     }
@@ -1025,6 +1043,21 @@ void Foam::moleculeCloud::createMolecule
 }
 
 
+Foam::label Foam::moleculeCloud::nSites() const
+{
+    label n = 0;
+
+    const_iterator mol(this->begin());
+
+    for (mol = this->begin(); mol != this->end(); ++mol)
+    {
+        n += constProps(mol().id()).nSites();
+    }
+
+    return n;
+}
+
+
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
 Foam::moleculeCloud::moleculeCloud
@@ -1158,4 +1191,30 @@ void Foam::moleculeCloud::writeFields() const
 }
 
 
+void Foam::moleculeCloud::writeXYZ(const fileName& fName) const
+{
+    OFstream str(fName);
+
+    str << nSites() << nl << "moleculeCloud site positions in angstroms" << nl;
+
+    const_iterator mol(this->begin());
+
+    for (mol = this->begin(); mol != this->end(); ++mol)
+    {
+        const molecule::constantProperties& cP = constProps(mol().id());
+
+        forAll(mol().sitePositions(), i)
+        {
+            const point& sP = mol().sitePositions()[i];
+
+            str << pot_.siteIdList()[cP.siteIds()[i]]
+                << ' ' << sP.x()*1e10
+                << ' ' << sP.y()*1e10
+                << ' ' << sP.z()*1e10
+                << nl;
+        }
+    }
+}
+
+
 // ************************************************************************* //
diff --git a/src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloud.H b/src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloud.H
index d6f961ca0ce573329508db010a106d1cd901f9af..6863227c12ceb43c81f07e51e7dea4b1bc2ee5e5 100644
--- a/src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloud.H
+++ b/src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloud.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -44,6 +44,7 @@ SourceFiles
 #include "interactionLists.H"
 #include "labelVector.H"
 #include "Random.H"
+#include "fileName.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -51,7 +52,7 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                           Class moleculeCloud Declaration
+                       Class moleculeCloud Declaration
 \*---------------------------------------------------------------------------*/
 
 class moleculeCloud
@@ -75,6 +76,7 @@ private:
 
         Random rndGen_;
 
+
     // Private Member Functions
 
         void buildConstProps();
@@ -131,6 +133,8 @@ private:
             const vector& bulkVelocity
         );
 
+        label nSites() const;
+
         inline vector equipartitionLinearVelocity
         (
             scalar temperature,
@@ -160,6 +164,7 @@ public:
 
         static scalar vacuumPermittivity;
 
+
     // Constructors
 
         //- Construct given mesh and potential references
@@ -177,8 +182,8 @@ public:
             const IOdictionary& mdInitialiseDict
         );
 
-    // Member Functions
 
+    // Member Functions
 
         //- Evolve the molecules (move, calculate forces, control state etc)
         void evolve();
@@ -191,6 +196,7 @@ public:
             const scalar measuredTemperature
         );
 
+
         // Access
 
             inline const polyMesh& mesh() const;
@@ -204,15 +210,18 @@ public:
             inline const List<molecule::constantProperties> constProps() const;
 
             inline const molecule::constantProperties&
-            constProps(label id) const;
+                constProps(label id) const;
 
             inline Random& rndGen();
 
+
     // Member Operators
 
         //- Write fields
+        void writeFields() const;
 
-            void writeFields() const;
+        //- Write molecule sites in XYZ format
+        void writeXYZ(const fileName& fName) const;
 };
 
 
diff --git a/src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloudI.H b/src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloudI.H
index 55813e665812c14d992c6883802ccdd35df27e74..94c9f49286bda8afbdbd62eef7ca2dd8cb19327e 100644
--- a/src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloudI.H
+++ b/src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloudI.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -32,9 +32,9 @@ inline void Foam::moleculeCloud::evaluatePair
     molecule* molJ
 )
 {
-    const pairPotentialList& pairPot(pot_.pairPotentials());
+    const pairPotentialList& pairPot = pot_.pairPotentials();
 
-    const electrostaticPotential& electrostatic(pot_.electrostatic());
+    const pairPotential& electrostatic = pairPot.electrostatic();
 
     label idI = molI->id();
 
@@ -67,7 +67,7 @@ inline void Foam::moleculeCloud::evaluatePair
             if (pairPotentialSitesI[sI] && pairPotentialSitesJ[sJ])
             {
                 vector rsIsJ =
-                molI->sitePositions()[sI] - molJ->sitePositions()[sJ];
+                    molI->sitePositions()[sI] - molJ->sitePositions()[sJ];
 
                 scalar rsIsJMagSq = magSqr(rsIsJ);
 
@@ -75,8 +75,9 @@ inline void Foam::moleculeCloud::evaluatePair
                 {
                     scalar rsIsJMag = mag(rsIsJ);
 
-                    vector fsIsJ = (rsIsJ/rsIsJMag)
-                    *pairPot.force(idsI, idsJ, rsIsJMag);
+                    vector fsIsJ =
+                        (rsIsJ/rsIsJMag)
+                       *pairPot.force(idsI, idsJ, rsIsJMag);
 
                     molI->siteForces()[sI] += fsIsJ;
 
@@ -91,9 +92,18 @@ inline void Foam::moleculeCloud::evaluatePair
 
                     molJ->potentialEnergy() += 0.5*potentialEnergy;
 
-                    molI->rf() += rsIsJ * fsIsJ;
+                    vector rIJ = molI->position() - molJ->position();
+
+                    tensor virialContribution =
+                        (rsIsJ*fsIsJ)*(rsIsJ & rIJ)/rsIsJMagSq;
+
+                    molI->rf() += virialContribution;
+
+                    molJ->rf() += virialContribution;
 
-                    molJ->rf() += rsIsJ * fsIsJ;
+                    // molI->rf() += rsIsJ * fsIsJ;
+
+                    // molJ->rf() += rsIsJ * fsIsJ;
                 }
             }
 
@@ -104,7 +114,7 @@ inline void Foam::moleculeCloud::evaluatePair
 
                 scalar rsIsJMagSq = magSqr(rsIsJ);
 
-                if(pairPot.rCutMaxSqr(rsIsJMagSq))
+                if(rsIsJMagSq <= electrostatic.rCutSqr())
                 {
                     scalar rsIsJMag = mag(rsIsJ);
 
@@ -112,38 +122,50 @@ inline void Foam::moleculeCloud::evaluatePair
 
                     scalar chargeJ = constPropJ.siteCharges()[sJ];
 
-                    vector fsIsJ = (rsIsJ/rsIsJMag)
-                    *chargeI*chargeJ*electrostatic.force(rsIsJMag);
+                    vector fsIsJ =
+                        (rsIsJ/rsIsJMag)
+                       *chargeI*chargeJ*electrostatic.force(rsIsJMag);
 
                     molI->siteForces()[sI] += fsIsJ;
 
                     molJ->siteForces()[sJ] += -fsIsJ;
 
-                    scalar potentialEnergy = chargeI*chargeJ
-                    *electrostatic.energy(rsIsJMag);
+                    scalar potentialEnergy =
+                        chargeI*chargeJ
+                       *electrostatic.energy(rsIsJMag);
 
                     molI->potentialEnergy() += 0.5*potentialEnergy;
 
                     molJ->potentialEnergy() += 0.5*potentialEnergy;
 
-                    molI->rf() += rsIsJ * fsIsJ;
+                    vector rIJ = molI->position() - molJ->position();
+
+                    tensor virialContribution =
+                        (rsIsJ*fsIsJ)*(rsIsJ & rIJ)/rsIsJMagSq;
+
+                    molI->rf() += virialContribution;
+
+                    molJ->rf() += virialContribution;
 
-                    molJ->rf() += rsIsJ * fsIsJ;
+                    // molI->rf() += rsIsJ * fsIsJ;
+
+                    // molJ->rf() += rsIsJ * fsIsJ;
                 }
             }
         }
     }
 }
 
+
 inline void Foam::moleculeCloud::evaluatePair
 (
     molecule* molReal,
     referredMolecule* molRef
 )
 {
-    const pairPotentialList& pairPot(pot_.pairPotentials());
+    const pairPotentialList& pairPot = pot_.pairPotentials();
 
-    const electrostaticPotential& electrostatic(pot_.electrostatic());
+    const pairPotential& electrostatic = pairPot.electrostatic();
 
     label idReal = molReal->id();
 
@@ -176,16 +198,18 @@ inline void Foam::moleculeCloud::evaluatePair
             if (pairPotentialSitesReal[sReal] && pairPotentialSitesRef[sRef])
             {
                 vector rsRealsRef =
-                molReal->sitePositions()[sReal] - molRef->sitePositions()[sRef];
+                    molReal->sitePositions()[sReal]
+                  - molRef->sitePositions()[sRef];
 
                 scalar rsRealsRefMagSq = magSqr(rsRealsRef);
 
-                if(pairPot.rCutSqr(idsReal, idsRef, rsRealsRefMagSq))
+                if (pairPot.rCutSqr(idsReal, idsRef, rsRealsRefMagSq))
                 {
                     scalar rsRealsRefMag = mag(rsRealsRef);
 
-                    vector fsRealsRef = (rsRealsRef/rsRealsRefMag)
-                    *pairPot.force(idsReal, idsRef, rsRealsRefMag);
+                    vector fsRealsRef =
+                        (rsRealsRef/rsRealsRefMag)
+                       *pairPot.force(idsReal, idsRef, rsRealsRefMag);
 
                     molReal->siteForces()[sReal] += fsRealsRef;
 
@@ -196,7 +220,14 @@ inline void Foam::moleculeCloud::evaluatePair
 
                     molReal->potentialEnergy() += 0.5*potentialEnergy;
 
-                    molReal->rf() += rsRealsRef * fsRealsRef;
+                    vector rRealRef = molReal->position() - molRef->position();
+
+                    molReal->rf() +=
+                        (rsRealsRef*fsRealsRef)
+                       *(rsRealsRef & rRealRef)
+                       /rsRealsRefMagSq;
+
+                    // molReal->rf() += rsRealsRef * fsRealsRef;
 
                 }
             }
@@ -204,11 +235,12 @@ inline void Foam::moleculeCloud::evaluatePair
             if (electrostaticSitesReal[sReal] && electrostaticSitesRef[sRef])
             {
                 vector rsRealsRef =
-                molReal->sitePositions()[sReal] - molRef->sitePositions()[sRef];
+                    molReal->sitePositions()[sReal]
+                  - molRef->sitePositions()[sRef];
 
                 scalar rsRealsRefMagSq = magSqr(rsRealsRef);
 
-                if(pairPot.rCutMaxSqr(rsRealsRefMagSq))
+                if (rsRealsRefMagSq <= electrostatic.rCutSqr())
                 {
                     scalar rsRealsRefMag = mag(rsRealsRef);
 
@@ -216,18 +248,27 @@ inline void Foam::moleculeCloud::evaluatePair
 
                     scalar chargeRef = constPropRef.siteCharges()[sRef];
 
-                    vector fsRealsRef = (rsRealsRef/rsRealsRefMag)
-                    *chargeReal*chargeRef
-                    *electrostatic.force(rsRealsRefMag);
+                    vector fsRealsRef =
+                        (rsRealsRef/rsRealsRefMag)
+                       *chargeReal*chargeRef
+                       *electrostatic.force(rsRealsRefMag);
 
                     molReal->siteForces()[sReal] += fsRealsRef;
 
-                    scalar potentialEnergy = chargeReal*chargeRef
-                    *electrostatic.energy(rsRealsRefMag);
+                    scalar potentialEnergy =
+                        chargeReal*chargeRef
+                       *electrostatic.energy(rsRealsRefMag);
 
                     molReal->potentialEnergy() += 0.5*potentialEnergy;
 
-                    molReal->rf() += rsRealsRef * fsRealsRef;
+                    vector rRealRef = molReal->position() - molRef->position();
+
+                    molReal->rf() +=
+                        (rsRealsRef*fsRealsRef)
+                       *(rsRealsRef & rRealRef)
+                       /rsRealsRefMagSq;
+
+                    // molReal->rf() += rsRealsRef * fsRealsRef;
                 }
             }
         }
@@ -241,9 +282,9 @@ inline bool Foam::moleculeCloud::evaluatePotentialLimit
     molecule* molJ
 ) const
 {
-    const pairPotentialList& pairPot(pot_.pairPotentials());
+    const pairPotentialList& pairPot = pot_.pairPotentials();
 
-    const electrostaticPotential& electrostatic(pot_.electrostatic());
+    const pairPotential& electrostatic = pairPot.electrostatic();
 
     label idI = molI->id();
 
@@ -276,11 +317,11 @@ inline bool Foam::moleculeCloud::evaluatePotentialLimit
             if (pairPotentialSitesI[sI] && pairPotentialSitesJ[sJ])
             {
                 vector rsIsJ =
-                molI->sitePositions()[sI] - molJ->sitePositions()[sJ];
+                    molI->sitePositions()[sI] - molJ->sitePositions()[sJ];
 
                 scalar rsIsJMagSq = magSqr(rsIsJ);
 
-                if(pairPot.rCutSqr(idsI, idsJ, rsIsJMagSq))
+                if (pairPot.rCutSqr(idsI, idsJ, rsIsJMagSq))
                 {
                     scalar rsIsJMag = mag(rsIsJ);
 
@@ -291,7 +332,7 @@ inline bool Foam::moleculeCloud::evaluatePotentialLimit
                     if (rsIsJMag < SMALL)
                     {
                         WarningIn("moleculeCloud::removeHighEnergyOverlaps()")
-                        << "Molecule site pair closer than "
+                            << "Molecule site pair closer than "
                             << SMALL
                             << ": mag separation = " << rsIsJMag
                             << ". These may have been placed on top of each"
@@ -325,11 +366,11 @@ inline bool Foam::moleculeCloud::evaluatePotentialLimit
             if (electrostaticSitesI[sI] && electrostaticSitesJ[sJ])
             {
                 vector rsIsJ =
-                molI->sitePositions()[sI] - molJ->sitePositions()[sJ];
+                    molI->sitePositions()[sI] - molJ->sitePositions()[sJ];
 
                 scalar rsIsJMagSq = magSqr(rsIsJ);
 
-                if(pairPot.rCutMaxSqr(rsIsJMagSq))
+                if (pairPot.rCutMaxSqr(rsIsJMagSq))
                 {
                     scalar rsIsJMag = mag(rsIsJ);
 
@@ -340,18 +381,23 @@ inline bool Foam::moleculeCloud::evaluatePotentialLimit
                     if (rsIsJMag < SMALL)
                     {
                         WarningIn("moleculeCloud::removeHighEnergyOverlaps()")
-                        << "Molecule site pair closer than "
+                            << "Molecule site pair closer than "
                             << SMALL
                             << ": mag separation = " << rsIsJMag
                             << ". These may have been placed on top of each"
-                            << " other by a rounding error in molConfig in"
-                            << " parallel or a block filled with molecules "
+                            << " other by a rounding error in mdInitialise in"
+                            << " parallel or a block filled with molecules"
                             << " twice. Removing one of the molecules."
                             << endl;
 
                         return true;
                     }
 
+                    if (rsIsJMag < electrostatic.rMin())
+                    {
+                        return true;
+                    }
+
                     scalar chargeI = constPropI.siteCharges()[sI];
 
                     scalar chargeJ = constPropJ.siteCharges()[sJ];
@@ -379,9 +425,9 @@ inline bool Foam::moleculeCloud::evaluatePotentialLimit
     referredMolecule* molRef
 ) const
 {
-    const pairPotentialList& pairPot(pot_.pairPotentials());
+    const pairPotentialList& pairPot = pot_.pairPotentials();
 
-    const electrostaticPotential& electrostatic(pot_.electrostatic());
+    const pairPotential& electrostatic = pairPot.electrostatic();
 
     label idReal = molReal->id();
 
@@ -414,11 +460,12 @@ inline bool Foam::moleculeCloud::evaluatePotentialLimit
             if (pairPotentialSitesReal[sReal] && pairPotentialSitesRef[sRef])
             {
                 vector rsRealsRef =
-                molReal->sitePositions()[sReal] - molRef->sitePositions()[sRef];
+                    molReal->sitePositions()[sReal]
+                  - molRef->sitePositions()[sRef];
 
                 scalar rsRealsRefMagSq = magSqr(rsRealsRef);
 
-                if(pairPot.rCutSqr(idsReal, idsRef, rsRealsRefMagSq))
+                if (pairPot.rCutSqr(idsReal, idsRef, rsRealsRefMagSq))
                 {
                     scalar rsRealsRefMag = mag(rsRealsRef);
 
@@ -429,12 +476,12 @@ inline bool Foam::moleculeCloud::evaluatePotentialLimit
                     if (rsRealsRefMag < SMALL)
                     {
                         WarningIn("moleculeCloud::removeHighEnergyOverlaps()")
-                        << "Molecule site pair closer than "
+                            << "Molecule site pair closer than "
                             << SMALL
                             << ": mag separation = " << rsRealsRefMag
                             << ". These may have been placed on top of each"
-                            << " other by a rounding error in molConfig in"
-                            << " parallel or a block filled with molecules "
+                            << " other by a rounding error in mdInitialise in"
+                            << " parallel or a block filled with molecules"
                             << " twice. Removing one of the molecules."
                             << endl;
 
@@ -464,11 +511,12 @@ inline bool Foam::moleculeCloud::evaluatePotentialLimit
             if (electrostaticSitesReal[sReal] && electrostaticSitesRef[sRef])
             {
                 vector rsRealsRef =
-                molReal->sitePositions()[sReal] - molRef->sitePositions()[sRef];
+                    molReal->sitePositions()[sReal]
+                  - molRef->sitePositions()[sRef];
 
                 scalar rsRealsRefMagSq = magSqr(rsRealsRef);
 
-                if(pairPot.rCutMaxSqr(rsRealsRefMagSq))
+                if (pairPot.rCutMaxSqr(rsRealsRefMagSq))
                 {
                     scalar rsRealsRefMag = mag(rsRealsRef);
 
@@ -479,18 +527,23 @@ inline bool Foam::moleculeCloud::evaluatePotentialLimit
                     if (rsRealsRefMag < SMALL)
                     {
                         WarningIn("moleculeCloud::removeHighEnergyOverlaps()")
-                        << "Molecule site pair closer than "
+                            << "Molecule site pair closer than "
                             << SMALL
                             << ": mag separation = " << rsRealsRefMag
                             << ". These may have been placed on top of each"
-                            << " other by a rounding error in molConfig in"
-                            << " parallel or a block filled with molecules "
+                            << " other by a rounding error in mdInitialise in"
+                            << " parallel or a block filled with molecules"
                             << " twice. Removing one of the molecules."
                             << endl;
 
                         return true;
                     }
 
+                    if (rsRealsRefMag < electrostatic.rMin())
+                    {
+                        return true;
+                    }
+
                     scalar chargeReal = constPropReal.siteCharges()[sReal];
 
                     scalar chargeRef = constPropRef.siteCharges()[sRef];
@@ -499,8 +552,9 @@ inline bool Foam::moleculeCloud::evaluatePotentialLimit
                     (
                         mag
                         (
-                            chargeReal*chargeRef
-                            *electrostatic.energy(rsRealsRefMag)
+                            chargeReal
+                           *chargeRef
+                           *electrostatic.energy(rsRealsRefMag)
                         )
                       > pot_.potentialEnergyLimit()
                     )
@@ -559,6 +613,7 @@ inline Foam::vector Foam::moleculeCloud::equipartitionAngularMomentum
     }
 }
 
+
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 inline const Foam::polyMesh& Foam::moleculeCloud::mesh() const
diff --git a/src/lagrangian/molecularDynamics/molecule/reducedUnits/reducedUnits.C b/src/lagrangian/molecularDynamics/molecule/reducedUnits/reducedUnits.C
index e9b048507bd61d9e01d0ed0c7e3957fd5a5a0e49..6836c2bc277e3f13ee476df76d7aca0b250a5102 100644
--- a/src/lagrangian/molecularDynamics/molecule/reducedUnits/reducedUnits.C
+++ b/src/lagrangian/molecularDynamics/molecule/reducedUnits/reducedUnits.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/lagrangian/molecularDynamics/molecule/reducedUnits/reducedUnits.H b/src/lagrangian/molecularDynamics/molecule/reducedUnits/reducedUnits.H
index 294aa7770e6de424c553ce159de0f514186835d2..acefe4b8151c571323d955d8d69b8485eebd9df3 100644
--- a/src/lagrangian/molecularDynamics/molecule/reducedUnits/reducedUnits.H
+++ b/src/lagrangian/molecularDynamics/molecule/reducedUnits/reducedUnits.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -46,7 +46,7 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                           Class reducedUnits Declaration
+                         Class reducedUnits Declaration
 \*---------------------------------------------------------------------------*/
 
 class reducedUnits
diff --git a/src/lagrangian/molecularDynamics/molecule/reducedUnits/reducedUnitsI.H b/src/lagrangian/molecularDynamics/molecule/reducedUnits/reducedUnitsI.H
index 8f3ae51b16ac067f64e75f59906e982e29fe6d5f..72ff243776432aaa5b77cee3581b7553b602a972 100644
--- a/src/lagrangian/molecularDynamics/molecule/reducedUnits/reducedUnitsI.H
+++ b/src/lagrangian/molecularDynamics/molecule/reducedUnits/reducedUnitsI.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/lagrangian/molecularDynamics/molecule/reducedUnits/reducedUnitsIO.C b/src/lagrangian/molecularDynamics/molecule/reducedUnits/reducedUnitsIO.C
index 175a2aa4899b2c04029a26e65ca2717830f634e7..03b4489ec5a34ac510a6170de116bc6a97e3202b 100644
--- a/src/lagrangian/molecularDynamics/molecule/reducedUnits/reducedUnitsIO.C
+++ b/src/lagrangian/molecularDynamics/molecule/reducedUnits/reducedUnitsIO.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/lagrangian/molecularDynamics/potential/Make/files b/src/lagrangian/molecularDynamics/potential/Make/files
index 7b16b6e2b61938fcc029900b8db8322f0b933055..4afe4de3d950a1a9cc18af997d5324566b275fb2 100644
--- a/src/lagrangian/molecularDynamics/potential/Make/files
+++ b/src/lagrangian/molecularDynamics/potential/Make/files
@@ -15,6 +15,7 @@ $(pairPotential)/derived/maitlandSmith/maitlandSmith.C
 $(pairPotential)/derived/azizChen/azizChen.C
 $(pairPotential)/derived/exponentialRepulsion/exponentialRepulsion.C
 $(pairPotential)/derived/coulomb/coulomb.C
+$(pairPotential)/derived/dampedCoulomb/dampedCoulomb.C
 $(pairPotential)/derived/noInteraction/noInteraction.C
 
 energyScalingFunction = energyScalingFunction
@@ -43,4 +44,4 @@ electrostaticPotential = electrostaticPotential
 
 $(electrostaticPotential)/electrostaticPotential.C
 
-LIB = $(FOAM_LIBBIN)/libpotential
+LIB = $(FOAM_LIBBIN)/libpotential
\ No newline at end of file
diff --git a/src/lagrangian/molecularDynamics/potential/electrostaticPotential/electrostaticPotential.C b/src/lagrangian/molecularDynamics/potential/electrostaticPotential/electrostaticPotential.C
index 17fe776235acbd98aa65e2e11eed5c15e3e53156..1dff432741c4766ee3c86003af8a62f97fde9a4a 100644
--- a/src/lagrangian/molecularDynamics/potential/electrostaticPotential/electrostaticPotential.C
+++ b/src/lagrangian/molecularDynamics/potential/electrostaticPotential/electrostaticPotential.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -27,8 +27,6 @@ License
 #include "electrostaticPotential.H"
 #include "mathematicalConstants.H"
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
 Foam::electrostaticPotential::electrostaticPotential()
diff --git a/src/lagrangian/molecularDynamics/potential/electrostaticPotential/electrostaticPotential.H b/src/lagrangian/molecularDynamics/potential/electrostaticPotential/electrostaticPotential.H
index 0bc0e0d4d04416b75f3d0f732db5b44684556c71..d2c4bb88b917388875cccdc52b0f3d5c06128f2e 100644
--- a/src/lagrangian/molecularDynamics/potential/electrostaticPotential/electrostaticPotential.H
+++ b/src/lagrangian/molecularDynamics/potential/electrostaticPotential/electrostaticPotential.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -44,7 +44,7 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                           Class electrostaticPotential Declaration
+                   Class electrostaticPotential Declaration
 \*---------------------------------------------------------------------------*/
 
 class electrostaticPotential
diff --git a/src/lagrangian/molecularDynamics/potential/energyScalingFunction/basic/energyScalingFunction.C b/src/lagrangian/molecularDynamics/potential/energyScalingFunction/basic/energyScalingFunction.C
index c06f90ea27ea0ba7f4235a224680bdc982888986..df247d84dea90ba5f5d0b698436b7da1bfd55b44 100644
--- a/src/lagrangian/molecularDynamics/potential/energyScalingFunction/basic/energyScalingFunction.C
+++ b/src/lagrangian/molecularDynamics/potential/energyScalingFunction/basic/energyScalingFunction.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -36,8 +36,6 @@ namespace Foam
 defineTypeNameAndDebug(energyScalingFunction, 0);
 defineRunTimeSelectionTable(energyScalingFunction, dictionary);
 
-// * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
-
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
 Foam::energyScalingFunction::energyScalingFunction
@@ -66,6 +64,7 @@ bool Foam::energyScalingFunction::read
     return true;
 }
 
+
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 } // End namespace Foam
diff --git a/src/lagrangian/molecularDynamics/potential/energyScalingFunction/basic/energyScalingFunction.H b/src/lagrangian/molecularDynamics/potential/energyScalingFunction/basic/energyScalingFunction.H
index 4473fe2bb043b280524a92221d267de2b83bd358..8815151bcf0392705dc4e5309521460abfe44d54 100644
--- a/src/lagrangian/molecularDynamics/potential/energyScalingFunction/basic/energyScalingFunction.H
+++ b/src/lagrangian/molecularDynamics/potential/energyScalingFunction/basic/energyScalingFunction.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -48,7 +48,7 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                Class energyScalingFunction Declaration
+                   Class energyScalingFunction Declaration
 \*---------------------------------------------------------------------------*/
 
 class energyScalingFunction
@@ -144,8 +144,6 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
 #endif
 
 // ************************************************************************* //
diff --git a/src/lagrangian/molecularDynamics/potential/energyScalingFunction/basic/newEnergyScalingFunction.C b/src/lagrangian/molecularDynamics/potential/energyScalingFunction/basic/newEnergyScalingFunction.C
index 92166f863215f4d9daaf373700d0aad2d2088607..ccbdb8c92e7d2fa386df5ca3578e46f8c9b0d6b6 100644
--- a/src/lagrangian/molecularDynamics/potential/energyScalingFunction/basic/newEnergyScalingFunction.C
+++ b/src/lagrangian/molecularDynamics/potential/energyScalingFunction/basic/newEnergyScalingFunction.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -58,8 +58,8 @@ autoPtr<energyScalingFunction> energyScalingFunction::New
         (
             "energyScalingFunction::New()"
         )   << "Unknown energyScalingFunction type "
-            << energyScalingFunctionTypeName << endl << endl
-            << "Valid  energyScalingFunctions are : " << endl
+            << energyScalingFunctionTypeName << nl << nl
+            << "Valid  energyScalingFunctions are: " << nl
             << dictionaryConstructorTablePtr_->toc()
             << exit(FatalError);
     }
diff --git a/src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/doubleSigmoid/doubleSigmoid.C b/src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/doubleSigmoid/doubleSigmoid.C
index 6ca0fff321cd6fce75773f319be56a91775191fe..defeb779a0620c7d75eb381111bf016c99cc96a5 100644
--- a/src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/doubleSigmoid/doubleSigmoid.C
+++ b/src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/doubleSigmoid/doubleSigmoid.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -57,6 +57,7 @@ scalar doubleSigmoid::sigmoidScale
     return 1.0 / (1.0 + exp( scale * (r - shift)));
 }
 
+
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
 doubleSigmoid::doubleSigmoid
@@ -67,13 +68,17 @@ doubleSigmoid::doubleSigmoid
 )
 :
     energyScalingFunction(name, energyScalingFunctionProperties, pairPot),
-    doubleSigmoidCoeffs_(energyScalingFunctionProperties.subDict(typeName + "Coeffs")),
+    doubleSigmoidCoeffs_
+    (
+        energyScalingFunctionProperties.subDict(typeName + "Coeffs")
+    ),
     shift1_(readScalar(doubleSigmoidCoeffs_.lookup("shift1"))),
     scale1_(readScalar(doubleSigmoidCoeffs_.lookup("scale1"))),
     shift2_(readScalar(doubleSigmoidCoeffs_.lookup("shift2"))),
     scale2_(readScalar(doubleSigmoidCoeffs_.lookup("scale2")))
 {}
 
+
 // * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
 
 void doubleSigmoid::scaleEnergy(scalar& e, const scalar r) const
@@ -81,17 +86,19 @@ void doubleSigmoid::scaleEnergy(scalar& e, const scalar r) const
     e *= sigmoidScale(r, shift1_, scale1_) * sigmoidScale(r, shift2_, scale2_);
 }
 
+
 bool doubleSigmoid::read(const dictionary& energyScalingFunctionProperties)
 {
     energyScalingFunction::read(energyScalingFunctionProperties);
 
-    doubleSigmoidCoeffs_ = energyScalingFunctionProperties.subDict(typeName + "Coeffs");
+    doubleSigmoidCoeffs_ =
+        energyScalingFunctionProperties.subDict(typeName + "Coeffs");
 
     doubleSigmoidCoeffs_.lookup("shift1") >> shift1_;
     doubleSigmoidCoeffs_.lookup("scale1") >> scale1_;
     doubleSigmoidCoeffs_.lookup("shift2") >> shift2_;
     doubleSigmoidCoeffs_.lookup("scale2") >> scale2_;
-    
+
     return true;
 }
 
diff --git a/src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/doubleSigmoid/doubleSigmoid.H b/src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/doubleSigmoid/doubleSigmoid.H
index 07c4dfbd49003d6306e850b11f8d027c490462f7..27e75fb1901a72c6450b7448f5eaac75910f5819 100644
--- a/src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/doubleSigmoid/doubleSigmoid.H
+++ b/src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/doubleSigmoid/doubleSigmoid.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -46,7 +46,7 @@ namespace energyScalingFunctions
 {
 
 /*---------------------------------------------------------------------------*\
-                           Class doubleSigmoid Declaration
+                        Class doubleSigmoid Declaration
 \*---------------------------------------------------------------------------*/
 
 class doubleSigmoid
@@ -62,6 +62,7 @@ class doubleSigmoid
         scalar shift2_;
         scalar scale2_;
 
+
     // Private Member Functions
 
         scalar sigmoidScale
@@ -98,7 +99,7 @@ public:
 
         void scaleEnergy(scalar& e, const scalar r) const;
 
-        //- Read transportProperties dictionary
+        //- Read dictionary
         bool read(const dictionary& energyScalingFunctionProperties);
 };
 
diff --git a/src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/noScaling/noScaling.C b/src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/noScaling/noScaling.C
index ea4ec88ed43c657840b7d8ae7b80ae7f23d91202..412f7538876e19b72daa78e4e36176595d013802 100644
--- a/src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/noScaling/noScaling.C
+++ b/src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/noScaling/noScaling.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -45,8 +45,6 @@ addToRunTimeSelectionTable
     dictionary
 );
 
-// * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * * //
-
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
@@ -60,15 +58,17 @@ noScaling::noScaling
     energyScalingFunction(name, energyScalingFunctionProperties, pairPot)
 {}
 
+
 // * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
 
 void noScaling::scaleEnergy(scalar& e, const scalar r) const
 {}
 
+
 bool noScaling::read(const dictionary& energyScalingFunctionProperties)
 {
     energyScalingFunction::read(energyScalingFunctionProperties);
-    
+
     return true;
 }
 
diff --git a/src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/noScaling/noScaling.H b/src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/noScaling/noScaling.H
index 192c862fb4330fff66ca6d78346dc6a5b9e115af..ea2ad62aef18327594f59483d3b95f39493d1ec1 100644
--- a/src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/noScaling/noScaling.H
+++ b/src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/noScaling/noScaling.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -80,7 +80,7 @@ public:
 
         void scaleEnergy(scalar& e, const scalar r) const;
 
-        //- Read transportProperties dictionary
+        //- Read dictionary
         bool read(const dictionary& energyScalingFunctionProperties);
 };
 
diff --git a/src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/shifted/shifted.C b/src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/shifted/shifted.C
index 90eccc9b8021ff9b4b5399c28821d03a171abae5..d6866cfc8f9878cde632284ebe34349ac18a1c27 100644
--- a/src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/shifted/shifted.C
+++ b/src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/shifted/shifted.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -45,8 +45,6 @@ addToRunTimeSelectionTable
     dictionary
 );
 
-// * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * * //
-
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
@@ -61,6 +59,7 @@ shifted::shifted
     e_at_rCut_(pairPot.unscaledEnergy(pairPot.rCut()))
 {}
 
+
 // * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
 
 void shifted::scaleEnergy(scalar& e, const scalar r) const
@@ -68,10 +67,11 @@ void shifted::scaleEnergy(scalar& e, const scalar r) const
     e -= e_at_rCut_;
 }
 
+
 bool shifted::read(const dictionary& energyScalingFunctionProperties)
 {
     energyScalingFunction::read(energyScalingFunctionProperties);
-    
+
     return true;
 }
 
diff --git a/src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/shifted/shifted.H b/src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/shifted/shifted.H
index 6f95adbdb90f89b0d3a4c375ff1acca31e25543e..01b0b413f34e9abc72ed5d054492a79751513041 100644
--- a/src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/shifted/shifted.H
+++ b/src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/shifted/shifted.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -57,6 +57,7 @@ class shifted
 
         scalar e_at_rCut_;
 
+
 public:
 
     //- Runtime type information
@@ -79,11 +80,12 @@ public:
         ~shifted()
         {}
 
+
     // Member Functions
 
         void scaleEnergy(scalar& e, const scalar r) const;
 
-        //- Read transportProperties dictionary
+        //- Read dictionary
         bool read(const dictionary& energyScalingFunctionProperties);
 };
 
diff --git a/src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/shiftedForce/shiftedForce.C b/src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/shiftedForce/shiftedForce.C
index dec8729fae9841bb18906bea8cf863669fbb2181..72041de3e05c77b8c4781e7675d06b2f5e8d6846 100644
--- a/src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/shiftedForce/shiftedForce.C
+++ b/src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/shiftedForce/shiftedForce.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -45,8 +45,6 @@ addToRunTimeSelectionTable
     dictionary
 );
 
-// * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * * //
-
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
@@ -63,6 +61,7 @@ shiftedForce::shiftedForce
     de_dr_at_rCut_(pairPot.energyDerivative(rCut_, false))
 {}
 
+
 // * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
 
 void shiftedForce::scaleEnergy(scalar& e, const scalar r) const
@@ -70,10 +69,11 @@ void shiftedForce::scaleEnergy(scalar& e, const scalar r) const
     e -= ( e_at_rCut_ + de_dr_at_rCut_ * (r - rCut_) );
 }
 
+
 bool shiftedForce::read(const dictionary& energyScalingFunctionProperties)
 {
     energyScalingFunction::read(energyScalingFunctionProperties);
-    
+
     return true;
 }
 
diff --git a/src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/shiftedForce/shiftedForce.H b/src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/shiftedForce/shiftedForce.H
index d67164c64e544a9930bbbbc1e6a149f89697a8b1..f6d97d002b633f28908820d6973697da22a85f30 100644
--- a/src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/shiftedForce/shiftedForce.H
+++ b/src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/shiftedForce/shiftedForce.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -46,7 +46,7 @@ namespace energyScalingFunctions
 {
 
 /*---------------------------------------------------------------------------*\
-                           Class shiftedForce Declaration
+                       Class shiftedForce Declaration
 \*---------------------------------------------------------------------------*/
 
 class shiftedForce
@@ -89,7 +89,7 @@ public:
 
         void scaleEnergy(scalar& e, const scalar r) const;
 
-        //- Read transportProperties dictionary
+        //- Read dictionary
         bool read(const dictionary& energyScalingFunctionProperties);
 };
 
diff --git a/src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/sigmoid/sigmoid.C b/src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/sigmoid/sigmoid.C
index 43483221ae562c28d4e29ec69bc2cc2b6f18b389..c689608172acc735d5d4fbb408de72985ba9c07c 100644
--- a/src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/sigmoid/sigmoid.C
+++ b/src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/sigmoid/sigmoid.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -45,6 +45,7 @@ addToRunTimeSelectionTable
     dictionary
 );
 
+
 // * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * * //
 
 scalar sigmoid::sigmoidScale
@@ -57,6 +58,7 @@ scalar sigmoid::sigmoidScale
     return 1.0 / (1.0 + exp( scale * (r - shift)));
 }
 
+
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
 sigmoid::sigmoid
@@ -67,11 +69,15 @@ sigmoid::sigmoid
 )
 :
     energyScalingFunction(name, energyScalingFunctionProperties, pairPot),
-    sigmoidCoeffs_(energyScalingFunctionProperties.subDict(typeName + "Coeffs")),
+    sigmoidCoeffs_
+    (
+        energyScalingFunctionProperties.subDict(typeName + "Coeffs")
+    ),
     shift_(readScalar(sigmoidCoeffs_.lookup("shift"))),
     scale_(readScalar(sigmoidCoeffs_.lookup("scale")))
 {}
 
+
 // * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
 
 void sigmoid::scaleEnergy(scalar& e, const scalar r) const
@@ -79,15 +85,17 @@ void sigmoid::scaleEnergy(scalar& e, const scalar r) const
     e *= sigmoidScale(r, shift_, scale_);
 }
 
+
 bool sigmoid::read(const dictionary& energyScalingFunctionProperties)
 {
     energyScalingFunction::read(energyScalingFunctionProperties);
 
-    sigmoidCoeffs_ = energyScalingFunctionProperties.subDict(typeName + "Coeffs");
+    sigmoidCoeffs_ =
+        energyScalingFunctionProperties.subDict(typeName + "Coeffs");
 
     sigmoidCoeffs_.lookup("shift") >> shift_;
     sigmoidCoeffs_.lookup("scale") >> shift_;
-    
+
     return true;
 }
 
diff --git a/src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/sigmoid/sigmoid.H b/src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/sigmoid/sigmoid.H
index 42d0ac85b83b7bc3a4b99c6bb9be42ffb716e525..8a37ad86003f460c036fb51df247c61642a85617 100644
--- a/src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/sigmoid/sigmoid.H
+++ b/src/lagrangian/molecularDynamics/potential/energyScalingFunction/derived/sigmoid/sigmoid.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -98,7 +98,7 @@ public:
 
         void scaleEnergy(scalar& e, const scalar r) const;
 
-        //- Read transportProperties dictionary
+        //- Read dictionary
         bool read(const dictionary& energyScalingFunctionProperties);
 };
 
diff --git a/src/lagrangian/molecularDynamics/potential/pairPotential/basic/newPairPotential.C b/src/lagrangian/molecularDynamics/potential/pairPotential/basic/newPairPotential.C
index b5251d733c89d6919807429be5c1d3b07e130541..2986a0e5394f73a6e2a6f63996668057536bb215 100644
--- a/src/lagrangian/molecularDynamics/potential/pairPotential/basic/newPairPotential.C
+++ b/src/lagrangian/molecularDynamics/potential/pairPotential/basic/newPairPotential.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -54,8 +54,8 @@ autoPtr<pairPotential> pairPotential::New
         (
             "pairPotential::New()"
         )   << "Unknown pairPotential type "
-            << pairPotentialTypeName << endl << endl
-            << "Valid  pairPotentials are : " << endl
+            << pairPotentialTypeName << nl << nl
+            << "Valid  pairPotentials are: " << nl
             << dictionaryConstructorTablePtr_->toc()
             << exit(FatalError);
     }
diff --git a/src/lagrangian/molecularDynamics/potential/pairPotential/basic/pairPotential.C b/src/lagrangian/molecularDynamics/potential/pairPotential/basic/pairPotential.C
index d4a807f352f91577f281dfa344ab8ba82cf3ccee..b3e609f4e77140c17b98e4ec7f2ae47dc129d555 100644
--- a/src/lagrangian/molecularDynamics/potential/pairPotential/basic/pairPotential.C
+++ b/src/lagrangian/molecularDynamics/potential/pairPotential/basic/pairPotential.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -93,7 +93,7 @@ void Foam::pairPotential::setLookupTables()
 }
 
 
-Foam::scalar Foam::pairPotential::forceLookup(const scalar r) const
+Foam::scalar Foam::pairPotential::force(const scalar r) const
 {
     scalar k_rIJ = (r - rMin_)/dr_;
 
@@ -102,7 +102,7 @@ Foam::scalar Foam::pairPotential::forceLookup(const scalar r) const
     if (k < 0)
     {
         FatalErrorIn("pairPotential.C") << nl
-            << "r less than rMin" << nl
+            << "r less than rMin in pair potential " << name_ << nl
             << abort(FatalError);
     }
 
@@ -130,7 +130,7 @@ Foam::pairPotential::forceTable() const
 }
 
 
-Foam::scalar Foam::pairPotential::energyLookup(const scalar r) const
+Foam::scalar Foam::pairPotential::energy(const scalar r) const
 {
     scalar k_rIJ = (r - rMin_)/dr_;
 
@@ -139,7 +139,7 @@ Foam::scalar Foam::pairPotential::energyLookup(const scalar r) const
     if (k < 0)
     {
         FatalErrorIn("pairPotential.C") << nl
-            << "r less than rMin" << nl
+            << "r less than rMin in pair potential " << name_ << nl
             << abort(FatalError);
     }
 
diff --git a/src/lagrangian/molecularDynamics/potential/pairPotential/basic/pairPotential.H b/src/lagrangian/molecularDynamics/potential/pairPotential/basic/pairPotential.H
index 6d6701a106c013bea2241d08b6cc2174db8e64af..9be12ebd0c840a0ec84e5c75f25d036586eaa338 100644
--- a/src/lagrangian/molecularDynamics/potential/pairPotential/basic/pairPotential.H
+++ b/src/lagrangian/molecularDynamics/potential/pairPotential/basic/pairPotential.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -54,7 +54,7 @@ namespace Foam
 class energyScalingFunction;
 
 /*---------------------------------------------------------------------------*\
-                Class pairPotential Declaration
+                     Class pairPotential Declaration
 \*---------------------------------------------------------------------------*/
 
 class pairPotential
@@ -80,6 +80,7 @@ protected:
 
         bool writeTables_;
 
+
     // Private Member Functions
 
         void scaleEnergy(scalar& e, const scalar r) const;
@@ -94,7 +95,7 @@ protected:
 public:
 
     //- Runtime type information
-    TypeName("pairPotential");
+        TypeName("pairPotential");
 
 
     // Declare run-time constructor selection table
@@ -150,9 +151,9 @@ public:
 
         inline scalar rCutSqr() const;
 
-        scalar energyLookup (const scalar r) const;
+        scalar energy (const scalar r) const;
 
-        scalar forceLookup (const scalar r) const;
+        scalar force (const scalar r) const;
 
         List<Pair<scalar> > energyTable() const;
 
@@ -160,7 +161,7 @@ public:
 
         inline bool writeTables() const;
 
-        virtual scalar unscaledEnergy (const scalar r) const = 0;
+        virtual scalar unscaledEnergy(const scalar r) const = 0;
 
         scalar scaledEnergy(const scalar r) const;
 
diff --git a/src/lagrangian/molecularDynamics/potential/pairPotential/basic/pairPotentialI.H b/src/lagrangian/molecularDynamics/potential/pairPotential/basic/pairPotentialI.H
index f39140c38bb0c346e78a3c1cc0c352aa26c5a770..4c2ef76b8e5248cd886c95f32a7615d42e941c43 100644
--- a/src/lagrangian/molecularDynamics/potential/pairPotential/basic/pairPotentialI.H
+++ b/src/lagrangian/molecularDynamics/potential/pairPotential/basic/pairPotentialI.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/lagrangian/molecularDynamics/potential/pairPotential/basic/pairPotentialIO.C b/src/lagrangian/molecularDynamics/potential/pairPotential/basic/pairPotentialIO.C
index 5c0893045a417fa84e61fb01ff18339d4f713406..a07f21beceb54a1924936adab91f8ffa99286a88 100644
--- a/src/lagrangian/molecularDynamics/potential/pairPotential/basic/pairPotentialIO.C
+++ b/src/lagrangian/molecularDynamics/potential/pairPotential/basic/pairPotentialIO.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -38,12 +38,12 @@ bool Foam::pairPotential::writeEnergyAndForceTables(Ostream& os) const
 
     forAll(eTab, e)
     {
-        os<< eTab[e].first()
-          << token::SPACE
-          << eTab[e].second()
-          << token::SPACE
-          << fTab[e].second()
-          << nl;
+        os  << eTab[e].first()
+            << token::SPACE
+            << eTab[e].second()
+            << token::SPACE
+            << fTab[e].second()
+            << nl;
     }
 
     return os.good();
diff --git a/src/lagrangian/molecularDynamics/potential/pairPotential/derived/azizChen/azizChen.C b/src/lagrangian/molecularDynamics/potential/pairPotential/derived/azizChen/azizChen.C
index 0327f163d56a6fb38d681b627a73b52ad14e979a..2e44f617da378c4911fb5987bc458ae9e718fe31 100644
--- a/src/lagrangian/molecularDynamics/potential/pairPotential/derived/azizChen/azizChen.C
+++ b/src/lagrangian/molecularDynamics/potential/pairPotential/derived/azizChen/azizChen.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -45,8 +45,6 @@ addToRunTimeSelectionTable
     dictionary
 );
 
-// * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * * //
-
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
@@ -71,6 +69,7 @@ azizChen::azizChen
     setLookupTables();
 }
 
+
 // * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
 
 scalar azizChen::unscaledEnergy(const scalar r) const
@@ -84,15 +83,16 @@ scalar azizChen::unscaledEnergy(const scalar r) const
         F = exp(-pow(((D_ / x) - 1.0),2));
     }
 
-    return epsilon_ *
-    (
-        A_ * Foam::pow(x, gamma_) * exp(-alpha_ * x)
-      - (
-            (C6_/ Foam::pow(x, 6))
-          + (C8_/ Foam::pow(x, 8))
-          + (C10_/ Foam::pow(x, 10))
-        )
-      * F
+    return
+        epsilon_
+       *(
+            A_ * Foam::pow(x, gamma_)*exp(-alpha_*x)
+          - (
+                (C6_/ Foam::pow(x, 6))
+              + (C8_/ Foam::pow(x, 8))
+              + (C10_/ Foam::pow(x, 10))
+            )
+           *F
     );
 }
 
@@ -112,7 +112,7 @@ bool azizChen::read(const dictionary& azizChen)
     azizChenCoeffs_.lookup("C10") >> C10_;
     azizChenCoeffs_.lookup("D") >> D_;
     azizChenCoeffs_.lookup("gamma") >> gamma_;
-    
+
     return true;
 }
 
diff --git a/src/lagrangian/molecularDynamics/potential/pairPotential/derived/azizChen/azizChen.H b/src/lagrangian/molecularDynamics/potential/pairPotential/derived/azizChen/azizChen.H
index 43a1ee9dca61e3c2d3926982a78153790fb3195a..53f93481281922d2094172101628956067d0137d 100644
--- a/src/lagrangian/molecularDynamics/potential/pairPotential/derived/azizChen/azizChen.H
+++ b/src/lagrangian/molecularDynamics/potential/pairPotential/derived/azizChen/azizChen.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -85,6 +85,7 @@ class azizChen
         scalar D_;
         scalar gamma_;
 
+
 public:
 
     //- Runtime type information
@@ -111,7 +112,7 @@ public:
 
         scalar unscaledEnergy(const scalar r) const;
 
-        //- Read transportProperties dictionary
+        //- Read dictionary
         bool read(const dictionary& pairPotentialProperties);
 };
 
diff --git a/src/lagrangian/molecularDynamics/potential/pairPotential/derived/coulomb/coulomb.C b/src/lagrangian/molecularDynamics/potential/pairPotential/derived/coulomb/coulomb.C
index 0476e378da3fcde4a8417d81baa367da813652cc..7dd02320322136e8f29a46ed1e0a7010c46615db 100644
--- a/src/lagrangian/molecularDynamics/potential/pairPotential/derived/coulomb/coulomb.C
+++ b/src/lagrangian/molecularDynamics/potential/pairPotential/derived/coulomb/coulomb.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -25,6 +25,7 @@ License
 \*---------------------------------------------------------------------------*/
 
 #include "coulomb.H"
+#include "mathematicalConstants.H"
 #include "addToRunTimeSelectionTable.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -45,7 +46,8 @@ addToRunTimeSelectionTable
     dictionary
 );
 
-// * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * * //
+scalar coulomb::oneOverFourPiEps0 =
+    1.0/(4.0 * mathematicalConstant::pi * 8.854187817e-12);
 
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
@@ -61,11 +63,12 @@ coulomb::coulomb
     setLookupTables();
 }
 
+
 // * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
 
 scalar coulomb::unscaledEnergy(const scalar r) const
 {
-    return 1.0/(4.0 * mathematicalConstant::pi * 8.854187817e-12 * r);
+    return oneOverFourPiEps0/r;
 }
 
 
diff --git a/src/lagrangian/molecularDynamics/potential/pairPotential/derived/coulomb/coulomb.H b/src/lagrangian/molecularDynamics/potential/pairPotential/derived/coulomb/coulomb.H
index 44e5e2cc5cfdeb1fe1290f9a8ccc57ac4d07fc85..f1e06712bb7b8ff3984a2ff62c41cacda0ce5c1e 100644
--- a/src/lagrangian/molecularDynamics/potential/pairPotential/derived/coulomb/coulomb.H
+++ b/src/lagrangian/molecularDynamics/potential/pairPotential/derived/coulomb/coulomb.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -23,7 +23,7 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::pairPotentials::coulomb
+    Foam::pairPotentials::electrostatic
 
 Description
 
@@ -53,13 +53,16 @@ class coulomb
 :
     public pairPotential
 {
-
 public:
 
     //- Runtime type information
     TypeName("coulomb");
 
 
+    // Static data members
+
+        static scalar oneOverFourPiEps0;
+
     // Constructors
 
         //- Construct from components
@@ -80,7 +83,7 @@ public:
 
         scalar unscaledEnergy(const scalar r) const;
 
-        //- Read transportProperties dictionary
+        //- Read dictionary
         bool read(const dictionary& pairPotentialProperties);
 };
 
diff --git a/src/lagrangian/molecularDynamics/potential/pairPotential/derived/dampedCoulomb/dampedCoulomb.C b/src/lagrangian/molecularDynamics/potential/pairPotential/derived/dampedCoulomb/dampedCoulomb.C
new file mode 100644
index 0000000000000000000000000000000000000000..fd771e1854e3d44980b6dd86cfa1e746a4d40b78
--- /dev/null
+++ b/src/lagrangian/molecularDynamics/potential/pairPotential/derived/dampedCoulomb/dampedCoulomb.C
@@ -0,0 +1,98 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "dampedCoulomb.H"
+#include "mathematicalConstants.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace pairPotentials
+{
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+defineTypeNameAndDebug(dampedCoulomb, 0);
+
+addToRunTimeSelectionTable
+(
+    pairPotential,
+    dampedCoulomb,
+    dictionary
+);
+
+scalar dampedCoulomb::oneOverFourPiEps0 =
+    1.0/(4.0 * mathematicalConstant::pi * 8.854187817e-12);
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+dampedCoulomb::dampedCoulomb
+(
+    const word& name,
+    const dictionary& pairPotentialProperties
+)
+:
+    pairPotential(name, pairPotentialProperties),
+    dampedCoulombCoeffs_
+    (
+        pairPotentialProperties.subDict(typeName + "Coeffs")
+    ),
+    alpha_(readScalar(dampedCoulombCoeffs_.lookup("alpha")))
+{
+    setLookupTables();
+}
+
+
+// * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
+
+scalar dampedCoulomb::unscaledEnergy(const scalar r) const
+{
+    return oneOverFourPiEps0*erfc(alpha_*r)/r;
+}
+
+
+bool dampedCoulomb::read(const dictionary& pairPotentialProperties)
+{
+    pairPotential::read(pairPotentialProperties);
+
+    dampedCoulombCoeffs_ =
+        pairPotentialProperties.subDict(typeName + "Coeffs");
+
+    dampedCoulombCoeffs_.lookup("alpha") >> alpha_;
+
+    return true;
+}
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace pairPotentials
+} // End namespace Foam
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/fvMesh/extendedStencil/extendedStencilMeshObjects/upwindCECStencilObject.H b/src/lagrangian/molecularDynamics/potential/pairPotential/derived/dampedCoulomb/dampedCoulomb.H
similarity index 65%
rename from src/finiteVolume/fvMesh/extendedStencil/extendedStencilMeshObjects/upwindCECStencilObject.H
rename to src/lagrangian/molecularDynamics/potential/pairPotential/derived/dampedCoulomb/dampedCoulomb.H
index dc4544e9b37e1f30da30435a1bda61ca54998007..377b531824e4d520ccf3621672e1ae537e9e7585 100644
--- a/src/finiteVolume/fvMesh/extendedStencil/extendedStencilMeshObjects/upwindCECStencilObject.H
+++ b/src/lagrangian/molecularDynamics/potential/pairPotential/derived/dampedCoulomb/dampedCoulomb.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -23,63 +23,82 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::upwindCECStencilObject
+    Foam::pairPotentials::electrostatic
 
 Description
 
+
 SourceFiles
+    dampedCoulomb.C
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef upwindCECStencilObject_H
-#define upwindCECStencilObject_H
+#ifndef dampedCoulomb_H
+#define dampedCoulomb_H
 
-#include "extendedUpwindStencil.H"
-#include "cellEdgeCellStencil.H"
-#include "MeshObject.H"
+#include "pairPotential.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 namespace Foam
 {
+namespace pairPotentials
+{
 
 /*---------------------------------------------------------------------------*\
-                           Class upwindCECStencilObject Declaration
+                         Class dampedCoulomb Declaration
 \*---------------------------------------------------------------------------*/
 
-class upwindCECStencilObject
+class dampedCoulomb
 :
-    public MeshObject<fvMesh, upwindCECStencilObject>,
-    public extendedUpwindStencil
+    public pairPotential
 {
+    // Private data
+
+        dictionary dampedCoulombCoeffs_;
+
+        scalar alpha_;
+
 
 public:
 
-    TypeName("upwindCFCStencil");
+    //- Runtime type information
+    TypeName("dampedCoulomb");
+
+
+    // Static data members
+
+        static scalar oneOverFourPiEps0;
+
 
     // Constructors
 
-        //- Construct from uncompacted face stencil
-        explicit upwindCECStencilObject
+        //- Construct from components
+        dampedCoulomb
         (
-            const fvMesh& mesh,
-            const scalar minOpposedness
-        )
-        :
-            MeshObject<fvMesh, upwindCECStencilObject>(mesh),
-            extendedUpwindStencil(cellEdgeCellStencil(mesh), minOpposedness)
-        {}
+            const word& name,
+            const dictionary& pairPotentialProperties
+        );
 
 
     // Destructor
 
-        virtual ~upwindCECStencilObject()
+        ~dampedCoulomb()
         {}
+
+
+    // Member Functions
+
+        scalar unscaledEnergy(const scalar r) const;
+
+        //- Read dictionary
+        bool read(const dictionary& pairPotentialProperties);
 };
 
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+} // End namespace pairPotentials
 } // End namespace Foam
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/lagrangian/molecularDynamics/potential/pairPotential/derived/exponentialRepulsion/exponentialRepulsion.C b/src/lagrangian/molecularDynamics/potential/pairPotential/derived/exponentialRepulsion/exponentialRepulsion.C
index ccd54ec787dd8a14a6ca466ed38f95a077beaf45..ae34ef4cdbc30f5dc58c3927f7a2f2c1eeb583a1 100644
--- a/src/lagrangian/molecularDynamics/potential/pairPotential/derived/exponentialRepulsion/exponentialRepulsion.C
+++ b/src/lagrangian/molecularDynamics/potential/pairPotential/derived/exponentialRepulsion/exponentialRepulsion.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -45,8 +45,6 @@ addToRunTimeSelectionTable
     dictionary
 );
 
-// * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * * //
-
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
@@ -57,13 +55,17 @@ exponentialRepulsion::exponentialRepulsion
 )
 :
     pairPotential(name, exponentialRepulsion),
-    exponentialRepulsionCoeffs_(exponentialRepulsion.subDict(typeName + "Coeffs")),
+    exponentialRepulsionCoeffs_
+    (
+        exponentialRepulsion.subDict(typeName + "Coeffs")
+    ),
     rm_(readScalar(exponentialRepulsionCoeffs_.lookup("rm"))),
     epsilon_(readScalar(exponentialRepulsionCoeffs_.lookup("epsilon")))
 {
     setLookupTables();
 }
 
+
 // * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
 
 scalar exponentialRepulsion::unscaledEnergy(const scalar r) const
@@ -76,7 +78,8 @@ bool exponentialRepulsion::read(const dictionary& exponentialRepulsion)
 {
     pairPotential::read(exponentialRepulsion);
 
-    exponentialRepulsionCoeffs_ = exponentialRepulsion.subDict(typeName + "Coeffs");
+    exponentialRepulsionCoeffs_ =
+        exponentialRepulsion.subDict(typeName + "Coeffs");
 
     exponentialRepulsionCoeffs_.lookup("rm") >> rm_;
     exponentialRepulsionCoeffs_.lookup("epsilon") >> epsilon_;
diff --git a/src/lagrangian/molecularDynamics/potential/pairPotential/derived/exponentialRepulsion/exponentialRepulsion.H b/src/lagrangian/molecularDynamics/potential/pairPotential/derived/exponentialRepulsion/exponentialRepulsion.H
index cef45b7a3ae9c512305da12fa2c2c2291bedc38b..8ce1ee4a0f914faae42488a1712b370c29a4c978 100644
--- a/src/lagrangian/molecularDynamics/potential/pairPotential/derived/exponentialRepulsion/exponentialRepulsion.H
+++ b/src/lagrangian/molecularDynamics/potential/pairPotential/derived/exponentialRepulsion/exponentialRepulsion.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -46,7 +46,7 @@ namespace pairPotentials
 {
 
 /*---------------------------------------------------------------------------*\
-                           Class exponentialRepulsion Declaration
+                   Class exponentialRepulsion Declaration
 \*---------------------------------------------------------------------------*/
 
 class exponentialRepulsion
@@ -60,6 +60,7 @@ class exponentialRepulsion
         scalar rm_;
         scalar epsilon_;
 
+
 public:
 
     //- Runtime type information
@@ -86,7 +87,7 @@ public:
 
         scalar unscaledEnergy(const scalar r) const;
 
-        //- Read transportProperties dictionary
+        //- Read dictionary
         bool read(const dictionary& pairPotentialProperties);
 };
 
diff --git a/src/lagrangian/molecularDynamics/potential/pairPotential/derived/lennardJones/lennardJones.C b/src/lagrangian/molecularDynamics/potential/pairPotential/derived/lennardJones/lennardJones.C
index 9c93f3a70e017ca9a285b9992370dd9052ef36c4..d5a1deb88e6e8c0426a8ffad5c6a2ebead09c4ac 100644
--- a/src/lagrangian/molecularDynamics/potential/pairPotential/derived/lennardJones/lennardJones.C
+++ b/src/lagrangian/molecularDynamics/potential/pairPotential/derived/lennardJones/lennardJones.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -45,8 +45,6 @@ addToRunTimeSelectionTable
     dictionary
 );
 
-// * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * * //
-
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
@@ -64,6 +62,7 @@ lennardJones::lennardJones
     setLookupTables();
 }
 
+
 // * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
 
 scalar lennardJones::unscaledEnergy(const scalar r) const
diff --git a/src/lagrangian/molecularDynamics/potential/pairPotential/derived/lennardJones/lennardJones.H b/src/lagrangian/molecularDynamics/potential/pairPotential/derived/lennardJones/lennardJones.H
index f12027d1151eafa256ea8ced6130c17432cfa319..2ae3c036ae4bc893689d10de81741bfa6a22a22d 100644
--- a/src/lagrangian/molecularDynamics/potential/pairPotential/derived/lennardJones/lennardJones.H
+++ b/src/lagrangian/molecularDynamics/potential/pairPotential/derived/lennardJones/lennardJones.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -46,7 +46,7 @@ namespace pairPotentials
 {
 
 /*---------------------------------------------------------------------------*\
-                           Class lennardJones Declaration
+                         Class lennardJones Declaration
 \*---------------------------------------------------------------------------*/
 
 class lennardJones
@@ -60,6 +60,7 @@ class lennardJones
         scalar sigma_;
         scalar epsilon_;
 
+
 public:
 
     //- Runtime type information
@@ -86,7 +87,7 @@ public:
 
         scalar unscaledEnergy(const scalar r) const;
 
-        //- Read transportProperties dictionary
+        //- Read dictionary
         bool read(const dictionary& pairPotentialProperties);
 };
 
diff --git a/src/lagrangian/molecularDynamics/potential/pairPotential/derived/maitlandSmith/maitlandSmith.C b/src/lagrangian/molecularDynamics/potential/pairPotential/derived/maitlandSmith/maitlandSmith.C
index a813495f2678ce51f2b2091a8d1858139827da90..7545573591bf22809f92db844cd65234b28a9809 100644
--- a/src/lagrangian/molecularDynamics/potential/pairPotential/derived/maitlandSmith/maitlandSmith.C
+++ b/src/lagrangian/molecularDynamics/potential/pairPotential/derived/maitlandSmith/maitlandSmith.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -45,8 +45,6 @@ addToRunTimeSelectionTable
     dictionary
 );
 
-// * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * * //
-
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
@@ -66,6 +64,7 @@ maitlandSmith::maitlandSmith
     setLookupTables();
 }
 
+
 // * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
 
 scalar maitlandSmith::unscaledEnergy(const scalar r) const
@@ -90,7 +89,7 @@ bool maitlandSmith::read(const dictionary& maitlandSmith)
     maitlandSmithCoeffs_.lookup("gamma") >> gamma_;
     maitlandSmithCoeffs_.lookup("rm") >> rm_;
     maitlandSmithCoeffs_.lookup("epsilon") >> epsilon_;
-    
+
     return true;
 }
 
diff --git a/src/lagrangian/molecularDynamics/potential/pairPotential/derived/maitlandSmith/maitlandSmith.H b/src/lagrangian/molecularDynamics/potential/pairPotential/derived/maitlandSmith/maitlandSmith.H
index af4612644b5cd14bc3695a8b399da5d135bda24b..cdeb01211b58630e31f5d1044a94363a54ee28a8 100644
--- a/src/lagrangian/molecularDynamics/potential/pairPotential/derived/maitlandSmith/maitlandSmith.H
+++ b/src/lagrangian/molecularDynamics/potential/pairPotential/derived/maitlandSmith/maitlandSmith.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -72,7 +72,7 @@ namespace pairPotentials
 {
 
 /*---------------------------------------------------------------------------*\
-                           Class maitlandSmith Declaration
+                       Class maitlandSmith Declaration
 \*---------------------------------------------------------------------------*/
 
 class maitlandSmith
@@ -88,6 +88,7 @@ class maitlandSmith
         scalar rm_;
         scalar epsilon_;
 
+
 public:
 
     //- Runtime type information
@@ -114,7 +115,7 @@ public:
 
         scalar unscaledEnergy(const scalar r) const;
 
-        //- Read transportProperties dictionary
+        //- Read dictionary
         bool read(const dictionary& pairPotentialProperties);
 };
 
diff --git a/src/lagrangian/molecularDynamics/potential/pairPotential/derived/noInteraction/noInteraction.C b/src/lagrangian/molecularDynamics/potential/pairPotential/derived/noInteraction/noInteraction.C
index ca43080d7485662917c3fd3158d510bf12794a21..3326fd7fe1f41e5a723e0df06f75d91350cdf834 100644
--- a/src/lagrangian/molecularDynamics/potential/pairPotential/derived/noInteraction/noInteraction.C
+++ b/src/lagrangian/molecularDynamics/potential/pairPotential/derived/noInteraction/noInteraction.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -45,8 +45,6 @@ addToRunTimeSelectionTable
     dictionary
 );
 
-// * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * * //
-
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
@@ -61,6 +59,7 @@ noInteraction::noInteraction
     setLookupTables();
 }
 
+
 // * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
 
 scalar noInteraction::unscaledEnergy(const scalar r) const
diff --git a/src/lagrangian/molecularDynamics/potential/pairPotential/derived/noInteraction/noInteraction.H b/src/lagrangian/molecularDynamics/potential/pairPotential/derived/noInteraction/noInteraction.H
index d09564ef882ab3d5b4f849c13e770c6b425590c4..5d3fd5742dbf0fe3290b28968a923659c6e7839f 100644
--- a/src/lagrangian/molecularDynamics/potential/pairPotential/derived/noInteraction/noInteraction.H
+++ b/src/lagrangian/molecularDynamics/potential/pairPotential/derived/noInteraction/noInteraction.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -46,7 +46,7 @@ namespace pairPotentials
 {
 
 /*---------------------------------------------------------------------------*\
-                           Class noInteraction Declaration
+                       Class noInteraction Declaration
 \*---------------------------------------------------------------------------*/
 
 class noInteraction
@@ -80,7 +80,7 @@ public:
 
         scalar unscaledEnergy(const scalar r) const;
 
-        //- Read transportProperties dictionary
+        //- Read dictionary
         bool read(const dictionary& pairPotentialProperties);
 };
 
diff --git a/src/lagrangian/molecularDynamics/potential/pairPotential/pairPotentialList/pairPotentialList.C b/src/lagrangian/molecularDynamics/potential/pairPotential/pairPotentialList/pairPotentialList.C
index ef856bc50527ad70f8a554a9ce3ded45a89fd322..2d77c4ce59505c320590182f5eae168637f48cc4 100644
--- a/src/lagrangian/molecularDynamics/potential/pairPotential/pairPotentialList/pairPotentialList.C
+++ b/src/lagrangian/molecularDynamics/potential/pairPotential/pairPotentialList/pairPotentialList.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -60,9 +60,9 @@ void Foam::pairPotentialList::readPairPotentialDict
                 else
                 {
                     FatalErrorIn("pairPotentialList::buildPotentials") << nl
-                            << "Pair pairPotential specification subDict "
-                            << idA << "-" << idB << " not found"
-                            << nl << abort(FatalError);
+                        << "Pair pairPotential specification subDict "
+                        << idA << "-" << idB << " not found"
+                        << nl << abort(FatalError);
                 }
             }
             else
@@ -80,10 +80,10 @@ void Foam::pairPotentialList::readPairPotentialDict
                 else
                 {
                     FatalErrorIn("pairPotentialList::buildPotentials") << nl
-                            << "Pair pairPotential specification subDict "
-                            << idA << "-" << idB << " or "
-                            << idB << "-" << idA << " not found"
-                            << nl << abort(FatalError);
+                        << "Pair pairPotential specification subDict "
+                        << idA << "-" << idB << " or "
+                        << idB << "-" << idA << " not found"
+                        << nl << abort(FatalError);
                 }
 
                 if
@@ -93,10 +93,10 @@ void Foam::pairPotentialList::readPairPotentialDict
                 )
                 {
                     FatalErrorIn("pairPotentialList::buildPotentials") << nl
-                            << "Pair pairPotential specification subDict "
-                            << idA << "-" << idB << " and "
-                            << idB << "-" << idA << " found multiple definition"
-                            << nl << abort(FatalError);
+                        << "Pair pairPotential specification subDict "
+                        << idA << "-" << idB << " and "
+                        << idB << "-" << idA << " found multiple definition"
+                        << nl << abort(FatalError);
                 }
             }
 
@@ -136,9 +136,41 @@ void Foam::pairPotentialList::readPairPotentialDict
         }
     }
 
+    if (!pairPotentialDict.found("electrostatic"))
+    {
+        FatalErrorIn("pairPotentialList::buildPotentials") << nl
+            << "Pair pairPotential specification subDict electrostatic"
+            << nl << abort(FatalError);
+    }
+
+    electrostaticPotential_ = pairPotential::New
+    (
+        "electrostatic",
+        pairPotentialDict.subDict("electrostatic")
+    );
+
+    if (electrostaticPotential_->rCut() > rCutMax_)
+    {
+        rCutMax_ = electrostaticPotential_->rCut();
+    }
+
+    if (electrostaticPotential_->writeTables())
+    {
+        OFstream ppTabFile(mesh.time().path()/"electrostatic");
+
+        if(!electrostaticPotential_->writeEnergyAndForceTables(ppTabFile))
+        {
+            FatalErrorIn("pairPotentialList::readPairPotentialDict")
+                << "Failed writing to "
+                << ppTabFile.name() << nl
+                << abort(FatalError);
+        }
+    }
+
     rCutMaxSqr_ = rCutMax_*rCutMax_;
 }
 
+
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
 Foam::pairPotentialList::pairPotentialList()
@@ -146,6 +178,7 @@ Foam::pairPotentialList::pairPotentialList()
     PtrList<pairPotential>()
 {}
 
+
 Foam::pairPotentialList::pairPotentialList
 (
     const List<word>& idList,
@@ -188,13 +221,13 @@ const Foam::pairPotential& Foam::pairPotentialList::pairPotentialFunction
     const label b
 ) const
 {
-    return (*this)[pairPotentialIndex (a, b)];
+    return (*this)[pairPotentialIndex(a, b)];
 }
 
 
 bool Foam::pairPotentialList::rCutMaxSqr(const scalar rIJMagSqr) const
 {
-    if (rIJMagSqr <= rCutMaxSqr_)
+    if (rIJMagSqr < rCutMaxSqr_)
     {
         return true;
     }
@@ -212,7 +245,7 @@ bool Foam::pairPotentialList::rCutSqr
     const scalar rIJMagSqr
 ) const
 {
-    if (rIJMagSqr <= rCutSqr (a, b))
+    if (rIJMagSqr < rCutSqr(a, b))
     {
         return true;
     }
@@ -229,7 +262,7 @@ Foam::scalar Foam::pairPotentialList::rMin
     const label b
 ) const
 {
-    return (*this)[pairPotentialIndex (a, b)].rMin();
+    return (*this)[pairPotentialIndex(a, b)].rMin();
 }
 
 
@@ -239,7 +272,7 @@ Foam::scalar Foam::pairPotentialList::dr
     const label b
 ) const
 {
-    return (*this)[pairPotentialIndex (a, b)].dr();
+    return (*this)[pairPotentialIndex(a, b)].dr();
 }
 
 
@@ -249,7 +282,7 @@ Foam::scalar Foam::pairPotentialList::rCutSqr
     const label b
 ) const
 {
-    return (*this)[pairPotentialIndex (a, b)].rCutSqr();
+    return (*this)[pairPotentialIndex(a, b)].rCutSqr();
 }
 
 
@@ -259,7 +292,7 @@ Foam::scalar Foam::pairPotentialList::rCut
     const label b
 ) const
 {
-    return (*this)[pairPotentialIndex (a, b)].rCut();
+    return (*this)[pairPotentialIndex(a, b)].rCut();
 }
 
 
@@ -270,7 +303,7 @@ Foam::scalar Foam::pairPotentialList::force
     const scalar rIJMag
 ) const
 {
-    scalar f = (*this)[pairPotentialIndex (a, b)].forceLookup(rIJMag);
+    scalar f = (*this)[pairPotentialIndex(a, b)].force(rIJMag);
 
     return f;
 }
@@ -283,11 +316,10 @@ Foam::scalar Foam::pairPotentialList::energy
     const scalar rIJMag
 ) const
 {
-    scalar e = (*this)[pairPotentialIndex (a, b)].energyLookup(rIJMag);
+    scalar e = (*this)[pairPotentialIndex(a, b)].energy(rIJMag);
 
     return e;
 }
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 // ************************************************************************* //
diff --git a/src/lagrangian/molecularDynamics/potential/pairPotential/pairPotentialList/pairPotentialList.H b/src/lagrangian/molecularDynamics/potential/pairPotential/pairPotentialList/pairPotentialList.H
index a7e8190a01bfccd986ffa79817fd492f500e78c2..b4193a46ae49df57ed5cbcda74f8657e4cdcece4 100644
--- a/src/lagrangian/molecularDynamics/potential/pairPotential/pairPotentialList/pairPotentialList.H
+++ b/src/lagrangian/molecularDynamics/potential/pairPotential/pairPotentialList/pairPotentialList.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -47,7 +47,7 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                           Class pairPotentialList Declaration
+                      Class pairPotentialList Declaration
 \*---------------------------------------------------------------------------*/
 
 class pairPotentialList
@@ -62,6 +62,9 @@ class pairPotentialList
 
         scalar rCutMaxSqr_;
 
+        autoPtr<pairPotential> electrostaticPotential_;
+
+
     // Private Member Functions
 
         inline label pairPotentialIndex
@@ -83,6 +86,7 @@ class pairPotentialList
         //- Disallow default bitwise copy construct
         pairPotentialList(const pairPotentialList&);
 
+
 public:
 
     // Constructors
@@ -97,10 +101,12 @@ public:
             const polyMesh& mesh
         );
 
+
     // Destructor
 
         ~pairPotentialList();
 
+
     // Member Functions
 
         void buildPotentials
@@ -110,6 +116,7 @@ public:
             const polyMesh& mesh
         );
 
+
         // Access
 
             inline scalar rCutMax() const;
@@ -132,13 +139,13 @@ public:
                 const scalar rIJMagSqr
             ) const;
 
-            scalar rMin (const label a, const label b) const;
+            scalar rMin(const label a, const label b) const;
 
-            scalar dr (const label a, const label b) const;
+            scalar dr(const label a, const label b) const;
 
-            scalar rCutSqr (const label a, const label b) const;
+            scalar rCutSqr(const label a, const label b) const;
 
-            scalar rCut (const label a, const label b) const;
+            scalar rCut(const label a, const label b) const;
 
             scalar force
             (
@@ -153,6 +160,8 @@ public:
                 const label b,
                 const scalar rIJMag
             ) const;
+
+            inline const pairPotential& electrostatic() const;
 };
 
 
diff --git a/src/lagrangian/molecularDynamics/potential/pairPotential/pairPotentialList/pairPotentialListI.H b/src/lagrangian/molecularDynamics/potential/pairPotential/pairPotentialList/pairPotentialListI.H
index 413ffea05eb663c8bc7184801475fefee38d6dda..c14aa3695e189388a7be344c3ace053909b75249 100644
--- a/src/lagrangian/molecularDynamics/potential/pairPotential/pairPotentialList/pairPotentialListI.H
+++ b/src/lagrangian/molecularDynamics/potential/pairPotential/pairPotentialList/pairPotentialListI.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -56,6 +56,7 @@ inline Foam::label Foam::pairPotentialList::pairPotentialIndex
     return index;
 }
 
+
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 inline Foam::scalar Foam::pairPotentialList::rCutMax() const
@@ -70,4 +71,10 @@ inline Foam::scalar Foam::pairPotentialList::rCutMaxSqr() const
 }
 
 
+inline const Foam::pairPotential& Foam::pairPotentialList::electrostatic() const
+{
+    return electrostaticPotential_;
+}
+
+
 // ************************************************************************* //
diff --git a/src/lagrangian/molecularDynamics/potential/potential/potential.C b/src/lagrangian/molecularDynamics/potential/potential/potential.C
index 16a7fca6cd8b56a16894df3363e8964d92e28f12..5532c2f105c0751eeb4bf966918e91fb12c09c10 100644
--- a/src/lagrangian/molecularDynamics/potential/potential/potential.C
+++ b/src/lagrangian/molecularDynamics/potential/potential/potential.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -365,8 +365,7 @@ void Foam::potential::potential::readMdInitialiseDict
 
 Foam::potential::potential(const polyMesh& mesh)
 :
-    mesh_(mesh),
-    electrostaticPotential_()
+    mesh_(mesh)
 {
     readPotentialDict();
 }
@@ -379,8 +378,7 @@ Foam::potential::potential
     IOdictionary& idListDict
 )
 :
-    mesh_(mesh),
-    electrostaticPotential_()
+    mesh_(mesh)
 {
     readMdInitialiseDict(mdInitialiseDict, idListDict);
 }
diff --git a/src/lagrangian/molecularDynamics/potential/potential/potential.H b/src/lagrangian/molecularDynamics/potential/potential/potential.H
index 7accf239cd0f6fde38fca7dac2645b1f8206cfb5..32f9b2a1d29d98b82af3b4e760910f0548a057b2 100644
--- a/src/lagrangian/molecularDynamics/potential/potential/potential.H
+++ b/src/lagrangian/molecularDynamics/potential/potential/potential.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -49,7 +49,7 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                           Class potential Declaration
+                         Class potential Declaration
 \*---------------------------------------------------------------------------*/
 
 class potential
@@ -70,12 +70,11 @@ class potential
 
         pairPotentialList pairPotentials_;
 
-        electrostaticPotential electrostaticPotential_;
-
         tetherPotentialList tetherPotentials_;
 
         vector gravity_;
 
+
     // Private Member Functions
 
         void setSiteIdList(const IOdictionary& moleculePropertiesDict);
@@ -110,6 +109,7 @@ public:
             IOdictionary& idListDict
         );
 
+
     // Destructor
 
         ~potential();
@@ -133,8 +133,6 @@ public:
 
             inline const pairPotentialList& pairPotentials() const;
 
-            inline const electrostaticPotential& electrostatic() const;
-
             inline const tetherPotentialList& tetherPotentials() const;
 
             inline const vector& gravity() const;
diff --git a/src/lagrangian/molecularDynamics/potential/potential/potentialI.H b/src/lagrangian/molecularDynamics/potential/potential/potentialI.H
index eddd2b047ccdbb3d04e3997e20c47f304ccc8812..38ba634455761cc7416fe2123b48edc088304200 100644
--- a/src/lagrangian/molecularDynamics/potential/potential/potentialI.H
+++ b/src/lagrangian/molecularDynamics/potential/potential/potentialI.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -24,8 +24,6 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 inline Foam::label Foam::potential::nIds() const
@@ -70,13 +68,6 @@ inline const Foam::pairPotentialList& Foam::potential::pairPotentials() const
 }
 
 
-inline const Foam::electrostaticPotential&
-Foam::potential::electrostatic() const
-{
-    return electrostaticPotential_;
-}
-
-
 inline const Foam::tetherPotentialList&
 Foam::potential::tetherPotentials() const
 {
diff --git a/src/lagrangian/molecularDynamics/potential/tetherPotential/basic/newTetherPotential.C b/src/lagrangian/molecularDynamics/potential/tetherPotential/basic/newTetherPotential.C
index 4caba50778c52157ff789479ec2e6f4c61acf14b..85c8a703596579aca1b3af84b2dcb84a24ef0773 100644
--- a/src/lagrangian/molecularDynamics/potential/tetherPotential/basic/newTetherPotential.C
+++ b/src/lagrangian/molecularDynamics/potential/tetherPotential/basic/newTetherPotential.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -39,7 +39,11 @@ autoPtr<tetherPotential> tetherPotential::New
     const dictionary& tetherPotentialProperties
 )
 {
-    word tetherPotentialTypeName(tetherPotentialProperties.lookup("tetherPotential"));
+    word
+        tetherPotentialTypeName
+        (
+            tetherPotentialProperties.lookup("tetherPotential")
+        );
 
     Info<< nl << "Selecting tether potential "
         << tetherPotentialTypeName << " for "
@@ -54,8 +58,8 @@ autoPtr<tetherPotential> tetherPotential::New
         (
             "tetherPotential::New()"
         )   << "Unknown tetherPotential type "
-            << tetherPotentialTypeName << endl << endl
-            << "Valid  tetherPotentials are : " << endl
+            << tetherPotentialTypeName << nl << nl
+            << "Valid  tetherPotentials are: " << nl
             << dictionaryConstructorTablePtr_->toc()
             << exit(FatalError);
     }
diff --git a/src/lagrangian/molecularDynamics/potential/tetherPotential/basic/tetherPotential.C b/src/lagrangian/molecularDynamics/potential/tetherPotential/basic/tetherPotential.C
index 462be334561a6c1b3af9fd186d7f6b0c5c4e39b5..4c4708ba96a320c07cd81c7738ad0fa67477e9b7 100644
--- a/src/lagrangian/molecularDynamics/potential/tetherPotential/basic/tetherPotential.C
+++ b/src/lagrangian/molecularDynamics/potential/tetherPotential/basic/tetherPotential.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/lagrangian/molecularDynamics/potential/tetherPotential/basic/tetherPotential.H b/src/lagrangian/molecularDynamics/potential/tetherPotential/basic/tetherPotential.H
index 19a9cddb77743a3d038ac9a51a457b21a9e12067..f65e5bb6b8593e9bfa28caec2dabd15c5ded5659 100644
--- a/src/lagrangian/molecularDynamics/potential/tetherPotential/basic/tetherPotential.H
+++ b/src/lagrangian/molecularDynamics/potential/tetherPotential/basic/tetherPotential.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -48,7 +48,7 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                Class tetherPotential Declaration
+                      Class tetherPotential Declaration
 \*---------------------------------------------------------------------------*/
 
 class tetherPotential
diff --git a/src/lagrangian/molecularDynamics/potential/tetherPotential/derived/harmonicSpring/harmonicSpring.C b/src/lagrangian/molecularDynamics/potential/tetherPotential/derived/harmonicSpring/harmonicSpring.C
index 453d5898ab85917cd511b02032dbd18f3f8f14bc..1edcc70a155fa5f1242623f97f6d4011226a7458 100644
--- a/src/lagrangian/molecularDynamics/potential/tetherPotential/derived/harmonicSpring/harmonicSpring.C
+++ b/src/lagrangian/molecularDynamics/potential/tetherPotential/derived/harmonicSpring/harmonicSpring.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/lagrangian/molecularDynamics/potential/tetherPotential/derived/harmonicSpring/harmonicSpring.H b/src/lagrangian/molecularDynamics/potential/tetherPotential/derived/harmonicSpring/harmonicSpring.H
index 6508adaec902e78461435887b6f13081a6046210..4af51cfdff80706857f0a50322c78b5f73bf4b46 100644
--- a/src/lagrangian/molecularDynamics/potential/tetherPotential/derived/harmonicSpring/harmonicSpring.H
+++ b/src/lagrangian/molecularDynamics/potential/tetherPotential/derived/harmonicSpring/harmonicSpring.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -46,7 +46,7 @@ namespace tetherPotentials
 {
 
 /*---------------------------------------------------------------------------*\
-                           Class harmonicSpring Declaration
+                       Class harmonicSpring Declaration
 \*---------------------------------------------------------------------------*/
 
 class harmonicSpring
@@ -88,7 +88,7 @@ public:
 
         vector force(const vector r) const;
 
-        //- Read transportProperties dictionary
+        //- Read dictionary
         bool read(const dictionary& tetherPotentialProperties);
 };
 
diff --git a/src/lagrangian/molecularDynamics/potential/tetherPotential/derived/pitchForkRing/pitchForkRing.C b/src/lagrangian/molecularDynamics/potential/tetherPotential/derived/pitchForkRing/pitchForkRing.C
index 7e12f9ab74e93b82c2b5c9b25e28529c1c032fd9..8a3a081f6fc6bbdcf1e8cdb39df46f233dc97b2c 100644
--- a/src/lagrangian/molecularDynamics/potential/tetherPotential/derived/pitchForkRing/pitchForkRing.C
+++ b/src/lagrangian/molecularDynamics/potential/tetherPotential/derived/pitchForkRing/pitchForkRing.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/lagrangian/molecularDynamics/potential/tetherPotential/derived/pitchForkRing/pitchForkRing.H b/src/lagrangian/molecularDynamics/potential/tetherPotential/derived/pitchForkRing/pitchForkRing.H
index 82b93b087b7fc542067afdb2d90aa4063f80bf5c..2bb98e39bd2063ccff4809f187f970de80baef46 100644
--- a/src/lagrangian/molecularDynamics/potential/tetherPotential/derived/pitchForkRing/pitchForkRing.H
+++ b/src/lagrangian/molecularDynamics/potential/tetherPotential/derived/pitchForkRing/pitchForkRing.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -46,7 +46,7 @@ namespace tetherPotentials
 {
 
 /*---------------------------------------------------------------------------*\
-                           Class pitchForkRing Declaration
+                       Class pitchForkRing Declaration
 \*---------------------------------------------------------------------------*/
 
 class pitchForkRing
@@ -90,7 +90,7 @@ public:
 
         vector force(const vector r) const;
 
-        //- Read transportProperties dictionary
+        //- Read dictionary
         bool read(const dictionary& tetherPotentialProperties);
 };
 
diff --git a/src/lagrangian/molecularDynamics/potential/tetherPotential/derived/restrainedHarmonicSpring/restrainedHarmonicSpring.C b/src/lagrangian/molecularDynamics/potential/tetherPotential/derived/restrainedHarmonicSpring/restrainedHarmonicSpring.C
index 45a48a4c623fbfa663b889ad142463c3d22d8c3f..5396013a173a973aa7302f5cc07e69889ff61b54 100644
--- a/src/lagrangian/molecularDynamics/potential/tetherPotential/derived/restrainedHarmonicSpring/restrainedHarmonicSpring.C
+++ b/src/lagrangian/molecularDynamics/potential/tetherPotential/derived/restrainedHarmonicSpring/restrainedHarmonicSpring.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -45,8 +45,6 @@ addToRunTimeSelectionTable
     dictionary
 );
 
-// * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * * //
-
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
@@ -88,6 +86,7 @@ scalar restrainedHarmonicSpring::energy(const vector r) const
     }
 }
 
+
 vector restrainedHarmonicSpring::force(const vector r) const
 {
     scalar magR = mag(r);
@@ -102,7 +101,11 @@ vector restrainedHarmonicSpring::force(const vector r) const
     }
 }
 
-bool restrainedHarmonicSpring::read(const dictionary& tetherPotentialProperties)
+
+bool restrainedHarmonicSpring::read
+(
+    const dictionary& tetherPotentialProperties
+)
 {
     tetherPotential::read(tetherPotentialProperties);
 
diff --git a/src/lagrangian/molecularDynamics/potential/tetherPotential/derived/restrainedHarmonicSpring/restrainedHarmonicSpring.H b/src/lagrangian/molecularDynamics/potential/tetherPotential/derived/restrainedHarmonicSpring/restrainedHarmonicSpring.H
index 62b92618591cde2ab81918375ee98cf5d0638bd4..1711c4f5f3e5db5b35723de84bdc8aa082026f21 100644
--- a/src/lagrangian/molecularDynamics/potential/tetherPotential/derived/restrainedHarmonicSpring/restrainedHarmonicSpring.H
+++ b/src/lagrangian/molecularDynamics/potential/tetherPotential/derived/restrainedHarmonicSpring/restrainedHarmonicSpring.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -46,7 +46,7 @@ namespace tetherPotentials
 {
 
 /*---------------------------------------------------------------------------*\
-                           Class restrainedHarmonicSpring Declaration
+                  Class restrainedHarmonicSpring Declaration
 \*---------------------------------------------------------------------------*/
 
 class restrainedHarmonicSpring
@@ -90,7 +90,7 @@ public:
 
         vector force(const vector r) const;
 
-        //- Read transportProperties dictionary
+        //- Read dictionary
         bool read(const dictionary& tetherPotentialProperties);
 };
 
diff --git a/src/lagrangian/molecularDynamics/potential/tetherPotential/tetherPotentialList/tetherPotentialList.C b/src/lagrangian/molecularDynamics/potential/tetherPotential/tetherPotentialList/tetherPotentialList.C
index 79a1ce83d7a0922f4c4b5d7472d6ffa1fe555286..93498b8f711a2a8dc050e950e27eb51cc2ea1407 100644
--- a/src/lagrangian/molecularDynamics/potential/tetherPotential/tetherPotentialList/tetherPotentialList.C
+++ b/src/lagrangian/molecularDynamics/potential/tetherPotential/tetherPotentialList/tetherPotentialList.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -131,7 +131,7 @@ const Foam::tetherPotential& Foam::tetherPotentialList::tetherPotentialFunction
     const label a
 ) const
 {
-    return (*this)[tetherPotentialIndex (a)];
+    return (*this)[tetherPotentialIndex(a)];
 }
 
 
@@ -141,7 +141,7 @@ Foam::vector Foam::tetherPotentialList::force
     const vector rIT
 ) const
 {
-    return (*this)[tetherPotentialIndex (a)].force(rIT);
+    return (*this)[tetherPotentialIndex(a)].force(rIT);
 }
 
 
@@ -151,9 +151,8 @@ Foam::scalar Foam::tetherPotentialList::energy
     const vector rIT
 ) const
 {
-    return (*this)[tetherPotentialIndex (a)].energy(rIT);
+    return (*this)[tetherPotentialIndex(a)].energy(rIT);
 }
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 // ************************************************************************* //
diff --git a/src/lagrangian/molecularDynamics/potential/tetherPotential/tetherPotentialList/tetherPotentialList.H b/src/lagrangian/molecularDynamics/potential/tetherPotential/tetherPotentialList/tetherPotentialList.H
index a48cc21edec46f805845e4fa84b7504660a39c37..8ca770f52351cd1de3f749428afb9be8474e8e6a 100644
--- a/src/lagrangian/molecularDynamics/potential/tetherPotential/tetherPotentialList/tetherPotentialList.H
+++ b/src/lagrangian/molecularDynamics/potential/tetherPotential/tetherPotentialList/tetherPotentialList.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -57,6 +57,7 @@ class tetherPotentialList
 
         List<label> idMap_;
 
+
     // Private Member Functions
 
         inline label tetherPotentialIndex
@@ -92,10 +93,12 @@ public:
             const List<word>& tetherSiteIdList
         );
 
+
     // Destructor
 
         ~tetherPotentialList();
 
+
     // Member Functions
 
         void buildPotentials
diff --git a/src/lagrangian/molecularDynamics/potential/tetherPotential/tetherPotentialList/tetherPotentialListI.H b/src/lagrangian/molecularDynamics/potential/tetherPotential/tetherPotentialList/tetherPotentialListI.H
index 67b1e4dbe62a97c3b38a41863bcd5e9c77b1d4b8..73834281efd0b4f92749800b1526b35841f0d440 100644
--- a/src/lagrangian/molecularDynamics/potential/tetherPotential/tetherPotentialList/tetherPotentialListI.H
+++ b/src/lagrangian/molecularDynamics/potential/tetherPotential/tetherPotentialList/tetherPotentialListI.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/lagrangian/solidParticle/solidParticle.C b/src/lagrangian/solidParticle/solidParticle.C
index 7b9fdf18a6444245442508c3dcd2971b558c0671..e77b9cf8a2f94ac4fd8736e217b9b0ebb9de3874 100644
--- a/src/lagrangian/solidParticle/solidParticle.C
+++ b/src/lagrangian/solidParticle/solidParticle.C
@@ -84,12 +84,9 @@ bool Foam::solidParticle::move(solidParticle::trackData& td)
 
         if (onBoundary() && td.keepParticle)
         {
-            if (face() > -1)
+            if (isType<processorPolyPatch>(pbMesh[patch(face())]))
             {
-                if (isType<processorPolyPatch>(pbMesh[patch(face())]))
-                {
-                    td.switchProcessor = true;
-                }
+                td.switchProcessor = true;
             }
         }
     }
@@ -98,6 +95,28 @@ bool Foam::solidParticle::move(solidParticle::trackData& td)
 }
 
 
+bool Foam::solidParticle::hitPatch
+(
+    const polyPatch&,
+    solidParticle::trackData&,
+    const label
+)
+{
+    return false;
+}
+
+
+bool Foam::solidParticle::hitPatch
+(
+    const polyPatch&,
+    int&,
+    const label
+)
+{
+    return false;
+}
+
+
 void Foam::solidParticle::hitProcessorPatch
 (
     const processorPolyPatch&,
diff --git a/src/lagrangian/solidParticle/solidParticle.H b/src/lagrangian/solidParticle/solidParticle.H
index a0977520cc07a9e6f63ea47162fa7b59de26f722..4847970f2fc452a29ba8384c3103f1251fecb63c 100644
--- a/src/lagrangian/solidParticle/solidParticle.H
+++ b/src/lagrangian/solidParticle/solidParticle.H
@@ -163,68 +163,91 @@ public:
             inline scalar wallImpactDistance(const vector& n) const;
 
 
-        //- Tracking
-        bool move(trackData&);
+        // Tracking
 
+            //- Move
+            bool move(trackData&);
 
-        //- Overridable function to handle the particle hitting a processorPatch
-        void hitProcessorPatch
-        (
-            const processorPolyPatch&,
-            solidParticle::trackData& td
-        );
 
-        //- Overridable function to handle the particle hitting a processorPatch
-        //- without trackData
-        void hitProcessorPatch
-        (
-            const processorPolyPatch&,
-            int&
-        );
+        // Patch interactions
 
-        //- Overridable function to handle the particle hitting a wallPatch
-        void hitWallPatch
-        (
-            const wallPolyPatch&,
-            solidParticle::trackData& td
-        );
+            //- Overridable function to handle the particle hitting a patch
+            //  Executed before other patch-hitting functions
+            bool hitPatch
+            (
+                const polyPatch&,
+                solidParticle::trackData& td,
+                const label patchI
+            );
 
-        //- Overridable function to handle the particle hitting a wallPatch
-        //- without trackData
-        void hitWallPatch
-        (
-            const wallPolyPatch&,
-            int&
-        );
+            //- Overridable function to handle the particle hitting a patch
+            //  Executed before other patch-hitting functions without trackData
+            bool hitPatch
+            (
+                const polyPatch& p,
+                int& td,
+                const label patchI
+            );
 
-        //- Overridable function to handle the particle hitting a polyPatch
-        void hitPatch
-        (
-            const polyPatch&,
-            solidParticle::trackData& td
-        );
+            //- Overridable function to handle the particle hitting a
+            //  processorPatch
+            void hitProcessorPatch
+            (
+                const processorPolyPatch&,
+                solidParticle::trackData& td
+            );
 
-        //- Overridable function to handle the particle hitting a polyPatch
-        //- without trackData
-        void hitPatch
-        (
-            const polyPatch&,
-            int&
-        );
+            //- Overridable function to handle the particle hitting a
+            //  processorPatch without trackData
+            void hitProcessorPatch
+            (
+                const processorPolyPatch&,
+                int&
+            );
 
-        //- Transform the physical properties of the particle
-        //  according to the given transformation tensor
-        void transformProperties
-        (
-            const tensor& T
-        );
+            //- Overridable function to handle the particle hitting a wallPatch
+            void hitWallPatch
+            (
+                const wallPolyPatch&,
+                solidParticle::trackData& td
+            );
 
-        //- Transform the physical properties of the particle
-        //  according to the given separation vector
-        void transformProperties
-        (
-            const vector& separation
-        );
+            //- Overridable function to handle the particle hitting a wallPatch
+            //- without trackData
+            void hitWallPatch
+            (
+                const wallPolyPatch&,
+                int&
+            );
+
+            //- Overridable function to handle the particle hitting a polyPatch
+            void hitPatch
+            (
+                const polyPatch&,
+                solidParticle::trackData& td
+            );
+
+            //- Overridable function to handle the particle hitting a polyPatch
+            //- without trackData
+            void hitPatch
+            (
+                const polyPatch&,
+                int&
+            );
+
+            //- Transform the physical properties of the particle
+            //  according to the given transformation tensor
+            void transformProperties
+            (
+                const tensor& T
+            );
+
+            //- Transform the physical properties of the particle
+            //  according to the given separation vector
+            void transformProperties
+            (
+                const vector& separation
+            );
 
 
     // I-O
diff --git a/src/lagrangian/solidParticle/solidParticleCloud.H b/src/lagrangian/solidParticle/solidParticleCloud.H
index 078594592d995164e62a5027cdb2fd1049e232e4..f171007ce35311aa54cee38788c642d71a3d8f58 100644
--- a/src/lagrangian/solidParticle/solidParticleCloud.H
+++ b/src/lagrangian/solidParticle/solidParticleCloud.H
@@ -108,10 +108,10 @@ public:
             void move(const dimensionedVector& g);
 
 
-        // I-O
+        // Write
 
             //- Write fields
-            void writeFields() const;
+            virtual void writeFields() const;
 };
 
 
diff --git a/src/meshTools/Make/files b/src/meshTools/Make/files
index d5133cb33dad9e45beb50fa4785fdaee749b2d39..a61d00246e04323e182603105061d72d9150acd6 100644
--- a/src/meshTools/Make/files
+++ b/src/meshTools/Make/files
@@ -90,6 +90,7 @@ $(cellSources)/nbrToCell/nbrToCell.C
 $(cellSources)/zoneToCell/zoneToCell.C
 $(cellSources)/sphereToCell/sphereToCell.C
 $(cellSources)/cylinderToCell/cylinderToCell.C
+$(cellSources)/faceZoneToCell/faceZoneToCell.C
 
 faceSources = sets/faceSources
 $(faceSources)/faceToFace/faceToFace.C
diff --git a/src/meshTools/directMapped/directMappedPolyPatch/directMappedPatchBase.H b/src/meshTools/directMapped/directMappedPolyPatch/directMappedPatchBase.H
index 1a476f66a9eb392021ac0d8085bfbe804f82bccf..a3d936757eaa5fc190dfb7890ff2f0194406f9a8 100644
--- a/src/meshTools/directMapped/directMappedPolyPatch/directMappedPatchBase.H
+++ b/src/meshTools/directMapped/directMappedPolyPatch/directMappedPatchBase.H
@@ -105,6 +105,7 @@ private:
             //  - schedule
             mutable autoPtr<mapDistribute> mapPtr_;
 
+
     // Private Member Functions
 
         //- Collect single list of samples and originating processor+face.
@@ -162,7 +163,7 @@ private:
 public:
 
     //- Runtime type information
-    ClassName("directMappedPatchBase");
+    TypeName("directMappedPatchBase");
 
 
     // Constructors
@@ -177,15 +178,14 @@ public:
         directMappedPatchBase(const polyPatch&, const directMappedPatchBase&);
 
 
-    // Destructor
-
-        ~directMappedPatchBase();
-
-        void clearOut();
+    //- Destructor
+    virtual ~directMappedPatchBase();
 
 
     // Member functions
 
+        void clearOut();
+
         //- What to sample
         const sampleMode& mode() const
         {
diff --git a/src/meshTools/directMapped/directMappedPolyPatch/directMappedPolyPatch.H b/src/meshTools/directMapped/directMappedPolyPatch/directMappedPolyPatch.H
index 522564b33775c89f135092dc1b161875c9a78ed0..fdd4baec85c9547ded1b7911c765d696c0d10946 100644
--- a/src/meshTools/directMapped/directMappedPolyPatch/directMappedPolyPatch.H
+++ b/src/meshTools/directMapped/directMappedPolyPatch/directMappedPolyPatch.H
@@ -151,9 +151,8 @@ public:
         }
 
 
-    // Destructor
-
-        ~directMappedPolyPatch();
+    //- Destructor
+    virtual ~directMappedPolyPatch();
 
 
     // Member functions
diff --git a/src/meshTools/directMapped/directMappedPolyPatch/directMappedWallPolyPatch.H b/src/meshTools/directMapped/directMappedPolyPatch/directMappedWallPolyPatch.H
index 407d62ddda2c07958a45b0ea642567ceaf4c1078..457552e42140f9a92a49b1ca3fd40ba99d1df1c9 100644
--- a/src/meshTools/directMapped/directMappedPolyPatch/directMappedWallPolyPatch.H
+++ b/src/meshTools/directMapped/directMappedPolyPatch/directMappedWallPolyPatch.H
@@ -158,9 +158,8 @@ public:
         }
 
 
-    // Destructor
-
-        ~directMappedWallPolyPatch();
+    //- Destructor
+    virtual ~directMappedWallPolyPatch();
 
 
     // Member functions
diff --git a/src/meshTools/meshTools/meshTools.C b/src/meshTools/meshTools/meshTools.C
index 4568b32e38ad8179c9d280678be0a88cd416a116..0441013d46bcc3745b27645f4467525c3a47ea50 100644
--- a/src/meshTools/meshTools/meshTools.C
+++ b/src/meshTools/meshTools/meshTools.C
@@ -46,7 +46,7 @@ bool Foam::meshTools::visNormal
             return false;
         }
     }
-    
+
     return true;
 }
 
@@ -63,7 +63,7 @@ Foam::vectorField Foam::meshTools::calcBoxPointNormals(const primitivePatch& pp)
     octantNormal[pXmYpZ] = vector(1, -1, 1);
     octantNormal[mXpYpZ] = vector(-1, 1, 1);
     octantNormal[pXpYpZ] = vector(1, 1, 1);
-    
+
     octantNormal /= mag(octantNormal);
 
 
@@ -300,7 +300,7 @@ bool Foam::meshTools::edgeOnCell
 )
 {
     return findIndex(mesh.edgeCells(edgeI), cellI) != -1;
-}        
+}
 
 
 bool Foam::meshTools::edgeOnFace
@@ -311,7 +311,7 @@ bool Foam::meshTools::edgeOnFace
 )
 {
     return findIndex(mesh.faceEdges(faceI), edgeI) != -1;
-}        
+}
 
 
 // Return true if faceI part of cellI
@@ -635,9 +635,14 @@ Foam::label Foam::meshTools::walkFace
 }
 
 
-void Foam::meshTools::constrainToMeshCentre(const polyMesh& mesh, point& pt)
+void Foam::meshTools::constrainToMeshCentre
+(
+    const polyMesh& mesh,
+    point& pt
+)
 {
     const Vector<label>& dirs = mesh.geometricD();
+
     const point& min = mesh.bounds().min();
     const point& max = mesh.bounds().max();
 
@@ -645,7 +650,7 @@ void Foam::meshTools::constrainToMeshCentre(const polyMesh& mesh, point& pt)
     {
         if (dirs[cmpt] == -1)
         {
-            pt[cmpt] = 0.5*(min[cmpt]+max[cmpt]);
+            pt[cmpt] = 0.5*(min[cmpt] + max[cmpt]);
         }
     }
 }
@@ -658,6 +663,7 @@ void Foam::meshTools::constrainToMeshCentre
 )
 {
     const Vector<label>& dirs = mesh.geometricD();
+
     const point& min = mesh.bounds().min();
     const point& max = mesh.bounds().max();
 
@@ -679,7 +685,7 @@ void Foam::meshTools::constrainToMeshCentre
             {
                 if (dirs[cmpt] == -1)
                 {
-                    pts[i][cmpt] = 0.5*(min[cmpt]+max[cmpt]);
+                    pts[i][cmpt] = 0.5*(min[cmpt] + max[cmpt]);
                 }
             }
         }
@@ -688,10 +694,13 @@ void Foam::meshTools::constrainToMeshCentre
 
 
 //- Set the constrained components of directions/velocity to zero
-void Foam::meshTools::constrainDirection(const polyMesh& mesh, vector& d)
+void Foam::meshTools::constrainDirection
+(
+    const polyMesh& mesh,
+    const Vector<label>& dirs,
+    vector& d
+)
 {
-    const Vector<label>& dirs = mesh.geometricD();
-
     for (direction cmpt=0; cmpt<vector::nComponents; cmpt++)
     {
         if (dirs[cmpt] == -1)
@@ -702,10 +711,13 @@ void Foam::meshTools::constrainDirection(const polyMesh& mesh, vector& d)
 }
 
 
-void Foam::meshTools::constrainDirection(const polyMesh& mesh, vectorField& d)
+void Foam::meshTools::constrainDirection
+(
+    const polyMesh& mesh,
+    const Vector<label>& dirs,
+    vectorField& d
+)
 {
-    const Vector<label>& dirs = mesh.geometricD();
-
     bool isConstrained = false;
     for (direction cmpt=0; cmpt<vector::nComponents; cmpt++)
     {
@@ -857,7 +869,7 @@ Foam::label Foam::meshTools::cutDirToEdge
                 doneEdges.insert(e2);
                 doneEdges.insert(e3);
             }
-        }       
+        }
     }
 
     forAll(cEdges, cEdgeI)
diff --git a/src/meshTools/meshTools/meshTools.H b/src/meshTools/meshTools/meshTools.H
index 3710d5af06250dc654465ebcba5bb47697f13465..0bd033b8893dbbbf4a412a31710762d77f806010 100644
--- a/src/meshTools/meshTools/meshTools.H
+++ b/src/meshTools/meshTools/meshTools.H
@@ -215,7 +215,7 @@ namespace meshTools
             const label vertI
         );
 
-        //- Return face on cell using edgeI but not faceI. Throws error 
+        //- Return face on cell using edgeI but not faceI. Throws error
         //  if none found.
         label otherFace
         (
@@ -225,7 +225,7 @@ namespace meshTools
             const label edgeI
         );
 
-        //- Return cell on other side of face. Throws error 
+        //- Return cell on other side of face. Throws error
         //  if face not internal.
         label otherCell
         (
@@ -249,14 +249,32 @@ namespace meshTools
     // Constraints on position
 
         //- Set the constrained components of position to mesh centre
-        void constrainToMeshCentre(const polyMesh&, point&);
-        void constrainToMeshCentre(const polyMesh&, pointField&);
+        void constrainToMeshCentre
+        (
+            const polyMesh& mesh,
+            point& pt
+        );
+        void constrainToMeshCentre
+        (
+            const polyMesh& mesh,
+            pointField& pt
+        );
 
         //- Set the constrained components of directions/velocity to zero
-        void constrainDirection(const polyMesh&, vector&);
-        void constrainDirection(const polyMesh&, vectorField&);
+        void constrainDirection
+        (
+            const polyMesh& mesh,
+            const Vector<label>& dirs,
+            vector& d
+        );
+        void constrainDirection
+        (
+            const polyMesh& mesh,
+            const Vector<label>& dirs,
+            vectorField& d
+        );
+
 
-    
     // Hex only functionality.
 
         //- Given edge on hex find other 'parallel', non-connected edges.
@@ -287,7 +305,7 @@ namespace meshTools
             const label cellI,
             const vector& cutDir
         );
-    
+
 } // End namespace meshTools
 
 
diff --git a/src/meshTools/searchableSurface/distributedTriSurfaceMesh.H b/src/meshTools/searchableSurface/distributedTriSurfaceMesh.H
index 4d5f7dfd173edd6ccb3c559221de0564d46edc50..dba72d2abf4b1491be861f6e5dc825533d9b1427 100644
--- a/src/meshTools/searchableSurface/distributedTriSurfaceMesh.H
+++ b/src/meshTools/searchableSurface/distributedTriSurfaceMesh.H
@@ -354,8 +354,7 @@ public:
             //- Range of global indices that can be returned.
             virtual label globalSize() const
             {
-                const labelList& offsets = globalTris().offsets();
-                return offsets[offsets.size()-1];
+                return globalTris().size();
             }
 
             virtual void findNearest
diff --git a/src/meshTools/searchableSurface/searchableBox.C b/src/meshTools/searchableSurface/searchableBox.C
index cb9ca7e4426cbc0397baf64d7188f2f9f5e1213e..8b4c0f5c76c5c8abfd0b0ab5f432e268766769a8 100644
--- a/src/meshTools/searchableSurface/searchableBox.C
+++ b/src/meshTools/searchableSurface/searchableBox.C
@@ -170,7 +170,20 @@ Foam::searchableBox::searchableBox
 :
     searchableSurface(io),
     treeBoundBox(bb)
-{}
+{
+    if (!contains(midpoint()))
+    {
+        FatalErrorIn
+        (
+            "Foam::searchableBox::searchableBox\n"
+            "(\n"
+            "    const IOobject& io,\n"
+            "    const treeBoundBox& bb\n"
+            ")\n"
+        )   << "Illegal bounding box specification : "
+            << static_cast<const treeBoundBox>(*this) << exit(FatalError);
+    }
+}
 
 
 Foam::searchableBox::searchableBox
@@ -181,7 +194,20 @@ Foam::searchableBox::searchableBox
 :
     searchableSurface(io),
     treeBoundBox(dict.lookup("min"), dict.lookup("max"))
-{}
+{
+    if (!contains(midpoint()))
+    {
+        FatalErrorIn
+        (
+            "Foam::searchableBox::searchableBox\n"
+            "(\n"
+            "    const IOobject& io,\n"
+            "    const treeBoundBox& bb\n"
+            ")\n"
+        )   << "Illegal bounding box specification : "
+            << static_cast<const treeBoundBox>(*this) << exit(FatalError);
+    }
+}
 
 
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
diff --git a/src/meshTools/searchableSurface/searchableSurfaceCollection.C b/src/meshTools/searchableSurface/searchableSurfaceCollection.C
index 11b37bf97bba53761ebfe02e5e51016dfbd58435..306e78df25fd8242892b219ae4a9e63daf633be0 100644
--- a/src/meshTools/searchableSurface/searchableSurfaceCollection.C
+++ b/src/meshTools/searchableSurface/searchableSurfaceCollection.C
@@ -36,7 +36,12 @@ namespace Foam
 {
 
 defineTypeNameAndDebug(searchableSurfaceCollection, 0);
-addToRunTimeSelectionTable(searchableSurface, searchableSurfaceCollection, dict);
+addToRunTimeSelectionTable
+(
+    searchableSurface,
+    searchableSurfaceCollection,
+    dict
+);
 
 }
 
@@ -63,15 +68,17 @@ void Foam::searchableSurfaceCollection::findNearest
 
     forAll(subGeom_, surfI)
     {
-        // Transform then divide
-        tmp<pointField> localSamples = cmptDivide
+        subGeom_[surfI].findNearest
         (
-            transform_[surfI].localPosition(samples),
-            scale_[surfI]
+            cmptDivide  // Transform then divide
+            (
+                transform_[surfI].localPosition(samples),
+                scale_[surfI]
+            ),
+            localMinDistSqr,
+            hitInfo
         );
 
-        subGeom_[surfI].findNearest(localSamples, localMinDistSqr, hitInfo);
-
         forAll(hitInfo, pointI)
         {
             if (hitInfo[pointI].hit())
@@ -115,7 +122,8 @@ Foam::searchableSurfaceCollection::searchableSurfaceCollection
     instance_(dict.size()),
     scale_(dict.size()),
     transform_(dict.size()),
-    subGeom_(dict.size())
+    subGeom_(dict.size()),
+    mergeSubRegions_(dict.lookup("mergeSubRegions"))
 {
     Info<< "SearchableCollection : " << name() << endl;
 
@@ -181,12 +189,19 @@ const Foam::wordList& Foam::searchableSurfaceCollection::regions() const
         {
             regionOffset_[surfI] = allRegions.size();
 
-            const wordList& subRegions = subGeom_[surfI].regions();
-
-            forAll(subRegions, i)
+            if (mergeSubRegions_)
             {
-                //allRegions.append(subRegions[i] + "_" + Foam::name(surfI));
-                allRegions.append(instance_[surfI] + "_" + subRegions[i]);
+                // Single name regardless how many regions subsurface has
+                allRegions.append(instance_[surfI] + "_" + Foam::name(surfI));
+            }
+            else
+            {
+                const wordList& subRegions = subGeom_[surfI].regions();
+
+                forAll(subRegions, i)
+                {
+                    allRegions.append(instance_[surfI] + "_" + subRegions[i]);
+                }
             }
         }
         regions_.transfer(allRegions.shrink());
@@ -370,7 +385,15 @@ void Foam::searchableSurfaceCollection::getRegion
     {}
     else if (subGeom_.size() == 1)
     {
-        subGeom_[0].getRegion(info, region);
+        if (mergeSubRegions_)
+        {
+            region.setSize(info.size());
+            region = regionOffset_[0];
+        }
+        else
+        {
+            subGeom_[0].getRegion(info, region);
+        }
     }
     else
     {
@@ -429,15 +452,25 @@ void Foam::searchableSurfaceCollection::getRegion
             // Collect points from my surface
             labelList indices(findIndices(nearestSurf, surfI));
 
-            labelList surfRegion;
-            subGeom_[surfI].getRegion
-            (
-                UIndirectList<pointIndexHit>(info, indices),
-                surfRegion
-            );
-            forAll(indices, i)
+            if (mergeSubRegions_)
             {
-                region[indices[i]] = regionOffset_[surfI] + surfRegion[i];
+                forAll(indices, i)
+                {
+                    region[indices[i]] = regionOffset_[surfI];
+                }
+            }
+            else
+            {
+                labelList surfRegion;
+                subGeom_[surfI].getRegion
+                (
+                    UIndirectList<pointIndexHit>(info, indices),
+                    surfRegion
+                );
+                forAll(indices, i)
+                {
+                    region[indices[i]] = regionOffset_[surfI] + surfRegion[i];
+                }
             }
         }
     }
diff --git a/src/meshTools/searchableSurface/searchableSurfaceCollection.H b/src/meshTools/searchableSurface/searchableSurfaceCollection.H
index 9c39923747f9abcb1c21b4b4ce3993086ba14773..dd4c5fdce215c5ccf3743a97541f9075114c668e 100644
--- a/src/meshTools/searchableSurface/searchableSurfaceCollection.H
+++ b/src/meshTools/searchableSurface/searchableSurfaceCollection.H
@@ -26,7 +26,8 @@ Class
     Foam::searchableSurfaceCollection
 
 Description
-    Union of transformed searchableSurfaces
+    Set of transformed searchableSurfaces. Does not do boolean operations.
+    So when meshing might find parts 'inside'.
 
 SourceFiles
     searchableSurfaceCollection.C
@@ -40,6 +41,7 @@ SourceFiles
 #include "treeBoundBox.H"
 #include "coordinateSystem.H"
 #include "UPtrList.H"
+#include "Switch.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -73,6 +75,8 @@ private:
 
             UPtrList<searchableSurface> subGeom_;
 
+            Switch mergeSubRegions_;
+
         //- Region names
         mutable wordList regions_;
         //- From individual regions to collection regions
diff --git a/src/meshTools/sets/cellSources/faceZoneToCell/faceZoneToCell.C b/src/meshTools/sets/cellSources/faceZoneToCell/faceZoneToCell.C
new file mode 100644
index 0000000000000000000000000000000000000000..526620fe14746be56d0e433274be25edb0b5d8cd
--- /dev/null
+++ b/src/meshTools/sets/cellSources/faceZoneToCell/faceZoneToCell.C
@@ -0,0 +1,185 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "faceZoneToCell.H"
+#include "polyMesh.H"
+
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+defineTypeNameAndDebug(faceZoneToCell, 0);
+
+addToRunTimeSelectionTable(topoSetSource, faceZoneToCell, word);
+
+addToRunTimeSelectionTable(topoSetSource, faceZoneToCell, istream);
+
+}
+
+
+Foam::topoSetSource::addToUsageTable Foam::faceZoneToCell::usage_
+(
+    faceZoneToCell::typeName,
+    "\n    Usage: faceZoneToCell zone master|slave\n\n"
+    "    Select master or slave side of the faceZone."
+    " Note:accepts wildcards for zone.\n\n"
+);
+
+
+template<>
+const char* Foam::NamedEnum<Foam::faceZoneToCell::faceAction, 2>::names[] =
+{
+    "master",
+    "slave"
+};
+
+
+const Foam::NamedEnum<Foam::faceZoneToCell::faceAction, 2>
+    Foam::faceZoneToCell::faceActionNames_;
+
+
+// * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
+
+void Foam::faceZoneToCell::combine(topoSet& set, const bool add) const
+{
+    bool hasMatched = false;
+
+    forAll(mesh_.faceZones(), i)
+    {
+        const faceZone& zone = mesh_.faceZones()[i];
+
+        if (zoneName_.match(zone.name()))
+        {
+            const labelList& cellLabels =
+            (
+                option_ == MASTER
+              ? zone.masterCells()
+              : zone.slaveCells()
+            );
+
+            Info<< "    Found matching zone " << zone.name()
+                << " with " << cellLabels.size() << " cells on selected side."
+                << endl;
+
+            hasMatched = true;
+
+            forAll(cellLabels, i)
+            {
+                // Only do active cells
+                if (cellLabels[i] < mesh_.nCells())
+                {
+                    addOrDelete(set, cellLabels[i], add);
+                }
+            }
+        }
+    }
+
+    if (!hasMatched)
+    {
+        WarningIn("faceZoneToCell::combine(topoSet&, const bool)")
+            << "Cannot find any faceZone named " << zoneName_ << endl
+            << "Valid names are " << mesh_.faceZones().names() << endl;
+    }
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+// Construct from components
+Foam::faceZoneToCell::faceZoneToCell
+(
+    const polyMesh& mesh,
+    const word& zoneName,
+    const faceAction option
+)
+:
+    topoSetSource(mesh),
+    zoneName_(zoneName),
+    option_(option)
+{}
+
+
+// Construct from dictionary
+Foam::faceZoneToCell::faceZoneToCell
+(
+    const polyMesh& mesh,
+    const dictionary& dict
+)
+:
+    topoSetSource(mesh),
+    zoneName_(dict.lookup("name")),
+    option_(faceActionNames_.read(dict.lookup("option")))
+{}
+
+
+// Construct from Istream
+Foam::faceZoneToCell::faceZoneToCell
+(
+    const polyMesh& mesh,
+    Istream& is
+)
+:
+    topoSetSource(mesh),
+    zoneName_(checkIs(is)),
+    option_(faceActionNames_.read(checkIs(is)))
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::faceZoneToCell::~faceZoneToCell()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+void Foam::faceZoneToCell::applyToSet
+(
+    const topoSetSource::setAction action,
+    topoSet& set
+) const
+{
+    if ((action == topoSetSource::NEW) || (action == topoSetSource::ADD))
+    {
+        Info<< "    Adding all " << faceActionNames_[option_]
+            << " cells of faceZone " << zoneName_ << " ..." << endl;
+
+        combine(set, true);
+    }
+    else if (action == topoSetSource::DELETE)
+    {
+        Info<< "    Removing all " << faceActionNames_[option_]
+            << " cells of faceZone " << zoneName_ << " ..." << endl;
+
+        combine(set, false);
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/src/meshTools/sets/cellSources/faceZoneToCell/faceZoneToCell.H b/src/meshTools/sets/cellSources/faceZoneToCell/faceZoneToCell.H
new file mode 100644
index 0000000000000000000000000000000000000000..b09c58399fcca136725ec959690542ff25221318
--- /dev/null
+++ b/src/meshTools/sets/cellSources/faceZoneToCell/faceZoneToCell.H
@@ -0,0 +1,138 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::faceZoneToCell
+
+Description
+    A topoSetSource to select cells based on side of faceZone.
+
+SourceFiles
+    faceZoneToCell.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef faceZoneToCell_H
+#define faceZoneToCell_H
+
+#include "topoSetSource.H"
+#include "wordRe.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+                        Class faceZoneToCell Declaration
+\*---------------------------------------------------------------------------*/
+
+class faceZoneToCell
+:
+    public topoSetSource
+{
+public:
+        //- Enumeration defining the valid options
+        enum faceAction
+        {
+            MASTER,
+            SLAVE
+        };
+
+private:
+
+    // Private data
+
+        static const NamedEnum<faceAction, 2> faceActionNames_;
+
+        //- Add usage string
+        static addToUsageTable usage_;
+
+        //- Name/regular expression of faceZone
+        wordRe zoneName_;
+
+        //- Option
+        faceAction option_;
+
+
+    // Private Member Functions
+
+        void combine(topoSet& set, const bool add) const;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("faceZoneToCell");
+
+    // Constructors
+
+        //- Construct from components
+        faceZoneToCell
+        (
+            const polyMesh& mesh,
+            const word& zoneName,
+            const faceAction option
+        );
+
+        //- Construct from dictionary
+        faceZoneToCell
+        (
+            const polyMesh& mesh,
+            const dictionary& dict
+        );
+
+        //- Construct from Istream
+        faceZoneToCell
+        (
+            const polyMesh& mesh,
+            Istream&
+        );
+
+
+    // Destructor
+
+        virtual ~faceZoneToCell();
+
+
+    // Member Functions
+
+        virtual void applyToSet
+        (
+            const topoSetSource::setAction action,
+            topoSet&
+        ) const;
+
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/meshTools/sets/cellSources/zoneToCell/zoneToCell.C b/src/meshTools/sets/cellSources/zoneToCell/zoneToCell.C
index 0dcd1e0ffb8b733911aebf50cdaab88e67a0c0f9..14b6deb7f37771b062c29e8d635f7feae33448aa 100644
--- a/src/meshTools/sets/cellSources/zoneToCell/zoneToCell.C
+++ b/src/meshTools/sets/cellSources/zoneToCell/zoneToCell.C
@@ -47,7 +47,8 @@ Foam::topoSetSource::addToUsageTable Foam::zoneToCell::usage_
 (
     zoneToCell::typeName,
     "\n    Usage: zoneToCell zone\n\n"
-    "    Select all cells in the cellZone\n\n"
+    "    Select all cells in the cellZone."
+    " Note:accepts wildcards for zone.\n\n"
 );
 
 
diff --git a/src/meshTools/sets/faceSources/patchToFace/patchToFace.C b/src/meshTools/sets/faceSources/patchToFace/patchToFace.C
index 9bcf49690ffc285ae3db1568476ba31edc0e9353..000db639a96180f2e24ada7aa4f08b4a621685e4 100644
--- a/src/meshTools/sets/faceSources/patchToFace/patchToFace.C
+++ b/src/meshTools/sets/faceSources/patchToFace/patchToFace.C
@@ -49,7 +49,7 @@ Foam::topoSetSource::addToUsageTable Foam::patchToFace::usage_
 (
     patchToFace::typeName,
     "\n    Usage: patchToFace patch\n\n"
-    "    Select all faces in the patch\n\n"
+    "    Select all faces in the patch. Note:accepts wildcards for patch.\n\n"
 );
 
 
diff --git a/src/meshTools/sets/faceSources/zoneToFace/zoneToFace.C b/src/meshTools/sets/faceSources/zoneToFace/zoneToFace.C
index 12cbab560d68ff36281aa34ca6bead1a4b8926f9..465632f2b1091fcdf774b99a0eb076ab16600d15 100644
--- a/src/meshTools/sets/faceSources/zoneToFace/zoneToFace.C
+++ b/src/meshTools/sets/faceSources/zoneToFace/zoneToFace.C
@@ -47,7 +47,8 @@ Foam::topoSetSource::addToUsageTable Foam::zoneToFace::usage_
 (
     zoneToFace::typeName,
     "\n    Usage: zoneToFace zone\n\n"
-    "    Select all faces in the faceZone\n\n"
+    "    Select all faces in the faceZone."
+    " Note:accepts wildcards for zone.\n\n"
 );
 
 
diff --git a/src/meshTools/sets/pointSources/zoneToPoint/zoneToPoint.C b/src/meshTools/sets/pointSources/zoneToPoint/zoneToPoint.C
index 4b5148c558c8d0915109d9e87591076d705db5fc..0558093afa54d58b53c6c6eed6435a7dba6f6798 100644
--- a/src/meshTools/sets/pointSources/zoneToPoint/zoneToPoint.C
+++ b/src/meshTools/sets/pointSources/zoneToPoint/zoneToPoint.C
@@ -47,7 +47,8 @@ Foam::topoSetSource::addToUsageTable Foam::zoneToPoint::usage_
 (
     zoneToPoint::typeName,
     "\n    Usage: zoneToPoint zone\n\n"
-    "    Select all points in the pointZone\n\n"
+    "    Select all points in the pointZone."
+    " Note:accepts wildcards for zone.\n\n"
 );
 
 
diff --git a/src/postProcessing/functionObjects/Allwmake b/src/postProcessing/functionObjects/Allwmake
index 051f73227f574ad9d0be87941e07f54dd0c49337..6c642dfe7b6333d4e71ab8c22f4458da73294503 100755
--- a/src/postProcessing/functionObjects/Allwmake
+++ b/src/postProcessing/functionObjects/Allwmake
@@ -4,6 +4,7 @@ set -x
 
 wmake libso field
 wmake libso forces
+wmake libso IO
 wmake libso utilities
 wmake libso systemCall
 
diff --git a/src/postProcessing/functionObjects/IO/Make/files b/src/postProcessing/functionObjects/IO/Make/files
new file mode 100644
index 0000000000000000000000000000000000000000..a3517e560f1e3a3349b3dee8930ec12a8e420086
--- /dev/null
+++ b/src/postProcessing/functionObjects/IO/Make/files
@@ -0,0 +1,4 @@
+writeRegisteredObject/writeRegisteredObject.C
+writeRegisteredObject/writeRegisteredObjectFunctionObject.C
+
+LIB = $(FOAM_LIBBIN)/libIOFunctionObjects
diff --git a/src/postProcessing/functionObjects/IO/Make/options b/src/postProcessing/functionObjects/IO/Make/options
new file mode 100644
index 0000000000000000000000000000000000000000..5166bcc9e32f547f48a5f87c9c60d7210409967f
--- /dev/null
+++ b/src/postProcessing/functionObjects/IO/Make/options
@@ -0,0 +1,9 @@
+EXE_INC = \
+    -I$(LIB_SRC)/finiteVolume/lnInclude \
+    -I$(LIB_SRC)/meshTools/lnInclude \
+    -I$(LIB_SRC)/sampling/lnInclude
+
+LIB_LIBS = \
+    -lfiniteVolume \
+    -lmeshTools \
+    -lsampling
diff --git a/src/lagrangian/dieselSpray/sprayThermoTypes/sprayThermoTypes.H b/src/postProcessing/functionObjects/IO/writeRegisteredObject/IOwriteRegisteredObject.H
similarity index 78%
rename from src/lagrangian/dieselSpray/sprayThermoTypes/sprayThermoTypes.H
rename to src/postProcessing/functionObjects/IO/writeRegisteredObject/IOwriteRegisteredObject.H
index b52f690b5f88384469aea4b0c402217db41993a7..cb014395c95ecb15909e1c26aae0b9b0bf8f9e91 100644
--- a/src/lagrangian/dieselSpray/sprayThermoTypes/sprayThermoTypes.H
+++ b/src/postProcessing/functionObjects/IO/writeRegisteredObject/IOwriteRegisteredObject.H
@@ -23,30 +23,24 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Typedef
-    Foam::specieProperties
+    Foam::IOwriteRegisteredObject
 
 Description
-    Foam::specieProperties
+    Instance of the generic IOOutputFilter for writeRegisteredObject.
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef sprayThermoTypes_H
-#define sprayThermoTypes_H
+#ifndef IOwriteRegisteredObject_H
+#define IOwriteRegisteredObject_H
 
-#include "sutherlandTransport.H"
-#include "specieThermo.H"
-#include "janafThermo.H"
-#include "perfectGas.H"
+#include "writeRegisteredObject.H"
+#include "IOOutputFilter.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 namespace Foam
 {
-    typedef sutherlandTransport<specieThermo<janafThermo<perfectGas> > >
-        specieProperties;
-
-  // typedef sutherlandTransport<specieThermo<hConstThermo<perfectGas> > >
-  //    specieProperties;
+    typedef IOOutputFilter<writeRegisteredObject> IOwriteRegisteredObject;
 }
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/postProcessing/functionObjects/IO/writeRegisteredObject/writeRegisteredObject.C b/src/postProcessing/functionObjects/IO/writeRegisteredObject/writeRegisteredObject.C
new file mode 100644
index 0000000000000000000000000000000000000000..b5ad785ab164d7fb424ea8310066d415c372cf0f
--- /dev/null
+++ b/src/postProcessing/functionObjects/IO/writeRegisteredObject/writeRegisteredObject.C
@@ -0,0 +1,123 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "writeRegisteredObject.H"
+#include "dictionary.H"
+#include "Time.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    defineTypeNameAndDebug(writeRegisteredObject, 0);
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::writeRegisteredObject::writeRegisteredObject
+(
+    const word& name,
+    const objectRegistry& obr,
+    const dictionary& dict,
+    const bool loadFromFiles
+)
+:
+    name_(name),
+    obr_(obr),
+    active_(true),
+    objectNames_()
+{
+    read(dict);
+}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::writeRegisteredObject::~writeRegisteredObject()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+void Foam::writeRegisteredObject::read(const dictionary& dict)
+{
+    if (active_)
+    {
+        dict.lookup("objectNames") >> objectNames_;
+
+        forAll(objectNames_, i)
+        {
+            if (obr_.foundObject<regIOobject>(objectNames_[i]))
+            {
+                regIOobject& obj =
+                    const_cast<regIOobject&>
+                    (
+                        obr_.lookupObject<regIOobject>(objectNames_[i])
+                    );
+                obj.writeOpt() = IOobject::NO_WRITE;
+            }
+            else
+            {
+                FatalErrorIn
+                (
+                    "Foam::writeRegisteredObject::read(const dictionary&)"
+                )   << "Object " << objectNames_[i] << " not found in "
+                    << "database. Available objects are:" << nl << obr_.toc()
+                    << nl << exit(FatalError);
+            }
+        }
+    }
+}
+
+
+void Foam::writeRegisteredObject::execute()
+{
+    // Do nothing - only valid on write
+}
+
+
+void Foam::writeRegisteredObject::end()
+{
+    // Do nothing - only valid on write
+}
+
+
+void Foam::writeRegisteredObject::write()
+{
+    if (active_)
+    {
+        forAll(objectNames_, i)
+        {
+            const regIOobject& obj =
+                obr_.lookupObject<regIOobject>(objectNames_[i]);
+            obj.write();
+        }
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/src/postProcessing/functionObjects/IO/writeRegisteredObject/writeRegisteredObject.H b/src/postProcessing/functionObjects/IO/writeRegisteredObject/writeRegisteredObject.H
new file mode 100644
index 0000000000000000000000000000000000000000..6cfeaa5e0b88de7c7690cd1724f28a43f6bad72b
--- /dev/null
+++ b/src/postProcessing/functionObjects/IO/writeRegisteredObject/writeRegisteredObject.H
@@ -0,0 +1,150 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::writeRegisteredObject
+
+Description
+    Takes over the writing of registered IO objects
+
+SourceFiles
+    writeRegisteredObject.C
+    IOwriteRegisteredObject.H
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef writeRegisteredObject_H
+#define writeRegisteredObject_H
+
+#include "pointFieldFwd.H"
+#include "wordList.H"
+#include "runTimeSelectionTables.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+// Forward declaration of classes
+class objectRegistry;
+class dictionary;
+class mapPolyMesh;
+
+/*---------------------------------------------------------------------------*\
+                   Class writeRegisteredObject Declaration
+\*---------------------------------------------------------------------------*/
+
+class writeRegisteredObject
+{
+protected:
+
+    // Private data
+
+        //- Name of this set of writeRegisteredObject
+        word name_;
+
+        const objectRegistry& obr_;
+
+        //- On/off switch
+        bool active_;
+
+
+        // Read from dictionary
+
+            //- Names of objects to control
+            wordList objectNames_;
+
+
+    // Private Member Functions
+
+
+        //- Disallow default bitwise copy construct
+        writeRegisteredObject(const writeRegisteredObject&);
+
+        //- Disallow default bitwise assignment
+        void operator=(const writeRegisteredObject&);
+
+
+public:
+
+    //- Runtime type information
+    TypeName("writeRegisteredObject");
+
+
+    // Constructors
+
+        //- Construct for given objectRegistry and dictionary.
+        //  Allow the possibility to load fields from files
+        writeRegisteredObject
+        (
+            const word& name,
+            const objectRegistry&,
+            const dictionary&,
+            const bool loadFromFiles = false
+        );
+
+
+    //- Destructor
+    virtual ~writeRegisteredObject();
+
+
+    // Member Functions
+
+        //- Return name of the writeRegisteredObject
+        virtual const word& name() const
+        {
+            return name_;
+        }
+
+        //- Read the writeRegisteredObject data
+        virtual void read(const dictionary&);
+
+        //- Execute, currently does nothing
+        virtual void execute();
+
+        //- Execute at the final time-loop, currently does nothing
+        virtual void end();
+
+        //- Write the writeRegisteredObject
+        virtual void write();
+
+        //- Update for changes of mesh
+        virtual void updateMesh(const mapPolyMesh&)
+        {}
+
+        //- Update for changes of mesh
+        virtual void movePoints(const pointField&)
+        {}
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/postProcessing/functionObjects/IO/writeRegisteredObject/writeRegisteredObjectFunctionObject.C b/src/postProcessing/functionObjects/IO/writeRegisteredObject/writeRegisteredObjectFunctionObject.C
new file mode 100644
index 0000000000000000000000000000000000000000..9b4c324c9d08ae1d1a5d0da5df32bed853d543a0
--- /dev/null
+++ b/src/postProcessing/functionObjects/IO/writeRegisteredObject/writeRegisteredObjectFunctionObject.C
@@ -0,0 +1,47 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "writeRegisteredObjectFunctionObject.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    defineNamedTemplateTypeNameAndDebug
+    (
+        writeRegisteredObjectFunctionObject,
+        0
+    );
+
+    addToRunTimeSelectionTable
+    (
+        functionObject,
+        writeRegisteredObjectFunctionObject,
+        dictionary
+    );
+}
+
+// ************************************************************************* //
diff --git a/src/postProcessing/functionObjects/IO/writeRegisteredObject/writeRegisteredObjectFunctionObject.H b/src/postProcessing/functionObjects/IO/writeRegisteredObject/writeRegisteredObjectFunctionObject.H
new file mode 100644
index 0000000000000000000000000000000000000000..284aa6c17a77ad26a05c9af0c06d6117f6520fe4
--- /dev/null
+++ b/src/postProcessing/functionObjects/IO/writeRegisteredObject/writeRegisteredObjectFunctionObject.H
@@ -0,0 +1,55 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Typedef
+    Foam::writeRegisteredObjectFunctionObject
+
+Description
+    FunctionObject wrapper around writeRegisteredObject to allow them to be
+    created via the functions list within controlDict.
+
+SourceFiles
+    writeRegisteredObjectFunctionObject.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef writeRegisteredObjectFunctionObject_H
+#define writeRegisteredObjectFunctionObject_H
+
+#include "writeRegisteredObject.H"
+#include "OutputFilterFunctionObject.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    typedef OutputFilterFunctionObject<writeRegisteredObject>
+        writeRegisteredObjectFunctionObject;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/postProcessing/functionObjects/field/fieldMinMax/IOfieldMinMax.H b/src/postProcessing/functionObjects/field/fieldMinMax/IOfieldMinMax.H
index 6215d670ca4c15b329e6f186762d1610e56d58f6..90b2d1484018d6e689dcf82819d21d91583af49f 100644
--- a/src/postProcessing/functionObjects/field/fieldMinMax/IOfieldMinMax.H
+++ b/src/postProcessing/functionObjects/field/fieldMinMax/IOfieldMinMax.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/postProcessing/functionObjects/field/fieldMinMax/fieldMinMax.C b/src/postProcessing/functionObjects/field/fieldMinMax/fieldMinMax.C
index 509e483f2b79c0b07b7d928a998f9d1b8b67f1fe..ec77782df4e7100291150b701ecb5bafb280bc0b 100644
--- a/src/postProcessing/functionObjects/field/fieldMinMax/fieldMinMax.C
+++ b/src/postProcessing/functionObjects/field/fieldMinMax/fieldMinMax.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/postProcessing/functionObjects/field/fieldMinMax/fieldMinMax.H b/src/postProcessing/functionObjects/field/fieldMinMax/fieldMinMax.H
index 812359f71caa3edffcf8b43629c58db520f05823..8c8a3aaf479a3a788b43fd07d9ae1af829fa0f86 100644
--- a/src/postProcessing/functionObjects/field/fieldMinMax/fieldMinMax.H
+++ b/src/postProcessing/functionObjects/field/fieldMinMax/fieldMinMax.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/postProcessing/functionObjects/field/fieldMinMax/fieldMinMaxFunctionObject.C b/src/postProcessing/functionObjects/field/fieldMinMax/fieldMinMaxFunctionObject.C
index 384388833fe64bba0bdf69f0e59ff42b72ed2906..ad124b6e7b0f6254ee8a9b7b79e3fd546d0ed236 100644
--- a/src/postProcessing/functionObjects/field/fieldMinMax/fieldMinMaxFunctionObject.C
+++ b/src/postProcessing/functionObjects/field/fieldMinMax/fieldMinMaxFunctionObject.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/postProcessing/functionObjects/field/fieldMinMax/fieldMinMaxFunctionObject.H b/src/postProcessing/functionObjects/field/fieldMinMax/fieldMinMaxFunctionObject.H
index 7d9240ab7ecdd9e857d6ed24c64a693368477c2e..a5af27af513d1a0de44cd25052b0aae687ece873 100644
--- a/src/postProcessing/functionObjects/field/fieldMinMax/fieldMinMaxFunctionObject.H
+++ b/src/postProcessing/functionObjects/field/fieldMinMax/fieldMinMaxFunctionObject.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/postProcessing/functionObjects/field/fieldMinMax/fieldMinMaxTemplates.C b/src/postProcessing/functionObjects/field/fieldMinMax/fieldMinMaxTemplates.C
index 06d6bd585e447b36db17f970c12fdd62c35820d4..25daf62dd6ee73ecaacf41d0a340eb7d30332327 100644
--- a/src/postProcessing/functionObjects/field/fieldMinMax/fieldMinMaxTemplates.C
+++ b/src/postProcessing/functionObjects/field/fieldMinMax/fieldMinMaxTemplates.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/postProcessing/functionObjects/systemCall/IOsystemCall.H b/src/postProcessing/functionObjects/systemCall/IOsystemCall.H
index beb33d593c6f0cc3515952c5bb623821c9a60aac..827569da14d636245e534d097737f4e31d60e92c 100644
--- a/src/postProcessing/functionObjects/systemCall/IOsystemCall.H
+++ b/src/postProcessing/functionObjects/systemCall/IOsystemCall.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/postProcessing/functionObjects/systemCall/systemCall.C b/src/postProcessing/functionObjects/systemCall/systemCall.C
index 6fdf84d70c6adf76c53cb729e58d4667e38b9379..44f7948c80a1bdd00a524b4b7e69a1058a7f5cf7 100644
--- a/src/postProcessing/functionObjects/systemCall/systemCall.C
+++ b/src/postProcessing/functionObjects/systemCall/systemCall.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/postProcessing/functionObjects/systemCall/systemCall.H b/src/postProcessing/functionObjects/systemCall/systemCall.H
index 6dc8fed5294e6f3d7a8b58f17208581cb09437d3..042ee0fc4d8667749314e03cea856dbff25c6016 100644
--- a/src/postProcessing/functionObjects/systemCall/systemCall.H
+++ b/src/postProcessing/functionObjects/systemCall/systemCall.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/postProcessing/functionObjects/systemCall/systemCallFunctionObject.C b/src/postProcessing/functionObjects/systemCall/systemCallFunctionObject.C
index 096b43ca1cafc3bec63e72550886410c42b56cc6..196ed81e5cc1213b0b234b92d66d5a9899974014 100644
--- a/src/postProcessing/functionObjects/systemCall/systemCallFunctionObject.C
+++ b/src/postProcessing/functionObjects/systemCall/systemCallFunctionObject.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/postProcessing/functionObjects/systemCall/systemCallFunctionObject.H b/src/postProcessing/functionObjects/systemCall/systemCallFunctionObject.H
index 875c78970bf928d6b05c43647f6df51aa12f76e6..ad4f429cabd8feb81cfca8de8748e99b04dd2fd6 100644
--- a/src/postProcessing/functionObjects/systemCall/systemCallFunctionObject.H
+++ b/src/postProcessing/functionObjects/systemCall/systemCallFunctionObject.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/postProcessing/functionObjects/utilities/dsmcFields/IOdsmcFields.C b/src/postProcessing/functionObjects/utilities/dsmcFields/IOdsmcFields.C
index 32627acb3c5ceb3e2873fe858317d3e8af80114d..01a2d6b9ffb49996efb43e7d91d8d8964078ac8e 100644
--- a/src/postProcessing/functionObjects/utilities/dsmcFields/IOdsmcFields.C
+++ b/src/postProcessing/functionObjects/utilities/dsmcFields/IOdsmcFields.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/postProcessing/functionObjects/utilities/dsmcFields/dsmcFields.C b/src/postProcessing/functionObjects/utilities/dsmcFields/dsmcFields.C
index 273c88f3699822572bce150ad303b3224f5574ce..8957dee17cda6ce696f191b04e79c4347f020994 100644
--- a/src/postProcessing/functionObjects/utilities/dsmcFields/dsmcFields.C
+++ b/src/postProcessing/functionObjects/utilities/dsmcFields/dsmcFields.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/postProcessing/functionObjects/utilities/dsmcFields/dsmcFields.H b/src/postProcessing/functionObjects/utilities/dsmcFields/dsmcFields.H
index b53dda6700040633582cdc054b92eb4aee4ee5ab..3e6b33c0d37ed766bd83480e540cc583d58508e9 100644
--- a/src/postProcessing/functionObjects/utilities/dsmcFields/dsmcFields.H
+++ b/src/postProcessing/functionObjects/utilities/dsmcFields/dsmcFields.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/postProcessing/functionObjects/utilities/dsmcFields/dsmcFieldsFunctionObject.C b/src/postProcessing/functionObjects/utilities/dsmcFields/dsmcFieldsFunctionObject.C
index cd5324f25b103be5086875e4863677e053ce95ee..b2bb31b828561462d662a41ec9acad29f28abf44 100644
--- a/src/postProcessing/functionObjects/utilities/dsmcFields/dsmcFieldsFunctionObject.C
+++ b/src/postProcessing/functionObjects/utilities/dsmcFields/dsmcFieldsFunctionObject.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/postProcessing/functionObjects/utilities/dsmcFields/dsmcFieldsFunctionObject.H b/src/postProcessing/functionObjects/utilities/dsmcFields/dsmcFieldsFunctionObject.H
index cf34cdaa2e4d9a2ef03fa1fbee6644c4bf63ea1a..758626798c8563a706959d890368ba74f44e9dd3 100644
--- a/src/postProcessing/functionObjects/utilities/dsmcFields/dsmcFieldsFunctionObject.H
+++ b/src/postProcessing/functionObjects/utilities/dsmcFields/dsmcFieldsFunctionObject.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/postProcessing/functionObjects/utilities/staticPressure/IOstaticPressure.H b/src/postProcessing/functionObjects/utilities/staticPressure/IOstaticPressure.H
index 8409c7f103b4c0d319d74acdedc5f8a85c763c53..524e44514445e362e801528435777b68211c257f 100644
--- a/src/postProcessing/functionObjects/utilities/staticPressure/IOstaticPressure.H
+++ b/src/postProcessing/functionObjects/utilities/staticPressure/IOstaticPressure.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/postProcessing/functionObjects/utilities/staticPressure/staticPressure.C b/src/postProcessing/functionObjects/utilities/staticPressure/staticPressure.C
index 9ca4f715df0025bee3e4e2c11c4e7f5cd7796d0a..b746987f3c17ed9ad2789622cc0ea2c56c29fd0b 100644
--- a/src/postProcessing/functionObjects/utilities/staticPressure/staticPressure.C
+++ b/src/postProcessing/functionObjects/utilities/staticPressure/staticPressure.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -127,11 +127,11 @@ void Foam::staticPressure::write()
     {
         const volScalarField& p = obr_.lookupObject<volScalarField>(pName_);
 
-        volScalarField pDyn
+        volScalarField pStatic
         (
             IOobject
             (
-                "pDyn",
+                "pStatic",
                 obr_.time().timeName(),
                 obr_,
                 IOobject::NO_READ
@@ -139,7 +139,7 @@ void Foam::staticPressure::write()
             dimensionedScalar("rho", dimDensity, rho_)*p
         );
 
-        pDyn.write();
+        pStatic.write();
     }
 }
 
diff --git a/src/postProcessing/functionObjects/utilities/staticPressure/staticPressure.H b/src/postProcessing/functionObjects/utilities/staticPressure/staticPressure.H
index 0a7be2c6204bf045fd6f951e6cce23f33e8712f2..71c4fd3516b5d9947dbe70ac694b12de1f7258f0 100644
--- a/src/postProcessing/functionObjects/utilities/staticPressure/staticPressure.H
+++ b/src/postProcessing/functionObjects/utilities/staticPressure/staticPressure.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/postProcessing/functionObjects/utilities/staticPressure/staticPressureFunctionObject.C b/src/postProcessing/functionObjects/utilities/staticPressure/staticPressureFunctionObject.C
index d84c802a4a8825cbaf49cd978f10b077fbf24a33..9d13a5739e03b9e8adf1fd36e79813d7aeb28d62 100644
--- a/src/postProcessing/functionObjects/utilities/staticPressure/staticPressureFunctionObject.C
+++ b/src/postProcessing/functionObjects/utilities/staticPressure/staticPressureFunctionObject.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/postProcessing/functionObjects/utilities/staticPressure/staticPressureFunctionObject.H b/src/postProcessing/functionObjects/utilities/staticPressure/staticPressureFunctionObject.H
index 40f425d4b1892b8f09aa0edb442a44d2fae72614..0ddb184d22edc949f28fb4cdcc79c02d1bfc3364 100644
--- a/src/postProcessing/functionObjects/utilities/staticPressure/staticPressureFunctionObject.H
+++ b/src/postProcessing/functionObjects/utilities/staticPressure/staticPressureFunctionObject.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/postProcessing/functionObjects/zones/Make/files b/src/postProcessing/functionObjects/zones/Make/files
new file mode 100644
index 0000000000000000000000000000000000000000..90e33f75241df48dde2b4749d723aff3fc660b82
--- /dev/null
+++ b/src/postProcessing/functionObjects/zones/Make/files
@@ -0,0 +1,4 @@
+faceZoneIntegration/faceZonesIntegration.C
+faceZoneIntegration/faceZonesIntegrationFunctionObject.C
+
+LIB = $(FOAM_LIBBIN)/libzoneFunctionObjects
diff --git a/src/postProcessing/functionObjects/zones/Make/options b/src/postProcessing/functionObjects/zones/Make/options
new file mode 100644
index 0000000000000000000000000000000000000000..5166bcc9e32f547f48a5f87c9c60d7210409967f
--- /dev/null
+++ b/src/postProcessing/functionObjects/zones/Make/options
@@ -0,0 +1,9 @@
+EXE_INC = \
+    -I$(LIB_SRC)/finiteVolume/lnInclude \
+    -I$(LIB_SRC)/meshTools/lnInclude \
+    -I$(LIB_SRC)/sampling/lnInclude
+
+LIB_LIBS = \
+    -lfiniteVolume \
+    -lmeshTools \
+    -lsampling
diff --git a/src/postProcessing/functionObjects/zones/faceZoneIntegration/IOfaceZonesIntegration.H b/src/postProcessing/functionObjects/zones/faceZoneIntegration/IOfaceZonesIntegration.H
new file mode 100644
index 0000000000000000000000000000000000000000..ef1ecbf0043aa34d098f0f2db829ee69e9c955fe
--- /dev/null
+++ b/src/postProcessing/functionObjects/zones/faceZoneIntegration/IOfaceZonesIntegration.H
@@ -0,0 +1,50 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Typedef
+    Foam::IOfaceZonesIntegration
+
+Description
+    Instance of the generic IOOutputFilter for faceZonesIntegration.
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef IOfaceZonesIntegration_H
+#define IOfaceZonesIntegration_H
+
+#include "faceZonesIntegration.H"
+#include "IOOutputFilter.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    typedef IOOutputFilter<faceZonesIntegration> IOfaceZonesIntegration;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/postProcessing/functionObjects/zones/faceZoneIntegration/faceZonesIntegration.C b/src/postProcessing/functionObjects/zones/faceZoneIntegration/faceZonesIntegration.C
new file mode 100644
index 0000000000000000000000000000000000000000..0b8314667c728839bc11e72eddc2149e94026fdd
--- /dev/null
+++ b/src/postProcessing/functionObjects/zones/faceZoneIntegration/faceZonesIntegration.C
@@ -0,0 +1,322 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "faceZonesIntegration.H"
+#include "volFields.H"
+#include "dictionary.H"
+#include "Time.H"
+#include "IOmanip.H"
+#include "ListListOps.H"
+#include "processorPolyPatch.H"
+#include "cyclicPolyPatch.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    defineTypeNameAndDebug(faceZonesIntegration, 0);
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::faceZonesIntegration::faceZonesIntegration
+(
+    const word& name,
+    const objectRegistry& obr,
+    const dictionary& dict,
+    const bool loadFromFiles
+)
+:
+    name_(name),
+    obr_(obr),
+    active_(true),
+    log_(false),
+    faceZonesSet_(),
+    fItems_(),
+    faceZonesIntegrationFilePtr_(NULL)
+{
+    // Check if the available mesh is an fvMesh otherise deactivate
+    if (!isA<fvMesh>(obr_))
+    {
+        active_ = false;
+        WarningIn
+        (
+            "Foam::faceZonesIntegration::faceZonesIntegration"
+            "("
+                "const word&, "
+                "const objectRegistry&, "
+                "const dictionary&, "
+                "const bool"
+            ")"
+        )   << "No fvMesh available, deactivating."
+            << endl;
+    }
+
+    read(dict);
+}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::faceZonesIntegration::~faceZonesIntegration()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+void Foam::faceZonesIntegration::read(const dictionary& dict)
+{
+    if (active_)
+    {
+        log_ = dict.lookupOrDefault<Switch>("log", false);
+
+        dict.lookup("fields") >> fItems_;
+
+        dict.lookup("faceZones") >> faceZonesSet_;
+    }
+}
+
+
+void Foam::faceZonesIntegration::makeFile()
+{
+    // Create the face Zone file if not already created
+    if (faceZonesIntegrationFilePtr_.empty())
+    {
+        if (debug)
+        {
+            Info<< "Creating faceZonesIntegration file." << endl;
+        }
+
+        // File update
+        if (Pstream::master())
+        {
+            fileName faceZonesIntegrationDir;
+            if (Pstream::parRun())
+            {
+                // Put in undecomposed case (Note: gives problems for
+                // distributed data running)
+                faceZonesIntegrationDir =
+                    obr_.time().path()/".."/name_/obr_.time().timeName();
+            }
+            else
+            {
+                faceZonesIntegrationDir =
+                    obr_.time().path()/name_/obr_.time().timeName();
+            }
+
+            // Create directory if does not exist.
+            mkDir(faceZonesIntegrationDir);
+
+            // Open new file at start up
+            faceZonesIntegrationFilePtr_.resize(fItems_.size());
+
+            forAll(fItems_, Ifields)
+            {
+                const word& fieldName = fItems_[Ifields];
+
+                OFstream* sPtr = new OFstream
+                    (
+                        faceZonesIntegrationDir/fieldName
+                    );
+
+                faceZonesIntegrationFilePtr_.insert(fieldName, sPtr);
+            }
+
+            // Add headers to output data
+            writeFileHeader();
+        }
+    }
+}
+
+
+void Foam::faceZonesIntegration::writeFileHeader()
+{
+    forAllIter(HashPtrTable<OFstream>, faceZonesIntegrationFilePtr_, iter)
+    {
+        unsigned int w = IOstream::defaultPrecision() + 7;
+
+        OFstream& os = *faceZonesIntegrationFilePtr_[iter.key()];
+
+        os  << "#Time " << setw(w);
+
+        forAll (faceZonesSet_, zoneI)
+        {
+            const word name = faceZonesSet_[zoneI];
+            os  << name << setw(w);
+        }
+
+        os  << nl << endl;
+    }
+}
+
+
+void Foam::faceZonesIntegration::execute()
+{
+    // Do nothing - only valid on write
+}
+
+
+void Foam::faceZonesIntegration::end()
+{
+    // Do nothing - only valid on write
+}
+
+
+void Foam::faceZonesIntegration::write()
+{
+    if (active_)
+    {
+        makeFile();
+        scalar dm = 0.0;
+        forAll(fItems_, fieldI)
+        {
+            const word& fieldName = fItems_[fieldI];
+
+            const surfaceScalarField& fD =
+                obr_.lookupObject<surfaceScalarField>(fieldName);
+
+            const fvMesh& mesh = fD.mesh();
+
+            unsigned int w = IOstream::defaultPrecision() + 7;
+
+            if
+            (
+                Pstream::master()
+             && faceZonesIntegrationFilePtr_.found(fieldName)
+            )
+            {
+                OFstream& os = *faceZonesIntegrationFilePtr_(fieldName);
+
+                os  << obr_.time().value();
+
+                const faceZoneMesh& faceZoneList =  mesh.faceZones();
+
+                forAll(faceZonesSet_, zoneI)
+                {
+                    const word name = faceZonesSet_[zoneI];
+
+                    label zoneID = faceZoneList.findZoneID(name);
+
+                    const faceZone& fz = mesh.faceZones()[zoneID];
+
+                    dm = calcFaceZonesIntegral(fD, fz);
+
+                    reduce(dm, sumOp<scalar>());
+
+                    os  << ' ' << setw(w) << dm;
+
+                    if (log_)
+                    {
+                        Info<< "faceZonesIntegration output:" << nl
+                            << "    Integration" << dm << endl;
+                    }
+                }
+
+                os  << endl;
+            }
+        }
+    }
+}
+
+
+Foam::scalar Foam::faceZonesIntegration::calcFaceZonesIntegral
+(
+    const surfaceScalarField& fD,
+    const faceZone& fz
+) const
+{
+    scalar dm = 0.0;
+    const fvMesh& mesh = fD.mesh();
+
+    forAll (fz, i)
+    {
+        label faceI = fz[i];
+
+        if (mesh.isInternalFace(faceI))
+        {
+            if (fz.flipMap()[faceI])
+            {
+                dm -= fD[faceI];
+            }
+            else
+            {
+                dm += fD[faceI];
+            }
+        }
+        else
+        {
+            label patchI = mesh.boundaryMesh().whichPatch(faceI);
+            const polyPatch& pp = mesh.boundaryMesh()[patchI];
+            if (isA<processorPolyPatch>(pp))
+            {
+                if (refCast<const processorPolyPatch>(pp).owner())
+                {
+                    if (fz.flipMap()[faceI])
+                    {
+                        dm -= fD.boundaryField()[patchI][pp.whichFace(faceI)];
+                    }
+                    else
+                    {
+                        dm += fD.boundaryField()[patchI][pp.whichFace(faceI)];
+                    }
+                }
+            }
+            else if (isA<cyclicPolyPatch>(pp))
+            {
+                label patchFaceI = faceI - pp.start();
+                if (patchFaceI < pp.size()/2)
+                {
+                    if (fz.flipMap()[patchFaceI])
+                    {
+                        dm -= fD.boundaryField()[patchI][patchFaceI];
+                    }
+                    else
+                    {
+                        dm += fD.boundaryField()[patchI][patchFaceI];
+                    }
+                }
+            }
+            else if (!isA<emptyPolyPatch>(pp))
+            {
+                label patchFaceI = faceI - pp.start();
+                if (fz.flipMap()[patchFaceI])
+                {
+                    dm -= fD.boundaryField()[patchI][patchFaceI];
+                }
+                else
+                {
+                    dm += fD.boundaryField()[patchI][patchFaceI];
+                }
+            }
+        }
+    }
+
+    return dm;
+}
+
+
+// ************************************************************************* //
diff --git a/src/postProcessing/functionObjects/zones/faceZoneIntegration/faceZonesIntegration.H b/src/postProcessing/functionObjects/zones/faceZoneIntegration/faceZonesIntegration.H
new file mode 100644
index 0000000000000000000000000000000000000000..5fc957bba739954dcf3181cd03d5a7f654e6609f
--- /dev/null
+++ b/src/postProcessing/functionObjects/zones/faceZoneIntegration/faceZonesIntegration.H
@@ -0,0 +1,178 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::faceZonesIntegration
+
+Description
+    Integrates surfaceScalarFields on faceZones
+
+SourceFiles
+    faceZonesIntegration.C
+    IOfaceZonesIntegration.H
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef faceZonesIntegration_H
+#define faceZonesIntegration_H
+
+#include "fvCFD.H"
+#include "primitiveFieldsFwd.H"
+#include "volFieldsFwd.H"
+#include "HashPtrTable.H"
+#include "OFstream.H"
+#include "Switch.H"
+#include "pointFieldFwd.H"
+#include "polyMesh.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+// Forward declaration of classes
+class objectRegistry;
+class dictionary;
+class mapPolyMesh;
+
+/*---------------------------------------------------------------------------*\
+                           Class faceZonesIntegration Declaration
+\*---------------------------------------------------------------------------*/
+
+class faceZonesIntegration
+{
+
+protected:
+
+    // Private data
+
+        //- Name of this set of face zone integration,
+        //  Also used as the name of the probes directory.
+        word name_;
+
+        const objectRegistry& obr_;
+
+        //- on/off switch
+        bool active_;
+
+        //- Switch to send output to Info as well as to file
+        Switch log_;
+
+        //- Current open files
+        HashPtrTable<OFstream> faceZonesIntegrationFilePtr_;
+
+        // Read from dictionary
+
+            //- faceZones to integrate over
+            wordList faceZonesSet_;
+
+            //- Names of the surface fields
+            wordList fItems_;
+
+
+    // Private Member Functions
+
+        //- If the integration file has not been created create it
+        void makeFile();
+
+        scalar calcFaceZonesIntegral
+        (
+            const surfaceScalarField& fD,
+            const faceZone& fz
+        ) const;
+
+
+        //- Disallow default bitwise copy construct
+        faceZonesIntegration(const faceZonesIntegration&);
+
+        //- Disallow default bitwise assignment
+        void operator=(const faceZonesIntegration&);
+
+        //- Output file header information
+        virtual void writeFileHeader();
+
+
+public:
+
+    //- Runtime type information
+    TypeName("faceZonesIntegration");
+
+
+    // Constructors
+
+        //- Construct for given objectRegistry and dictionary.
+        //  Allow the possibility to load fields from files
+        faceZonesIntegration
+        (
+            const word& name,
+            const objectRegistry&,
+            const dictionary&,
+            const bool loadFromFiles = false
+        );
+
+
+    // Destructor
+
+        virtual ~faceZonesIntegration();
+
+
+    // Member Functions
+
+        //- Return name of the set of zones
+        virtual const word& name() const
+        {
+            return name_;
+        };
+
+        //- Read the zone integration data
+        virtual void read(const dictionary&);
+
+        //- Execute, currently does nothing
+        virtual void execute();
+
+        //- Execute at the final time-loop, currently does nothing
+        virtual void end();
+
+        //- Write the integration
+        virtual void write();
+
+        //- Update for changes of mesh
+        virtual void updateMesh(const mapPolyMesh&)
+        {}
+
+        //- Update for changes of mesh
+        virtual void movePoints(const pointField&)
+        {}
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/postProcessing/functionObjects/zones/faceZoneIntegration/faceZonesIntegrationFunctionObject.C b/src/postProcessing/functionObjects/zones/faceZoneIntegration/faceZonesIntegrationFunctionObject.C
new file mode 100644
index 0000000000000000000000000000000000000000..43665119b14aeedf9056ead1a814e32f8518e3cb
--- /dev/null
+++ b/src/postProcessing/functionObjects/zones/faceZoneIntegration/faceZonesIntegrationFunctionObject.C
@@ -0,0 +1,43 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "faceZonesIntegrationFunctionObject.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    defineNamedTemplateTypeNameAndDebug(faceZonesIntegrationFunctionObject, 0);
+
+    addToRunTimeSelectionTable
+    (
+        functionObject,
+        faceZonesIntegrationFunctionObject,
+        dictionary
+    );
+}
+
+// ************************************************************************* //
diff --git a/src/postProcessing/functionObjects/zones/faceZoneIntegration/faceZonesIntegrationFunctionObject.H b/src/postProcessing/functionObjects/zones/faceZoneIntegration/faceZonesIntegrationFunctionObject.H
new file mode 100644
index 0000000000000000000000000000000000000000..2cc95e2af21eb19a1e890207447fdfdfa76d47d3
--- /dev/null
+++ b/src/postProcessing/functionObjects/zones/faceZoneIntegration/faceZonesIntegrationFunctionObject.H
@@ -0,0 +1,55 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Typedef
+    Foam::faceZonesIntegrationFunctionObject
+
+Description
+    FunctionObject wrapper around faceZonesIntegration to allow them to be
+    created via the functions list within controlDict.
+
+SourceFiles
+    faceZonesIntegrationFunctionObject.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef faceZonesIntegrationFunctionObject_H
+#define faceZonesIntegrationFunctionObject_H
+
+#include "faceZonesIntegration.H"
+#include "OutputFilterFunctionObject.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    typedef OutputFilterFunctionObject<faceZonesIntegration>
+        faceZonesIntegrationFunctionObject;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/sampling/probes/probes.H b/src/sampling/probes/probes.H
index 33e4f39e25056cda02b95f87a2fa8ae676ad5869..11a7f581c16215cc4f7fe448163c368af9240c7c 100644
--- a/src/sampling/probes/probes.H
+++ b/src/sampling/probes/probes.H
@@ -175,9 +175,8 @@ public:
         );
 
 
-    // Destructor
-
-        virtual ~probes();
+    //- Destructor
+    virtual ~probes();
 
 
     // Member Functions
@@ -188,6 +187,18 @@ public:
             return name_;
         }
 
+        //- Return names of fields to probe
+        virtual const wordList& fieldNames() const
+        {
+            return fieldNames_;
+        }
+
+        //- Return locations to probe
+        virtual const vectorField& probeLocations() const
+        {
+            return probeLocations_;
+        }
+
         //- Cells to be probed (obtained from the locations)
         const labelList& cells() const
         {
diff --git a/src/thermophysicalModels/Allwmake b/src/thermophysicalModels/Allwmake
index 62175e440fb768dec572cec706bdb787b360c2c7..7fbee69034eae6d4ec0cff99068f1a44b1cfee24 100755
--- a/src/thermophysicalModels/Allwmake
+++ b/src/thermophysicalModels/Allwmake
@@ -10,7 +10,7 @@ wmake libso solids
 wmake libso solidMixture
 
 wmake libso basic
-wmake libso combustion
+wmake libso reactionThermo
 wmake libso laminarFlameSpeed
 wmake libso chemistryModel
 wmake libso pdfs
diff --git a/src/thermophysicalModels/basic/Make/files b/src/thermophysicalModels/basic/Make/files
index 4cea8bf57d4c6f7e179760a661e095f4a862044c..dcf9c8f4c0cbe6686de6b4db1b501dea7e45ed6a 100644
--- a/src/thermophysicalModels/basic/Make/files
+++ b/src/thermophysicalModels/basic/Make/files
@@ -1,13 +1,16 @@
-basicMixture = mixtures/basicMixture
-basicThermo = basicThermo
+mixtures/basicMixture/basicMixture.C
+mixtures/basicMixture/basicMixtures.C
 
-$(basicMixture)/basicMixture.C
-$(basicMixture)/basicMixtures.C
-$(basicThermo)/basicThermo.C
-$(basicThermo)/newBasicThermo.C
+basicThermo/basicThermo.C
 
-hThermo/hThermos.C
-eThermo/eThermos.C
+psiThermo/basicPsiThermo/basicPsiThermo.C
+psiThermo/basicPsiThermo/newBasicPsiThermo.C
+psiThermo/hPsiThermo/hPsiThermos.C
+psiThermo/ePsiThermo/ePsiThermos.C
+
+rhoThermo/basicRhoThermo/basicRhoThermo.C
+rhoThermo/basicRhoThermo/newBasicRhoThermo.C
+rhoThermo/hRhoThermo/hRhoThermos.C
 
 derivedFvPatchFields/fixedEnthalpy/fixedEnthalpyFvPatchScalarField.C
 derivedFvPatchFields/gradientEnthalpy/gradientEnthalpyFvPatchScalarField.C
diff --git a/src/thermophysicalModels/basic/basicThermo/basicThermo.C b/src/thermophysicalModels/basic/basicThermo/basicThermo.C
index 14d2e235924b1d80b023d87613b6f89cc7d0078f..4a1e7f19f9422250e8336734715cceb9d97dc5ac 100644
--- a/src/thermophysicalModels/basic/basicThermo/basicThermo.C
+++ b/src/thermophysicalModels/basic/basicThermo/basicThermo.C
@@ -35,20 +35,16 @@ License
 #include "gradientInternalEnergyFvPatchScalarField.H"
 #include "mixedInternalEnergyFvPatchScalarField.H"
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+/* * * * * * * * * * * * * * * private static data * * * * * * * * * * * * * */
 
 namespace Foam
 {
-
-/* * * * * * * * * * * * * * * private static data * * * * * * * * * * * * * */
-
-defineTypeNameAndDebug(basicThermo, 0);
-defineRunTimeSelectionTable(basicThermo, fvMesh);
-
+    defineTypeNameAndDebug(basicThermo, 0);
+}
 
 // * * * * * * * * * * * * Protected Member Functions  * * * * * * * * * * * //
 
-wordList basicThermo::hBoundaryTypes()
+Foam::wordList Foam::basicThermo::hBoundaryTypes()
 {
     const volScalarField::GeometricBoundaryField& tbf = T_.boundaryField();
 
@@ -77,7 +73,8 @@ wordList basicThermo::hBoundaryTypes()
     return hbt;
 }
 
-void basicThermo::hBoundaryCorrection(volScalarField& h)
+
+void Foam::basicThermo::hBoundaryCorrection(volScalarField& h)
 {
     volScalarField::GeometricBoundaryField& hbf = h.boundaryField();
 
@@ -96,7 +93,8 @@ void basicThermo::hBoundaryCorrection(volScalarField& h)
     }
 }
 
-wordList basicThermo::eBoundaryTypes()
+
+Foam::wordList Foam::basicThermo::eBoundaryTypes()
 {
     const volScalarField::GeometricBoundaryField& tbf = T_.boundaryField();
 
@@ -125,7 +123,8 @@ wordList basicThermo::eBoundaryTypes()
     return ebt;
 }
 
-void basicThermo::eBoundaryCorrection(volScalarField& e)
+
+void Foam::basicThermo::eBoundaryCorrection(volScalarField& e)
 {
     volScalarField::GeometricBoundaryField& ebf = e.boundaryField();
 
@@ -146,7 +145,7 @@ void basicThermo::eBoundaryCorrection(volScalarField& e)
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-basicThermo::basicThermo(const fvMesh& mesh)
+Foam::basicThermo::basicThermo(const fvMesh& mesh)
 :
     IOdictionary
     (
@@ -173,31 +172,31 @@ basicThermo::basicThermo(const fvMesh& mesh)
         mesh
     ),
 
-    T_
+    psi_
     (
         IOobject
         (
-            "T",
+            "psi",
             mesh.time().timeName(),
             mesh,
-            IOobject::MUST_READ,
-            IOobject::AUTO_WRITE
+            IOobject::NO_READ,
+            IOobject::NO_WRITE
         ),
-        mesh
+        mesh,
+        dimensionSet(0, -2, 2, 0, 0)
     ),
 
-    psi_
+    T_
     (
         IOobject
         (
-            "psi",
+            "T",
             mesh.time().timeName(),
             mesh,
-            IOobject::NO_READ,
-            IOobject::NO_WRITE
+            IOobject::MUST_READ,
+            IOobject::AUTO_WRITE
         ),
-        mesh,
-        dimensionSet(0, -2, 2, 0, 0)
+        mesh
     ),
 
     mu_
@@ -232,20 +231,184 @@ basicThermo::basicThermo(const fvMesh& mesh)
 
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
-basicThermo::~basicThermo()
+Foam::basicThermo::~basicThermo()
 {}
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-bool basicThermo::read()
+Foam::volScalarField& Foam::basicThermo::p()
 {
-    return regIOobject::read();
+    return p_;
+}
+
+
+const Foam::volScalarField& Foam::basicThermo::p() const
+{
+    return p_;
 }
 
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+const Foam::volScalarField& Foam::basicThermo::psi() const
+{
+    return psi_;
+}
+
+
+Foam::volScalarField& Foam::basicThermo::h()
+{
+    notImplemented("basicThermo::h()");
+    return const_cast<volScalarField&>(volScalarField::null());
+}
+
+
+const Foam::volScalarField& Foam::basicThermo::h() const
+{
+    notImplemented("basicThermo::h() const");
+    return volScalarField::null();
+}
+
+
+Foam::tmp<Foam::scalarField> Foam::basicThermo::h
+(
+    const scalarField& T,
+    const labelList& cells
+) const
+{
+    notImplemented
+    (
+        "basicThermo::h"
+        "(const scalarField& T, const labelList& cells) const"
+    );
+    return tmp<scalarField>(NULL);
+}
+
+
+Foam::tmp<Foam::scalarField> Foam::basicThermo::h
+(
+    const scalarField& T,
+    const label patchi
+) const
+{
+    notImplemented
+    (
+        "basicThermo::h"
+        "(const scalarField& T, const label patchi) const"
+    );
+    return tmp<scalarField>(NULL);
+}
+
+
+Foam::volScalarField& Foam::basicThermo::e()
+{
+    notImplemented("basicThermo::e()");
+    return const_cast<volScalarField&>(volScalarField::null());
+}
+
+
+const Foam::volScalarField& Foam::basicThermo::e() const
+{
+    notImplemented("basicThermo::e()");
+    return volScalarField::null();
+}
+
+
+Foam::tmp<Foam::scalarField> Foam::basicThermo::e
+(
+    const scalarField& T,
+    const labelList& cells
+) const
+{
+    notImplemented
+    (
+        "basicThermo::e"
+        "(const scalarField& T, const labelList& cells) const"
+    );
+    return tmp<scalarField>(NULL);
+}
+
+
+Foam::tmp<Foam::scalarField> Foam::basicThermo::e
+(
+    const scalarField& T,
+    const label patchi
+) const
+{
+    notImplemented
+    (
+        "basicThermo::e"
+        "(const scalarField& T, const label patchi) const"
+    );
+    return tmp<scalarField>(NULL);
+}
+
+
+const Foam::volScalarField& Foam::basicThermo::T() const
+{
+    return T_;
+}
+
+
+Foam::tmp<Foam::scalarField> Foam::basicThermo::Cp
+(
+    const scalarField& T,
+    const label patchi
+) const
+{
+    notImplemented
+    (
+        "basicThermo::Cp"
+        "(const scalarField& T, const label patchi) const"
+    );
+    return tmp<scalarField>(NULL);
+}
+
+
+Foam::tmp<Foam::volScalarField> Foam::basicThermo::Cp() const
+{
+    notImplemented("basicThermo::Cp() const");
+    return volScalarField::null();
+}
+
+
+Foam::tmp<Foam::scalarField> Foam::basicThermo::Cv
+(
+    const scalarField& T,
+    const label patchi
+) const
+{
+    notImplemented
+    (
+        "basicThermo::Cv"
+        "(const scalarField& T, const label patchi) const"
+    );
+    return tmp<scalarField>(NULL);
+}
+
+
+Foam::tmp<Foam::volScalarField> Foam::basicThermo::Cv() const
+{
+    notImplemented("basicThermo::Cv() const");
+    return volScalarField::null();
+}
+
+
+const Foam::volScalarField& Foam::basicThermo::mu() const
+{
+    return mu_;
+}
+
+
+const Foam::volScalarField& Foam::basicThermo::alpha() const
+{
+    return alpha_;
+}
+
+
+bool Foam::basicThermo::read()
+{
+    return regIOobject::read();
+}
 
-} // End namespace Foam
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/basic/basicThermo/basicThermo.H b/src/thermophysicalModels/basic/basicThermo/basicThermo.H
index 4b316fc1c9ba5a9ad6d94734908e4e5c0144b1ec..1b5425852530ca30ec9cb6328adb12b777d473ab 100644
--- a/src/thermophysicalModels/basic/basicThermo/basicThermo.H
+++ b/src/thermophysicalModels/basic/basicThermo/basicThermo.H
@@ -41,7 +41,6 @@ SourceFiles
 #include "typeInfo.H"
 #include "IOdictionary.H"
 #include "autoPtr.H"
-#include "runTimeSelectionTables.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -49,7 +48,7 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                           Class basicThermo Declaration
+                        Class basicThermo Declaration
 \*---------------------------------------------------------------------------*/
 
 class basicThermo
@@ -61,21 +60,45 @@ protected:
 
     // Protected data
 
-        volScalarField p_;
-        volScalarField T_;
-        volScalarField psi_;
+        // Fields
 
-        volScalarField mu_;
-        volScalarField alpha_;
+            //- Pressure [Pa]
+            volScalarField p_;
+
+            //- Compressibility [s^2/m^2]
+            volScalarField psi_;
+
+            //- Temperature [K]
+            volScalarField T_;
+
+            //- Laminar dynamic viscosity [kg/m/s]
+            volScalarField mu_;
+
+            //- Laminar thermal diffusuvity [kg/m/s]
+            volScalarField alpha_;
 
 
     // Protected member functions
 
-        wordList hBoundaryTypes();
-        void hBoundaryCorrection(volScalarField& h);
+        // Enthalpy
+
+            //- Return the enthalpy field boundary types by interrogating the
+            //  temperature field boundary types
+            wordList hBoundaryTypes();
+
+            //- Correct the enthalpy field boundaries
+            void hBoundaryCorrection(volScalarField& h);
+
+
+        // Internal energy
+
+            //- Return the internal energy  field boundary types by
+            //  interrogating the temperature field boundary types
+            wordList eBoundaryTypes();
+
+            //- Correct the internal energy field boundaries
+            void eBoundaryCorrection(volScalarField& e);
 
-        wordList eBoundaryTypes();
-        void eBoundaryCorrection(volScalarField& e);
 
         //- Construct as copy (not implemented)
         basicThermo(const basicThermo&);
@@ -87,29 +110,12 @@ public:
     TypeName("basicThermo");
 
 
-    // Declare run-time constructor selection table
-
-        declareRunTimeSelectionTable
-        (
-            autoPtr,
-            basicThermo,
-            fvMesh,
-            (const fvMesh& mesh),
-            (mesh)
-        );
-
-
     // Constructors
 
         //- Construct from mesh
         basicThermo(const fvMesh&);
 
 
-    // Selectors
-
-        static autoPtr<basicThermo> New(const fvMesh&);
-
-
     //- Destructor
     virtual ~basicThermo();
 
@@ -120,193 +126,101 @@ public:
         virtual void correct() = 0;
 
 
-        // Access to thermodynamic state variables.
+        // Access to thermodynamic state variables
 
             //- Pressure [Pa]
             //  Non-const access allowed for transport equations
-            virtual volScalarField& p()
-            {
-                return p_;
-            }
+            virtual volScalarField& p();
 
             //- Pressure [Pa]
-            virtual const volScalarField& p() const
-            {
-                return p_;
-            }
+            virtual const volScalarField& p() const;
+
+            //- Density [kg/m^3]
+            virtual tmp<volScalarField> rho() const = 0;
+
+            //- Compressibility [s^2/m^2]
+            virtual const volScalarField& psi() const;
 
             //- Enthalpy [J/kg]
             //  Non-const access allowed for transport equations
-            virtual volScalarField& h()
-            {
-                notImplemented("basicThermo::h()");
-                return const_cast<volScalarField&>(volScalarField::null());
-            }
+            virtual volScalarField& h();
 
             //- Enthalpy [J/kg]
-            virtual const volScalarField& h() const
-            {
-                notImplemented("basicThermo::h() const");
-                return volScalarField::null();
-            }
+            virtual const volScalarField& h() const;
 
             //- Enthalpy for cell-set [J/kg]
             virtual tmp<scalarField> h
             (
                 const scalarField& T,
                 const labelList& cells
-            ) const
-            {
-                notImplemented
-                (
-                    "basicThermo::h"
-                    "(const scalarField& T, const labelList& cells) const"
-                );
-                return tmp<scalarField>(NULL);
-            }
+            ) const;
 
             //- Enthalpy for patch [J/kg]
             virtual tmp<scalarField> h
             (
                 const scalarField& T,
                 const label patchi
-            ) const
-            {
-                notImplemented
-                (
-                    "basicThermo::h"
-                    "(const scalarField& T, const label patchi) const"
-                );
-                return tmp<scalarField>(NULL);
-            }
+            ) const;
 
             //- Internal energy [J/kg]
             //  Non-const access allowed for transport equations
-            virtual volScalarField& e()
-            {
-                notImplemented("basicThermo::e()");
-                return const_cast<volScalarField&>(volScalarField::null());
-            }
+            virtual volScalarField& e();
 
             //- Internal energy [J/kg]
-            virtual const volScalarField& e() const
-            {
-                notImplemented("basicThermo::e()");
-                return volScalarField::null();
-            }
+            virtual const volScalarField& e() const;
 
             //- Internal energy for cell-set [J/kg]
             virtual tmp<scalarField> e
             (
                 const scalarField& T,
                 const labelList& cells
-            ) const
-            {
-                notImplemented
-                (
-                    "basicThermo::e"
-                    "(const scalarField& T, const labelList& cells) const"
-                );
-                return tmp<scalarField>(NULL);
-            }
+            ) const;
 
             //-Internal energy for patch [J/kg]
             virtual tmp<scalarField> e
             (
                 const scalarField& T,
                 const label patchi
-            ) const
-            {
-                notImplemented
-                (
-                    "basicThermo::e"
-                    "(const scalarField& T, const label patchi) const"
-                );
-                return tmp<scalarField>(NULL);
-            }
+            ) const;
+
 
         // Fields derived from thermodynamic state variables
 
             //- Temperature [K]
-            virtual const volScalarField& T() const
-            {
-                return T_;
-            }
-
-            //- Density [kg/m^3]
-            virtual tmp<volScalarField> rho() const
-            {
-                return p_*psi();
-            }
-
-            //- Compressibility [s^2/m^2]
-            virtual const volScalarField& psi() const
-            {
-                return psi_;
-            }
+            virtual const volScalarField& T() const;
 
             //- Heat capacity at constant pressure for patch [J/kg/K]
             virtual tmp<scalarField> Cp
             (
                 const scalarField& T,
                 const label patchi
-            ) const
-            {
-                notImplemented
-                (
-                    "basicThermo::Cp"
-                    "(const scalarField& T, const label patchi) const"
-                );
-                return tmp<scalarField>(NULL);
-            }
+            ) const;
 
             //- Heat capacity at constant pressure [J/kg/K]
-            virtual tmp<volScalarField> Cp() const
-            {
-                notImplemented("basicThermo::Cp() const");
-                return volScalarField::null();
-            }
+            virtual tmp<volScalarField> Cp() const;
 
             //- Heat capacity at constant volume for patch [J/kg/K]
             virtual tmp<scalarField> Cv
             (
                 const scalarField& T,
                 const label patchi
-            ) const
-            {
-                notImplemented
-                (
-                    "basicThermo::Cv"
-                    "(const scalarField& T, const label patchi) const"
-                );
-                return tmp<scalarField>(NULL);
-            }
+            ) const;
 
             //- Heat capacity at constant volume [J/kg/K]
-            virtual tmp<volScalarField> Cv() const
-            {
-                notImplemented("basicThermo::Cv() const");
-                return volScalarField::null();
-            }
+            virtual tmp<volScalarField> Cv() const;
 
 
         // Access to transport state variables
 
-            //- Dynamic viscosity of mixture [kg/ms]
-            virtual const volScalarField& mu() const
-            {
-                return mu_;
-            }
+            //- Dynamic viscosity of mixture [kg/m/s]
+            virtual const volScalarField& mu() const;
 
-            //- Thermal diffusivity for enthalpy of mixture [kg/ms]
-            virtual const volScalarField& alpha() const
-            {
-                return alpha_;
-            }
+            //- Thermal diffusivity for enthalpy of mixture [kg/m/s]
+            virtual const volScalarField& alpha() const;
 
 
         //- Read thermophysicalProperties dictionary
-        virtual bool read() = 0;
+        virtual bool read();
 };
 
 
diff --git a/src/thermophysicalModels/basic/mixtures/basicMixture/basicMixture.C b/src/thermophysicalModels/basic/mixtures/basicMixture/basicMixture.C
index bbe76c43ef88703329699fa36975ac7f094d089a..0167d9c4cb7c4ce61fa4b90bf9e932e5975a7b6b 100644
--- a/src/thermophysicalModels/basic/mixtures/basicMixture/basicMixture.C
+++ b/src/thermophysicalModels/basic/mixtures/basicMixture/basicMixture.C
@@ -22,8 +22,6 @@ License
     along with OpenFOAM; if not, write to the Free Software Foundation,
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
-Description
-
 \*---------------------------------------------------------------------------*/
 
 #include "error.H"
diff --git a/src/thermophysicalModels/basic/mixtures/basicMixture/basicMixture.H b/src/thermophysicalModels/basic/mixtures/basicMixture/basicMixture.H
index d44f5483f99e4efdcf1945e19d25ab77ab4be168..a976184530cff94190f0666f8140617ecd22b2f5 100644
--- a/src/thermophysicalModels/basic/mixtures/basicMixture/basicMixture.H
+++ b/src/thermophysicalModels/basic/mixtures/basicMixture/basicMixture.H
@@ -47,7 +47,7 @@ class fvMesh;
 class dictionary;
 
 /*---------------------------------------------------------------------------*\
-                           Class basicMixture Declaration
+                        Class basicMixture Declaration
 \*---------------------------------------------------------------------------*/
 
 class basicMixture
@@ -65,9 +65,8 @@ public:
         basicMixture(const dictionary&, const fvMesh&);
 
 
-    // Destructor
-
-        virtual ~basicMixture();
+    //- Destructor
+    virtual ~basicMixture();
 };
 
 
diff --git a/src/thermophysicalModels/basic/mixtures/basicMixture/basicMixtures.C b/src/thermophysicalModels/basic/mixtures/basicMixture/basicMixtures.C
index c3bad32fc14616e383f5cbb897bd9c42b064ac22..0aced02618e2baaa73623f635396b8763a5583c1 100644
--- a/src/thermophysicalModels/basic/mixtures/basicMixture/basicMixtures.C
+++ b/src/thermophysicalModels/basic/mixtures/basicMixture/basicMixtures.C
@@ -23,7 +23,7 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Description
-    Selection function for internal energy based thermodynamics package.
+    Mixture instantiation
 
 \*---------------------------------------------------------------------------*/
 
@@ -34,6 +34,8 @@ Description
 
 #include "perfectGas.H"
 
+#include "eConstThermo.H"
+
 #include "hConstThermo.H"
 #include "janafThermo.H"
 #include "specieThermo.H"
@@ -68,6 +70,22 @@ makeBasicMixture
     perfectGas
 );
 
+makeBasicMixture
+(
+    pureMixture,
+    constTransport,
+    eConstThermo,
+    perfectGas
+);
+
+makeBasicMixture
+(
+    pureMixture,
+    sutherlandTransport,
+    eConstThermo,
+    perfectGas
+);
+
 makeBasicMixture
 (
     pureMixture,
diff --git a/src/thermophysicalModels/basic/psiThermo/basicPsiThermo/basicPsiThermo.C b/src/thermophysicalModels/basic/psiThermo/basicPsiThermo/basicPsiThermo.C
new file mode 100644
index 0000000000000000000000000000000000000000..6464e9e71b04e93fb050293f8caa2d5ae2ba3a1f
--- /dev/null
+++ b/src/thermophysicalModels/basic/psiThermo/basicPsiThermo/basicPsiThermo.C
@@ -0,0 +1,52 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "basicPsiThermo.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    defineTypeNameAndDebug(basicPsiThermo, 0);
+    defineRunTimeSelectionTable(basicPsiThermo, fvMesh);
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::basicPsiThermo::basicPsiThermo(const fvMesh& mesh)
+:
+    basicThermo(mesh)
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::basicPsiThermo::~basicPsiThermo()
+{}
+
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/basic/psiThermo/basicPsiThermo/basicPsiThermo.H b/src/thermophysicalModels/basic/psiThermo/basicPsiThermo/basicPsiThermo.H
new file mode 100644
index 0000000000000000000000000000000000000000..df6d21b9ab65f41845130e1221b1f056cbdbd37c
--- /dev/null
+++ b/src/thermophysicalModels/basic/psiThermo/basicPsiThermo/basicPsiThermo.H
@@ -0,0 +1,114 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::basicPsiThermo
+
+Description
+    Basic thermodynamic properties based on compressibility
+
+SourceFiles
+    basicPsiThermo.C
+    newBasicPsiThermo.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef basicPsiThermo_H
+#define basicPsiThermo_H
+
+#include "basicThermo.H"
+#include "runTimeSelectionTables.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+                         Class basicPsiThermo Declaration
+\*---------------------------------------------------------------------------*/
+
+class basicPsiThermo
+:
+    public basicThermo
+{
+
+protected:
+
+    // Protected member functions
+
+        //- Construct as copy (not implemented)
+        basicPsiThermo(const basicPsiThermo&);
+
+
+public:
+
+    //- Runtime type information
+    TypeName("basicPsiThermo");
+
+
+    //- Declare run-time constructor selection table
+    declareRunTimeSelectionTable
+    (
+        autoPtr,
+        basicPsiThermo,
+        fvMesh,
+        (const fvMesh& mesh),
+        (mesh)
+    );
+
+    // Constructors
+
+        //- Construct from mesh
+        basicPsiThermo(const fvMesh&);
+
+
+    //- Selector
+    static autoPtr<basicPsiThermo> New(const fvMesh&);
+
+    //- Destructor
+    virtual ~basicPsiThermo();
+
+
+    // Member functions
+
+        // Fields derived from thermodynamic state variables
+
+            //- Density [kg/m^3] - uses current value of pressure
+            virtual tmp<volScalarField> rho() const
+            {
+                return p_*psi();
+            }
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/combustion/hCombustionThermo/makeCombustionThermo.H b/src/thermophysicalModels/basic/psiThermo/basicPsiThermo/makeBasicPsiThermo.H
similarity index 67%
rename from src/thermophysicalModels/combustion/hCombustionThermo/makeCombustionThermo.H
rename to src/thermophysicalModels/basic/psiThermo/basicPsiThermo/makeBasicPsiThermo.H
index f961d0ca0c532d035828d8dc2cd6183755392fa0..c36ec8da9103544a364d5db3cef0d609ec7abaad 100644
--- a/src/thermophysicalModels/combustion/hCombustionThermo/makeCombustionThermo.H
+++ b/src/thermophysicalModels/basic/psiThermo/basicPsiThermo/makeBasicPsiThermo.H
@@ -23,39 +23,38 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 InClass
-    Foam::hCombustionThermo
+    Foam::basicPsiThermo
 
 Description
+    Macros for creating 'basic' compresibility-based thermo packages
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef makeCombustionThermo_H
-#define makeCombustionThermo_H
+#ifndef makeBasicPsiThermo_H
+#define makeBasicPsiThermo_H
+
+#include "basicPsiThermo.H"
+#include "addToRunTimeSelectionTable.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-#define makeCombustionThermo(CThermo,MixtureThermo,Mixture,Transport,Thermo,EqnOfState)  \
+#define makeBasicPsiThermo(Cthermo,Mixture,Transport,Thermo,EqnOfState)       \
                                                                               \
-typedef MixtureThermo                                                         \
-    <Mixture<Transport<specieThermo<Thermo<EqnOfState> > > > >                \
-    MixtureThermo##Mixture##Transport##Thermo##EqnOfState;                    \
+typedef Cthermo<Mixture<Transport<specieThermo<Thermo<EqnOfState> > > > >     \
+    Cthermo##Mixture##Transport##Thermo##EqnOfState;                          \
                                                                               \
 defineTemplateTypeNameAndDebugWithName                                        \
-    (MixtureThermo##Mixture##Transport##Thermo##EqnOfState,                   \
-    #MixtureThermo                                                            \
-    "<"#Mixture"<"#Transport"<specieThermo<"#Thermo"<"#EqnOfState">>>>>", 0); \
-                                                                              \
-addToRunTimeSelectionTable                                                    \
 (                                                                             \
-    basicThermo,                                                              \
-    MixtureThermo##Mixture##Transport##Thermo##EqnOfState,                    \
-    fvMesh                                                                    \
+    Cthermo##Mixture##Transport##Thermo##EqnOfState,                          \
+    #Cthermo                                                                  \
+        "<"#Mixture"<"#Transport"<specieThermo<"#Thermo"<"#EqnOfState">>>>>", \
+    0                                                                         \
 );                                                                            \
                                                                               \
 addToRunTimeSelectionTable                                                    \
 (                                                                             \
-    CThermo,                                                                  \
-    MixtureThermo##Mixture##Transport##Thermo##EqnOfState,                    \
+    basicPsiThermo,                                                           \
+    Cthermo##Mixture##Transport##Thermo##EqnOfState,                          \
     fvMesh                                                                    \
 )
 
diff --git a/src/thermophysicalModels/combustion/hCombustionThermo/newhCombustionThermo.C b/src/thermophysicalModels/basic/psiThermo/basicPsiThermo/newBasicPsiThermo.C
similarity index 68%
rename from src/thermophysicalModels/combustion/hCombustionThermo/newhCombustionThermo.C
rename to src/thermophysicalModels/basic/psiThermo/basicPsiThermo/newBasicPsiThermo.C
index 2345a2b6d7e1b76f2e8121691c4725a1892850c2..3f9c43a0f9ee4f1edb837fa43becbea43f9e194c 100644
--- a/src/thermophysicalModels/combustion/hCombustionThermo/newhCombustionThermo.C
+++ b/src/thermophysicalModels/basic/psiThermo/basicPsiThermo/newBasicPsiThermo.C
@@ -24,19 +24,16 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "hCombustionThermo.H"
-#include "fvMesh.H"
+#include "basicPsiThermo.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-namespace Foam
+Foam::autoPtr<Foam::basicPsiThermo> Foam::basicPsiThermo::New
+(
+    const fvMesh& mesh
+)
 {
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-autoPtr<hCombustionThermo> hCombustionThermo::New(const fvMesh& mesh)
-{
-    word hCombustionThermoTypeName;
+    word thermoTypeName;
 
     // Enclose the creation of the thermophysicalProperties to ensure it is
     // deleted before the turbulenceModel is created otherwise the dictionary
@@ -54,31 +51,25 @@ autoPtr<hCombustionThermo> hCombustionThermo::New(const fvMesh& mesh)
             )
         );
 
-        thermoDict.lookup("thermoType") >> hCombustionThermoTypeName;
+        thermoDict.lookup("thermoType") >> thermoTypeName;
     }
 
-    Info<< "Selecting thermodynamics package "
-        << hCombustionThermoTypeName << endl;
+    Info<< "Selecting thermodynamics package " << thermoTypeName << endl;
 
     fvMeshConstructorTable::iterator cstrIter =
-        fvMeshConstructorTablePtr_->find(hCombustionThermoTypeName);
+        fvMeshConstructorTablePtr_->find(thermoTypeName);
 
     if (cstrIter == fvMeshConstructorTablePtr_->end())
     {
-        FatalErrorIn("hCombustionThermo::New(const fvMesh&)")
-            << "Unknown hCombustionThermo type "
-            << hCombustionThermoTypeName << endl << endl
-            << "Valid hCombustionThermo types are :" << endl
-            << fvMeshConstructorTablePtr_->toc()
+        FatalErrorIn("basicPsiThermo::New(const fvMesh&)")
+            << "Unknown basicPsiThermo type " << thermoTypeName << nl << nl
+            << "Valid basicPsiThermo types are:" << nl
+            << fvMeshConstructorTablePtr_->toc() << nl
             << exit(FatalError);
     }
 
-    return autoPtr<hCombustionThermo>(cstrIter()(mesh));
+    return autoPtr<basicPsiThermo>(cstrIter()(mesh));
 }
 
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-} // End namespace Foam
-
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/basic/eThermo/eThermo.C b/src/thermophysicalModels/basic/psiThermo/ePsiThermo/ePsiThermo.C
similarity index 72%
rename from src/thermophysicalModels/basic/eThermo/eThermo.C
rename to src/thermophysicalModels/basic/psiThermo/ePsiThermo/ePsiThermo.C
index 3c7562b9785e0de63c899aafccbc0af29fd73981..789f35bed9e275c24e24abb0555fd92ce54b9894 100644
--- a/src/thermophysicalModels/basic/eThermo/eThermo.C
+++ b/src/thermophysicalModels/basic/psiThermo/ePsiThermo/ePsiThermo.C
@@ -24,72 +24,22 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "eThermo.H"
+#include "ePsiThermo.H"
 #include "fvMesh.H"
 #include "fixedValueFvPatchFields.H"
 
-// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
-
-template<class MixtureType>
-Foam::eThermo<MixtureType>::eThermo(const fvMesh& mesh)
-:
-    basicThermo(mesh),
-    MixtureType(*this, mesh),
-
-    e_
-    (
-        IOobject
-        (
-            "e",
-            mesh.time().timeName(),
-            mesh,
-            IOobject::NO_READ,
-            IOobject::NO_WRITE
-        ),
-        mesh,
-        dimensionSet(0, 2, -2, 0, 0),
-        eBoundaryTypes()
-    )
-{
-    scalarField& eCells = e_.internalField();
-    const scalarField& TCells = T_.internalField();
-
-    forAll(eCells, celli)
-    {
-        eCells[celli] = this->cellMixture(celli).E(TCells[celli]);
-    }
-
-    forAll(e_.boundaryField(), patchi)
-    {
-        e_.boundaryField()[patchi] == e(T_.boundaryField()[patchi], patchi);
-    }
-
-    eBoundaryCorrection(e_);
-
-    calculate();
-    psi_.oldTime();   // Switch on saving old time
-}
-
-
-// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
-
-template<class MixtureType>
-Foam::eThermo<MixtureType>::~eThermo()
-{}
-
-
 // * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
 
 template<class MixtureType>
-void Foam::eThermo<MixtureType>::calculate()
+void Foam::ePsiThermo<MixtureType>::calculate()
 {
     const scalarField& eCells = e_.internalField();
-    const scalarField& pCells = p_.internalField();
+    const scalarField& pCells = this->p_.internalField();
 
-    scalarField& TCells = T_.internalField();
-    scalarField& psiCells = psi_.internalField();
-    scalarField& muCells = mu_.internalField();
-    scalarField& alphaCells = alpha_.internalField();
+    scalarField& TCells = this->T_.internalField();
+    scalarField& psiCells = this->psi_.internalField();
+    scalarField& muCells = this->mu_.internalField();
+    scalarField& alphaCells = this->alpha_.internalField();
 
     forAll(TCells, celli)
     {
@@ -103,16 +53,16 @@ void Foam::eThermo<MixtureType>::calculate()
         alphaCells[celli] = mixture_.alpha(TCells[celli]);
     }
 
-    forAll(T_.boundaryField(), patchi)
+    forAll(this->T_.boundaryField(), patchi)
     {
-        fvPatchScalarField& pp = p_.boundaryField()[patchi];
-        fvPatchScalarField& pT = T_.boundaryField()[patchi];
-        fvPatchScalarField& ppsi = psi_.boundaryField()[patchi];
+        fvPatchScalarField& pp = this->p_.boundaryField()[patchi];
+        fvPatchScalarField& pT = this->T_.boundaryField()[patchi];
+        fvPatchScalarField& ppsi = this->psi_.boundaryField()[patchi];
 
         fvPatchScalarField& pe = e_.boundaryField()[patchi];
 
-        fvPatchScalarField& pmu = mu_.boundaryField()[patchi];
-        fvPatchScalarField& palpha = alpha_.boundaryField()[patchi];
+        fvPatchScalarField& pmu = this->mu_.boundaryField()[patchi];
+        fvPatchScalarField& palpha = this->alpha_.boundaryField()[patchi];
 
         if (pT.fixesValue())
         {
@@ -146,30 +96,83 @@ void Foam::eThermo<MixtureType>::calculate()
 }
 
 
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template<class MixtureType>
+Foam::ePsiThermo<MixtureType>::ePsiThermo(const fvMesh& mesh)
+:
+    basicPsiThermo(mesh),
+    MixtureType(*this, mesh),
+
+    e_
+    (
+        IOobject
+        (
+            "e",
+            mesh.time().timeName(),
+            mesh,
+            IOobject::NO_READ,
+            IOobject::NO_WRITE
+        ),
+        mesh,
+        dimensionSet(0, 2, -2, 0, 0),
+        this->eBoundaryTypes()
+    )
+{
+    scalarField& eCells = e_.internalField();
+    const scalarField& TCells = this->T_.internalField();
+
+    forAll(eCells, celli)
+    {
+        eCells[celli] = this->cellMixture(celli).E(TCells[celli]);
+    }
+
+    forAll(e_.boundaryField(), patchi)
+    {
+        e_.boundaryField()[patchi] ==
+            e(this->T_.boundaryField()[patchi], patchi);
+    }
+
+    this->eBoundaryCorrection(e_);
+
+    calculate();
+
+    // Switch on saving old time
+    this->psi_.oldTime();
+}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+template<class MixtureType>
+Foam::ePsiThermo<MixtureType>::~ePsiThermo()
+{}
+
+
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 template<class MixtureType>
-void Foam::eThermo<MixtureType>::correct()
+void Foam::ePsiThermo<MixtureType>::correct()
 {
     if (debug)
     {
-        Info<< "entering eThermo<MixtureType>::correct()" << endl;
+        Info<< "entering ePsiThermo<MixtureType>::correct()" << endl;
     }
 
     // force the saving of the old-time values
-    psi_.oldTime();
+    this->psi_.oldTime();
 
     calculate();
 
     if (debug)
     {
-        Info<< "exiting eThermo<MixtureType>::correct()" << endl;
+        Info<< "exiting ePsiThermo<MixtureType>::correct()" << endl;
     }
 }
 
 
 template<class MixtureType>
-Foam::tmp<Foam::scalarField> Foam::eThermo<MixtureType>::e
+Foam::tmp<Foam::scalarField> Foam::ePsiThermo<MixtureType>::e
 (
     const scalarField& T,
     const labelList& cells
@@ -188,7 +191,7 @@ Foam::tmp<Foam::scalarField> Foam::eThermo<MixtureType>::e
 
 
 template<class MixtureType>
-Foam::tmp<Foam::scalarField> Foam::eThermo<MixtureType>::e
+Foam::tmp<Foam::scalarField> Foam::ePsiThermo<MixtureType>::e
 (
     const scalarField& T,
     const label patchi
@@ -205,8 +208,9 @@ Foam::tmp<Foam::scalarField> Foam::eThermo<MixtureType>::e
     return te;
 }
 
+
 template<class MixtureType>
-Foam::tmp<Foam::scalarField> Foam::eThermo<MixtureType>::Cp
+Foam::tmp<Foam::scalarField> Foam::ePsiThermo<MixtureType>::Cp
 (
     const scalarField& T,
     const label patchi
@@ -223,10 +227,11 @@ Foam::tmp<Foam::scalarField> Foam::eThermo<MixtureType>::Cp
     return tCp;
 }
 
+
 template<class MixtureType>
-Foam::tmp<Foam::volScalarField> Foam::eThermo<MixtureType>::Cp() const
+Foam::tmp<Foam::volScalarField> Foam::ePsiThermo<MixtureType>::Cp() const
 {
-    const fvMesh& mesh = T_.mesh();
+    const fvMesh& mesh = this->T_.mesh();
 
     tmp<volScalarField> tCp
     (
@@ -242,20 +247,20 @@ Foam::tmp<Foam::volScalarField> Foam::eThermo<MixtureType>::Cp() const
             ),
             mesh,
             dimensionSet(0, 2, -2, -1, 0),
-            T_.boundaryField().types()
+            this->T_.boundaryField().types()
         )
     );
 
     volScalarField& cp = tCp();
 
-    forAll(T_, celli)
+    forAll(this->T_, celli)
     {
-        cp[celli] = this->cellMixture(celli).Cp(T_[celli]);
+        cp[celli] = this->cellMixture(celli).Cp(this->T_[celli]);
     }
 
-    forAll(T_.boundaryField(), patchi)
+    forAll(this->T_.boundaryField(), patchi)
     {
-        const fvPatchScalarField& pT = T_.boundaryField()[patchi];
+        const fvPatchScalarField& pT = this->T_.boundaryField()[patchi];
         fvPatchScalarField& pCp = cp.boundaryField()[patchi];
 
         forAll(pT, facei)
@@ -269,7 +274,7 @@ Foam::tmp<Foam::volScalarField> Foam::eThermo<MixtureType>::Cp() const
 
 
 template<class MixtureType>
-Foam::tmp<Foam::scalarField> Foam::eThermo<MixtureType>::Cv
+Foam::tmp<Foam::scalarField> Foam::ePsiThermo<MixtureType>::Cv
 (
     const scalarField& T,
     const label patchi
@@ -288,9 +293,9 @@ Foam::tmp<Foam::scalarField> Foam::eThermo<MixtureType>::Cv
 
 
 template<class MixtureType>
-Foam::tmp<Foam::volScalarField> Foam::eThermo<MixtureType>::Cv() const
+Foam::tmp<Foam::volScalarField> Foam::ePsiThermo<MixtureType>::Cv() const
 {
-    const fvMesh& mesh = T_.mesh();
+    const fvMesh& mesh = this->T_.mesh();
 
     tmp<volScalarField> tCv
     (
@@ -311,14 +316,15 @@ Foam::tmp<Foam::volScalarField> Foam::eThermo<MixtureType>::Cv() const
 
     volScalarField& cv = tCv();
 
-    forAll(T_, celli)
+    forAll(this->T_, celli)
     {
-        cv[celli] = this->cellMixture(celli).Cv(T_[celli]);
+        cv[celli] = this->cellMixture(celli).Cv(this->T_[celli]);
     }
 
-    forAll(T_.boundaryField(), patchi)
+    forAll(this->T_.boundaryField(), patchi)
     {
-        cv.boundaryField()[patchi] = Cv(T_.boundaryField()[patchi], patchi);
+        cv.boundaryField()[patchi] =
+            Cv(this->T_.boundaryField()[patchi], patchi);
     }
 
     return tCv;
@@ -326,9 +332,9 @@ Foam::tmp<Foam::volScalarField> Foam::eThermo<MixtureType>::Cv() const
 
 
 template<class MixtureType>
-bool Foam::eThermo<MixtureType>::read()
+bool Foam::ePsiThermo<MixtureType>::read()
 {
-    if (basicThermo::read())
+    if (basicPsiThermo::read())
     {
         MixtureType::read(*this);
         return true;
diff --git a/src/thermophysicalModels/basic/eThermo/eThermo.H b/src/thermophysicalModels/basic/psiThermo/ePsiThermo/ePsiThermo.H
similarity index 87%
rename from src/thermophysicalModels/basic/eThermo/eThermo.H
rename to src/thermophysicalModels/basic/psiThermo/ePsiThermo/ePsiThermo.H
index b573ca4aa4e377ce98d162101526ab37c61b9353..fd3071ff1170a8a594a47f26a4daad4db4d34d79 100644
--- a/src/thermophysicalModels/basic/eThermo/eThermo.H
+++ b/src/thermophysicalModels/basic/psiThermo/ePsiThermo/ePsiThermo.H
@@ -23,20 +23,20 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::eThermo
+    Foam::ePsiThermo
 
 Description
-    Internal energy for a mixture
+    Internal energy for a mixture based on compressibility
 
 SourceFiles
-    eThermo.C
+    ePsiThermo.C
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef eThermo_H
-#define eThermo_H
+#ifndef ePsiThermo_H
+#define ePsiThermo_H
 
-#include "basicThermo.H"
+#include "basicPsiThermo.H"
 #include "basicMixture.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -45,53 +45,55 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                           Class eThermo Declaration
+                         Class ePsiThermo Declaration
 \*---------------------------------------------------------------------------*/
 
 template<class MixtureType>
-class eThermo
+class ePsiThermo
 :
-    public basicThermo,
+    public basicPsiThermo,
     public MixtureType
 {
     // Private data
 
+        //- Internal energy field
         volScalarField e_;
 
 
     // Private member functions
 
+        //- Calculate the thermo variables
         void calculate();
 
         //- Construct as copy (not implemented)
-        eThermo(const eThermo<MixtureType>&);
+        ePsiThermo(const ePsiThermo<MixtureType>&);
 
 
 public:
 
     //- Runtime type information
-    TypeName("eThermo");
+    TypeName("ePsiThermo");
 
 
     // Constructors
 
         //- Construct from mese
-        eThermo(const fvMesh&);
+        ePsiThermo(const fvMesh&);
 
 
     //- Destructor
-    virtual ~eThermo();
+    virtual ~ePsiThermo();
 
 
     // Member functions
 
-        //- Return the compostion of the combustion mixture
+        //- Return the compostion of the mixture
         virtual basicMixture& composition()
         {
             return *this;
         }
 
-        //- Return the compostion of the combustion mixture
+        //- Return the compostion of the mixture
         virtual const basicMixture& composition() const
         {
             return *this;
@@ -166,7 +168,7 @@ public:
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
 
 #ifdef NoRepository
-#   include "eThermo.C"
+#   include "ePsiThermo.C"
 #endif
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/thermophysicalModels/basic/basicThermo/basicThermos.C b/src/thermophysicalModels/basic/psiThermo/ePsiThermo/ePsiThermos.C
similarity index 84%
rename from src/thermophysicalModels/basic/basicThermo/basicThermos.C
rename to src/thermophysicalModels/basic/psiThermo/ePsiThermo/ePsiThermos.C
index 7a837bcc9baf6ffe7a5c9bca0162ecb6e2cbe9e8..0517a06ec20498b1cf01e9ab211f1cb8be325ceb 100644
--- a/src/thermophysicalModels/basic/basicThermo/basicThermos.C
+++ b/src/thermophysicalModels/basic/psiThermo/ePsiThermo/ePsiThermos.C
@@ -22,30 +22,22 @@ License
     along with OpenFOAM; if not, write to the Free Software Foundation,
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
-Description
-    Selection function for internal energy based thermodynamics package.
-
 \*---------------------------------------------------------------------------*/
 
-#include "error.H"
-
-#include "basicThermo.H"
-#include "makeBasicThermo.H"
+#include "makeBasicPsiThermo.H"
 
 #include "perfectGas.H"
 
-#include "hConstThermo.H"
+#include "eConstThermo.H"
 #include "janafThermo.H"
 #include "specieThermo.H"
 
 #include "constTransport.H"
 #include "sutherlandTransport.H"
 
-#include "hThermo.H"
+#include "ePsiThermo.H"
 #include "pureMixture.H"
 
-#include "addToRunTimeSelectionTable.H"
-
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 namespace Foam
@@ -53,27 +45,27 @@ namespace Foam
 
 /* * * * * * * * * * * * * * * private static data * * * * * * * * * * * * * */
 
-makeBasicThermo
+makeBasicPsiThermo
 (
-    hThermo,
+    ePsiThermo,
     pureMixture,
     constTransport,
-    hConstThermo,
+    eConstThermo,
     perfectGas
 );
 
-makeBasicThermo
+makeBasicPsiThermo
 (
-    hThermo,
+    ePsiThermo,
     pureMixture,
     sutherlandTransport,
-    hConstThermo,
+    eConstThermo,
     perfectGas
 );
 
-makeBasicThermo
+makeBasicPsiThermo
 (
-    hThermo,
+    ePsiThermo,
     pureMixture,
     sutherlandTransport,
     janafThermo,
diff --git a/src/thermophysicalModels/basic/hThermo/hThermo.C b/src/thermophysicalModels/basic/psiThermo/hPsiThermo/hPsiThermo.C
similarity index 73%
rename from src/thermophysicalModels/basic/hThermo/hThermo.C
rename to src/thermophysicalModels/basic/psiThermo/hPsiThermo/hPsiThermo.C
index 74e80601b9ae9f5f3b7e8fed64efbe1d5107baee..ab85557cf478222b30631345410042555ac97b9b 100644
--- a/src/thermophysicalModels/basic/hThermo/hThermo.C
+++ b/src/thermophysicalModels/basic/psiThermo/hPsiThermo/hPsiThermo.C
@@ -24,72 +24,20 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "hThermo.H"
-#include "fvMesh.H"
-#include "fixedValueFvPatchFields.H"
-
-// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
-
-template<class MixtureType>
-Foam::hThermo<MixtureType>::hThermo(const fvMesh& mesh)
-:
-    basicThermo(mesh),
-    MixtureType(*this, mesh),
-
-    h_
-    (
-        IOobject
-        (
-            "h",
-            mesh.time().timeName(),
-            mesh,
-            IOobject::NO_READ,
-            IOobject::NO_WRITE
-        ),
-        mesh,
-        dimensionSet(0, 2, -2, 0, 0),
-        hBoundaryTypes()
-    )
-{
-    scalarField& hCells = h_.internalField();
-    const scalarField& TCells = T_.internalField();
-
-    forAll(hCells, celli)
-    {
-        hCells[celli] = this->cellMixture(celli).H(TCells[celli]);
-    }
-
-    forAll(h_.boundaryField(), patchi)
-    {
-        h_.boundaryField()[patchi] == h(T_.boundaryField()[patchi], patchi);
-    }
-
-    hBoundaryCorrection(h_);
-
-    calculate();
-    psi_.oldTime();   // Switch on saving old time
-}
-
-
-// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
-
-template<class MixtureType>
-Foam::hThermo<MixtureType>::~hThermo()
-{}
-
+#include "hPsiThermo.H"
 
 // * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
 
 template<class MixtureType>
-void Foam::hThermo<MixtureType>::calculate()
+void Foam::hPsiThermo<MixtureType>::calculate()
 {
     const scalarField& hCells = h_.internalField();
-    const scalarField& pCells = p_.internalField();
+    const scalarField& pCells = this->p_.internalField();
 
-    scalarField& TCells = T_.internalField();
-    scalarField& psiCells = psi_.internalField();
-    scalarField& muCells = mu_.internalField();
-    scalarField& alphaCells = alpha_.internalField();
+    scalarField& TCells = this->T_.internalField();
+    scalarField& psiCells = this->psi_.internalField();
+    scalarField& muCells = this->mu_.internalField();
+    scalarField& alphaCells = this->alpha_.internalField();
 
     forAll(TCells, celli)
     {
@@ -105,14 +53,14 @@ void Foam::hThermo<MixtureType>::calculate()
 
     forAll(T_.boundaryField(), patchi)
     {
-        fvPatchScalarField& pp = p_.boundaryField()[patchi];
-        fvPatchScalarField& pT = T_.boundaryField()[patchi];
-        fvPatchScalarField& ppsi = psi_.boundaryField()[patchi];
+        fvPatchScalarField& pp = this->p_.boundaryField()[patchi];
+        fvPatchScalarField& pT = this->T_.boundaryField()[patchi];
+        fvPatchScalarField& ppsi = this->psi_.boundaryField()[patchi];
 
         fvPatchScalarField& ph = h_.boundaryField()[patchi];
 
-        fvPatchScalarField& pmu = mu_.boundaryField()[patchi];
-        fvPatchScalarField& palpha = alpha_.boundaryField()[patchi];
+        fvPatchScalarField& pmu = this->mu_.boundaryField()[patchi];
+        fvPatchScalarField& palpha = this->alpha_.boundaryField()[patchi];
 
         if (pT.fixesValue())
         {
@@ -146,30 +94,83 @@ void Foam::hThermo<MixtureType>::calculate()
 }
 
 
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template<class MixtureType>
+Foam::hPsiThermo<MixtureType>::hPsiThermo(const fvMesh& mesh)
+:
+    basicPsiThermo(mesh),
+    MixtureType(*this, mesh),
+
+    h_
+    (
+        IOobject
+        (
+            "h",
+            mesh.time().timeName(),
+            mesh,
+            IOobject::NO_READ,
+            IOobject::NO_WRITE
+        ),
+        mesh,
+        dimensionSet(0, 2, -2, 0, 0),
+        this->hBoundaryTypes()
+    )
+{
+    scalarField& hCells = h_.internalField();
+    const scalarField& TCells = this->T_.internalField();
+
+    forAll(hCells, celli)
+    {
+        hCells[celli] = this->cellMixture(celli).H(TCells[celli]);
+    }
+
+    forAll(h_.boundaryField(), patchi)
+    {
+        h_.boundaryField()[patchi] ==
+            h(this->T_.boundaryField()[patchi], patchi);
+    }
+
+    hBoundaryCorrection(h_);
+
+    calculate();
+
+    // Switch on saving old time
+    this->psi_.oldTime();
+}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+template<class MixtureType>
+Foam::hPsiThermo<MixtureType>::~hPsiThermo()
+{}
+
+
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 template<class MixtureType>
-void Foam::hThermo<MixtureType>::correct()
+void Foam::hPsiThermo<MixtureType>::correct()
 {
     if (debug)
     {
-        Info<< "entering hThermo<MixtureType>::correct()" << endl;
+        Info<< "entering hPsiThermo<MixtureType>::correct()" << endl;
     }
 
     // force the saving of the old-time values
-    psi_.oldTime();
+    this->psi_.oldTime();
 
     calculate();
 
     if (debug)
     {
-        Info<< "exiting hThermo<MixtureType>::correct()" << endl;
+        Info<< "exiting hPsiThermo<MixtureType>::correct()" << endl;
     }
 }
 
 
 template<class MixtureType>
-Foam::tmp<Foam::scalarField> Foam::hThermo<MixtureType>::h
+Foam::tmp<Foam::scalarField> Foam::hPsiThermo<MixtureType>::h
 (
     const scalarField& T,
     const labelList& cells
@@ -188,7 +189,7 @@ Foam::tmp<Foam::scalarField> Foam::hThermo<MixtureType>::h
 
 
 template<class MixtureType>
-Foam::tmp<Foam::scalarField> Foam::hThermo<MixtureType>::h
+Foam::tmp<Foam::scalarField> Foam::hPsiThermo<MixtureType>::h
 (
     const scalarField& T,
     const label patchi
@@ -205,8 +206,9 @@ Foam::tmp<Foam::scalarField> Foam::hThermo<MixtureType>::h
     return th;
 }
 
+
 template<class MixtureType>
-Foam::tmp<Foam::scalarField> Foam::hThermo<MixtureType>::Cp
+Foam::tmp<Foam::scalarField> Foam::hPsiThermo<MixtureType>::Cp
 (
     const scalarField& T,
     const label patchi
@@ -223,10 +225,11 @@ Foam::tmp<Foam::scalarField> Foam::hThermo<MixtureType>::Cp
     return tCp;
 }
 
+
 template<class MixtureType>
-Foam::tmp<Foam::volScalarField> Foam::hThermo<MixtureType>::Cp() const
+Foam::tmp<Foam::volScalarField> Foam::hPsiThermo<MixtureType>::Cp() const
 {
-    const fvMesh& mesh = T_.mesh();
+    const fvMesh& mesh = this->T_.mesh();
 
     tmp<volScalarField> tCp
     (
@@ -242,20 +245,20 @@ Foam::tmp<Foam::volScalarField> Foam::hThermo<MixtureType>::Cp() const
             ),
             mesh,
             dimensionSet(0, 2, -2, -1, 0),
-            T_.boundaryField().types()
+            this->T_.boundaryField().types()
         )
     );
 
     volScalarField& cp = tCp();
 
-    forAll(T_, celli)
+    forAll(this->T_, celli)
     {
-        cp[celli] = this->cellMixture(celli).Cp(T_[celli]);
+        cp[celli] = this->cellMixture(celli).Cp(this->T_[celli]);
     }
 
-    forAll(T_.boundaryField(), patchi)
+    forAll(this->T_.boundaryField(), patchi)
     {
-        const fvPatchScalarField& pT = T_.boundaryField()[patchi];
+        const fvPatchScalarField& pT = this->T_.boundaryField()[patchi];
         fvPatchScalarField& pCp = cp.boundaryField()[patchi];
 
         forAll(pT, facei)
@@ -269,7 +272,7 @@ Foam::tmp<Foam::volScalarField> Foam::hThermo<MixtureType>::Cp() const
 
 
 template<class MixtureType>
-Foam::tmp<Foam::scalarField> Foam::hThermo<MixtureType>::Cv
+Foam::tmp<Foam::scalarField> Foam::hPsiThermo<MixtureType>::Cv
 (
     const scalarField& T,
     const label patchi
@@ -288,9 +291,9 @@ Foam::tmp<Foam::scalarField> Foam::hThermo<MixtureType>::Cv
 
 
 template<class MixtureType>
-Foam::tmp<Foam::volScalarField> Foam::hThermo<MixtureType>::Cv() const
+Foam::tmp<Foam::volScalarField> Foam::hPsiThermo<MixtureType>::Cv() const
 {
-    const fvMesh& mesh = T_.mesh();
+    const fvMesh& mesh = this->T_.mesh();
 
     tmp<volScalarField> tCv
     (
@@ -311,23 +314,25 @@ Foam::tmp<Foam::volScalarField> Foam::hThermo<MixtureType>::Cv() const
 
     volScalarField& cv = tCv();
 
-    forAll(T_, celli)
+    forAll(this->T_, celli)
     {
-        cv[celli] = this->cellMixture(celli).Cv(T_[celli]);
+        cv[celli] = this->cellMixture(celli).Cv(this->T_[celli]);
     }
 
-    forAll(T_.boundaryField(), patchi)
+    forAll(this->T_.boundaryField(), patchi)
     {
-        cv.boundaryField()[patchi] = Cv(T_.boundaryField()[patchi], patchi);
+        cv.boundaryField()[patchi] =
+            Cv(this->T_.boundaryField()[patchi], patchi);
     }
 
     return tCv;
 }
 
+
 template<class MixtureType>
-bool Foam::hThermo<MixtureType>::read()
+bool Foam::hPsiThermo<MixtureType>::read()
 {
-    if (basicThermo::read())
+    if (basicPsiThermo::read())
     {
         MixtureType::read(*this);
         return true;
diff --git a/src/thermophysicalModels/basic/psiThermo/hPsiThermo/hPsiThermo.H b/src/thermophysicalModels/basic/psiThermo/hPsiThermo/hPsiThermo.H
new file mode 100644
index 0000000000000000000000000000000000000000..4eae7214a0301a19e5ad1882a983f3b2add23002
--- /dev/null
+++ b/src/thermophysicalModels/basic/psiThermo/hPsiThermo/hPsiThermo.H
@@ -0,0 +1,178 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::hPsiThermo
+
+Description
+    Enthalpy for a mixture based on compressibility
+
+SourceFiles
+    hPsiThermo.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef hPsiThermo_H
+#define hPsiThermo_H
+
+#include "basicPsiThermo.H"
+#include "basicMixture.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+                         Class hPsiThermo Declaration
+\*---------------------------------------------------------------------------*/
+
+template<class MixtureType>
+class hPsiThermo
+:
+    public basicPsiThermo,
+    public MixtureType
+{
+    // Private data
+
+        //- Enthalpy field
+        volScalarField h_;
+
+
+    // Private member functions
+
+        //- Calculate the thermo variables
+        void calculate();
+
+        //- Construct as copy (not implemented)
+        hPsiThermo(const hPsiThermo<MixtureType>&);
+
+
+public:
+
+    //- Runtime type information
+    TypeName("hPsiThermo");
+
+
+    // Constructors
+
+        //- Construct from mesh
+        hPsiThermo(const fvMesh&);
+
+
+    //- Destructor
+    virtual ~hPsiThermo();
+
+
+    // Member functions
+
+        //- Return the compostion of the mixture
+        virtual basicMixture& composition()
+        {
+            return *this;
+        }
+
+        //- Return the compostion of the mixture
+        virtual const basicMixture& composition() const
+        {
+            return *this;
+        }
+
+        //- Update properties
+        virtual void correct();
+
+
+        // Access to thermodynamic state variables
+
+            //- Enthalpy [J/kg]
+            //  Non-const access allowed for transport equations
+            virtual volScalarField& h()
+            {
+                return h_;
+            }
+
+            //- Enthalpy [J/kg]
+            virtual const volScalarField& h() const
+            {
+                return h_;
+            }
+
+
+        // Fields derived from thermodynamic state variables
+
+            //- Enthalpy for cell-set [J/kg]
+            virtual tmp<scalarField> h
+            (
+                const scalarField& T,
+                const labelList& cells
+            ) const;
+
+            //- Enthalpy for patch [J/kg]
+            virtual tmp<scalarField> h
+            (
+                const scalarField& T,
+                const label patchi
+            ) const;
+
+            //- Heat capacity at constant pressure for patch [J/kg/K]
+            virtual tmp<scalarField> Cp
+            (
+                const scalarField& T,
+                const label patchi
+            ) const;
+
+            //- Heat capacity at constant pressure [J/kg/K]
+            virtual tmp<volScalarField> Cp() const;
+
+            //- Heat capacity at constant volume for patch [J/kg/K]
+            virtual tmp<scalarField> Cv
+            (
+                const scalarField& T,
+                const label patchi
+            ) const;
+
+            //- Heat capacity at constant volume [J/kg/K]
+            virtual tmp<volScalarField> Cv() const;
+
+
+        //- Read thermophysicalProperties dictionary
+        virtual bool read();
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+
+#ifdef NoRepository
+#   include "hPsiThermo.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/basic/eThermo/eThermos.C b/src/thermophysicalModels/basic/psiThermo/hPsiThermo/hPsiThermos.C
similarity index 86%
rename from src/thermophysicalModels/basic/eThermo/eThermos.C
rename to src/thermophysicalModels/basic/psiThermo/hPsiThermo/hPsiThermos.C
index b34bd9ce01ef460ddb2d24a206afd63e4dd336ca..04ed4722adfbb5f952749d6a1534dd51bcc17237 100644
--- a/src/thermophysicalModels/basic/eThermo/eThermos.C
+++ b/src/thermophysicalModels/basic/psiThermo/hPsiThermo/hPsiThermos.C
@@ -22,15 +22,9 @@ License
     along with OpenFOAM; if not, write to the Free Software Foundation,
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
-Description
-    Selection function for internal energy based thermodynamics package.
-
 \*---------------------------------------------------------------------------*/
 
-#include "error.H"
-
-#include "basicThermo.H"
-#include "makeBasicThermo.H"
+#include "makeBasicPsiThermo.H"
 
 #include "perfectGas.H"
 
@@ -41,11 +35,9 @@ Description
 #include "constTransport.H"
 #include "sutherlandTransport.H"
 
-#include "eThermo.H"
+#include "hPsiThermo.H"
 #include "pureMixture.H"
 
-#include "addToRunTimeSelectionTable.H"
-
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 namespace Foam
@@ -53,34 +45,34 @@ namespace Foam
 
 /* * * * * * * * * * * * * * * private static data * * * * * * * * * * * * * */
 
-
-makeBasicThermo
+makeBasicPsiThermo
 (
-    eThermo,
+    hPsiThermo,
     pureMixture,
     constTransport,
     hConstThermo,
     perfectGas
 );
 
-makeBasicThermo
+makeBasicPsiThermo
 (
-    eThermo,
+    hPsiThermo,
     pureMixture,
     sutherlandTransport,
     hConstThermo,
     perfectGas
 );
 
-makeBasicThermo
+makeBasicPsiThermo
 (
-    eThermo,
+    hPsiThermo,
     pureMixture,
     sutherlandTransport,
     janafThermo,
     perfectGas
 );
 
+
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 } // End namespace Foam
diff --git a/src/thermophysicalModels/basic/rhoThermo/.directory b/src/thermophysicalModels/basic/rhoThermo/.directory
new file mode 100644
index 0000000000000000000000000000000000000000..72608b79a0c4cea5c3d5399ea62dac6e34f75df9
--- /dev/null
+++ b/src/thermophysicalModels/basic/rhoThermo/.directory
@@ -0,0 +1,5 @@
+[Dolphin]
+AdditionalInfo=3
+SortOrder=0
+Timestamp=2009,6,10,15,58,20
+ViewMode=1
diff --git a/src/thermophysicalModels/basic/rhoThermo/basicRhoThermo/basicRhoThermo.C b/src/thermophysicalModels/basic/rhoThermo/basicRhoThermo/basicRhoThermo.C
new file mode 100644
index 0000000000000000000000000000000000000000..dff5dac38796abe255ee0ba5c3ba4246b07e9f80
--- /dev/null
+++ b/src/thermophysicalModels/basic/rhoThermo/basicRhoThermo/basicRhoThermo.C
@@ -0,0 +1,79 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "basicRhoThermo.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    defineTypeNameAndDebug(basicRhoThermo, 0);
+    defineRunTimeSelectionTable(basicRhoThermo, fvMesh);
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::basicRhoThermo::basicRhoThermo(const fvMesh& mesh)
+:
+    basicThermo(mesh),
+    rho_
+    (
+        IOobject
+        (
+            "rhoThermo",
+            mesh.time().timeName(),
+            mesh,
+            IOobject::NO_READ,
+            IOobject::NO_WRITE
+        ),
+        mesh,
+        dimDensity
+    )
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::basicRhoThermo::~basicRhoThermo()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField> Foam::basicRhoThermo::rho() const
+{
+    return rho_;
+}
+
+
+Foam::volScalarField& Foam::basicRhoThermo::rho()
+{
+    return rho_;
+}
+
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/basic/rhoThermo/basicRhoThermo/basicRhoThermo.H b/src/thermophysicalModels/basic/rhoThermo/basicRhoThermo/basicRhoThermo.H
new file mode 100644
index 0000000000000000000000000000000000000000..04e8ea1c3308809298de16480fa32c9fd64dd2f5
--- /dev/null
+++ b/src/thermophysicalModels/basic/rhoThermo/basicRhoThermo/basicRhoThermo.H
@@ -0,0 +1,123 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::basicRhoThermo
+
+Description
+    Basic thermodynamic properties based on density
+
+SourceFiles
+    basicRhoThermo.C
+    newBasicRhoThermo.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef basicRhoThermo_H
+#define basicRhoThermo_H
+
+#include "basicThermo.H"
+#include "runTimeSelectionTables.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+                       Class basicRhoThermo Declaration
+\*---------------------------------------------------------------------------*/
+
+class basicRhoThermo
+:
+    public basicThermo
+{
+
+protected:
+
+    // Protected data
+
+        //- Density field [kg/m^3]
+        //  Named 'rhoThermo' to avoid (potential) conflict with solver density
+        volScalarField rho_;
+
+
+    // Protected member functions
+
+        //- Construct as copy (not implemented)
+        basicRhoThermo(const basicRhoThermo&);
+
+
+public:
+
+    //- Runtime type information
+    TypeName("basicRhoThermo");
+
+
+    //- Declare run-time constructor selection table
+    declareRunTimeSelectionTable
+    (
+        autoPtr,
+        basicRhoThermo,
+        fvMesh,
+        (const fvMesh& mesh),
+        (mesh)
+    );
+
+
+    // Constructors
+
+        //- Construct from mesh
+        basicRhoThermo(const fvMesh&);
+
+
+    //- Selector
+    static autoPtr<basicRhoThermo> New(const fvMesh&);
+
+
+    //- Destructor
+    virtual ~basicRhoThermo();
+
+
+    // Member functions
+
+        // Fields derived from thermodynamic state variables
+
+            //- Density [kg/m^3]
+            virtual tmp<volScalarField> rho() const;
+
+            //- Return non-const access to the local density field [kg/m^3]
+            virtual volScalarField& rho();
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/basic/basicThermo/makeBasicThermo.H b/src/thermophysicalModels/basic/rhoThermo/basicRhoThermo/makeBasicRhoThermo.H
similarity index 76%
rename from src/thermophysicalModels/basic/basicThermo/makeBasicThermo.H
rename to src/thermophysicalModels/basic/rhoThermo/basicRhoThermo/makeBasicRhoThermo.H
index 59165247a470305374d758aee6475680bf4cc9b5..e6302bea8c382a4edee96badd71cfb2bfec2ef2c 100644
--- a/src/thermophysicalModels/basic/basicThermo/makeBasicThermo.H
+++ b/src/thermophysicalModels/basic/rhoThermo/basicRhoThermo/makeBasicRhoThermo.H
@@ -23,36 +23,42 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 InClass
-    Foam::basicThermo
+    Foam::basicRhoThermo
 
 Description
+    Macros for creating 'basic' density-based thermo packages
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef makeBasicThermo_H
-#define makeBasicThermo_H
+#ifndef makeBasicRhoThermo_H
+#define makeBasicRhoThermo_H
 
-#include "basicThermo.H"
+#include "basicRhoThermo.H"
+#include "addToRunTimeSelectionTable.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-#define makeBasicThermo(Cthermo,Mixture,Transport,Thermo,EqnOfState)          \
+#define makeBasicRhoThermo(Cthermo,Mixture,Transport,Thermo,EqnOfState)       \
                                                                               \
 typedef Cthermo<Mixture<Transport<specieThermo<Thermo<EqnOfState> > > > >     \
     Cthermo##Mixture##Transport##Thermo##EqnOfState;                          \
                                                                               \
 defineTemplateTypeNameAndDebugWithName                                        \
-    (Cthermo##Mixture##Transport##Thermo##EqnOfState,                         \
+(                                                                             \
+    Cthermo##Mixture##Transport##Thermo##EqnOfState,                          \
     #Cthermo                                                                  \
-    "<"#Mixture"<"#Transport"<specieThermo<"#Thermo"<"#EqnOfState">>>>>", 0); \
+        "<"#Mixture"<"#Transport"<specieThermo<"#Thermo"<"#EqnOfState">>>>>", \
+    0                                                                         \
+);                                                                            \
                                                                               \
 addToRunTimeSelectionTable                                                    \
 (                                                                             \
-    basicThermo,                                                              \
+    basicRhoThermo,                                                           \
     Cthermo##Mixture##Transport##Thermo##EqnOfState,                          \
     fvMesh                                                                    \
 )
 
+
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 #endif
diff --git a/src/thermophysicalModels/basic/basicThermo/newBasicThermo.C b/src/thermophysicalModels/basic/rhoThermo/basicRhoThermo/newBasicRhoThermo.C
similarity index 68%
rename from src/thermophysicalModels/basic/basicThermo/newBasicThermo.C
rename to src/thermophysicalModels/basic/rhoThermo/basicRhoThermo/newBasicRhoThermo.C
index 3ff6bc9dd19716ce001259383d23e175e2102ae4..9a7ec5ac86f19c77078dc9a2ce899baa732d2bda 100644
--- a/src/thermophysicalModels/basic/basicThermo/newBasicThermo.C
+++ b/src/thermophysicalModels/basic/rhoThermo/basicRhoThermo/newBasicRhoThermo.C
@@ -23,23 +23,20 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Description
-    Selection function for internal energy based thermodynamics package.
+    Selection function for 'basic' density-based thermodynamics
 
 \*---------------------------------------------------------------------------*/
 
-#include "basicThermo.H"
-#include "fvMesh.H"
+#include "basicRhoThermo.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-namespace Foam
+Foam::autoPtr<Foam::basicRhoThermo> Foam::basicRhoThermo::New
+(
+    const fvMesh& mesh
+)
 {
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-autoPtr<basicThermo> basicThermo::New(const fvMesh& mesh)
-{
-    word basicThermoTypeName;
+    word thermoTypeName;
 
     // Enclose the creation of the thermophysicalProperties to ensure it is
     // deleted before the turbulenceModel is created otherwise the dictionary
@@ -57,30 +54,25 @@ autoPtr<basicThermo> basicThermo::New(const fvMesh& mesh)
             )
         );
 
-        thermoDict.lookup("thermoType") >> basicThermoTypeName;
+        thermoDict.lookup("thermoType") >> thermoTypeName;
     }
 
-    Info<< "Selecting thermodynamics package " << basicThermoTypeName << endl;
+    Info<< "Selecting thermodynamics package " << thermoTypeName << endl;
 
     fvMeshConstructorTable::iterator cstrIter =
-        fvMeshConstructorTablePtr_->find(basicThermoTypeName);
+        fvMeshConstructorTablePtr_->find(thermoTypeName);
 
     if (cstrIter == fvMeshConstructorTablePtr_->end())
     {
-        FatalErrorIn("basicThermo::New(const fvMesh&)")
-            << "Unknown basicThermo type " << basicThermoTypeName
-            << endl << endl
-            << "Valid basicThermo types are :" << endl
-            << fvMeshConstructorTablePtr_->toc()
+        FatalErrorIn("basicRhoThermo::New(const fvMesh&)")
+            << "Unknown basicRhoThermo type " << thermoTypeName << nl << nl
+            << "Valid basicRhoThermo types are:" << nl
+            << fvMeshConstructorTablePtr_->toc() << nl
             << exit(FatalError);
     }
 
-    return autoPtr<basicThermo>(cstrIter()(mesh));
+    return autoPtr<basicRhoThermo>(cstrIter()(mesh));
 }
 
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-} // End namespace Foam
-
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/basic/rhoThermo/hRhoThermo/hRhoThermo.C b/src/thermophysicalModels/basic/rhoThermo/hRhoThermo/hRhoThermo.C
new file mode 100644
index 0000000000000000000000000000000000000000..ce3486fa152124a02503f5bdd6c6787eb888438c
--- /dev/null
+++ b/src/thermophysicalModels/basic/rhoThermo/hRhoThermo/hRhoThermo.C
@@ -0,0 +1,346 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "hRhoThermo.H"
+
+// * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
+
+template<class MixtureType>
+void Foam::hRhoThermo<MixtureType>::calculate()
+{
+    const scalarField& hCells = this->h_.internalField();
+    const scalarField& pCells = this->p_.internalField();
+
+    scalarField& TCells = this->T_.internalField();
+    scalarField& psiCells = this->psi_.internalField();
+    scalarField& rhoCells = this->rho_.internalField();
+    scalarField& muCells = this->mu_.internalField();
+    scalarField& alphaCells = this->alpha_.internalField();
+
+    forAll(TCells, celli)
+    {
+        const typename MixtureType::thermoType& mixture_ =
+            this->cellMixture(celli);
+
+        TCells[celli] = mixture_.TH(hCells[celli], TCells[celli]);
+        psiCells[celli] = mixture_.psi(pCells[celli], TCells[celli]);
+        rhoCells[celli] = mixture_.rho(pCells[celli], TCells[celli]);
+
+        muCells[celli] = mixture_.mu(TCells[celli]);
+        alphaCells[celli] = mixture_.alpha(TCells[celli]);
+    }
+
+    forAll(this->T_.boundaryField(), patchi)
+    {
+        fvPatchScalarField& pp = this->p_.boundaryField()[patchi];
+        fvPatchScalarField& pT = this->T_.boundaryField()[patchi];
+        fvPatchScalarField& ppsi = this->psi_.boundaryField()[patchi];
+        fvPatchScalarField& prho = this->rho_.boundaryField()[patchi];
+
+        fvPatchScalarField& ph = this->h_.boundaryField()[patchi];
+
+        fvPatchScalarField& pmu = this->mu_.boundaryField()[patchi];
+        fvPatchScalarField& palpha = this->alpha_.boundaryField()[patchi];
+
+        if (pT.fixesValue())
+        {
+            forAll(pT, facei)
+            {
+                const typename MixtureType::thermoType& mixture_ =
+                    this->patchFaceMixture(patchi, facei);
+
+                ph[facei] = mixture_.H(pT[facei]);
+
+                ppsi[facei] = mixture_.psi(pp[facei], pT[facei]);
+                prho[facei] = mixture_.rho(pp[facei], pT[facei]);
+                pmu[facei] = mixture_.mu(pT[facei]);
+                palpha[facei] = mixture_.alpha(pT[facei]);
+            }
+        }
+        else
+        {
+            forAll(pT, facei)
+            {
+                const typename MixtureType::thermoType& mixture_ =
+                    this->patchFaceMixture(patchi, facei);
+
+                pT[facei] = mixture_.TH(ph[facei], pT[facei]);
+
+                ppsi[facei] = mixture_.psi(pp[facei], pT[facei]);
+                prho[facei] = mixture_.rho(pp[facei], pT[facei]);
+                pmu[facei] = mixture_.mu(pT[facei]);
+                palpha[facei] = mixture_.alpha(pT[facei]);
+            }
+        }
+    }
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template<class MixtureType>
+Foam::hRhoThermo<MixtureType>::hRhoThermo(const fvMesh& mesh)
+:
+    basicRhoThermo(mesh),
+    MixtureType(*this, mesh),
+
+    h_
+    (
+        IOobject
+        (
+            "h",
+            mesh.time().timeName(),
+            mesh,
+            IOobject::NO_READ,
+            IOobject::NO_WRITE
+        ),
+        mesh,
+        dimensionSet(0, 2, -2, 0, 0),
+        this->hBoundaryTypes()
+    )
+{
+    scalarField& hCells = h_.internalField();
+    const scalarField& TCells = this->T_.internalField();
+
+    forAll(hCells, celli)
+    {
+        hCells[celli] = this->cellMixture(celli).H(TCells[celli]);
+    }
+
+    forAll(h_.boundaryField(), patchi)
+    {
+        h_.boundaryField()[patchi] ==
+            h(this->T_.boundaryField()[patchi], patchi);
+    }
+
+    hBoundaryCorrection(h_);
+
+    calculate();
+}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+template<class MixtureType>
+Foam::hRhoThermo<MixtureType>::~hRhoThermo()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+template<class MixtureType>
+void Foam::hRhoThermo<MixtureType>::correct()
+{
+    if (debug)
+    {
+        Info<< "entering hRhoThermo<MixtureType>::correct()" << endl;
+    }
+
+    calculate();
+
+    if (debug)
+    {
+        Info<< "exiting hRhoThermo<MixtureType>::correct()" << endl;
+    }
+}
+
+
+template<class MixtureType>
+Foam::tmp<Foam::scalarField> Foam::hRhoThermo<MixtureType>::h
+(
+    const scalarField& T,
+    const labelList& cells
+) const
+{
+    tmp<scalarField> th(new scalarField(T.size()));
+    scalarField& h = th();
+
+    forAll(T, celli)
+    {
+        h[celli] = this->cellMixture(cells[celli]).H(T[celli]);
+    }
+
+    return th;
+}
+
+
+template<class MixtureType>
+Foam::tmp<Foam::scalarField> Foam::hRhoThermo<MixtureType>::h
+(
+    const scalarField& T,
+    const label patchi
+) const
+{
+    tmp<scalarField> th(new scalarField(T.size()));
+    scalarField& h = th();
+
+    forAll(T, facei)
+    {
+        h[facei] = this->patchFaceMixture(patchi, facei).H(T[facei]);
+    }
+
+    return th;
+}
+
+
+template<class MixtureType>
+Foam::tmp<Foam::scalarField> Foam::hRhoThermo<MixtureType>::Cp
+(
+    const scalarField& T,
+    const label patchi
+) const
+{
+    tmp<scalarField> tCp(new scalarField(T.size()));
+    scalarField& cp = tCp();
+
+    forAll(T, facei)
+    {
+        cp[facei] = this->patchFaceMixture(patchi, facei).Cp(T[facei]);
+    }
+
+    return tCp;
+}
+
+
+template<class MixtureType>
+Foam::tmp<Foam::volScalarField> Foam::hRhoThermo<MixtureType>::Cp() const
+{
+    const fvMesh& mesh = this->T_.mesh();
+
+    tmp<volScalarField> tCp
+    (
+        new volScalarField
+        (
+            IOobject
+            (
+                "Cp",
+                mesh.time().timeName(),
+                mesh,
+                IOobject::NO_READ,
+                IOobject::NO_WRITE
+            ),
+            mesh,
+            dimensionSet(0, 2, -2, -1, 0),
+            this->T_.boundaryField().types()
+        )
+    );
+
+    volScalarField& cp = tCp();
+
+    forAll(this->T_, celli)
+    {
+        cp[celli] = this->cellMixture(celli).Cp(this->T_[celli]);
+    }
+
+    forAll(this->T_.boundaryField(), patchi)
+    {
+        const fvPatchScalarField& pT = this->T_.boundaryField()[patchi];
+        fvPatchScalarField& pCp = cp.boundaryField()[patchi];
+
+        forAll(pT, facei)
+        {
+            pCp[facei] = this->patchFaceMixture(patchi, facei).Cp(pT[facei]);
+        }
+    }
+
+    return tCp;
+}
+
+
+template<class MixtureType>
+Foam::tmp<Foam::scalarField> Foam::hRhoThermo<MixtureType>::Cv
+(
+    const scalarField& T,
+    const label patchi
+) const
+{
+    tmp<scalarField> tCv(new scalarField(T.size()));
+    scalarField& cv = tCv();
+
+    forAll(T, facei)
+    {
+        cv[facei] = this->patchFaceMixture(patchi, facei).Cv(T[facei]);
+    }
+
+    return tCv;
+}
+
+
+template<class MixtureType>
+Foam::tmp<Foam::volScalarField> Foam::hRhoThermo<MixtureType>::Cv() const
+{
+    const fvMesh& mesh = this->T_.mesh();
+
+    tmp<volScalarField> tCv
+    (
+        new volScalarField
+        (
+            IOobject
+            (
+                "Cv",
+                mesh.time().timeName(),
+                mesh,
+                IOobject::NO_READ,
+                IOobject::NO_WRITE
+            ),
+            mesh,
+            dimensionSet(0, 2, -2, -1, 0)
+        )
+    );
+
+    volScalarField& cv = tCv();
+
+    forAll(this->T_, celli)
+    {
+        cv[celli] = this->cellMixture(celli).Cv(this->T_[celli]);
+    }
+
+    forAll(this->T_.boundaryField(), patchi)
+    {
+        cv.boundaryField()[patchi] =
+            Cv(this->T_.boundaryField()[patchi], patchi);
+    }
+
+    return tCv;
+}
+
+
+template<class MixtureType>
+bool Foam::hRhoThermo<MixtureType>::read()
+{
+    if (basicRhoThermo::read())
+    {
+        MixtureType::read(*this);
+        return true;
+    }
+    else
+    {
+        return false;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/basic/hThermo/hThermo.H b/src/thermophysicalModels/basic/rhoThermo/hRhoThermo/hRhoThermo.H
similarity index 89%
rename from src/thermophysicalModels/basic/hThermo/hThermo.H
rename to src/thermophysicalModels/basic/rhoThermo/hRhoThermo/hRhoThermo.H
index ead0088a7cae670e2e340f63bf59069ff7a965aa..a83a241c26354dfad0d1d4cd18f46f9dde950e72 100644
--- a/src/thermophysicalModels/basic/hThermo/hThermo.H
+++ b/src/thermophysicalModels/basic/rhoThermo/hRhoThermo/hRhoThermo.H
@@ -23,20 +23,20 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::hThermo
+    Foam::hPsiThermo
 
 Description
-    Enthalpy for a mixture
+    Enthalpy for a mixture based on density
 
 SourceFiles
-    hThermo.C
+    hRhoThermo.C
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef hThermo_H
-#define hThermo_H
+#ifndef hRhoThermo_H
+#define hRhoThermo_H
 
-#include "basicThermo.H"
+#include "basicRhoThermo.H"
 #include "basicMixture.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -45,42 +45,44 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                           Class hThermo Declaration
+                         Class hRhoThermo Declaration
 \*---------------------------------------------------------------------------*/
 
 template<class MixtureType>
-class hThermo
+class hRhoThermo
 :
-    public basicThermo,
+    public basicRhoThermo,
     public MixtureType
 {
     // Private data
 
+        //- Enthalpy field
         volScalarField h_;
 
 
     // Private member functions
 
+        //- Calculate the thermo variables
         void calculate();
 
         //- Construct as copy (not implemented)
-        hThermo(const hThermo<MixtureType>&);
+        hRhoThermo(const hRhoThermo<MixtureType>&);
 
 
 public:
 
     //- Runtime type information
-    TypeName("hThermo");
+    TypeName("hRhoThermo");
 
 
     // Constructors
 
         //- Construct from mesh
-        hThermo(const fvMesh&);
+        hRhoThermo(const fvMesh&);
 
 
     //- Destructor
-    virtual ~hThermo();
+    virtual ~hRhoThermo();
 
 
     // Member functions
@@ -166,7 +168,7 @@ public:
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
 
 #ifdef NoRepository
-#   include "hThermo.C"
+#   include "hRhoThermo.C"
 #endif
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/thermophysicalModels/basic/hThermo/hThermos.C b/src/thermophysicalModels/basic/rhoThermo/hRhoThermo/hRhoThermos.C
similarity index 86%
rename from src/thermophysicalModels/basic/hThermo/hThermos.C
rename to src/thermophysicalModels/basic/rhoThermo/hRhoThermo/hRhoThermos.C
index 0ed152ec5fb31fbe2052b5a8f7411c5ca9dacfb2..233ee905dccf4f49d6f7c3472d4715612f388d1d 100644
--- a/src/thermophysicalModels/basic/hThermo/hThermos.C
+++ b/src/thermophysicalModels/basic/rhoThermo/hRhoThermo/hRhoThermos.C
@@ -22,15 +22,9 @@ License
     along with OpenFOAM; if not, write to the Free Software Foundation,
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
-Description
-    Selection function for internal energy based thermodynamics package.
-
 \*---------------------------------------------------------------------------*/
 
-#include "error.H"
-
-#include "basicThermo.H"
-#include "makeBasicThermo.H"
+#include "makeBasicRhoThermo.H"
 
 #include "perfectGas.H"
 
@@ -41,11 +35,9 @@ Description
 #include "constTransport.H"
 #include "sutherlandTransport.H"
 
-#include "hThermo.H"
+#include "hRhoThermo.H"
 #include "pureMixture.H"
 
-#include "addToRunTimeSelectionTable.H"
-
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 namespace Foam
@@ -53,34 +45,34 @@ namespace Foam
 
 /* * * * * * * * * * * * * * * private static data * * * * * * * * * * * * * */
 
-
-makeBasicThermo
+makeBasicRhoThermo
 (
-    hThermo,
+    hRhoThermo,
     pureMixture,
     constTransport,
     hConstThermo,
     perfectGas
 );
 
-makeBasicThermo
+makeBasicRhoThermo
 (
-    hThermo,
+    hRhoThermo,
     pureMixture,
     sutherlandTransport,
     hConstThermo,
     perfectGas
 );
 
-makeBasicThermo
+makeBasicRhoThermo
 (
-    hThermo,
+    hRhoThermo,
     pureMixture,
     sutherlandTransport,
     janafThermo,
     perfectGas
 );
 
+
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 } // End namespace Foam
diff --git a/src/thermophysicalModels/chemistryModel/Make/files b/src/thermophysicalModels/chemistryModel/Make/files
index 542393735ccb741fd7a016d60f550aae527f5ec0..b92108d63a23df223262b8b2e597a8a09100a1f1 100644
--- a/src/thermophysicalModels/chemistryModel/Make/files
+++ b/src/thermophysicalModels/chemistryModel/Make/files
@@ -1,12 +1,13 @@
-chemistryModel = chemistryModel
-chemistrySolver = chemistrySolver
+chemistryModel/basicChemistryModel/basicChemistryModel.C
 
-$(chemistryModel)/chemistryModel.C
+chemistryModel/psiChemistryModel/psiChemistryModel.C
+chemistryModel/psiChemistryModel/newPsiChemistryModel.C
+chemistryModel/psiChemistryModel/psiChemistryModels.C
 
-$(chemistrySolver)/chemistrySolver/chemistrySolver.C
-$(chemistrySolver)/chemistrySolver/newChemistrySolver.C
-$(chemistrySolver)/sequential/sequential.C
-$(chemistrySolver)/EulerImplicit/EulerImplicit.C
-$(chemistrySolver)/ode/ode.C
+chemistryModel/rhoChemistryModel/rhoChemistryModel.C
+chemistryModel/rhoChemistryModel/newRhoChemistryModel.C
+chemistryModel/rhoChemistryModel/rhoChemistryModels.C
+
+chemistrySolver/chemistrySolver/makeChemistrySolvers.C
 
 LIB = $(FOAM_LIBBIN)/libchemistryModel
diff --git a/src/thermophysicalModels/chemistryModel/Make/options b/src/thermophysicalModels/chemistryModel/Make/options
index 80ca3a7c6d6d35bb53db55f03a433f29602fa7c8..3cdfbc22ac450a66d647c677a8730c6c1f8ff1f7 100644
--- a/src/thermophysicalModels/chemistryModel/Make/options
+++ b/src/thermophysicalModels/chemistryModel/Make/options
@@ -1,15 +1,16 @@
 EXE_INC = \
     -I$(LIB_SRC)/finiteVolume/lnInclude \
-    -I$(LIB_SRC)/thermophysicalModels/thermophysicalFunctions/lnInclude \
-    -I$(LIB_SRC)/thermophysicalModels/combustion/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
-	-I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/functions/Polynomial \
+    -I$(LIB_SRC)/thermophysicalModels/thermophysicalFunctions/lnInclude \
     -I$(LIB_SRC)/turbulenceModels/compressible/lnInclude \
     -I$(LIB_SRC)/ODE/lnInclude
 
 LIB_LIBS = \
-	-lbasicThermophysicalModels \
-    -lcombustionThermophysicalModels \
+    -lbasicThermophysicalModels \
+    -lreactionThermophysicalModels \
+    -lspecie \
     -lthermophysicalFunctions \
-	-lspecie \
-	-lODE
+    -lODE
diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModel.C b/src/thermophysicalModels/chemistryModel/chemistryModel/ODEChemistryModel/ODEChemistryModel.C
similarity index 59%
rename from src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModel.C
rename to src/thermophysicalModels/chemistryModel/chemistryModel/ODEChemistryModel/ODEChemistryModel.C
index 78ce070b1972b9e1127471865d4e5714b438cc21..dfe226da197e43ebeca9e6f333c2e4e76bb3f18d 100644
--- a/src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModel.C
+++ b/src/thermophysicalModels/chemistryModel/chemistryModel/ODEChemistryModel/ODEChemistryModel.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -24,96 +24,91 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "chemistryModel.H"
+#include "ODEChemistryModel.H"
 #include "chemistrySolver.H"
-#include "multiComponentMixture.H"
+#include "reactingMixture.H"
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-// Construct from components
-Foam::chemistryModel::chemistryModel
+template<class CompType, class ThermoType>
+Foam::ODEChemistryModel<CompType, ThermoType>::ODEChemistryModel
 (
-    hCombustionThermo& thermo,
-    const volScalarField& rho
+    const fvMesh& mesh,
+    const word& compTypeName,
+    const word& thermoTypeName
 )
 :
-    thermo_(thermo),
+    CompType(mesh, thermoTypeName),
 
-    Y_(thermo.composition().Y()),
-    rho_(rho),
+    ODE(),
 
-    chemistryProperties_
+    Y_(this->thermo().composition().Y()),
+
+    reactions_
     (
-        IOobject
-        (
-            "chemistryProperties",
-            rho_.time().constant(),
-            rho_.db(),
-            IOobject::MUST_READ,
-            IOobject::NO_WRITE
-        )
+        dynamic_cast<const reactingMixture<ThermoType>&>(this->thermo())
+    ),
+    specieThermo_
+    (
+        dynamic_cast<const reactingMixture<ThermoType>&>
+            (this->thermo()).speciesData()
     ),
-    chemistry_(chemistryProperties_.lookup("chemistry")),
-
-    reactions_(dynamic_cast<const reactingMixture&>(thermo)),
-    specieThermo_(dynamic_cast<const reactingMixture&>(thermo).speciesData()),
 
-    Ns_(thermo.composition().Y().size()),
-    Nr_(reactions_.size()),
+    nSpecie_(Y_.size()),
+    nReaction_(reactions_.size()),
 
     solver_
     (
-        chemistrySolver::New
+        chemistrySolver<CompType, ThermoType>::New
         (
-            chemistryProperties_,
-            *this
+            *this,
+            compTypeName,
+            thermoTypeName
         )
     ),
-    deltaTChem_
-    (
-        rho_.size(),
-        readScalar(chemistryProperties_.lookup("initialChemicalTimeStep"))
-    )
+
+    RR_(nSpecie_)
 {
-    // set the size of the chemistry sources
-    RR_.setSize(Ns());
-    for(label i=0; i<Ns(); i++)
+    // create the fields for the chemistry sources
+    forAll(RR_, fieldI)
     {
         RR_.set
         (
-            i,
-            new scalarField(rho_.size(), 0.0)
+            fieldI,
+            new scalarField(mesh.nCells(), 0.0)
         );
     }
 
-    Info<< "chemistryModel::chemistryModel: Number of species = " << Ns()
-        << " and reactions = " << Nr() << endl;
+    Info<< "ODEChemistryModel: Number of species = " << nSpecie_
+        << " and reactions = " << nReaction_ << endl;
 }
 
 
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
-Foam::chemistryModel::~chemistryModel()
+template<class CompType, class ThermoType>
+Foam::ODEChemistryModel<CompType, ThermoType>::~ODEChemistryModel()
 {}
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-Foam::scalarField Foam::chemistryModel::omega
+template<class CompType, class ThermoType>
+Foam::scalarField Foam::ODEChemistryModel<CompType, ThermoType>::omega
 (
     const scalarField& c,
     const scalar T,
     const scalar p
 ) const
 {
-    scalar pf,cf,pr,cr;
+    scalar pf, cf, pr, cr;
     label lRef, rRef;
 
     scalarField om(nEqns(), 0.0);
 
     forAll(reactions_, i)
     {
-        const reaction& R = reactions_[i];
+        const Reaction<ThermoType>& R = reactions_[i];
 
         scalar omegai = omega
         (
@@ -136,12 +131,13 @@ Foam::scalarField Foam::chemistryModel::omega
     }
 
     return om;
-} // end omega
+}
 
 
-Foam::scalar Foam::chemistryModel::omega
+template<class CompType, class ThermoType>
+Foam::scalar Foam::ODEChemistryModel<CompType, ThermoType>::omega
 (
-    const reaction& R,
+    const Reaction<ThermoType>& R,
     const scalarField& c,
     const scalar T,
     const scalar p,
@@ -153,8 +149,8 @@ Foam::scalar Foam::chemistryModel::omega
     label& rRef
 ) const
 {
-    scalarField c2(Ns(), 0.0);
-    for(label i=0; i<Ns(); i++)
+    scalarField c2(nSpecie_, 0.0);
+    for (label i=0; i<nSpecie_; i++)
     {
         c2[i] = max(0.0, c[i]);
     }
@@ -172,7 +168,7 @@ Foam::scalar Foam::chemistryModel::omega
     lRef = R.lhs()[slRef].index;
 
     pf = kf;
-    for(label s=1; s<Nl; s++)
+    for (label s=1; s<Nl; s++)
     {
         label si = R.lhs()[s].index;
 
@@ -197,7 +193,7 @@ Foam::scalar Foam::chemistryModel::omega
         {
             if (cf > SMALL)
             {
-                pf *= pow(cf, exp-1.0);
+                pf *= pow(cf, exp - 1.0);
             }
             else
             {
@@ -206,7 +202,7 @@ Foam::scalar Foam::chemistryModel::omega
         }
         else
         {
-            pf *= pow(cf, exp-1.0);
+            pf *= pow(cf, exp - 1.0);
         }
     }
 
@@ -215,7 +211,7 @@ Foam::scalar Foam::chemistryModel::omega
 
     // find the matrix element and element position for the rhs
     pr = kr;
-    for(label s=1; s<Nr; s++)
+    for (label s=1; s<Nr; s++)
     {
         label si = R.rhs()[s].index;
         if (c[si] < c[rRef])
@@ -239,7 +235,7 @@ Foam::scalar Foam::chemistryModel::omega
         {
             if (cr>SMALL)
             {
-                pr *= pow(cr, exp-1.0);
+                pr *= pow(cr, exp - 1.0);
             }
             else
             {
@@ -248,25 +244,26 @@ Foam::scalar Foam::chemistryModel::omega
         }
         else
         {
-            pr *= pow(cr, exp-1.0);
+            pr *= pow(cr, exp - 1.0);
         }
 
     }
 
     return pf*cf - pr*cr;
 
-} // end omega
+}
 
 
-void Foam::chemistryModel::derivatives
+template<class CompType, class ThermoType>
+void Foam::ODEChemistryModel<CompType, ThermoType>::derivatives
 (
     const scalar time,
     const scalarField &c,
     scalarField& dcdt
 ) const
 {
-    scalar T = c[Ns_];
-    scalar p = c[Ns_ + 1];
+    scalar T = c[nSpecie_];
+    scalar p = c[nSpecie_ + 1];
 
     dcdt = omega(c, T, p);
 
@@ -274,7 +271,7 @@ void Foam::chemistryModel::derivatives
     // dT/dt = ...
     scalar rho = 0.0;
     scalar cSum = 0.0;
-    for(label i=0; i<Ns(); i++)
+    for (label i=0; i<nSpecie_; i++)
     {
         scalar W = specieThermo_[i].W();
         cSum += c[i];
@@ -282,7 +279,7 @@ void Foam::chemistryModel::derivatives
     }
     scalar mw = rho/cSum;
     scalar cp = 0.0;
-    for(label i=0; i<Ns(); i++)
+    for (label i=0; i<nSpecie_; i++)
     {
         scalar cpi = specieThermo_[i].cp(T);
         scalar Xi = c[i]/rho;
@@ -291,7 +288,7 @@ void Foam::chemistryModel::derivatives
     cp /= mw;
 
     scalar dT = 0.0;
-    for(label i=0; i<Ns(); i++)
+    for (label i=0; i<nSpecie_; i++)
     {
         scalar hi = specieThermo_[i].h(T);
         dT += hi*dcdt[i];
@@ -301,14 +298,15 @@ void Foam::chemistryModel::derivatives
     // limit the time-derivative, this is more stable for the ODE
     // solver when calculating the allowed time step
     scalar dtMag = min(500.0, mag(dT));
-    dcdt[Ns_] = -dT*dtMag/(mag(dT) + 1.0e-10);
+    dcdt[nSpecie_] = -dT*dtMag/(mag(dT) + 1.0e-10);
 
     // dp/dt = ...
-    dcdt[Ns_+1] = 0.0;
+    dcdt[nSpecie_+1] = 0.0;
 }
 
 
-void Foam::chemistryModel::jacobian
+template<class CompType, class ThermoType>
+void Foam::ODEChemistryModel<CompType, ThermoType>::jacobian
 (
     const scalar t,
     const scalarField& c,
@@ -316,29 +314,29 @@ void Foam::chemistryModel::jacobian
     scalarSquareMatrix& dfdc
 ) const
 {
-    scalar T = c[Ns_];
-    scalar p = c[Ns_ + 1];
+    scalar T = c[nSpecie_];
+    scalar p = c[nSpecie_ + 1];
 
-    scalarField c2(Ns(), 0.0);
-    for(label i=0; i<Ns(); i++)
+    scalarField c2(nSpecie_, 0.0);
+    for (label i=0; i<nSpecie_; i++)
     {
         c2[i] = max(c[i], 0.0);
     }
 
-    for(label i=0; i<nEqns(); i++)
+    for (label i=0; i<nEqns(); i++)
     {
-        for(label j=0; j<nEqns(); j++)
+        for (label j=0; j<nEqns(); j++)
         {
             dfdc[i][j] = 0.0;
         }
     }
 
-    // length of the first argument must be Ns()
+    // length of the first argument must be nSpecie()
     dcdt = omega(c2, T, p);
 
     for (label ri=0; ri<reactions_.size(); ri++)
     {
-        const reaction& R = reactions_[ri];
+        const Reaction<ThermoType>& R = reactions_[ri];
 
         scalar kf0 = R.kf(T, p, c2);
         scalar kr0 = R.kr(T, p, c2);
@@ -357,7 +355,7 @@ void Foam::chemistryModel::jacobian
                     {
                         if (c2[si]>SMALL)
                         {
-                            kf *= el*pow(c2[si]+VSMALL, el-1.0);
+                            kf *= el*pow(c2[si] + VSMALL, el - 1.0);
                         }
                         else
                         {
@@ -366,7 +364,7 @@ void Foam::chemistryModel::jacobian
                     }
                     else
                     {
-                        kf *= el*pow(c2[si], el-1.0);
+                        kf *= el*pow(c2[si], el - 1.0);
                     }
                 }
                 else
@@ -403,7 +401,7 @@ void Foam::chemistryModel::jacobian
                     {
                         if (c2[si]>SMALL)
                         {
-                            kr *= er*pow(c2[si]+VSMALL, er-1.0);
+                            kr *= er*pow(c2[si] + VSMALL, er - 1.0);
                         }
                         else
                         {
@@ -412,7 +410,7 @@ void Foam::chemistryModel::jacobian
                     }
                     else
                     {
-                        kr *= er*pow(c2[si], er-1.0);
+                        kr *= er*pow(c2[si], er - 1.0);
                     }
                 }
                 else
@@ -438,40 +436,54 @@ void Foam::chemistryModel::jacobian
 
     // calculate the dcdT elements numerically
     scalar delta = 1.0e-8;
-    scalarField dcdT0 = omega(c2, T-delta, p);
-    scalarField dcdT1 = omega(c2, T+delta, p);
+    scalarField dcdT0 = omega(c2, T - delta, p);
+    scalarField dcdT1 = omega(c2, T + delta, p);
 
-    for(label i=0; i<nEqns(); i++)
+    for (label i=0; i<nEqns(); i++)
     {
-        dfdc[i][Ns()] = 0.5*(dcdT1[i]-dcdT0[i])/delta;
+        dfdc[i][nSpecie()] = 0.5*(dcdT1[i] - dcdT0[i])/delta;
     }
 
-} // end jacobian
+}
 
 
-Foam::tmp<Foam::volScalarField> Foam::chemistryModel::tc() const
+template<class CompType, class ThermoType>
+Foam::tmp<Foam::volScalarField>
+Foam::ODEChemistryModel<CompType, ThermoType>::tc() const
 {
-
     scalar pf,cf,pr,cr;
     label lRef, rRef;
 
-    label nCells = rho_.size();
-    label Nr = reactions_.size();
+    const volScalarField rho
+    (
+        IOobject
+        (
+            "rho",
+            this->time().timeName(),
+            this->mesh(),
+            IOobject::NO_READ,
+            IOobject::NO_WRITE,
+            false
+        ),
+        this->thermo().rho()
+    );
+
+    label nCells = rho.size();
+    label nReaction = reactions_.size();
 
     scalarField t(nCells, SMALL);
 
-    if (chemistry_)
+    if (this->chemistry_)
     {
-
-        for(label celli=0; celli<nCells; celli++)
+        forAll(rho, celli)
         {
-            scalar rhoi = rho_[celli];
-            scalar Ti = thermo_.T()[celli];
-            scalar pi = thermo_.p()[celli];
-            scalarField c(Ns_);
+            scalar rhoi = rho[celli];
+            scalar Ti = this->thermo().T()[celli];
+            scalar pi = this->thermo().p()[celli];
+            scalarField c(nSpecie_);
             scalar cSum = 0.0;
 
-            for(label i=0; i<Ns_; i++)
+            for (label i=0; i<nSpecie_; i++)
             {
                 scalar Yi = Y_[i][celli];
                 c[i] = rhoi*Yi/specieThermo_[i].W();
@@ -480,7 +492,7 @@ Foam::tmp<Foam::volScalarField> Foam::chemistryModel::tc() const
 
             forAll(reactions_, i)
             {
-                const reaction& R = reactions_[i];
+                const Reaction<ThermoType>& R = reactions_[i];
 
                 omega
                 (
@@ -493,7 +505,7 @@ Foam::tmp<Foam::volScalarField> Foam::chemistryModel::tc() const
                     t[celli] += sr*pf*cf;
                 }
             }
-            t[celli] = Nr*cSum/t[celli];
+            t[celli] = nReaction*cSum/t[celli];
         }
     }
 
@@ -504,13 +516,13 @@ Foam::tmp<Foam::volScalarField> Foam::chemistryModel::tc() const
             IOobject
             (
                 "tc",
-                rho_.time().timeName(),
-                rho_.db(),
+                this->mesh_.time().timeName(),
+                this->mesh_,
                 IOobject::NO_READ,
                 IOobject::NO_WRITE
             ),
-            rho_.mesh(),
-            dimensionedScalar("zero", dimensionSet(0, 0, 1, 0, 0), 0.0),
+            this->mesh_,
+            dimensionedScalar("zero", dimTime, 0.0),
             zeroGradientFvPatchScalarField::typeName
         )
     );
@@ -522,37 +534,103 @@ Foam::tmp<Foam::volScalarField> Foam::chemistryModel::tc() const
 }
 
 
-Foam::label Foam::chemistryModel::nEqns() const
+template<class CompType, class ThermoType>
+Foam::tmp<Foam::volScalarField>
+Foam::ODEChemistryModel<CompType, ThermoType>::dQ() const
+{
+    tmp<volScalarField> tdQ
+    (
+        new volScalarField
+        (
+            IOobject
+            (
+                "dQ",
+                this->mesh_.time().timeName(),
+                this->mesh_,
+                IOobject::NO_READ,
+                IOobject::NO_WRITE
+            ),
+            this->mesh_,
+            dimensionedScalar
+            (
+                "zero",
+                dimensionSet(1, -3, -1 , 0, 0, 0, 0),
+                0.0
+            )
+        )
+    );
+
+    if (this->chemistry_)
+    {
+        scalarField& dQ = tdQ();
+
+        scalarField cp(dQ.size(), 0.0);
+
+        forAll(Y_, i)
+        {
+            forAll(dQ, cellI)
+            {
+                scalar Ti = this->thermo().T()[cellI];
+                cp[cellI] += Y_[i][cellI]*specieThermo_[i].Cp(Ti);
+                scalar hi = specieThermo_[i].h(Ti);
+                dQ[cellI] -= hi*RR_[i][cellI];
+            }
+        }
+
+        dQ /= cp;
+    }
+
+    return tdQ;
+}
+
+
+template<class CompType, class ThermoType>
+Foam::label Foam::ODEChemistryModel<CompType, ThermoType>::nEqns() const
 {
     // nEqns = number of species + temperature + pressure
-    return Ns_ + 2;
+    return nSpecie_ + 2;
 }
 
 
-void Foam::chemistryModel::calculate()
+template<class CompType, class ThermoType>
+void Foam::ODEChemistryModel<CompType, ThermoType>::calculate()
 {
-    for(label i=0; i<Ns(); i++)
+    const volScalarField rho
+    (
+        IOobject
+        (
+            "rho",
+            this->time().timeName(),
+            this->mesh(),
+            IOobject::NO_READ,
+            IOobject::NO_WRITE,
+            false
+        ),
+        this->thermo().rho()
+    );
+
+    for (label i=0; i<nSpecie_; i++)
     {
-        RR_[i].setSize(rho_.size());
+        RR_[i].setSize(rho.size());
     }
 
-    if (chemistry_)
+    if (this->chemistry_)
     {
-        for(label celli=0; celli<rho_.size(); celli++)
+        forAll(rho, celli)
         {
-            for(label i=0; i<Ns(); i++)
+            for (label i=0; i<nSpecie_; i++)
             {
                 RR_[i][celli] = 0.0;
             }
 
-            scalar rhoi = rho_[celli];
-            scalar Ti = thermo_.T()[celli];
-            scalar pi = thermo_.p()[celli];
+            scalar rhoi = rho[celli];
+            scalar Ti = this->thermo().T()[celli];
+            scalar pi = this->thermo().p()[celli];
 
-            scalarField c(Ns_);
+            scalarField c(nSpecie_);
             scalarField dcdt(nEqns(), 0.0);
 
-            for(label i=0; i<Ns_; i++)
+            for (label i=0; i<nSpecie_; i++)
             {
                 scalar Yi = Y_[i][celli];
                 c[i] = rhoi*Yi/specieThermo_[i].W();
@@ -560,7 +638,7 @@ void Foam::chemistryModel::calculate()
 
             dcdt = omega(c, Ti, pi);
 
-            for(label i=0; i<Ns_; i++)
+            for (label i=0; i<nSpecie_; i++)
             {
                 RR_[i][celli] = dcdt[i]*specieThermo_[i].W();
             }
@@ -569,44 +647,63 @@ void Foam::chemistryModel::calculate()
 }
 
 
-Foam::scalar Foam::chemistryModel::solve(const scalar t0, const scalar deltaT)
+template<class CompType, class ThermoType>
+Foam::scalar Foam::ODEChemistryModel<CompType, ThermoType>::solve
+(
+    const scalar t0,
+    const scalar deltaT
+)
 {
-    for(label i=0; i<Ns(); i++)
+    const volScalarField rho
+    (
+        IOobject
+        (
+            "rho",
+            this->time().timeName(),
+            this->mesh(),
+            IOobject::NO_READ,
+            IOobject::NO_WRITE,
+            false
+        ),
+        this->thermo().rho()
+    );
+
+    for (label i=0; i<nSpecie_; i++)
     {
-        RR_[i].setSize(rho_.size());
+        RR_[i].setSize(rho.size());
     }
 
-    if (!chemistry_)
+    if (!this->chemistry_)
     {
         return GREAT;
     }
 
     scalar deltaTMin = GREAT;
 
-    for(label celli=0; celli<rho_.size(); celli++)
+    forAll(rho, celli)
     {
-        for(label i=0; i<Ns(); i++)
+        for (label i=0; i<nSpecie(); i++)
         {
             RR_[i][celli] = 0.0;
         }
 
-        scalar rhoi = rho_[celli];
-        scalar Ti = thermo_.T()[celli];
-        scalar hi = thermo_.h()[celli];
-        scalar pi = thermo_.p()[celli];
+        scalar rhoi = rho[celli];
+        scalar Ti = this->thermo().T()[celli];
+        scalar hi = this->thermo().h()[celli];
+        scalar pi = this->thermo().p()[celli];
 
-        scalarField c(Ns_);
-        scalarField c0(Ns_);
-        scalarField dc(Ns_, 0.0);
+        scalarField c(nSpecie_);
+        scalarField c0(nSpecie_);
+        scalarField dc(nSpecie_, 0.0);
 
-        for(label i=0; i<Ns_; i++)
+        for (label i=0; i<nSpecie_; i++)
         {
             c[i] = rhoi*Y_[i][celli]/specieThermo_[i].W();
         }
         c0 = c;
 
         scalar t = t0;
-        scalar tauC = deltaTChem_[celli];
+        scalar tauC = this->deltaTChem_[celli];
         scalar dt = min(deltaT, tauC);
         scalar timeLeft = deltaT;
 
@@ -620,15 +717,15 @@ Foam::scalar Foam::chemistryModel::solve(const scalar t0, const scalar deltaT)
 
             // update the temperature
             cTot = sum(c);
-            reactionThermo mixture(0.0*specieThermo_[0]);
-            for(label i=0; i<Ns_; i++)
+            ThermoType mixture(0.0*specieThermo_[0]);
+            for (label i=0; i<nSpecie_; i++)
             {
                 mixture += (c[i]/cTot)*specieThermo_[i];
             }
             Ti = mixture.TH(hi, Ti);
 
             timeLeft -= dt;
-            deltaTChem_[celli] = tauC;
+            this->deltaTChem_[celli] = tauC;
             dt = min(timeLeft, tauC);
             dt = max(dt, SMALL);
         }
@@ -636,13 +733,13 @@ Foam::scalar Foam::chemistryModel::solve(const scalar t0, const scalar deltaT)
 
         dc = c - c0;
         scalar WTot = 0.0;
-        for(label i=0; i<Ns_; i++)
+        for (label i=0; i<nSpecie_; i++)
         {
             WTot += c[i]*specieThermo_[i].W();
         }
         WTot /= cTot;
 
-        for(label i=0; i<Ns_; i++)
+        for (label i=0; i<nSpecie_; i++)
         {
             RR_[i][celli] = dc[i]*specieThermo_[i].W()/deltaT;
         }
diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/ODEChemistryModel/ODEChemistryModel.H b/src/thermophysicalModels/chemistryModel/chemistryModel/ODEChemistryModel/ODEChemistryModel.H
new file mode 100644
index 0000000000000000000000000000000000000000..ac8c10e086fcb6a8eebbc8ad39701c28c6438477
--- /dev/null
+++ b/src/thermophysicalModels/chemistryModel/chemistryModel/ODEChemistryModel/ODEChemistryModel.H
@@ -0,0 +1,227 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::ODEChemistryModel
+
+Description
+    Extends base chemistry model by adding a thermo package, and ODE functions.
+    Introduces chemistry equation system and evaluation of chemical source
+    terms.
+
+SourceFiles
+    ODEChemistryModelI.H
+    ODEChemistryModel.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef ODEChemistryModel_H
+#define ODEChemistryModel_H
+
+#include "hCombustionThermo.H"
+#include "Reaction.H"
+#include "ODE.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+// Forward declaration of classes
+template<class CompType, class ThermoType>
+class chemistrySolver;
+
+/*---------------------------------------------------------------------------*\
+                      Class ODEChemistryModel Declaration
+\*---------------------------------------------------------------------------*/
+
+template<class CompType, class ThermoType>
+class ODEChemistryModel
+:
+    public CompType,
+    public ODE
+{
+    // Private Member Functions
+
+        //- Disallow default bitwise assignment
+        void operator=(const ODEChemistryModel&);
+
+
+protected:
+
+    // Private data
+
+        //- Reference to the field of specie mass fractions
+        PtrList<volScalarField>& Y_;
+
+        //- Reactions
+        const PtrList<Reaction<ThermoType> >& reactions_;
+
+        //- Thermodynamic data of the species
+        const PtrList<ThermoType>& specieThermo_;
+
+        //- Number of species
+        label nSpecie_;
+
+        //- Number of reactions
+        label nReaction_;
+
+        //- Chemistry solver
+        autoPtr<chemistrySolver<CompType, ThermoType> > solver_;
+
+        //- Chemical source term
+        PtrList<scalarField> RR_;
+
+
+    // Protected Member Functions
+
+        //- Write access to chemical source terms
+        //  (e.g. for multi-chemistry model)
+        inline PtrList<scalarField>& RR();
+
+
+public:
+
+    //- Runtime type information
+    TypeName("ODEChemistryModel");
+
+
+    // Constructors
+
+        //- Construct from components
+        ODEChemistryModel
+        (
+            const fvMesh& mesh,
+            const word& compTypeName,
+            const word& thermoTypeName
+        );
+
+
+    //- Destructor
+    virtual ~ODEChemistryModel();
+
+
+    // Member Functions
+
+        //- The reactions
+        inline const PtrList<Reaction<ThermoType> >& reactions() const;
+
+        //- Thermodynamic data of the species
+        inline const PtrList<ThermoType>& specieThermo() const;
+
+        //- The number of species
+        inline label nSpecie() const;
+
+        //- The number of reactions
+        inline label nReaction() const;
+
+        //- Return the chemisty solver
+        inline const chemistrySolver<CompType, ThermoType>& solver() const;
+
+        //- dc/dt = omega, rate of change in concentration, for each species
+        virtual scalarField omega
+        (
+            const scalarField& c,
+            const scalar T,
+            const scalar p
+        ) const;
+
+        //- Return the reaction rate for reaction r and the reference
+        //  species and charateristic times
+        virtual scalar omega
+        (
+            const Reaction<ThermoType>& r,
+            const scalarField& c,
+            const scalar T,
+            const scalar p,
+            scalar& pf,
+            scalar& cf,
+            label& lRef,
+            scalar& pr,
+            scalar& cr,
+            label& rRef
+        ) const;
+
+        //- Calculates the reaction rates
+        virtual void calculate();
+
+
+        // Chemistry model functions (overriding abstract functions in
+        // chemistryModel.H)
+
+            //- Return const access to the chemical source terms
+            inline tmp<volScalarField> RR(const label i) const;
+
+            //- Solve the reaction system for the given start time and time
+            //  step and return the characteristic time
+            virtual scalar solve(const scalar t0, const scalar deltaT);
+
+            //- Return the chemical time scale
+            virtual tmp<volScalarField> tc() const;
+
+            //- Return the heat release
+            virtual tmp<volScalarField> dQ() const;
+
+
+        // ODE functions (overriding abstract functions in ODE.H)
+
+            //- Number of ODE's to solve
+            virtual label nEqns() const;
+
+            virtual void derivatives
+            (
+                const scalar t,
+                const scalarField& c,
+                scalarField& dcdt
+            ) const;
+
+            virtual void jacobian
+            (
+                const scalar t,
+                const scalarField& c,
+                scalarField& dcdt,
+                scalarSquareMatrix& dfdc
+            ) const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "ODEChemistryModelI.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#ifdef NoRepository
+#   include "ODEChemistryModel.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/ODEChemistryModel/ODEChemistryModelI.H b/src/thermophysicalModels/chemistryModel/chemistryModel/ODEChemistryModel/ODEChemistryModelI.H
new file mode 100644
index 0000000000000000000000000000000000000000..b5264a28d43c2c9dd88ac18610ce0b14ae918cfa
--- /dev/null
+++ b/src/thermophysicalModels/chemistryModel/chemistryModel/ODEChemistryModel/ODEChemistryModelI.H
@@ -0,0 +1,113 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "zeroGradientFvPatchFields.H"
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+template<class CompType, class ThermoType>
+inline Foam::PtrList<Foam::scalarField>&
+Foam::ODEChemistryModel<CompType, ThermoType>::RR()
+{
+    return RR_;
+}
+
+
+template<class CompType, class ThermoType>
+inline const Foam::PtrList<Foam::Reaction<ThermoType> >&
+Foam::ODEChemistryModel<CompType, ThermoType>::reactions() const
+{
+    return reactions_;
+}
+
+
+template<class CompType, class ThermoType>
+inline const Foam::PtrList<ThermoType>&
+Foam::ODEChemistryModel<CompType, ThermoType>::specieThermo() const
+{
+    return specieThermo_;
+}
+
+
+template<class CompType, class ThermoType>
+inline Foam::label
+Foam::ODEChemistryModel<CompType, ThermoType>::nSpecie() const
+{
+    return nSpecie_;
+}
+
+
+template<class CompType, class ThermoType>
+inline Foam::label
+Foam::ODEChemistryModel<CompType, ThermoType>::nReaction() const
+{
+    return nReaction_;
+}
+
+
+template<class CompType, class ThermoType>
+inline const Foam::chemistrySolver<CompType, ThermoType>&
+Foam::ODEChemistryModel<CompType, ThermoType>::solver() const
+{
+    return solver_;
+}
+
+
+template<class CompType, class ThermoType>
+inline Foam::tmp<Foam::volScalarField>
+Foam::ODEChemistryModel<CompType, ThermoType>::RR
+(
+    const label i
+) const
+{
+    tmp<volScalarField> tRR
+    (
+        new volScalarField
+        (
+            IOobject
+            (
+                "RR(" + this->Y_[i].name() + ')',
+                this->time().timeName(),
+                this->mesh(),
+                IOobject::NO_READ,
+                IOobject::NO_WRITE
+            ),
+            this->mesh(),
+            dimensionedScalar("zero", dimensionSet(1, -3, -1, 0, 0), 0.0),
+            zeroGradientFvPatchScalarField::typeName
+        )
+    );
+
+    if (this->chemistry_)
+    {
+        tRR().internalField() = RR_[i];
+        tRR().correctBoundaryConditions();
+    }
+    return tRR;
+}
+
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/basicChemistryModel/basicChemistryModel.C b/src/thermophysicalModels/chemistryModel/chemistryModel/basicChemistryModel/basicChemistryModel.C
new file mode 100644
index 0000000000000000000000000000000000000000..e7bd4f1e35970f5f92b88dffcd9e85ba9dd046ec
--- /dev/null
+++ b/src/thermophysicalModels/chemistryModel/chemistryModel/basicChemistryModel/basicChemistryModel.C
@@ -0,0 +1,69 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "basicChemistryModel.H"
+#include "fvMesh.H"
+#include "Time.H"
+
+/* * * * * * * * * * * * * * * private static data * * * * * * * * * * * * * */
+
+namespace Foam
+{
+    defineTypeNameAndDebug(basicChemistryModel, 0);
+}
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::basicChemistryModel::basicChemistryModel(const fvMesh& mesh)
+:
+    IOdictionary
+    (
+        IOobject
+        (
+            "chemistryProperties",
+            mesh.time().constant(),
+            mesh,
+            IOobject::MUST_READ,
+            IOobject::NO_WRITE
+        )
+    ),
+    mesh_(mesh),
+    chemistry_(lookup("chemistry")),
+    deltaTChem_
+    (
+        mesh.nCells(),
+        readScalar(lookup("initialChemicalTimeStep"))
+    )
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::basicChemistryModel::~basicChemistryModel()
+{}
+
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/basicChemistryModel/basicChemistryModel.H b/src/thermophysicalModels/chemistryModel/chemistryModel/basicChemistryModel/basicChemistryModel.H
new file mode 100644
index 0000000000000000000000000000000000000000..c8fcdd9863e58ec43bc58046c845634c128fb864
--- /dev/null
+++ b/src/thermophysicalModels/chemistryModel/chemistryModel/basicChemistryModel/basicChemistryModel.H
@@ -0,0 +1,153 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::basicChemistryModel
+
+Description
+    Base class for chemistry models
+
+SourceFiles
+    basicChemistryModelI.H
+    basicChemistryModel.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef basicChemistryModel_H
+#define basicChemistryModel_H
+
+#include "IOdictionary.H"
+#include "Switch.H"
+#include "scalarField.H"
+#include "volFieldsFwd.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+// Forward declaration of classes
+class fvMesh;
+
+/*---------------------------------------------------------------------------*\
+                   class basicChemistryModel Declaration
+\*---------------------------------------------------------------------------*/
+
+class basicChemistryModel
+:
+    public IOdictionary
+{
+    // Private Member Functions
+
+        //- Construct as copy (not implemented)
+        basicChemistryModel(const basicChemistryModel&);
+
+        //- Disallow default bitwise assignment
+        void operator=(const basicChemistryModel&);
+
+
+protected:
+
+    // Protected data
+
+        //- Reference to the mesh database
+        const fvMesh& mesh_;
+
+        //- Chemistry activation switch
+        Switch chemistry_;
+
+        //- Latest estimation of integration step
+        scalarField deltaTChem_;
+
+
+    // Protected member functions
+
+        //- Return non-const access to the latest estimation of integration
+        //  step, e.g. for multi-chemistry model
+        scalarField& deltaTChem();
+
+
+public:
+
+    //- Runtime type information
+    TypeName("basicChemistryModel");
+
+
+    // Constructors
+
+        //- Construct from mesh
+        basicChemistryModel(const fvMesh& mesh);
+
+
+    //- Destructor
+    virtual ~basicChemistryModel();
+
+
+    // Member Functions
+
+        //- Return const access to the mesh database
+        inline const fvMesh& mesh() const;
+
+        //- Chemistry activation switch
+        inline Switch chemistry() const;
+
+        //- Return the latest estimation of integration step
+        inline const scalarField& deltaTChem() const;
+
+
+        // Functions to be derived in derived classes
+
+            // Fields
+
+                //- Return const access to chemical source terms
+                virtual tmp<volScalarField> RR(const label i) const = 0;
+
+
+            // Chemistry solution
+
+                //- Solve the reaction system for the given start time and
+                //  timestep and return the characteristic time
+                virtual scalar solve(const scalar t0, const scalar deltaT) = 0;
+
+                //- Return the chemical time scale
+                virtual tmp<volScalarField> tc() const = 0;
+
+                //- Return the heat release
+                virtual tmp<volScalarField> dQ() const = 0;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "basicChemistryModelI.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/basicChemistryModel/basicChemistryModelI.H b/src/thermophysicalModels/chemistryModel/chemistryModel/basicChemistryModel/basicChemistryModelI.H
new file mode 100644
index 0000000000000000000000000000000000000000..214d17bac1c9a7f6ae263744abd19a732c881f11
--- /dev/null
+++ b/src/thermophysicalModels/chemistryModel/chemistryModel/basicChemistryModel/basicChemistryModelI.H
@@ -0,0 +1,53 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+inline const Foam::fvMesh& Foam::basicChemistryModel::mesh() const
+{
+    return mesh_;
+}
+
+
+inline Foam::Switch Foam::basicChemistryModel::chemistry() const
+{
+    return chemistry_;
+}
+
+
+inline const Foam::scalarField& Foam::basicChemistryModel::deltaTChem() const
+{
+    return deltaTChem_;
+}
+
+
+inline Foam::scalarField& Foam::basicChemistryModel::deltaTChem()
+{
+    return deltaTChem_;
+}
+
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/basicChemistryModel/makeChemistryModel.H b/src/thermophysicalModels/chemistryModel/chemistryModel/basicChemistryModel/makeChemistryModel.H
new file mode 100644
index 0000000000000000000000000000000000000000..d0b893629e18416c4c925206290950b5b71cf688
--- /dev/null
+++ b/src/thermophysicalModels/chemistryModel/chemistryModel/basicChemistryModel/makeChemistryModel.H
@@ -0,0 +1,72 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+InClass
+    Foam::psiChemistryModel
+
+Description
+    Macros for instantiating chemistry models based on compressibility and
+    transport types
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef makeChemistryModel_H
+#define makeChemistryModel_H
+
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#define makeChemistryModel(SS, Comp, Thermo)                                  \
+                                                                              \
+typedef SS<Comp, Thermo> SS##Comp##Thermo;                                    \
+                                                                              \
+defineTemplateTypeNameAndDebugWithName                                        \
+(                                                                             \
+    SS##Comp##Thermo,                                                         \
+    #SS"<"#Comp","#Thermo">",                                                 \
+    0                                                                         \
+);                                                                            \
+                                                                              \
+addToRunTimeSelectionTable                                                    \
+(                                                                             \
+    Comp,                                                                     \
+    SS##Comp##Thermo,                                                         \
+    fvMesh                                                                    \
+);
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModel.H b/src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModel.H
deleted file mode 100644
index a194b31ac9ff01ed112fdfe23bebb8f536b88854..0000000000000000000000000000000000000000
--- a/src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModel.H
+++ /dev/null
@@ -1,281 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by the
-    Free Software Foundation; either version 2 of the License, or (at your
-    option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM; if not, write to the Free Software Foundation,
-    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-Class
-    Foam::chemistryModel
-
-Description
-    Foam::chemistryModel
-
-SourceFiles
-    chemistryModelI.H
-    chemistryModel.C
-
-\*---------------------------------------------------------------------------*/
-
-#ifndef chemistryModel_H
-#define chemistryModel_H
-
-#include "hCombustionThermo.H"
-#include "reactingMixture.H"
-#include "ODE.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-
-class chemistrySolver;
-
-/*---------------------------------------------------------------------------*\
-                           Class chemistryModel Declaration
-\*---------------------------------------------------------------------------*/
-
-class chemistryModel
-:
-    public ODE
-{
-
-public:
-
-    typedef reactingMixture::reaction reaction;
-    typedef reactingMixture::reactionThermo reactionThermo;
-
-
-private:
-
-    // Private data
-
-        const hCombustionThermo& thermo_;
-
-        PtrList<volScalarField>& Y_;
-        const volScalarField& rho_;
-
-        IOdictionary chemistryProperties_;
-
-        //- Do the chemistry or not.
-        Switch chemistry_;
-
-        //- The reactions
-        const PtrList<reaction>& reactions_;
-
-        //- thermodynamic data of the species
-        const PtrList<reactionThermo>& specieThermo_;
-
-        //- The number of species
-        label Ns_;
-
-        //- The number of reactions
-        label Nr_;
-
-        //- chemistry solver
-        autoPtr<chemistrySolver> solver_;
-
-        //- the chemical source term
-        PtrList<scalarField> RR_;
-
-        //- Latest estimation of integration step
-        scalarField deltaTChem_;
-
-
-    // Private Member Functions
-
-        //- Disallow default bitwise assignment
-        void operator=(const chemistryModel&);
-
-protected:
-
-    // Protected Member Functions
-
-        //- Write access to chemical source terms
-        //  (eg, for multi-chemistry model)
-        PtrList<scalarField>& RR()
-        {
-            return RR_;
-        }
-
-        //- Return the latest estimation of integration step
-        //  (eg, for multi-chemistry model)
-        scalarField& deltaTChem()
-        {
-            return deltaTChem_;
-        }
-
-public:
-
-    // Constructors
-
-        //- Construct from components
-        chemistryModel
-        (
-            hCombustionThermo& thermo,
-            const volScalarField& rho
-        );
-
-
-    // Destructor
-
-        virtual ~chemistryModel();
-
-
-    // Member Functions
-
-        //- Return the thermodynamics model
-        const hCombustionThermo& thermo() const
-        {
-            return thermo_;
-        }
-
-        //- Access the fractions of the species
-        const PtrList<volScalarField>& Y() const
-        {
-            return Y_;
-        }
-
-        //- Access the density field
-        const volScalarField& rho() const
-        {
-            return rho_;
-        }
-
-        //- Return the chemistry properties
-        inline const IOdictionary& chemistryProperties() const
-        {
-            return chemistryProperties_;
-        }
-
-        //- Do the chemistry or not.
-        inline Switch chemistry() const
-        {
-            return chemistry_;
-        }
-
-        inline const PtrList<reaction>& reactions() const
-        {
-            return reactions_;
-        }
-
-        inline const PtrList<reactionThermo>& specieThermo() const
-        {
-            return specieThermo_;
-        }
-
-        //- The number of species
-        inline label Ns() const
-        {
-            return Ns_;
-        }
-
-        //- The number of reactions
-        inline label Nr() const
-        {
-            return Nr_;
-        }
-
-        // Return the chemisty solver
-        inline const chemistrySolver& solver() const
-        {
-            return solver_;
-        }
-
-        //- Return the chemical source terms
-        inline tmp<volScalarField> RR(const label i) const;
-
-        //- Return the latest estimation of integration step
-        const scalarField& deltaTChem() const
-        {
-            return deltaTChem_;
-        }
-
-        //- The chemical time scale
-        tmp<volScalarField> tc() const;
-
-        //- dc/dt = omega, rate of change in concentration, for each species
-        scalarField omega
-        (
-            const scalarField& c,
-            const scalar T,
-            const scalar p
-        ) const;
-
-        //- return the reaction rate for reaction r and the reference
-        //  species and charateristic times
-        scalar omega
-        (
-            const reaction& r,
-            const scalarField& c,
-            const scalar T,
-            const scalar p,
-            scalar& pf,
-            scalar& cf,
-            label& lRef,
-            scalar& pr,
-            scalar& cr,
-            label& rRef
-        ) const;
-
-        //- The number of ODE to solve
-        label nEqns() const;
-
-        void derivatives
-        (
-            const scalar t,
-            const scalarField& c,
-            scalarField& dcdt
-        ) const;
-
-        void jacobian
-        (
-            const scalar t,
-            const scalarField& c,
-            scalarField& dcdt,
-            scalarSquareMatrix& dfdc
-        ) const;
-
-        //- Calculates the reaction rates
-        void calculate();
-
-        //- Solve the reaction system for the given start time and time-step
-        // and return the characteristic time
-        scalar solve
-        (
-            const scalar t0,
-            const scalar deltaT
-        );
-};
-
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-} // End namespace Foam
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-#include "chemistryModelI.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-#endif
-
-// ************************************************************************* //
diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/psiChemistryModel/newPsiChemistryModel.C b/src/thermophysicalModels/chemistryModel/chemistryModel/psiChemistryModel/newPsiChemistryModel.C
new file mode 100644
index 0000000000000000000000000000000000000000..6a5606d0e73f13bdc636512e8e5217d95a5f5f8e
--- /dev/null
+++ b/src/thermophysicalModels/chemistryModel/chemistryModel/psiChemistryModel/newPsiChemistryModel.C
@@ -0,0 +1,111 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "psiChemistryModel.H"
+
+// * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * * //
+
+Foam::autoPtr<Foam::psiChemistryModel> Foam::psiChemistryModel::New
+(
+    const fvMesh& mesh
+)
+{
+    word psiChemistryModelType;
+    word thermoTypeName;
+    word userModel;
+
+    // Enclose the creation of the chemistrtyProperties to ensure it is
+    // deleted before the chemistrtyProperties is created otherwise the
+    // dictionary is entered in the database twice
+    {
+        IOdictionary chemistryPropertiesDict
+        (
+            IOobject
+            (
+                "chemistryProperties",
+                mesh.time().constant(),
+                mesh,
+                IOobject::MUST_READ,
+                IOobject::NO_WRITE
+            )
+        );
+
+        chemistryPropertiesDict.lookup("psiChemistryModel") >> userModel;
+
+        // construct chemistry model type name by inserting first template
+        // argument
+        label tempOpen = userModel.find('<');
+        label tempClose = userModel.find('>');
+
+        word className = userModel(0, tempOpen);
+        thermoTypeName = userModel(tempOpen + 1, tempClose - tempOpen - 1);
+
+        psiChemistryModelType =
+            className + '<' + typeName + ',' + thermoTypeName + '>';
+    }
+
+    if (debug)
+    {
+        Info<< "Selecting psiChemistryModel " << psiChemistryModelType << endl;
+    }
+    else
+    {
+        Info<< "Selecting psiChemistryModel " << userModel << endl;
+    }
+
+    fvMeshConstructorTable::iterator cstrIter =
+        fvMeshConstructorTablePtr_->find(psiChemistryModelType);
+
+    if (cstrIter == fvMeshConstructorTablePtr_->end())
+    {
+        if (debug)
+        {
+            FatalErrorIn("psiChemistryModelBase::New(const mesh&)")
+                << "Unknown psiChemistryModel type " << psiChemistryModelType
+                << nl << nl << "Valid psiChemistryModel types are:" << nl
+                << fvMeshConstructorTablePtr_->toc() << nl << exit(FatalError);
+        }
+        else
+        {
+            wordList models = fvMeshConstructorTablePtr_->toc();
+            forAll(models, i)
+            {
+                models[i] = models[i].replace(typeName + ',', "");
+            }
+
+            FatalErrorIn("psiChemistryModelBase::New(const mesh&)")
+                << "Unknown psiChemistryModel type " << userModel
+                << nl << nl << "Valid psiChemistryModel types are:" << nl
+                << models << nl << exit(FatalError);
+        }
+    }
+
+    return autoPtr<psiChemistryModel>
+        (cstrIter()(mesh, typeName, thermoTypeName));
+}
+
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/psiChemistryModel/psiChemistryModel.C b/src/thermophysicalModels/chemistryModel/chemistryModel/psiChemistryModel/psiChemistryModel.C
new file mode 100644
index 0000000000000000000000000000000000000000..7381d12a1df87d1a9aebe58a622c990173eb98ef
--- /dev/null
+++ b/src/thermophysicalModels/chemistryModel/chemistryModel/psiChemistryModel/psiChemistryModel.C
@@ -0,0 +1,58 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "psiChemistryModel.H"
+#include "fvMesh.H"
+#include "Time.H"
+
+/* * * * * * * * * * * * * * * private static data * * * * * * * * * * * * * */
+
+namespace Foam
+{
+    defineTypeNameAndDebug(psiChemistryModel, 0);
+    defineRunTimeSelectionTable(psiChemistryModel, fvMesh);
+}
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::psiChemistryModel::psiChemistryModel
+(
+    const fvMesh& mesh,
+    const word& thermoTypeName
+)
+:
+    basicChemistryModel(mesh),
+    thermo_(hCombustionThermo::NewType(mesh, thermoTypeName))
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::psiChemistryModel::~psiChemistryModel()
+{}
+
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/psiChemistryModel/psiChemistryModel.H b/src/thermophysicalModels/chemistryModel/chemistryModel/psiChemistryModel/psiChemistryModel.H
new file mode 100644
index 0000000000000000000000000000000000000000..4cf7af58ec89920d63395302ee0d84feb72df17c
--- /dev/null
+++ b/src/thermophysicalModels/chemistryModel/chemistryModel/psiChemistryModel/psiChemistryModel.H
@@ -0,0 +1,136 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::psiChemistryModel
+
+Description
+    Chemistry model for compressibility-based thermodynamics
+
+SourceFiles
+    psiChemistryModelI.H
+    psiChemistryModel.C
+    newChemistryModel.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef psiChemistryModel_H
+#define psiChemistryModel_H
+
+#include "basicChemistryModel.H"
+#include "autoPtr.H"
+#include "runTimeSelectionTables.H"
+#include "hCombustionThermo.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+// Forward declaration of classes
+class fvMesh;
+
+/*---------------------------------------------------------------------------*\
+                     class psiChemistryModel Declaration
+\*---------------------------------------------------------------------------*/
+
+class psiChemistryModel
+:
+    public basicChemistryModel
+{
+    // Private Member Functions
+
+        //- Construct as copy (not implemented)
+        psiChemistryModel(const psiChemistryModel&);
+
+        //- Disallow default bitwise assignment
+        void operator=(const psiChemistryModel&);
+
+
+protected:
+
+    // Protected data
+
+        //- Thermo package
+        autoPtr<hCombustionThermo> thermo_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("psiChemistryModel");
+
+
+    //- Declare run-time constructor selection tables
+    declareRunTimeSelectionTable
+    (
+        autoPtr,
+        psiChemistryModel,
+        fvMesh,
+        (
+            const fvMesh& mesh,
+            const word& compTypeName,
+            const word& thermoTypeName
+        ),
+        (mesh, compTypeName, thermoTypeName)
+    );
+
+
+    // Constructors
+
+        //- Construct from mesh
+        psiChemistryModel(const fvMesh& mesh, const word& thermoTypeName);
+
+
+    //- Selector
+    static autoPtr<psiChemistryModel> New(const fvMesh& mesh);
+
+
+    //- Destructor
+    virtual ~psiChemistryModel();
+
+
+    // Member Functions
+
+        //- Return access to the thermo package
+        inline hCombustionThermo& thermo();
+
+        //- Return const access to the thermo package
+        inline const hCombustionThermo& thermo() const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "psiChemistryModelI.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/psiChemistryModel/psiChemistryModelI.H b/src/thermophysicalModels/chemistryModel/chemistryModel/psiChemistryModel/psiChemistryModelI.H
new file mode 100644
index 0000000000000000000000000000000000000000..a6122b8b6840fbcf94afb92a5b99227000719d01
--- /dev/null
+++ b/src/thermophysicalModels/chemistryModel/chemistryModel/psiChemistryModel/psiChemistryModelI.H
@@ -0,0 +1,41 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+inline Foam::hCombustionThermo& Foam::psiChemistryModel::thermo()
+{
+    return thermo_();
+}
+
+
+inline const Foam::hCombustionThermo& Foam::psiChemistryModel::thermo() const
+{
+    return thermo_();
+}
+
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/psiChemistryModel/psiChemistryModels.C b/src/thermophysicalModels/chemistryModel/chemistryModel/psiChemistryModel/psiChemistryModels.C
new file mode 100644
index 0000000000000000000000000000000000000000..819156ee51b852829e078fabab1c29dd1491ad3f
--- /dev/null
+++ b/src/thermophysicalModels/chemistryModel/chemistryModel/psiChemistryModel/psiChemistryModels.C
@@ -0,0 +1,57 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+InClass
+    Foam::psiChemistryModel
+
+Description
+    Creates chemistry model instances templated on the type of thermodynamics
+
+\*---------------------------------------------------------------------------*/
+
+#include "makeChemistryModel.H"
+
+#include "psiChemistryModel.H"
+#include "ODEChemistryModel.H"
+#include "thermoPhysicsTypes.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    makeChemistryModel
+    (
+        ODEChemistryModel,
+        psiChemistryModel,
+        gasThermoPhysics
+    );
+    makeChemistryModel
+    (
+        ODEChemistryModel,
+        psiChemistryModel,
+        icoPoly8ThermoPhysics
+    );
+}
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/rhoChemistryModel/newRhoChemistryModel.C b/src/thermophysicalModels/chemistryModel/chemistryModel/rhoChemistryModel/newRhoChemistryModel.C
new file mode 100644
index 0000000000000000000000000000000000000000..c59a607f872dd92a5f569b245b95e22cfd34a2cb
--- /dev/null
+++ b/src/thermophysicalModels/chemistryModel/chemistryModel/rhoChemistryModel/newRhoChemistryModel.C
@@ -0,0 +1,111 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "rhoChemistryModel.H"
+
+// * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * * //
+
+Foam::autoPtr<Foam::rhoChemistryModel> Foam::rhoChemistryModel::New
+(
+    const fvMesh& mesh
+)
+{
+    word rhoChemistryModelType;
+    word thermoTypeName;
+    word userModel;
+
+    // Enclose the creation of the chemistrtyProperties to ensure it is
+    // deleted before the chemistrtyProperties is created otherwise the
+    // dictionary is entered in the database twice
+    {
+        IOdictionary chemistryPropertiesDict
+        (
+            IOobject
+            (
+                "chemistryProperties",
+                mesh.time().constant(),
+                mesh,
+                IOobject::MUST_READ,
+                IOobject::NO_WRITE
+            )
+        );
+
+        chemistryPropertiesDict.lookup("rhoChemistryModel") >> userModel;
+
+        // construct chemistry model type name by inserting first template
+        // argument
+        label tempOpen = userModel.find('<');
+        label tempClose = userModel.find('>');
+
+        word className = userModel(0, tempOpen);
+        thermoTypeName = userModel(tempOpen + 1, tempClose - tempOpen - 1);
+
+        rhoChemistryModelType =
+            className + '<' + typeName + ',' + thermoTypeName + '>';
+    }
+
+    if (debug)
+    {
+        Info<< "Selecting rhoChemistryModel " << rhoChemistryModelType << endl;
+    }
+    else
+    {
+        Info<< "Selecting rhoChemistryModel " << userModel << endl;
+    }
+
+    fvMeshConstructorTable::iterator cstrIter =
+        fvMeshConstructorTablePtr_->find(rhoChemistryModelType);
+
+    if (cstrIter == fvMeshConstructorTablePtr_->end())
+    {
+        if (debug)
+        {
+            FatalErrorIn("rhoChemistryModelBase::New(const mesh&)")
+                << "Unknown rhoChemistryModel type " << rhoChemistryModelType
+                << nl << nl << "Valid rhoChemistryModel types are:" << nl
+                << fvMeshConstructorTablePtr_->toc() << nl << exit(FatalError);
+        }
+        else
+        {
+            wordList models = fvMeshConstructorTablePtr_->toc();
+            forAll(models, i)
+            {
+                models[i] = models[i].replace(typeName + ',', "");
+            }
+
+            FatalErrorIn("rhoChemistryModelBase::New(const mesh&)")
+                << "Unknown rhoChemistryModel type " << userModel
+                << nl << nl << "Valid rhoChemistryModel types are:" << nl
+                << models << nl << exit(FatalError);
+        }
+    }
+
+    return autoPtr<rhoChemistryModel>
+        (cstrIter()(mesh, typeName, thermoTypeName));
+}
+
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/rhoChemistryModel/rhoChemistryModel.C b/src/thermophysicalModels/chemistryModel/chemistryModel/rhoChemistryModel/rhoChemistryModel.C
new file mode 100644
index 0000000000000000000000000000000000000000..73a3f00e9cf8c4fc81e5532264566a9b5c0eadc5
--- /dev/null
+++ b/src/thermophysicalModels/chemistryModel/chemistryModel/rhoChemistryModel/rhoChemistryModel.C
@@ -0,0 +1,58 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "rhoChemistryModel.H"
+#include "fvMesh.H"
+#include "Time.H"
+
+/* * * * * * * * * * * * * * * private static data * * * * * * * * * * * * * */
+
+namespace Foam
+{
+    defineTypeNameAndDebug(rhoChemistryModel, 0);
+    defineRunTimeSelectionTable(rhoChemistryModel, fvMesh);
+}
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::rhoChemistryModel::rhoChemistryModel
+(
+    const fvMesh& mesh,
+    const word& thermoTypeName
+)
+:
+    basicChemistryModel(mesh),
+    thermo_(hReactionThermo::NewType(mesh, thermoTypeName))
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::rhoChemistryModel::~rhoChemistryModel()
+{}
+
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/rhoChemistryModel/rhoChemistryModel.H b/src/thermophysicalModels/chemistryModel/chemistryModel/rhoChemistryModel/rhoChemistryModel.H
new file mode 100644
index 0000000000000000000000000000000000000000..43df6e0406ee2ed27d0de94b832bd399864648d5
--- /dev/null
+++ b/src/thermophysicalModels/chemistryModel/chemistryModel/rhoChemistryModel/rhoChemistryModel.H
@@ -0,0 +1,136 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::rhoChemistryModel
+
+Description
+    Chemistry model for compressibility-based thermodynamics
+
+SourceFiles
+    rhoChemistryModelI.H
+    rhoChemistryModel.C
+    newChemistryModel.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef rhoChemistryModel_H
+#define rhoChemistryModel_H
+
+#include "basicChemistryModel.H"
+#include "autoPtr.H"
+#include "runTimeSelectionTables.H"
+#include "hReactionThermo.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+// Forward declaration of classes
+class fvMesh;
+
+/*---------------------------------------------------------------------------*\
+                     class rhoChemistryModel Declaration
+\*---------------------------------------------------------------------------*/
+
+class rhoChemistryModel
+:
+    public basicChemistryModel
+{
+    // Private Member Functions
+
+        //- Construct as copy (not implemented)
+        rhoChemistryModel(const rhoChemistryModel&);
+
+        //- Disallow default bitwise assignment
+        void operator=(const rhoChemistryModel&);
+
+
+protected:
+
+    // Protected data
+
+        //- Thermo package
+        autoPtr<hReactionThermo> thermo_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("rhoChemistryModel");
+
+
+    //- Declare run-time constructor selection tables
+    declareRunTimeSelectionTable
+    (
+        autoPtr,
+        rhoChemistryModel,
+        fvMesh,
+        (
+            const fvMesh& mesh,
+            const word& compTypeName,
+            const word& thermoTypeName
+        ),
+        (mesh, compTypeName, thermoTypeName)
+    );
+
+
+    // Constructors
+
+        //- Construct from mesh
+        rhoChemistryModel(const fvMesh& mesh, const word& thermoTypeName);
+
+
+    //- Selector
+    static autoPtr<rhoChemistryModel> New(const fvMesh& mesh);
+
+
+    //- Destructor
+    virtual ~rhoChemistryModel();
+
+
+    // Member Functions
+
+        //- Return access to the thermo package
+        inline hReactionThermo& thermo();
+
+        //- Return const access to the thermo package
+        inline const hReactionThermo& thermo() const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "rhoChemistryModelI.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/rhoChemistryModel/rhoChemistryModelI.H b/src/thermophysicalModels/chemistryModel/chemistryModel/rhoChemistryModel/rhoChemistryModelI.H
new file mode 100644
index 0000000000000000000000000000000000000000..d96171001b694bb6fdd721b835a358c52eaef13f
--- /dev/null
+++ b/src/thermophysicalModels/chemistryModel/chemistryModel/rhoChemistryModel/rhoChemistryModelI.H
@@ -0,0 +1,41 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+inline Foam::hReactionThermo& Foam::rhoChemistryModel::thermo()
+{
+    return thermo_();
+}
+
+
+inline const Foam::hReactionThermo& Foam::rhoChemistryModel::thermo() const
+{
+    return thermo_();
+}
+
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/rhoChemistryModel/rhoChemistryModels.C b/src/thermophysicalModels/chemistryModel/chemistryModel/rhoChemistryModel/rhoChemistryModels.C
new file mode 100644
index 0000000000000000000000000000000000000000..69d3f75a66756d97594cff0b7d5d9f1fe40147ed
--- /dev/null
+++ b/src/thermophysicalModels/chemistryModel/chemistryModel/rhoChemistryModel/rhoChemistryModels.C
@@ -0,0 +1,57 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+InClass
+    Foam::rhoChemistryModel
+
+Description
+    Creates chemistry model instances templated on the type of thermodynamics
+
+\*---------------------------------------------------------------------------*/
+
+#include "makeChemistryModel.H"
+
+#include "rhoChemistryModel.H"
+#include "ODEChemistryModel.H"
+#include "thermoPhysicsTypes.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    makeChemistryModel
+    (
+        ODEChemistryModel,
+        rhoChemistryModel,
+        gasThermoPhysics
+    );
+    makeChemistryModel
+    (
+        ODEChemistryModel,
+        rhoChemistryModel,
+        icoPoly8ThermoPhysics
+    );
+}
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/chemistryModel/chemistrySolver/EulerImplicit/EulerImplicit.C b/src/thermophysicalModels/chemistryModel/chemistrySolver/EulerImplicit/EulerImplicit.C
index 53398178a70d09c3e2022b38233ba4f2a798b5a6..95cfc763881b4ae68bb1e1db21e0402501299a55 100644
--- a/src/thermophysicalModels/chemistryModel/chemistrySolver/EulerImplicit/EulerImplicit.C
+++ b/src/thermophysicalModels/chemistryModel/chemistrySolver/EulerImplicit/EulerImplicit.C
@@ -28,30 +28,17 @@ License
 #include "addToRunTimeSelectionTable.H"
 #include "simpleMatrix.H"
 
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
-
-namespace Foam
-{
-    defineTypeNameAndDebug(EulerImplicit, 0);
-    addToRunTimeSelectionTable
-    (
-        chemistrySolver,
-        EulerImplicit,
-        dictionary
-    );
-};
-
-
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::EulerImplicit::EulerImplicit
+template<class CompType, class ThermoType>
+Foam::EulerImplicit<CompType, ThermoType>::EulerImplicit
 (
-    const Foam::dictionary& dict,
-    Foam::chemistryModel& chemistry
+    ODEChemistryModel<CompType, ThermoType>& model,
+    const word& modelName
 )
 :
-    chemistrySolver(dict, chemistry),
-    coeffsDict_(dict.subDict(typeName + "Coeffs")),
+    chemistrySolver<CompType, ThermoType>(model, modelName),
+    coeffsDict_(model.subDict(modelName + "Coeffs")),
     cTauChem_(readScalar(coeffsDict_.lookup("cTauChem"))),
     equil_(coeffsDict_.lookup("equilibriumRateLimiter"))
 {}
@@ -59,13 +46,15 @@ Foam::EulerImplicit::EulerImplicit
 
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
-Foam::EulerImplicit::~EulerImplicit()
+template<class CompType, class ThermoType>
+Foam::EulerImplicit<CompType, ThermoType>::~EulerImplicit()
 {}
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-Foam::scalar Foam::EulerImplicit::solve
+template<class CompType, class ThermoType>
+Foam::scalar Foam::EulerImplicit<CompType, ThermoType>::solve
 (
     scalarField &c,
     const scalar T,
@@ -74,28 +63,27 @@ Foam::scalar Foam::EulerImplicit::solve
     const scalar dt
 ) const
 {
-
     scalar pf, cf, pr, cr;
     label lRef, rRef;
 
-    label Ns = chemistry_.Ns();
-    simpleMatrix<scalar> RR(Ns);
-    
-    for(label i=0; i<Ns; i++)
+    label nSpecie = this->model_.nSpecie();
+    simpleMatrix<scalar> RR(nSpecie);
+
+    for (label i=0; i<nSpecie; i++)
     {
         c[i] = max(0.0, c[i]);
     }
 
-    for(label i=0; i<Ns; i++)
+    for (label i=0; i<nSpecie; i++)
     {
         RR.source()[i] = c[i]/dt;
     }
 
-    for(label i=0; i<chemistry_.reactions().size(); i++)
+    for (label i=0; i<this->model_.reactions().size(); i++)
     {
-        const chemistryModel::reaction& R = chemistry_.reactions()[i];
+        const Reaction<ThermoType>& R = this->model_.reactions()[i];
 
-        scalar omegai = chemistry_.omega
+        scalar omegai = this->model_.omega
         (
             R, c, T, p, pf, cf, lRef, pr, cr, rRef
         );
@@ -113,59 +101,59 @@ Foam::scalar Foam::EulerImplicit::solve
             }
         }
 
-        for(label s=0; s<R.lhs().size(); s++)
+        for (label s=0; s<R.lhs().size(); s++)
         {
             label si = R.lhs()[s].index;
             scalar sl = R.lhs()[s].stoichCoeff;
             RR[si][rRef] -= sl*pr*corr;
             RR[si][lRef] += sl*pf*corr;
         }
-            
-        for(label s=0; s<R.rhs().size(); s++)
+
+        for (label s=0; s<R.rhs().size(); s++)
         {
             label si = R.rhs()[s].index;
             scalar sr = R.rhs()[s].stoichCoeff;
             RR[si][lRef] -= sr*pf*corr;
             RR[si][rRef] += sr*pr*corr;
         }
-        
+
     } // end for(label i...
 
-    
-    for(label i=0; i<Ns; i++)
+
+    for (label i=0; i<nSpecie; i++)
     {
         RR[i][i] += 1.0/dt;
     }
 
     c = RR.LUsolve();
-    for(label i=0; i<Ns; i++)
+    for (label i=0; i<nSpecie; i++)
     {
         c[i] = max(0.0, c[i]);
     }
 
     // estimate the next time step
     scalar tMin = GREAT;
-    label n = chemistry_.nEqns();
-    scalarField c1(n, 0.0);
+    label nEqns = this->model_.nEqns();
+    scalarField c1(nEqns, 0.0);
 
-    for(label i=0; i<Ns; i++)
+    for (label i=0; i<nSpecie; i++)
     {
         c1[i] = c[i];
     }
-    c1[Ns] = T;
-    c1[Ns+1] = p;
+    c1[nSpecie] = T;
+    c1[nSpecie+1] = p;
+
+    scalarField dcdt(nEqns, 0.0);
+    this->model_.derivatives(0.0, c1, dcdt);
 
-    scalarField dcdt(n, 0.0);
-    chemistry_.derivatives(0.0, c1, dcdt);
-    
     scalar sumC = sum(c);
 
-    for(label i=0; i<Ns; i++)
+    for (label i=0; i<nSpecie; i++)
     {
         scalar d = dcdt[i];
         if (d < -SMALL)
         {
-            tMin = min(tMin, -(c[i]+SMALL)/d);
+            tMin = min(tMin, -(c[i] + SMALL)/d);
         }
         else
         {
@@ -173,10 +161,9 @@ Foam::scalar Foam::EulerImplicit::solve
             scalar cm = max(sumC - c[i], 1.0e-5);
             tMin = min(tMin, cm/d);
         }
-    }    
+    }
 
     return cTauChem_*tMin;
-
 }
 
 
diff --git a/src/thermophysicalModels/chemistryModel/chemistrySolver/EulerImplicit/EulerImplicit.H b/src/thermophysicalModels/chemistryModel/chemistrySolver/EulerImplicit/EulerImplicit.H
index b5d6eb5cc50c3e9f0132165774021ed35a0167d3..521a06e2768ddd4e10bb97ac3eac62271f3fe140 100644
--- a/src/thermophysicalModels/chemistryModel/chemistrySolver/EulerImplicit/EulerImplicit.H
+++ b/src/thermophysicalModels/chemistryModel/chemistrySolver/EulerImplicit/EulerImplicit.H
@@ -43,20 +43,25 @@ SourceFiles
 namespace Foam
 {
 
+// Forward declaration of classes
+template<class CompType, class ThermoType>
+class EulerImplicit;
+
 /*---------------------------------------------------------------------------*\
                        Class EulerImplicit Declaration
 \*---------------------------------------------------------------------------*/
 
+template<class CompType, class ThermoType>
 class EulerImplicit
 :
-    public chemistrySolver
+    public chemistrySolver<CompType, ThermoType>
 {
     // Private data
 
         dictionary coeffsDict_;
 
-        // model constants
-    
+        // Model constants
+
             scalar cTauChem_;
             Switch equil_;
 
@@ -72,14 +77,13 @@ public:
         //- Construct from components
         EulerImplicit
         (
-            const dictionary& dict,
-            chemistryModel& chemistry
+            ODEChemistryModel<CompType, ThermoType>& model,
+            const word& modelName
         );
 
 
-    // Destructor
-
-        ~EulerImplicit();
+    //- Destructor
+    virtual ~EulerImplicit();
 
 
     // Member Functions
@@ -102,6 +106,12 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+#ifdef NoRepository
+#   include "EulerImplicit.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 #endif
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/chemistryModel/chemistrySolver/chemistrySolver/chemistrySolver.C b/src/thermophysicalModels/chemistryModel/chemistrySolver/chemistrySolver/chemistrySolver.C
index 4b3463f03e9c581e151f527d07427c66c7a9ca80..129bcabb00e470caeeb4837d379095459109f191 100644
--- a/src/thermophysicalModels/chemistryModel/chemistrySolver/chemistrySolver/chemistrySolver.C
+++ b/src/thermophysicalModels/chemistryModel/chemistrySolver/chemistrySolver/chemistrySolver.C
@@ -29,29 +29,24 @@ License
 namespace Foam
 {
 
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
-
-defineTypeNameAndDebug(chemistrySolver, 0);
-defineRunTimeSelectionTable(chemistrySolver, dictionary);
-
-
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-// Construct from components
-Foam::chemistrySolver::chemistrySolver
+template<class CompType, class ThermoType>
+Foam::chemistrySolver<CompType, ThermoType>::chemistrySolver
 (
-    const Foam::dictionary& dict,
-    Foam::chemistryModel& chemistry
+    ODEChemistryModel<CompType, ThermoType>& model,
+    const word& modelName
 )
 :
-    dict_(dict),
-    chemistry_(chemistry)
+    model_(model),
+    name_(modelName)
 {}
 
 
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
-Foam::chemistrySolver::~chemistrySolver()
+template<class CompType, class ThermoType>
+Foam::chemistrySolver<CompType, ThermoType>::~chemistrySolver()
 {}
 
 
diff --git a/src/thermophysicalModels/chemistryModel/chemistrySolver/chemistrySolver/chemistrySolver.H b/src/thermophysicalModels/chemistryModel/chemistrySolver/chemistrySolver/chemistrySolver.H
index 6a1a9f6ade3446122258694823c9375e20535b78..0a21a2755c2b2f79f25bc9fc7545d1ff0e64d3f6 100644
--- a/src/thermophysicalModels/chemistryModel/chemistrySolver/chemistrySolver/chemistrySolver.H
+++ b/src/thermophysicalModels/chemistryModel/chemistrySolver/chemistrySolver/chemistrySolver.H
@@ -26,7 +26,7 @@ Class
     Foam::chemistrySolver
 
 Description
-    An abstract class for solving chemistry
+    An abstract base class for solving chemistry
 
 SourceFiles
     chemistrySolver.C
@@ -36,7 +36,7 @@ SourceFiles
 #ifndef chemistrySolver_H
 #define chemistrySolver_H
 
-#include "chemistryModel.H"
+#include "ODEChemistryModel.H"
 #include "IOdictionary.H"
 #include "scalarField.H"
 #include "autoPtr.H"
@@ -47,17 +47,26 @@ SourceFiles
 namespace Foam
 {
 
+// Forward declaration of classes
+template<class CompType, class ThermoType>
+class chemistrySolver;
+
 /*---------------------------------------------------------------------------*\
-                           Class chemistrySolver Declaration
+                      Class chemistrySolver Declaration
 \*---------------------------------------------------------------------------*/
 
+template<class CompType, class ThermoType>
 class chemistrySolver
 {
-
 protected:
 
-        const dictionary& dict_;
-        chemistryModel& chemistry_;
+    // Protected data
+
+        //- Reference to the chemistry model
+        ODEChemistryModel<CompType, ThermoType>& model_;
+
+        //- Name of the chemistry solver
+        const word name_;
 
 
 public:
@@ -73,10 +82,10 @@ public:
             chemistrySolver,
             dictionary,
             (
-                const dictionary& dict,
-                chemistryModel& chemistry
+                ODEChemistryModel<CompType, ThermoType>& model,
+                const word& modelName
             ),
-            (dict, chemistry)
+            (model, modelName)
         );
 
 
@@ -85,23 +94,22 @@ public:
         //- Construct from components
         chemistrySolver
         (
-            const dictionary& dict,
-            chemistryModel& chemistry
+            ODEChemistryModel<CompType, ThermoType>& model,
+            const word& modelName
         );
 
 
-    // Selectors
-
-        static autoPtr<chemistrySolver> New
-        (
-            const dictionary& dict,
-            chemistryModel& chemistry
-        );
-
+    //- Selector
+    static autoPtr<chemistrySolver> New
+    (
+        ODEChemistryModel<CompType, ThermoType>& model,
+        const word& compTypeName,
+        const word& thermoTypeName
+    );
 
-    // Destructor
 
-        virtual ~chemistrySolver();
+    //- Destructor
+    virtual ~chemistrySolver();
 
 
     // Member Functions
@@ -124,6 +132,50 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+#define makeChemistrySolver(Comp, Thermo)                                     \
+                                                                              \
+    typedef chemistrySolver<Comp, Thermo>                                     \
+        chemistrySolver##Comp##Thermo;                                        \
+                                                                              \
+    defineTemplateTypeNameAndDebugWithName                                    \
+    (                                                                         \
+        chemistrySolver##Comp##Thermo,                                        \
+        "chemistryModel<"#Comp","#Thermo">",                                  \
+        0                                                                     \
+    );                                                                        \
+                                                                              \
+    defineTemplateRunTimeSelectionTable                                       \
+    (                                                                         \
+        chemistrySolver##Comp##Thermo,                                        \
+        dictionary                                                            \
+    );
+
+
+#define makeChemistrySolverType(SS, Comp, Thermo)                             \
+                                                                              \
+    typedef SS<Comp, Thermo> SS##Comp##Thermo;                                \
+                                                                              \
+    defineTemplateTypeNameAndDebugWithName                                    \
+    (                                                                         \
+        SS##Comp##Thermo,                                                     \
+        #SS"<"#Comp","#Thermo">",                                             \
+        0                                                                     \
+    );                                                                        \
+                                                                              \
+    chemistrySolver<Comp, Thermo>::                                           \
+        adddictionaryConstructorToTable<SS<Comp, Thermo> >                    \
+            add##SS##Comp##Thermo##ConstructorToTable_;
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#ifdef NoRepository
+#   include "chemistrySolver.C"
+#   include "newChemistrySolver.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 #endif
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/chemistryModel/chemistrySolver/chemistrySolver/makeChemistrySolvers.C b/src/thermophysicalModels/chemistryModel/chemistrySolver/chemistrySolver/makeChemistrySolvers.C
new file mode 100644
index 0000000000000000000000000000000000000000..b371931f5fd55b7b817873f27a30ea34533f57a6
--- /dev/null
+++ b/src/thermophysicalModels/chemistryModel/chemistrySolver/chemistrySolver/makeChemistrySolvers.C
@@ -0,0 +1,83 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "thermoPhysicsTypes.H"
+#include "chemistrySolver.H"
+
+#include "psiChemistryModel.H"
+#include "rhoChemistryModel.H"
+
+#include "EulerImplicit.H"
+#include "ode.H"
+#include "sequential.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    makeChemistrySolver(psiChemistryModel, gasThermoPhysics)
+    makeChemistrySolverType(EulerImplicit, psiChemistryModel, gasThermoPhysics)
+    makeChemistrySolverType(ode, psiChemistryModel, gasThermoPhysics)
+    makeChemistrySolverType(sequential, psiChemistryModel, gasThermoPhysics)
+
+    makeChemistrySolver(psiChemistryModel, icoPoly8ThermoPhysics)
+    makeChemistrySolverType
+    (
+        EulerImplicit,
+        psiChemistryModel,
+        icoPoly8ThermoPhysics
+    )
+    makeChemistrySolverType(ode, psiChemistryModel, icoPoly8ThermoPhysics)
+    makeChemistrySolverType
+    (
+        sequential,
+        psiChemistryModel,
+        icoPoly8ThermoPhysics
+    )
+
+    makeChemistrySolver(rhoChemistryModel, gasThermoPhysics)
+    makeChemistrySolverType(EulerImplicit, rhoChemistryModel, gasThermoPhysics)
+    makeChemistrySolverType(ode, rhoChemistryModel, gasThermoPhysics)
+    makeChemistrySolverType(sequential, rhoChemistryModel, gasThermoPhysics)
+
+    makeChemistrySolver(rhoChemistryModel, icoPoly8ThermoPhysics)
+    makeChemistrySolverType
+    (
+        EulerImplicit,
+        rhoChemistryModel,
+        icoPoly8ThermoPhysics
+    )
+    makeChemistrySolverType(ode, rhoChemistryModel, icoPoly8ThermoPhysics)
+    makeChemistrySolverType
+    (
+        sequential,
+        rhoChemistryModel,
+        icoPoly8ThermoPhysics
+    )
+}
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/thermophysicalModels/chemistryModel/chemistrySolver/chemistrySolver/newChemistrySolver.C b/src/thermophysicalModels/chemistryModel/chemistrySolver/chemistrySolver/newChemistrySolver.C
index 37869dcf30b4c3c10a77e55be795fc19df296614..b0baa00fbe9068c1c61e487296a66fe88871c45c 100644
--- a/src/thermophysicalModels/chemistryModel/chemistrySolver/chemistrySolver/newChemistrySolver.C
+++ b/src/thermophysicalModels/chemistryModel/chemistrySolver/chemistrySolver/newChemistrySolver.C
@@ -26,33 +26,54 @@ License
 
 #include "chemistrySolver.H"
 
-
 // * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * * //
 
-Foam::autoPtr<Foam::chemistrySolver> Foam::chemistrySolver::New
+template<class CompType, class ThermoType>
+Foam::autoPtr<Foam::chemistrySolver<CompType, ThermoType> >
+Foam::chemistrySolver<CompType, ThermoType>::New
 (
-    const dictionary& dict,
-    chemistryModel& chemistry
+    ODEChemistryModel<CompType, ThermoType>& model,
+    const word& compTypeName,
+    const word& thermoTypeName
 )
 {
-    word chemistrySolverType(dict.lookup("chemistrySolver"));
+    word modelName(model.lookup("chemistrySolver"));
+
+    word chemistrySolverType =
+        modelName + '<' + compTypeName + ',' + thermoTypeName + '>';
 
-    dictionaryConstructorTable::iterator cstrIter =
+    Info<< "Selecting chemistrySolver " << modelName << endl;
+
+    typename dictionaryConstructorTable::iterator cstrIter =
         dictionaryConstructorTablePtr_->find(chemistrySolverType);
 
     if (cstrIter == dictionaryConstructorTablePtr_->end())
     {
+        wordList models = dictionaryConstructorTablePtr_->toc();
+        forAll(models, i)
+        {
+            models[i] = models[i].replace
+            (
+                '<' + compTypeName + ',' + thermoTypeName + '>',
+                ""
+            );
+        }
+
         FatalErrorIn
         (
-            "chemistrySolver::New(const dictionary&, const chemistryModel&)"
-        )   << "Unknown chemistrySolverType type " << chemistrySolverType
-            << endl << endl
-            << "Valid chemistrySolverType types are :" << endl
-            << dictionaryConstructorTablePtr_->toc()
-            << exit(FatalError);
+            "chemistrySolver::New"
+            "("
+                "const ODEChemistryModel&, "
+                "const word&, "
+                "const word&"
+            ")"
+        )   << "Unknown chemistrySolver type " << modelName
+            << nl << nl << "Valid chemistrySolver types are:" << nl
+            << models << nl << exit(FatalError);
     }
 
-    return autoPtr<chemistrySolver>(cstrIter()(dict, chemistry));
+    return autoPtr<chemistrySolver<CompType, ThermoType> >
+        (cstrIter()(model, modelName));
 }
 
 
diff --git a/src/thermophysicalModels/chemistryModel/chemistrySolver/ode/ode.C b/src/thermophysicalModels/chemistryModel/chemistrySolver/ode/ode.C
index dcc05caaf182e23dec6879d67846a3d91d838adc..7a4bde923f7610abde7a598c8d1d97d09e114a39 100644
--- a/src/thermophysicalModels/chemistryModel/chemistrySolver/ode/ode.C
+++ b/src/thermophysicalModels/chemistryModel/chemistrySolver/ode/ode.C
@@ -25,36 +25,21 @@ License
 \*---------------------------------------------------------------------------*/
 
 #include "ode.H"
-#include "addToRunTimeSelectionTable.H"
-
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
-
-namespace Foam
-{
-    defineTypeNameAndDebug(ode, 0);
-    addToRunTimeSelectionTable
-    (
-        chemistrySolver,
-        ode,
-        dictionary
-    );
-}
-
+#include "ODEChemistryModel.H"
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-// Construct from components
-Foam::ode::ode
+template<class CompType, class ThermoType>
+Foam::ode<CompType, ThermoType>::ode
 (
-    const Foam::dictionary& dict,
-    Foam::chemistryModel& chemistry
+    ODEChemistryModel<CompType, ThermoType>& model,
+    const word& modelName
 )
 :
-    chemistrySolver(dict, chemistry),
-    chemistry_(chemistry),
-    coeffsDict_(dict.subDict(typeName + "Coeffs")),
+    chemistrySolver<CompType, ThermoType>(model, modelName),
+    coeffsDict_(model.subDict(modelName + "Coeffs")),
     solverName_(coeffsDict_.lookup("ODESolver")),
-    odeSolver_(ODESolver::New(solverName_, chemistry)),
+    odeSolver_(ODESolver::New(solverName_, model)),
     eps_(readScalar(coeffsDict_.lookup("eps"))),
     scale_(readScalar(coeffsDict_.lookup("scale")))
 {}
@@ -62,14 +47,15 @@ Foam::ode::ode
 
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
-Foam::ode::~ode()
+template<class CompType, class ThermoType>
+Foam::ode<CompType, ThermoType>::~ode()
 {}
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-
-Foam::scalar Foam::ode::solve
+template<class CompType, class ThermoType>
+Foam::scalar Foam::ode<CompType, ThermoType>::solve
 (
     scalarField& c,
     const scalar T,
@@ -78,22 +64,22 @@ Foam::scalar Foam::ode::solve
     const scalar dt
 ) const
 {
-    label Ns = chemistry_.Ns();
-    scalarField c1(chemistry_.nEqns(), 0.0);
+    label nSpecie = this->model_.nSpecie();
+    scalarField c1(this->model_.nEqns(), 0.0);
 
     // copy the concentration, T and P to the total solve-vector
-    for(label i=0; i<Ns; i++)
+    for (label i=0; i<nSpecie; i++)
     {
         c1[i] = c[i];
     }
-    c1[Ns] = T;
-    c1[Ns+1] = p;
+    c1[nSpecie] = T;
+    c1[nSpecie+1] = p;
 
     scalar dtEst = dt;
 
     odeSolver_->solve
     (
-        chemistry_,
+        this->model_,
         t0,
         t0 + dt,
         c1,
@@ -101,7 +87,7 @@ Foam::scalar Foam::ode::solve
         dtEst
     );
 
-    for(label i=0; i<c.size(); i++)
+    for (label i=0; i<c.size(); i++)
     {
         c[i] = max(0.0, c1[i]);
     }
diff --git a/src/thermophysicalModels/chemistryModel/chemistrySolver/ode/ode.H b/src/thermophysicalModels/chemistryModel/chemistrySolver/ode/ode.H
index 4c0cf1d007339cc2b9449fea5ace9d6b4e237477..faac5ca2ad2826a51967d4b7c2dfe18077c14183 100644
--- a/src/thermophysicalModels/chemistryModel/chemistrySolver/ode/ode.H
+++ b/src/thermophysicalModels/chemistryModel/chemistrySolver/ode/ode.H
@@ -44,24 +44,27 @@ SourceFiles
 namespace Foam
 {
 
+// Forward declaration of classes
+template<class CompType, class ThermoType>
+class ode;
+
 /*---------------------------------------------------------------------------*\
-                           Class ode Declaration
+                            Class ode Declaration
 \*---------------------------------------------------------------------------*/
 
+template<class CompType, class ThermoType>
 class ode
 :
-    public chemistrySolver
+    public chemistrySolver<CompType, ThermoType>
 {
     // Private data
 
-        chemistryModel& chemistry_;
-
         dictionary coeffsDict_;
         const word solverName_;
         autoPtr<ODESolver> odeSolver_;
 
-        // model constants
-    
+        // Model constants
+
             scalar eps_;
             scalar scale_;
 
@@ -77,14 +80,13 @@ public:
         //- Construct from components
         ode
         (
-            const dictionary& dict,
-            chemistryModel& chemistry
+            ODEChemistryModel<CompType, ThermoType>& model,
+            const word& modelName
         );
 
 
-    // Destructor
-
-        ~ode();
+    //- Destructor
+    virtual ~ode();
 
 
     // Member Functions
@@ -106,6 +108,12 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+#ifdef NoRepository
+#   include "ode.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 #endif
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/chemistryModel/chemistrySolver/sequential/sequential.C b/src/thermophysicalModels/chemistryModel/chemistrySolver/sequential/sequential.C
index 1837f533db343fa6b7d6d5286797a96713678830..d929c5aea2e12a3d426441418db6319ffead318c 100644
--- a/src/thermophysicalModels/chemistryModel/chemistrySolver/sequential/sequential.C
+++ b/src/thermophysicalModels/chemistryModel/chemistrySolver/sequential/sequential.C
@@ -27,31 +27,17 @@ License
 #include "sequential.H"
 #include "addToRunTimeSelectionTable.H"
 
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
-
-namespace Foam
-{
-    defineTypeNameAndDebug(sequential, 0);
-    addToRunTimeSelectionTable
-    (
-        chemistrySolver,
-        sequential,
-        dictionary
-    );
-};
-
-
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-// Construct from components
-Foam::sequential::sequential
+template<class CompType, class ThermoType>
+Foam::sequential<CompType, ThermoType>::sequential
 (
-    const Foam::dictionary& dict,
-    Foam::chemistryModel& chemistry
+    ODEChemistryModel<CompType, ThermoType>& model,
+    const word& modelName
 )
 :
-    chemistrySolver(dict, chemistry),
-    coeffsDict_(dict.subDict(typeName + "Coeffs")),
+    chemistrySolver<CompType, ThermoType>(model, modelName),
+    coeffsDict_(model.subDict(modelName + "Coeffs")),
     cTauChem_(readScalar(coeffsDict_.lookup("cTauChem"))),
     equil_(coeffsDict_.lookup("equilibriumRateLimiter"))
 {}
@@ -59,13 +45,15 @@ Foam::sequential::sequential
 
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
-Foam::sequential::~sequential()
+template<class CompType, class ThermoType>
+Foam::sequential<CompType, ThermoType>::~sequential()
 {}
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-Foam::scalar Foam::sequential::solve
+template<class CompType, class ThermoType>
+Foam::scalar Foam::sequential<CompType, ThermoType>::solve
 (
     scalarField &c,
     const scalar T,
@@ -79,11 +67,11 @@ Foam::scalar Foam::sequential::solve
     scalar pf, cf, pb, cb;
     label lRef, rRef;
 
-    for(label i=0; i<chemistry_.reactions().size(); i++)
+    for (label i=0; i<this->model_.reactions().size(); i++)
     {
-        const chemistryModel::reaction& R = chemistry_.reactions()[i];
+        const Reaction<ThermoType>& R = this->model_.reactions()[i];
 
-        scalar om0 = chemistry_.omega
+        scalar om0 = this->model_.omega
         (
             R, c, T, p, pf, cf, lRef, pb, cb, rRef
         );
@@ -108,23 +96,23 @@ Foam::scalar Foam::sequential::solve
 
 
         // update species
-        for(label s=0; s<R.lhs().size(); s++)
+        for (label s=0; s<R.lhs().size(); s++)
         {
             label si = R.lhs()[s].index;
             scalar sl = R.lhs()[s].stoichCoeff;
             c[si] -= dt*sl*omeg;
             c[si] = max(0.0, c[si]);
-        }        
+        }
 
-        for(label s=0; s<R.rhs().size(); s++)
+        for (label s=0; s<R.rhs().size(); s++)
         {
             label si = R.rhs()[s].index;
             scalar sr = R.rhs()[s].stoichCoeff;
             c[si] += dt*sr*omeg;
             c[si] = max(0.0, c[si]);
-        }        
+        }
 
-    } // end for(label i...
+    } // end for (label i...
 
     return cTauChem_/tChemInv;
 }
diff --git a/src/thermophysicalModels/chemistryModel/chemistrySolver/sequential/sequential.H b/src/thermophysicalModels/chemistryModel/chemistrySolver/sequential/sequential.H
index e128b900d92a4ecbf93cd8164377265cdb7e1037..c72692a40faaf68e29885d714a99cc2657952bbc 100644
--- a/src/thermophysicalModels/chemistryModel/chemistrySolver/sequential/sequential.H
+++ b/src/thermophysicalModels/chemistryModel/chemistrySolver/sequential/sequential.H
@@ -45,19 +45,24 @@ SourceFiles
 namespace Foam
 {
 
+// Forward declaration of classes
+template<class CompType, class ThermoType>
+class sequential;
+
 /*---------------------------------------------------------------------------*\
-                           Class sequential Declaration
+                         Class sequential Declaration
 \*---------------------------------------------------------------------------*/
 
+template<class CompType, class ThermoType>
 class sequential
 :
-    public chemistrySolver
+    public chemistrySolver<CompType, ThermoType>
 {
     // Private data
 
         dictionary coeffsDict_;
 
-        // model constants
+        // Model constants
 
             scalar cTauChem_;
             Switch equil_;
@@ -75,14 +80,13 @@ public:
         //- Construct from components
         sequential
         (
-            const dictionary& dict,
-            chemistryModel& chemistry
+            ODEChemistryModel<CompType, ThermoType>& model,
+            const word& modelName
         );
 
 
-    // Destructor
-
-        ~sequential();
+    //- Destructor
+    virtual ~sequential();
 
 
     // Member Functions
@@ -105,6 +109,12 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+#ifdef NoRepository
+#   include "sequential.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 #endif
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/combustion/Make/files b/src/thermophysicalModels/combustion/Make/files
deleted file mode 100644
index 70e985783d90225deba8fb5cf844354112e82e48..0000000000000000000000000000000000000000
--- a/src/thermophysicalModels/combustion/Make/files
+++ /dev/null
@@ -1,33 +0,0 @@
-hCombustionThermo   = hCombustionThermo
-hhuCombustionThermo = hhuCombustionThermo
-hThermo             = hThermo
-
-chemistryReader     = chemistryReaders/chemistryReader
-foamChemistryReader = chemistryReaders/foamChemistryReader
-chemkinReader       = chemistryReaders/chemkinReader
-
-mixtures            = mixtureThermos/mixtures
-combustionMixture   = $(mixtures)/combustionMixture
-reactingMixture     = $(mixtures)/reactingMixture
-
-$(chemistryReader)/chemistryReader.C
-$(foamChemistryReader)/foamChemistryReader.C
-$(chemkinReader)/chemkinReader.C
-$(chemkinReader)/chemkinLexer.L
-
-$(combustionMixture)/combustionMixture.C
-$(reactingMixture)/reactingMixture.C
-
-$(hCombustionThermo)/hCombustionThermo.C
-$(hCombustionThermo)/newhCombustionThermo.C
-$(hCombustionThermo)/hCombustionThermos.C
-
-$(hhuCombustionThermo)/hhuCombustionThermo.C
-$(hhuCombustionThermo)/newhhuCombustionThermo.C
-$(hhuCombustionThermo)/hhuCombustionThermos.C
-
-derivedFvPatchFields/fixedUnburntEnthalpy/fixedUnburntEnthalpyFvPatchScalarField.C
-derivedFvPatchFields/gradientUnburntEnthalpy/gradientUnburntEnthalpyFvPatchScalarField.C
-derivedFvPatchFields/mixedUnburntEnthalpy/mixedUnburntEnthalpyFvPatchScalarField.C
-
-LIB = $(FOAM_LIBBIN)/libcombustionThermophysicalModels
diff --git a/src/thermophysicalModels/laminarFlameSpeed/Make/options b/src/thermophysicalModels/laminarFlameSpeed/Make/options
index d3f9e6993df72cb8197451476c7ece3f24750e4d..fe682dababbceea0e6ce13b0400a55e8bfb59bae 100644
--- a/src/thermophysicalModels/laminarFlameSpeed/Make/options
+++ b/src/thermophysicalModels/laminarFlameSpeed/Make/options
@@ -2,7 +2,7 @@ EXE_INC = \
     -I$(LIB_SRC)/finiteVolume/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
-    -I$(LIB_SRC)/thermophysicalModels/combustion/lnInclude
+    -I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude
 
 LIB_LIBS = \
     -lfiniteVolume
diff --git a/src/thermophysicalModels/liquidMixture/liquidMixture/liquidMixture.C b/src/thermophysicalModels/liquidMixture/liquidMixture/liquidMixture.C
index 72852bdb80cad7d9d3891f0e696fcf85f7a3dc9c..9cfc15a8692efc66e73819802bb8a2002b8a4283 100644
--- a/src/thermophysicalModels/liquidMixture/liquidMixture/liquidMixture.C
+++ b/src/thermophysicalModels/liquidMixture/liquidMixture/liquidMixture.C
@@ -34,7 +34,6 @@ const Foam::scalar Foam::liquidMixture::TrMax = 0.999;
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-// Construct from components
 Foam::liquidMixture::liquidMixture
 (
     const dictionary& thermophysicalProperties
@@ -72,6 +71,7 @@ Foam::liquidMixture::liquidMixture
     }
 }
 
+
 // * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * * //
 
 Foam::autoPtr<Foam::liquidMixture> Foam::liquidMixture::New
@@ -85,7 +85,6 @@ Foam::autoPtr<Foam::liquidMixture> Foam::liquidMixture::New
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-// Critical Temperature
 Foam::scalar Foam::liquidMixture::Tc
 (
     const scalarField& x
@@ -104,9 +103,8 @@ Foam::scalar Foam::liquidMixture::Tc
 
     return vTc/vc;
 }
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-// Pseudocritical temperature
+
 Foam::scalar Foam::liquidMixture::Tpc
 (
     const scalarField& x
@@ -121,9 +119,7 @@ Foam::scalar Foam::liquidMixture::Tpc
     return Tpc;
 }
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-// Pseudocritical pressure
 Foam::scalar Foam::liquidMixture::Ppc
 (
     const scalarField& x
@@ -140,7 +136,6 @@ Foam::scalar Foam::liquidMixture::Ppc
     return specie::RR*Zc*Tpc(x)/Vc;
 }
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 Foam::scalar Foam::liquidMixture::omega
 (
@@ -156,7 +151,6 @@ Foam::scalar Foam::liquidMixture::omega
     return omega;
 }
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 Foam::scalarField Foam::liquidMixture::Xs
 (
@@ -178,9 +172,6 @@ Foam::scalarField Foam::liquidMixture::Xs
     return xs;
 }
 
-//-----------------------------------------------------------------------------
-// Physical properties
-//-----------------------------------------------------------------------------
 
 Foam::scalar Foam::liquidMixture::W
 (
@@ -196,6 +187,7 @@ Foam::scalar Foam::liquidMixture::W
     return W;
 }
 
+
 Foam::scalarField Foam::liquidMixture::Y
 (
     const scalarField& X
@@ -211,6 +203,7 @@ Foam::scalarField Foam::liquidMixture::Y
     return Y;
 }
 
+
 Foam::scalarField Foam::liquidMixture::X
 (
     const scalarField& Y
@@ -250,6 +243,7 @@ Foam::scalar Foam::liquidMixture::rho
     return W(x)/v;
 }
 
+
 Foam::scalar Foam::liquidMixture::pv
 (
     const scalar p,
@@ -271,6 +265,7 @@ Foam::scalar Foam::liquidMixture::pv
     return pv/W(x);
 }
 
+
 Foam::scalar Foam::liquidMixture::hl
 (
     const scalar p,
@@ -292,6 +287,7 @@ Foam::scalar Foam::liquidMixture::hl
     return hl/W(x);
 }
 
+
 Foam::scalar Foam::liquidMixture::cp
 (
     const scalar p,
@@ -313,6 +309,7 @@ Foam::scalar Foam::liquidMixture::cp
     return cp/W(x);
 }
 
+
 Foam::scalar Foam::liquidMixture::sigma
 (
     const scalar p,
@@ -346,6 +343,7 @@ Foam::scalar Foam::liquidMixture::sigma
     return sigma;
 }
 
+
 Foam::scalar Foam::liquidMixture::mu
 (
     const scalar p,
@@ -367,6 +365,7 @@ Foam::scalar Foam::liquidMixture::mu
     return exp(mu);
 }
 
+
 Foam::scalar Foam::liquidMixture::K
 (
     const scalar p,
@@ -402,7 +401,12 @@ Foam::scalar Foam::liquidMixture::K
         {
             scalar Tj = min(TrMax*properties_[j].Tc(), T);
 
-            scalar Kij = 2.0/(1.0/properties_[i].K(p, Ti) + 1.0/properties_[j].K(p, Tj));
+            scalar Kij =
+                2.0
+               /(
+                    1.0/properties_[i].K(p, Ti)
+                  + 1.0/properties_[j].K(p, Tj)
+                );
             K += phii[i]*phii[j]*Kij;
         }
     }
@@ -410,6 +414,7 @@ Foam::scalar Foam::liquidMixture::K
     return K;
 }
 
+
 Foam::scalar Foam::liquidMixture::D
 (
     const scalar p,
@@ -432,4 +437,5 @@ Foam::scalar Foam::liquidMixture::D
     return 1.0/Dinv;
 }
 
+
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/Ar/Ar.C b/src/thermophysicalModels/liquids/Ar/Ar.C
index 7bd5bc451618118ca02c0e519e1fa3e0a754e598..901a6ea6dadfbd353aa05443534522d4e86bf652 100644
--- a/src/thermophysicalModels/liquids/Ar/Ar.C
+++ b/src/thermophysicalModels/liquids/Ar/Ar.C
@@ -27,19 +27,117 @@ License
 #include "Ar.H"
 #include "addToRunTimeSelectionTable.H"
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 namespace Foam
 {
+    defineTypeNameAndDebug(Ar, 0);
+    addToRunTimeSelectionTable(liquid, Ar,);
+    addToRunTimeSelectionTable(liquid, Ar, Istream);
+}
 
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
-defineTypeNameAndDebug(Ar, 0);
-addToRunTimeSelectionTable(liquid, Ar,);
-addToRunTimeSelectionTable(liquid, Ar, Istream);
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::Ar::Ar()
+:
+    liquid
+    (
+        39.948,
+        150.86,
+        4.8981e+6,
+        0.07459,
+        0.291,
+        83.78,
+        6.88e+4,
+        87.28,
+        0.0,
+        0.0,
+        1.4138e+4
+    ),
+    rho_(151.922244, 0.286, 150.86, 0.2984),
+    pv_(39.233, -1051.7, -3.5895, 5.0444e-05, 2),
+    hl_(150.86, 218509.061780314, 0.352, 0.0, 0.0, 0.0),
+    cp_(4562.43116050866, -70.7770101131471, 0.367477721037349, 0.0, 0.0, 0.0),
+    h_
+    (
+       -1460974.49982473,
+        4562.43116050866,
+       -35.3885050565735,
+        0.122492573679116,
+        0.0,
+        0.0
+    ),
+    cpg_(520.326424351657, 0.0, 0.0, 0.0, 0.0, 0.0),
+    B_
+    (
+        0.000952488234705117,
+       -0.379993992189847,
+       -2022.62941824372,
+        4633523580654.85,
+        -302893761890458.0
+    ),
+    mu_(-8.868, 204.3, -0.3831, -1.3e-22, 10.0),
+    mug_(8.386e-07, 0.6175, 75.377, -432.5),
+    K_(0.1819, -0.0003176, -4.11e-06, 0.0, 0.0, 0.0),
+    Kg_(0.0001236, 0.8262, -132.8, 16000),
+    sigma_(150.86, 0.03823, 1.2927, 0.0, 0.0, 0.0),
+    D_(147.18, 20.1, 39.948, 28) // note: Same as nHeptane
+{}
+
+
+Foam::Ar::Ar
+(
+    const liquid& l,
+    const NSRDSfunc5& density,
+    const NSRDSfunc1& vapourPressure,
+    const NSRDSfunc6& heatOfVapourisation,
+    const NSRDSfunc0& heatCapacity,
+    const NSRDSfunc0& enthalpy,
+    const NSRDSfunc0& idealGasHeatCapacity,
+    const NSRDSfunc4& secondVirialCoeff,
+    const NSRDSfunc1& dynamicViscosity,
+    const NSRDSfunc2& vapourDynamicViscosity,
+    const NSRDSfunc0& thermalConductivity,
+    const NSRDSfunc2& vapourThermalConductivity,
+    const NSRDSfunc6& surfaceTension,
+    const APIdiffCoefFunc& vapourDiffussivity
+)
+:
+    liquid(l),
+    rho_(density),
+    pv_(vapourPressure),
+    hl_(heatOfVapourisation),
+    cp_(heatCapacity),
+    h_(enthalpy),
+    cpg_(idealGasHeatCapacity),
+    B_(secondVirialCoeff),
+    mu_(dynamicViscosity),
+    mug_(vapourDynamicViscosity),
+    K_(thermalConductivity),
+    Kg_(vapourThermalConductivity),
+    sigma_(surfaceTension),
+    D_(vapourDiffussivity)
+{}
+
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+Foam::Ar::Ar(Istream& is)
+:
+    liquid(is),
+    rho_(is),
+    pv_(is),
+    hl_(is),
+    cp_(is),
+    h_(is),
+    cpg_(is),
+    B_(is),
+    mu_(is),
+    mug_(is),
+    K_(is),
+    Kg_(is),
+    sigma_(is),
+    D_(is)
+{}
 
-} // End namespace Foam
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/Ar/Ar.H b/src/thermophysicalModels/liquids/Ar/Ar.H
index 63d873d9ebc18ca06bc639dc65c2358f4772fc2e..39e8f0f960a4422bdb9047c6dcaf3e6d49fba759 100644
--- a/src/thermophysicalModels/liquids/Ar/Ar.H
+++ b/src/thermophysicalModels/liquids/Ar/Ar.H
@@ -87,26 +87,9 @@ public:
     // Constructors
 
         //- Construct null
-        Ar()
-        :
-            liquid(39.948, 150.86, 4.8981e+6, 0.07459, 0.291, 83.78, 6.88e+4, 87.28, 0.0, 0.0, 1.4138e+4),
-            rho_(151.922244, 0.286, 150.86, 0.2984),
-            pv_(39.233, -1051.7, -3.5895, 5.0444e-05, 2),
-            hl_(150.86, 218509.061780314, 0.352, 0, 0, 0),
-            cp_(4562.43116050866, -70.7770101131471, 0.367477721037349, 0, 0, 0),
-            // NN: enthalpy, h_, is not used in the sprayModel.
-            // For consistency, the enthalpy is derived from hlat and hl.
-            // It is, however, convenient to have it available.
-            h_(-1460974.49982473, 4562.43116050866, -35.3885050565735, 0.122492573679116, 0, 0),
-            cpg_(520.326424351657, 0, 0, 0, 0, 0),
-            B_(0.000952488234705117, -0.379993992189847, -2022.62941824372, 4633523580654.85, -302893761890458.0),
-            mu_(-8.868, 204.3, -0.3831, -1.3e-22, 10),
-            mug_(8.386e-07, 0.6175, 75.377, -432.5),
-            K_(0.1819, -0.0003176, -4.11e-06, 0, 0, 0),
-            Kg_(0.0001236, 0.8262, -132.8, 16000),
-            sigma_(150.86, 0.03823, 1.2927, 0, 0, 0),
-            D_(147.18, 20.1, 39.948, 28) // NN: Same as nHeptane
-        {}
+        Ar();
+
+        //- Construct from components
         Ar
         (
             const liquid& l,
@@ -123,125 +106,56 @@ public:
             const NSRDSfunc2& vapourThermalConductivity,
             const NSRDSfunc6& surfaceTension,
             const APIdiffCoefFunc& vapourDiffussivity
-        )
-        :
-            liquid(l),
-            rho_(density),
-            pv_(vapourPressure),
-            hl_(heatOfVapourisation),
-            cp_(heatCapacity),
-            h_(enthalpy),
-            cpg_(idealGasHeatCapacity),
-            B_(secondVirialCoeff),
-            mu_(dynamicViscosity),
-            mug_(vapourDynamicViscosity),
-            K_(thermalConductivity),
-            Kg_(vapourThermalConductivity),
-            sigma_(surfaceTension),
-            D_(vapourDiffussivity)
-        {}
+        );
 
         //- Construct from Istream
-        Ar(Istream& is)
-        :
-            liquid(is),
-            rho_(is),
-            pv_(is),
-            hl_(is),
-            cp_(is),
-            h_(is),
-            cpg_(is),
-            B_(is),
-            mu_(is),
-            mug_(is),
-            K_(is),
-            Kg_(is),
-            sigma_(is),
-            D_(is)
-        {}
+        Ar(Istream& is);
 
 
     // Member Functions
 
         //- Liquid density [kg/m^3]
-        scalar rho(scalar p, scalar T) const
-        {
-            return rho_.f(p, T);
-        }
+        inline scalar rho(scalar p, scalar T) const;
 
         //- Vapour pressure [Pa]
-        scalar pv(scalar p, scalar T) const
-        {
-            return pv_.f(p, T);
-        }
+        inline scalar pv(scalar p, scalar T) const;
 
         //- Heat of vapourisation [J/kg]
-        scalar hl(scalar p, scalar T) const
-        {
-            return hl_.f(p, T);
-        }
+        inline scalar hl(scalar p, scalar T) const;
 
         //- Liquid heat capacity [J/(kg K)]
-        scalar cp(scalar p, scalar T) const
-        {
-            return cp_.f(p, T);
-        }
+        inline scalar cp(scalar p, scalar T) const;
 
         //- Liquid Enthalpy [J/(kg)]
-        scalar h(scalar p, scalar T) const
-        {
-            return h_.f(p, T);
-        }
+        inline scalar h(scalar p, scalar T) const;
 
         //- Ideal gas heat capacity [J/(kg K)]
-        scalar cpg(scalar p, scalar T) const
-        {
-            return cpg_.f(p, T);
-        }
+        inline scalar cpg(scalar p, scalar T) const;
 
         //- Second Virial Coefficient [m^3/kg]
-        scalar B(scalar p, scalar T) const
-        {
-            return B_.f(p, T);
-        }
+        inline scalar B(scalar p, scalar T) const;
 
         //- Liquid viscosity [Pa s]
-        scalar mu(scalar p, scalar T) const
-        {
-            return mu_.f(p, T);
-        }
+        inline scalar mu(scalar p, scalar T) const;
 
         //- Vapour viscosity [Pa s]
-        scalar mug(scalar p, scalar T) const
-        {
-            return mug_.f(p, T);
-        }
+        inline scalar mug(scalar p, scalar T) const;
 
         //- Liquid thermal conductivity  [W/(m K)]
-        scalar K(scalar p, scalar T) const
-        {
-            return K_.f(p, T);
-        }
+        inline scalar K(scalar p, scalar T) const;
 
         //- Vapour thermal conductivity  [W/(m K)]
-        scalar Kg(scalar p, scalar T) const
-        {
-            return Kg_.f(p, T);
-        }
+        inline scalar Kg(scalar p, scalar T) const;
 
         //- Surface tension [N/m]
-        scalar sigma(scalar p, scalar T) const
-        {
-            return sigma_.f(p, T);
-        }
+        inline scalar sigma(scalar p, scalar T) const;
 
         //- Vapour diffussivity [m2/s]
-        scalar D(scalar p, scalar T) const
-        {
-            return D_.f(p, T);
-        }
+        inline scalar D(scalar p, scalar T) const;
 
 
+    // I-O
+
         //- Write the function coefficients
         void writeData(Ostream& os) const
         {
@@ -260,9 +174,7 @@ public:
             D_.writeData(os); os << endl;
         }
 
-
-    // Ostream Operator
-
+        //- Ostream Operator
         friend Ostream& operator<<(Ostream& os, const Ar& l)
         {
             l.writeData(os);
@@ -277,6 +189,10 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+#include "ArI.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 #endif
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/Ar/ArI.H b/src/thermophysicalModels/liquids/Ar/ArI.H
new file mode 100644
index 0000000000000000000000000000000000000000..72ba64c1a832aef42cfba29faa1d0fd391d410a4
--- /dev/null
+++ b/src/thermophysicalModels/liquids/Ar/ArI.H
@@ -0,0 +1,105 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+inline Foam::scalar Foam::Ar::rho(scalar p, scalar T) const
+{
+    return rho_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::Ar::pv(scalar p, scalar T) const
+{
+    return pv_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::Ar::hl(scalar p, scalar T) const
+{
+    return hl_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::Ar::cp(scalar p, scalar T) const
+{
+    return cp_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::Ar::h(scalar p, scalar T) const
+{
+    return h_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::Ar::cpg(scalar p, scalar T) const
+{
+    return cpg_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::Ar::B(scalar p, scalar T) const
+{
+    return B_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::Ar::mu(scalar p, scalar T) const
+{
+    return mu_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::Ar::mug(scalar p, scalar T) const
+{
+    return mug_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::Ar::K(scalar p, scalar T) const
+{
+    return K_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::Ar::Kg(scalar p, scalar T) const
+{
+    return Kg_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::Ar::sigma(scalar p, scalar T) const
+{
+    return sigma_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::Ar::D(scalar p, scalar T) const
+{
+    return D_.f(p, T);
+}
+
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/C10H22/C10H22.C b/src/thermophysicalModels/liquids/C10H22/C10H22.C
index d1148a21aee1c8c6edd73540d89a7251b08f0988..d26c3afc390f9972414dd715bee3e345ce5dfb71 100644
--- a/src/thermophysicalModels/liquids/C10H22/C10H22.C
+++ b/src/thermophysicalModels/liquids/C10H22/C10H22.C
@@ -27,19 +27,124 @@ License
 #include "C10H22.H"
 #include "addToRunTimeSelectionTable.H"
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 namespace Foam
 {
+    defineTypeNameAndDebug(C10H22, 0);
+    addToRunTimeSelectionTable(liquid, C10H22,);
+    addToRunTimeSelectionTable(liquid, C10H22, Istream);
+}
 
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::C10H22::C10H22()
+:
+    liquid
+    (
+        142.285,
+        617.70,
+        2.11e+6,
+        0.6,
+        0.247,
+        243.51,
+        1.393,
+        447.30,
+        0.0,
+        0.4923,
+        1.57e+4
+    ),
+    rho_(60.94208835, 0.25745, 617.7, 0.28912),
+    pv_(112.73, -9749.6, -13.245, 7.1266e-06, 2.0),
+    hl_(617.70, 464743.296904101, 0.39797, 0.0, 0.0, 0.0),
+    cp_
+    (
+        1958.18252099659,
+       -1.39094071757388,
+        0.00754612221948905,
+        0.0,
+        0.0,
+        0.0
+    ),
+    h_
+    (
+       -2699436.15229142,
+        1958.18252099659,
+       -0.695470358786942,
+        0.00251537407316302,
+        0.0,
+        0.0
+    ),
+    cpg_(1175.10630073444, 3762.16748076045, 1614.1, 2658.04547211582, 742),
+    B_
+    (
+        0.00337351091119935,
+       -4.13606494008504,
+       -534560.916470464,
+       -1.13364022911762e+19,
+        2.80704220402713e+21
+    ),
+    mu_(-16.468, 1533.5, 0.7511, 0.0, 0.0),
+    mug_(2.64e-08, 0.9487, 71.0, 0.0),
+    K_(0.2063, -0.000254, 0.0, 0.0, 0.0, 0.0),
+    Kg_(-668.4, 0.9323, -4071000000.0, 0.0),
+    sigma_(617.70, 0.055435, 1.3095, 0.0, 0.0, 0.0),
+    D_(147.18, 20.1, 142.285, 28.0) // note: Same as nHeptane
+{}
+
+
+Foam::C10H22::C10H22
+(
+    const liquid& l,
+    const NSRDSfunc5& density,
+    const NSRDSfunc1& vapourPressure,
+    const NSRDSfunc6& heatOfVapourisation,
+    const NSRDSfunc0& heatCapacity,
+    const NSRDSfunc0& enthalpy,
+    const NSRDSfunc7& idealGasHeatCapacity,
+    const NSRDSfunc4& secondVirialCoeff,
+    const NSRDSfunc1& dynamicViscosity,
+    const NSRDSfunc2& vapourDynamicViscosity,
+    const NSRDSfunc0& thermalConductivity,
+    const NSRDSfunc2& vapourThermalConductivity,
+    const NSRDSfunc6& surfaceTension,
+    const APIdiffCoefFunc& vapourDiffussivity
+)
+:
+    liquid(l),
+    rho_(density),
+    pv_(vapourPressure),
+    hl_(heatOfVapourisation),
+    cp_(heatCapacity),
+    h_(enthalpy),
+    cpg_(idealGasHeatCapacity),
+    B_(secondVirialCoeff),
+    mu_(dynamicViscosity),
+    mug_(vapourDynamicViscosity),
+    K_(thermalConductivity),
+    Kg_(vapourThermalConductivity),
+    sigma_(surfaceTension),
+    D_(vapourDiffussivity)
+{}
 
-defineTypeNameAndDebug(C10H22, 0);
-addToRunTimeSelectionTable(liquid, C10H22,);
-addToRunTimeSelectionTable(liquid, C10H22, Istream);
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+Foam::C10H22::C10H22(Istream& is)
+:
+    liquid(is),
+    rho_(is),
+    pv_(is),
+    hl_(is),
+    cp_(is),
+    h_(is),
+    cpg_(is),
+    B_(is),
+    mu_(is),
+    mug_(is),
+    K_(is),
+    Kg_(is),
+    sigma_(is),
+    D_(is)
+{}
 
-} // End namespace Foam
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/C10H22/C10H22.H b/src/thermophysicalModels/liquids/C10H22/C10H22.H
index 6ee211c320c92f08bc813ca836849c908fd4b989..88ee972321aecf5f76e972b270a15619599188e3 100644
--- a/src/thermophysicalModels/liquids/C10H22/C10H22.H
+++ b/src/thermophysicalModels/liquids/C10H22/C10H22.H
@@ -87,26 +87,9 @@ public:
     // Constructors
 
         //- Construct null
-        C10H22()
-        :
-            liquid(142.285, 617.70, 2.11e+6, 0.6, 0.247, 243.51, 1.393, 447.30, 0.0, 0.4923, 1.57e+4),
-            rho_(60.94208835, 0.25745, 617.7, 0.28912),
-            pv_(112.73, -9749.6, -13.245, 7.1266e-06, 2),
-            hl_(617.70, 464743.296904101, 0.39797, 0, 0, 0),
-            cp_(1958.18252099659, -1.39094071757388, 0.00754612221948905, 0, 0, 0),
-            // NN: enthalpy, h_, is not used in the sprayModel.
-            // For consistency, the enthalpy is derived from hlat and hl.
-            // It is, however, convenient to have it available.
-            h_(-2699436.15229142, 1958.18252099659, -0.695470358786942, 0.00251537407316302, 0, 0),
-            cpg_(1175.10630073444, 3762.16748076045, 1614.1, 2658.04547211582, 742),
-            B_(0.00337351091119935, -4.13606494008504, -534560.916470464, -1.13364022911762e+19, 2.80704220402713e+21),
-            mu_(-16.468, 1533.5, 0.7511, 0, 0),
-            mug_(2.64e-08, 0.9487, 71, 0),
-            K_(0.2063, -0.000254, 0, 0, 0, 0),
-            Kg_(-668.4, 0.9323, -4071000000.0, 0),
-            sigma_(617.70, 0.055435, 1.3095, 0, 0, 0),
-            D_(147.18, 20.1, 142.285, 28) // NN: Same as nHeptane
-        {}
+        C10H22();
+
+        //- Construct from components
         C10H22
         (
             const liquid& l,
@@ -123,124 +106,55 @@ public:
             const NSRDSfunc2& vapourThermalConductivity,
             const NSRDSfunc6& surfaceTension,
             const APIdiffCoefFunc& vapourDiffussivity
-        )
-        :
-            liquid(l),
-            rho_(density),
-            pv_(vapourPressure),
-            hl_(heatOfVapourisation),
-            cp_(heatCapacity),
-            h_(enthalpy),
-            cpg_(idealGasHeatCapacity),
-            B_(secondVirialCoeff),
-            mu_(dynamicViscosity),
-            mug_(vapourDynamicViscosity),
-            K_(thermalConductivity),
-            Kg_(vapourThermalConductivity),
-            sigma_(surfaceTension),
-            D_(vapourDiffussivity)
-        {}
+        );
 
         //- Construct from Istream
-        C10H22(Istream& is)
-        :
-            liquid(is),
-            rho_(is),
-            pv_(is),
-            hl_(is),
-            cp_(is),
-            h_(is),
-            cpg_(is),
-            B_(is),
-            mu_(is),
-            mug_(is),
-            K_(is),
-            Kg_(is),
-            sigma_(is),
-            D_(is)
-        {}
+        C10H22(Istream& is);
 
 
     // Member Functions
 
         //- Liquid density [kg/m^3]
-        scalar rho(scalar p, scalar T) const
-        {
-            return rho_.f(p, T);
-        }
+        inline scalar rho(scalar p, scalar T) const;
 
         //- Vapour pressure [Pa]
-        scalar pv(scalar p, scalar T) const
-        {
-            return pv_.f(p, T);
-        }
+        inline scalar pv(scalar p, scalar T) const;
 
         //- Heat of vapourisation [J/kg]
-        scalar hl(scalar p, scalar T) const
-        {
-            return hl_.f(p, T);
-        }
+        inline scalar hl(scalar p, scalar T) const;
 
         //- Liquid heat capacity [J/(kg K)]
-        scalar cp(scalar p, scalar T) const
-        {
-            return cp_.f(p, T);
-        }
+        inline scalar cp(scalar p, scalar T) const;
 
         //- Liquid Enthalpy [J/(kg)]
-        scalar h(scalar p, scalar T) const
-        {
-            return h_.f(p, T);
-        }
+        inline scalar h(scalar p, scalar T) const;
 
         //- Ideal gas heat capacity [J/(kg K)]
-        scalar cpg(scalar p, scalar T) const
-        {
-            return cpg_.f(p, T);
-        }
+        inline scalar cpg(scalar p, scalar T) const;
 
         //- Second Virial Coefficient [m^3/kg]
-        scalar B(scalar p, scalar T) const
-        {
-            return B_.f(p, T);
-        }
+        inline scalar B(scalar p, scalar T) const;
 
         //- Liquid viscosity [Pa s]
-        scalar mu(scalar p, scalar T) const
-        {
-            return mu_.f(p, T);
-        }
+        inline scalar mu(scalar p, scalar T) const;
 
         //- Vapour viscosity [Pa s]
-        scalar mug(scalar p, scalar T) const
-        {
-            return mug_.f(p, T);
-        }
+        inline scalar mug(scalar p, scalar T) const;
 
         //- Liquid thermal conductivity  [W/(m K)]
-        scalar K(scalar p, scalar T) const
-        {
-            return K_.f(p, T);
-        }
+        inline scalar K(scalar p, scalar T) const;
 
         //- Vapour thermal conductivity  [W/(m K)]
-        scalar Kg(scalar p, scalar T) const
-        {
-            return Kg_.f(p, T);
-        }
+        inline scalar Kg(scalar p, scalar T) const;
 
         //- Surface tension [N/m]
-        scalar sigma(scalar p, scalar T) const
-        {
-            return sigma_.f(p, T);
-        }
+        inline scalar sigma(scalar p, scalar T) const;
 
         //- Vapour diffussivity [m2/s]
-        scalar D(scalar p, scalar T) const
-        {
-            return D_.f(p, T);
-        }
+        inline scalar D(scalar p, scalar T) const;
+
 
+    // I-O
 
         //- Write the function coefficients
         void writeData(Ostream& os) const
@@ -261,8 +175,7 @@ public:
         }
 
 
-    // Ostream Operator
-
+        //- Ostream Operator
         friend Ostream& operator<<(Ostream& os, const C10H22& l)
         {
             l.writeData(os);
@@ -277,6 +190,10 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+#include "C10H22I.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 #endif
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/C10H22/C10H22I.H b/src/thermophysicalModels/liquids/C10H22/C10H22I.H
new file mode 100644
index 0000000000000000000000000000000000000000..bdbc395f1f54241bcfbd82261deb1938eaf22124
--- /dev/null
+++ b/src/thermophysicalModels/liquids/C10H22/C10H22I.H
@@ -0,0 +1,105 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+inline Foam::scalar Foam::C10H22::rho(scalar p, scalar T) const
+{
+    return rho_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C10H22::pv(scalar p, scalar T) const
+{
+    return pv_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C10H22::hl(scalar p, scalar T) const
+{
+    return hl_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C10H22::cp(scalar p, scalar T) const
+{
+    return cp_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C10H22::h(scalar p, scalar T) const
+{
+    return h_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C10H22::cpg(scalar p, scalar T) const
+{
+    return cpg_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C10H22::B(scalar p, scalar T) const
+{
+    return B_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C10H22::mu(scalar p, scalar T) const
+{
+    return mu_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C10H22::mug(scalar p, scalar T) const
+{
+    return mug_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C10H22::K(scalar p, scalar T) const
+{
+    return K_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C10H22::Kg(scalar p, scalar T) const
+{
+    return Kg_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C10H22::sigma(scalar p, scalar T) const
+{
+    return sigma_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C10H22::D(scalar p, scalar T) const
+{
+    return D_.f(p, T);
+}
+
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/C12H26/C12H26.C b/src/thermophysicalModels/liquids/C12H26/C12H26.C
index d12ca93da75252e7391935995dc876c5431667c3..8eb5d25e4615fab70790a2db71baf840ee0989bb 100644
--- a/src/thermophysicalModels/liquids/C12H26/C12H26.C
+++ b/src/thermophysicalModels/liquids/C12H26/C12H26.C
@@ -27,19 +27,116 @@ License
 #include "C12H26.H"
 #include "addToRunTimeSelectionTable.H"
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 namespace Foam
 {
+    defineTypeNameAndDebug(C12H26, 0);
+    addToRunTimeSelectionTable(liquid, C12H26,);
+    addToRunTimeSelectionTable(liquid, C12H26, Istream);
+}
 
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::C12H26::C12H26()
+:
+    liquid
+    (
+        170.338,
+        658.0,
+        1.82e+6,
+        0.716,
+        0.238,
+        263.57,
+        6.152e-1,
+        489.47,
+        0.0,
+        0.5764,
+        1.59e+4
+    ),
+    rho_(60.53982858, 0.25511, 658.0, 0.29368),
+    pv_(137.47, -11976.0, -16.698, 8.0906e-06, 2.0),
+    hl_(658.0, 454020.829174935, 0.40681, 0.0, 0.0, 0.0),
+    cp_(2983.53861146661, -8.0352006011577, 0.018207916025784, 0.0, 0.0, 0.0),
+    h_
+    (
+       -2755166.83820769,
+        2983.53861146661,
+       -4.01760030057885,
+        0.00606930534192801,
+        0.0,
+        0.0
+    ),
+    cpg_(1250.16144371778, 3894.02247296552, 1715.5, 2650.67101879792, 777.5),
+    B_
+    (
+        0.00516619896910848,
+       -6.40491258556517,
+       -295295.236529723,
+       -3.22147729807794e+19,
+        8.78195117941974e+21
+    ),
+    mu_(-20.607, 1943, 1.3205, 0.0, 0.0),
+    mug_(6.344e-08, 0.8287, 219.5, 0.0),
+    K_(0.2047, -0.0002326, 0.0, 0.0, 0.0, 0.0),
+    Kg_(5.719e-06, 1.4699, 579.4, 0.0),
+    sigma_(658.0, 0.055493, 1.3262, 0.0, 0.0, 0.0),
+    D_(147.18, 20.1, 170.338, 28.0) // note: Same as nHeptane
+{}
+
+
+Foam::C12H26::C12H26
+(
+    const liquid& l,
+    const NSRDSfunc5& density,
+    const NSRDSfunc1& vapourPressure,
+    const NSRDSfunc6& heatOfVapourisation,
+    const NSRDSfunc0& heatCapacity,
+    const NSRDSfunc0& enthalpy,
+    const NSRDSfunc7& idealGasHeatCapacity,
+    const NSRDSfunc4& secondVirialCoeff,
+    const NSRDSfunc1& dynamicViscosity,
+    const NSRDSfunc2& vapourDynamicViscosity,
+    const NSRDSfunc0& thermalConductivity,
+    const NSRDSfunc2& vapourThermalConductivity,
+    const NSRDSfunc6& surfaceTension,
+    const APIdiffCoefFunc& vapourDiffussivity
+)
+:
+    liquid(l),
+    rho_(density),
+    pv_(vapourPressure),
+    hl_(heatOfVapourisation),
+    cp_(heatCapacity),
+    h_(enthalpy),
+    cpg_(idealGasHeatCapacity),
+    B_(secondVirialCoeff),
+    mu_(dynamicViscosity),
+    mug_(vapourDynamicViscosity),
+    K_(thermalConductivity),
+    Kg_(vapourThermalConductivity),
+    sigma_(surfaceTension),
+    D_(vapourDiffussivity)
+{}
 
-defineTypeNameAndDebug(C12H26, 0);
-addToRunTimeSelectionTable(liquid, C12H26,);
-addToRunTimeSelectionTable(liquid, C12H26, Istream);
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+Foam::C12H26::C12H26(Istream& is)
+:
+    liquid(is),
+    rho_(is),
+    pv_(is),
+    hl_(is),
+    cp_(is),
+    h_(is),
+    cpg_(is),
+    B_(is),
+    mu_(is),
+    mug_(is),
+    K_(is),
+    Kg_(is),
+    sigma_(is),
+    D_(is)
+{}
 
-} // End namespace Foam
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/C12H26/C12H26.H b/src/thermophysicalModels/liquids/C12H26/C12H26.H
index 2feca3b73686c9a80e83664ecc4dd8a374a6f561..9c3cba2ac2b71a724afda2c55b1c14a02dd5e494 100644
--- a/src/thermophysicalModels/liquids/C12H26/C12H26.H
+++ b/src/thermophysicalModels/liquids/C12H26/C12H26.H
@@ -87,26 +87,9 @@ public:
     // Constructors
 
         //- Construct null
-        C12H26()
-        :
-            liquid(170.338, 658.0, 1.82e+6, 0.716, 0.238, 263.57, 6.152e-1, 489.47, 0, 0.5764, 1.59e+4),
-            rho_(60.53982858, 0.25511, 658, 0.29368),
-            pv_(137.47, -11976, -16.698, 8.0906e-06, 2),
-            hl_(658.0, 454020.829174935, 0.40681, 0, 0, 0),
-            cp_(2983.53861146661, -8.0352006011577, 0.018207916025784, 0, 0, 0),
-            // NN: enthalpy, h_, is not used in the sprayModel.
-            // For consistency, the enthalpy is derived from hlat and hl.
-            // It is, however, convenient to have it available.
-            h_(-2755166.83820769, 2983.53861146661, -4.01760030057885, 0.00606930534192801, 0, 0),
-            cpg_(1250.16144371778, 3894.02247296552, 1715.5, 2650.67101879792, 777.5),
-            B_(0.00516619896910848, -6.40491258556517, -295295.236529723, -3.22147729807794e+19, 8.78195117941974e+21),
-            mu_(-20.607, 1943, 1.3205, 0, 0),
-            mug_(6.344e-08, 0.8287, 219.5, 0),
-            K_(0.2047, -0.0002326, 0, 0, 0, 0),
-            Kg_(5.719e-06, 1.4699, 579.4, 0),
-            sigma_(658.0, 0.055493, 1.3262, 0, 0, 0),
-            D_(147.18, 20.1, 170.338, 28) // NN: Same as nHeptane
-        {}
+        C12H26();
+
+        //- Construct from conponents
         C12H26
         (
             const liquid& l,
@@ -123,125 +106,56 @@ public:
             const NSRDSfunc2& vapourThermalConductivity,
             const NSRDSfunc6& surfaceTension,
             const APIdiffCoefFunc& vapourDiffussivity
-        )
-        :
-            liquid(l),
-            rho_(density),
-            pv_(vapourPressure),
-            hl_(heatOfVapourisation),
-            cp_(heatCapacity),
-            h_(enthalpy),
-            cpg_(idealGasHeatCapacity),
-            B_(secondVirialCoeff),
-            mu_(dynamicViscosity),
-            mug_(vapourDynamicViscosity),
-            K_(thermalConductivity),
-            Kg_(vapourThermalConductivity),
-            sigma_(surfaceTension),
-            D_(vapourDiffussivity)
-        {}
+        );
 
         //- Construct from Istream
-        C12H26(Istream& is)
-        :
-            liquid(is),
-            rho_(is),
-            pv_(is),
-            hl_(is),
-            cp_(is),
-            h_(is),
-            cpg_(is),
-            B_(is),
-            mu_(is),
-            mug_(is),
-            K_(is),
-            Kg_(is),
-            sigma_(is),
-            D_(is)
-        {}
+        C12H26(Istream& is);
 
 
     // Member Functions
 
         //- Liquid density [kg/m^3]
-        scalar rho(scalar p, scalar T) const
-        {
-            return rho_.f(p, T);
-        }
+        inline scalar rho(scalar p, scalar T) const;
 
         //- Vapour pressure [Pa]
-        scalar pv(scalar p, scalar T) const
-        {
-            return pv_.f(p, T);
-        }
+        inline scalar pv(scalar p, scalar T) const;
 
         //- Heat of vapourisation [J/kg]
-        scalar hl(scalar p, scalar T) const
-        {
-            return hl_.f(p, T);
-        }
+        inline scalar hl(scalar p, scalar T) const;
 
         //- Liquid heat capacity [J/(kg K)]
-        scalar cp(scalar p, scalar T) const
-        {
-            return cp_.f(p, T);
-        }
+        inline scalar cp(scalar p, scalar T) const;
 
         //- Liquid Enthalpy [J/(kg)]
-        scalar h(scalar p, scalar T) const
-        {
-            return h_.f(p, T);
-        }
+        inline scalar h(scalar p, scalar T) const;
 
         //- Ideal gas heat capacity [J/(kg K)]
-        scalar cpg(scalar p, scalar T) const
-        {
-            return cpg_.f(p, T);
-        }
+        inline scalar cpg(scalar p, scalar T) const;
 
         //- Second Virial Coefficient [m^3/kg]
-        scalar B(scalar p, scalar T) const
-        {
-            return B_.f(p, T);
-        }
+        inline scalar B(scalar p, scalar T) const;
 
         //- Liquid viscosity [Pa s]
-        scalar mu(scalar p, scalar T) const
-        {
-            return mu_.f(p, T);
-        }
+        inline scalar mu(scalar p, scalar T) const;
 
         //- Vapour viscosity [Pa s]
-        scalar mug(scalar p, scalar T) const
-        {
-            return mug_.f(p, T);
-        }
+        inline scalar mug(scalar p, scalar T) const;
 
         //- Liquid thermal conductivity  [W/(m K)]
-        scalar K(scalar p, scalar T) const
-        {
-            return K_.f(p, T);
-        }
+        inline scalar K(scalar p, scalar T) const;
 
         //- Vapour thermal conductivity  [W/(m K)]
-        scalar Kg(scalar p, scalar T) const
-        {
-            return Kg_.f(p, T);
-        }
+        inline scalar Kg(scalar p, scalar T) const;
 
         //- Surface tension [N/m]
-        scalar sigma(scalar p, scalar T) const
-        {
-            return sigma_.f(p, T);
-        }
+        inline scalar sigma(scalar p, scalar T) const;
 
         //- Vapour diffussivity [m2/s]
-        scalar D(scalar p, scalar T) const
-        {
-            return D_.f(p, T);
-        }
+        inline scalar D(scalar p, scalar T) const;
 
 
+    // I-O
+
         //- Write the function coefficients
         void writeData(Ostream& os) const
         {
@@ -260,9 +174,7 @@ public:
             D_.writeData(os); os << endl;
         }
 
-
-    // Ostream Operator
-
+        //- Ostream Operator
         friend Ostream& operator<<(Ostream& os, const C12H26& l)
         {
             l.writeData(os);
@@ -277,6 +189,10 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+#include "C12H26I.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 #endif
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/C12H26/C12H26I.H b/src/thermophysicalModels/liquids/C12H26/C12H26I.H
new file mode 100644
index 0000000000000000000000000000000000000000..0edb1e981ae1598a684da2e20f5bb20918b36724
--- /dev/null
+++ b/src/thermophysicalModels/liquids/C12H26/C12H26I.H
@@ -0,0 +1,105 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+inline Foam::scalar Foam::C12H26::rho(scalar p, scalar T) const
+{
+    return rho_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C12H26::pv(scalar p, scalar T) const
+{
+    return pv_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C12H26::hl(scalar p, scalar T) const
+{
+    return hl_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C12H26::cp(scalar p, scalar T) const
+{
+    return cp_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C12H26::h(scalar p, scalar T) const
+{
+    return h_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C12H26::cpg(scalar p, scalar T) const
+{
+    return cpg_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C12H26::B(scalar p, scalar T) const
+{
+    return B_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C12H26::mu(scalar p, scalar T) const
+{
+    return mu_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C12H26::mug(scalar p, scalar T) const
+{
+    return mug_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C12H26::K(scalar p, scalar T) const
+{
+    return K_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C12H26::Kg(scalar p, scalar T) const
+{
+    return Kg_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C12H26::sigma(scalar p, scalar T) const
+{
+    return sigma_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C12H26::D(scalar p, scalar T) const
+{
+    return D_.f(p, T);
+}
+
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/C13H28/C13H28.C b/src/thermophysicalModels/liquids/C13H28/C13H28.C
index 2b8fe56e6ab445d988e13f54a1515fc6161c06b5..db63784cafe571719b973353a2c717312ba36a51 100644
--- a/src/thermophysicalModels/liquids/C13H28/C13H28.C
+++ b/src/thermophysicalModels/liquids/C13H28/C13H28.C
@@ -27,19 +27,124 @@ License
 #include "C13H28.H"
 #include "addToRunTimeSelectionTable.H"
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 namespace Foam
 {
+    defineTypeNameAndDebug(C13H28, 0);
+    addToRunTimeSelectionTable(liquid, C13H28,);
+    addToRunTimeSelectionTable(liquid, C13H28, Istream);
+}
 
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::C13H28::C13H28()
+:
+    liquid
+    (
+        184.365,
+        675.80,
+        1.7225e+6,
+        0.77,
+        0.236,
+        267.76,
+        3.801e-1,
+        508.62,
+        0.0,
+        0.6186,
+        1.5901e+4
+    ),
+    rho_(59.513022, 0.2504, 675.8, 0.312),
+    pv_(118.27, -11432, -13.769, 5.9641e-06, 2.0),
+    hl_(675.80, 444227.48352453, 0.4162, 0.0, 0.0, 0.0),
+    cp_
+    (
+        4275.05220622135,
+       -16.6539202126217,
+        0.0325755973205326,
+        0.0,
+        0.0,
+        0.0
+    ),
+    h_
+    (
+       -2860442.0545124,
+        4275.05220622135,
+       -8.32696010631085,
+        0.0108585324401775,
+        0.0,
+        0.0
+    ),
+    cpg_(1136.87522035093, 3641.14663846175, -1443, 2277.00485450058, -683.0),
+    B_
+    (
+        0.00246321156401703,
+       -2.66601578390692,
+       -1249532.17801643,
+       -1.0460770753668e+19,
+        1.90117430097904e+21
+    ),
+    mu_(-23.341, 2121.9, 1.7208, 0.0, 0.0),
+    mug_(3.5585e-08, 0.8987, 165.3, 0.0),
+    K_(0.1981, -0.0002046, 0.0, 0.0, 0.0, 0.0),
+    Kg_(5.3701e-06, 1.4751, 599.09, 0.0),
+    sigma_(675.80, 0.05561, 1.3361, 0.0, 0.0, 0.0),
+    D_(147.18, 20.1, 184.365, 28.0) // note: Same as nHeptane
+{}
+
+
+Foam::C13H28::C13H28
+(
+    const liquid& l,
+    const NSRDSfunc5& density,
+    const NSRDSfunc1& vapourPressure,
+    const NSRDSfunc6& heatOfVapourisation,
+    const NSRDSfunc0& heatCapacity,
+    const NSRDSfunc0& enthalpy,
+    const NSRDSfunc7& idealGasHeatCapacity,
+    const NSRDSfunc4& secondVirialCoeff,
+    const NSRDSfunc1& dynamicViscosity,
+    const NSRDSfunc2& vapourDynamicViscosity,
+    const NSRDSfunc0& thermalConductivity,
+    const NSRDSfunc2& vapourThermalConductivity,
+    const NSRDSfunc6& surfaceTension,
+    const APIdiffCoefFunc& vapourDiffussivity
+)
+:
+    liquid(l),
+    rho_(density),
+    pv_(vapourPressure),
+    hl_(heatOfVapourisation),
+    cp_(heatCapacity),
+    h_(enthalpy),
+    cpg_(idealGasHeatCapacity),
+    B_(secondVirialCoeff),
+    mu_(dynamicViscosity),
+    mug_(vapourDynamicViscosity),
+    K_(thermalConductivity),
+    Kg_(vapourThermalConductivity),
+    sigma_(surfaceTension),
+    D_(vapourDiffussivity)
+{}
 
-defineTypeNameAndDebug(C13H28, 0);
-addToRunTimeSelectionTable(liquid, C13H28,);
-addToRunTimeSelectionTable(liquid, C13H28, Istream);
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+Foam::C13H28::C13H28(Istream& is)
+:
+    liquid(is),
+    rho_(is),
+    pv_(is),
+    hl_(is),
+    cp_(is),
+    h_(is),
+    cpg_(is),
+    B_(is),
+    mu_(is),
+    mug_(is),
+    K_(is),
+    Kg_(is),
+    sigma_(is),
+    D_(is)
+{}
 
-} // End namespace Foam
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/C13H28/C13H28.H b/src/thermophysicalModels/liquids/C13H28/C13H28.H
index 632b7c0ab76a2fd2827db4c4be7095d595715bc3..d97300f1d129f6e381139ecd35812f44cb1eeac9 100644
--- a/src/thermophysicalModels/liquids/C13H28/C13H28.H
+++ b/src/thermophysicalModels/liquids/C13H28/C13H28.H
@@ -87,26 +87,9 @@ public:
     // Constructors
 
         //- Construct null
-        C13H28()
-        :
-            liquid(184.365, 675.80, 1.7225e+6, 0.77, 0.236, 267.76, 3.801e-1, 508.62, 0.0, 0.6186, 1.5901e+4),
-            rho_(59.513022, 0.2504, 675.8, 0.312),
-            pv_(118.27, -11432, -13.769, 5.9641e-06, 2),
-            hl_(675.80, 444227.48352453, 0.4162, 0, 0, 0),
-            cp_(4275.05220622135, -16.6539202126217, 0.0325755973205326, 0, 0, 0),
-            // NN: enthalpy, h_, is not used in the sprayModel.
-            // For consistency, the enthalpy is derived from hlat and hl.
-            // It is, however, convenient to have it available.
-            h_(-2860442.0545124, 4275.05220622135, -8.32696010631085, 0.0108585324401775, 0, 0),
-            cpg_(1136.87522035093, 3641.14663846175, -1443, 2277.00485450058, -683),
-            B_(0.00246321156401703, -2.66601578390692, -1249532.17801643, -1.0460770753668e+19, 1.90117430097904e+21),
-            mu_(-23.341, 2121.9, 1.7208, 0, 0),
-            mug_(3.5585e-08, 0.8987, 165.3, 0),
-            K_(0.1981, -0.0002046, 0, 0, 0, 0),
-            Kg_(5.3701e-06, 1.4751, 599.09, 0),
-            sigma_(675.80, 0.05561, 1.3361, 0, 0, 0),
-            D_(147.18, 20.1, 184.365, 28) // NN: Same as nHeptane
-        {}
+        C13H28();
+
+        //- Construct from components
         C13H28
         (
             const liquid& l,
@@ -123,125 +106,56 @@ public:
             const NSRDSfunc2& vapourThermalConductivity,
             const NSRDSfunc6& surfaceTension,
             const APIdiffCoefFunc& vapourDiffussivity
-        )
-        :
-            liquid(l),
-            rho_(density),
-            pv_(vapourPressure),
-            hl_(heatOfVapourisation),
-            cp_(heatCapacity),
-            h_(enthalpy),
-            cpg_(idealGasHeatCapacity),
-            B_(secondVirialCoeff),
-            mu_(dynamicViscosity),
-            mug_(vapourDynamicViscosity),
-            K_(thermalConductivity),
-            Kg_(vapourThermalConductivity),
-            sigma_(surfaceTension),
-            D_(vapourDiffussivity)
-        {}
+        );
 
         //- Construct from Istream
-        C13H28(Istream& is)
-        :
-            liquid(is),
-            rho_(is),
-            pv_(is),
-            hl_(is),
-            cp_(is),
-            h_(is),
-            cpg_(is),
-            B_(is),
-            mu_(is),
-            mug_(is),
-            K_(is),
-            Kg_(is),
-            sigma_(is),
-            D_(is)
-        {}
+        C13H28(Istream& is);
 
 
     // Member Functions
 
         //- Liquid density [kg/m^3]
-        scalar rho(scalar p, scalar T) const
-        {
-            return rho_.f(p, T);
-        }
+        inline scalar rho(scalar p, scalar T) const;
 
         //- Vapour pressure [Pa]
-        scalar pv(scalar p, scalar T) const
-        {
-            return pv_.f(p, T);
-        }
+        inline scalar pv(scalar p, scalar T) const;
 
         //- Heat of vapourisation [J/kg]
-        scalar hl(scalar p, scalar T) const
-        {
-            return hl_.f(p, T);
-        }
+        inline scalar hl(scalar p, scalar T) const;
 
         //- Liquid heat capacity [J/(kg K)]
-        scalar cp(scalar p, scalar T) const
-        {
-            return cp_.f(p, T);
-        }
+        inline scalar cp(scalar p, scalar T) const;
 
         //- Liquid Enthalpy [J/(kg)]
-        scalar h(scalar p, scalar T) const
-        {
-            return h_.f(p, T);
-        }
+        inline scalar h(scalar p, scalar T) const;
 
         //- Ideal gas heat capacity [J/(kg K)]
-        scalar cpg(scalar p, scalar T) const
-        {
-            return cpg_.f(p, T);
-        }
+        inline scalar cpg(scalar p, scalar T) const;
 
         //- Second Virial Coefficient [m^3/kg]
-        scalar B(scalar p, scalar T) const
-        {
-            return B_.f(p, T);
-        }
+        inline scalar B(scalar p, scalar T) const;
 
         //- Liquid viscosity [Pa s]
-        scalar mu(scalar p, scalar T) const
-        {
-            return mu_.f(p, T);
-        }
+        inline scalar mu(scalar p, scalar T) const;
 
         //- Vapour viscosity [Pa s]
-        scalar mug(scalar p, scalar T) const
-        {
-            return mug_.f(p, T);
-        }
+        inline scalar mug(scalar p, scalar T) const;
 
         //- Liquid thermal conductivity  [W/(m K)]
-        scalar K(scalar p, scalar T) const
-        {
-            return K_.f(p, T);
-        }
+        inline scalar K(scalar p, scalar T) const;
 
         //- Vapour thermal conductivity  [W/(m K)]
-        scalar Kg(scalar p, scalar T) const
-        {
-            return Kg_.f(p, T);
-        }
+        inline scalar Kg(scalar p, scalar T) const;
 
         //- Surface tension [N/m]
-        scalar sigma(scalar p, scalar T) const
-        {
-            return sigma_.f(p, T);
-        }
+        inline scalar sigma(scalar p, scalar T) const;
 
         //- Vapour diffussivity [m2/s]
-        scalar D(scalar p, scalar T) const
-        {
-            return D_.f(p, T);
-        }
+        inline scalar D(scalar p, scalar T) const;
 
 
+    // I-O
+
         //- Write the function coefficients
         void writeData(Ostream& os) const
         {
@@ -260,9 +174,7 @@ public:
             D_.writeData(os); os << endl;
         }
 
-
-    // Ostream Operator
-
+        //- Ostream Operator
         friend Ostream& operator<<(Ostream& os, const C13H28& l)
         {
             l.writeData(os);
@@ -277,6 +189,10 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+#include "C13H28I.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 #endif
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/C13H28/C13H28I.H b/src/thermophysicalModels/liquids/C13H28/C13H28I.H
new file mode 100644
index 0000000000000000000000000000000000000000..333905a9f3cc3aa36fe61f62446d7ffce1190aed
--- /dev/null
+++ b/src/thermophysicalModels/liquids/C13H28/C13H28I.H
@@ -0,0 +1,105 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+inline Foam::scalar Foam::C13H28::rho(scalar p, scalar T) const
+{
+    return rho_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C13H28::pv(scalar p, scalar T) const
+{
+    return pv_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C13H28::hl(scalar p, scalar T) const
+{
+    return hl_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C13H28::cp(scalar p, scalar T) const
+{
+    return cp_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C13H28::h(scalar p, scalar T) const
+{
+    return h_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C13H28::cpg(scalar p, scalar T) const
+{
+    return cpg_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C13H28::B(scalar p, scalar T) const
+{
+    return B_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C13H28::mu(scalar p, scalar T) const
+{
+    return mu_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C13H28::mug(scalar p, scalar T) const
+{
+    return mug_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C13H28::K(scalar p, scalar T) const
+{
+    return K_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C13H28::Kg(scalar p, scalar T) const
+{
+    return Kg_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C13H28::sigma(scalar p, scalar T) const
+{
+    return sigma_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C13H28::D(scalar p, scalar T) const
+{
+    return D_.f(p, T);
+}
+
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/C14H30/C14H30.C b/src/thermophysicalModels/liquids/C14H30/C14H30.C
index 4177874ca49b691c462070304cff0c425540ebe0..0ccb3eb6c6edd4c437e08aa7a2e7edc8a9800155 100644
--- a/src/thermophysicalModels/liquids/C14H30/C14H30.C
+++ b/src/thermophysicalModels/liquids/C14H30/C14H30.C
@@ -27,19 +27,124 @@ License
 #include "C14H30.H"
 #include "addToRunTimeSelectionTable.H"
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 namespace Foam
 {
+    defineTypeNameAndDebug(C14H30, 0);
+    addToRunTimeSelectionTable(liquid, C14H30,);
+    addToRunTimeSelectionTable(liquid, C14H30, Istream);
+}
 
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::C14H30::C14H30()
+:
+    liquid
+    (
+        198.392,
+        692.40,
+        1.6212e+6,
+        0.8428,
+        0.237,
+        279.01,
+        1.8849e-1,
+        526.73,
+        0.0,
+        0.6617,
+        1.6173e+4
+    ),
+    rho_(60.92023144, 0.2582, 692.4, 0.26628),
+    pv_(249.21, -16915, -35.195, 0.028451, 1.0),
+    hl_(692.40, 455764.345336506, 0.428, 0.0, 0.0, 0.0),
+    cp_
+    (
+        2565.72845679261,
+       -4.78114036856325,
+        0.0120362716238558,
+        0.0,
+        0.0,
+        0.0
+    ),
+    h_
+    (
+       -2690601.01887934,
+        2565.72845679261,
+       -2.39057018428162,
+        0.00401209054128527,
+        0.0,
+        0.0
+    ),
+    cpg_(1134.11831122223, 3629.17859591113, -1440.3, 2275.29335860317, -682),
+    B_
+    (
+        0.00247837614419936,
+       -2.62692044034034,
+       -1427174.48284205,
+       -1.68288035807895e+19,
+        3.48854792531957e+21
+    ),
+    mu_(-18.964, 2010.9, 1.0648, 0.0, 0.0),
+    mug_(4.4565e-08, 0.8684, 228.16, -4347.2),
+    K_(0.1957, -0.0001993, 0.0, 0.0, 0.0, 0.0),
+    Kg_(-0.000628, 0.944, -5490, 0.0),
+    sigma_(692.40, 0.056436, 1.3658, 0.0, 0.0, 0.0),
+    D_(147.18, 20.1, 198.392, 28.0) // note: Same as nHeptane
+{}
+
+
+Foam::C14H30::C14H30
+(
+    const liquid& l,
+    const NSRDSfunc5& density,
+    const NSRDSfunc1& vapourPressure,
+    const NSRDSfunc6& heatOfVapourisation,
+    const NSRDSfunc0& heatCapacity,
+    const NSRDSfunc0& enthalpy,
+    const NSRDSfunc7& idealGasHeatCapacity,
+    const NSRDSfunc4& secondVirialCoeff,
+    const NSRDSfunc1& dynamicViscosity,
+    const NSRDSfunc2& vapourDynamicViscosity,
+    const NSRDSfunc0& thermalConductivity,
+    const NSRDSfunc2& vapourThermalConductivity,
+    const NSRDSfunc6& surfaceTension,
+    const APIdiffCoefFunc& vapourDiffussivity
+)
+:
+    liquid(l),
+    rho_(density),
+    pv_(vapourPressure),
+    hl_(heatOfVapourisation),
+    cp_(heatCapacity),
+    h_(enthalpy),
+    cpg_(idealGasHeatCapacity),
+    B_(secondVirialCoeff),
+    mu_(dynamicViscosity),
+    mug_(vapourDynamicViscosity),
+    K_(thermalConductivity),
+    Kg_(vapourThermalConductivity),
+    sigma_(surfaceTension),
+    D_(vapourDiffussivity)
+{}
 
-defineTypeNameAndDebug(C14H30, 0);
-addToRunTimeSelectionTable(liquid, C14H30,);
-addToRunTimeSelectionTable(liquid, C14H30, Istream);
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+Foam::C14H30::C14H30(Istream& is)
+:
+    liquid(is),
+    rho_(is),
+    pv_(is),
+    hl_(is),
+    cp_(is),
+    h_(is),
+    cpg_(is),
+    B_(is),
+    mu_(is),
+    mug_(is),
+    K_(is),
+    Kg_(is),
+    sigma_(is),
+    D_(is)
+{}
 
-} // End namespace Foam
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/C14H30/C14H30.H b/src/thermophysicalModels/liquids/C14H30/C14H30.H
index fa86f3c9c3df5ad7493f1ffb20c08b875fd152fa..183ee026de88bd828575787d3a3a657de5756b8f 100644
--- a/src/thermophysicalModels/liquids/C14H30/C14H30.H
+++ b/src/thermophysicalModels/liquids/C14H30/C14H30.H
@@ -87,26 +87,9 @@ public:
     // Constructors
 
         //- Construct null
-        C14H30()
-        :
-            liquid(198.392, 692.40, 1.6212e+6, 0.8428, 0.237, 279.01, 1.8849e-1, 526.73, 0.0, 0.6617, 1.6173e+4),
-            rho_(60.92023144, 0.2582, 692.4, 0.26628),
-            pv_(249.21, -16915, -35.195, 0.028451, 1),
-            hl_(692.40, 455764.345336506, 0.428, 0, 0, 0),
-            cp_(2565.72845679261, -4.78114036856325, 0.0120362716238558, 0, 0, 0),
-            // NN: enthalpy, h_, is not used in the sprayModel.
-            // For consistency, the enthalpy is derived from hlat and hl.
-            // It is, however, convenient to have it available.
-            h_(-2690601.01887934, 2565.72845679261, -2.39057018428162, 0.00401209054128527, 0, 0),
-            cpg_(1134.11831122223, 3629.17859591113, -1440.3, 2275.29335860317, -682),
-            B_(0.00247837614419936, -2.62692044034034, -1427174.48284205, -1.68288035807895e+19, 3.48854792531957e+21),
-            mu_(-18.964, 2010.9, 1.0648, 0, 0),
-            mug_(4.4565e-08, 0.8684, 228.16, -4347.2),
-            K_(0.1957, -0.0001993, 0, 0, 0, 0),
-            Kg_(-0.000628, 0.944, -5490, 0),
-            sigma_(692.40, 0.056436, 1.3658, 0, 0, 0),
-            D_(147.18, 20.1, 198.392, 28) // NN: Same as nHeptane
-        {}
+        C14H30();
+
+        //- Construct from components
         C14H30
         (
             const liquid& l,
@@ -123,125 +106,56 @@ public:
             const NSRDSfunc2& vapourThermalConductivity,
             const NSRDSfunc6& surfaceTension,
             const APIdiffCoefFunc& vapourDiffussivity
-        )
-        :
-            liquid(l),
-            rho_(density),
-            pv_(vapourPressure),
-            hl_(heatOfVapourisation),
-            cp_(heatCapacity),
-            h_(enthalpy),
-            cpg_(idealGasHeatCapacity),
-            B_(secondVirialCoeff),
-            mu_(dynamicViscosity),
-            mug_(vapourDynamicViscosity),
-            K_(thermalConductivity),
-            Kg_(vapourThermalConductivity),
-            sigma_(surfaceTension),
-            D_(vapourDiffussivity)
-        {}
+        );
 
         //- Construct from Istream
-        C14H30(Istream& is)
-        :
-            liquid(is),
-            rho_(is),
-            pv_(is),
-            hl_(is),
-            cp_(is),
-            h_(is),
-            cpg_(is),
-            B_(is),
-            mu_(is),
-            mug_(is),
-            K_(is),
-            Kg_(is),
-            sigma_(is),
-            D_(is)
-        {}
+        C14H30(Istream& is);
 
 
     // Member Functions
 
         //- Liquid density [kg/m^3]
-        scalar rho(scalar p, scalar T) const
-        {
-            return rho_.f(p, T);
-        }
+        inline scalar rho(scalar p, scalar T) const;
 
         //- Vapour pressure [Pa]
-        scalar pv(scalar p, scalar T) const
-        {
-            return pv_.f(p, T);
-        }
+        inline scalar pv(scalar p, scalar T) const;
 
         //- Heat of vapourisation [J/kg]
-        scalar hl(scalar p, scalar T) const
-        {
-            return hl_.f(p, T);
-        }
+        inline scalar hl(scalar p, scalar T) const;
 
         //- Liquid heat capacity [J/(kg K)]
-        scalar cp(scalar p, scalar T) const
-        {
-            return cp_.f(p, T);
-        }
+        inline scalar cp(scalar p, scalar T) const;
 
         //- Liquid Enthalpy [J/(kg)]
-        scalar h(scalar p, scalar T) const
-        {
-            return h_.f(p, T);
-        }
+        inline scalar h(scalar p, scalar T) const;
 
         //- Ideal gas heat capacity [J/(kg K)]
-        scalar cpg(scalar p, scalar T) const
-        {
-            return cpg_.f(p, T);
-        }
+        inline scalar cpg(scalar p, scalar T) const;
 
         //- Second Virial Coefficient [m^3/kg]
-        scalar B(scalar p, scalar T) const
-        {
-            return B_.f(p, T);
-        }
+        inline scalar B(scalar p, scalar T) const;
 
         //- Liquid viscosity [Pa s]
-        scalar mu(scalar p, scalar T) const
-        {
-            return mu_.f(p, T);
-        }
+        inline scalar mu(scalar p, scalar T) const;
 
         //- Vapour viscosity [Pa s]
-        scalar mug(scalar p, scalar T) const
-        {
-            return mug_.f(p, T);
-        }
+        inline scalar mug(scalar p, scalar T) const;
 
-        //- Liquid thermal conductivity  [W/(m K)]
-        scalar K(scalar p, scalar T) const
-        {
-            return K_.f(p, T);
-        }
+        //- Liquid thermal conductivity [W/(m K)]
+        inline scalar K(scalar p, scalar T) const;
 
-        //- Vapour thermal conductivity  [W/(m K)]
-        scalar Kg(scalar p, scalar T) const
-        {
-            return Kg_.f(p, T);
-        }
+        //- Vapour thermal conductivity [W/(m K)]
+        inline scalar Kg(scalar p, scalar T) const;
 
         //- Surface tension [N/m]
-        scalar sigma(scalar p, scalar T) const
-        {
-            return sigma_.f(p, T);
-        }
+        inline scalar sigma(scalar p, scalar T) const;
 
         //- Vapour diffussivity [m2/s]
-        scalar D(scalar p, scalar T) const
-        {
-            return D_.f(p, T);
-        }
+        inline scalar D(scalar p, scalar T) const;
 
 
+    // I-O
+
         //- Write the function coefficients
         void writeData(Ostream& os) const
         {
@@ -260,9 +174,7 @@ public:
             D_.writeData(os); os << endl;
         }
 
-
-    // Ostream Operator
-
+        //- Ostream Operator
         friend Ostream& operator<<(Ostream& os, const C14H30& l)
         {
             l.writeData(os);
@@ -277,6 +189,10 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+#include "C14H30I.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 #endif
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/C14H30/C14H30I.H b/src/thermophysicalModels/liquids/C14H30/C14H30I.H
new file mode 100644
index 0000000000000000000000000000000000000000..6c64cab8c42ab65ef5866fb8aac40fd1766a5966
--- /dev/null
+++ b/src/thermophysicalModels/liquids/C14H30/C14H30I.H
@@ -0,0 +1,105 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+inline Foam::scalar Foam::C14H30::rho(scalar p, scalar T) const
+{
+    return rho_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C14H30::pv(scalar p, scalar T) const
+{
+    return pv_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C14H30::hl(scalar p, scalar T) const
+{
+    return hl_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C14H30::cp(scalar p, scalar T) const
+{
+    return cp_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C14H30::h(scalar p, scalar T) const
+{
+    return h_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C14H30::cpg(scalar p, scalar T) const
+{
+    return cpg_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C14H30::B(scalar p, scalar T) const
+{
+    return B_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C14H30::mu(scalar p, scalar T) const
+{
+    return mu_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C14H30::mug(scalar p, scalar T) const
+{
+    return mug_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C14H30::K(scalar p, scalar T) const
+{
+    return K_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C14H30::Kg(scalar p, scalar T) const
+{
+    return Kg_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C14H30::sigma(scalar p, scalar T) const
+{
+    return sigma_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C14H30::D(scalar p, scalar T) const
+{
+    return D_.f(p, T);
+}
+
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/C16H34/C16H34.C b/src/thermophysicalModels/liquids/C16H34/C16H34.C
index 7c394c898b78c00c8adc0460919ded10cfc5cc90..af1a86a186519aba492fa9861c0be63608acc247 100644
--- a/src/thermophysicalModels/liquids/C16H34/C16H34.C
+++ b/src/thermophysicalModels/liquids/C16H34/C16H34.C
@@ -27,19 +27,124 @@ License
 #include "C16H34.H"
 #include "addToRunTimeSelectionTable.H"
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 namespace Foam
 {
+    defineTypeNameAndDebug(C16H34, 0);
+    addToRunTimeSelectionTable(liquid, C16H34,);
+    addToRunTimeSelectionTable(liquid, C16H34, Istream);
+}
 
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::C16H34::C16H34()
+:
+    liquid
+    (
+        226.446,
+        720.60,
+        1.4186e+6,
+        0.93,
+        0.22,
+        291.32,
+        8.7467e-2,
+        560.01,
+        0.0,
+        0.7471,
+        1.6052e+4
+    ),
+    rho_(61.94656776, 0.25442, 720.6, 0.3238),
+    pv_(233.1, -17346, -32.251, 0.02407, 1.0),
+    hl_(720.60, 430654.548987397, 0.4122, 0.0, 0.0, 0.0),
+    cp_
+    (
+        3769.90540791182,
+       -12.5871068599136,
+        0.0247211255663602,
+        0.0,
+        0.0,
+        0.0
+    ),
+    h_
+    (
+       -2777201.30410301,
+        3769.90540791182,
+       -6.29355342995681,
+        0.00824037518878673,
+        0.0,
+        0.0
+    ),
+    cpg_(1128.74592618108, 3600.8584828171, -1429.7, 2259.69988429913, 679.0),
+    B_
+    (
+        0.0025091191718997,
+       -2.46668079807106,
+       -1704070.72767901,
+       -3.00623548219001e+19,
+        7.07320950690231e+21
+    ),
+    mu_(-18.388, 2056.8, 0.98681, 0.0, 0.0),
+    mug_(1.2463e-07, 0.7322, 395.0, 6000.0),
+    K_(0.1963, -0.00019, 0.0, 0.0, 0.0, 0.0),
+    Kg_(3.075e-06, 1.552, 678.0, 0.0),
+    sigma_(720.60, 0.05699, 1.3929, 0.0, 0.0, 0.0),
+    D_(147.18, 20.1, 226.446, 28.0) // note: Same as nHeptane
+{}
+
+
+Foam::C16H34::C16H34
+(
+    const liquid& l,
+    const NSRDSfunc5& density,
+    const NSRDSfunc1& vapourPressure,
+    const NSRDSfunc6& heatOfVapourisation,
+    const NSRDSfunc0& heatCapacity,
+    const NSRDSfunc0& enthalpy,
+    const NSRDSfunc7& idealGasHeatCapacity,
+    const NSRDSfunc4& secondVirialCoeff,
+    const NSRDSfunc1& dynamicViscosity,
+    const NSRDSfunc2& vapourDynamicViscosity,
+    const NSRDSfunc0& thermalConductivity,
+    const NSRDSfunc2& vapourThermalConductivity,
+    const NSRDSfunc6& surfaceTension,
+    const APIdiffCoefFunc& vapourDiffussivity
+)
+:
+    liquid(l),
+    rho_(density),
+    pv_(vapourPressure),
+    hl_(heatOfVapourisation),
+    cp_(heatCapacity),
+    h_(enthalpy),
+    cpg_(idealGasHeatCapacity),
+    B_(secondVirialCoeff),
+    mu_(dynamicViscosity),
+    mug_(vapourDynamicViscosity),
+    K_(thermalConductivity),
+    Kg_(vapourThermalConductivity),
+    sigma_(surfaceTension),
+    D_(vapourDiffussivity)
+{}
 
-defineTypeNameAndDebug(C16H34, 0);
-addToRunTimeSelectionTable(liquid, C16H34,);
-addToRunTimeSelectionTable(liquid, C16H34, Istream);
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+Foam::C16H34::C16H34(Istream& is)
+:
+    liquid(is),
+    rho_(is),
+    pv_(is),
+    hl_(is),
+    cp_(is),
+    h_(is),
+    cpg_(is),
+    B_(is),
+    mu_(is),
+    mug_(is),
+    K_(is),
+    Kg_(is),
+    sigma_(is),
+    D_(is)
+{}
 
-} // End namespace Foam
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/C16H34/C16H34.H b/src/thermophysicalModels/liquids/C16H34/C16H34.H
index 9cbc69541bda278558e4a299b02b47138cfcb127..5f2b8831635c6434817e3377c18fb9b999f626a2 100644
--- a/src/thermophysicalModels/liquids/C16H34/C16H34.H
+++ b/src/thermophysicalModels/liquids/C16H34/C16H34.H
@@ -87,26 +87,9 @@ public:
     // Constructors
 
         //- Construct null
-        C16H34()
-        :
-            liquid(226.446, 720.60, 1.4186e+6, 0.93, 0.22, 291.32, 8.7467e-2, 560.01, 0, 0.7471, 1.6052e+4),
-            rho_(61.94656776, 0.25442, 720.6, 0.3238),
-            pv_(233.1, -17346, -32.251, 0.02407, 1),
-            hl_(720.60, 430654.548987397, 0.4122, 0, 0, 0),
-            cp_(3769.90540791182, -12.5871068599136, 0.0247211255663602, 0, 0, 0),
-            // NN: enthalpy, h_, is not used in the sprayModel.
-            // For consistency, the enthalpy is derived from hlat and hl.
-            // It is, however, convenient to have it available.
-            h_(-2777201.30410301, 3769.90540791182, -6.29355342995681, 0.00824037518878673, 0, 0),
-            cpg_(1128.74592618108, 3600.8584828171, -1429.7, 2259.69988429913, 679),
-            B_(0.0025091191718997, -2.46668079807106, -1704070.72767901, -3.00623548219001e+19, 7.07320950690231e+21),
-            mu_(-18.388, 2056.8, 0.98681, 0, 0),
-            mug_(1.2463e-07, 0.7322, 395, 6000),
-            K_(0.1963, -0.00019, 0, 0, 0, 0),
-            Kg_(3.075e-06, 1.552, 678, 0),
-            sigma_(720.60, 0.05699, 1.3929, 0, 0, 0),
-            D_(147.18, 20.1, 226.446, 28) // NN: Same as nHeptane
-        {}
+        C16H34();
+
+        //- Construct from components
         C16H34
         (
             const liquid& l,
@@ -123,125 +106,56 @@ public:
             const NSRDSfunc2& vapourThermalConductivity,
             const NSRDSfunc6& surfaceTension,
             const APIdiffCoefFunc& vapourDiffussivity
-        )
-        :
-            liquid(l),
-            rho_(density),
-            pv_(vapourPressure),
-            hl_(heatOfVapourisation),
-            cp_(heatCapacity),
-            h_(enthalpy),
-            cpg_(idealGasHeatCapacity),
-            B_(secondVirialCoeff),
-            mu_(dynamicViscosity),
-            mug_(vapourDynamicViscosity),
-            K_(thermalConductivity),
-            Kg_(vapourThermalConductivity),
-            sigma_(surfaceTension),
-            D_(vapourDiffussivity)
-        {}
+        );
 
         //- Construct from Istream
-        C16H34(Istream& is)
-        :
-            liquid(is),
-            rho_(is),
-            pv_(is),
-            hl_(is),
-            cp_(is),
-            h_(is),
-            cpg_(is),
-            B_(is),
-            mu_(is),
-            mug_(is),
-            K_(is),
-            Kg_(is),
-            sigma_(is),
-            D_(is)
-        {}
+        C16H34(Istream& is);
 
 
     // Member Functions
 
         //- Liquid density [kg/m^3]
-        scalar rho(scalar p, scalar T) const
-        {
-            return rho_.f(p, T);
-        }
+        inline scalar rho(scalar p, scalar T) const;
 
         //- Vapour pressure [Pa]
-        scalar pv(scalar p, scalar T) const
-        {
-            return pv_.f(p, T);
-        }
+        inline scalar pv(scalar p, scalar T) const;
 
         //- Heat of vapourisation [J/kg]
-        scalar hl(scalar p, scalar T) const
-        {
-            return hl_.f(p, T);
-        }
+        inline scalar hl(scalar p, scalar T) const;
 
         //- Liquid heat capacity [J/(kg K)]
-        scalar cp(scalar p, scalar T) const
-        {
-            return cp_.f(p, T);
-        }
+        inline scalar cp(scalar p, scalar T) const;
 
         //- Liquid Enthalpy [J/(kg)]
-        scalar h(scalar p, scalar T) const
-        {
-            return h_.f(p, T);
-        }
+        inline scalar h(scalar p, scalar T) const;
 
         //- Ideal gas heat capacity [J/(kg K)]
-        scalar cpg(scalar p, scalar T) const
-        {
-            return cpg_.f(p, T);
-        }
+        inline scalar cpg(scalar p, scalar T) const;
 
         //- Second Virial Coefficient [m^3/kg]
-        scalar B(scalar p, scalar T) const
-        {
-            return B_.f(p, T);
-        }
+        inline scalar B(scalar p, scalar T) const;
 
         //- Liquid viscosity [Pa s]
-        scalar mu(scalar p, scalar T) const
-        {
-            return mu_.f(p, T);
-        }
+        inline scalar mu(scalar p, scalar T) const;
 
         //- Vapour viscosity [Pa s]
-        scalar mug(scalar p, scalar T) const
-        {
-            return mug_.f(p, T);
-        }
+        inline scalar mug(scalar p, scalar T) const;
 
         //- Liquid thermal conductivity  [W/(m K)]
-        scalar K(scalar p, scalar T) const
-        {
-            return K_.f(p, T);
-        }
+        inline scalar K(scalar p, scalar T) const;
 
         //- Vapour thermal conductivity  [W/(m K)]
-        scalar Kg(scalar p, scalar T) const
-        {
-            return Kg_.f(p, T);
-        }
+        inline scalar Kg(scalar p, scalar T) const;
 
         //- Surface tension [N/m]
-        scalar sigma(scalar p, scalar T) const
-        {
-            return sigma_.f(p, T);
-        }
+        inline scalar sigma(scalar p, scalar T) const;
 
         //- Vapour diffussivity [m2/s]
-        scalar D(scalar p, scalar T) const
-        {
-            return D_.f(p, T);
-        }
+        inline scalar D(scalar p, scalar T) const;
 
 
+    // I-O
+
         //- Write the function coefficients
         void writeData(Ostream& os) const
         {
@@ -260,9 +174,7 @@ public:
             D_.writeData(os); os << endl;
         }
 
-
-    // Ostream Operator
-
+        //- Ostream Operator
         friend Ostream& operator<<(Ostream& os, const C16H34& l)
         {
             l.writeData(os);
@@ -277,6 +189,10 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+#include "C16H34I.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 #endif
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/C16H34/C16H34I.H b/src/thermophysicalModels/liquids/C16H34/C16H34I.H
new file mode 100644
index 0000000000000000000000000000000000000000..66a19bb3d4877ca9511b6102d41f38dc445e103b
--- /dev/null
+++ b/src/thermophysicalModels/liquids/C16H34/C16H34I.H
@@ -0,0 +1,105 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+inline Foam::scalar Foam::C16H34::rho(scalar p, scalar T) const
+{
+    return rho_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C16H34::pv(scalar p, scalar T) const
+{
+    return pv_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C16H34::hl(scalar p, scalar T) const
+{
+    return hl_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C16H34::cp(scalar p, scalar T) const
+{
+    return cp_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C16H34::h(scalar p, scalar T) const
+{
+    return h_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C16H34::cpg(scalar p, scalar T) const
+{
+    return cpg_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C16H34::B(scalar p, scalar T) const
+{
+    return B_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C16H34::mu(scalar p, scalar T) const
+{
+    return mu_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C16H34::mug(scalar p, scalar T) const
+{
+    return mug_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C16H34::K(scalar p, scalar T) const
+{
+    return K_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C16H34::Kg(scalar p, scalar T) const
+{
+    return Kg_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C16H34::sigma(scalar p, scalar T) const
+{
+    return sigma_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C16H34::D(scalar p, scalar T) const
+{
+    return D_.f(p, T);
+}
+
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/C2H5OH/C2H5OH.C b/src/thermophysicalModels/liquids/C2H5OH/C2H5OH.C
index e5943b893ef16f7342f68363f8242961c05a199b..c5bfbe37e49503ac5c975df63d13e1255b67fb15 100644
--- a/src/thermophysicalModels/liquids/C2H5OH/C2H5OH.C
+++ b/src/thermophysicalModels/liquids/C2H5OH/C2H5OH.C
@@ -27,19 +27,124 @@ License
 #include "C2H5OH.H"
 #include "addToRunTimeSelectionTable.H"
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 namespace Foam
 {
+    defineTypeNameAndDebug(C2H5OH, 0);
+    addToRunTimeSelectionTable(liquid, C2H5OH,);
+    addToRunTimeSelectionTable(liquid, C2H5OH, Istream);
+}
 
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::C2H5OH::C2H5OH()
+:
+    liquid
+    (
+        46.069,
+        516.25,
+        6.3835e+6,
+        0.16692,
+        0.248,
+        159.05,
+        7.1775e-5,
+        351.44,
+        5.6372e-30,
+        0.6371,
+        2.6421e+4
+    ),
+    rho_(70.1308387, 0.26395, 516.25, 0.2367),
+    pv_(59.796, -6595, -5.0474, 6.3e-07, 2),
+    hl_(516.25, 958345.091059064, -0.4134, 0.75362, 0.0, 0.0),
+    cp_
+    (
+        2052.57331394213,
+       -1.21990926653498,
+        0.00714146172046278,
+        5.20523562482363e-05,
+        0.0,
+        0.0
+    ),
+    h_
+    (
+       -6752827.25039109,
+        2052.57331394213,
+       -0.60995463326749,
+        0.00238048724015426,
+        1.30130890620591e-05,
+        0.0
+    ),
+    cpg_(909.505307256507, 3358.00646855803, 1530, 2029.56434912848, 640),
+    B_
+    (
+       -0.00358158414552085,
+        3.90718270420456,
+       -1180837.43949293,
+        9.81136990166923e+18,
+       -3.58592545963663e+21
+    ),
+    mu_(8.049, 776, -3.068, 0.0, 0.0),
+    mug_(1.0613e-07, 0.8066, 52.7, 0.0),
+    K_(0.253, -0.000281, 0.0, 0.0, 0.0, 0.0),
+    Kg_(-3.12, 0.7152, -3550000.0, 0.0),
+    sigma_(516.25, 0.04064, -4.34e-05, -6.42e-08, 0.0, 0.0),
+    D_(147.18, 20.1, 46.069, 28) // note: Same as nHeptane
+{}
+
+
+Foam::C2H5OH::C2H5OH
+(
+    const liquid& l,
+    const NSRDSfunc5& density,
+    const NSRDSfunc1& vapourPressure,
+    const NSRDSfunc6& heatOfVapourisation,
+    const NSRDSfunc0& heatCapacity,
+    const NSRDSfunc0& enthalpy,
+    const NSRDSfunc7& idealGasHeatCapacity,
+    const NSRDSfunc4& secondVirialCoeff,
+    const NSRDSfunc1& dynamicViscosity,
+    const NSRDSfunc2& vapourDynamicViscosity,
+    const NSRDSfunc0& thermalConductivity,
+    const NSRDSfunc2& vapourThermalConductivity,
+    const NSRDSfunc6& surfaceTension,
+    const APIdiffCoefFunc& vapourDiffussivity
+)
+:
+    liquid(l),
+    rho_(density),
+    pv_(vapourPressure),
+    hl_(heatOfVapourisation),
+    cp_(heatCapacity),
+    h_(enthalpy),
+    cpg_(idealGasHeatCapacity),
+    B_(secondVirialCoeff),
+    mu_(dynamicViscosity),
+    mug_(vapourDynamicViscosity),
+    K_(thermalConductivity),
+    Kg_(vapourThermalConductivity),
+    sigma_(surfaceTension),
+    D_(vapourDiffussivity)
+{}
 
-defineTypeNameAndDebug(C2H5OH, 0);
-addToRunTimeSelectionTable(liquid, C2H5OH,);
-addToRunTimeSelectionTable(liquid, C2H5OH, Istream);
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+Foam::C2H5OH::C2H5OH(Istream& is)
+:
+    liquid(is),
+    rho_(is),
+    pv_(is),
+    hl_(is),
+    cp_(is),
+    h_(is),
+    cpg_(is),
+    B_(is),
+    mu_(is),
+    mug_(is),
+    K_(is),
+    Kg_(is),
+    sigma_(is),
+    D_(is)
+{}
 
-} // End namespace Foam
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/C2H5OH/C2H5OH.H b/src/thermophysicalModels/liquids/C2H5OH/C2H5OH.H
index 8e4867006457f13efadec823decb99416a306b1e..88a7099446da793a5393b42cdf254060fa1c7887 100644
--- a/src/thermophysicalModels/liquids/C2H5OH/C2H5OH.H
+++ b/src/thermophysicalModels/liquids/C2H5OH/C2H5OH.H
@@ -87,26 +87,9 @@ public:
     // Constructors
 
         //- Construct null
-        C2H5OH()
-        :
-            liquid(46.069, 516.25, 6.3835e+6, 0.16692, 0.248, 159.05, 7.1775e-5, 351.44, 5.6372e-30, 0.6371, 2.6421e+4),
-            rho_(70.1308387, 0.26395, 516.25, 0.2367),
-            pv_(59.796, -6595, -5.0474, 6.3e-07, 2),
-            hl_(516.25, 958345.091059064, -0.4134, 0.75362, 0, 0),
-            cp_(2052.57331394213, -1.21990926653498, 0.00714146172046278, 5.20523562482363e-05, 0, 0),
-            // NN: enthalpy, h_, is not used in the sprayModel.
-            // For consistency, the enthalpy is derived from hlat and hl.
-            // It is, however, convenient to have it available.
-            h_(-6752827.25039109, 2052.57331394213, -0.60995463326749, 0.00238048724015426, 1.30130890620591e-05, 0),
-            cpg_(909.505307256507, 3358.00646855803, 1530, 2029.56434912848, 640),
-            B_(-0.00358158414552085, 3.90718270420456, -1180837.43949293, 9.81136990166923e+18, -3.58592545963663e+21),
-            mu_(8.049, 776, -3.068, 0, 0),
-            mug_(1.0613e-07, 0.8066, 52.7, 0),
-            K_(0.253, -0.000281, 0, 0, 0, 0),
-            Kg_(-3.12, 0.7152, -3550000.0, 0),
-            sigma_(516.25, 0.04064, -4.34e-05, -6.42e-08, 0, 0),
-            D_(147.18, 20.1, 46.069, 28) // NN: Same as nHeptane
-        {}
+        C2H5OH();
+
+        //- Construct from components
         C2H5OH
         (
             const liquid& l,
@@ -123,125 +106,56 @@ public:
             const NSRDSfunc2& vapourThermalConductivity,
             const NSRDSfunc6& surfaceTension,
             const APIdiffCoefFunc& vapourDiffussivity
-        )
-        :
-            liquid(l),
-            rho_(density),
-            pv_(vapourPressure),
-            hl_(heatOfVapourisation),
-            cp_(heatCapacity),
-            h_(enthalpy),
-            cpg_(idealGasHeatCapacity),
-            B_(secondVirialCoeff),
-            mu_(dynamicViscosity),
-            mug_(vapourDynamicViscosity),
-            K_(thermalConductivity),
-            Kg_(vapourThermalConductivity),
-            sigma_(surfaceTension),
-            D_(vapourDiffussivity)
-        {}
+        );
 
         //- Construct from Istream
-        C2H5OH(Istream& is)
-        :
-            liquid(is),
-            rho_(is),
-            pv_(is),
-            hl_(is),
-            cp_(is),
-            h_(is),
-            cpg_(is),
-            B_(is),
-            mu_(is),
-            mug_(is),
-            K_(is),
-            Kg_(is),
-            sigma_(is),
-            D_(is)
-        {}
+        C2H5OH(Istream& is);
 
 
     // Member Functions
 
         //- Liquid density [kg/m^3]
-        scalar rho(scalar p, scalar T) const
-        {
-            return rho_.f(p, T);
-        }
+        inline scalar rho(scalar p, scalar T) const;
 
         //- Vapour pressure [Pa]
-        scalar pv(scalar p, scalar T) const
-        {
-            return pv_.f(p, T);
-        }
+        inline scalar pv(scalar p, scalar T) const;
 
         //- Heat of vapourisation [J/kg]
-        scalar hl(scalar p, scalar T) const
-        {
-            return hl_.f(p, T);
-        }
+        inline scalar hl(scalar p, scalar T) const;
 
         //- Liquid heat capacity [J/(kg K)]
-        scalar cp(scalar p, scalar T) const
-        {
-            return cp_.f(p, T);
-        }
+        inline scalar cp(scalar p, scalar T) const;
 
         //- Liquid Enthalpy [J/(kg)]
-        scalar h(scalar p, scalar T) const
-        {
-            return h_.f(p, T);
-        }
+        inline scalar h(scalar p, scalar T) const;
 
         //- Ideal gas heat capacity [J/(kg K)]
-        scalar cpg(scalar p, scalar T) const
-        {
-            return cpg_.f(p, T);
-        }
+        inline scalar cpg(scalar p, scalar T) const;
 
         //- Second Virial Coefficient [m^3/kg]
-        scalar B(scalar p, scalar T) const
-        {
-            return B_.f(p, T);
-        }
+        inline scalar B(scalar p, scalar T) const;
 
         //- Liquid viscosity [Pa s]
-        scalar mu(scalar p, scalar T) const
-        {
-            return mu_.f(p, T);
-        }
+        inline scalar mu(scalar p, scalar T) const;
 
         //- Vapour viscosity [Pa s]
-        scalar mug(scalar p, scalar T) const
-        {
-            return mug_.f(p, T);
-        }
+        inline scalar mug(scalar p, scalar T) const;
 
         //- Liquid thermal conductivity  [W/(m K)]
-        scalar K(scalar p, scalar T) const
-        {
-            return K_.f(p, T);
-        }
+        inline scalar K(scalar p, scalar T) const;
 
         //- Vapour thermal conductivity  [W/(m K)]
-        scalar Kg(scalar p, scalar T) const
-        {
-            return Kg_.f(p, T);
-        }
+        inline scalar Kg(scalar p, scalar T) const;
 
         //- Surface tension [N/m]
-        scalar sigma(scalar p, scalar T) const
-        {
-            return sigma_.f(p, T);
-        }
+        inline scalar sigma(scalar p, scalar T) const;
 
         //- Vapour diffussivity [m2/s]
-        scalar D(scalar p, scalar T) const
-        {
-            return D_.f(p, T);
-        }
+        inline scalar D(scalar p, scalar T) const;
 
 
+    // I-O
+
         //- Write the function coefficients
         void writeData(Ostream& os) const
         {
@@ -260,9 +174,7 @@ public:
             D_.writeData(os); os << endl;
         }
 
-
-    // Ostream Operator
-
+        //- Ostream Operator
         friend Ostream& operator<<(Ostream& os, const C2H5OH& l)
         {
             l.writeData(os);
@@ -277,6 +189,10 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+#include "C2H5OHI.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 #endif
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/C2H5OH/C2H5OHI.H b/src/thermophysicalModels/liquids/C2H5OH/C2H5OHI.H
new file mode 100644
index 0000000000000000000000000000000000000000..cf051eea9c8cf30a3d5d000be0c9af9aeca5b8e3
--- /dev/null
+++ b/src/thermophysicalModels/liquids/C2H5OH/C2H5OHI.H
@@ -0,0 +1,105 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+inline Foam::scalar Foam::C2H5OH::rho(scalar p, scalar T) const
+{
+    return rho_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C2H5OH::pv(scalar p, scalar T) const
+{
+    return pv_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C2H5OH::hl(scalar p, scalar T) const
+{
+    return hl_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C2H5OH::cp(scalar p, scalar T) const
+{
+    return cp_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C2H5OH::h(scalar p, scalar T) const
+{
+    return h_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C2H5OH::cpg(scalar p, scalar T) const
+{
+    return cpg_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C2H5OH::B(scalar p, scalar T) const
+{
+    return B_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C2H5OH::mu(scalar p, scalar T) const
+{
+    return mu_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C2H5OH::mug(scalar p, scalar T) const
+{
+    return mug_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C2H5OH::K(scalar p, scalar T) const
+{
+    return K_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C2H5OH::Kg(scalar p, scalar T) const
+{
+    return Kg_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C2H5OH::sigma(scalar p, scalar T) const
+{
+    return sigma_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C2H5OH::D(scalar p, scalar T) const
+{
+    return D_.f(p, T);
+}
+
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/C2H6/C2H6.C b/src/thermophysicalModels/liquids/C2H6/C2H6.C
index 8859c637be4f507d42f66f74471ea9d36fddf4fa..659144b76406545185205471fcafae760b968654 100644
--- a/src/thermophysicalModels/liquids/C2H6/C2H6.C
+++ b/src/thermophysicalModels/liquids/C2H6/C2H6.C
@@ -27,19 +27,115 @@ License
 #include "C2H6.H"
 #include "addToRunTimeSelectionTable.H"
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 namespace Foam
 {
+    defineTypeNameAndDebug(C2H6, 0);
+    addToRunTimeSelectionTable(liquid, C2H6,);
+    addToRunTimeSelectionTable(liquid, C2H6, Istream);
+}
 
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::C2H6::C2H6()
+:
+    liquid
+    (
+        30.070,
+        305.32,
+        4.872e+6,
+        0.14550,
+        0.279,
+        90.35,
+        1.13,
+        184.55,
+        0.0,
+        0.0995,
+        1.24e+4
+    ),
+    rho_(57.499854, 0.27937, 305.32, 0.29187),
+    pv_(51.857, -2598.7, -5.1283, 1.4913e-05, 2.0),
+    hl_(305.32, 701396.740937812, 0.60646, -0.55492, 0.32799, 0.0),
+    cp_
+    (
+        305.32,
+        8.02554965861611,
+        2983.63817758563,
+        167.548325566287,
+       -343.93389207094
+    ),
+    h_(0.0, 0.0, 0.0, 0.0, 0.0, 0.0),
+    cpg_(1341.07083471899, 4463.58496840705, 1655.5, 2435.08480212837, 752.87),
+    B_
+    (
+        0.00269205187894912,
+       -2.05221150648487,
+       -47721.9820419022,
+        2.24808779514466e+15,
+       -3.23910874625873e+17
+    ),
+    mu_(-3.4134, 197.05, -1.2193, -9.2023e-26, 10.0),
+    mug_(2.5906e-07, 0.67988, 98.902, 0.0),
+    K_(0.35758, -0.0011458, 6.1866e-07, 0.0, 0.0, 0.0),
+    Kg_(7.3869e-05, 1.1689, 500.73, 0.0),
+    sigma_(305.32, 0.048643, 1.1981, 0.0, 0.0, 0.0),
+    D_(147.18, 20.1, 30.070, 28) // note: Same as nHeptane
+{}
+
+
+Foam::C2H6::C2H6
+(
+    const liquid& l,
+    const NSRDSfunc5& density,
+    const NSRDSfunc1& vapourPressure,
+    const NSRDSfunc6& heatOfVapourisation,
+    const NSRDSfunc14& heatCapacity,
+    const NSRDSfunc0& enthalpy,
+    const NSRDSfunc7& idealGasHeatCapacity,
+    const NSRDSfunc4& secondVirialCoeff,
+    const NSRDSfunc1& dynamicViscosity,
+    const NSRDSfunc2& vapourDynamicViscosity,
+    const NSRDSfunc0& thermalConductivity,
+    const NSRDSfunc2& vapourThermalConductivity,
+    const NSRDSfunc6& surfaceTension,
+    const APIdiffCoefFunc& vapourDiffussivity
+)
+:
+    liquid(l),
+    rho_(density),
+    pv_(vapourPressure),
+    hl_(heatOfVapourisation),
+    cp_(heatCapacity),
+    h_(enthalpy),
+    cpg_(idealGasHeatCapacity),
+    B_(secondVirialCoeff),
+    mu_(dynamicViscosity),
+    mug_(vapourDynamicViscosity),
+    K_(thermalConductivity),
+    Kg_(vapourThermalConductivity),
+    sigma_(surfaceTension),
+    D_(vapourDiffussivity)
+{}
 
-defineTypeNameAndDebug(C2H6, 0);
-addToRunTimeSelectionTable(liquid, C2H6,);
-addToRunTimeSelectionTable(liquid, C2H6, Istream);
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+Foam::C2H6::C2H6(Istream& is)
+:
+    liquid(is),
+    rho_(is),
+    pv_(is),
+    hl_(is),
+    cp_(is),
+    h_(is),
+    cpg_(is),
+    B_(is),
+    mu_(is),
+    mug_(is),
+    K_(is),
+    Kg_(is),
+    sigma_(is),
+    D_(is)
+{}
 
-} // End namespace Foam
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/C2H6/C2H6.H b/src/thermophysicalModels/liquids/C2H6/C2H6.H
index 48200af5908303c92f33085379c4b60af6eac002..728c362732ec9249476fdddbf41561e9e047781b 100644
--- a/src/thermophysicalModels/liquids/C2H6/C2H6.H
+++ b/src/thermophysicalModels/liquids/C2H6/C2H6.H
@@ -87,26 +87,9 @@ public:
     // Constructors
 
         //- Construct null
-        C2H6()
-        :
-            liquid(30.070, 305.32, 4.872e+6, 0.14550, 0.279, 90.35, 1.13, 184.55, 0.0, 0.0995, 1.24e+4),
-            rho_(57.499854, 0.27937, 305.32, 0.29187),
-            pv_(51.857, -2598.7, -5.1283, 1.4913e-05, 2),
-            hl_(305.32, 701396.740937812, 0.60646, -0.55492, 0.32799, 0),
-            cp_(305.32, 8.02554965861611, 2983.63817758563, 167.548325566287, -343.93389207094),
-            // NN: enthalpy, h_, is not used in the sprayModel.
-            // For consistency, the enthalpy is derived from hlat and hl.
-            // It is, however, convenient to have it available.
-            h_(0, 0, 0, 0, 0, 0),
-            cpg_(1341.07083471899, 4463.58496840705, 1655.5, 2435.08480212837, 752.87),
-            B_(0.00269205187894912, -2.05221150648487, -47721.9820419022, 2.24808779514466e+15, -3.23910874625873e+17),
-            mu_(-3.4134, 197.05, -1.2193, -9.2023e-26, 10),
-            mug_(2.5906e-07, 0.67988, 98.902, 0),
-            K_(0.35758, -0.0011458, 6.1866e-07, 0, 0, 0),
-            Kg_(7.3869e-05, 1.1689, 500.73, 0),
-            sigma_(305.32, 0.048643, 1.1981, 0, 0, 0),
-            D_(147.18, 20.1, 30.070, 28) // NN: Same as nHeptane
-        {}
+        C2H6();
+
+        //- Construct from components
         C2H6
         (
             const liquid& l,
@@ -123,125 +106,56 @@ public:
             const NSRDSfunc2& vapourThermalConductivity,
             const NSRDSfunc6& surfaceTension,
             const APIdiffCoefFunc& vapourDiffussivity
-        )
-        :
-            liquid(l),
-            rho_(density),
-            pv_(vapourPressure),
-            hl_(heatOfVapourisation),
-            cp_(heatCapacity),
-            h_(enthalpy),
-            cpg_(idealGasHeatCapacity),
-            B_(secondVirialCoeff),
-            mu_(dynamicViscosity),
-            mug_(vapourDynamicViscosity),
-            K_(thermalConductivity),
-            Kg_(vapourThermalConductivity),
-            sigma_(surfaceTension),
-            D_(vapourDiffussivity)
-        {}
+        );
 
         //- Construct from Istream
-        C2H6(Istream& is)
-        :
-            liquid(is),
-            rho_(is),
-            pv_(is),
-            hl_(is),
-            cp_(is),
-            h_(is),
-            cpg_(is),
-            B_(is),
-            mu_(is),
-            mug_(is),
-            K_(is),
-            Kg_(is),
-            sigma_(is),
-            D_(is)
-        {}
+        C2H6(Istream& is);
 
 
     // Member Functions
 
         //- Liquid density [kg/m^3]
-        scalar rho(scalar p, scalar T) const
-        {
-            return rho_.f(p, T);
-        }
+        inline scalar rho(scalar p, scalar T) const;
 
         //- Vapour pressure [Pa]
-        scalar pv(scalar p, scalar T) const
-        {
-            return pv_.f(p, T);
-        }
+        inline scalar pv(scalar p, scalar T) const;
 
         //- Heat of vapourisation [J/kg]
-        scalar hl(scalar p, scalar T) const
-        {
-            return hl_.f(p, T);
-        }
+        inline scalar hl(scalar p, scalar T) const;
 
         //- Liquid heat capacity [J/(kg K)]
-        scalar cp(scalar p, scalar T) const
-        {
-            return cp_.f(p, T);
-        }
+        inline scalar cp(scalar p, scalar T) const;
 
         //- Liquid Enthalpy [J/(kg)]
-        scalar h(scalar p, scalar T) const
-        {
-            return h_.f(p, T);
-        }
+        inline scalar h(scalar p, scalar T) const;
 
         //- Ideal gas heat capacity [J/(kg K)]
-        scalar cpg(scalar p, scalar T) const
-        {
-            return cpg_.f(p, T);
-        }
+        inline scalar cpg(scalar p, scalar T) const;
 
         //- Second Virial Coefficient [m^3/kg]
-        scalar B(scalar p, scalar T) const
-        {
-            return B_.f(p, T);
-        }
+        inline scalar B(scalar p, scalar T) const;
 
         //- Liquid viscosity [Pa s]
-        scalar mu(scalar p, scalar T) const
-        {
-            return mu_.f(p, T);
-        }
+        inline scalar mu(scalar p, scalar T) const;
 
         //- Vapour viscosity [Pa s]
-        scalar mug(scalar p, scalar T) const
-        {
-            return mug_.f(p, T);
-        }
+        inline scalar mug(scalar p, scalar T) const;
 
         //- Liquid thermal conductivity  [W/(m K)]
-        scalar K(scalar p, scalar T) const
-        {
-            return K_.f(p, T);
-        }
+        inline scalar K(scalar p, scalar T) const;
 
         //- Vapour thermal conductivity  [W/(m K)]
-        scalar Kg(scalar p, scalar T) const
-        {
-            return Kg_.f(p, T);
-        }
+        inline scalar Kg(scalar p, scalar T) const;
 
         //- Surface tension [N/m]
-        scalar sigma(scalar p, scalar T) const
-        {
-            return sigma_.f(p, T);
-        }
+        inline scalar sigma(scalar p, scalar T) const;
 
         //- Vapour diffussivity [m2/s]
-        scalar D(scalar p, scalar T) const
-        {
-            return D_.f(p, T);
-        }
+        inline scalar D(scalar p, scalar T) const;
 
 
+    // I-O
+
         //- Write the function coefficients
         void writeData(Ostream& os) const
         {
@@ -260,9 +174,7 @@ public:
             D_.writeData(os); os << endl;
         }
 
-
-    // Ostream Operator
-
+        //- Ostream Operator
         friend Ostream& operator<<(Ostream& os, const C2H6& l)
         {
             l.writeData(os);
@@ -277,6 +189,10 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+#include "C2H6I.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 #endif
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/C2H6/C2H6I.H b/src/thermophysicalModels/liquids/C2H6/C2H6I.H
new file mode 100644
index 0000000000000000000000000000000000000000..a788413b0efafe6f73aa17984020a267069a8885
--- /dev/null
+++ b/src/thermophysicalModels/liquids/C2H6/C2H6I.H
@@ -0,0 +1,105 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+inline Foam::scalar Foam::C2H6::rho(scalar p, scalar T) const
+{
+    return rho_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C2H6::pv(scalar p, scalar T) const
+{
+    return pv_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C2H6::hl(scalar p, scalar T) const
+{
+    return hl_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C2H6::cp(scalar p, scalar T) const
+{
+    return cp_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C2H6::h(scalar p, scalar T) const
+{
+    return h_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C2H6::cpg(scalar p, scalar T) const
+{
+    return cpg_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C2H6::B(scalar p, scalar T) const
+{
+    return B_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C2H6::mu(scalar p, scalar T) const
+{
+    return mu_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C2H6::mug(scalar p, scalar T) const
+{
+    return mug_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C2H6::K(scalar p, scalar T) const
+{
+    return K_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C2H6::Kg(scalar p, scalar T) const
+{
+    return Kg_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C2H6::sigma(scalar p, scalar T) const
+{
+    return sigma_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C2H6::D(scalar p, scalar T) const
+{
+    return D_.f(p, T);
+}
+
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/C2H6O/C2H6O.C b/src/thermophysicalModels/liquids/C2H6O/C2H6O.C
index d4de1a8c1b8fddd0202bdcea08fb3529bb61f9cf..8cc2a83df0b03bd414b3f1d0a52fea166a68be30 100644
--- a/src/thermophysicalModels/liquids/C2H6O/C2H6O.C
+++ b/src/thermophysicalModels/liquids/C2H6O/C2H6O.C
@@ -27,19 +27,124 @@ License
 #include "C2H6O.H"
 #include "addToRunTimeSelectionTable.H"
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 namespace Foam
 {
+    defineTypeNameAndDebug(C2H6O, 0);
+    addToRunTimeSelectionTable(liquid, C2H6O,);
+    addToRunTimeSelectionTable(liquid, C2H6O, Istream);
+}
 
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::C2H6O::C2H6O()
+:
+    liquid
+    (
+        46.069,
+        400.10,
+        5.3702e+6,
+        0.17,
+        0.274,
+        131.65,
+        3.0849,
+        248.31,
+        4.3363e-30,
+        0.2036,
+        1.7572e+4
+    ),
+    rho_(69.472052, 0.26325, 400.1, 0.2806),
+    pv_(51.566, -3664.4, -4.653, 5.9e-06, 2),
+    hl_(400.10, 608435.173326966, 0.2477, -0.089, 0.203, 0),
+    cp_
+    (
+        1491.24139877141,
+        11.3099915344375,
+       -0.067273003538171,
+        0.000136556035511949,
+        0.0,
+        0.0
+    ),
+    h_
+    (
+       -5024829.22619402,
+        1491.24139877141,
+        5.65499576721874,
+       -0.0224243345127237,
+        3.41390088779874e-05,
+        0.0
+    ),
+    cpg_(950.747791356443, 3160.47667628991, 1284, 1291.5409494454, 520),
+    B_
+    (
+        0.00235082159369641,
+       -2.26616596843865,
+       -123293.320888233,
+       -8.87364605266014e+16,
+        1.46389111984198e+19
+    ),
+    mu_(-10.62, 448.99, 8.3967e-05, 0.0, 0.0),
+    mug_(7.27, 0.1091, 440600000, 0.0),
+    K_(0.31276, -0.0005677, 0.0, 0.0, 0.0, 0.0),
+    Kg_(0.2247, 0.1026, 997.06, 1762900),
+    sigma_(400.10, 0.06096, 1.2286, 0, 0, 0),
+    D_(147.18, 20.1, 46.069, 28) // note: Same as nHeptane
+{}
+
+
+Foam::C2H6O::C2H6O
+(
+    const liquid& l,
+    const NSRDSfunc5& density,
+    const NSRDSfunc1& vapourPressure,
+    const NSRDSfunc6& heatOfVapourisation,
+    const NSRDSfunc0& heatCapacity,
+    const NSRDSfunc0& enthalpy,
+    const NSRDSfunc7& idealGasHeatCapacity,
+    const NSRDSfunc4& secondVirialCoeff,
+    const NSRDSfunc1& dynamicViscosity,
+    const NSRDSfunc2& vapourDynamicViscosity,
+    const NSRDSfunc0& thermalConductivity,
+    const NSRDSfunc2& vapourThermalConductivity,
+    const NSRDSfunc6& surfaceTension,
+    const APIdiffCoefFunc& vapourDiffussivity
+)
+:
+    liquid(l),
+    rho_(density),
+    pv_(vapourPressure),
+    hl_(heatOfVapourisation),
+    cp_(heatCapacity),
+    h_(enthalpy),
+    cpg_(idealGasHeatCapacity),
+    B_(secondVirialCoeff),
+    mu_(dynamicViscosity),
+    mug_(vapourDynamicViscosity),
+    K_(thermalConductivity),
+    Kg_(vapourThermalConductivity),
+    sigma_(surfaceTension),
+    D_(vapourDiffussivity)
+{}
 
-defineTypeNameAndDebug(C2H6O, 0);
-addToRunTimeSelectionTable(liquid, C2H6O,);
-addToRunTimeSelectionTable(liquid, C2H6O, Istream);
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+Foam::C2H6O::C2H6O(Istream& is)
+:
+    liquid(is),
+    rho_(is),
+    pv_(is),
+    hl_(is),
+    cp_(is),
+    h_(is),
+    cpg_(is),
+    B_(is),
+    mu_(is),
+    mug_(is),
+    K_(is),
+    Kg_(is),
+    sigma_(is),
+    D_(is)
+{}
 
-} // End namespace Foam
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/C2H6O/C2H6O.H b/src/thermophysicalModels/liquids/C2H6O/C2H6O.H
index 8017e404377ac34e17a3e55e797d5665991ef4ea..690f68d9e4f68d7e1f1b5e31156e72ef89247621 100644
--- a/src/thermophysicalModels/liquids/C2H6O/C2H6O.H
+++ b/src/thermophysicalModels/liquids/C2H6O/C2H6O.H
@@ -87,26 +87,9 @@ public:
     // Constructors
 
         //- Construct null
-        C2H6O()
-        :
-            liquid(46.069, 400.10, 5.3702e+6, 0.17, 0.274, 131.65, 3.0849, 248.31, 4.3363e-30, 0.2036, 1.7572e+4),
-            rho_(69.472052, 0.26325, 400.1, 0.2806),
-            pv_(51.566, -3664.4, -4.653, 5.9e-06, 2),
-            hl_(400.10, 608435.173326966, 0.2477, -0.089, 0.203, 0),
-            cp_(1491.24139877141, 11.3099915344375, -0.067273003538171, 0.000136556035511949, 0, 0),
-            // NN: enthalpy, h_, is not used in the sprayModel.
-            // For consistency, the enthalpy is derived from hlat and hl.
-            // It is, however, convenient to have it available.
-            h_(-5024829.22619402, 1491.24139877141, 5.65499576721874, -0.0224243345127237, 3.41390088779874e-05, 0),
-            cpg_(950.747791356443, 3160.47667628991, 1284, 1291.5409494454, 520),
-            B_(0.00235082159369641, -2.26616596843865, -123293.320888233, -8.87364605266014e+16, 1.46389111984198e+19),
-            mu_(-10.62, 448.99, 8.3967e-05, 0, 0),
-            mug_(7.27, 0.1091, 440600000, 0),
-            K_(0.31276, -0.0005677, 0, 0, 0, 0),
-            Kg_(0.2247, 0.1026, 997.06, 1762900),
-            sigma_(400.10, 0.06096, 1.2286, 0, 0, 0),
-            D_(147.18, 20.1, 46.069, 28) // NN: Same as nHeptane
-        {}
+        C2H6O();
+
+        //- Construct from components
         C2H6O
         (
             const liquid& l,
@@ -123,125 +106,56 @@ public:
             const NSRDSfunc2& vapourThermalConductivity,
             const NSRDSfunc6& surfaceTension,
             const APIdiffCoefFunc& vapourDiffussivity
-        )
-        :
-            liquid(l),
-            rho_(density),
-            pv_(vapourPressure),
-            hl_(heatOfVapourisation),
-            cp_(heatCapacity),
-            h_(enthalpy),
-            cpg_(idealGasHeatCapacity),
-            B_(secondVirialCoeff),
-            mu_(dynamicViscosity),
-            mug_(vapourDynamicViscosity),
-            K_(thermalConductivity),
-            Kg_(vapourThermalConductivity),
-            sigma_(surfaceTension),
-            D_(vapourDiffussivity)
-        {}
+        );
 
         //- Construct from Istream
-        C2H6O(Istream& is)
-        :
-            liquid(is),
-            rho_(is),
-            pv_(is),
-            hl_(is),
-            cp_(is),
-            h_(is),
-            cpg_(is),
-            B_(is),
-            mu_(is),
-            mug_(is),
-            K_(is),
-            Kg_(is),
-            sigma_(is),
-            D_(is)
-        {}
+        C2H6O(Istream& is);
 
 
     // Member Functions
 
         //- Liquid density [kg/m^3]
-        scalar rho(scalar p, scalar T) const
-        {
-            return rho_.f(p, T);
-        }
+        inline scalar rho(scalar p, scalar T) const;
 
         //- Vapour pressure [Pa]
-        scalar pv(scalar p, scalar T) const
-        {
-            return pv_.f(p, T);
-        }
+        inline scalar pv(scalar p, scalar T) const;
 
         //- Heat of vapourisation [J/kg]
-        scalar hl(scalar p, scalar T) const
-        {
-            return hl_.f(p, T);
-        }
+        inline scalar hl(scalar p, scalar T) const;
 
         //- Liquid heat capacity [J/(kg K)]
-        scalar cp(scalar p, scalar T) const
-        {
-            return cp_.f(p, T);
-        }
+        inline scalar cp(scalar p, scalar T) const;
 
         //- Liquid Enthalpy [J/(kg)]
-        scalar h(scalar p, scalar T) const
-        {
-            return h_.f(p, T);
-        }
+        inline scalar h(scalar p, scalar T) const;
 
         //- Ideal gas heat capacity [J/(kg K)]
-        scalar cpg(scalar p, scalar T) const
-        {
-            return cpg_.f(p, T);
-        }
+        inline scalar cpg(scalar p, scalar T) const;
 
         //- Second Virial Coefficient [m^3/kg]
-        scalar B(scalar p, scalar T) const
-        {
-            return B_.f(p, T);
-        }
+        inline scalar B(scalar p, scalar T) const;
 
         //- Liquid viscosity [Pa s]
-        scalar mu(scalar p, scalar T) const
-        {
-            return mu_.f(p, T);
-        }
+        inline scalar mu(scalar p, scalar T) const;
 
         //- Vapour viscosity [Pa s]
-        scalar mug(scalar p, scalar T) const
-        {
-            return mug_.f(p, T);
-        }
+        inline scalar mug(scalar p, scalar T) const;
 
         //- Liquid thermal conductivity  [W/(m K)]
-        scalar K(scalar p, scalar T) const
-        {
-            return K_.f(p, T);
-        }
+        inline scalar K(scalar p, scalar T) const;
 
         //- Vapour thermal conductivity  [W/(m K)]
-        scalar Kg(scalar p, scalar T) const
-        {
-            return Kg_.f(p, T);
-        }
+        inline scalar Kg(scalar p, scalar T) const;
 
         //- Surface tension [N/m]
-        scalar sigma(scalar p, scalar T) const
-        {
-            return sigma_.f(p, T);
-        }
+        inline scalar sigma(scalar p, scalar T) const;
 
         //- Vapour diffussivity [m2/s]
-        scalar D(scalar p, scalar T) const
-        {
-            return D_.f(p, T);
-        }
+        inline scalar D(scalar p, scalar T) const;
 
 
+    // I-O
+
         //- Write the function coefficients
         void writeData(Ostream& os) const
         {
@@ -260,9 +174,7 @@ public:
             D_.writeData(os); os << endl;
         }
 
-
-    // Ostream Operator
-
+        //- Ostream Operator
         friend Ostream& operator<<(Ostream& os, const C2H6O& l)
         {
             l.writeData(os);
@@ -277,6 +189,10 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+#include "C2H6OI.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 #endif
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/C2H6O/C2H6OI.H b/src/thermophysicalModels/liquids/C2H6O/C2H6OI.H
new file mode 100644
index 0000000000000000000000000000000000000000..5e2b7cadc707d912433a31fdf7bd64989b90d11a
--- /dev/null
+++ b/src/thermophysicalModels/liquids/C2H6O/C2H6OI.H
@@ -0,0 +1,105 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+inline Foam::scalar Foam::C2H6O::rho(scalar p, scalar T) const
+{
+    return rho_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C2H6O::pv(scalar p, scalar T) const
+{
+    return pv_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C2H6O::hl(scalar p, scalar T) const
+{
+    return hl_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C2H6O::cp(scalar p, scalar T) const
+{
+    return cp_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C2H6O::h(scalar p, scalar T) const
+{
+    return h_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C2H6O::cpg(scalar p, scalar T) const
+{
+    return cpg_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C2H6O::B(scalar p, scalar T) const
+{
+    return B_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C2H6O::mu(scalar p, scalar T) const
+{
+    return mu_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C2H6O::mug(scalar p, scalar T) const
+{
+    return mug_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C2H6O::K(scalar p, scalar T) const
+{
+    return K_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C2H6O::Kg(scalar p, scalar T) const
+{
+    return Kg_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C2H6O::sigma(scalar p, scalar T) const
+{
+    return sigma_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C2H6O::D(scalar p, scalar T) const
+{
+    return D_.f(p, T);
+}
+
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/C3H6O/C3H6O.C b/src/thermophysicalModels/liquids/C3H6O/C3H6O.C
index 9e128206ced0d9dcc0930317a3a0aa697140c092..2e2b29b6e0b31c9dd8438b291aa3bb6363459985 100644
--- a/src/thermophysicalModels/liquids/C3H6O/C3H6O.C
+++ b/src/thermophysicalModels/liquids/C3H6O/C3H6O.C
@@ -27,19 +27,124 @@ License
 #include "C3H6O.H"
 #include "addToRunTimeSelectionTable.H"
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 namespace Foam
 {
+    defineTypeNameAndDebug(C3H6O, 0);
+    addToRunTimeSelectionTable(liquid, C3H6O,);
+    addToRunTimeSelectionTable(liquid, C3H6O, Istream);
+}
 
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::C3H6O::C3H6O()
+:
+    liquid
+    (
+        58.08,
+        508.20,
+        4.7015e+6,
+        0.209,
+        0.233,
+        178.45,
+        2.5938,
+        329.44,
+        9.6066e-30,
+        0.3064,
+        1.9774e+4
+    ),
+    rho_(71.426784, 0.2576, 508.2, 0.29903),
+    pv_(70.72, -5.685, -7.351, 6.3e-06, 2.0),
+    hl_(508.20, 846590.909090909, 1.036, -1.294, 0.672, 0.0),
+    cp_
+    (
+        2334.71074380165,
+       -3.04752066115702,
+        0.00488464187327824,
+        1.18629476584022e-05,
+        0.0,
+        0.0
+    ),
+    h_
+    (
+        2571201.780143,
+        2334.71074380165,
+       -1.52376033057851,
+        0.00162821395775941,
+        2.96573691460055e-06,
+        0.0
+    ),
+    cpg_(828.512396694215, 2830.57851239669, 1250.0, 1234.50413223141, -524.4),
+    B_
+    (
+        0.00190599173553719,
+       -1.70798898071625,
+       -525826.446280992,
+        1.70282369146006e+17,
+       -2.83298898071625e+20
+    ),
+    mu_(-14.918, 1023.4, 0.5961, 0.0, 0.0),
+    mug_(3.1005e-08, 0.9762, 23.139, 0.0),
+    K_(0.2502, -0.000298, 0.0, 0.0, 0.0, 0.0),
+    Kg_(-26.8, 0.9098, -126500000, 0.0),
+    sigma_(508.20, 0.0622, 1.124, 0.0, 0.0, 0.0),
+    D_(147.18, 20.1, 58.08, 28) // note: Same as nHeptane
+{}
+
+
+Foam::C3H6O::C3H6O
+(
+    const liquid& l,
+    const NSRDSfunc5& density,
+    const NSRDSfunc1& vapourPressure,
+    const NSRDSfunc6& heatOfVapourisation,
+    const NSRDSfunc0& heatCapacity,
+    const NSRDSfunc0& enthalpy,
+    const NSRDSfunc7& idealGasHeatCapacity,
+    const NSRDSfunc4& secondVirialCoeff,
+    const NSRDSfunc1& dynamicViscosity,
+    const NSRDSfunc2& vapourDynamicViscosity,
+    const NSRDSfunc0& thermalConductivity,
+    const NSRDSfunc2& vapourThermalConductivity,
+    const NSRDSfunc6& surfaceTension,
+    const APIdiffCoefFunc& vapourDiffussivity
+)
+:
+    liquid(l),
+    rho_(density),
+    pv_(vapourPressure),
+    hl_(heatOfVapourisation),
+    cp_(heatCapacity),
+    h_(enthalpy),
+    cpg_(idealGasHeatCapacity),
+    B_(secondVirialCoeff),
+    mu_(dynamicViscosity),
+    mug_(vapourDynamicViscosity),
+    K_(thermalConductivity),
+    Kg_(vapourThermalConductivity),
+    sigma_(surfaceTension),
+    D_(vapourDiffussivity)
+{}
 
-defineTypeNameAndDebug(C3H6O, 0);
-addToRunTimeSelectionTable(liquid, C3H6O,);
-addToRunTimeSelectionTable(liquid, C3H6O, Istream);
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+Foam::C3H6O::C3H6O(Istream& is)
+:
+    liquid(is),
+    rho_(is),
+    pv_(is),
+    hl_(is),
+    cp_(is),
+    h_(is),
+    cpg_(is),
+    B_(is),
+    mu_(is),
+    mug_(is),
+    K_(is),
+    Kg_(is),
+    sigma_(is),
+    D_(is)
+{}
 
-} // End namespace Foam
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/C3H6O/C3H6O.H b/src/thermophysicalModels/liquids/C3H6O/C3H6O.H
index 86cb9c5998757aa0919449f278bade06453bd618..b08db3fc0b4c68c76ecd10d48f73868127940569 100644
--- a/src/thermophysicalModels/liquids/C3H6O/C3H6O.H
+++ b/src/thermophysicalModels/liquids/C3H6O/C3H6O.H
@@ -87,26 +87,9 @@ public:
     // Constructors
 
         //- Construct null
-        C3H6O()
-        :
-            liquid(58.08, 508.20, 4.7015e+6, 0.209, 0.233, 178.45, 2.5938, 329.44, 9.6066e-30, 0.3064, 1.9774e+4),
-            rho_(71.426784, 0.2576, 508.2, 0.29903),
-            pv_(70.72, -5.685, -7.351, 6.3e-06, 2),
-            hl_(508.20, 846590.909090909, 1.036, -1.294, 0.672, 0),
-            cp_(2334.71074380165, -3.04752066115702, 0.00488464187327824, 1.18629476584022e-05, 0, 0),
-            // NN: enthalpy, h_, is not used in the sprayModel.
-            // For consistency, the enthalpy is derived from hlat and hl.
-            // It is, however, convenient to have it available.
-            h_(2571201.780143, 2334.71074380165, -1.52376033057851, 0.00162821395775941, 2.96573691460055e-06, 0),
-            cpg_(828.512396694215, 2830.57851239669, 1250, 1234.50413223141, -524.4),
-            B_(0.00190599173553719, -1.70798898071625, -525826.446280992, 1.70282369146006e+17, -2.83298898071625e+20),
-            mu_(-14.918, 1023.4, 0.5961, 0, 0),
-            mug_(3.1005e-08, 0.9762, 23.139, 0),
-            K_(0.2502, -0.000298, 0, 0, 0, 0),
-            Kg_(-26.8, 0.9098, -126500000, 0),
-            sigma_(508.20, 0.0622, 1.124, 0, 0, 0),
-            D_(147.18, 20.1, 58.08, 28) // NN: Same as nHeptane
-        {}
+        C3H6O();
+
+        //- Construct from compoents
         C3H6O
         (
             const liquid& l,
@@ -123,124 +106,55 @@ public:
             const NSRDSfunc2& vapourThermalConductivity,
             const NSRDSfunc6& surfaceTension,
             const APIdiffCoefFunc& vapourDiffussivity
-        )
-        :
-            liquid(l),
-            rho_(density),
-            pv_(vapourPressure),
-            hl_(heatOfVapourisation),
-            cp_(heatCapacity),
-            h_(enthalpy),
-            cpg_(idealGasHeatCapacity),
-            B_(secondVirialCoeff),
-            mu_(dynamicViscosity),
-            mug_(vapourDynamicViscosity),
-            K_(thermalConductivity),
-            Kg_(vapourThermalConductivity),
-            sigma_(surfaceTension),
-            D_(vapourDiffussivity)
-        {}
+        );
 
         //- Construct from Istream
-        C3H6O(Istream& is)
-        :
-            liquid(is),
-            rho_(is),
-            pv_(is),
-            hl_(is),
-            cp_(is),
-            h_(is),
-            cpg_(is),
-            B_(is),
-            mu_(is),
-            mug_(is),
-            K_(is),
-            Kg_(is),
-            sigma_(is),
-            D_(is)
-        {}
+        C3H6O(Istream& is);
 
 
     // Member Functions
 
         //- Liquid density [kg/m^3]
-        scalar rho(scalar p, scalar T) const
-        {
-            return rho_.f(p, T);
-        }
+        inline scalar rho(scalar p, scalar T) const;
 
         //- Vapour pressure [Pa]
-        scalar pv(scalar p, scalar T) const
-        {
-            return pv_.f(p, T);
-        }
+        inline scalar pv(scalar p, scalar T) const;
 
         //- Heat of vapourisation [J/kg]
-        scalar hl(scalar p, scalar T) const
-        {
-            return hl_.f(p, T);
-        }
+        inline scalar hl(scalar p, scalar T) const;
 
         //- Liquid heat capacity [J/(kg K)]
-        scalar cp(scalar p, scalar T) const
-        {
-            return cp_.f(p, T);
-        }
+        inline scalar cp(scalar p, scalar T) const;
 
         //- Liquid Enthalpy [J/(kg)]
-        scalar h(scalar p, scalar T) const
-        {
-            return h_.f(p, T);
-        }
+        inline scalar h(scalar p, scalar T) const;
 
         //- Ideal gas heat capacity [J/(kg K)]
-        scalar cpg(scalar p, scalar T) const
-        {
-            return cpg_.f(p, T);
-        }
+        inline scalar cpg(scalar p, scalar T) const;
 
         //- Second Virial Coefficient [m^3/kg]
-        scalar B(scalar p, scalar T) const
-        {
-            return B_.f(p, T);
-        }
+        inline scalar B(scalar p, scalar T) const;
 
         //- Liquid viscosity [Pa s]
-        scalar mu(scalar p, scalar T) const
-        {
-            return mu_.f(p, T);
-        }
+        inline scalar mu(scalar p, scalar T) const;
 
         //- Vapour viscosity [Pa s]
-        scalar mug(scalar p, scalar T) const
-        {
-            return mug_.f(p, T);
-        }
+        inline scalar mug(scalar p, scalar T) const;
 
         //- Liquid thermal conductivity  [W/(m K)]
-        scalar K(scalar p, scalar T) const
-        {
-            return K_.f(p, T);
-        }
+        inline scalar K(scalar p, scalar T) const;
 
         //- Vapour thermal conductivity  [W/(m K)]
-        scalar Kg(scalar p, scalar T) const
-        {
-            return Kg_.f(p, T);
-        }
+        inline scalar Kg(scalar p, scalar T) const;
 
         //- Surface tension [N/m]
-        scalar sigma(scalar p, scalar T) const
-        {
-            return sigma_.f(p, T);
-        }
+        inline scalar sigma(scalar p, scalar T) const;
 
         //- Vapour diffussivity [m2/s]
-        scalar D(scalar p, scalar T) const
-        {
-            return D_.f(p, T);
-        }
+        inline scalar D(scalar p, scalar T) const;
+
 
+    // I-O
 
         //- Write the function coefficients
         void writeData(Ostream& os) const
@@ -260,8 +174,7 @@ public:
             D_.writeData(os); os << endl;
         }
 
-
-    // Ostream Operator
+        //- Ostream Operator
 
         friend Ostream& operator<<(Ostream& os, const C3H6O& l)
         {
@@ -277,6 +190,10 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+#include "C3H6OI.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 #endif
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/C3H6O/C3H6OI.H b/src/thermophysicalModels/liquids/C3H6O/C3H6OI.H
new file mode 100644
index 0000000000000000000000000000000000000000..a02afbde380980732218ea7374f4923ae9c28462
--- /dev/null
+++ b/src/thermophysicalModels/liquids/C3H6O/C3H6OI.H
@@ -0,0 +1,104 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+\*---------------------------------------------------------------------------*/
+
+inline Foam::scalar Foam::C3H6O::rho(scalar p, scalar T) const
+{
+    return rho_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C3H6O::pv(scalar p, scalar T) const
+{
+    return pv_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C3H6O::hl(scalar p, scalar T) const
+{
+    return hl_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C3H6O::cp(scalar p, scalar T) const
+{
+    return cp_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C3H6O::h(scalar p, scalar T) const
+{
+    return h_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C3H6O::cpg(scalar p, scalar T) const
+{
+    return cpg_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C3H6O::B(scalar p, scalar T) const
+{
+    return B_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C3H6O::mu(scalar p, scalar T) const
+{
+    return mu_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C3H6O::mug(scalar p, scalar T) const
+{
+    return mug_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C3H6O::K(scalar p, scalar T) const
+{
+    return K_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C3H6O::Kg(scalar p, scalar T) const
+{
+    return Kg_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C3H6O::sigma(scalar p, scalar T) const
+{
+    return sigma_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C3H6O::D(scalar p, scalar T) const
+{
+    return D_.f(p, T);
+}
+
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/C3H8/C3H8.C b/src/thermophysicalModels/liquids/C3H8/C3H8.C
index 6293a16b5205c07b965df9caad38dcd047993b89..936af6e463068826cba70eeb5258e07dc84bc4f8 100644
--- a/src/thermophysicalModels/liquids/C3H8/C3H8.C
+++ b/src/thermophysicalModels/liquids/C3H8/C3H8.C
@@ -27,19 +27,113 @@ License
 #include "C3H8.H"
 #include "addToRunTimeSelectionTable.H"
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 namespace Foam
 {
+    defineTypeNameAndDebug(C3H8, 0);
+    addToRunTimeSelectionTable(liquid, C3H8,);
+    addToRunTimeSelectionTable(liquid, C3H8, Istream);
+}
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+Foam::C3H8::C3H8()
+:
+    liquid
+    (
+        44.096,
+        369.83,
+        4.248e+6,
+        0.2, 0.276,
+        85.47,
+        1.685e-4,
+        231.11,
+        0.0,
+        0.1523,
+        1.31e+4
+    ),
+    rho_(60.6628672, 0.27453, 369.83, 0.29359),
+    pv_(59.078, -3492.6, -6.0669, 1.0919e-05, 2.0),
+    hl_(369.83, 662395.682148041, 0.78237, -0.77319, 0.39246, 0.0),
+    cp_
+    (
+        369.83,
+        9.48470319647089,
+        2576.87772133527,
+        95.3560311677331,
+       -131.535634282099
+    ),
+    h_(0.0, 0.0, 0.0, 0.0, 0.0, 0.0),
+    cpg_(1177.43105950653, 4364.34143686502, 1626.5, 2648.76632801161, 723.6),
+    B_
+    (
+        0.00255578737300435,
+       -2.24963715529753,
+       -102276.850507983,
+        7.00743831640058e+15,
+       -1.59878447024673e+18
+    ),
+    mu_(-6.9281, 420.76, -0.63276, -1.713e-26, 10.0),
+    mug_(2.4993e-07, 0.68612, 179.34, -8254.6),
+    K_(0.26755, -0.00066457, 2.774e-07, 0.0, 0.0, 0.0),
+    Kg_(-1.12, 0.10972, -9834.6, -7535800),
+    sigma_(369.83, 0.05092, 1.2197, 0.0, 0.0, 0.0),
+    D_(147.18, 20.1, 44.096, 28) // note: Same as nHeptane
+{}
+
+
+Foam::C3H8::C3H8
+(
+    const liquid& l,
+    const NSRDSfunc5& density,
+    const NSRDSfunc1& vapourPressure,
+    const NSRDSfunc6& heatOfVapourisation,
+    const NSRDSfunc14& heatCapacity,
+    const NSRDSfunc0& enthalpy,
+    const NSRDSfunc7& idealGasHeatCapacity,
+    const NSRDSfunc4& secondVirialCoeff,
+    const NSRDSfunc1& dynamicViscosity,
+    const NSRDSfunc2& vapourDynamicViscosity,
+    const NSRDSfunc0& thermalConductivity,
+    const NSRDSfunc2& vapourThermalConductivity,
+    const NSRDSfunc6& surfaceTension,
+    const APIdiffCoefFunc& vapourDiffussivity
+)
+:
+    liquid(l),
+    rho_(density),
+    pv_(vapourPressure),
+    hl_(heatOfVapourisation),
+    cp_(heatCapacity),
+    h_(enthalpy),
+    cpg_(idealGasHeatCapacity),
+    B_(secondVirialCoeff),
+    mu_(dynamicViscosity),
+    mug_(vapourDynamicViscosity),
+    K_(thermalConductivity),
+    Kg_(vapourThermalConductivity),
+    sigma_(surfaceTension),
+    D_(vapourDiffussivity)
+{}
 
-defineTypeNameAndDebug(C3H8, 0);
-addToRunTimeSelectionTable(liquid, C3H8,);
-addToRunTimeSelectionTable(liquid, C3H8, Istream);
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+Foam::C3H8::C3H8(Istream& is)
+:
+    liquid(is),
+    rho_(is),
+    pv_(is),
+    hl_(is),
+    cp_(is),
+    h_(is),
+    cpg_(is),
+    B_(is),
+    mu_(is),
+    mug_(is),
+    K_(is),
+    Kg_(is),
+    sigma_(is),
+    D_(is)
+{}
 
-} // End namespace Foam
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/C3H8/C3H8.H b/src/thermophysicalModels/liquids/C3H8/C3H8.H
index 878ea72ad1b1f49fc92762eb5c4c7a57221271f0..27477b01c67e73c72c0958e3dd007968004fbb2f 100644
--- a/src/thermophysicalModels/liquids/C3H8/C3H8.H
+++ b/src/thermophysicalModels/liquids/C3H8/C3H8.H
@@ -87,26 +87,9 @@ public:
     // Constructors
 
         //- Construct null
-        C3H8()
-        :
-            liquid(44.096, 369.83, 4.248e+6, 0.2, 0.276, 85.47, 1.685e-4, 231.11, 0.0, 0.1523, 1.31e+4),
-            rho_(60.6628672, 0.27453, 369.83, 0.29359),
-            pv_(59.078, -3492.6, -6.0669, 1.0919e-05, 2),
-            hl_(369.83, 662395.682148041, 0.78237, -0.77319, 0.39246, 0),
-            cp_(369.83, 9.48470319647089, 2576.87772133527, 95.3560311677331, -131.535634282099),
-            // NN: enthalpy, h_, is not used in the sprayModel.
-            // For consistency, the enthalpy is derived from hlat and hl.
-            // It is, however, convenient to have it available.
-            h_(0, 0, 0, 0, 0, 0),
-            cpg_(1177.43105950653, 4364.34143686502, 1626.5, 2648.76632801161, 723.6),
-            B_(0.00255578737300435, -2.24963715529753, -102276.850507983, 7.00743831640058e+15, -1.59878447024673e+18),
-            mu_(-6.9281, 420.76, -0.63276, -1.713e-26, 10),
-            mug_(2.4993e-07, 0.68612, 179.34, -8254.6),
-            K_(0.26755, -0.00066457, 2.774e-07, 0, 0, 0),
-            Kg_(-1.12, 0.10972, -9834.6, -7535800),
-            sigma_(369.83, 0.05092, 1.2197, 0, 0, 0),
-            D_(147.18, 20.1, 44.096, 28) // NN: Same as nHeptane
-        {}
+        C3H8();
+
+        //- Construct from components
         C3H8
         (
             const liquid& l,
@@ -123,125 +106,56 @@ public:
             const NSRDSfunc2& vapourThermalConductivity,
             const NSRDSfunc6& surfaceTension,
             const APIdiffCoefFunc& vapourDiffussivity
-        )
-        :
-            liquid(l),
-            rho_(density),
-            pv_(vapourPressure),
-            hl_(heatOfVapourisation),
-            cp_(heatCapacity),
-            h_(enthalpy),
-            cpg_(idealGasHeatCapacity),
-            B_(secondVirialCoeff),
-            mu_(dynamicViscosity),
-            mug_(vapourDynamicViscosity),
-            K_(thermalConductivity),
-            Kg_(vapourThermalConductivity),
-            sigma_(surfaceTension),
-            D_(vapourDiffussivity)
-        {}
+        );
 
         //- Construct from Istream
-        C3H8(Istream& is)
-        :
-            liquid(is),
-            rho_(is),
-            pv_(is),
-            hl_(is),
-            cp_(is),
-            h_(is),
-            cpg_(is),
-            B_(is),
-            mu_(is),
-            mug_(is),
-            K_(is),
-            Kg_(is),
-            sigma_(is),
-            D_(is)
-        {}
+        C3H8(Istream& is);
 
 
     // Member Functions
 
         //- Liquid density [kg/m^3]
-        scalar rho(scalar p, scalar T) const
-        {
-            return rho_.f(p, T);
-        }
+        inline scalar rho(scalar p, scalar T) const;
 
         //- Vapour pressure [Pa]
-        scalar pv(scalar p, scalar T) const
-        {
-            return pv_.f(p, T);
-        }
+        inline scalar pv(scalar p, scalar T) const;
 
         //- Heat of vapourisation [J/kg]
-        scalar hl(scalar p, scalar T) const
-        {
-            return hl_.f(p, T);
-        }
+        inline scalar hl(scalar p, scalar T) const;
 
         //- Liquid heat capacity [J/(kg K)]
-        scalar cp(scalar p, scalar T) const
-        {
-            return cp_.f(p, T);
-        }
+        inline scalar cp(scalar p, scalar T) const;
 
         //- Liquid Enthalpy [J/(kg)]
-        scalar h(scalar p, scalar T) const
-        {
-            return h_.f(p, T);
-        }
+        inline scalar h(scalar p, scalar T) const;
 
         //- Ideal gas heat capacity [J/(kg K)]
-        scalar cpg(scalar p, scalar T) const
-        {
-            return cpg_.f(p, T);
-        }
+        inline scalar cpg(scalar p, scalar T) const;
 
         //- Second Virial Coefficient [m^3/kg]
-        scalar B(scalar p, scalar T) const
-        {
-            return B_.f(p, T);
-        }
+        inline scalar B(scalar p, scalar T) const;
 
         //- Liquid viscosity [Pa s]
-        scalar mu(scalar p, scalar T) const
-        {
-            return mu_.f(p, T);
-        }
+        inline scalar mu(scalar p, scalar T) const;
 
         //- Vapour viscosity [Pa s]
-        scalar mug(scalar p, scalar T) const
-        {
-            return mug_.f(p, T);
-        }
+        inline scalar mug(scalar p, scalar T) const;
 
         //- Liquid thermal conductivity  [W/(m K)]
-        scalar K(scalar p, scalar T) const
-        {
-            return K_.f(p, T);
-        }
+        inline scalar K(scalar p, scalar T) const;
 
         //- Vapour thermal conductivity  [W/(m K)]
-        scalar Kg(scalar p, scalar T) const
-        {
-            return Kg_.f(p, T);
-        }
+        inline scalar Kg(scalar p, scalar T) const;
 
         //- Surface tension [N/m]
-        scalar sigma(scalar p, scalar T) const
-        {
-            return sigma_.f(p, T);
-        }
+        inline scalar sigma(scalar p, scalar T) const;
 
         //- Vapour diffussivity [m2/s]
-        scalar D(scalar p, scalar T) const
-        {
-            return D_.f(p, T);
-        }
+        inline scalar D(scalar p, scalar T) const;
 
 
+    // I-O
+
         //- Write the function coefficients
         void writeData(Ostream& os) const
         {
@@ -260,9 +174,7 @@ public:
             D_.writeData(os); os << endl;
         }
 
-
-    // Ostream Operator
-
+        //- Ostream Operator
         friend Ostream& operator<<(Ostream& os, const C3H8& l)
         {
             l.writeData(os);
@@ -277,6 +189,10 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+#include "C3H8I.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 #endif
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/C3H8/C3H8I.H b/src/thermophysicalModels/liquids/C3H8/C3H8I.H
new file mode 100644
index 0000000000000000000000000000000000000000..7ba1f47a74bc50d3a6370b59bcf1e93aafb90279
--- /dev/null
+++ b/src/thermophysicalModels/liquids/C3H8/C3H8I.H
@@ -0,0 +1,105 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+inline Foam::scalar Foam::C3H8::rho(scalar p, scalar T) const
+{
+    return rho_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C3H8::pv(scalar p, scalar T) const
+{
+    return pv_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C3H8::hl(scalar p, scalar T) const
+{
+    return hl_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C3H8::cp(scalar p, scalar T) const
+{
+    return cp_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C3H8::h(scalar p, scalar T) const
+{
+    return h_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C3H8::cpg(scalar p, scalar T) const
+{
+    return cpg_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C3H8::B(scalar p, scalar T) const
+{
+    return B_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C3H8::mu(scalar p, scalar T) const
+{
+    return mu_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C3H8::mug(scalar p, scalar T) const
+{
+    return mug_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C3H8::K(scalar p, scalar T) const
+{
+    return K_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C3H8::Kg(scalar p, scalar T) const
+{
+    return Kg_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C3H8::sigma(scalar p, scalar T) const
+{
+    return sigma_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C3H8::D(scalar p, scalar T) const
+{
+    return D_.f(p, T);
+}
+
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/C4H10O/C4H10O.C b/src/thermophysicalModels/liquids/C4H10O/C4H10O.C
index 330dbf21c296a03c8e879181f6eaf94a288b31de..83a7dd2aa693ca66f855519317cc00d2f21819ef 100644
--- a/src/thermophysicalModels/liquids/C4H10O/C4H10O.C
+++ b/src/thermophysicalModels/liquids/C4H10O/C4H10O.C
@@ -27,19 +27,124 @@ License
 #include "C4H10O.H"
 #include "addToRunTimeSelectionTable.H"
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 namespace Foam
 {
+    defineTypeNameAndDebug(C4H10O, 0);
+    addToRunTimeSelectionTable(liquid, C4H10O,);
+    addToRunTimeSelectionTable(liquid, C4H10O, Istream);
+}
 
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::C4H10O::C4H10O()
+:
+    liquid
+    (
+        74.123,
+        466.70,
+        3.6376e+6,
+        0.28,
+        0.262,
+        156.85,
+        4.0709e-1,
+        307.58,
+        3.836e-30,
+        0.2846,
+        1.5532e+4
+    ),
+    rho_(75.2793188, 0.27608, 466.7, 0.29358),
+    pv_(101.03, -6311.5, -12.27, 1.377e-05, 2),
+    hl_(466.70, 566355.921913576, 0.40717, 0, 0, 0),
+    cp_
+    (
+        599.004357621791,
+        17.5519069654493,
+       -0.0742009902459426,
+        0.00011822241409549,
+        0.0,
+        0.0
+    ),
+    h_
+    (
+       -4312350.92187216,
+        599.004357621791,
+        8.77595348272466,
+       -0.0247336634153142,
+        2.95556035238725e-05,
+        0.0
+    ),
+    cpg_(1163.06679438231, 3441.57683849817, 1541.3, 1938.66950878944, -688.9),
+    B_
+    (
+        0.00215992337061371,
+       -1.810504162001,
+       -276972.0599544,
+       -2.12349742994752e+17,
+        3.1016013922804e+19
+    ),
+    mu_(10.197, -63.8, -3.226, 0.0, 0.0),
+    mug_(1.948e-06, 0.41, 495.8, 0.0),
+    K_(0.249, -0.0004005, 0.0, 0.0, 0.0, 0.0),
+    Kg_(-0.0044894, 0.6155, -3266.3, 0.0),
+    sigma_(466.70, 0.057356, 1.288, 0.0, 0.0, 0.0),
+    D_(147.18, 20.1, 74.123, 28) // note: Same as nHeptane
+{}
+
+
+Foam::C4H10O::C4H10O
+(
+    const liquid& l,
+    const NSRDSfunc5& density,
+    const NSRDSfunc1& vapourPressure,
+    const NSRDSfunc6& heatOfVapourisation,
+    const NSRDSfunc0& heatCapacity,
+    const NSRDSfunc0& enthalpy,
+    const NSRDSfunc7& idealGasHeatCapacity,
+    const NSRDSfunc4& secondVirialCoeff,
+    const NSRDSfunc1& dynamicViscosity,
+    const NSRDSfunc2& vapourDynamicViscosity,
+    const NSRDSfunc0& thermalConductivity,
+    const NSRDSfunc2& vapourThermalConductivity,
+    const NSRDSfunc6& surfaceTension,
+    const APIdiffCoefFunc& vapourDiffussivity
+)
+:
+    liquid(l),
+    rho_(density),
+    pv_(vapourPressure),
+    hl_(heatOfVapourisation),
+    cp_(heatCapacity),
+    h_(enthalpy),
+    cpg_(idealGasHeatCapacity),
+    B_(secondVirialCoeff),
+    mu_(dynamicViscosity),
+    mug_(vapourDynamicViscosity),
+    K_(thermalConductivity),
+    Kg_(vapourThermalConductivity),
+    sigma_(surfaceTension),
+    D_(vapourDiffussivity)
+{}
 
-defineTypeNameAndDebug(C4H10O, 0);
-addToRunTimeSelectionTable(liquid, C4H10O,);
-addToRunTimeSelectionTable(liquid, C4H10O, Istream);
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+Foam::C4H10O::C4H10O(Istream& is)
+:
+    liquid(is),
+    rho_(is),
+    pv_(is),
+    hl_(is),
+    cp_(is),
+    h_(is),
+    cpg_(is),
+    B_(is),
+    mu_(is),
+    mug_(is),
+    K_(is),
+    Kg_(is),
+    sigma_(is),
+    D_(is)
+{}
 
-} // End namespace Foam
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/C4H10O/C4H10O.H b/src/thermophysicalModels/liquids/C4H10O/C4H10O.H
index 1c9257ea64081928b1c0af8c003cde8c68fc3ce0..b2da44684940020f18a07764986d19d399fd96dd 100644
--- a/src/thermophysicalModels/liquids/C4H10O/C4H10O.H
+++ b/src/thermophysicalModels/liquids/C4H10O/C4H10O.H
@@ -87,26 +87,9 @@ public:
     // Constructors
 
         //- Construct null
-        C4H10O()
-        :
-            liquid(74.123, 466.70, 3.6376e+6, 0.28, 0.262, 156.85, 4.0709e-1, 307.58, 3.836e-30, 0.2846, 1.5532e+4),
-            rho_(75.2793188, 0.27608, 466.7, 0.29358),
-            pv_(101.03, -6311.5, -12.27, 1.377e-05, 2),
-            hl_(466.70, 566355.921913576, 0.40717, 0, 0, 0),
-            cp_(599.004357621791, 17.5519069654493, -0.0742009902459426, 0.00011822241409549, 0, 0),
-            // NN: enthalpy, h_, is not used in the sprayModel.
-            // For consistency, the enthalpy is derived from hlat and hl.
-            // It is, however, convenient to have it available.
-            h_(-4312350.92187216, 599.004357621791, 8.77595348272466, -0.0247336634153142, 2.95556035238725e-05, 0),
-            cpg_(1163.06679438231, 3441.57683849817, 1541.3, 1938.66950878944, -688.9),
-            B_(0.00215992337061371, -1.810504162001, -276972.0599544, -2.12349742994752e+17, 3.1016013922804e+19),
-            mu_(10.197, -63.8, -3.226, 0, 0),
-            mug_(1.948e-06, 0.41, 495.8, 0),
-            K_(0.249, -0.0004005, 0, 0, 0, 0),
-            Kg_(-0.0044894, 0.6155, -3266.3, 0),
-            sigma_(466.70, 0.057356, 1.288, 0, 0, 0),
-            D_(147.18, 20.1, 74.123, 28) // NN: Same as nHeptane
-        {}
+        C4H10O();
+
+        //- Construct from components
         C4H10O
         (
             const liquid& l,
@@ -123,125 +106,56 @@ public:
             const NSRDSfunc2& vapourThermalConductivity,
             const NSRDSfunc6& surfaceTension,
             const APIdiffCoefFunc& vapourDiffussivity
-        )
-        :
-            liquid(l),
-            rho_(density),
-            pv_(vapourPressure),
-            hl_(heatOfVapourisation),
-            cp_(heatCapacity),
-            h_(enthalpy),
-            cpg_(idealGasHeatCapacity),
-            B_(secondVirialCoeff),
-            mu_(dynamicViscosity),
-            mug_(vapourDynamicViscosity),
-            K_(thermalConductivity),
-            Kg_(vapourThermalConductivity),
-            sigma_(surfaceTension),
-            D_(vapourDiffussivity)
-        {}
+        );
 
         //- Construct from Istream
-        C4H10O(Istream& is)
-        :
-            liquid(is),
-            rho_(is),
-            pv_(is),
-            hl_(is),
-            cp_(is),
-            h_(is),
-            cpg_(is),
-            B_(is),
-            mu_(is),
-            mug_(is),
-            K_(is),
-            Kg_(is),
-            sigma_(is),
-            D_(is)
-        {}
+        C4H10O(Istream& is);
 
 
     // Member Functions
 
         //- Liquid density [kg/m^3]
-        scalar rho(scalar p, scalar T) const
-        {
-            return rho_.f(p, T);
-        }
+        inline scalar rho(scalar p, scalar T) const;
 
         //- Vapour pressure [Pa]
-        scalar pv(scalar p, scalar T) const
-        {
-            return pv_.f(p, T);
-        }
+        inline scalar pv(scalar p, scalar T) const;
 
         //- Heat of vapourisation [J/kg]
-        scalar hl(scalar p, scalar T) const
-        {
-            return hl_.f(p, T);
-        }
+        inline scalar hl(scalar p, scalar T) const;
 
         //- Liquid heat capacity [J/(kg K)]
-        scalar cp(scalar p, scalar T) const
-        {
-            return cp_.f(p, T);
-        }
+        inline scalar cp(scalar p, scalar T) const;
 
         //- Liquid Enthalpy [J/(kg)]
-        scalar h(scalar p, scalar T) const
-        {
-            return h_.f(p, T);
-        }
+        inline scalar h(scalar p, scalar T) const;
 
         //- Ideal gas heat capacity [J/(kg K)]
-        scalar cpg(scalar p, scalar T) const
-        {
-            return cpg_.f(p, T);
-        }
+        inline scalar cpg(scalar p, scalar T) const;
 
         //- Second Virial Coefficient [m^3/kg]
-        scalar B(scalar p, scalar T) const
-        {
-            return B_.f(p, T);
-        }
+        inline scalar B(scalar p, scalar T) const;
 
         //- Liquid viscosity [Pa s]
-        scalar mu(scalar p, scalar T) const
-        {
-            return mu_.f(p, T);
-        }
+        inline scalar mu(scalar p, scalar T) const;
 
         //- Vapour viscosity [Pa s]
-        scalar mug(scalar p, scalar T) const
-        {
-            return mug_.f(p, T);
-        }
+        inline scalar mug(scalar p, scalar T) const;
 
         //- Liquid thermal conductivity  [W/(m K)]
-        scalar K(scalar p, scalar T) const
-        {
-            return K_.f(p, T);
-        }
+        inline scalar K(scalar p, scalar T) const;
 
         //- Vapour thermal conductivity  [W/(m K)]
-        scalar Kg(scalar p, scalar T) const
-        {
-            return Kg_.f(p, T);
-        }
+        inline scalar Kg(scalar p, scalar T) const;
 
         //- Surface tension [N/m]
-        scalar sigma(scalar p, scalar T) const
-        {
-            return sigma_.f(p, T);
-        }
+        inline scalar sigma(scalar p, scalar T) const;
 
         //- Vapour diffussivity [m2/s]
-        scalar D(scalar p, scalar T) const
-        {
-            return D_.f(p, T);
-        }
+        inline scalar D(scalar p, scalar T) const;
 
 
+    // I-O
+
         //- Write the function coefficients
         void writeData(Ostream& os) const
         {
@@ -260,9 +174,7 @@ public:
             D_.writeData(os); os << endl;
         }
 
-
-    // Ostream Operator
-
+        //- Ostream Operator
         friend Ostream& operator<<(Ostream& os, const C4H10O& l)
         {
             l.writeData(os);
@@ -277,6 +189,10 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+#include "C4H10OI.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 #endif
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/C4H10O/C4H10OI.H b/src/thermophysicalModels/liquids/C4H10O/C4H10OI.H
new file mode 100644
index 0000000000000000000000000000000000000000..bc067ebaffa5bf7d3cc2e5b4a6406a62c314ce19
--- /dev/null
+++ b/src/thermophysicalModels/liquids/C4H10O/C4H10OI.H
@@ -0,0 +1,105 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+inline Foam::scalar Foam::C4H10O::rho(scalar p, scalar T) const
+{
+    return rho_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C4H10O::pv(scalar p, scalar T) const
+{
+    return pv_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C4H10O::hl(scalar p, scalar T) const
+{
+    return hl_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C4H10O::cp(scalar p, scalar T) const
+{
+    return cp_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C4H10O::h(scalar p, scalar T) const
+{
+    return h_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C4H10O::cpg(scalar p, scalar T) const
+{
+    return cpg_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C4H10O::B(scalar p, scalar T) const
+{
+    return B_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C4H10O::mu(scalar p, scalar T) const
+{
+    return mu_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C4H10O::mug(scalar p, scalar T) const
+{
+    return mug_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C4H10O::K(scalar p, scalar T) const
+{
+    return K_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C4H10O::Kg(scalar p, scalar T) const
+{
+    return Kg_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C4H10O::sigma(scalar p, scalar T) const
+{
+    return sigma_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C4H10O::D(scalar p, scalar T) const
+{
+    return D_.f(p, T);
+}
+
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/C6H14/C6H14.C b/src/thermophysicalModels/liquids/C6H14/C6H14.C
index d78e28c0dfb45760ae91ae4a53490e3b9b0d7b6e..6e82c98871ac62c0973dfe9f416f0087caa34014 100644
--- a/src/thermophysicalModels/liquids/C6H14/C6H14.C
+++ b/src/thermophysicalModels/liquids/C6H14/C6H14.C
@@ -27,19 +27,124 @@ License
 #include "C6H14.H"
 #include "addToRunTimeSelectionTable.H"
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 namespace Foam
 {
+    defineTypeNameAndDebug(C6H14, 0);
+    addToRunTimeSelectionTable(liquid, C6H14,);
+    addToRunTimeSelectionTable(liquid, C6H14, Istream);
+}
 
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::C6H14::C6H14()
+:
+    liquid
+    (
+        86.177,
+        507.60,
+        3.025e+6,
+        0.371,
+        0.266,
+        177.83,
+        9.017e-1,
+        341.88,
+        0.0,
+        0.3013,
+        1.49e+4
+    ),
+    rho_(61.03399848, 0.26411, 507.6, 0.27537),
+    pv_(104.65, -6995.5, -12.702, 1.2381e-05, 2.0),
+    hl_(507.60, 527286.863084118, 0.39002, 0.0, 0.0, 0.0),
+    cp_
+    (
+        1997.28465831951,
+       -2.13258758137322,
+        0.0102964828202421,
+        0.0,
+        0.0,
+        0.0
+    ),
+    h_
+    (
+       -2902186.5403246,
+        1997.28465831951,
+       -1.06629379068661,
+        0.00343216094008069,
+        0.0,
+        0.0
+    ),
+    cpg_(1211.4601343746, 4088.0977523005, 1694.6, 2748.99335089409, 761.6),
+    B_
+    (
+        0.0022859927822969,
+       -2.32080485512376,
+       -430509.300625457,
+        1.93787205402834e+17,
+       -7.17128700233241e+19
+    ),
+    mu_(-20.715, 1207.5, 1.4993, 0.0, 0.0),
+    mug_(1.7514e-07, 0.70737, 157.14, 0.0),
+    K_(0.22492, -0.0003533, 0.0, 0.0, 0.0, 0.0),
+    Kg_(-650.5, 0.8053, -1412100000, 0.0),
+    sigma_(507.60, 0.055003, 1.2674, 0.0, 0.0, 0.0),
+    D_(147.18, 20.1, 86.177, 28) // note: Same as nHeptane
+{}
+
+
+Foam::C6H14::C6H14
+(
+    const liquid& l,
+    const NSRDSfunc5& density,
+    const NSRDSfunc1& vapourPressure,
+    const NSRDSfunc6& heatOfVapourisation,
+    const NSRDSfunc0& heatCapacity,
+    const NSRDSfunc0& enthalpy,
+    const NSRDSfunc7& idealGasHeatCapacity,
+    const NSRDSfunc4& secondVirialCoeff,
+    const NSRDSfunc1& dynamicViscosity,
+    const NSRDSfunc2& vapourDynamicViscosity,
+    const NSRDSfunc0& thermalConductivity,
+    const NSRDSfunc2& vapourThermalConductivity,
+    const NSRDSfunc6& surfaceTension,
+    const APIdiffCoefFunc& vapourDiffussivity
+)
+:
+    liquid(l),
+    rho_(density),
+    pv_(vapourPressure),
+    hl_(heatOfVapourisation),
+    cp_(heatCapacity),
+    h_(enthalpy),
+    cpg_(idealGasHeatCapacity),
+    B_(secondVirialCoeff),
+    mu_(dynamicViscosity),
+    mug_(vapourDynamicViscosity),
+    K_(thermalConductivity),
+    Kg_(vapourThermalConductivity),
+    sigma_(surfaceTension),
+    D_(vapourDiffussivity)
+{}
 
-defineTypeNameAndDebug(C6H14, 0);
-addToRunTimeSelectionTable(liquid, C6H14,);
-addToRunTimeSelectionTable(liquid, C6H14, Istream);
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+Foam::C6H14::C6H14(Istream& is)
+:
+    liquid(is),
+    rho_(is),
+    pv_(is),
+    hl_(is),
+    cp_(is),
+    h_(is),
+    cpg_(is),
+    B_(is),
+    mu_(is),
+    mug_(is),
+    K_(is),
+    Kg_(is),
+    sigma_(is),
+    D_(is)
+{}
 
-} // End namespace Foam
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/C6H14/C6H14.H b/src/thermophysicalModels/liquids/C6H14/C6H14.H
index 46f1c0766ca8db147c5e34156826d58971dfd7d6..919d68bfd68e5381c126e7fb250ae8348b23aa9a 100644
--- a/src/thermophysicalModels/liquids/C6H14/C6H14.H
+++ b/src/thermophysicalModels/liquids/C6H14/C6H14.H
@@ -87,26 +87,9 @@ public:
     // Constructors
 
         //- Construct null
-        C6H14()
-        :
-            liquid(86.177, 507.60, 3.025e+6, 0.371, 0.266, 177.83, 9.017e-1, 341.88, 0.0, 0.3013, 1.49e+4),
-            rho_(61.03399848, 0.26411, 507.6, 0.27537),
-            pv_(104.65, -6995.5, -12.702, 1.2381e-05, 2),
-            hl_(507.60, 527286.863084118, 0.39002, 0, 0, 0),
-            cp_(1997.28465831951, -2.13258758137322, 0.0102964828202421, 0, 0, 0),
-            // NN: enthalpy, h_, is not used in the sprayModel.
-            // For consistency, the enthalpy is derived from hlat and hl.
-            // It is, however, convenient to have it available.
-            h_(-2902186.5403246, 1997.28465831951, -1.06629379068661, 0.00343216094008069, 0, 0),
-            cpg_(1211.4601343746, 4088.0977523005, 1694.6, 2748.99335089409, 761.6),
-            B_(0.0022859927822969, -2.32080485512376, -430509.300625457, 1.93787205402834e+17, -7.17128700233241e+19),
-            mu_(-20.715, 1207.5, 1.4993, 0, 0),
-            mug_(1.7514e-07, 0.70737, 157.14, 0),
-            K_(0.22492, -0.0003533, 0, 0, 0, 0),
-            Kg_(-650.5, 0.8053, -1412100000, 0),
-            sigma_(507.60, 0.055003, 1.2674, 0, 0, 0),
-            D_(147.18, 20.1, 86.177, 28) // NN: Same as nHeptane
-        {}
+        C6H14();
+
+        //- Construct from components
         C6H14
         (
             const liquid& l,
@@ -123,125 +106,56 @@ public:
             const NSRDSfunc2& vapourThermalConductivity,
             const NSRDSfunc6& surfaceTension,
             const APIdiffCoefFunc& vapourDiffussivity
-        )
-        :
-            liquid(l),
-            rho_(density),
-            pv_(vapourPressure),
-            hl_(heatOfVapourisation),
-            cp_(heatCapacity),
-            h_(enthalpy),
-            cpg_(idealGasHeatCapacity),
-            B_(secondVirialCoeff),
-            mu_(dynamicViscosity),
-            mug_(vapourDynamicViscosity),
-            K_(thermalConductivity),
-            Kg_(vapourThermalConductivity),
-            sigma_(surfaceTension),
-            D_(vapourDiffussivity)
-        {}
+        );
 
         //- Construct from Istream
-        C6H14(Istream& is)
-        :
-            liquid(is),
-            rho_(is),
-            pv_(is),
-            hl_(is),
-            cp_(is),
-            h_(is),
-            cpg_(is),
-            B_(is),
-            mu_(is),
-            mug_(is),
-            K_(is),
-            Kg_(is),
-            sigma_(is),
-            D_(is)
-        {}
+        C6H14(Istream& is);
 
 
     // Member Functions
 
         //- Liquid density [kg/m^3]
-        scalar rho(scalar p, scalar T) const
-        {
-            return rho_.f(p, T);
-        }
+        inline scalar rho(scalar p, scalar T) const;
 
         //- Vapour pressure [Pa]
-        scalar pv(scalar p, scalar T) const
-        {
-            return pv_.f(p, T);
-        }
+        inline scalar pv(scalar p, scalar T) const;
 
         //- Heat of vapourisation [J/kg]
-        scalar hl(scalar p, scalar T) const
-        {
-            return hl_.f(p, T);
-        }
+        inline scalar hl(scalar p, scalar T) const;
 
         //- Liquid heat capacity [J/(kg K)]
-        scalar cp(scalar p, scalar T) const
-        {
-            return cp_.f(p, T);
-        }
+        inline scalar cp(scalar p, scalar T) const;
 
         //- Liquid Enthalpy [J/(kg)]
-        scalar h(scalar p, scalar T) const
-        {
-            return h_.f(p, T);
-        }
+        inline scalar h(scalar p, scalar T) const;
 
         //- Ideal gas heat capacity [J/(kg K)]
-        scalar cpg(scalar p, scalar T) const
-        {
-            return cpg_.f(p, T);
-        }
+        inline scalar cpg(scalar p, scalar T) const;
 
         //- Second Virial Coefficient [m^3/kg]
-        scalar B(scalar p, scalar T) const
-        {
-            return B_.f(p, T);
-        }
+        inline scalar B(scalar p, scalar T) const;
 
         //- Liquid viscosity [Pa s]
-        scalar mu(scalar p, scalar T) const
-        {
-            return mu_.f(p, T);
-        }
+        inline scalar mu(scalar p, scalar T) const;
 
         //- Vapour viscosity [Pa s]
-        scalar mug(scalar p, scalar T) const
-        {
-            return mug_.f(p, T);
-        }
+        inline scalar mug(scalar p, scalar T) const;
 
         //- Liquid thermal conductivity  [W/(m K)]
-        scalar K(scalar p, scalar T) const
-        {
-            return K_.f(p, T);
-        }
+        inline scalar K(scalar p, scalar T) const;
 
         //- Vapour thermal conductivity  [W/(m K)]
-        scalar Kg(scalar p, scalar T) const
-        {
-            return Kg_.f(p, T);
-        }
+        inline scalar Kg(scalar p, scalar T) const;
 
         //- Surface tension [N/m]
-        scalar sigma(scalar p, scalar T) const
-        {
-            return sigma_.f(p, T);
-        }
+        inline scalar sigma(scalar p, scalar T) const;
 
         //- Vapour diffussivity [m2/s]
-        scalar D(scalar p, scalar T) const
-        {
-            return D_.f(p, T);
-        }
+        inline scalar D(scalar p, scalar T) const;
 
 
+    // I-O
+
         //- Write the function coefficients
         void writeData(Ostream& os) const
         {
@@ -260,9 +174,7 @@ public:
             D_.writeData(os); os << endl;
         }
 
-
-    // Ostream Operator
-
+        //- Ostream Operator
         friend Ostream& operator<<(Ostream& os, const C6H14& l)
         {
             l.writeData(os);
@@ -277,6 +189,10 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+#include "C6H14I.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 #endif
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/C6H14/C6H14I.H b/src/thermophysicalModels/liquids/C6H14/C6H14I.H
new file mode 100644
index 0000000000000000000000000000000000000000..144648c0a71c2d091f0635e1800a8e2129569857
--- /dev/null
+++ b/src/thermophysicalModels/liquids/C6H14/C6H14I.H
@@ -0,0 +1,105 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+inline Foam::scalar Foam::C6H14::rho(scalar p, scalar T) const
+{
+    return rho_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C6H14::pv(scalar p, scalar T) const
+{
+    return pv_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C6H14::hl(scalar p, scalar T) const
+{
+    return hl_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C6H14::cp(scalar p, scalar T) const
+{
+    return cp_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C6H14::h(scalar p, scalar T) const
+{
+    return h_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C6H14::cpg(scalar p, scalar T) const
+{
+    return cpg_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C6H14::B(scalar p, scalar T) const
+{
+    return B_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C6H14::mu(scalar p, scalar T) const
+{
+    return mu_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C6H14::mug(scalar p, scalar T) const
+{
+    return mug_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C6H14::K(scalar p, scalar T) const
+{
+    return K_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C6H14::Kg(scalar p, scalar T) const
+{
+    return Kg_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C6H14::sigma(scalar p, scalar T) const
+{
+    return sigma_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C6H14::D(scalar p, scalar T) const
+{
+    return D_.f(p, T);
+}
+
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/C6H6/C6H6.C b/src/thermophysicalModels/liquids/C6H6/C6H6.C
index 3e17819e6ad2204649c453122e257154e6f79b46..4b3abbd24d0bce010596f09bd4960078e96de0ba 100644
--- a/src/thermophysicalModels/liquids/C6H6/C6H6.C
+++ b/src/thermophysicalModels/liquids/C6H6/C6H6.C
@@ -27,19 +27,124 @@ License
 #include "C6H6.H"
 #include "addToRunTimeSelectionTable.H"
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 namespace Foam
 {
+    defineTypeNameAndDebug(C6H6, 0);
+    addToRunTimeSelectionTable(liquid, C6H6,);
+    addToRunTimeSelectionTable(liquid, C6H6, Istream);
+}
 
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::C6H6::C6H6()
+:
+    liquid
+    (
+        78.114,
+        562.16,
+        4.898e+6,
+        0.25894,
+        0.271,
+        278.68,
+        4.7961e+3,
+        353.24,
+        0.0,
+        0.2108,
+        1.8706e+4
+    ),
+    rho_(80.5511568, 0.2667, 562.16, 0.2818),
+    pv_(78.05, -6275.5, -8.4443, 6.26e-06, 2),
+    hl_(562.16, 649435.440510024, 0.7616, -0.5052, 0.1564, 0),
+    cp_
+    (
+        1386.69124612745,
+       -0.416058581048212,
+        0.00542796425736744,
+        0.0,
+        0.0,
+        0.0
+    ),
+    h_
+    (
+        186141.395065592,
+        1386.69124612745,
+       -0.208029290524106,
+        0.00180932141912248,
+        0.0,
+        0.0
+    ),
+    cpg_(568.656066774202, 2970.65826868423, 1494.6, 2203.57426325627, -678.15),
+    B_
+    (
+        0.00184089919860716,
+       -2.30176408838364,
+       -309176.332027549,
+       -5.12072099751645e+15,
+       -2.90216862534245e+19
+    ),
+    mu_(6.764, 336.4, -2.687, 0.0, 0.0),
+    mug_(3.134e-08, 0.9676, 7.9, 0.0),
+    K_(0.2407, -0.0003202, 0.0, 0.0, 0.0, 0.0),
+    Kg_(1.652e-05, 1.3117, 491, 0.0),
+    sigma_(562.16, 0.07195, 1.2389, 0.0, 0.0, 0.0),
+    D_(147.18, 20.1, 78.114, 28) // note: Same as nHeptane
+{}
+
+
+Foam::C6H6::C6H6
+(
+    const liquid& l,
+    const NSRDSfunc5& density,
+    const NSRDSfunc1& vapourPressure,
+    const NSRDSfunc6& heatOfVapourisation,
+    const NSRDSfunc0& heatCapacity,
+    const NSRDSfunc0& enthalpy,
+    const NSRDSfunc7& idealGasHeatCapacity,
+    const NSRDSfunc4& secondVirialCoeff,
+    const NSRDSfunc1& dynamicViscosity,
+    const NSRDSfunc2& vapourDynamicViscosity,
+    const NSRDSfunc0& thermalConductivity,
+    const NSRDSfunc2& vapourThermalConductivity,
+    const NSRDSfunc6& surfaceTension,
+    const APIdiffCoefFunc& vapourDiffussivity
+)
+:
+    liquid(l),
+    rho_(density),
+    pv_(vapourPressure),
+    hl_(heatOfVapourisation),
+    cp_(heatCapacity),
+    h_(enthalpy),
+    cpg_(idealGasHeatCapacity),
+    B_(secondVirialCoeff),
+    mu_(dynamicViscosity),
+    mug_(vapourDynamicViscosity),
+    K_(thermalConductivity),
+    Kg_(vapourThermalConductivity),
+    sigma_(surfaceTension),
+    D_(vapourDiffussivity)
+{}
 
-defineTypeNameAndDebug(C6H6, 0);
-addToRunTimeSelectionTable(liquid, C6H6,);
-addToRunTimeSelectionTable(liquid, C6H6, Istream);
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+Foam::C6H6::C6H6(Istream& is)
+:
+    liquid(is),
+    rho_(is),
+    pv_(is),
+    hl_(is),
+    cp_(is),
+    h_(is),
+    cpg_(is),
+    B_(is),
+    mu_(is),
+    mug_(is),
+    K_(is),
+    Kg_(is),
+    sigma_(is),
+    D_(is)
+{}
 
-} // End namespace Foam
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/C6H6/C6H6.H b/src/thermophysicalModels/liquids/C6H6/C6H6.H
index 58b04a293946f7c4def35c2a74721c83abd95e71..cc9c5ac1f100fbcf7760351d49e022a651ca3e46 100644
--- a/src/thermophysicalModels/liquids/C6H6/C6H6.H
+++ b/src/thermophysicalModels/liquids/C6H6/C6H6.H
@@ -87,26 +87,9 @@ public:
     // Constructors
 
         //- Construct null
-        C6H6()
-        :
-            liquid(78.114, 562.16, 4.898e+6, 0.25894, 0.271, 278.68, 4.7961e+3, 353.24, 0.0, 0.2108, 1.8706e+4),
-            rho_(80.5511568, 0.2667, 562.16, 0.2818),
-            pv_(78.05, -6275.5, -8.4443, 6.26e-06, 2),
-            hl_(562.16, 649435.440510024, 0.7616, -0.5052, 0.1564, 0),
-            cp_(1386.69124612745, -0.416058581048212, 0.00542796425736744, 0, 0, 0),
-            // NN: enthalpy, h_, is not used in the sprayModel.
-            // For consistency, the enthalpy is derived from hlat and hl.
-            // It is, however, convenient to have it available.
-            h_(186141.395065592, 1386.69124612745, -0.208029290524106, 0.00180932141912248, 0, 0),
-            cpg_(568.656066774202, 2970.65826868423, 1494.6, 2203.57426325627, -678.15),
-            B_(0.00184089919860716, -2.30176408838364, -309176.332027549, -5.12072099751645e+15, -2.90216862534245e+19),
-            mu_(6.764, 336.4, -2.687, 0, 0),
-            mug_(3.134e-08, 0.9676, 7.9, 0),
-            K_(0.2407, -0.0003202, 0, 0, 0, 0),
-            Kg_(1.652e-05, 1.3117, 491, 0),
-            sigma_(562.16, 0.07195, 1.2389, 0, 0, 0),
-            D_(147.18, 20.1, 78.114, 28) // NN: Same as nHeptane
-        {}
+        C6H6();
+
+        //- Comstruct from components
         C6H6
         (
             const liquid& l,
@@ -123,125 +106,56 @@ public:
             const NSRDSfunc2& vapourThermalConductivity,
             const NSRDSfunc6& surfaceTension,
             const APIdiffCoefFunc& vapourDiffussivity
-        )
-        :
-            liquid(l),
-            rho_(density),
-            pv_(vapourPressure),
-            hl_(heatOfVapourisation),
-            cp_(heatCapacity),
-            h_(enthalpy),
-            cpg_(idealGasHeatCapacity),
-            B_(secondVirialCoeff),
-            mu_(dynamicViscosity),
-            mug_(vapourDynamicViscosity),
-            K_(thermalConductivity),
-            Kg_(vapourThermalConductivity),
-            sigma_(surfaceTension),
-            D_(vapourDiffussivity)
-        {}
+        );
 
         //- Construct from Istream
-        C6H6(Istream& is)
-        :
-            liquid(is),
-            rho_(is),
-            pv_(is),
-            hl_(is),
-            cp_(is),
-            h_(is),
-            cpg_(is),
-            B_(is),
-            mu_(is),
-            mug_(is),
-            K_(is),
-            Kg_(is),
-            sigma_(is),
-            D_(is)
-        {}
+        C6H6(Istream& is);
 
 
     // Member Functions
 
         //- Liquid density [kg/m^3]
-        scalar rho(scalar p, scalar T) const
-        {
-            return rho_.f(p, T);
-        }
+        inline scalar rho(scalar p, scalar T) const;
 
         //- Vapour pressure [Pa]
-        scalar pv(scalar p, scalar T) const
-        {
-            return pv_.f(p, T);
-        }
+        inline scalar pv(scalar p, scalar T) const;
 
         //- Heat of vapourisation [J/kg]
-        scalar hl(scalar p, scalar T) const
-        {
-            return hl_.f(p, T);
-        }
+        inline scalar hl(scalar p, scalar T) const;
 
         //- Liquid heat capacity [J/(kg K)]
-        scalar cp(scalar p, scalar T) const
-        {
-            return cp_.f(p, T);
-        }
+        inline scalar cp(scalar p, scalar T) const;
 
         //- Liquid Enthalpy [J/(kg)]
-        scalar h(scalar p, scalar T) const
-        {
-            return h_.f(p, T);
-        }
+        inline scalar h(scalar p, scalar T) const;
 
         //- Ideal gas heat capacity [J/(kg K)]
-        scalar cpg(scalar p, scalar T) const
-        {
-            return cpg_.f(p, T);
-        }
+        inline scalar cpg(scalar p, scalar T) const;
 
         //- Second Virial Coefficient [m^3/kg]
-        scalar B(scalar p, scalar T) const
-        {
-            return B_.f(p, T);
-        }
+        inline scalar B(scalar p, scalar T) const;
 
         //- Liquid viscosity [Pa s]
-        scalar mu(scalar p, scalar T) const
-        {
-            return mu_.f(p, T);
-        }
+        inline scalar mu(scalar p, scalar T) const;
 
         //- Vapour viscosity [Pa s]
-        scalar mug(scalar p, scalar T) const
-        {
-            return mug_.f(p, T);
-        }
+        inline scalar mug(scalar p, scalar T) const;
 
-        //- Liquid thermal conductivity  [W/(m K)]
-        scalar K(scalar p, scalar T) const
-        {
-            return K_.f(p, T);
-        }
+        //- Liquid thermal conductivity [W/(m K)]
+        inline scalar K(scalar p, scalar T) const;
 
-        //- Vapour thermal conductivity  [W/(m K)]
-        scalar Kg(scalar p, scalar T) const
-        {
-            return Kg_.f(p, T);
-        }
+        //- Vapour thermal conductivity [W/(m K)]
+        inline scalar Kg(scalar p, scalar T) const;
 
         //- Surface tension [N/m]
-        scalar sigma(scalar p, scalar T) const
-        {
-            return sigma_.f(p, T);
-        }
+        inline scalar sigma(scalar p, scalar T) const;
 
         //- Vapour diffussivity [m2/s]
-        scalar D(scalar p, scalar T) const
-        {
-            return D_.f(p, T);
-        }
+        inline scalar D(scalar p, scalar T) const;
 
 
+    // I-O
+
         //- Write the function coefficients
         void writeData(Ostream& os) const
         {
@@ -260,9 +174,7 @@ public:
             D_.writeData(os); os << endl;
         }
 
-
-    // Ostream Operator
-
+        //- Ostream Operator
         friend Ostream& operator<<(Ostream& os, const C6H6& l)
         {
             l.writeData(os);
@@ -277,6 +189,10 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+#include "C6H6I.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 #endif
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/C6H6/C6H6I.H b/src/thermophysicalModels/liquids/C6H6/C6H6I.H
new file mode 100644
index 0000000000000000000000000000000000000000..3aca0ee525af1a8bc688967efa34596ad0fa4914
--- /dev/null
+++ b/src/thermophysicalModels/liquids/C6H6/C6H6I.H
@@ -0,0 +1,105 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+inline Foam::scalar Foam::C6H6::rho(scalar p, scalar T) const
+{
+    return rho_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C6H6::pv(scalar p, scalar T) const
+{
+    return pv_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C6H6::hl(scalar p, scalar T) const
+{
+    return hl_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C6H6::cp(scalar p, scalar T) const
+{
+    return cp_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C6H6::h(scalar p, scalar T) const
+{
+    return h_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C6H6::cpg(scalar p, scalar T) const
+{
+    return cpg_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C6H6::B(scalar p, scalar T) const
+{
+    return B_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C6H6::mu(scalar p, scalar T) const
+{
+    return mu_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C6H6::mug(scalar p, scalar T) const
+{
+    return mug_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C6H6::K(scalar p, scalar T) const
+{
+    return K_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C6H6::Kg(scalar p, scalar T) const
+{
+    return Kg_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C6H6::sigma(scalar p, scalar T) const
+{
+    return sigma_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C6H6::D(scalar p, scalar T) const
+{
+    return D_.f(p, T);
+}
+
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/C7H16/C7H16.C b/src/thermophysicalModels/liquids/C7H16/C7H16.C
index 0cc7e69f0ab412c63440f9e4412d00155ae8c85f..846671927b899f9d641a205856cfa24f11423c23 100644
--- a/src/thermophysicalModels/liquids/C7H16/C7H16.C
+++ b/src/thermophysicalModels/liquids/C7H16/C7H16.C
@@ -27,19 +27,115 @@ License
 #include "C7H16.H"
 #include "addToRunTimeSelectionTable.H"
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 namespace Foam
 {
+    defineTypeNameAndDebug(C7H16, 0);
+    addToRunTimeSelectionTable(liquid, C7H16,);
+    addToRunTimeSelectionTable(liquid, C7H16, Istream);
+}
 
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::C7H16::C7H16()
+:
+    liquid
+    (
+        100.204,
+        540.20,
+        2.74e+6,
+        0.428,
+        0.261,
+        182.57,
+        1.8269e-1,
+        371.58,
+        0.0,
+        0.3495,
+        1.52e+4
+    ),
+    rho_(61.38396836, 0.26211, 540.2, 0.28141),
+    pv_(87.829, -6996.4, -9.8802, 7.2099e-06, 2.0),
+    hl_(540.20, 499121.791545248, 0.38795, 0.0, 0.0, 0.0),
+    cp_
+    (
+        540.20,
+        6.11976102401216,
+        3137.69909384855,
+        182.274175063868,
+       -254.530511150515
+    ),
+    h_(-3.1469964e+6,7.3072e+3,-3.52884e+1,1.10637e-1,-1.634831e-4,9.64941e-8),
+    cpg_(1199.05392998284, 3992.85457666361, 1676.6, 2734.42177956968, 756.4),
+    B_
+    (
+        0.00274040956448844,
+       -2.90407568560137,
+       -440900.562851782,
+       -8.78208454752305e+17,
+        1.28238393676899e+20
+    ),
+    mu_(-24.451, 1533.1, 2.0087, 0.0, 0.0),
+    mug_(6.672e-08, 0.82837, 85.752, 0.0),
+    K_(0.215, -0.000303, 0.0, 0.0, 0.0, 0.0),
+    Kg_(-0.070028, 0.38068, -7049.9, -2400500.0),
+    sigma_(540.20, 0.054143, 1.2512, 0.0, 0.0, 0.0),
+    D_(147.18, 20.1, 100.204, 28.0) // note: Same as C7H16
+{}
+
+
+Foam::C7H16::C7H16
+(
+    const liquid& l,
+    const NSRDSfunc5& density,
+    const NSRDSfunc1& vapourPressure,
+    const NSRDSfunc6& heatOfVapourisation,
+    const NSRDSfunc14& heatCapacity,
+    const NSRDSfunc0& enthalpy,
+    const NSRDSfunc7& idealGasHeatCapacity,
+    const NSRDSfunc4& secondVirialCoeff,
+    const NSRDSfunc1& dynamicViscosity,
+    const NSRDSfunc2& vapourDynamicViscosity,
+    const NSRDSfunc0& thermalConductivity,
+    const NSRDSfunc2& vapourThermalConductivity,
+    const NSRDSfunc6& surfaceTension,
+    const APIdiffCoefFunc& vapourDiffussivity
+)
+:
+    liquid(l),
+    rho_(density),
+    pv_(vapourPressure),
+    hl_(heatOfVapourisation),
+    cp_(heatCapacity),
+    h_(enthalpy),
+    cpg_(idealGasHeatCapacity),
+    B_(secondVirialCoeff),
+    mu_(dynamicViscosity),
+    mug_(vapourDynamicViscosity),
+    K_(thermalConductivity),
+    Kg_(vapourThermalConductivity),
+    sigma_(surfaceTension),
+    D_(vapourDiffussivity)
+{}
 
-defineTypeNameAndDebug(C7H16, 0);
-addToRunTimeSelectionTable(liquid, C7H16,);
-addToRunTimeSelectionTable(liquid, C7H16, Istream);
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+Foam::C7H16::C7H16(Istream& is)
+:
+    liquid(is),
+    rho_(is),
+    pv_(is),
+    hl_(is),
+    cp_(is),
+    h_(is),
+    cpg_(is),
+    B_(is),
+    mu_(is),
+    mug_(is),
+    K_(is),
+    Kg_(is),
+    sigma_(is),
+    D_(is)
+{}
 
-} // End namespace Foam
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/C7H16/C7H16.H b/src/thermophysicalModels/liquids/C7H16/C7H16.H
index 64264aebfba0246ca129b915c1d37c50396f4c38..617cffb04b39d36f12b19fbbcdf430ccec09edaa 100644
--- a/src/thermophysicalModels/liquids/C7H16/C7H16.H
+++ b/src/thermophysicalModels/liquids/C7H16/C7H16.H
@@ -87,26 +87,9 @@ public:
     // Constructors
 
         //- Construct null
-        C7H16()
-        :
-            liquid(100.204, 540.20, 2.74e+6, 0.428, 0.261, 182.57, 1.8269e-1, 371.58, 0, 0.3495, 1.52e+4),
-            rho_(61.38396836, 0.26211, 540.2, 0.28141),
-            pv_(87.829, -6996.4, -9.8802, 7.2099e-06, 2),
-            hl_(540.20, 499121.791545248, 0.38795, 0, 0, 0),
-            cp_(540.20, 6.11976102401216, 3137.69909384855, 182.274175063868, -254.530511150515),
-            // NN: enthalpy, h_, is not used in the sprayModel.
-            // For consistency, the enthalpy is derived from hlat and hl.
-            // It is, however, convenient to have it available.
-            h_(-3.1469964e+6,7.3072e+3,-3.52884e+1,1.10637e-1,-1.634831e-4,9.64941e-8),
-            cpg_(1199.05392998284, 3992.85457666361, 1676.6, 2734.42177956968, 756.4),
-            B_(0.00274040956448844, -2.90407568560137, -440900.562851782, -8.78208454752305e+17, 1.28238393676899e+20),
-            mu_(-24.451, 1533.1, 2.0087, 0, 0),
-            mug_(6.672e-08, 0.82837, 85.752, 0),
-            K_(0.215, -0.000303, 0, 0, 0, 0),
-            Kg_(-0.070028, 0.38068, -7049.9, -2400500),
-            sigma_(540.20, 0.054143, 1.2512, 0, 0, 0),
-            D_(147.18, 20.1, 100.204, 28) // NN: Same as C7H16
-        {}
+        C7H16();
+
+        //- Construct from components
         C7H16
         (
             const liquid& l,
@@ -123,125 +106,56 @@ public:
             const NSRDSfunc2& vapourThermalConductivity,
             const NSRDSfunc6& surfaceTension,
             const APIdiffCoefFunc& vapourDiffussivity
-        )
-        :
-            liquid(l),
-            rho_(density),
-            pv_(vapourPressure),
-            hl_(heatOfVapourisation),
-            cp_(heatCapacity),
-            h_(enthalpy),
-            cpg_(idealGasHeatCapacity),
-            B_(secondVirialCoeff),
-            mu_(dynamicViscosity),
-            mug_(vapourDynamicViscosity),
-            K_(thermalConductivity),
-            Kg_(vapourThermalConductivity),
-            sigma_(surfaceTension),
-            D_(vapourDiffussivity)
-        {}
+        );
 
         //- Construct from Istream
-        C7H16(Istream& is)
-        :
-            liquid(is),
-            rho_(is),
-            pv_(is),
-            hl_(is),
-            cp_(is),
-            h_(is),
-            cpg_(is),
-            B_(is),
-            mu_(is),
-            mug_(is),
-            K_(is),
-            Kg_(is),
-            sigma_(is),
-            D_(is)
-        {}
+        C7H16(Istream& is);
 
 
     // Member Functions
 
         //- Liquid density [kg/m^3]
-        scalar rho(scalar p, scalar T) const
-        {
-            return rho_.f(p, T);
-        }
+        inline scalar rho(scalar p, scalar T) const;
 
         //- Vapour pressure [Pa]
-        scalar pv(scalar p, scalar T) const
-        {
-            return pv_.f(p, T);
-        }
+        inline scalar pv(scalar p, scalar T) const;
 
         //- Heat of vapourisation [J/kg]
-        scalar hl(scalar p, scalar T) const
-        {
-            return hl_.f(p, T);
-        }
+        inline scalar hl(scalar p, scalar T) const;
 
         //- Liquid heat capacity [J/(kg K)]
-        scalar cp(scalar p, scalar T) const
-        {
-            return cp_.f(p, T);
-        }
+        inline scalar cp(scalar p, scalar T) const;
 
         //- Liquid Enthalpy [J/(kg)]
-        scalar h(scalar p, scalar T) const
-        {
-            return h_.f(p, T);
-        }
+        inline scalar h(scalar p, scalar T) const;
 
         //- Ideal gas heat capacity [J/(kg K)]
-        scalar cpg(scalar p, scalar T) const
-        {
-            return cpg_.f(p, T);
-        }
+        inline scalar cpg(scalar p, scalar T) const;
 
         //- Second Virial Coefficient [m^3/kg]
-        scalar B(scalar p, scalar T) const
-        {
-            return B_.f(p, T);
-        }
+        inline scalar B(scalar p, scalar T) const;
 
         //- Liquid viscosity [Pa s]
-        scalar mu(scalar p, scalar T) const
-        {
-            return mu_.f(p, T);
-        }
+        inline scalar mu(scalar p, scalar T) const;
 
         //- Vapour viscosity [Pa s]
-        scalar mug(scalar p, scalar T) const
-        {
-            return mug_.f(p, T);
-        }
+        inline scalar mug(scalar p, scalar T) const;
 
         //- Liquid thermal conductivity  [W/(m K)]
-        scalar K(scalar p, scalar T) const
-        {
-            return K_.f(p, T);
-        }
+        inline scalar K(scalar p, scalar T) const;
 
         //- Vapour thermal conductivity  [W/(m K)]
-        scalar Kg(scalar p, scalar T) const
-        {
-            return Kg_.f(p, T);
-        }
+        inline scalar Kg(scalar p, scalar T) const;
 
         //- Surface tension [N/m]
-        scalar sigma(scalar p, scalar T) const
-        {
-            return sigma_.f(p, T);
-        }
+        inline scalar sigma(scalar p, scalar T) const;
 
         //- Vapour diffussivity [m2/s]
-        scalar D(scalar p, scalar T) const
-        {
-            return D_.f(p, T);
-        }
+        inline scalar D(scalar p, scalar T) const;
 
 
+    // I-O
+
         //- Write the function coefficients
         void writeData(Ostream& os) const
         {
@@ -260,9 +174,7 @@ public:
             D_.writeData(os); os << endl;
         }
 
-
-    // Ostream Operator
-
+        //- Ostream Operator
         friend Ostream& operator<<(Ostream& os, const C7H16& l)
         {
             l.writeData(os);
@@ -277,6 +189,10 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+#include "C7H16I.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 #endif
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/C7H16/C7H16I.H b/src/thermophysicalModels/liquids/C7H16/C7H16I.H
new file mode 100644
index 0000000000000000000000000000000000000000..27eb0761e148398225f7b796263e7043f975c6ab
--- /dev/null
+++ b/src/thermophysicalModels/liquids/C7H16/C7H16I.H
@@ -0,0 +1,105 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+inline Foam::scalar Foam::C7H16::rho(scalar p, scalar T) const
+{
+    return rho_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C7H16::pv(scalar p, scalar T) const
+{
+    return pv_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C7H16::hl(scalar p, scalar T) const
+{
+    return hl_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C7H16::cp(scalar p, scalar T) const
+{
+    return cp_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C7H16::h(scalar p, scalar T) const
+{
+    return h_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C7H16::cpg(scalar p, scalar T) const
+{
+    return cpg_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C7H16::B(scalar p, scalar T) const
+{
+    return B_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C7H16::mu(scalar p, scalar T) const
+{
+    return mu_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C7H16::mug(scalar p, scalar T) const
+{
+    return mug_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C7H16::K(scalar p, scalar T) const
+{
+    return K_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C7H16::Kg(scalar p, scalar T) const
+{
+    return Kg_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C7H16::sigma(scalar p, scalar T) const
+{
+    return sigma_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C7H16::D(scalar p, scalar T) const
+{
+    return D_.f(p, T);
+}
+
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/C7H8/C7H8.C b/src/thermophysicalModels/liquids/C7H8/C7H8.C
index cfa8bda4b7a93d5bcbeb3bdf1dc268d22eb5cff2..9d58afe0143c7c6ab8b3d2a82e979dd66b7ac3c7 100644
--- a/src/thermophysicalModels/liquids/C7H8/C7H8.C
+++ b/src/thermophysicalModels/liquids/C7H8/C7H8.C
@@ -27,19 +27,124 @@ License
 #include "C7H8.H"
 #include "addToRunTimeSelectionTable.H"
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 namespace Foam
 {
+    defineTypeNameAndDebug(C7H8, 0);
+    addToRunTimeSelectionTable(liquid, C7H8,);
+    addToRunTimeSelectionTable(liquid, C7H8, Istream);
+}
 
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::C7H8::C7H8()
+:
+    liquid
+    (
+        92.141,
+        591.79,
+        4.1086e+6,
+        0.31579,
+        0.264,
+        178.18,
+        4.1009e-2,
+        383.78,
+        1.2008e-30,
+        0.2641,
+        1.8346e+4
+    ),
+    rho_(81.32088237, 0.27108, 591.79, 0.29889),
+    pv_(83.359, -6995, -9.1635, 6.225e-06, 2.0),
+    hl_(591.79, 544383.065085033, 0.3834, 0.0, 0.0, 0.0),
+    cp_
+    (
+        2066.83235476064,
+       -8.14664481609707,
+        0.0322581695445024,
+       -3.01223125427334e-05,
+        0.0,
+        0.0
+    ),
+    h_
+    (
+       -353094.830249075,
+        2066.83235476064,
+       -4.07332240804853,
+        0.0107527231815008,
+       -7.53057813568336e-06,
+        0.0
+    ),
+    cpg_(630.989461803106, 3107.19440856947, 1440.6, 2059.88647833212, -650.43),
+    B_
+    (
+        0.00191120131103418,
+       -2.24970425760519,
+       -482293.441573241,
+       -7.62309938029759e+17,
+        1.00986531511488e+20
+    ),
+    mu_(-13.362, 1183, 0.333, 0.0, 0.0),
+    mug_(2.919e-08, 0.9648, 0.0, 0.0),
+    K_(0.2043, -0.000239, 0.0, 0.0, 0.0, 0.0),
+    Kg_(2.392e-05, 1.2694, 537, 0.0),
+    sigma_(591.79, 0.06685, 1.2456, 0.0, 0.0, 0.0),
+    D_(147.18, 20.1, 92.141, 28) // note: Same as nHeptane
+{}
+
+
+Foam::C7H8::C7H8
+(
+    const liquid& l,
+    const NSRDSfunc5& density,
+    const NSRDSfunc1& vapourPressure,
+    const NSRDSfunc6& heatOfVapourisation,
+    const NSRDSfunc0& heatCapacity,
+    const NSRDSfunc0& enthalpy,
+    const NSRDSfunc7& idealGasHeatCapacity,
+    const NSRDSfunc4& secondVirialCoeff,
+    const NSRDSfunc1& dynamicViscosity,
+    const NSRDSfunc2& vapourDynamicViscosity,
+    const NSRDSfunc0& thermalConductivity,
+    const NSRDSfunc2& vapourThermalConductivity,
+    const NSRDSfunc6& surfaceTension,
+    const APIdiffCoefFunc& vapourDiffussivity
+)
+:
+    liquid(l),
+    rho_(density),
+    pv_(vapourPressure),
+    hl_(heatOfVapourisation),
+    cp_(heatCapacity),
+    h_(enthalpy),
+    cpg_(idealGasHeatCapacity),
+    B_(secondVirialCoeff),
+    mu_(dynamicViscosity),
+    mug_(vapourDynamicViscosity),
+    K_(thermalConductivity),
+    Kg_(vapourThermalConductivity),
+    sigma_(surfaceTension),
+    D_(vapourDiffussivity)
+{}
 
-defineTypeNameAndDebug(C7H8, 0);
-addToRunTimeSelectionTable(liquid, C7H8,);
-addToRunTimeSelectionTable(liquid, C7H8, Istream);
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+Foam::C7H8::C7H8(Istream& is)
+:
+    liquid(is),
+    rho_(is),
+    pv_(is),
+    hl_(is),
+    cp_(is),
+    h_(is),
+    cpg_(is),
+    B_(is),
+    mu_(is),
+    mug_(is),
+    K_(is),
+    Kg_(is),
+    sigma_(is),
+    D_(is)
+{}
 
-} // End namespace Foam
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/C7H8/C7H8.H b/src/thermophysicalModels/liquids/C7H8/C7H8.H
index 1e8e6ac734d19c61f2b87b9ae50f94edbcdfacd4..8d0afcf8cb2cfbc5e0aee953142244cc2fc6237f 100644
--- a/src/thermophysicalModels/liquids/C7H8/C7H8.H
+++ b/src/thermophysicalModels/liquids/C7H8/C7H8.H
@@ -87,26 +87,9 @@ public:
     // Constructors
 
         //- Construct null
-        C7H8()
-        :
-            liquid(92.141, 591.79, 4.1086e+6, 0.31579, 0.264, 178.18, 4.1009e-2, 383.78, 1.2008e-30, 0.2641, 1.8346e+4),
-            rho_(81.32088237, 0.27108, 591.79, 0.29889),
-            pv_(83.359, -6995, -9.1635, 6.225e-06, 2),
-            hl_(591.79, 544383.065085033, 0.3834, 0, 0, 0),
-            cp_(2066.83235476064, -8.14664481609707, 0.0322581695445024, -3.01223125427334e-05, 0, 0),
-            // NN: enthalpy, h_, is not used in the sprayModel.
-            // For consistency, the enthalpy is derived from hlat and hl.
-            // It is, however, convenient to have it available.
-            h_(-353094.830249075, 2066.83235476064, -4.07332240804853, 0.0107527231815008, -7.53057813568336e-06, 0),
-            cpg_(630.989461803106, 3107.19440856947, 1440.6, 2059.88647833212, -650.43),
-            B_(0.00191120131103418, -2.24970425760519, -482293.441573241, -7.62309938029759e+17, 1.00986531511488e+20),
-            mu_(-13.362, 1183, 0.333, 0, 0),
-            mug_(2.919e-08, 0.9648, 0, 0),
-            K_(0.2043, -0.000239, 0, 0, 0, 0),
-            Kg_(2.392e-05, 1.2694, 537, 0),
-            sigma_(591.79, 0.06685, 1.2456, 0, 0, 0),
-            D_(147.18, 20.1, 92.141, 28) // NN: Same as nHeptane
-        {}
+        C7H8();
+
+        //- Construct from components
         C7H8
         (
             const liquid& l,
@@ -123,125 +106,56 @@ public:
             const NSRDSfunc2& vapourThermalConductivity,
             const NSRDSfunc6& surfaceTension,
             const APIdiffCoefFunc& vapourDiffussivity
-        )
-        :
-            liquid(l),
-            rho_(density),
-            pv_(vapourPressure),
-            hl_(heatOfVapourisation),
-            cp_(heatCapacity),
-            h_(enthalpy),
-            cpg_(idealGasHeatCapacity),
-            B_(secondVirialCoeff),
-            mu_(dynamicViscosity),
-            mug_(vapourDynamicViscosity),
-            K_(thermalConductivity),
-            Kg_(vapourThermalConductivity),
-            sigma_(surfaceTension),
-            D_(vapourDiffussivity)
-        {}
+        );
 
         //- Construct from Istream
-        C7H8(Istream& is)
-        :
-            liquid(is),
-            rho_(is),
-            pv_(is),
-            hl_(is),
-            cp_(is),
-            h_(is),
-            cpg_(is),
-            B_(is),
-            mu_(is),
-            mug_(is),
-            K_(is),
-            Kg_(is),
-            sigma_(is),
-            D_(is)
-        {}
+        C7H8(Istream& is);
 
 
     // Member Functions
 
         //- Liquid density [kg/m^3]
-        scalar rho(scalar p, scalar T) const
-        {
-            return rho_.f(p, T);
-        }
+        inline scalar rho(scalar p, scalar T) const;
 
         //- Vapour pressure [Pa]
-        scalar pv(scalar p, scalar T) const
-        {
-            return pv_.f(p, T);
-        }
+        inline scalar pv(scalar p, scalar T) const;
 
         //- Heat of vapourisation [J/kg]
-        scalar hl(scalar p, scalar T) const
-        {
-            return hl_.f(p, T);
-        }
+        inline scalar hl(scalar p, scalar T) const;
 
         //- Liquid heat capacity [J/(kg K)]
-        scalar cp(scalar p, scalar T) const
-        {
-            return cp_.f(p, T);
-        }
+        inline scalar cp(scalar p, scalar T) const;
 
         //- Liquid Enthalpy [J/(kg)]
-        scalar h(scalar p, scalar T) const
-        {
-            return h_.f(p, T);
-        }
+        inline scalar h(scalar p, scalar T) const;
 
         //- Ideal gas heat capacity [J/(kg K)]
-        scalar cpg(scalar p, scalar T) const
-        {
-            return cpg_.f(p, T);
-        }
+        inline scalar cpg(scalar p, scalar T) const;
 
         //- Second Virial Coefficient [m^3/kg]
-        scalar B(scalar p, scalar T) const
-        {
-            return B_.f(p, T);
-        }
+        inline scalar B(scalar p, scalar T) const;
 
         //- Liquid viscosity [Pa s]
-        scalar mu(scalar p, scalar T) const
-        {
-            return mu_.f(p, T);
-        }
+        inline scalar mu(scalar p, scalar T) const;
 
         //- Vapour viscosity [Pa s]
-        scalar mug(scalar p, scalar T) const
-        {
-            return mug_.f(p, T);
-        }
+        inline scalar mug(scalar p, scalar T) const;
 
         //- Liquid thermal conductivity  [W/(m K)]
-        scalar K(scalar p, scalar T) const
-        {
-            return K_.f(p, T);
-        }
+        inline scalar K(scalar p, scalar T) const;
 
         //- Vapour thermal conductivity  [W/(m K)]
-        scalar Kg(scalar p, scalar T) const
-        {
-            return Kg_.f(p, T);
-        }
+        inline scalar Kg(scalar p, scalar T) const;
 
         //- Surface tension [N/m]
-        scalar sigma(scalar p, scalar T) const
-        {
-            return sigma_.f(p, T);
-        }
+        inline scalar sigma(scalar p, scalar T) const;
 
         //- Vapour diffussivity [m2/s]
-        scalar D(scalar p, scalar T) const
-        {
-            return D_.f(p, T);
-        }
+        inline scalar D(scalar p, scalar T) const;
 
 
+    // I-O
+
         //- Write the function coefficients
         void writeData(Ostream& os) const
         {
@@ -260,9 +174,7 @@ public:
             D_.writeData(os); os << endl;
         }
 
-
-    // Ostream Operator
-
+        //- Ostream Operator
         friend Ostream& operator<<(Ostream& os, const C7H8& l)
         {
             l.writeData(os);
@@ -277,6 +189,10 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+#include "C7H8I.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 #endif
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/C7H8/C7H8I.H b/src/thermophysicalModels/liquids/C7H8/C7H8I.H
new file mode 100644
index 0000000000000000000000000000000000000000..02813a18f8feb5b33e3e296f22ff7564b2a9b622
--- /dev/null
+++ b/src/thermophysicalModels/liquids/C7H8/C7H8I.H
@@ -0,0 +1,105 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+inline Foam::scalar Foam::C7H8::rho(scalar p, scalar T) const
+{
+    return rho_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C7H8::pv(scalar p, scalar T) const
+{
+    return pv_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C7H8::hl(scalar p, scalar T) const
+{
+    return hl_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C7H8::cp(scalar p, scalar T) const
+{
+    return cp_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C7H8::h(scalar p, scalar T) const
+{
+    return h_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C7H8::cpg(scalar p, scalar T) const
+{
+    return cpg_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C7H8::B(scalar p, scalar T) const
+{
+    return B_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C7H8::mu(scalar p, scalar T) const
+{
+    return mu_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C7H8::mug(scalar p, scalar T) const
+{
+    return mug_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C7H8::K(scalar p, scalar T) const
+{
+    return K_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C7H8::Kg(scalar p, scalar T) const
+{
+    return Kg_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C7H8::sigma(scalar p, scalar T) const
+{
+    return sigma_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C7H8::D(scalar p, scalar T) const
+{
+    return D_.f(p, T);
+}
+
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/C8H10/C8H10.C b/src/thermophysicalModels/liquids/C8H10/C8H10.C
index 7b0bbede52314acba7f993ac35b9de6f5016b504..09263031d6dea4782142434f506e767a4fc1e5fb 100644
--- a/src/thermophysicalModels/liquids/C8H10/C8H10.C
+++ b/src/thermophysicalModels/liquids/C8H10/C8H10.C
@@ -27,19 +27,124 @@ License
 #include "C8H10.H"
 #include "addToRunTimeSelectionTable.H"
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 namespace Foam
 {
+    defineTypeNameAndDebug(C8H10, 0);
+    addToRunTimeSelectionTable(liquid, C8H10,);
+    addToRunTimeSelectionTable(liquid, C8H10, Istream);
+}
 
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::C8H10::C8H10()
+:
+    liquid
+    (
+        106.167,
+        617.17,
+        3.6094e+6,
+        0.37381,
+        0.263,
+        178.15,
+        4.038e-3,
+        409.35,
+        1.9680e-30,
+        0.3036,
+        1.8043e+4
+    ),
+    rho_(76.3765398, 0.26438, 617.17, 0.2921),
+    pv_(88.246, -7691.1, -9.797, 5.931e-06, 2.0),
+    hl_(617.17, 516167.924119547, 0.3882, 0.0, 0.0, 0.0),
+    cp_
+    (
+        818.521762883005,
+        6.66873887366131,
+       -0.0248005500767658,
+        4.23860521631015e-05,
+        0.0,
+        0.0
+    ),
+    h_
+    (
+       -524002.612929508,
+        818.521762883005,
+        3.33436943683065,
+       -0.00826685002558862,
+        1.05965130407754e-05,
+        0.0
+    ),
+    cpg_(738.835984816374, 3201.5598067196, 1559, 2285.07916772632, -702.0),
+    B_
+    (
+        0.00165776559571242,
+       -2.77958310962917,
+       -388067.855359952,
+       -5.86905535618412e+18,
+        1.58052878954854e+21
+    ),
+    mu_(-10.452, 1048.4, -0.0715, 0.0, 0.0),
+    mug_(1.2e-06, 0.4518, 439.0, 0.0),
+    K_(0.20149, -0.00023988, 0.0, 0.0, 0.0, 0.0),
+    Kg_(1.708e-05, 1.319, 565.6, 0.0),
+    sigma_(617.17, 0.066, 1.268, 0.0, 0.0, 0.0),
+    D_(147.18, 20.1, 106.167, 28.0) // note: Same as nHeptane
+{}
+
+
+Foam::C8H10::C8H10
+(
+    const liquid& l,
+    const NSRDSfunc5& density,
+    const NSRDSfunc1& vapourPressure,
+    const NSRDSfunc6& heatOfVapourisation,
+    const NSRDSfunc0& heatCapacity,
+    const NSRDSfunc0& enthalpy,
+    const NSRDSfunc7& idealGasHeatCapacity,
+    const NSRDSfunc4& secondVirialCoeff,
+    const NSRDSfunc1& dynamicViscosity,
+    const NSRDSfunc2& vapourDynamicViscosity,
+    const NSRDSfunc0& thermalConductivity,
+    const NSRDSfunc2& vapourThermalConductivity,
+    const NSRDSfunc6& surfaceTension,
+    const APIdiffCoefFunc& vapourDiffussivity
+)
+:
+    liquid(l),
+    rho_(density),
+    pv_(vapourPressure),
+    hl_(heatOfVapourisation),
+    cp_(heatCapacity),
+    h_(enthalpy),
+    cpg_(idealGasHeatCapacity),
+    B_(secondVirialCoeff),
+    mu_(dynamicViscosity),
+    mug_(vapourDynamicViscosity),
+    K_(thermalConductivity),
+    Kg_(vapourThermalConductivity),
+    sigma_(surfaceTension),
+    D_(vapourDiffussivity)
+{}
 
-defineTypeNameAndDebug(C8H10, 0);
-addToRunTimeSelectionTable(liquid, C8H10,);
-addToRunTimeSelectionTable(liquid, C8H10, Istream);
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+Foam::C8H10::C8H10(Istream& is)
+:
+    liquid(is),
+    rho_(is),
+    pv_(is),
+    hl_(is),
+    cp_(is),
+    h_(is),
+    cpg_(is),
+    B_(is),
+    mu_(is),
+    mug_(is),
+    K_(is),
+    Kg_(is),
+    sigma_(is),
+    D_(is)
+{}
 
-} // End namespace Foam
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/C8H10/C8H10.H b/src/thermophysicalModels/liquids/C8H10/C8H10.H
index a08832ab7c267da69ef6d3a4480389d59356dcc5..6301c555cc71bf048d5c8fb816904536aaccd0c4 100644
--- a/src/thermophysicalModels/liquids/C8H10/C8H10.H
+++ b/src/thermophysicalModels/liquids/C8H10/C8H10.H
@@ -86,26 +86,9 @@ public:
     // Constructors
 
         //- Construct null
-        C8H10()
-        :
-            liquid(106.167, 617.17, 3.6094e+6, 0.37381, 0.263, 178.15, 4.038e-3, 409.35, 1.9680e-30, 0.3036, 1.8043e+4),
-            rho_(76.3765398, 0.26438, 617.17, 0.2921),
-            pv_(88.246, -7691.1, -9.797, 5.931e-06, 2),
-            hl_(617.17, 516167.924119547, 0.3882, 0, 0, 0),
-            cp_(818.521762883005, 6.66873887366131, -0.0248005500767658, 4.23860521631015e-05, 0, 0),
-            // NN: enthalpy, h_, is not used in the sprayModel.
-            // For consistency, the enthalpy is derived from hlat and hl.
-            // It is, however, convenient to have it available.
-            h_(-524002.612929508, 818.521762883005, 3.33436943683065, -0.00826685002558862, 1.05965130407754e-05, 0),
-            cpg_(738.835984816374, 3201.5598067196, 1559, 2285.07916772632, -702),
-            B_(0.00165776559571242, -2.77958310962917, -388067.855359952, -5.86905535618412e+18, 1.58052878954854e+21),
-            mu_(-10.452, 1048.4, -0.0715, 0, 0),
-            mug_(1.2e-06, 0.4518, 439, 0),
-            K_(0.20149, -0.00023988, 0, 0, 0, 0),
-            Kg_(1.708e-05, 1.319, 565.6, 0),
-            sigma_(617.17, 0.066, 1.268, 0, 0, 0),
-            D_(147.18, 20.1, 106.167, 28) // NN: Same as nHeptane
-        {}
+        C8H10();
+
+        // Construct from components
         C8H10
         (
             const liquid& l,
@@ -122,125 +105,56 @@ public:
             const NSRDSfunc2& vapourThermalConductivity,
             const NSRDSfunc6& surfaceTension,
             const APIdiffCoefFunc& vapourDiffussivity
-        )
-        :
-            liquid(l),
-            rho_(density),
-            pv_(vapourPressure),
-            hl_(heatOfVapourisation),
-            cp_(heatCapacity),
-            h_(enthalpy),
-            cpg_(idealGasHeatCapacity),
-            B_(secondVirialCoeff),
-            mu_(dynamicViscosity),
-            mug_(vapourDynamicViscosity),
-            K_(thermalConductivity),
-            Kg_(vapourThermalConductivity),
-            sigma_(surfaceTension),
-            D_(vapourDiffussivity)
-        {}
+        );
 
         //- Construct from Istream
-        C8H10(Istream& is)
-        :
-            liquid(is),
-            rho_(is),
-            pv_(is),
-            hl_(is),
-            cp_(is),
-            h_(is),
-            cpg_(is),
-            B_(is),
-            mu_(is),
-            mug_(is),
-            K_(is),
-            Kg_(is),
-            sigma_(is),
-            D_(is)
-        {}
+        C8H10(Istream& is);
 
 
     // Member Functions
 
         //- Liquid density [kg/m^3]
-        scalar rho(scalar p, scalar T) const
-        {
-            return rho_.f(p, T);
-        }
+        inline scalar rho(scalar p, scalar T) const;
 
         //- Vapour pressure [Pa]
-        scalar pv(scalar p, scalar T) const
-        {
-            return pv_.f(p, T);
-        }
+        inline scalar pv(scalar p, scalar T) const;
 
         //- Heat of vapourisation [J/kg]
-        scalar hl(scalar p, scalar T) const
-        {
-            return hl_.f(p, T);
-        }
+        inline scalar hl(scalar p, scalar T) const;
 
         //- Liquid heat capacity [J/(kg K)]
-        scalar cp(scalar p, scalar T) const
-        {
-            return cp_.f(p, T);
-        }
+        inline scalar cp(scalar p, scalar T) const;
 
         //- Liquid Enthalpy [J/(kg)]
-        scalar h(scalar p, scalar T) const
-        {
-            return h_.f(p, T);
-        }
+        inline scalar h(scalar p, scalar T) const;
 
         //- Ideal gas heat capacity [J/(kg K)]
-        scalar cpg(scalar p, scalar T) const
-        {
-            return cpg_.f(p, T);
-        }
+        inline scalar cpg(scalar p, scalar T) const;
 
         //- Second Virial Coefficient [m^3/kg]
-        scalar B(scalar p, scalar T) const
-        {
-            return B_.f(p, T);
-        }
+        inline scalar B(scalar p, scalar T) const;
 
         //- Liquid viscosity [Pa s]
-        scalar mu(scalar p, scalar T) const
-        {
-            return mu_.f(p, T);
-        }
+        inline scalar mu(scalar p, scalar T) const;
 
         //- Vapour viscosity [Pa s]
-        scalar mug(scalar p, scalar T) const
-        {
-            return mug_.f(p, T);
-        }
+        inline scalar mug(scalar p, scalar T) const;
 
         //- Liquid thermal conductivity  [W/(m K)]
-        scalar K(scalar p, scalar T) const
-        {
-            return K_.f(p, T);
-        }
+        inline scalar K(scalar p, scalar T) const;
 
         //- Vapour thermal conductivity  [W/(m K)]
-        scalar Kg(scalar p, scalar T) const
-        {
-            return Kg_.f(p, T);
-        }
+        inline scalar Kg(scalar p, scalar T) const;
 
         //- Surface tension [N/m]
-        scalar sigma(scalar p, scalar T) const
-        {
-            return sigma_.f(p, T);
-        }
+        inline scalar sigma(scalar p, scalar T) const;
 
         //- Vapour diffussivity [m2/s]
-        scalar D(scalar p, scalar T) const
-        {
-            return D_.f(p, T);
-        }
+        inline scalar D(scalar p, scalar T) const;
 
 
+    // I-O
+
         //- Write the function coefficients
         void writeData(Ostream& os) const
         {
@@ -259,9 +173,7 @@ public:
             D_.writeData(os); os << endl;
         }
 
-
-    // Ostream Operator
-
+        //- Ostream Operator
         friend Ostream& operator<<(Ostream& os, const C8H10& l)
         {
             l.writeData(os);
@@ -276,6 +188,10 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+#include "C8H10I.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 #endif
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/C8H10/C8H10I.H b/src/thermophysicalModels/liquids/C8H10/C8H10I.H
new file mode 100644
index 0000000000000000000000000000000000000000..58ee6c81a94e85971fb006bdd67ab0bea82353a9
--- /dev/null
+++ b/src/thermophysicalModels/liquids/C8H10/C8H10I.H
@@ -0,0 +1,105 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+inline Foam::scalar Foam::C8H10::rho(scalar p, scalar T) const
+{
+    return rho_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C8H10::pv(scalar p, scalar T) const
+{
+    return pv_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C8H10::hl(scalar p, scalar T) const
+{
+    return hl_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C8H10::cp(scalar p, scalar T) const
+{
+    return cp_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C8H10::h(scalar p, scalar T) const
+{
+    return h_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C8H10::cpg(scalar p, scalar T) const
+{
+    return cpg_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C8H10::B(scalar p, scalar T) const
+{
+    return B_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C8H10::mu(scalar p, scalar T) const
+{
+    return mu_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C8H10::mug(scalar p, scalar T) const
+{
+    return mug_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C8H10::K(scalar p, scalar T) const
+{
+    return K_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C8H10::Kg(scalar p, scalar T) const
+{
+    return Kg_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C8H10::sigma(scalar p, scalar T) const
+{
+    return sigma_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C8H10::D(scalar p, scalar T) const
+{
+    return D_.f(p, T);
+}
+
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/C8H18/C8H18.C b/src/thermophysicalModels/liquids/C8H18/C8H18.C
index dac83519ca9b7611a91f909c30be9d5e85cc9751..ea9c3f3ed5581dca9e0c6788cf00567aaaaeb754 100644
--- a/src/thermophysicalModels/liquids/C8H18/C8H18.C
+++ b/src/thermophysicalModels/liquids/C8H18/C8H18.C
@@ -27,19 +27,124 @@ License
 #include "C8H18.H"
 #include "addToRunTimeSelectionTable.H"
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 namespace Foam
 {
+    defineTypeNameAndDebug(C8H18, 0);
+    addToRunTimeSelectionTable(liquid, C8H18,);
+    addToRunTimeSelectionTable(liquid, C8H18, Istream);
+}
 
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::C8H18::C8H18()
+:
+    liquid
+    (
+        114.231,
+        568.70,
+        2.49e+6,
+        0.486,
+        0.256,
+        216.38,
+        2.1083,
+        398.83,
+        0.0,
+        0.3996,
+        1.54e+4
+    ),
+    rho_(61.37745861, 0.26115, 568.7, 0.28034),
+    pv_(96.084, -7900.2, -11.003, 7.1802e-06, 2.0),
+    hl_(568.70, 483056.263186, 0.38467, 0.0, 0.0, 0.0),
+    cp_
+    (
+        1968.20477803749,
+       -1.63379467920267,
+        0.00839448135795012,
+        0.0,
+        0.0,
+        0.0
+    ),
+    h_
+    (
+       -2778787.734126,
+        1968.20477803749,
+       -0.816897339601334,
+        0.00279816045265004,
+        0.0,
+        0.0
+    ),
+    cpg_(1186.54305748877, 3878.9820626625, 1635.6, 2673.52995246474, 746.4),
+    B_
+    (
+        0.00239777293379205,
+       -2.81394717721109,
+       -585042.589139551,
+       -1.11265768486663e+18,
+        1.40968738783693e+20
+    ),
+    mu_(-20.463, 1497.4, 1.379, 0.0, 0.0),
+    mug_(3.1191e-08, 0.92925, 55.092, 0.0),
+    K_(0.2156, -0.00029483, 0.0, 0.0, 0.0, 0.0),
+    Kg_(-8758, 0.8448, -27121000000.0, 0.0),
+    sigma_(568.70, 0.052789, 1.2323, 0.0, 0.0, 0.0),
+    D_(147.18, 20.1, 114.231, 28.0) // note: Same as nHeptane
+{}
+
+
+Foam::C8H18::C8H18
+(
+    const liquid& l,
+    const NSRDSfunc5& density,
+    const NSRDSfunc1& vapourPressure,
+    const NSRDSfunc6& heatOfVapourisation,
+    const NSRDSfunc0& heatCapacity,
+    const NSRDSfunc0& enthalpy,
+    const NSRDSfunc7& idealGasHeatCapacity,
+    const NSRDSfunc4& secondVirialCoeff,
+    const NSRDSfunc1& dynamicViscosity,
+    const NSRDSfunc2& vapourDynamicViscosity,
+    const NSRDSfunc0& thermalConductivity,
+    const NSRDSfunc2& vapourThermalConductivity,
+    const NSRDSfunc6& surfaceTension,
+    const APIdiffCoefFunc& vapourDiffussivity
+)
+:
+    liquid(l),
+    rho_(density),
+    pv_(vapourPressure),
+    hl_(heatOfVapourisation),
+    cp_(heatCapacity),
+    h_(enthalpy),
+    cpg_(idealGasHeatCapacity),
+    B_(secondVirialCoeff),
+    mu_(dynamicViscosity),
+    mug_(vapourDynamicViscosity),
+    K_(thermalConductivity),
+    Kg_(vapourThermalConductivity),
+    sigma_(surfaceTension),
+    D_(vapourDiffussivity)
+{}
 
-defineTypeNameAndDebug(C8H18, 0);
-addToRunTimeSelectionTable(liquid, C8H18,);
-addToRunTimeSelectionTable(liquid, C8H18, Istream);
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+Foam::C8H18::C8H18(Istream& is)
+:
+    liquid(is),
+    rho_(is),
+    pv_(is),
+    hl_(is),
+    cp_(is),
+    h_(is),
+    cpg_(is),
+    B_(is),
+    mu_(is),
+    mug_(is),
+    K_(is),
+    Kg_(is),
+    sigma_(is),
+    D_(is)
+{}
 
-} // End namespace Foam
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/C8H18/C8H18.H b/src/thermophysicalModels/liquids/C8H18/C8H18.H
index 4656d86236675fe3459cc96d2e186ed1e1caa821..20f4f5aa111df78e22bf8185f306a120c5a3791c 100644
--- a/src/thermophysicalModels/liquids/C8H18/C8H18.H
+++ b/src/thermophysicalModels/liquids/C8H18/C8H18.H
@@ -87,26 +87,9 @@ public:
     // Constructors
 
         //- Construct null
-        C8H18()
-        :
-            liquid(114.231, 568.70, 2.49e+6, 0.486, 0.256, 216.38, 2.1083, 398.83, 0.0, 0.3996, 1.54e+4),
-            rho_(61.37745861, 0.26115, 568.7, 0.28034),
-            pv_(96.084, -7900.2, -11.003, 7.1802e-06, 2),
-            hl_(568.70, 483056.263186, 0.38467, 0, 0, 0),
-            cp_(1968.20477803749, -1.63379467920267, 0.00839448135795012, 0, 0, 0),
-            // NN: enthalpy, h_, is not used in the sprayModel.
-            // For consistency, the enthalpy is derived from hlat and hl.
-            // It is, however, convenient to have it available.
-            h_(-2778787.734126, 1968.20477803749, -0.816897339601334, 0.00279816045265004, 0, 0),
-            cpg_(1186.54305748877, 3878.9820626625, 1635.6, 2673.52995246474, 746.4),
-            B_(0.00239777293379205, -2.81394717721109, -585042.589139551, -1.11265768486663e+18, 1.40968738783693e+20),
-            mu_(-20.463, 1497.4, 1.379, 0, 0),
-            mug_(3.1191e-08, 0.92925, 55.092, 0),
-            K_(0.2156, -0.00029483, 0, 0, 0, 0),
-            Kg_(-8758, 0.8448, -27121000000.0, 0),
-            sigma_(568.70, 0.052789, 1.2323, 0, 0, 0),
-            D_(147.18, 20.1, 114.231, 28) // NN: Same as nHeptane
-        {}
+        C8H18();
+
+        //- Construct from components
         C8H18
         (
             const liquid& l,
@@ -123,125 +106,56 @@ public:
             const NSRDSfunc2& vapourThermalConductivity,
             const NSRDSfunc6& surfaceTension,
             const APIdiffCoefFunc& vapourDiffussivity
-        )
-        :
-            liquid(l),
-            rho_(density),
-            pv_(vapourPressure),
-            hl_(heatOfVapourisation),
-            cp_(heatCapacity),
-            h_(enthalpy),
-            cpg_(idealGasHeatCapacity),
-            B_(secondVirialCoeff),
-            mu_(dynamicViscosity),
-            mug_(vapourDynamicViscosity),
-            K_(thermalConductivity),
-            Kg_(vapourThermalConductivity),
-            sigma_(surfaceTension),
-            D_(vapourDiffussivity)
-        {}
+        );
 
         //- Construct from Istream
-        C8H18(Istream& is)
-        :
-            liquid(is),
-            rho_(is),
-            pv_(is),
-            hl_(is),
-            cp_(is),
-            h_(is),
-            cpg_(is),
-            B_(is),
-            mu_(is),
-            mug_(is),
-            K_(is),
-            Kg_(is),
-            sigma_(is),
-            D_(is)
-        {}
+        C8H18(Istream& is);
 
 
     // Member Functions
 
         //- Liquid density [kg/m^3]
-        scalar rho(scalar p, scalar T) const
-        {
-            return rho_.f(p, T);
-        }
+        inline scalar rho(scalar p, scalar T) const;
 
-        //- Vapour pressure [Pa]
-        scalar pv(scalar p, scalar T) const
-        {
-            return pv_.f(p, T);
-        }
+        //- Vapour pressure [Pa];
+        inline scalar pv(scalar p, scalar T) const;
 
         //- Heat of vapourisation [J/kg]
-        scalar hl(scalar p, scalar T) const
-        {
-            return hl_.f(p, T);
-        }
+        inline scalar hl(scalar p, scalar T) const;
 
         //- Liquid heat capacity [J/(kg K)]
-        scalar cp(scalar p, scalar T) const
-        {
-            return cp_.f(p, T);
-        }
+        inline scalar cp(scalar p, scalar T) const;
 
         //- Liquid Enthalpy [J/(kg)]
-        scalar h(scalar p, scalar T) const
-        {
-            return h_.f(p, T);
-        }
+        inline scalar h(scalar p, scalar T) const;
 
         //- Ideal gas heat capacity [J/(kg K)]
-        scalar cpg(scalar p, scalar T) const
-        {
-            return cpg_.f(p, T);
-        }
+        inline scalar cpg(scalar p, scalar T) const;
 
         //- Second Virial Coefficient [m^3/kg]
-        scalar B(scalar p, scalar T) const
-        {
-            return B_.f(p, T);
-        }
+        inline scalar B(scalar p, scalar T) const;
 
         //- Liquid viscosity [Pa s]
-        scalar mu(scalar p, scalar T) const
-        {
-            return mu_.f(p, T);
-        }
+        inline scalar mu(scalar p, scalar T) const;
 
         //- Vapour viscosity [Pa s]
-        scalar mug(scalar p, scalar T) const
-        {
-            return mug_.f(p, T);
-        }
+        inline scalar mug(scalar p, scalar T) const;
 
         //- Liquid thermal conductivity  [W/(m K)]
-        scalar K(scalar p, scalar T) const
-        {
-            return K_.f(p, T);
-        }
+        inline scalar K(scalar p, scalar T) const;
 
         //- Vapour thermal conductivity  [W/(m K)]
-        scalar Kg(scalar p, scalar T) const
-        {
-            return Kg_.f(p, T);
-        }
+        inline scalar Kg(scalar p, scalar T) const;
 
         //- Surface tension [N/m]
-        scalar sigma(scalar p, scalar T) const
-        {
-            return sigma_.f(p, T);
-        }
+        inline scalar sigma(scalar p, scalar T) const;
 
         //- Vapour diffussivity [m2/s]
-        scalar D(scalar p, scalar T) const
-        {
-            return D_.f(p, T);
-        }
+        inline scalar D(scalar p, scalar T) const;
 
 
+    // I-O
+
         //- Write the function coefficients
         void writeData(Ostream& os) const
         {
@@ -260,9 +174,7 @@ public:
             D_.writeData(os); os << endl;
         }
 
-
-    // Ostream Operator
-
+        //- Ostream Operator
         friend Ostream& operator<<(Ostream& os, const C8H18& l)
         {
             l.writeData(os);
@@ -277,6 +189,10 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+#include "C8H18I.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 #endif
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/C8H18/C8H18I.H b/src/thermophysicalModels/liquids/C8H18/C8H18I.H
new file mode 100644
index 0000000000000000000000000000000000000000..3844155a37b548a5ff54892e01afb253c4da56dc
--- /dev/null
+++ b/src/thermophysicalModels/liquids/C8H18/C8H18I.H
@@ -0,0 +1,105 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+inline Foam::scalar Foam::C8H18::rho(scalar p, scalar T) const
+{
+    return rho_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C8H18::pv(scalar p, scalar T) const
+{
+    return pv_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C8H18::hl(scalar p, scalar T) const
+{
+    return hl_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C8H18::cp(scalar p, scalar T) const
+{
+    return cp_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C8H18::h(scalar p, scalar T) const
+{
+    return h_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C8H18::cpg(scalar p, scalar T) const
+{
+    return cpg_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C8H18::B(scalar p, scalar T) const
+{
+    return B_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C8H18::mu(scalar p, scalar T) const
+{
+    return mu_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C8H18::mug(scalar p, scalar T) const
+{
+    return mug_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C8H18::K(scalar p, scalar T) const
+{
+    return K_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C8H18::Kg(scalar p, scalar T) const
+{
+    return Kg_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C8H18::sigma(scalar p, scalar T) const
+{
+    return sigma_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C8H18::D(scalar p, scalar T) const
+{
+    return D_.f(p, T);
+}
+
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/C9H20/C9H20.C b/src/thermophysicalModels/liquids/C9H20/C9H20.C
index c9e321e46b05834302f42b2a53aa2eb26811e6e1..a2e6309c9917b78089d0397cb76e11519b82d004 100644
--- a/src/thermophysicalModels/liquids/C9H20/C9H20.C
+++ b/src/thermophysicalModels/liquids/C9H20/C9H20.C
@@ -27,19 +27,124 @@ License
 #include "C9H20.H"
 #include "addToRunTimeSelectionTable.H"
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 namespace Foam
 {
+    defineTypeNameAndDebug(C9H20, 0);
+    addToRunTimeSelectionTable(liquid, C9H20,);
+    addToRunTimeSelectionTable(liquid, C9H20, Istream);
+}
 
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::C9H20::C9H20()
+:
+    liquid
+    (
+        128.258,
+        594.60,
+        2.29e+6,
+        0.544,
+        0.252,
+        219.66,
+        4.3058e-1,
+        423.97,
+        0.0,
+        0.4435,
+        1.56e+4
+    ),
+    rho_(62.06019846, 0.26147, 594.6, 0.28281),
+    pv_(109.35, -90304.0, -12.882, 7.8544e-06, 2.0),
+    hl_(594.60, 470691.886665939, 0.38522, 0.0, 0.0, 0.0),
+    cp_
+    (
+        2986.79224687739,
+       -8.88677509395125,
+        0.0211300659607978,
+        0.0,
+        0.0,
+        0.0
+    ),
+    h_
+    (
+       -2825628.50868792,
+        2986.79224687739,
+       -4.44338754697563,
+        0.00704335532026592,
+        0.0,
+        0.0
+    ),
+    cpg_(1183.16206396482, 3832.11963386299, 1644.8, 2705.48425829188, 749.6),
+    B_
+    (
+        0.00304542406711472,
+       -3.65357326638494,
+       -520825.211682702,
+       -6.15400208953827e+18,
+        1.41901479829718e+21
+    ),
+    mu_(-21.149, 1658, 1.454, 0.0, 0.0),
+    mug_(1.0344e-07, 0.77301, 220.47, 0.0),
+    K_(0.209, -0.000264, 0.0, 0.0, 0.0, 0.0),
+    Kg_(-0.065771, 0.27198, -3482.3, -1580300.0),
+    sigma_(594.60, 0.054975, 1.2897, 0.0, 0.0, 0.0),
+    D_(147.18, 20.1, 128.258, 28.0) // note: Same as nHeptane
+{}
+
+
+Foam::C9H20::C9H20
+(
+    const liquid& l,
+    const NSRDSfunc5& density,
+    const NSRDSfunc1& vapourPressure,
+    const NSRDSfunc6& heatOfVapourisation,
+    const NSRDSfunc0& heatCapacity,
+    const NSRDSfunc0& enthalpy,
+    const NSRDSfunc7& idealGasHeatCapacity,
+    const NSRDSfunc4& secondVirialCoeff,
+    const NSRDSfunc1& dynamicViscosity,
+    const NSRDSfunc2& vapourDynamicViscosity,
+    const NSRDSfunc0& thermalConductivity,
+    const NSRDSfunc2& vapourThermalConductivity,
+    const NSRDSfunc6& surfaceTension,
+    const APIdiffCoefFunc& vapourDiffussivity
+)
+:
+    liquid(l),
+    rho_(density),
+    pv_(vapourPressure),
+    hl_(heatOfVapourisation),
+    cp_(heatCapacity),
+    h_(enthalpy),
+    cpg_(idealGasHeatCapacity),
+    B_(secondVirialCoeff),
+    mu_(dynamicViscosity),
+    mug_(vapourDynamicViscosity),
+    K_(thermalConductivity),
+    Kg_(vapourThermalConductivity),
+    sigma_(surfaceTension),
+    D_(vapourDiffussivity)
+{}
 
-defineTypeNameAndDebug(C9H20, 0);
-addToRunTimeSelectionTable(liquid, C9H20,);
-addToRunTimeSelectionTable(liquid, C9H20, Istream);
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+Foam::C9H20::C9H20(Istream& is)
+:
+    liquid(is),
+    rho_(is),
+    pv_(is),
+    hl_(is),
+    cp_(is),
+    h_(is),
+    cpg_(is),
+    B_(is),
+    mu_(is),
+    mug_(is),
+    K_(is),
+    Kg_(is),
+    sigma_(is),
+    D_(is)
+{}
 
-} // End namespace Foam
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/C9H20/C9H20.H b/src/thermophysicalModels/liquids/C9H20/C9H20.H
index 015bde640fff3f37cbcf9457537eb1c627adb0a6..be28728d4f763f057aadc9722424d2f42c3f2361 100644
--- a/src/thermophysicalModels/liquids/C9H20/C9H20.H
+++ b/src/thermophysicalModels/liquids/C9H20/C9H20.H
@@ -87,26 +87,9 @@ public:
     // Constructors
 
         //- Construct null
-        C9H20()
-        :
-            liquid(128.258, 594.60, 2.29e+6, 0.544, 0.252, 219.66, 4.3058e-1, 423.97, 0, 0.4435, 1.56e+4),
-            rho_(62.06019846, 0.26147, 594.6, 0.28281),
-            pv_(109.35, -90304, -12.882, 7.8544e-06, 2),
-            hl_(594.60, 470691.886665939, 0.38522, 0, 0, 0),
-            cp_(2986.79224687739, -8.88677509395125, 0.0211300659607978, 0, 0, 0),
-            // NN: enthalpy, h_, is not used in the sprayModel.
-            // For consistency, the enthalpy is derived from hlat and hl.
-            // It is, however, convenient to have it available.
-            h_(-2825628.50868792, 2986.79224687739, -4.44338754697563, 0.00704335532026592, 0, 0),
-            cpg_(1183.16206396482, 3832.11963386299, 1644.8, 2705.48425829188, 749.6),
-            B_(0.00304542406711472, -3.65357326638494, -520825.211682702, -6.15400208953827e+18, 1.41901479829718e+21),
-            mu_(-21.149, 1658, 1.454, 0, 0),
-            mug_(1.0344e-07, 0.77301, 220.47, 0),
-            K_(0.209, -0.000264, 0, 0, 0, 0),
-            Kg_(-0.065771, 0.27198, -3482.3, -1580300),
-            sigma_(594.60, 0.054975, 1.2897, 0, 0, 0),
-            D_(147.18, 20.1, 128.258, 28) // NN: Same as nHeptane
-        {}
+        C9H20();
+
+        //- Construct from components
         C9H20
         (
             const liquid& l,
@@ -123,125 +106,56 @@ public:
             const NSRDSfunc2& vapourThermalConductivity,
             const NSRDSfunc6& surfaceTension,
             const APIdiffCoefFunc& vapourDiffussivity
-        )
-        :
-            liquid(l),
-            rho_(density),
-            pv_(vapourPressure),
-            hl_(heatOfVapourisation),
-            cp_(heatCapacity),
-            h_(enthalpy),
-            cpg_(idealGasHeatCapacity),
-            B_(secondVirialCoeff),
-            mu_(dynamicViscosity),
-            mug_(vapourDynamicViscosity),
-            K_(thermalConductivity),
-            Kg_(vapourThermalConductivity),
-            sigma_(surfaceTension),
-            D_(vapourDiffussivity)
-        {}
+        );
 
         //- Construct from Istream
-        C9H20(Istream& is)
-        :
-            liquid(is),
-            rho_(is),
-            pv_(is),
-            hl_(is),
-            cp_(is),
-            h_(is),
-            cpg_(is),
-            B_(is),
-            mu_(is),
-            mug_(is),
-            K_(is),
-            Kg_(is),
-            sigma_(is),
-            D_(is)
-        {}
+        C9H20(Istream& is);
 
 
     // Member Functions
 
         //- Liquid density [kg/m^3]
-        scalar rho(scalar p, scalar T) const
-        {
-            return rho_.f(p, T);
-        }
+        inline scalar rho(scalar p, scalar T) const;
 
         //- Vapour pressure [Pa]
-        scalar pv(scalar p, scalar T) const
-        {
-            return pv_.f(p, T);
-        }
+        inline scalar pv(scalar p, scalar T) const;
 
         //- Heat of vapourisation [J/kg]
-        scalar hl(scalar p, scalar T) const
-        {
-            return hl_.f(p, T);
-        }
+        inline scalar hl(scalar p, scalar T) const;
 
         //- Liquid heat capacity [J/(kg K)]
-        scalar cp(scalar p, scalar T) const
-        {
-            return cp_.f(p, T);
-        }
+        inline scalar cp(scalar p, scalar T) const;
 
         //- Liquid Enthalpy [J/(kg)]
-        scalar h(scalar p, scalar T) const
-        {
-            return h_.f(p, T);
-        }
+        inline scalar h(scalar p, scalar T) const;
 
         //- Ideal gas heat capacity [J/(kg K)]
-        scalar cpg(scalar p, scalar T) const
-        {
-            return cpg_.f(p, T);
-        }
+        inline scalar cpg(scalar p, scalar T) const;
 
         //- Second Virial Coefficient [m^3/kg]
-        scalar B(scalar p, scalar T) const
-        {
-            return B_.f(p, T);
-        }
+        inline scalar B(scalar p, scalar T) const;
 
         //- Liquid viscosity [Pa s]
-        scalar mu(scalar p, scalar T) const
-        {
-            return mu_.f(p, T);
-        }
+        inline scalar mu(scalar p, scalar T) const;
 
         //- Vapour viscosity [Pa s]
-        scalar mug(scalar p, scalar T) const
-        {
-            return mug_.f(p, T);
-        }
+        inline scalar mug(scalar p, scalar T) const;
 
         //- Liquid thermal conductivity  [W/(m K)]
-        scalar K(scalar p, scalar T) const
-        {
-            return K_.f(p, T);
-        }
+        inline scalar K(scalar p, scalar T) const;
 
         //- Vapour thermal conductivity  [W/(m K)]
-        scalar Kg(scalar p, scalar T) const
-        {
-            return Kg_.f(p, T);
-        }
+        inline scalar Kg(scalar p, scalar T) const;
 
         //- Surface tension [N/m]
-        scalar sigma(scalar p, scalar T) const
-        {
-            return sigma_.f(p, T);
-        }
+        inline scalar sigma(scalar p, scalar T) const;
 
         //- Vapour diffussivity [m2/s]
-        scalar D(scalar p, scalar T) const
-        {
-            return D_.f(p, T);
-        }
+        inline scalar D(scalar p, scalar T) const;
 
 
+    // I-O
+
         //- Write the function coefficients
         void writeData(Ostream& os) const
         {
@@ -260,9 +174,7 @@ public:
             D_.writeData(os); os << endl;
         }
 
-
-    // Ostream Operator
-
+        //- Ostream Operator
         friend Ostream& operator<<(Ostream& os, const C9H20& l)
         {
             l.writeData(os);
@@ -277,6 +189,10 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+#include "C9H20I.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 #endif
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/C9H20/C9H20I.H b/src/thermophysicalModels/liquids/C9H20/C9H20I.H
new file mode 100644
index 0000000000000000000000000000000000000000..d478264307aded97e58186360134438e7ca8859c
--- /dev/null
+++ b/src/thermophysicalModels/liquids/C9H20/C9H20I.H
@@ -0,0 +1,105 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+inline Foam::scalar Foam::C9H20::rho(scalar p, scalar T) const
+{
+    return rho_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C9H20::pv(scalar p, scalar T) const
+{
+    return pv_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C9H20::hl(scalar p, scalar T) const
+{
+    return hl_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C9H20::cp(scalar p, scalar T) const
+{
+    return cp_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C9H20::h(scalar p, scalar T) const
+{
+    return h_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C9H20::cpg(scalar p, scalar T) const
+{
+    return cpg_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C9H20::B(scalar p, scalar T) const
+{
+    return B_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C9H20::mu(scalar p, scalar T) const
+{
+    return mu_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C9H20::mug(scalar p, scalar T) const
+{
+    return mug_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C9H20::K(scalar p, scalar T) const
+{
+    return K_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C9H20::Kg(scalar p, scalar T) const
+{
+    return Kg_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C9H20::sigma(scalar p, scalar T) const
+{
+    return sigma_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::C9H20::D(scalar p, scalar T) const
+{
+    return D_.f(p, T);
+}
+
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/CH3OH/CH3OH.C b/src/thermophysicalModels/liquids/CH3OH/CH3OH.C
index 8a562084d7a28be283ebdf75221b42be7cbad59f..64f322b4b1909630ff6ab67b020495c4a5b3f166 100644
--- a/src/thermophysicalModels/liquids/CH3OH/CH3OH.C
+++ b/src/thermophysicalModels/liquids/CH3OH/CH3OH.C
@@ -27,19 +27,124 @@ License
 #include "CH3OH.H"
 #include "addToRunTimeSelectionTable.H"
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 namespace Foam
 {
+    defineTypeNameAndDebug(CH3OH, 0);
+    addToRunTimeSelectionTable(liquid, CH3OH,);
+    addToRunTimeSelectionTable(liquid, CH3OH, Istream);
+}
 
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::CH3OH::CH3OH()
+:
+    liquid
+    (
+        32.042,
+        512.58,
+        8.0959e+6,
+        0.1178,
+        0.224,
+        175.47,
+        1.054e-1,
+        337.85,
+        5.6706e-30,
+        0.5656,
+        2.9523e+4
+    ),
+    rho_(73.952936, 0.27192, 512.58, 0.2331),
+    pv_(109.93, -7471.3, -13.988, 0.015281, 1.0),
+    hl_(512.58, 1644716.30984333, 0.3766, 0.0, 0.0, 0.0),
+    cp_
+    (
+        3358.09250358904,
+       -11.8781599151114,
+        0.0305536483365583,
+        0.0,
+        0.0,
+        0.0
+    ),
+    h_
+    (
+       -8190474.32066862,
+        3358.09250358904,
+       -5.93907995755571,
+        0.0101845494455194,
+        0.0,
+        0.0
+    ),
+    cpg_(1226.9521253355, 2772.92303851195, 1963, 1733.66206853505, 909.6),
+    B_
+    (
+       -0.0199737844079645,
+        19.3496036452157,
+       -3342487.98452032,
+        2.40808938268523e+19,
+       -6.85787404032208e+21
+    ),
+    mu_(-7.288, 1065.3, -0.6657, 0.0, 0.0),
+    mug_(3.0663e-07, 0.69655, 205.0, 0.0),
+    K_(0.2837, -0.000281, 0.0, 0.0, 0.0, 0.0),
+    Kg_(-7.763, 1.0279, -74360000.0, 6770000000.0),
+    sigma_(512.58, 0.056, -0.00014583, 1.08e-07, 0.0, 0.0),
+    D_(147.18, 20.1, 32.042, 28.0) // note: Same as nHeptane
+{}
+
+
+Foam::CH3OH::CH3OH
+(
+    const liquid& l,
+    const NSRDSfunc5& density,
+    const NSRDSfunc1& vapourPressure,
+    const NSRDSfunc6& heatOfVapourisation,
+    const NSRDSfunc0& heatCapacity,
+    const NSRDSfunc0& enthalpy,
+    const NSRDSfunc7& idealGasHeatCapacity,
+    const NSRDSfunc4& secondVirialCoeff,
+    const NSRDSfunc1& dynamicViscosity,
+    const NSRDSfunc2& vapourDynamicViscosity,
+    const NSRDSfunc0& thermalConductivity,
+    const NSRDSfunc2& vapourThermalConductivity,
+    const NSRDSfunc6& surfaceTension,
+    const APIdiffCoefFunc& vapourDiffussivity
+)
+:
+    liquid(l),
+    rho_(density),
+    pv_(vapourPressure),
+    hl_(heatOfVapourisation),
+    cp_(heatCapacity),
+    h_(enthalpy),
+    cpg_(idealGasHeatCapacity),
+    B_(secondVirialCoeff),
+    mu_(dynamicViscosity),
+    mug_(vapourDynamicViscosity),
+    K_(thermalConductivity),
+    Kg_(vapourThermalConductivity),
+    sigma_(surfaceTension),
+    D_(vapourDiffussivity)
+{}
 
-defineTypeNameAndDebug(CH3OH, 0);
-addToRunTimeSelectionTable(liquid, CH3OH,);
-addToRunTimeSelectionTable(liquid, CH3OH, Istream);
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+Foam::CH3OH::CH3OH(Istream& is)
+:
+    liquid(is),
+    rho_(is),
+    pv_(is),
+    hl_(is),
+    cp_(is),
+    h_(is),
+    cpg_(is),
+    B_(is),
+    mu_(is),
+    mug_(is),
+    K_(is),
+    Kg_(is),
+    sigma_(is),
+    D_(is)
+{}
 
-} // End namespace Foam
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/CH3OH/CH3OH.H b/src/thermophysicalModels/liquids/CH3OH/CH3OH.H
index 9fe8d3db96e8a5b25f06be989acffe40559c0211..11deb6a8617afda836335894044d13924e744cb0 100644
--- a/src/thermophysicalModels/liquids/CH3OH/CH3OH.H
+++ b/src/thermophysicalModels/liquids/CH3OH/CH3OH.H
@@ -87,26 +87,9 @@ public:
     // Constructors
 
         //- Construct null
-        CH3OH()
-        :
-            liquid(32.042, 512.58, 8.0959e+6, 0.1178, 0.224, 175.47, 1.054e-1, 337.85, 5.6706e-30, 0.5656, 2.9523e+4),
-            rho_(73.952936, 0.27192, 512.58, 0.2331),
-            pv_(109.93, -7471.3, -13.988, 0.015281, 1),
-            hl_(512.58, 1644716.30984333, 0.3766, 0, 0, 0),
-            cp_(3358.09250358904, -11.8781599151114, 0.0305536483365583, 0, 0, 0),
-            // NN: enthalpy, h_, is not used in the sprayModel.
-            // For consistency, the enthalpy is derived from hlat and hl.
-            // It is, however, convenient to have it available.
-            h_(-8190474.32066862, 3358.09250358904, -5.93907995755571, 0.0101845494455194, 0, 0),
-            cpg_(1226.9521253355, 2772.92303851195, 1963, 1733.66206853505, 909.6),
-            B_(-0.0199737844079645, 19.3496036452157, -3342487.98452032, 2.40808938268523e+19, -6.85787404032208e+21),
-            mu_(-7.288, 1065.3, -0.6657, 0, 0),
-            mug_(3.0663e-07, 0.69655, 205, 0),
-            K_(0.2837, -0.000281, 0, 0, 0, 0),
-            Kg_(-7.763, 1.0279, -74360000.0, 6770000000.0),
-            sigma_(512.58, 0.056, -0.00014583, 1.08e-07, 0, 0),
-            D_(147.18, 20.1, 32.042, 28) // NN: Same as nHeptane
-        {}
+        CH3OH();
+
+        //- Construct from components
         CH3OH
         (
             const liquid& l,
@@ -123,125 +106,56 @@ public:
             const NSRDSfunc2& vapourThermalConductivity,
             const NSRDSfunc6& surfaceTension,
             const APIdiffCoefFunc& vapourDiffussivity
-        )
-        :
-            liquid(l),
-            rho_(density),
-            pv_(vapourPressure),
-            hl_(heatOfVapourisation),
-            cp_(heatCapacity),
-            h_(enthalpy),
-            cpg_(idealGasHeatCapacity),
-            B_(secondVirialCoeff),
-            mu_(dynamicViscosity),
-            mug_(vapourDynamicViscosity),
-            K_(thermalConductivity),
-            Kg_(vapourThermalConductivity),
-            sigma_(surfaceTension),
-            D_(vapourDiffussivity)
-        {}
+        );
 
         //- Construct from Istream
-        CH3OH(Istream& is)
-        :
-            liquid(is),
-            rho_(is),
-            pv_(is),
-            hl_(is),
-            cp_(is),
-            h_(is),
-            cpg_(is),
-            B_(is),
-            mu_(is),
-            mug_(is),
-            K_(is),
-            Kg_(is),
-            sigma_(is),
-            D_(is)
-        {}
+        CH3OH(Istream& is);
 
 
     // Member Functions
 
         //- Liquid density [kg/m^3]
-        scalar rho(scalar p, scalar T) const
-        {
-            return rho_.f(p, T);
-        }
+        inline scalar rho(scalar p, scalar T) const;
 
         //- Vapour pressure [Pa]
-        scalar pv(scalar p, scalar T) const
-        {
-            return pv_.f(p, T);
-        }
+        inline scalar pv(scalar p, scalar T) const;
 
         //- Heat of vapourisation [J/kg]
-        scalar hl(scalar p, scalar T) const
-        {
-            return hl_.f(p, T);
-        }
+        inline scalar hl(scalar p, scalar T) const;
 
         //- Liquid heat capacity [J/(kg K)]
-        scalar cp(scalar p, scalar T) const
-        {
-            return cp_.f(p, T);
-        }
+        inline scalar cp(scalar p, scalar T) const;
 
         //- Liquid Enthalpy [J/(kg)]
-        scalar h(scalar p, scalar T) const
-        {
-            return h_.f(p, T);
-        }
+        inline scalar h(scalar p, scalar T) const;
 
         //- Ideal gas heat capacity [J/(kg K)]
-        scalar cpg(scalar p, scalar T) const
-        {
-            return cpg_.f(p, T);
-        }
+        inline scalar cpg(scalar p, scalar T) const;
 
         //- Second Virial Coefficient [m^3/kg]
-        scalar B(scalar p, scalar T) const
-        {
-            return B_.f(p, T);
-        }
+        inline scalar B(scalar p, scalar T) const;
 
         //- Liquid viscosity [Pa s]
-        scalar mu(scalar p, scalar T) const
-        {
-            return mu_.f(p, T);
-        }
+        inline scalar mu(scalar p, scalar T) const;
 
         //- Vapour viscosity [Pa s]
-        scalar mug(scalar p, scalar T) const
-        {
-            return mug_.f(p, T);
-        }
+        inline scalar mug(scalar p, scalar T) const;
 
         //- Liquid thermal conductivity  [W/(m K)]
-        scalar K(scalar p, scalar T) const
-        {
-            return K_.f(p, T);
-        }
+        inline scalar K(scalar p, scalar T) const;
 
         //- Vapour thermal conductivity  [W/(m K)]
-        scalar Kg(scalar p, scalar T) const
-        {
-            return Kg_.f(p, T);
-        }
+        inline scalar Kg(scalar p, scalar T) const;
 
         //- Surface tension [N/m]
-        scalar sigma(scalar p, scalar T) const
-        {
-            return sigma_.f(p, T);
-        }
+        inline scalar sigma(scalar p, scalar T) const;
 
         //- Vapour diffussivity [m2/s]
-        scalar D(scalar p, scalar T) const
-        {
-            return D_.f(p, T);
-        }
+        inline scalar D(scalar p, scalar T) const;
 
 
+    // I-O
+
         //- Write the function coefficients
         void writeData(Ostream& os) const
         {
@@ -260,9 +174,7 @@ public:
             D_.writeData(os); os << endl;
         }
 
-
-    // Ostream Operator
-
+        //- Ostream Operator
         friend Ostream& operator<<(Ostream& os, const CH3OH& l)
         {
             l.writeData(os);
@@ -277,6 +189,10 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+#include "CH3OHI.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 #endif
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/CH3OH/CH3OHI.H b/src/thermophysicalModels/liquids/CH3OH/CH3OHI.H
new file mode 100644
index 0000000000000000000000000000000000000000..28c56dde5481f408930a5a17c743597d82375f18
--- /dev/null
+++ b/src/thermophysicalModels/liquids/CH3OH/CH3OHI.H
@@ -0,0 +1,105 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+inline Foam::scalar Foam::CH3OH::rho(scalar p, scalar T) const
+{
+    return rho_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::CH3OH::pv(scalar p, scalar T) const
+{
+    return pv_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::CH3OH::hl(scalar p, scalar T) const
+{
+    return hl_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::CH3OH::cp(scalar p, scalar T) const
+{
+    return cp_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::CH3OH::h(scalar p, scalar T) const
+{
+    return h_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::CH3OH::cpg(scalar p, scalar T) const
+{
+    return cpg_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::CH3OH::B(scalar p, scalar T) const
+{
+    return B_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::CH3OH::mu(scalar p, scalar T) const
+{
+    return mu_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::CH3OH::mug(scalar p, scalar T) const
+{
+    return mug_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::CH3OH::K(scalar p, scalar T) const
+{
+    return K_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::CH3OH::Kg(scalar p, scalar T) const
+{
+    return Kg_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::CH3OH::sigma(scalar p, scalar T) const
+{
+    return sigma_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::CH3OH::D(scalar p, scalar T) const
+{
+    return D_.f(p, T);
+}
+
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/CH4N2O/CH4N2O.C b/src/thermophysicalModels/liquids/CH4N2O/CH4N2O.C
index 32e601952ffbfc9c2a297c58fd235802cf4a5540..d1b0ac261006c113e0e05ad56b5edb5986ed2ce9 100644
--- a/src/thermophysicalModels/liquids/CH4N2O/CH4N2O.C
+++ b/src/thermophysicalModels/liquids/CH4N2O/CH4N2O.C
@@ -30,19 +30,108 @@ Description
 #include "CH4N2O.H"
 #include "addToRunTimeSelectionTable.H"
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 namespace Foam
 {
+    defineTypeNameAndDebug(CH4N2O, 0);
+    addToRunTimeSelectionTable(liquid, CH4N2O,);
+    addToRunTimeSelectionTable(liquid, CH4N2O, Istream);
+}
 
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::CH4N2O::CH4N2O()
+:
+    liquid
+    (
+        60.056,
+        705.0,
+        9.050e+6,
+        0.218,
+        0.337,
+        405.85,
+        9.3131e+1,
+        465.0,
+        1.52e-29,
+        0.3449,
+        4.7813e+4
+    ),
+    rho_(1230.006936, 0.0, 0.0, 0.0, 0.0, 0.0),
+    pv_(3015.15611544, -185497.059684, -430.223621983, 0.00017405122622, 2.0),
+    hl_(705.0, 2534249.0, 0.5, 0.0, 0.0, 0.0),
+    cp_(2006.46063673904, 0.0, 0.0, 0.0, 0.0, 0.0),
+    h_(-6154107.41641135, 2006.46063673904, 0.0, 0.0, 0.0, 0.0),
+    cpg_(811.875582789397, 2099.04089516451, 1627.3, 1603.63660583455, 724.41),
+    B_
+    (
+       -0.000383641934194752,
+        0.447249234048222,
+       -469062.208605302,
+        5.5628080458239e+18,
+       -2.3040162514986e+21
+    ),
+    mu_(-51.964, 3670.6, 5.7331, -5.3495e-29, 10.0),
+    mug_(2.6986e-06, 0.498, 1257.7, -19570.0),
+    K_(-0.4267, 0.0056903, -8.0065e-06, 1.815e-09, 0.0, 0.0),
+    Kg_(6.977e-05, 1.1243, 844.9, -148850.0),
+    sigma_(705.0, 1.0, 0.0, 0.0, 0.0, 0.0), // note: set to constant
+    D_(147.18, 20.1, 60.056, 28.0) // note: Same as nHeptane
+{}
+
+
+Foam::CH4N2O::CH4N2O
+(
+    const liquid& l,
+    const NSRDSfunc0& density,
+    const NSRDSfunc1& vapourPressure,
+    const NSRDSfunc6& heatOfVapourisation,
+    const NSRDSfunc0& heatCapacity,
+    const NSRDSfunc0& enthalpy,
+    const NSRDSfunc7& idealGasHeatCapacity,
+    const NSRDSfunc4& secondVirialCoeff,
+    const NSRDSfunc1& dynamicViscosity,
+    const NSRDSfunc2& vapourDynamicViscosity,
+    const NSRDSfunc0& thermalConductivity,
+    const NSRDSfunc2& vapourThermalConductivity,
+    const NSRDSfunc6& surfaceTension,
+    const APIdiffCoefFunc& vapourDiffussivity
+)
+:
+    liquid(l),
+    rho_(density),
+    pv_(vapourPressure),
+    hl_(heatOfVapourisation),
+    cp_(heatCapacity),
+    h_(enthalpy),
+    cpg_(idealGasHeatCapacity),
+    B_(secondVirialCoeff),
+    mu_(dynamicViscosity),
+    mug_(vapourDynamicViscosity),
+    K_(thermalConductivity),
+    Kg_(vapourThermalConductivity),
+    sigma_(surfaceTension),
+    D_(vapourDiffussivity)
+{}
 
-defineTypeNameAndDebug(CH4N2O, 0);
-addToRunTimeSelectionTable(liquid, CH4N2O,);
-addToRunTimeSelectionTable(liquid, CH4N2O, Istream);
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+Foam::CH4N2O::CH4N2O(Istream& is)
+:
+    liquid(is),
+    rho_(is),
+    pv_(is),
+    hl_(is),
+    cp_(is),
+    h_(is),
+    cpg_(is),
+    B_(is),
+    mu_(is),
+    mug_(is),
+    K_(is),
+    Kg_(is),
+    sigma_(is),
+    D_(is)
+{}
 
-} // End namespace Foam
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/CH4N2O/CH4N2O.H b/src/thermophysicalModels/liquids/CH4N2O/CH4N2O.H
index 2b5b4f4ae5259d787b165eb4777ddb913bf727f6..bcfbbd62ef4dfa66fd4c4e8c6e40f4f144e0f1fc 100644
--- a/src/thermophysicalModels/liquids/CH4N2O/CH4N2O.H
+++ b/src/thermophysicalModels/liquids/CH4N2O/CH4N2O.H
@@ -26,7 +26,8 @@ Class
     Foam::CH4N2O
 
 Description
-    urea, note that some of the properties are unavailable in the literature and have been copied from water.
+    urea, note that some of the properties are unavailable in the literature
+    and have been copied from water.
 
 SourceFiles
     CH4N2O.C
@@ -86,23 +87,9 @@ public:
     // Constructors
 
         //- Construct null
-        CH4N2O()
-        :
-            liquid(60.056, 705.0, 9.050e+6, 0.218, 0.337, 405.85, 9.3131e+1, 465.0, 1.52e-29, 0.3449, 4.7813e+4),
-            rho_(1230.006936, 0, 0, 0, 0, 0),
-            pv_(3015.15611544, -185497.059684, -430.223621983, 0.00017405122622, 2.0),
-            hl_(705.0, 2534249.0, 0.5, 0.0, 0.0, 0.0),
-            cp_(2006.46063673904, 0, 0, 0, 0, 0),
-            h_(-6154107.41641135, 2006.46063673904, 0, 0, 0, 0),
-            cpg_(811.875582789397, 2099.04089516451, 1627.3, 1603.63660583455, 724.41),
-            B_(-0.000383641934194752, 0.447249234048222, -469062.208605302, 5.5628080458239e+18, -2.3040162514986e+21),
-            mu_(-51.964, 3670.6, 5.7331, -5.3495e-29, 10),
-            mug_(2.6986e-06, 0.498, 1257.7, -19570),
-            K_(-0.4267, 0.0056903, -8.0065e-06, 1.815e-09, 0, 0),
-            Kg_(6.977e-05, 1.1243, 844.9, -148850),
-            sigma_(705.0, 1.0, 0.0, 0.0, 0.0, 0), // set to constant
-            D_(147.18, 20.1, 60.056, 28) // Same as nHeptane
-        {}
+        CH4N2O();
+
+        //- Construct from components
         CH4N2O
         (
             const liquid& l,
@@ -119,125 +106,56 @@ public:
             const NSRDSfunc2& vapourThermalConductivity,
             const NSRDSfunc6& surfaceTension,
             const APIdiffCoefFunc& vapourDiffussivity
-        )
-        :
-            liquid(l),
-            rho_(density),
-            pv_(vapourPressure),
-            hl_(heatOfVapourisation),
-            cp_(heatCapacity),
-            h_(enthalpy),
-            cpg_(idealGasHeatCapacity),
-            B_(secondVirialCoeff),
-            mu_(dynamicViscosity),
-            mug_(vapourDynamicViscosity),
-            K_(thermalConductivity),
-            Kg_(vapourThermalConductivity),
-            sigma_(surfaceTension),
-            D_(vapourDiffussivity)
-        {}
+        );
 
         //- Construct from Istream
-        CH4N2O(Istream& is)
-        :
-            liquid(is),
-            rho_(is),
-            pv_(is),
-            hl_(is),
-            cp_(is),
-            h_(is),
-            cpg_(is),
-            B_(is),
-            mu_(is),
-            mug_(is),
-            K_(is),
-            Kg_(is),
-            sigma_(is),
-            D_(is)
-        {}
+        CH4N2O(Istream& is);
 
 
     // Member Functions
 
         //- Liquid density [kg/m^3]
-        scalar rho(scalar p, scalar T) const
-        {
-            return rho_.f(p, T);
-        }
+        inline scalar rho(scalar p, scalar T) const;
 
         //- Vapour pressure [Pa]
-        scalar pv(scalar p, scalar T) const
-        {
-            return pv_.f(p, T);
-        }
+        inline scalar pv(scalar p, scalar T) const;
 
         //- Heat of vapourisation [J/kg]
-        scalar hl(scalar p, scalar T) const
-        {
-            return hl_.f(p, T);
-        }
+        inline scalar hl(scalar p, scalar T) const;
 
         //- Liquid heat capacity [J/(kg K)]
-        scalar cp(scalar p, scalar T) const
-        {
-            return cp_.f(p, T);
-        }
+        inline scalar cp(scalar p, scalar T) const;
 
         //- Liquid Enthalpy [J/(kg)]
-        scalar h(scalar p, scalar T) const
-        {
-            return h_.f(p, T);
-        }
+        inline scalar h(scalar p, scalar T) const;
 
         //- Ideal gas heat capacity [J/(kg K)]
-        scalar cpg(scalar p, scalar T) const
-        {
-            return cpg_.f(p, T);
-        }
+        inline scalar cpg(scalar p, scalar T) const;
 
         //- Second Virial Coefficient [m^3/kg]
-        scalar B(scalar p, scalar T) const
-        {
-            return B_.f(p, T);
-        }
+        inline scalar B(scalar p, scalar T) const;
 
         //- Liquid viscosity [Pa s]
-        scalar mu(scalar p, scalar T) const
-        {
-            return mu_.f(p, T);
-        }
+        inline scalar mu(scalar p, scalar T) const;
 
         //- Vapour viscosity [Pa s]
-        scalar mug(scalar p, scalar T) const
-        {
-            return mug_.f(p, T);
-        }
+        inline scalar mug(scalar p, scalar T) const;
 
         //- Liquid thermal conductivity  [W/(m K)]
-        scalar K(scalar p, scalar T) const
-        {
-            return K_.f(p, T);
-        }
+        inline scalar K(scalar p, scalar T) const;
 
         //- Vapour thermal conductivity  [W/(m K)]
-        scalar Kg(scalar p, scalar T) const
-        {
-            return Kg_.f(p, T);
-        }
+        inline scalar Kg(scalar p, scalar T) const;
 
         //- Surface tension [N/m]
-        scalar sigma(scalar p, scalar T) const
-        {
-            return sigma_.f(p, T);
-        }
+        inline scalar sigma(scalar p, scalar T) const;
 
         //- Vapour diffussivity [m2/s]
-        scalar D(scalar p, scalar T) const
-        {
-            return D_.f(p, T);
-        }
+        inline scalar D(scalar p, scalar T) const;
 
 
+    // I-O
+
         //- Write the function coefficients
         void writeData(Ostream& os) const
         {
@@ -256,9 +174,7 @@ public:
             D_.writeData(os); os << endl;
         }
 
-
-    // Ostream Operator
-
+        //- Ostream Operator
         friend Ostream& operator<<(Ostream& os, const CH4N2O& l)
         {
             l.writeData(os);
@@ -273,6 +189,10 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+#include "CH4N2OI.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 #endif
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/CH4N2O/CH4N2OI.H b/src/thermophysicalModels/liquids/CH4N2O/CH4N2OI.H
new file mode 100644
index 0000000000000000000000000000000000000000..b04233aad1d846ca3b1e0f0827804180a26cc302
--- /dev/null
+++ b/src/thermophysicalModels/liquids/CH4N2O/CH4N2OI.H
@@ -0,0 +1,106 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+inline Foam::scalar Foam::CH4N2O::rho(scalar p, scalar T) const
+{
+    return rho_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::CH4N2O::pv(scalar p, scalar T) const
+{
+    return pv_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::CH4N2O::hl(scalar p, scalar T) const
+{
+    return hl_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::CH4N2O::cp(scalar p, scalar T) const
+{
+    return cp_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::CH4N2O::h(scalar p, scalar T) const
+{
+    return h_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::CH4N2O::cpg(scalar p, scalar T) const
+{
+    return cpg_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::CH4N2O::B(scalar p, scalar T) const
+{
+    return B_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::CH4N2O::mu(scalar p, scalar T) const
+{
+    return mu_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::CH4N2O::mug(scalar p, scalar T) const
+{
+    return mug_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::CH4N2O::K(scalar p, scalar T) const
+{
+    return K_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::CH4N2O::Kg(scalar p, scalar T) const
+{
+    return Kg_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::CH4N2O::sigma(scalar p, scalar T) const
+{
+    return sigma_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::CH4N2O::D(scalar p, scalar T) const
+{
+    return D_.f(p, T);
+}
+
+
+// ************************************************************************* //
+
diff --git a/src/thermophysicalModels/liquids/H2O/H2O.C b/src/thermophysicalModels/liquids/H2O/H2O.C
index ae3de412f23c0c44505577586fa91b819fb52c2a..590da07405f31b539e88278dbf6ba926405b4544 100644
--- a/src/thermophysicalModels/liquids/H2O/H2O.C
+++ b/src/thermophysicalModels/liquids/H2O/H2O.C
@@ -27,19 +27,131 @@ License
 #include "H2O.H"
 #include "addToRunTimeSelectionTable.H"
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 namespace Foam
 {
+    defineTypeNameAndDebug(H2O, 0);
+    addToRunTimeSelectionTable(liquid, H2O,);
+    addToRunTimeSelectionTable(liquid, H2O, Istream);
+}
 
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::H2O::H2O()
+:
+    liquid
+    (
+        18.015,
+        647.13,
+        2.2055e+7,
+        0.05595,
+        0.229,
+        273.16,
+        6.113e+2,
+        373.15,
+        6.1709e-30,
+        0.3449,
+        4.7813e+4
+    ),
+    rho_(98.343885, 0.30542, 647.13, 0.081),
+    pv_(73.649, -7258.2, -7.3037, 4.1653e-06, 2),
+    hl_(647.13, 2889425.47876769, 0.3199, -0.212, 0.25795, 0),
+    cp_
+    (
+        15341.1046350264,
+       -116.019983347211,
+        0.451013044684985,
+       -0.000783569247849015,
+        5.20127671384957e-07,
+        0
+    ),
+    h_
+    (
+       -17957283.7993676,
+        15341.1046350264,
+       -58.0099916736053,
+        0.150337681561662,
+       -0.000195892311962254,
+        1.04025534276991e-07
+    ),
+    cpg_
+    (
+        1851.73466555648,
+        1487.53816264224,
+        2609.3,
+        493.366638912018,
+        1167.6
+    ),
+    B_
+    (
+       -0.0012789342214821,
+        1.4909797391063,
+       -1563696.91923397,
+        1.85445462114904e+19,
+       -7.68082153760755e+21
+    ),
+    mu_(-51.964, 3670.6, 5.7331, -5.3495e-29, 10),
+    mug_(2.6986e-06, 0.498, 1257.7, -19570),
+    K_(-0.4267, 0.0056903, -8.0065e-06, 1.815e-09, 0, 0),
+    Kg_(6.977e-05, 1.1243, 844.9, -148850),
+    sigma_(647.13, 0.18548, 2.717, -3.554, 2.047, 0),
+    D_(15.0, 15.0, 18.015, 28)
+{}
+
+
+Foam::H2O::H2O
+(
+    const liquid& l,
+    const NSRDSfunc5& density,
+    const NSRDSfunc1& vapourPressure,
+    const NSRDSfunc6& heatOfVapourisation,
+    const NSRDSfunc0& heatCapacity,
+    const NSRDSfunc0& enthalpy,
+    const NSRDSfunc7& idealGasHeatCapacity,
+    const NSRDSfunc4& secondVirialCoeff,
+    const NSRDSfunc1& dynamicViscosity,
+    const NSRDSfunc2& vapourDynamicViscosity,
+    const NSRDSfunc0& thermalConductivity,
+    const NSRDSfunc2& vapourThermalConductivity,
+    const NSRDSfunc6& surfaceTension,
+    const APIdiffCoefFunc& vapourDiffussivity
+)
+:
+    liquid(l),
+    rho_(density),
+    pv_(vapourPressure),
+    hl_(heatOfVapourisation),
+    cp_(heatCapacity),
+    h_(enthalpy),
+    cpg_(idealGasHeatCapacity),
+    B_(secondVirialCoeff),
+    mu_(dynamicViscosity),
+    mug_(vapourDynamicViscosity),
+    K_(thermalConductivity),
+    Kg_(vapourThermalConductivity),
+    sigma_(surfaceTension),
+    D_(vapourDiffussivity)
+{}
 
-defineTypeNameAndDebug(H2O, 0);
-addToRunTimeSelectionTable(liquid, H2O,);
-addToRunTimeSelectionTable(liquid, H2O, Istream);
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+Foam::H2O::H2O(Istream& is)
+:
+    liquid(is),
+    rho_(is),
+    pv_(is),
+    hl_(is),
+    cp_(is),
+    h_(is),
+    cpg_(is),
+    B_(is),
+    mu_(is),
+    mug_(is),
+    K_(is),
+    Kg_(is),
+    sigma_(is),
+    D_(is)
+{}
 
-} // End namespace Foam
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/H2O/H2O.H b/src/thermophysicalModels/liquids/H2O/H2O.H
index 698056356151f6d0eedd0db6a0ef918c36dc017a..92287b22161b8c587f8e3735f5b07bc82e18dbd9 100644
--- a/src/thermophysicalModels/liquids/H2O/H2O.H
+++ b/src/thermophysicalModels/liquids/H2O/H2O.H
@@ -86,26 +86,9 @@ public:
     // Constructors
 
         //- Construct null
-        H2O()
-        :
-            liquid(18.015, 647.13, 2.2055e+7, 0.05595, 0.229, 273.16, 6.113e+2, 373.15, 6.1709e-30, 0.3449, 4.7813e+4),
-            rho_(98.343885, 0.30542, 647.13, 0.081),
-            pv_(73.649, -7258.2, -7.3037, 4.1653e-06, 2),
-            hl_(647.13, 2889425.47876769, 0.3199, -0.212, 0.25795, 0),
-            cp_(15341.1046350264, -116.019983347211, 0.451013044684985, -0.000783569247849015, 5.20127671384957e-07, 0),
-            // NN: enthalpy, h_, is not used in the sprayModel.
-            // For consistency, the enthalpy is derived from hlat and hl.
-            // It is, however, convenient to have it available.
-            h_(-17957283.7993676, 15341.1046350264, -58.0099916736053, 0.150337681561662, -0.000195892311962254, 1.04025534276991e-07),
-            cpg_(1851.73466555648, 1487.53816264224, 2609.3, 493.366638912018, 1167.6),
-            B_(-0.0012789342214821, 1.4909797391063, -1563696.91923397, 1.85445462114904e+19, -7.68082153760755e+21),
-            mu_(-51.964, 3670.6, 5.7331, -5.3495e-29, 10),
-            mug_(2.6986e-06, 0.498, 1257.7, -19570),
-            K_(-0.4267, 0.0056903, -8.0065e-06, 1.815e-09, 0, 0),
-            Kg_(6.977e-05, 1.1243, 844.9, -148850),
-            sigma_(647.13, 0.18548, 2.717, -3.554, 2.047, 0),
-            D_(147.18, 20.1, 18.015, 28) // NN: Same as nHeptane
-        {}
+        H2O();
+
+        //- Construct from components
         H2O
         (
             const liquid& l,
@@ -122,124 +105,55 @@ public:
             const NSRDSfunc2& vapourThermalConductivity,
             const NSRDSfunc6& surfaceTension,
             const APIdiffCoefFunc& vapourDiffussivity
-        )
-        :
-            liquid(l),
-            rho_(density),
-            pv_(vapourPressure),
-            hl_(heatOfVapourisation),
-            cp_(heatCapacity),
-            h_(enthalpy),
-            cpg_(idealGasHeatCapacity),
-            B_(secondVirialCoeff),
-            mu_(dynamicViscosity),
-            mug_(vapourDynamicViscosity),
-            K_(thermalConductivity),
-            Kg_(vapourThermalConductivity),
-            sigma_(surfaceTension),
-            D_(vapourDiffussivity)
-        {}
+        );
 
         //- Construct from Istream
-        H2O(Istream& is)
-        :
-            liquid(is),
-            rho_(is),
-            pv_(is),
-            hl_(is),
-            cp_(is),
-            h_(is),
-            cpg_(is),
-            B_(is),
-            mu_(is),
-            mug_(is),
-            K_(is),
-            Kg_(is),
-            sigma_(is),
-            D_(is)
-        {}
+        H2O(Istream& is);
 
 
     // Member Functions
 
         //- Liquid density [kg/m^3]
-        scalar rho(scalar p, scalar T) const
-        {
-            return rho_.f(p, T);
-        }
+        inline scalar rho(scalar p, scalar T) const;
 
         //- Vapour pressure [Pa]
-        scalar pv(scalar p, scalar T) const
-        {
-            return pv_.f(p, T);
-        }
+        inline scalar pv(scalar p, scalar T) const;
 
         //- Heat of vapourisation [J/kg]
-        scalar hl(scalar p, scalar T) const
-        {
-            return hl_.f(p, T);
-        }
+        inline scalar hl(scalar p, scalar T) const;
 
         //- Liquid heat capacity [J/(kg K)]
-        scalar cp(scalar p, scalar T) const
-        {
-            return cp_.f(p, T);
-        }
+        inline scalar cp(scalar p, scalar T) const;
 
         //- Liquid Enthalpy [J/(kg)]
-        scalar h(scalar p, scalar T) const
-        {
-            return h_.f(p, T);
-        }
+        inline scalar h(scalar p, scalar T) const;
 
         //- Ideal gas heat capacity [J/(kg K)]
-        scalar cpg(scalar p, scalar T) const
-        {
-            return cpg_.f(p, T);
-        }
+        inline scalar cpg(scalar p, scalar T) const;
 
         //- Second Virial Coefficient [m^3/kg]
-        scalar B(scalar p, scalar T) const
-        {
-            return B_.f(p, T);
-        }
+        inline scalar B(scalar p, scalar T) const;
 
         //- Liquid viscosity [Pa s]
-        scalar mu(scalar p, scalar T) const
-        {
-            return mu_.f(p, T);
-        }
+        inline scalar mu(scalar p, scalar T) const;
 
         //- Vapour viscosity [Pa s]
-        scalar mug(scalar p, scalar T) const
-        {
-            return mug_.f(p, T);
-        }
+        inline scalar mug(scalar p, scalar T) const;
 
         //- Liquid thermal conductivity  [W/(m K)]
-        scalar K(scalar p, scalar T) const
-        {
-            return K_.f(p, T);
-        }
+        inline scalar K(scalar p, scalar T) const;
 
         //- Vapour thermal conductivity  [W/(m K)]
-        scalar Kg(scalar p, scalar T) const
-        {
-            return Kg_.f(p, T);
-        }
+        inline scalar Kg(scalar p, scalar T) const;
 
         //- Surface tension [N/m]
-        scalar sigma(scalar p, scalar T) const
-        {
-            return sigma_.f(p, T);
-        }
+        inline scalar sigma(scalar p, scalar T) const;
 
         //- Vapour diffussivity [m2/s]
-        scalar D(scalar p, scalar T) const
-        {
-            return D_.f(p, T);
-        }
+        inline scalar D(scalar p, scalar T) const;
+
 
+    // I-O
 
         //- Write the function coefficients
         void writeData(Ostream& os) const
@@ -260,8 +174,7 @@ public:
         }
 
 
-    // Ostream Operator
-
+        //- Ostream Operator
         friend Ostream& operator<<(Ostream& os, const H2O& l)
         {
             l.writeData(os);
@@ -276,6 +189,10 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+#include "H2OI.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 #endif
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/H2O/H2OI.H b/src/thermophysicalModels/liquids/H2O/H2OI.H
new file mode 100644
index 0000000000000000000000000000000000000000..bc5c4bff5ab8268e39ff7761c9f2d8931356a911
--- /dev/null
+++ b/src/thermophysicalModels/liquids/H2O/H2OI.H
@@ -0,0 +1,105 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+inline Foam::scalar Foam::H2O::rho(scalar p, scalar T) const
+{
+    return rho_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::H2O::pv(scalar p, scalar T) const
+{
+    return pv_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::H2O::hl(scalar p, scalar T) const
+{
+    return hl_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::H2O::cp(scalar p, scalar T) const
+{
+    return cp_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::H2O::h(scalar p, scalar T) const
+{
+    return h_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::H2O::cpg(scalar p, scalar T) const
+{
+    return cpg_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::H2O::B(scalar p, scalar T) const
+{
+    return B_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::H2O::mu(scalar p, scalar T) const
+{
+    return mu_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::H2O::mug(scalar p, scalar T) const
+{
+    return mug_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::H2O::K(scalar p, scalar T) const
+{
+    return K_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::H2O::Kg(scalar p, scalar T) const
+{
+    return Kg_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::H2O::sigma(scalar p, scalar T) const
+{
+    return sigma_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::H2O::D(scalar p, scalar T) const
+{
+    return D_.f(p, T);
+}
+
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/IC8H18/IC8H18.C b/src/thermophysicalModels/liquids/IC8H18/IC8H18.C
index 713bada8d0c16205cc3610bff8ab9041592dff6c..483e6c24660a5ef2320620fb2d71691f0150ac1d 100644
--- a/src/thermophysicalModels/liquids/IC8H18/IC8H18.C
+++ b/src/thermophysicalModels/liquids/IC8H18/IC8H18.C
@@ -27,19 +27,124 @@ License
 #include "IC8H18.H"
 #include "addToRunTimeSelectionTable.H"
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 namespace Foam
 {
+    defineTypeNameAndDebug(IC8H18, 0);
+    addToRunTimeSelectionTable(liquid, IC8H18,);
+    addToRunTimeSelectionTable(liquid, IC8H18, Istream);
+}
 
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::IC8H18::IC8H18()
+:
+    liquid
+    (
+        114.231,
+        543.96,
+        2.5676e+6,
+        0.468,
+        0.266,
+        165.78,
+        1.4464e-2,
+        372.39,
+        0.0,
+        0.3031,
+        1.4051e+4
+    ),
+    rho_(67.2363666, 0.27373, 543.96, 0.2846),
+    pv_(120.81, -7550, -16.111, 0.017099, 1.0),
+    hl_(543.96, 375379.713037617, 0.1549, 0.138, 0.0666, 0.0),
+    cp_
+    (
+        1219.89652546156,
+        1.67205049417409,
+        0.00414073237562483,
+        0.0,
+        0.0,
+        0.0
+    ),
+    h_
+    (
+       -2743275.10767575,
+        1219.89652546156,
+        0.836025247087043,
+        0.00138024412520828,
+        0.0,
+        0.0
+    ),
+    cpg_(997.10236275617, 4627.4653990598, 1594, 2933.52942721328, 677.94),
+    B_
+    (
+        0.00234936225718063,
+       -2.83381919093766,
+       -413154.047500241,
+       -3.49703670632315e+17,
+        3.13750207912038e+19
+    ),
+    mu_(-15.811, 1282.5, 0.67791, -3.8617e-28, 10.0),
+    mug_(1.107e-07, 0.746, 72.4, 0.0),
+    K_(0.1508, -0.0001712, 0.0, 0.0, 0.0, 0.0),
+    Kg_(1.758e-05, 1.3114, 392.9, 0.0),
+    sigma_(543.96, 0.047434, 1.1975, 0.0, 0.0, 0.0),
+    D_(147.18, 20.1, 114.231, 28.0) // note: Same as nHeptane
+{}
+
+
+Foam::IC8H18::IC8H18
+(
+    const liquid& l,
+    const NSRDSfunc5& density,
+    const NSRDSfunc1& vapourPressure,
+    const NSRDSfunc6& heatOfVapourisation,
+    const NSRDSfunc0& heatCapacity,
+    const NSRDSfunc0& enthalpy,
+    const NSRDSfunc7& idealGasHeatCapacity,
+    const NSRDSfunc4& secondVirialCoeff,
+    const NSRDSfunc1& dynamicViscosity,
+    const NSRDSfunc2& vapourDynamicViscosity,
+    const NSRDSfunc0& thermalConductivity,
+    const NSRDSfunc2& vapourThermalConductivity,
+    const NSRDSfunc6& surfaceTension,
+    const APIdiffCoefFunc& vapourDiffussivity
+)
+:
+    liquid(l),
+    rho_(density),
+    pv_(vapourPressure),
+    hl_(heatOfVapourisation),
+    cp_(heatCapacity),
+    h_(enthalpy),
+    cpg_(idealGasHeatCapacity),
+    B_(secondVirialCoeff),
+    mu_(dynamicViscosity),
+    mug_(vapourDynamicViscosity),
+    K_(thermalConductivity),
+    Kg_(vapourThermalConductivity),
+    sigma_(surfaceTension),
+    D_(vapourDiffussivity)
+{}
 
-defineTypeNameAndDebug(IC8H18, 0);
-addToRunTimeSelectionTable(liquid, IC8H18,);
-addToRunTimeSelectionTable(liquid, IC8H18, Istream);
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+Foam::IC8H18::IC8H18(Istream& is)
+:
+    liquid(is),
+    rho_(is),
+    pv_(is),
+    hl_(is),
+    cp_(is),
+    h_(is),
+    cpg_(is),
+    B_(is),
+    mu_(is),
+    mug_(is),
+    K_(is),
+    Kg_(is),
+    sigma_(is),
+    D_(is)
+{}
 
-} // End namespace Foam
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/IC8H18/IC8H18.H b/src/thermophysicalModels/liquids/IC8H18/IC8H18.H
index 742f1c4c5ffa2c3b44630bce45afa2f2c3d1939d..48de18edbed52466ba8874fb8b42f69d972c71dd 100644
--- a/src/thermophysicalModels/liquids/IC8H18/IC8H18.H
+++ b/src/thermophysicalModels/liquids/IC8H18/IC8H18.H
@@ -87,26 +87,9 @@ public:
     // Constructors
 
         //- Construct null
-        IC8H18()
-        :
-            liquid(114.231, 543.96, 2.5676e+6, 0.468, 0.266, 165.78, 1.4464e-2, 372.39, 0.0, 0.3031, 1.4051e+4),
-            rho_(67.2363666, 0.27373, 543.96, 0.2846),
-            pv_(120.81, -7550, -16.111, 0.017099, 1),
-            hl_(543.96, 375379.713037617, 0.1549, 0.138, 0.0666, 0),
-            cp_(1219.89652546156, 1.67205049417409, 0.00414073237562483, 0, 0, 0),
-            // NN: enthalpy, h_, is not used in the sprayModel.
-            // For consistency, the enthalpy is derived from hlat and hl.
-            // It is, however, convenient to have it available.
-            h_(-2743275.10767575, 1219.89652546156, 0.836025247087043, 0.00138024412520828, 0, 0),
-            cpg_(997.10236275617, 4627.4653990598, 1594, 2933.52942721328, 677.94),
-            B_(0.00234936225718063, -2.83381919093766, -413154.047500241, -3.49703670632315e+17, 3.13750207912038e+19),
-            mu_(-15.811, 1282.5, 0.67791, -3.8617e-28, 10),
-            mug_(1.107e-07, 0.746, 72.4, 0),
-            K_(0.1508, -0.0001712, 0, 0, 0, 0),
-            Kg_(1.758e-05, 1.3114, 392.9, 0),
-            sigma_(543.96, 0.047434, 1.1975, 0, 0, 0),
-            D_(147.18, 20.1, 114.231, 28) // NN: Same as nHeptane
-        {}
+        IC8H18();
+
+        //- Construct from components
         IC8H18
         (
             const liquid& l,
@@ -123,125 +106,56 @@ public:
             const NSRDSfunc2& vapourThermalConductivity,
             const NSRDSfunc6& surfaceTension,
             const APIdiffCoefFunc& vapourDiffussivity
-        )
-        :
-            liquid(l),
-            rho_(density),
-            pv_(vapourPressure),
-            hl_(heatOfVapourisation),
-            cp_(heatCapacity),
-            h_(enthalpy),
-            cpg_(idealGasHeatCapacity),
-            B_(secondVirialCoeff),
-            mu_(dynamicViscosity),
-            mug_(vapourDynamicViscosity),
-            K_(thermalConductivity),
-            Kg_(vapourThermalConductivity),
-            sigma_(surfaceTension),
-            D_(vapourDiffussivity)
-        {}
+        );
 
         //- Construct from Istream
-        IC8H18(Istream& is)
-        :
-            liquid(is),
-            rho_(is),
-            pv_(is),
-            hl_(is),
-            cp_(is),
-            h_(is),
-            cpg_(is),
-            B_(is),
-            mu_(is),
-            mug_(is),
-            K_(is),
-            Kg_(is),
-            sigma_(is),
-            D_(is)
-        {}
+        IC8H18(Istream& is);
 
 
     // Member Functions
 
         //- Liquid density [kg/m^3]
-        scalar rho(scalar p, scalar T) const
-        {
-            return rho_.f(p, T);
-        }
+        inline scalar rho(scalar p, scalar T) const;
 
         //- Vapour pressure [Pa]
-        scalar pv(scalar p, scalar T) const
-        {
-            return pv_.f(p, T);
-        }
+        inline scalar pv(scalar p, scalar T) const;
 
         //- Heat of vapourisation [J/kg]
-        scalar hl(scalar p, scalar T) const
-        {
-            return hl_.f(p, T);
-        }
+        inline scalar hl(scalar p, scalar T) const;
 
         //- Liquid heat capacity [J/(kg K)]
-        scalar cp(scalar p, scalar T) const
-        {
-            return cp_.f(p, T);
-        }
+        inline scalar cp(scalar p, scalar T) const;
 
         //- Liquid Enthalpy [J/(kg)]
-        scalar h(scalar p, scalar T) const
-        {
-            return h_.f(p, T);
-        }
+        inline scalar h(scalar p, scalar T) const;
 
         //- Ideal gas heat capacity [J/(kg K)]
-        scalar cpg(scalar p, scalar T) const
-        {
-            return cpg_.f(p, T);
-        }
+        inline scalar cpg(scalar p, scalar T) const;
 
         //- Second Virial Coefficient [m^3/kg]
-        scalar B(scalar p, scalar T) const
-        {
-            return B_.f(p, T);
-        }
+        inline scalar B(scalar p, scalar T) const;
 
         //- Liquid viscosity [Pa s]
-        scalar mu(scalar p, scalar T) const
-        {
-            return mu_.f(p, T);
-        }
+        inline scalar mu(scalar p, scalar T) const;
 
         //- Vapour viscosity [Pa s]
-        scalar mug(scalar p, scalar T) const
-        {
-            return mug_.f(p, T);
-        }
+        inline scalar mug(scalar p, scalar T) const;
 
-        //- Liquid thermal conductivity  [W/(m K)]
-        scalar K(scalar p, scalar T) const
-        {
-            return K_.f(p, T);
-        }
+        //- Liquid thermal conductivity [W/(m K)]
+        inline scalar K(scalar p, scalar T) const;
 
-        //- Vapour thermal conductivity  [W/(m K)]
-        scalar Kg(scalar p, scalar T) const
-        {
-            return Kg_.f(p, T);
-        }
+        //- Vapour thermal conductivity [W/(m K)]
+        inline scalar Kg(scalar p, scalar T) const;
 
         //- Surface tension [N/m]
-        scalar sigma(scalar p, scalar T) const
-        {
-            return sigma_.f(p, T);
-        }
+        inline scalar sigma(scalar p, scalar T) const;
 
         //- Vapour diffussivity [m2/s]
-        scalar D(scalar p, scalar T) const
-        {
-            return D_.f(p, T);
-        }
+        inline scalar D(scalar p, scalar T) const;
 
 
+    // I-O
+
         //- Write the function coefficients
         void writeData(Ostream& os) const
         {
@@ -260,9 +174,7 @@ public:
             D_.writeData(os); os << endl;
         }
 
-
-    // Ostream Operator
-
+        //- Ostream Operator
         friend Ostream& operator<<(Ostream& os, const IC8H18& l)
         {
             l.writeData(os);
@@ -277,6 +189,10 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+#include "IC8H18I.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 #endif
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/IC8H18/IC8H18I.H b/src/thermophysicalModels/liquids/IC8H18/IC8H18I.H
new file mode 100644
index 0000000000000000000000000000000000000000..ac53685cb8dbda889d444828a048422b6adadfa2
--- /dev/null
+++ b/src/thermophysicalModels/liquids/IC8H18/IC8H18I.H
@@ -0,0 +1,105 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+inline Foam::scalar Foam::IC8H18::rho(scalar p, scalar T) const
+{
+    return rho_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::IC8H18::pv(scalar p, scalar T) const
+{
+    return pv_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::IC8H18::hl(scalar p, scalar T) const
+{
+    return hl_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::IC8H18::cp(scalar p, scalar T) const
+{
+    return cp_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::IC8H18::h(scalar p, scalar T) const
+{
+    return h_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::IC8H18::cpg(scalar p, scalar T) const
+{
+    return cpg_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::IC8H18::B(scalar p, scalar T) const
+{
+    return B_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::IC8H18::mu(scalar p, scalar T) const
+{
+    return mu_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::IC8H18::mug(scalar p, scalar T) const
+{
+    return mug_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::IC8H18::K(scalar p, scalar T) const
+{
+    return K_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::IC8H18::Kg(scalar p, scalar T) const
+{
+    return Kg_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::IC8H18::sigma(scalar p, scalar T) const
+{
+    return sigma_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::IC8H18::D(scalar p, scalar T) const
+{
+    return D_.f(p, T);
+}
+
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/IDEA/IDEA.C b/src/thermophysicalModels/liquids/IDEA/IDEA.C
index cd2560c2dc4b1443d4b390b400e0f4bae34f679d..f58a625ec5533724899bd6463376b9305cce8124 100644
--- a/src/thermophysicalModels/liquids/IDEA/IDEA.C
+++ b/src/thermophysicalModels/liquids/IDEA/IDEA.C
@@ -27,19 +27,144 @@ License
 #include "IDEA.H"
 #include "addToRunTimeSelectionTable.H"
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 namespace Foam
 {
+    defineTypeNameAndDebug(IDEA, 0);
+    addToRunTimeSelectionTable(liquid, IDEA,);
+    addToRunTimeSelectionTable(liquid, IDEA, Istream);
+}
 
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::IDEA::IDEA()
+:
+    liquid
+    (
+        142.26,
+        618.074,
+        2.11e+6,
+        0.523,
+        0.247,
+        242.67,
+        3.4929e-2,
+        447.3,
+        1.7012e-30,
+        0.3478,
+        1.57e+4
+    ),
+    rho_(152.012105, 3.87150382e-1, 618.073893, 4.00790044e-1),
+    pv_
+    (
+        8.4817774623e+01,
+       -8.6782398353e+03,
+       -9.1277694857,
+        4.6153144498e-06,
+        2.0
+    ),
+    hl_
+    (
+        618.074,
+        2.1671983789e+05,
+       -4.2413153435e+00,
+        1.1656811532e+01,
+       -1.1656446689e+01,
+        4.3667661492
+    ),
+    cp_(1.6604957e+3, -6.250871e-1, 6.1778552e-3, 0.0, 0.0, 0.0),
+    h_(0.0, 0.0, 0.0, 0.0, 0.0, 0.0),
+    cpg_
+    (
+        1.0457515243e+03,
+        3.4410492875e+03,
+        1.5976862298e+03,
+        2.4697705752e+03,
+        7.3699710536e+02
+    ),
+    B_
+    (
+        0.00337351091119935,
+       -4.13606494008504,
+       -534560.916470464,
+       -1.13364022911762e+19,
+        2.80704220402713e+21
+    ),
+    mu_(-6.9645853822e+01, 4.4390635942e+03, 8.4680722718e+00, 0.0, 0.0),
+    mug_(4.2629382158e-08, 8.8144402122e-01, 9.6918097636e+01, 0.0),
+    K_(2.03684e-01, -2.3168e-04, 0.0, 0.0, 0.0, 0.0),
+    Kg_
+    (
+       -5.664925956707e+02,
+        8.896721676320e-01,
+       -2.849783998688e+09,
+        6.914935658053e+05
+    ),
+    sigma_
+    (
+        618.074,
+        8.3846525429e-03,
+       -1.0044759047e+01,
+        2.7261918781e+01,
+       -2.5529134309e+01,
+        8.6488806234
+    ),
+    D_(147.18, 20.1, 142.2, 28.0) // note: Same as nHeptane
+{}
+
+
+Foam::IDEA::IDEA
+(
+    const liquid& l,
+    const NSRDSfunc5& density,
+    const NSRDSfunc1& vapourPressure,
+    const NSRDSfunc6& heatOfVapourisation,
+    const NSRDSfunc0& heatCapacity,
+    const NSRDSfunc0& enthalpy,
+    const NSRDSfunc7& idealGasHeatCapacity,
+    const NSRDSfunc4& secondVirialCoeff,
+    const NSRDSfunc1& dynamicViscosity,
+    const NSRDSfunc2& vapourDynamicViscosity,
+    const NSRDSfunc0& thermalConductivity,
+    const NSRDSfunc2& vapourThermalConductivity,
+    const NSRDSfunc6& surfaceTension,
+    const APIdiffCoefFunc& vapourDiffussivity
+)
+:
+    liquid(l),
+    rho_(density),
+    pv_(vapourPressure),
+    hl_(heatOfVapourisation),
+    cp_(heatCapacity),
+    h_(enthalpy),
+    cpg_(idealGasHeatCapacity),
+    B_(secondVirialCoeff),
+    mu_(dynamicViscosity),
+    mug_(vapourDynamicViscosity),
+    K_(thermalConductivity),
+    Kg_(vapourThermalConductivity),
+    sigma_(surfaceTension),
+    D_(vapourDiffussivity)
+{}
 
-defineTypeNameAndDebug(IDEA, 0);
-addToRunTimeSelectionTable(liquid, IDEA,);
-addToRunTimeSelectionTable(liquid, IDEA, Istream);
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+Foam::IDEA::IDEA(Istream& is)
+:
+    liquid(is),
+    rho_(is),
+    pv_(is),
+    hl_(is),
+    cp_(is),
+    h_(is),
+    cpg_(is),
+    B_(is),
+    mu_(is),
+    mug_(is),
+    K_(is),
+    Kg_(is),
+    sigma_(is),
+    D_(is)
+{}
 
-} // End namespace Foam
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/IDEA/IDEA.H b/src/thermophysicalModels/liquids/IDEA/IDEA.H
index a623416f8e78ac0ba86b845ed345c5da90c665c5..a51aa86cbf2123bbbaeb91b71da63d11c23803a0 100644
--- a/src/thermophysicalModels/liquids/IDEA/IDEA.H
+++ b/src/thermophysicalModels/liquids/IDEA/IDEA.H
@@ -109,26 +109,9 @@ public:
     // Constructors
 
         //- Construct null
-        IDEA()
-        :
-            liquid(142.26, 618.074, 2.11e+6, 0.523, 0.247, 242.67, 3.4929e-2, 447.3, 1.7012e-30, 0.3478, 1.57e+4),
-            rho_(152.012105, 3.87150382e-1, 618.073893, 4.00790044e-1),
-            pv_(8.4817774623e+01, -8.6782398353e+03, -9.1277694857, 4.6153144498e-06, 2.0),
-            hl_(618.074,2.1671983789e+05, -4.2413153435e+00, 1.1656811532e+01, -1.1656446689e+01, 4.3667661492),
-            cp_(1.6604957e+3, -6.250871e-1, 6.1778552e-3, 0.0, 0.0, 0.0),
-            // NN: enthalpy, h_, is not used in the sprayModel.
-            // For consistency, the enthalpy is derived from hlat and hl.
-            // For this fuel I've put it to zero because I was lazy at the time...
-            h_(0.0, 0.0, 0.0, 0.0, 0.0, 0.0),
-            cpg_(1.0457515243e+03, 3.4410492875e+03, 1.5976862298e+03, 2.4697705752e+03, 7.3699710536e+02),
-            B_(0.00337351091119935, -4.13606494008504, -534560.916470464, -1.13364022911762e+19, 2.80704220402713e+21),
-            mu_(-6.9645853822e+01, 4.4390635942e+03, 8.4680722718e+00, 0.0, 0.0),
-            mug_(4.2629382158e-08, 8.8144402122e-01, 9.6918097636e+01, 0.0),
-            K_(2.03684e-01, -2.3168e-04, 0.0, 0.0, 0.0, 0.0),
-            Kg_(-5.664925956707e+02, 8.896721676320e-01, -2.849783998688e+09, 6.914935658053e+05),
-            sigma_(618.074, 8.3846525429e-03, -1.0044759047e+01, 2.7261918781e+01, -2.5529134309e+01, 8.6488806234),
-            D_(147.18, 20.1, 142.2, 28) // NN: Same as nHeptane
-        {}
+        IDEA();
+
+        // Construct from components
         IDEA
         (
             const liquid& l,
@@ -145,125 +128,56 @@ public:
             const NSRDSfunc2& vapourThermalConductivity,
             const NSRDSfunc6& surfaceTension,
             const APIdiffCoefFunc& vapourDiffussivity
-        )
-        :
-            liquid(l),
-            rho_(density),
-            pv_(vapourPressure),
-            hl_(heatOfVapourisation),
-            cp_(heatCapacity),
-            h_(enthalpy),
-            cpg_(idealGasHeatCapacity),
-            B_(secondVirialCoeff),
-            mu_(dynamicViscosity),
-            mug_(vapourDynamicViscosity),
-            K_(thermalConductivity),
-            Kg_(vapourThermalConductivity),
-            sigma_(surfaceTension),
-            D_(vapourDiffussivity)
-        {}
+        );
 
         //- Construct from Istream
-        IDEA(Istream& is)
-        :
-            liquid(is),
-            rho_(is),
-            pv_(is),
-            hl_(is),
-            cp_(is),
-            h_(is),
-            cpg_(is),
-            B_(is),
-            mu_(is),
-            mug_(is),
-            K_(is),
-            Kg_(is),
-            sigma_(is),
-            D_(is)
-        {}
+        IDEA(Istream& is);
 
 
     // Member Functions
 
         //- Liquid density [kg/m^3]
-        scalar rho(scalar p, scalar T) const
-        {
-            return rho_.f(p, T);
-        }
+        inline scalar rho(scalar p, scalar T) const;
 
         //- Vapour pressure [Pa]
-        scalar pv(scalar p, scalar T) const
-        {
-            return pv_.f(p, T);
-        }
+        inline scalar pv(scalar p, scalar T) const;
 
         //- Heat of vapourisation [J/kg]
-        scalar hl(scalar p, scalar T) const
-        {
-            return hl_.f(p, T);
-        }
+        inline scalar hl(scalar p, scalar T) const;
 
         //- Liquid heat capacity [J/(kg K)]
-        scalar cp(scalar p, scalar T) const
-        {
-            return cp_.f(p, T);
-        }
+        inline scalar cp(scalar p, scalar T) const;
 
         //- Liquid Enthalpy [J/(kg)]
-        scalar h(scalar p, scalar T) const
-        {
-            return h_.f(p, T);
-        }
+        inline scalar h(scalar p, scalar T) const;
 
         //- Ideal gas heat capacity [J/(kg K)]
-        scalar cpg(scalar p, scalar T) const
-        {
-            return cpg_.f(p, T);
-        }
+        inline scalar cpg(scalar p, scalar T) const;
 
         //- Second Virial Coefficient [m^3/kg]
-        scalar B(scalar p, scalar T) const
-        {
-            return B_.f(p, T);
-        }
+        inline scalar B(scalar p, scalar T) const;
 
         //- Liquid viscosity [Pa s]
-        scalar mu(scalar p, scalar T) const
-        {
-            return mu_.f(p, T);
-        }
+        inline scalar mu(scalar p, scalar T) const;
 
         //- Vapour viscosity [Pa s]
-        scalar mug(scalar p, scalar T) const
-        {
-            return mug_.f(p, T);
-        }
+        inline scalar mug(scalar p, scalar T) const;
 
         //- Liquid thermal conductivity  [W/(m K)]
-        scalar K(scalar p, scalar T) const
-        {
-            return K_.f(p, T);
-        }
+        inline scalar K(scalar p, scalar T) const;
 
         //- Vapour thermal conductivity  [W/(m K)]
-        scalar Kg(scalar p, scalar T) const
-        {
-            return Kg_.f(p, T);
-        }
+        inline scalar Kg(scalar p, scalar T) const;
 
         //- Surface tension [N/m]
-        scalar sigma(scalar p, scalar T) const
-        {
-            return sigma_.f(p, T);
-        }
+        inline scalar sigma(scalar p, scalar T) const;
 
         //- Vapour diffussivity [m2/s]
-        scalar D(scalar p, scalar T) const
-        {
-            return D_.f(p, T);
-        }
+        inline scalar D(scalar p, scalar T) const;
 
 
+    // I-O
+
         //- Write the function coefficients
         void writeData(Ostream& os) const
         {
@@ -281,9 +195,7 @@ public:
             D_.writeData(os); os << endl;
         }
 
-
-    // Ostream Operator
-
+        //- Ostream Operator
         friend Ostream& operator<<(Ostream& os, const IDEA& l)
         {
             l.writeData(os);
@@ -298,6 +210,10 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+#include "IDEAI.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 #endif
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/IDEA/IDEAI.H b/src/thermophysicalModels/liquids/IDEA/IDEAI.H
new file mode 100644
index 0000000000000000000000000000000000000000..865d7babfe422c5be25b20c27cae0a99904709e2
--- /dev/null
+++ b/src/thermophysicalModels/liquids/IDEA/IDEAI.H
@@ -0,0 +1,105 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+inline Foam::scalar Foam::IDEA::rho(scalar p, scalar T) const
+{
+    return rho_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::IDEA::pv(scalar p, scalar T) const
+{
+    return pv_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::IDEA::hl(scalar p, scalar T) const
+{
+    return hl_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::IDEA::cp(scalar p, scalar T) const
+{
+    return cp_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::IDEA::h(scalar p, scalar T) const
+{
+    return h_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::IDEA::cpg(scalar p, scalar T) const
+{
+    return cpg_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::IDEA::B(scalar p, scalar T) const
+{
+    return B_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::IDEA::mu(scalar p, scalar T) const
+{
+    return mu_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::IDEA::mug(scalar p, scalar T) const
+{
+    return mug_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::IDEA::K(scalar p, scalar T) const
+{
+    return K_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::IDEA::Kg(scalar p, scalar T) const
+{
+    return Kg_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::IDEA::sigma(scalar p, scalar T) const
+{
+    return sigma_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::IDEA::D(scalar p, scalar T) const
+{
+    return D_.f(p, T);
+}
+
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/MB/MB.C b/src/thermophysicalModels/liquids/MB/MB.C
index 0328ef010391ba91da8c3f555b8a9bdeb54a7827..b5df86262c20a750b32d639a227cf678b2346571 100644
--- a/src/thermophysicalModels/liquids/MB/MB.C
+++ b/src/thermophysicalModels/liquids/MB/MB.C
@@ -27,19 +27,108 @@ License
 #include "MB.H"
 #include "addToRunTimeSelectionTable.H"
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 namespace Foam
 {
+    defineTypeNameAndDebug(MB, 0);
+    addToRunTimeSelectionTable(liquid, MB,);
+    addToRunTimeSelectionTable(liquid, MB, Istream);
+}
 
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::MB::MB()
+:
+    liquid
+    (
+        102.133,
+        554.5,
+        3.4734e+6,
+        0.34,
+        0.256,
+        187.35,
+        1.0102e-1,
+        375.90,
+        5.7373e-30,
+        0.3807,
+        1.7713e+4
+    ),
+    rho_(76.6099633, 0.257, 554.5, 0.2772),
+    pv_(107.51, -8112.9, -12.77, 9.2919e-06, 2.0),
+    hl_(554.5, 508307.794738233, 0.392, 0.0, 0.0, 0.0),
+    cp_(1135.77394182096, 2.89818178257762, 0.0, 0.0, 0.0, 0.0),
+    h_(-5255966.14542938, 1135.77394182096, 1.44909089128881, 0.0, 0.0, 0.0),
+    cpg_(875.329227575808, 2849.22600922327, 1570.0, 2029.70636327142, 678.3),
+    B_
+    (
+        0.00220496803188,
+       -2.42184210783978,
+       -401045.695318849,
+       -2.85079259397061e+17,
+       -3.57377145486767e+19
+    ),
+    mu_(-12.206, 1141.7, 0.15014, 0.0, 0.0),
+    mug_(3.733e-07, 0.6177, 256.5, 0.0),
+    K_(0.2298, -0.0003002, 0.0, 0.0, 0.0, 0.0),
+    Kg_(1333.1, 0.9962, 12317000000.0, 0.0),
+    sigma_(554.5, 0.064084, 1.2418, 0.0, 0.0, 0.0),
+    D_(147.18, 20.1, 102.133, 28.0) // note: Same as nHeptane
+{}
+
+
+Foam::MB::MB
+(
+    const liquid& l,
+    const NSRDSfunc5& density,
+    const NSRDSfunc1& vapourPressure,
+    const NSRDSfunc6& heatOfVapourisation,
+    const NSRDSfunc0& heatCapacity,
+    const NSRDSfunc0& enthalpy,
+    const NSRDSfunc7& idealGasHeatCapacity,
+    const NSRDSfunc4& secondVirialCoeff,
+    const NSRDSfunc1& dynamicViscosity,
+    const NSRDSfunc2& vapourDynamicViscosity,
+    const NSRDSfunc0& thermalConductivity,
+    const NSRDSfunc2& vapourThermalConductivity,
+    const NSRDSfunc6& surfaceTension,
+    const APIdiffCoefFunc& vapourDiffussivity
+)
+:
+    liquid(l),
+    rho_(density),
+    pv_(vapourPressure),
+    hl_(heatOfVapourisation),
+    cp_(heatCapacity),
+    h_(enthalpy),
+    cpg_(idealGasHeatCapacity),
+    B_(secondVirialCoeff),
+    mu_(dynamicViscosity),
+    mug_(vapourDynamicViscosity),
+    K_(thermalConductivity),
+    Kg_(vapourThermalConductivity),
+    sigma_(surfaceTension),
+    D_(vapourDiffussivity)
+{}
 
-defineTypeNameAndDebug(MB, 0);
-addToRunTimeSelectionTable(liquid, MB,);
-addToRunTimeSelectionTable(liquid, MB, Istream);
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+Foam::MB::MB(Istream& is)
+:
+    liquid(is),
+    rho_(is),
+    pv_(is),
+    hl_(is),
+    cp_(is),
+    h_(is),
+    cpg_(is),
+    B_(is),
+    mu_(is),
+    mug_(is),
+    K_(is),
+    Kg_(is),
+    sigma_(is),
+    D_(is)
+{}
 
-} // End namespace Foam
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/MB/MB.H b/src/thermophysicalModels/liquids/MB/MB.H
index 4fb918ea02ab9421c27e86e6622fd22e8bd211cc..e9e4703e3d5d362bcc8ec7eba78e1b6a342807e9 100644
--- a/src/thermophysicalModels/liquids/MB/MB.H
+++ b/src/thermophysicalModels/liquids/MB/MB.H
@@ -31,8 +31,7 @@ Description
 SourceFiles
     MB.C
 
-*/
-// ------------------------------------------------------------------------- //
+\*---------------------------------------------------------------------------*/
 
 #ifndef MB_H
 #define MB_H
@@ -88,26 +87,9 @@ public:
     // Constructors
 
         //- Construct null
-        MB()
-        :
-            liquid(102.133, 554.5, 3.4734e+6, 0.34, 0.256, 187.35, 1.0102e-1, 375.90, 5.7373e-30, 0.3807, 1.7713e+4),
-            rho_(76.6099633, 0.257, 554.5, 0.2772),
-            pv_(107.51, -8112.9, -12.77, 9.2919e-06, 2),
-            hl_(554.5, 508307.794738233, 0.392, 0, 0, 0),
-            cp_(1135.77394182096, 2.89818178257762, 0, 0, 0, 0),
-            // NN: enthalpy, h_, is not used in the sprayModel.
-            // For consistency, the enthalpy is derived from hlat and hl.
-            // It is, however, convenient to have it available.
-            h_(-5255966.14542938, 1135.77394182096, 1.44909089128881, 0, 0, 0),
-            cpg_(875.329227575808, 2849.22600922327, 1570, 2029.70636327142, 678.3),
-            B_(0.00220496803188, -2.42184210783978, -401045.695318849, -2.85079259397061e+17, -3.57377145486767e+19),
-            mu_(-12.206, 1141.7, 0.15014, 0, 0),
-            mug_(3.733e-07, 0.6177, 256.5, 0),
-            K_(0.2298, -0.0003002, 0, 0, 0, 0),
-            Kg_(1333.1, 0.9962, 12317000000.0, 0),
-            sigma_(554.5, 0.064084, 1.2418, 0, 0, 0),
-            D_(147.18, 20.1, 102.133, 28) // NN: Same as nHeptane
-        {}
+        MB();
+
+        //- Construct from components
         MB
         (
             const liquid& l,
@@ -124,125 +106,56 @@ public:
             const NSRDSfunc2& vapourThermalConductivity,
             const NSRDSfunc6& surfaceTension,
             const APIdiffCoefFunc& vapourDiffussivity
-        )
-        :
-            liquid(l),
-            rho_(density),
-            pv_(vapourPressure),
-            hl_(heatOfVapourisation),
-            cp_(heatCapacity),
-            h_(enthalpy),
-            cpg_(idealGasHeatCapacity),
-            B_(secondVirialCoeff),
-            mu_(dynamicViscosity),
-            mug_(vapourDynamicViscosity),
-            K_(thermalConductivity),
-            Kg_(vapourThermalConductivity),
-            sigma_(surfaceTension),
-            D_(vapourDiffussivity)
-        {}
+        );
 
         //- Construct from Istream
-        MB(Istream& is)
-        :
-            liquid(is),
-            rho_(is),
-            pv_(is),
-            hl_(is),
-            cp_(is),
-            h_(is),
-            cpg_(is),
-            B_(is),
-            mu_(is),
-            mug_(is),
-            K_(is),
-            Kg_(is),
-            sigma_(is),
-            D_(is)
-        {}
+        MB(Istream& is);
 
 
     // Member Functions
 
         //- Liquid density [kg/m^3]
-        scalar rho(scalar p, scalar T) const
-        {
-            return rho_.f(p, T);
-        }
+        inline scalar rho(scalar p, scalar T) const;
 
         //- Vapour pressure [Pa]
-        scalar pv(scalar p, scalar T) const
-        {
-            return pv_.f(p, T);
-        }
+        inline scalar pv(scalar p, scalar T) const;
 
         //- Heat of vapourisation [J/kg]
-        scalar hl(scalar p, scalar T) const
-        {
-            return hl_.f(p, T);
-        }
+        inline scalar hl(scalar p, scalar T) const;
 
         //- Liquid heat capacity [J/(kg K)]
-        scalar cp(scalar p, scalar T) const
-        {
-            return cp_.f(p, T);
-        }
+        inline scalar cp(scalar p, scalar T) const;
 
         //- Liquid Enthalpy [J/(kg)]
-        scalar h(scalar p, scalar T) const
-        {
-            return h_.f(p, T);
-        }
+        inline scalar h(scalar p, scalar T) const;
 
         //- Ideal gas heat capacity [J/(kg K)]
-        scalar cpg(scalar p, scalar T) const
-        {
-            return cpg_.f(p, T);
-        }
+        inline scalar cpg(scalar p, scalar T) const;
 
         //- Second Virial Coefficient [m^3/kg]
-        scalar B(scalar p, scalar T) const
-        {
-            return B_.f(p, T);
-        }
+        inline scalar B(scalar p, scalar T) const;
 
         //- Liquid viscosity [Pa s]
-        scalar mu(scalar p, scalar T) const
-        {
-            return mu_.f(p, T);
-        }
+        inline scalar mu(scalar p, scalar T) const;
 
         //- Vapour viscosity [Pa s]
-        scalar mug(scalar p, scalar T) const
-        {
-            return mug_.f(p, T);
-        }
+        inline scalar mug(scalar p, scalar T) const;
 
         //- Liquid thermal conductivity  [W/(m K)]
-        scalar K(scalar p, scalar T) const
-        {
-            return K_.f(p, T);
-        }
+        inline scalar K(scalar p, scalar T) const;
 
         //- Vapour thermal conductivity  [W/(m K)]
-        scalar Kg(scalar p, scalar T) const
-        {
-            return Kg_.f(p, T);
-        }
+        inline scalar Kg(scalar p, scalar T) const;
 
         //- Surface tension [N/m]
-        scalar sigma(scalar p, scalar T) const
-        {
-            return sigma_.f(p, T);
-        }
+        inline scalar sigma(scalar p, scalar T) const;
 
         //- Vapour diffussivity [m2/s]
-        scalar D(scalar p, scalar T) const
-        {
-            return D_.f(p, T);
-        }
+        inline scalar D(scalar p, scalar T) const;
 
 
+    // I-O
+
         //- Write the function coefficients
         void writeData(Ostream& os) const
         {
@@ -261,9 +174,7 @@ public:
             D_.writeData(os); os << endl;
         }
 
-
-    // Ostream Operator
-
+        //- Ostream Operator
         friend Ostream& operator<<(Ostream& os, const MB& l)
         {
             l.writeData(os);
@@ -278,6 +189,10 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+#include "MBI.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 #endif
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/MB/MBI.H b/src/thermophysicalModels/liquids/MB/MBI.H
new file mode 100644
index 0000000000000000000000000000000000000000..058d2c9f26b9d737d34af97b7c031b371b8fbb82
--- /dev/null
+++ b/src/thermophysicalModels/liquids/MB/MBI.H
@@ -0,0 +1,105 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+inline Foam::scalar Foam::MB::rho(scalar p, scalar T) const
+{
+    return rho_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::MB::pv(scalar p, scalar T) const
+{
+    return pv_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::MB::hl(scalar p, scalar T) const
+{
+    return hl_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::MB::cp(scalar p, scalar T) const
+{
+    return cp_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::MB::h(scalar p, scalar T) const
+{
+    return h_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::MB::cpg(scalar p, scalar T) const
+{
+    return cpg_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::MB::B(scalar p, scalar T) const
+{
+    return B_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::MB::mu(scalar p, scalar T) const
+{
+    return mu_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::MB::mug(scalar p, scalar T) const
+{
+    return mug_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::MB::K(scalar p, scalar T) const
+{
+    return K_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::MB::Kg(scalar p, scalar T) const
+{
+    return Kg_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::MB::sigma(scalar p, scalar T) const
+{
+    return sigma_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::MB::D(scalar p, scalar T) const
+{
+    return D_.f(p, T);
+}
+
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/N2/N2.C b/src/thermophysicalModels/liquids/N2/N2.C
index 3a2c2a1e4ea433d3e46221c7d55ef248799ea517..f3458d825ebe96f3d4ca310c17fc0c6a38fa5931 100644
--- a/src/thermophysicalModels/liquids/N2/N2.C
+++ b/src/thermophysicalModels/liquids/N2/N2.C
@@ -27,19 +27,124 @@ License
 #include "N2.H"
 #include "addToRunTimeSelectionTable.H"
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 namespace Foam
 {
+    defineTypeNameAndDebug(N2, 0);
+    addToRunTimeSelectionTable(liquid, N2,);
+    addToRunTimeSelectionTable(liquid, N2, Istream);
+}
 
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::N2::N2()
+:
+    liquid
+    (
+        28.014,
+        126.10,
+        3.3944e+6,
+        0.0901,
+        0.292,
+        63.15,
+        1.2517e+4,
+        77.35,
+        0.0,
+        0.0403,
+        9.0819e+3
+    ),
+    rho_(88.8716136, 0.28479, 126.1, 0.2925),
+    pv_(59.826, -1097.6, -8.6689, 0.046346, 1.0),
+    hl_(126.10, 336617.405582923, 1.201, -1.4811, 0.7085, 0.0),
+    cp_
+    (
+       -1192.26101235097,
+        125.187406296852,
+       -1.66702363104162,
+        0.00759263225530092,
+        0.0,
+        0.0
+    ),
+    h_
+    (
+       -5480656.55276541,
+       -1192.26101235097,
+        62.5937031484258,
+       -0.555674543680541,
+        0.00189815806382523,
+        0.0
+    ),
+    cpg_(1038.94481330763, 307.52123938031, 1701.6, 3.69351038766331, 909.79),
+    B_
+    (
+        0.00166702363104162,
+       -0.533661740558292,
+       -2182.12322410223,
+        2873563218390.8,
+       -165274505604341.0
+    ),
+    mu_(32.165, 496.9, 3.9069, -1.08e-21, 10.0),
+    mug_(7.632e-07, 0.58823, 67.75, 0.0),
+    K_(0.7259, -0.016728, 0.00016215, -5.7605e-07, 0.0, 0.0),
+    Kg_(0.000351, 0.7652, 25.767, 0.0),
+    sigma_(126.10, 0.02898, 1.2457, 0.0, 0.0, 0.0),
+    D_(147.18, 20.1, 28.014, 28.0) // note: Same as nHeptane
+{}
+
+
+Foam::N2::N2
+(
+    const liquid& l,
+    const NSRDSfunc5& density,
+    const NSRDSfunc1& vapourPressure,
+    const NSRDSfunc6& heatOfVapourisation,
+    const NSRDSfunc0& heatCapacity,
+    const NSRDSfunc0& enthalpy,
+    const NSRDSfunc7& idealGasHeatCapacity,
+    const NSRDSfunc4& secondVirialCoeff,
+    const NSRDSfunc1& dynamicViscosity,
+    const NSRDSfunc2& vapourDynamicViscosity,
+    const NSRDSfunc0& thermalConductivity,
+    const NSRDSfunc2& vapourThermalConductivity,
+    const NSRDSfunc6& surfaceTension,
+    const APIdiffCoefFunc& vapourDiffussivity
+)
+:
+    liquid(l),
+    rho_(density),
+    pv_(vapourPressure),
+    hl_(heatOfVapourisation),
+    cp_(heatCapacity),
+    h_(enthalpy),
+    cpg_(idealGasHeatCapacity),
+    B_(secondVirialCoeff),
+    mu_(dynamicViscosity),
+    mug_(vapourDynamicViscosity),
+    K_(thermalConductivity),
+    Kg_(vapourThermalConductivity),
+    sigma_(surfaceTension),
+    D_(vapourDiffussivity)
+{}
 
-defineTypeNameAndDebug(N2, 0);
-addToRunTimeSelectionTable(liquid, N2,);
-addToRunTimeSelectionTable(liquid, N2, Istream);
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+Foam::N2::N2(Istream& is)
+:
+    liquid(is),
+    rho_(is),
+    pv_(is),
+    hl_(is),
+    cp_(is),
+    h_(is),
+    cpg_(is),
+    B_(is),
+    mu_(is),
+    mug_(is),
+    K_(is),
+    Kg_(is),
+    sigma_(is),
+    D_(is)
+{}
 
-} // End namespace Foam
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/N2/N2.H b/src/thermophysicalModels/liquids/N2/N2.H
index 972b97dd545e864eb8a7f1cb554f9e448abb34ea..3595320ce87def7da1aab0f8d5c0587ec49f7ce4 100644
--- a/src/thermophysicalModels/liquids/N2/N2.H
+++ b/src/thermophysicalModels/liquids/N2/N2.H
@@ -87,26 +87,9 @@ public:
     // Constructors
 
         //- Construct null
-        N2()
-        :
-            liquid(28.014, 126.10, 3.3944e+6, 0.0901, 0.292, 63.15, 1.2517e+4, 77.35, 0.0, 0.0403, 9.0819e+3),
-            rho_(88.8716136, 0.28479, 126.1, 0.2925),
-            pv_(59.826, -1097.6, -8.6689, 0.046346, 1),
-            hl_(126.10, 336617.405582923, 1.201, -1.4811, 0.7085, 0),
-            cp_(-1192.26101235097, 125.187406296852, -1.66702363104162, 0.00759263225530092, 0, 0),
-            // NN: enthalpy, h_, is not used in the sprayModel.
-            // For consistency, the enthalpy is derived from hlat and hl.
-            // It is, however, convenient to have it available.
-            h_(-5480656.55276541, -1192.26101235097, 62.5937031484258, -0.555674543680541, 0.00189815806382523, 0),
-            cpg_(1038.94481330763, 307.52123938031, 1701.6, 3.69351038766331, 909.79),
-            B_(0.00166702363104162, -0.533661740558292, -2182.12322410223, 2873563218390.8, -165274505604341.0),
-            mu_(32.165, 496.9, 3.9069, -1.08e-21, 10),
-            mug_(7.632e-07, 0.58823, 67.75, 0),
-            K_(0.7259, -0.016728, 0.00016215, -5.7605e-07, 0, 0),
-            Kg_(0.000351, 0.7652, 25.767, 0),
-            sigma_(126.10, 0.02898, 1.2457, 0, 0, 0),
-            D_(147.18, 20.1, 28.014, 28) // NN: Same as nHeptane
-        {}
+        N2();
+
+        //- Construct from components
         N2
         (
             const liquid& l,
@@ -123,125 +106,56 @@ public:
             const NSRDSfunc2& vapourThermalConductivity,
             const NSRDSfunc6& surfaceTension,
             const APIdiffCoefFunc& vapourDiffussivity
-        )
-        :
-            liquid(l),
-            rho_(density),
-            pv_(vapourPressure),
-            hl_(heatOfVapourisation),
-            cp_(heatCapacity),
-            h_(enthalpy),
-            cpg_(idealGasHeatCapacity),
-            B_(secondVirialCoeff),
-            mu_(dynamicViscosity),
-            mug_(vapourDynamicViscosity),
-            K_(thermalConductivity),
-            Kg_(vapourThermalConductivity),
-            sigma_(surfaceTension),
-            D_(vapourDiffussivity)
-        {}
+        );
 
         //- Construct from Istream
-        N2(Istream& is)
-        :
-            liquid(is),
-            rho_(is),
-            pv_(is),
-            hl_(is),
-            cp_(is),
-            h_(is),
-            cpg_(is),
-            B_(is),
-            mu_(is),
-            mug_(is),
-            K_(is),
-            Kg_(is),
-            sigma_(is),
-            D_(is)
-        {}
+        N2(Istream& is);
 
 
     // Member Functions
 
         //- Liquid density [kg/m^3]
-        scalar rho(scalar p, scalar T) const
-        {
-            return rho_.f(p, T);
-        }
+        inline scalar rho(scalar p, scalar T) const;
 
         //- Vapour pressure [Pa]
-        scalar pv(scalar p, scalar T) const
-        {
-            return pv_.f(p, T);
-        }
+        inline scalar pv(scalar p, scalar T) const;
 
         //- Heat of vapourisation [J/kg]
-        scalar hl(scalar p, scalar T) const
-        {
-            return hl_.f(p, T);
-        }
+        inline scalar hl(scalar p, scalar T) const;
 
         //- Liquid heat capacity [J/(kg K)]
-        scalar cp(scalar p, scalar T) const
-        {
-            return cp_.f(p, T);
-        }
+        inline scalar cp(scalar p, scalar T) const;
 
         //- Liquid Enthalpy [J/(kg)]
-        scalar h(scalar p, scalar T) const
-        {
-            return h_.f(p, T);
-        }
+        inline scalar h(scalar p, scalar T) const;
 
         //- Ideal gas heat capacity [J/(kg K)]
-        scalar cpg(scalar p, scalar T) const
-        {
-            return cpg_.f(p, T);
-        }
+        inline scalar cpg(scalar p, scalar T) const;
 
         //- Second Virial Coefficient [m^3/kg]
-        scalar B(scalar p, scalar T) const
-        {
-            return B_.f(p, T);
-        }
+        inline scalar B(scalar p, scalar T) const;
 
         //- Liquid viscosity [Pa s]
-        scalar mu(scalar p, scalar T) const
-        {
-            return mu_.f(p, T);
-        }
+        inline scalar mu(scalar p, scalar T) const;
 
         //- Vapour viscosity [Pa s]
-        scalar mug(scalar p, scalar T) const
-        {
-            return mug_.f(p, T);
-        }
+        inline scalar mug(scalar p, scalar T) const;
 
-        //- Liquid thermal conductivity  [W/(m K)]
-        scalar K(scalar p, scalar T) const
-        {
-            return K_.f(p, T);
-        }
+        //- Liquid thermal conductivity [W/(m K)]
+        inline scalar K(scalar p, scalar T) const;
 
-        //- Vapour thermal conductivity  [W/(m K)]
-        scalar Kg(scalar p, scalar T) const
-        {
-            return Kg_.f(p, T);
-        }
+        //- Vapour thermal conductivity [W/(m K)]
+        inline scalar Kg(scalar p, scalar T) const;
 
         //- Surface tension [N/m]
-        scalar sigma(scalar p, scalar T) const
-        {
-            return sigma_.f(p, T);
-        }
+        inline scalar sigma(scalar p, scalar T) const;
 
         //- Vapour diffussivity [m2/s]
-        scalar D(scalar p, scalar T) const
-        {
-            return D_.f(p, T);
-        }
+        inline scalar D(scalar p, scalar T) const;
 
 
+    // I-O
+
         //- Write the function coefficients
         void writeData(Ostream& os) const
         {
@@ -260,9 +174,7 @@ public:
             D_.writeData(os); os << endl;
         }
 
-
-    // Ostream Operator
-
+        //- Ostream Operator
         friend Ostream& operator<<(Ostream& os, const N2& l)
         {
             l.writeData(os);
@@ -277,6 +189,10 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+#include "N2I.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 #endif
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/N2/N2I.H b/src/thermophysicalModels/liquids/N2/N2I.H
new file mode 100644
index 0000000000000000000000000000000000000000..757f99d29395d48ee9407d33555b907ba3633b79
--- /dev/null
+++ b/src/thermophysicalModels/liquids/N2/N2I.H
@@ -0,0 +1,105 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+inline Foam::scalar Foam::N2::rho(scalar p, scalar T) const
+{
+    return rho_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::N2::pv(scalar p, scalar T) const
+{
+    return pv_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::N2::hl(scalar p, scalar T) const
+{
+    return hl_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::N2::cp(scalar p, scalar T) const
+{
+    return cp_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::N2::h(scalar p, scalar T) const
+{
+    return h_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::N2::cpg(scalar p, scalar T) const
+{
+    return cpg_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::N2::B(scalar p, scalar T) const
+{
+    return B_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::N2::mu(scalar p, scalar T) const
+{
+    return mu_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::N2::mug(scalar p, scalar T) const
+{
+    return mug_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::N2::K(scalar p, scalar T) const
+{
+    return K_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::N2::Kg(scalar p, scalar T) const
+{
+    return Kg_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::N2::sigma(scalar p, scalar T) const
+{
+    return sigma_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::N2::D(scalar p, scalar T) const
+{
+    return D_.f(p, T);
+}
+
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/aC10H7CH3/aC10H7CH3.C b/src/thermophysicalModels/liquids/aC10H7CH3/aC10H7CH3.C
index 45364056f1b7a2c40fcbcba71b1203fe88adc060..4edbe582a25d455cf0112ba9c47275dec87a03fa 100644
--- a/src/thermophysicalModels/liquids/aC10H7CH3/aC10H7CH3.C
+++ b/src/thermophysicalModels/liquids/aC10H7CH3/aC10H7CH3.C
@@ -27,19 +27,116 @@ License
 #include "aC10H7CH3.H"
 #include "addToRunTimeSelectionTable.H"
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 namespace Foam
 {
+    defineTypeNameAndDebug(aC10H7CH3, 0);
+    addToRunTimeSelectionTable(liquid, aC10H7CH3,);
+    addToRunTimeSelectionTable(liquid, aC10H7CH3, Istream);
+}
 
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::aC10H7CH3::aC10H7CH3()
+:
+    liquid
+    (
+        142.2,
+        772.04,
+        3.66e+6,
+        0.523,
+        0.298,
+        242.67,
+        3.4929e-2,
+        517.83,
+        1.7012e-30,
+        0.3478,
+        2.0176e+4
+    ),
+    rho_(60.92559, 0.22408, 772.04, 0.25709),
+    pv_(73.716, -9103.2, -7.2253, 2.062e-06, 2),
+    hl_(772.04, 511744.022503516, 0.4164, 0, 0, 0),
+    cp_(965.893108298172, 1.16216596343179, 0.00298523206751055, 0, 0, 0),
+    h_
+    (
+        38161.6838138517,
+        965.893108298172,
+        0.581082981715893,
+        0.00099507735583685,
+        0,
+        0
+    ),
+    cpg_(743.389592123769, 2703.5864978903, 1548.5, 2031.64556962025, 722.06),
+    B_
+    (
+        0.00205555555555556,
+       -3.34423347398031,
+       -931153.305203938,
+        1.87601969057665e+18,
+       -2.06448663853727e+21
+    ),
+    mu_(-93.6, 5784, 12, 0, 0),
+    mug_(2.5672e-06, 0.3566, 825.54, 0),
+    K_(0.19758, -0.0001796, 0, 0, 0, 0),
+    Kg_(0.3911, -0.1051, -213.52, 2318300),
+    sigma_(772.04, 0.076, 1.33, 0, 0, 0),
+    D_(147.18, 20.1, 142.2, 28) // note: Same as nHeptane
+{}
+
+
+Foam::aC10H7CH3::aC10H7CH3
+(
+    const liquid& l,
+    const NSRDSfunc5& density,
+    const NSRDSfunc1& vapourPressure,
+    const NSRDSfunc6& heatOfVapourisation,
+    const NSRDSfunc0& heatCapacity,
+    const NSRDSfunc0& enthalpy,
+    const NSRDSfunc7& idealGasHeatCapacity,
+    const NSRDSfunc4& secondVirialCoeff,
+    const NSRDSfunc1& dynamicViscosity,
+    const NSRDSfunc2& vapourDynamicViscosity,
+    const NSRDSfunc0& thermalConductivity,
+    const NSRDSfunc2& vapourThermalConductivity,
+    const NSRDSfunc6& surfaceTension,
+    const APIdiffCoefFunc& vapourDiffussivity
+)
+:
+    liquid(l),
+    rho_(density),
+    pv_(vapourPressure),
+    hl_(heatOfVapourisation),
+    cp_(heatCapacity),
+    h_(enthalpy),
+    cpg_(idealGasHeatCapacity),
+    B_(secondVirialCoeff),
+    mu_(dynamicViscosity),
+    mug_(vapourDynamicViscosity),
+    K_(thermalConductivity),
+    Kg_(vapourThermalConductivity),
+    sigma_(surfaceTension),
+    D_(vapourDiffussivity)
+{}
 
-defineTypeNameAndDebug(aC10H7CH3, 0);
-addToRunTimeSelectionTable(liquid, aC10H7CH3,);
-addToRunTimeSelectionTable(liquid, aC10H7CH3, Istream);
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+Foam::aC10H7CH3::aC10H7CH3(Istream& is)
+:
+    liquid(is),
+    rho_(is),
+    pv_(is),
+    hl_(is),
+    cp_(is),
+    h_(is),
+    cpg_(is),
+    B_(is),
+    mu_(is),
+    mug_(is),
+    K_(is),
+    Kg_(is),
+    sigma_(is),
+    D_(is)
+{}
 
-} // End namespace Foam
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/aC10H7CH3/aC10H7CH3.H b/src/thermophysicalModels/liquids/aC10H7CH3/aC10H7CH3.H
index 97eb8051ba21da7ba4f0a44c43036d7f3aa1d476..7489d6a0e4da24a569b81adf7d0ad6f10e097897 100644
--- a/src/thermophysicalModels/liquids/aC10H7CH3/aC10H7CH3.H
+++ b/src/thermophysicalModels/liquids/aC10H7CH3/aC10H7CH3.H
@@ -54,7 +54,7 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                           Class aC10H7CH3 Declaration
+                          Class aC10H7CH3 Declaration
 \*---------------------------------------------------------------------------*/
 
 class aC10H7CH3
@@ -87,26 +87,9 @@ public:
     // Constructors
 
         //- Construct null
-        aC10H7CH3()
-        :
-            liquid(142.2, 772.04, 3.66e+6, 0.523, 0.298, 242.67, 3.4929e-2, 517.83, 1.7012e-30, 0.3478, 2.0176e+4),
-            rho_(60.92559, 0.22408, 772.04, 0.25709),
-            pv_(73.716, -9103.2, -7.2253, 2.062e-06, 2),
-            hl_(772.04, 511744.022503516, 0.4164, 0, 0, 0),
-            cp_(965.893108298172, 1.16216596343179, 0.00298523206751055, 0, 0, 0),
-            // NN: enthalpy, h_, is not used in the sprayModel.
-            // For consistency, the enthalpy is derived from hlat and hl.
-            // It is, however, convenient to have it available.
-            h_(38161.6838138517, 965.893108298172, 0.581082981715893, 0.00099507735583685, 0, 0),
-            cpg_(743.389592123769, 2703.5864978903, 1548.5, 2031.64556962025, 722.06),
-            B_(0.00205555555555556, -3.34423347398031, -931153.305203938, 1.87601969057665e+18, -2.06448663853727e+21),
-            mu_(-93.6, 5784, 12, 0, 0),
-            mug_(2.5672e-06, 0.3566, 825.54, 0),
-            K_(0.19758, -0.0001796, 0, 0, 0, 0),
-            Kg_(0.3911, -0.1051, -213.52, 2318300),
-            sigma_(772.04, 0.076, 1.33, 0, 0, 0),
-            D_(147.18, 20.1, 142.2, 28) // NN: Same as nHeptane
-        {}
+        aC10H7CH3();
+
+        //- Constrcut from components
         aC10H7CH3
         (
             const liquid& l,
@@ -123,124 +106,55 @@ public:
             const NSRDSfunc2& vapourThermalConductivity,
             const NSRDSfunc6& surfaceTension,
             const APIdiffCoefFunc& vapourDiffussivity
-        )
-        :
-            liquid(l),
-            rho_(density),
-            pv_(vapourPressure),
-            hl_(heatOfVapourisation),
-            cp_(heatCapacity),
-            h_(enthalpy),
-            cpg_(idealGasHeatCapacity),
-            B_(secondVirialCoeff),
-            mu_(dynamicViscosity),
-            mug_(vapourDynamicViscosity),
-            K_(thermalConductivity),
-            Kg_(vapourThermalConductivity),
-            sigma_(surfaceTension),
-            D_(vapourDiffussivity)
-        {}
+        );
 
         //- Construct from Istream
-        aC10H7CH3(Istream& is)
-        :
-            liquid(is),
-            rho_(is),
-            pv_(is),
-            hl_(is),
-            cp_(is),
-            h_(is),
-            cpg_(is),
-            B_(is),
-            mu_(is),
-            mug_(is),
-            K_(is),
-            Kg_(is),
-            sigma_(is),
-            D_(is)
-        {}
+        aC10H7CH3(Istream& is);
 
 
     // Member Functions
 
         //- Liquid density [kg/m^3]
-        scalar rho(scalar p, scalar T) const
-        {
-            return rho_.f(p, T);
-        }
+        inline scalar rho(scalar p, scalar T) const;
 
         //- Vapour pressure [Pa]
-        scalar pv(scalar p, scalar T) const
-        {
-            return pv_.f(p, T);
-        }
+        inline scalar pv(scalar p, scalar T) const;
 
         //- Heat of vapourisation [J/kg]
-        scalar hl(scalar p, scalar T) const
-        {
-            return hl_.f(p, T);
-        }
+        inline scalar hl(scalar p, scalar T) const;
 
         //- Liquid heat capacity [J/(kg K)]
-        scalar cp(scalar p, scalar T) const
-        {
-            return cp_.f(p, T);
-        }
+        inline scalar cp(scalar p, scalar T) const;
 
         //- Liquid Enthalpy [J/(kg)]
-        scalar h(scalar p, scalar T) const
-        {
-            return h_.f(p, T);
-        }
+        inline scalar h(scalar p, scalar T) const;
 
         //- Ideal gas heat capacity [J/(kg K)]
-        scalar cpg(scalar p, scalar T) const
-        {
-            return cpg_.f(p, T);
-        }
+        inline scalar cpg(scalar p, scalar T) const;
 
         //- Second Virial Coefficient [m^3/kg]
-        scalar B(scalar p, scalar T) const
-        {
-            return B_.f(p, T);
-        }
+        inline scalar B(scalar p, scalar T) const;
 
         //- Liquid viscosity [Pa s]
-        scalar mu(scalar p, scalar T) const
-        {
-            return mu_.f(p, T);
-        }
+        inline scalar mu(scalar p, scalar T) const;
 
         //- Vapour viscosity [Pa s]
-        scalar mug(scalar p, scalar T) const
-        {
-            return mug_.f(p, T);
-        }
+        inline scalar mug(scalar p, scalar T) const;
 
         //- Liquid thermal conductivity  [W/(m K)]
-        scalar K(scalar p, scalar T) const
-        {
-            return K_.f(p, T);
-        }
+        inline scalar K(scalar p, scalar T) const;
 
         //- Vapour thermal conductivity  [W/(m K)]
-        scalar Kg(scalar p, scalar T) const
-        {
-            return Kg_.f(p, T);
-        }
+        inline scalar Kg(scalar p, scalar T) const;
 
         //- Surface tension [N/m]
-        scalar sigma(scalar p, scalar T) const
-        {
-            return sigma_.f(p, T);
-        }
+        inline scalar sigma(scalar p, scalar T) const;
 
         //- Vapour diffussivity [m2/s]
-        scalar D(scalar p, scalar T) const
-        {
-            return D_.f(p, T);
-        }
+        inline scalar D(scalar p, scalar T) const;
+
 
+    // I-O
 
         //- Write the function coefficients
         void writeData(Ostream& os) const
@@ -261,8 +175,7 @@ public:
         }
 
 
-    // Ostream Operator
-
+        //- Ostream Operator
         friend Ostream& operator<<(Ostream& os, const aC10H7CH3& l)
         {
             l.writeData(os);
@@ -277,6 +190,10 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+#include "aC10H7CH3I.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 #endif
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/aC10H7CH3/aC10H7CH3I.H b/src/thermophysicalModels/liquids/aC10H7CH3/aC10H7CH3I.H
new file mode 100644
index 0000000000000000000000000000000000000000..4cf642cc0be9d1e8e39607a66d0055d295615bae
--- /dev/null
+++ b/src/thermophysicalModels/liquids/aC10H7CH3/aC10H7CH3I.H
@@ -0,0 +1,105 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+inline Foam::scalar Foam::aC10H7CH3::rho(scalar p, scalar T) const
+{
+    return rho_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::aC10H7CH3::pv(scalar p, scalar T) const
+{
+    return pv_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::aC10H7CH3::hl(scalar p, scalar T) const
+{
+    return hl_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::aC10H7CH3::cp(scalar p, scalar T) const
+{
+    return cp_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::aC10H7CH3::h(scalar p, scalar T) const
+{
+    return h_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::aC10H7CH3::cpg(scalar p, scalar T) const
+{
+    return cpg_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::aC10H7CH3::B(scalar p, scalar T) const
+{
+    return B_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::aC10H7CH3::mu(scalar p, scalar T) const
+{
+    return mu_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::aC10H7CH3::mug(scalar p, scalar T) const
+{
+    return mug_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::aC10H7CH3::K(scalar p, scalar T) const
+{
+    return K_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::aC10H7CH3::Kg(scalar p, scalar T) const
+{
+    return Kg_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::aC10H7CH3::sigma(scalar p, scalar T) const
+{
+    return sigma_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::aC10H7CH3::D(scalar p, scalar T) const
+{
+    return D_.f(p, T);
+}
+
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/bC10H7CH3/bC10H7CH3.C b/src/thermophysicalModels/liquids/bC10H7CH3/bC10H7CH3.C
index a24626852dec8814b82f314e046500810a5b089b..545176895d89112d0e0d49a248e1091c964338e4 100644
--- a/src/thermophysicalModels/liquids/bC10H7CH3/bC10H7CH3.C
+++ b/src/thermophysicalModels/liquids/bC10H7CH3/bC10H7CH3.C
@@ -27,19 +27,116 @@ License
 #include "bC10H7CH3.H"
 #include "addToRunTimeSelectionTable.H"
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 namespace Foam
 {
+    defineTypeNameAndDebug(bC10H7CH3, 0);
+    addToRunTimeSelectionTable(liquid, bC10H7CH3,);
+    addToRunTimeSelectionTable(liquid, bC10H7CH3, Istream);
+}
 
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::bC10H7CH3::bC10H7CH3()
+:
+    liquid
+    (
+        142.2,
+        761.0,
+        3.25e+6,
+        0.507,
+        0.260,
+        307.73,
+        1.7374e+1,
+        514.20,
+        1.4010e-30,
+        0.3459,
+        1.987e+4
+    ),
+    rho_(67.36014, 0.23843, 761, 0.2559),
+    pv_(134.31, -12103, -16.195, 6.9659e-06, 2),
+    hl_(761.0, 513150.492264416, 0.4044, 0.0, 0.0, 0.0),
+    cp_(811.322081575246, 2.30225035161744, 0.0008628691983122, 0.0, 0.0, 0.0),
+    h_
+    (
+        45001.2311880177,
+        811.322081575246,
+        1.15112517580872,
+        0.000287623066104079,
+        0.0,
+        0.0
+    ),
+    cpg_(760.126582278481, 2699.08579465542, 1564.1, 1994.51476793249, 727.49),
+    B_
+    (
+        0.00229430379746835,
+       -3.53720112517581,
+       -1067158.93108298,
+        2.29746835443038e+18,
+       -2.68438818565401e+21
+    ),
+    mu_(-63.276, 4219, 7.5549, 0.0, 0.0),
+    mug_(2.1791e-06, 0.3717, 712.53, 0.0),
+    K_(0.1962, -0.00018414, 0.0, 0.0, 0.0, 0.0),
+    Kg_(0.4477, -0.1282, -345.89, 2340100),
+    sigma_(761.0, 0.066442, 1.2634, 0.0, 0.0, 0.0),
+    D_(147.18, 20.1, 142.2, 28) // note: Same as nHeptane
+{}
+
+
+Foam::bC10H7CH3::bC10H7CH3
+(
+    const liquid& l,
+    const NSRDSfunc5& density,
+    const NSRDSfunc1& vapourPressure,
+    const NSRDSfunc6& heatOfVapourisation,
+    const NSRDSfunc0& heatCapacity,
+    const NSRDSfunc0& enthalpy,
+    const NSRDSfunc7& idealGasHeatCapacity,
+    const NSRDSfunc4& secondVirialCoeff,
+    const NSRDSfunc1& dynamicViscosity,
+    const NSRDSfunc2& vapourDynamicViscosity,
+    const NSRDSfunc0& thermalConductivity,
+    const NSRDSfunc2& vapourThermalConductivity,
+    const NSRDSfunc6& surfaceTension,
+    const APIdiffCoefFunc& vapourDiffussivity
+)
+:
+    liquid(l),
+    rho_(density),
+    pv_(vapourPressure),
+    hl_(heatOfVapourisation),
+    cp_(heatCapacity),
+    h_(enthalpy),
+    cpg_(idealGasHeatCapacity),
+    B_(secondVirialCoeff),
+    mu_(dynamicViscosity),
+    mug_(vapourDynamicViscosity),
+    K_(thermalConductivity),
+    Kg_(vapourThermalConductivity),
+    sigma_(surfaceTension),
+    D_(vapourDiffussivity)
+{}
 
-defineTypeNameAndDebug(bC10H7CH3, 0);
-addToRunTimeSelectionTable(liquid, bC10H7CH3,);
-addToRunTimeSelectionTable(liquid, bC10H7CH3, Istream);
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+Foam::bC10H7CH3::bC10H7CH3(Istream& is)
+:
+    liquid(is),
+    rho_(is),
+    pv_(is),
+    hl_(is),
+    cp_(is),
+    h_(is),
+    cpg_(is),
+    B_(is),
+    mu_(is),
+    mug_(is),
+    K_(is),
+    Kg_(is),
+    sigma_(is),
+    D_(is)
+{}
 
-} // End namespace Foam
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/bC10H7CH3/bC10H7CH3.H b/src/thermophysicalModels/liquids/bC10H7CH3/bC10H7CH3.H
index 4fffdd559c784fef183ca966e2958a043e68c318..add7fa7e934136e2587b89c2a80173bba0b3bbf2 100644
--- a/src/thermophysicalModels/liquids/bC10H7CH3/bC10H7CH3.H
+++ b/src/thermophysicalModels/liquids/bC10H7CH3/bC10H7CH3.H
@@ -87,26 +87,9 @@ public:
     // Constructors
 
         //- Construct null
-        bC10H7CH3()
-        :
-            liquid(142.2, 761.0, 3.25e+6, 0.507, 0.260, 307.73, 1.7374e+1, 514.20, 1.4010e-30, 0.3459, 1.987e+4),
-            rho_(67.36014, 0.23843, 761, 0.2559),
-            pv_(134.31, -12103, -16.195, 6.9659e-06, 2),
-            hl_(761.0, 513150.492264416, 0.4044, 0, 0, 0),
-            cp_(811.322081575246, 2.30225035161744, 0.000862869198312236, 0, 0, 0),
-            // NN: enthalpy, h_, is not used in the sprayModel.
-            // For consistency, the enthalpy is derived from hlat and hl.
-            // It is, however, convenient to have it available.
-            h_(45001.2311880177, 811.322081575246, 1.15112517580872, 0.000287623066104079, 0, 0),
-            cpg_(760.126582278481, 2699.08579465542, 1564.1, 1994.51476793249, 727.49),
-            B_(0.00229430379746835, -3.53720112517581, -1067158.93108298, 2.29746835443038e+18, -2.68438818565401e+21),
-            mu_(-63.276, 4219, 7.5549, 0, 0),
-            mug_(2.1791e-06, 0.3717, 712.53, 0),
-            K_(0.1962, -0.00018414, 0, 0, 0, 0),
-            Kg_(0.4477, -0.1282, -345.89, 2340100),
-            sigma_(761.0, 0.066442, 1.2634, 0, 0, 0),
-            D_(147.18, 20.1, 142.2, 28) // NN: Same as nHeptane
-        {}
+        bC10H7CH3();
+
+        //- Construct from components
         bC10H7CH3
         (
             const liquid& l,
@@ -123,125 +106,56 @@ public:
             const NSRDSfunc2& vapourThermalConductivity,
             const NSRDSfunc6& surfaceTension,
             const APIdiffCoefFunc& vapourDiffussivity
-        )
-        :
-            liquid(l),
-            rho_(density),
-            pv_(vapourPressure),
-            hl_(heatOfVapourisation),
-            cp_(heatCapacity),
-            h_(enthalpy),
-            cpg_(idealGasHeatCapacity),
-            B_(secondVirialCoeff),
-            mu_(dynamicViscosity),
-            mug_(vapourDynamicViscosity),
-            K_(thermalConductivity),
-            Kg_(vapourThermalConductivity),
-            sigma_(surfaceTension),
-            D_(vapourDiffussivity)
-        {}
+        );
 
         //- Construct from Istream
-        bC10H7CH3(Istream& is)
-        :
-            liquid(is),
-            rho_(is),
-            pv_(is),
-            hl_(is),
-            cp_(is),
-            h_(is),
-            cpg_(is),
-            B_(is),
-            mu_(is),
-            mug_(is),
-            K_(is),
-            Kg_(is),
-            sigma_(is),
-            D_(is)
-        {}
+        bC10H7CH3(Istream& is);
 
 
     // Member Functions
 
         //- Liquid density [kg/m^3]
-        scalar rho(scalar p, scalar T) const
-        {
-            return rho_.f(p, T);
-        }
+        inline scalar rho(scalar p, scalar T) const;
 
         //- Vapour pressure [Pa]
-        scalar pv(scalar p, scalar T) const
-        {
-            return pv_.f(p, T);
-        }
+        inline scalar pv(scalar p, scalar T) const;
 
         //- Heat of vapourisation [J/kg]
-        scalar hl(scalar p, scalar T) const
-        {
-            return hl_.f(p, T);
-        }
+        inline scalar hl(scalar p, scalar T) const;
 
         //- Liquid heat capacity [J/(kg K)]
-        scalar cp(scalar p, scalar T) const
-        {
-            return cp_.f(p, T);
-        }
+        inline scalar cp(scalar p, scalar T) const;
 
         //- Liquid Enthalpy [J/(kg)]
-        scalar h(scalar p, scalar T) const
-        {
-            return h_.f(p, T);
-        }
+        inline scalar h(scalar p, scalar T) const;
 
         //- Ideal gas heat capacity [J/(kg K)]
-        scalar cpg(scalar p, scalar T) const
-        {
-            return cpg_.f(p, T);
-        }
+        inline scalar cpg(scalar p, scalar T) const;
 
         //- Second Virial Coefficient [m^3/kg]
-        scalar B(scalar p, scalar T) const
-        {
-            return B_.f(p, T);
-        }
+        inline scalar B(scalar p, scalar T) const;
 
         //- Liquid viscosity [Pa s]
-        scalar mu(scalar p, scalar T) const
-        {
-            return mu_.f(p, T);
-        }
+        inline scalar mu(scalar p, scalar T) const;
 
         //- Vapour viscosity [Pa s]
-        scalar mug(scalar p, scalar T) const
-        {
-            return mug_.f(p, T);
-        }
+        inline scalar mug(scalar p, scalar T) const;
 
-        //- Liquid thermal conductivity  [W/(m K)]
-        scalar K(scalar p, scalar T) const
-        {
-            return K_.f(p, T);
-        }
+        //- Liquid thermal conductivity [W/(m K)]
+        inline scalar K(scalar p, scalar T) const;
 
-        //- Vapour thermal conductivity  [W/(m K)]
-        scalar Kg(scalar p, scalar T) const
-        {
-            return Kg_.f(p, T);
-        }
+        //- Vapour thermal conductivity [W/(m K)]
+        inline scalar Kg(scalar p, scalar T) const;
 
         //- Surface tension [N/m]
-        scalar sigma(scalar p, scalar T) const
-        {
-            return sigma_.f(p, T);
-        }
+        inline scalar sigma(scalar p, scalar T) const;
 
         //- Vapour diffussivity [m2/s]
-        scalar D(scalar p, scalar T) const
-        {
-            return D_.f(p, T);
-        }
+        inline scalar D(scalar p, scalar T) const;
 
 
+    // I-O
+
         //- Write the function coefficients
         void writeData(Ostream& os) const
         {
@@ -260,9 +174,7 @@ public:
             D_.writeData(os); os << endl;
         }
 
-
-    // Ostream Operator
-
+        //- Ostream Operator
         friend Ostream& operator<<(Ostream& os, const bC10H7CH3& l)
         {
             l.writeData(os);
@@ -277,6 +189,10 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+#include "bC10H7CH3I.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 #endif
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/bC10H7CH3/bC10H7CH3I.H b/src/thermophysicalModels/liquids/bC10H7CH3/bC10H7CH3I.H
new file mode 100644
index 0000000000000000000000000000000000000000..1be40b2f2d61f3b6c0bd0c32fb8d1e056174e36d
--- /dev/null
+++ b/src/thermophysicalModels/liquids/bC10H7CH3/bC10H7CH3I.H
@@ -0,0 +1,105 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+inline Foam::scalar Foam::bC10H7CH3::rho(scalar p, scalar T) const
+{
+    return rho_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::bC10H7CH3::pv(scalar p, scalar T) const
+{
+    return pv_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::bC10H7CH3::hl(scalar p, scalar T) const
+{
+    return hl_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::bC10H7CH3::cp(scalar p, scalar T) const
+{
+    return cp_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::bC10H7CH3::h(scalar p, scalar T) const
+{
+    return h_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::bC10H7CH3::cpg(scalar p, scalar T) const
+{
+    return cpg_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::bC10H7CH3::B(scalar p, scalar T) const
+{
+    return B_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::bC10H7CH3::mu(scalar p, scalar T) const
+{
+    return mu_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::bC10H7CH3::mug(scalar p, scalar T) const
+{
+    return mug_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::bC10H7CH3::K(scalar p, scalar T) const
+{
+    return K_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::bC10H7CH3::Kg(scalar p, scalar T) const
+{
+    return Kg_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::bC10H7CH3::sigma(scalar p, scalar T) const
+{
+    return sigma_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::bC10H7CH3::D(scalar p, scalar T) const
+{
+    return D_.f(p, T);
+}
+
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/iC3H8O/iC3H8O.C b/src/thermophysicalModels/liquids/iC3H8O/iC3H8O.C
index 0cc62cedb91d645aaf0feaeecaa4b0ce1a06026f..f3985234601a2e733a45cacba016299ffd5b0efd 100644
--- a/src/thermophysicalModels/liquids/iC3H8O/iC3H8O.C
+++ b/src/thermophysicalModels/liquids/iC3H8O/iC3H8O.C
@@ -24,25 +24,129 @@ License
 
 Description
 
--------------------------------------------------------------------------------
-*/
+\*---------------------------------------------------------------------------*/
 
 #include "iC3H8O.H"
 #include "addToRunTimeSelectionTable.H"
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 namespace Foam
 {
+    defineTypeNameAndDebug(iC3H8O, 0);
+    addToRunTimeSelectionTable(liquid, iC3H8O,);
+    addToRunTimeSelectionTable(liquid, iC3H8O, Istream);
+}
 
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::iC3H8O::iC3H8O()
+:
+    liquid
+    (
+        60.096,
+        508.31,
+        4.7643e+6,
+        0.22013,
+        0.248,
+        185.28,
+        3.20e-2,
+        355.41,
+        5.5372e-30,
+        0.6689,
+        2.3575e+4
+    ),
+    rho_(70.91328, 0.26475, 508.31, 0.243),
+    pv_(92.935, -8177.1, -10.031, 3.9988e-06, 2.0),
+    hl_(508.31, 948149.627263046, 0.087, 0.3007, 0.0, 0.0),
+    cp_
+    (
+        7760.91586794462,
+       -68.3672790202343,
+        0.241380457933972,
+       -0.000235057241746539,
+        0.0,
+        0.0
+    ),
+    h_
+    (
+       -6227786.27583977,
+        7760.91586794462,
+       -34.1836395101172,
+        0.0804601526446574,
+       -5.87643104366347e-05,
+        0.0
+    ),
+    cpg_(789.73642172524, 3219.8482428115, 1124, 1560.83599574015, 460.0),
+    B_
+    (
+        0.000502529286474973,
+       -0.104665867944622,
+       -717185.83599574,
+        3.3047124600639e+18,
+       -1.43270766773163e+21
+    ),
+    mu_(-8.23, 2282.2, -0.98495, 0.0, 0.0),
+    mug_(1.993e-07, 0.7233, 178.0, 0.0),
+    K_(0.2029, -0.0002278, 0.0, 0.0, 0.0, 0.0),
+    Kg_(-80.642, -1.4549, -604.42, 0.0),
+    sigma_(0.03818, -3.818e-05, -6.51e-08, 0.0, 0.0, 0.0),
+    D_(4.75e-10, 1.75, 0.0, 0.0, 0.0)
+{}
+
+
+Foam::iC3H8O::iC3H8O
+(
+    const liquid& l,
+    const NSRDSfunc5& density,
+    const NSRDSfunc1& vapourPressure,
+    const NSRDSfunc6& heatOfVapourisation,
+    const NSRDSfunc0& heatCapacity,
+    const NSRDSfunc0& enthalpy,
+    const NSRDSfunc7& idealGasHeatCapacity,
+    const NSRDSfunc4& secondVirialCoeff,
+    const NSRDSfunc1& dynamicViscosity,
+    const NSRDSfunc2& vapourDynamicViscosity,
+    const NSRDSfunc0& thermalConductivity,
+    const NSRDSfunc2& vapourThermalConductivity,
+    const NSRDSfunc0& surfaceTension,
+    const NSRDSfunc1& vapourDiffussivity
+)
+:
+    liquid(l),
+    rho_(density),
+    pv_(vapourPressure),
+    hl_(heatOfVapourisation),
+    cp_(heatCapacity),
+    h_(enthalpy),
+    cpg_(idealGasHeatCapacity),
+    B_(secondVirialCoeff),
+    mu_(dynamicViscosity),
+    mug_(vapourDynamicViscosity),
+    K_(thermalConductivity),
+    Kg_(vapourThermalConductivity),
+    sigma_(surfaceTension),
+    D_(vapourDiffussivity)
+{}
 
-defineTypeNameAndDebug(iC3H8O, 0);
-addToRunTimeSelectionTable(liquid, iC3H8O,);
-addToRunTimeSelectionTable(liquid, iC3H8O, Istream);
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+Foam::iC3H8O::iC3H8O(Istream& is)
+:
+    liquid(is),
+    rho_(is),
+    pv_(is),
+    hl_(is),
+    cp_(is),
+    h_(is),
+    cpg_(is),
+    B_(is),
+    mu_(is),
+    mug_(is),
+    K_(is),
+    Kg_(is),
+    sigma_(is),
+    D_(is)
+{}
 
-} // End namespace Foam
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/iC3H8O/iC3H8O.H b/src/thermophysicalModels/liquids/iC3H8O/iC3H8O.H
index ffa2acb32e301048288fbefe2b01aa89a78a9a6f..d6f59b9568aa9b2ce300d1327f03800a9c7be779 100644
--- a/src/thermophysicalModels/liquids/iC3H8O/iC3H8O.H
+++ b/src/thermophysicalModels/liquids/iC3H8O/iC3H8O.H
@@ -85,26 +85,9 @@ public:
     // Constructors
 
         //- Construct null
-        iC3H8O()
-        :
-            liquid(60.096, 508.31, 4.7643e+6, 0.22013, 0.248, 185.28, 3.20e-2, 355.41, 5.5372e-30, 0.6689, 2.3575e+4),
-            rho_(70.91328, 0.26475, 508.31, 0.243),
-            pv_(92.935, -8177.1, -10.031, 3.9988e-06, 2),
-            hl_(508.31, 948149.627263046, 0.087, 0.3007, 0, 0),
-            cp_(7760.91586794462, -68.3672790202343, 0.241380457933972, -0.000235057241746539, 0, 0),
-            // NN: enthalpy, h_, is not used in the sprayModel.
-            // For consistency, the enthalpy is derived from hlat and hl.
-            // It is, however, convenient to have it available.
-            h_(-6227786.27583977, 7760.91586794462, -34.1836395101172, 0.0804601526446574, -5.87643104366347e-05, 0),
-            cpg_(789.73642172524, 3219.8482428115, 1124, 1560.83599574015, 460),
-            B_(0.000502529286474973, -0.104665867944622, -717185.83599574, 3.3047124600639e+18, -1.43270766773163e+21),
-            mu_(-8.23, 2282.2, -0.98495, 0, 0),
-            mug_(1.993e-07, 0.7233, 178, 0),
-            K_(0.2029, -0.0002278, 0, 0, 0, 0),
-            Kg_(-80.642, -1.4549, -604.42, 0),
-            sigma_(0.03818, -3.818e-05, -6.51e-08, 0, 0, 0),
-            D_(4.75e-10, 1.75, 0.0, 0.0, 0.0) // NN. same as iC3H8O
-        {}
+        iC3H8O();
+
+        //- Constrcut from components
         iC3H8O
         (
             const liquid& l,
@@ -121,125 +104,56 @@ public:
             const NSRDSfunc2& vapourThermalConductivity,
             const NSRDSfunc0& surfaceTension,
             const NSRDSfunc1& vapourDiffussivity
-        )
-        :
-            liquid(l),
-            rho_(density),
-            pv_(vapourPressure),
-            hl_(heatOfVapourisation),
-            cp_(heatCapacity),
-            h_(enthalpy),
-            cpg_(idealGasHeatCapacity),
-            B_(secondVirialCoeff),
-            mu_(dynamicViscosity),
-            mug_(vapourDynamicViscosity),
-            K_(thermalConductivity),
-            Kg_(vapourThermalConductivity),
-            sigma_(surfaceTension),
-            D_(vapourDiffussivity)
-        {}
+        );
 
         //- Construct from Istream
-        iC3H8O(Istream& is)
-        :
-            liquid(is),
-            rho_(is),
-            pv_(is),
-            hl_(is),
-            cp_(is),
-            h_(is),
-            cpg_(is),
-            B_(is),
-            mu_(is),
-            mug_(is),
-            K_(is),
-            Kg_(is),
-            sigma_(is),
-            D_(is)
-        {}
+        iC3H8O(Istream& is);
 
 
     // Member Functions
 
         //- Liquid density [kg/m^3]
-        scalar rho(scalar p, scalar T) const
-        {
-            return rho_.f(p, T);
-        }
+        inline scalar rho(scalar p, scalar T) const;
 
         //- Vapour pressure [Pa]
-        scalar pv(scalar p, scalar T) const
-        {
-            return pv_.f(p, T);
-        }
+        inline scalar pv(scalar p, scalar T) const;
 
         //- Heat of vapourisation [J/kg]
-        scalar hl(scalar p, scalar T) const
-        {
-            return hl_.f(p, T);
-        }
+        inline scalar hl(scalar p, scalar T) const;
 
         //- Liquid heat capacity [J/(kg K)]
-        scalar cp(scalar p, scalar T) const
-        {
-            return cp_.f(p, T);
-        }
+        inline scalar cp(scalar p, scalar T) const;
 
         //- Liquid Enthalpy [J/(kg)]
-        scalar h(scalar p, scalar T) const
-        {
-            return h_.f(p, T);
-        }
+        inline scalar h(scalar p, scalar T) const;
 
         //- Ideal gas heat capacity [J/(kg K)]
-        scalar cpg(scalar p, scalar T) const
-        {
-            return cpg_.f(p, T);
-        }
+        inline scalar cpg(scalar p, scalar T) const;
 
         //- Second Virial Coefficient [m^3/kg]
-        scalar B(scalar p, scalar T) const
-        {
-            return B_.f(p, T);
-        }
+        inline scalar B(scalar p, scalar T) const;
 
         //- Liquid viscosity [Pa s]
-        scalar mu(scalar p, scalar T) const
-        {
-            return mu_.f(p, T);
-        }
+        inline scalar mu(scalar p, scalar T) const;
 
         //- Vapour viscosity [Pa s]
-        scalar mug(scalar p, scalar T) const
-        {
-            return mug_.f(p, T);
-        }
+        inline scalar mug(scalar p, scalar T) const;
 
         //- Liquid thermal conductivity  [W/(m K)]
-        scalar K(scalar p, scalar T) const
-        {
-            return K_.f(p, T);
-        }
+        inline scalar K(scalar p, scalar T) const;
 
         //- Vapour thermal conductivity  [W/(m K)]
-        scalar Kg(scalar p, scalar T) const
-        {
-            return Kg_.f(p, T);
-        }
+        inline scalar Kg(scalar p, scalar T) const;
 
         //- Surface tension [N/m]
-        scalar sigma(scalar p, scalar T) const
-        {
-            return sigma_.f(p, T);
-        }
+        inline scalar sigma(scalar p, scalar T) const;
 
         //- Vapour diffussivity [m2/s]
-        scalar D(scalar p, scalar T) const
-        {
-            return D_.f(p, T);
-        }
+        inline scalar D(scalar p, scalar T) const;
 
 
+    // I-O
+
         //- Write the function coefficients
         void writeData(Ostream& os) const
         {
@@ -258,9 +172,7 @@ public:
             D_.writeData(os); os << endl;
         }
 
-
-    // Ostream Operator
-
+        //- Ostream Operator
         friend Ostream& operator<<(Ostream& os, const iC3H8O& l)
         {
             l.writeData(os);
@@ -275,6 +187,10 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+#include "iC3H8OI.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 #endif
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/iC3H8O/iC3H8OI.H b/src/thermophysicalModels/liquids/iC3H8O/iC3H8OI.H
new file mode 100644
index 0000000000000000000000000000000000000000..3ec8bd368df335a009bdc1ec9642bc81c8ea8f4e
--- /dev/null
+++ b/src/thermophysicalModels/liquids/iC3H8O/iC3H8OI.H
@@ -0,0 +1,106 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+inline Foam::scalar Foam::iC3H8O::rho(scalar p, scalar T) const
+{
+    return rho_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::iC3H8O::pv(scalar p, scalar T) const
+{
+    return pv_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::iC3H8O::hl(scalar p, scalar T) const
+{
+    return hl_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::iC3H8O::cp(scalar p, scalar T) const
+{
+    return cp_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::iC3H8O::h(scalar p, scalar T) const
+{
+    return h_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::iC3H8O::cpg(scalar p, scalar T) const
+{
+    return cpg_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::iC3H8O::B(scalar p, scalar T) const
+{
+    return B_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::iC3H8O::mu(scalar p, scalar T) const
+{
+    return mu_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::iC3H8O::mug(scalar p, scalar T) const
+{
+    return mug_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::iC3H8O::K(scalar p, scalar T) const
+{
+    return K_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::iC3H8O::Kg(scalar p, scalar T) const
+{
+    return Kg_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::iC3H8O::sigma(scalar p, scalar T) const
+{
+    return sigma_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::iC3H8O::D(scalar p, scalar T) const
+{
+    return D_.f(p, T);
+}
+
+
+// ************************************************************************* //
+
diff --git a/src/thermophysicalModels/liquids/liquid/liquid.C b/src/thermophysicalModels/liquids/liquid/liquid.C
index e4ffc44b010412a060395ad7ccc2e645b3ab1e06..c2b5f8b3fad858d6e93fb1f06aad83b680dd23ba 100644
--- a/src/thermophysicalModels/liquids/liquid/liquid.C
+++ b/src/thermophysicalModels/liquids/liquid/liquid.C
@@ -33,16 +33,14 @@ License
 
 namespace Foam
 {
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-defineTypeNameAndDebug(liquid, 0);
-defineRunTimeSelectionTable(liquid,);
-defineRunTimeSelectionTable(liquid, Istream);
+    defineTypeNameAndDebug(liquid, 0);
+    defineRunTimeSelectionTable(liquid,);
+    defineRunTimeSelectionTable(liquid, Istream);
+}
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-autoPtr<liquid> liquid::New(Istream& is)
+Foam::autoPtr<Foam::liquid> Foam::liquid::New(Istream& is)
 {
     if (debug)
     {
@@ -64,8 +62,8 @@ autoPtr<liquid> liquid::New(Istream& is)
         {
             FatalErrorIn("liquid::New(Istream&)")
                 << "Unknown liquid type " << liquidType
-                << endl << endl
-                << "Valid liquid types are :" << endl
+                << nl << nl
+                << "Valid liquid types are:" << nl
                 << ConstructorTablePtr_->toc()
                 << abort(FatalError);
         }
@@ -82,7 +80,7 @@ autoPtr<liquid> liquid::New(Istream& is)
             FatalErrorIn("liquid::New(Istream&)")
                 << "Unknown liquid type " << liquidType
                 << endl << endl
-                << "Valid liquid types are :" << endl
+                << "Valid liquid types are:" << nl
                 << IstreamConstructorTablePtr_->toc()
                 << abort(FatalError);
         }
@@ -102,8 +100,4 @@ autoPtr<liquid> liquid::New(Istream& is)
 }
 
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-} // End namespace Foam
-
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/liquid/liquid.H b/src/thermophysicalModels/liquids/liquid/liquid.H
index 27bbff55bf2ea53e89432595f9aca3a837f962f6..053d36027b179cb71b5303b0ee97f2c204ef6b1f 100644
--- a/src/thermophysicalModels/liquids/liquid/liquid.H
+++ b/src/thermophysicalModels/liquids/liquid/liquid.H
@@ -162,10 +162,9 @@ public:
         static autoPtr<liquid> New(Istream& is);
 
 
-    // Destructor
-
-        virtual ~liquid()
-        {}
+    //- Destructor
+    virtual ~liquid()
+    {}
 
 
     // Member Functions
@@ -173,70 +172,37 @@ public:
         // Physical constants which define the specie
 
             //- Molecular weight [kg/kmol]
-            scalar W() const
-            {
-                return W_;
-            }
+            inline scalar W() const;
 
             //- Critical temperature [K]
-            scalar Tc() const
-            {
-                return Tc_;
-            }
+            inline scalar Tc() const;
 
             //- Critical pressure [Pa]
-            scalar Pc() const
-            {
-                return Pc_;
-            }
+            inline scalar Pc() const;
 
             //- Critical volume [m^3/mol]
-            scalar Vc() const
-            {
-                return Vc_;
-            }
+            inline scalar Vc() const;
 
             //- Critical compressibilty factor
-            scalar Zc() const
-            {
-                return Zc_;
-            }
+            inline scalar Zc() const;
 
             //- Triple point temperature [K]
-            scalar Tt() const
-            {
-                return Tt_;
-            }
+            inline scalar Tt() const;
 
             //- Triple point pressure [Pa]
-            scalar Pt() const
-            {
-                return Pt_;
-            }
+            inline scalar Pt() const;
 
             //- Normal boiling temperature [K]
-            scalar Tb() const
-            {
-                return Tb_;
-            }
+            inline scalar Tb() const;
 
             //- Dipole moment []
-            scalar dipm() const
-            {
-                return dipm_;
-            }
+            inline scalar dipm() const;
 
             //- Pitzer's ascentric factor []
-            scalar omega() const
-            {
-                return omega_;
-            }
+            inline scalar omega() const;
 
             //- Solubility parameter [(J/m^3)^(1/2)]
-            scalar delta() const
-            {
-                return delta_;
-            }
+            inline scalar delta() const;
 
 
         // Physical property pure virtual functions
@@ -266,7 +232,7 @@ public:
             virtual scalar mug(scalar p, scalar T) const = 0;
 
             //- Liquid thermal conductivity  [W/(m K)]
-            virtual scalar K(scalar p, scalar T) const =0;
+            virtual scalar K(scalar p, scalar T) const = 0;
 
             //- Vapour thermal conductivity  [W/(m K)]
             virtual scalar Kg(scalar p, scalar T) const = 0;
@@ -278,6 +244,8 @@ public:
             virtual scalar D(scalar p, scalar T) const = 0;
 
 
+    // I-O
+
         //- Write the function coefficients
         virtual void writeData(Ostream& os) const
         {
@@ -290,9 +258,7 @@ public:
                 << delta_;
         }
 
-
-    // Ostream Operator
-
+        //- Ostream Operator
         friend Ostream& operator<<(Ostream& os, const liquid& l)
         {
             l.writeData(os);
@@ -307,6 +273,10 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+#include "liquidI.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 #endif
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/liquid/liquidI.H b/src/thermophysicalModels/liquids/liquid/liquidI.H
new file mode 100644
index 0000000000000000000000000000000000000000..cf941d79bfbae49886b7ea62d4086d1faecb2606
--- /dev/null
+++ b/src/thermophysicalModels/liquids/liquid/liquidI.H
@@ -0,0 +1,93 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+inline Foam::scalar Foam::liquid::W() const
+{
+    return W_;
+}
+
+
+inline Foam::scalar Foam::liquid::Tc() const
+{
+    return Tc_;
+}
+
+
+inline Foam::scalar Foam::liquid::Pc() const
+{
+    return Pc_;
+}
+
+
+inline Foam::scalar Foam::liquid::Vc() const
+{
+    return Vc_;
+}
+
+
+inline Foam::scalar Foam::liquid::Zc() const
+{
+    return Zc_;
+}
+
+
+inline Foam::scalar Foam::liquid::Tt() const
+{
+    return Tt_;
+}
+
+
+inline Foam::scalar Foam::liquid::Pt() const
+{
+    return Pt_;
+}
+
+
+inline Foam::scalar Foam::liquid::Tb() const
+{
+    return Tb_;
+}
+
+
+inline Foam::scalar Foam::liquid::dipm() const
+{
+    return dipm_;
+}
+
+
+inline Foam::scalar Foam::liquid::omega() const
+{
+    return omega_;
+}
+
+
+inline Foam::scalar Foam::liquid::delta() const
+{
+    return delta_;
+}
+
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/nC3H8O/nC3H8O.C b/src/thermophysicalModels/liquids/nC3H8O/nC3H8O.C
index cdf81e6b947f2559c742e9d9ba383669b09cc4bd..5b4be350ea8ecb5db495c21454fc0f090d11f5a5 100644
--- a/src/thermophysicalModels/liquids/nC3H8O/nC3H8O.C
+++ b/src/thermophysicalModels/liquids/nC3H8O/nC3H8O.C
@@ -22,27 +22,129 @@ License
     along with OpenFOAM; if not, write to the Free Software Foundation,
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
-Description
-
--------------------------------------------------------------------------------
-*/
+\*---------------------------------------------------------------------------*/
 
 #include "nC3H8O.H"
 #include "addToRunTimeSelectionTable.H"
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 namespace Foam
 {
+    defineTypeNameAndDebug(nC3H8O, 0);
+    addToRunTimeSelectionTable(liquid, nC3H8O,);
+    addToRunTimeSelectionTable(liquid, nC3H8O, Istream);
+}
 
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::nC3H8O::nC3H8O()
+:
+    liquid
+    (
+        60.096,
+        536.71,
+        5.1696e+6,
+        0.21853,
+        0.253,
+        146.95,
+        6.5112e-7,
+        370.35,
+        5.6039e-30,
+        0.6279,
+        2.4557e+4
+    ),
+    rho_(75.300288, 0.272, 536.71, 0.2494),
+    pv_(77.46, -7960, -7.5235, 3e-07, 2.0),
+    hl_(536.71, 1098242.8115016, 0.647, -0.783, 0.613, 0.0),
+    cp_
+    (
+        216.320553780618,
+        18.5203674121406,
+       -0.0751797124600639,
+        0.000126464323748669,
+        0.0,
+        0.0
+    ),
+    h_
+    (
+       -5533091.96851587,
+        216.320553780618,
+        9.26018370607029,
+       -0.0250599041533546,
+        3.16160809371672e-05,
+        0.0
+    ),
+    cpg_(961.794462193823, 3467.78487752929, 1542, 2046.72523961661, 649),
+    B_
+    (
+        0.000933506389776358,
+       -1.09325079872204,
+       -531649.361022364,
+       -2.32627795527157e+17,
+       -3.81888977635783e+20
+    ),
+    mu_(0.571, 1521, -2.0894, 0.0, 0.0),
+    mug_(7.942e-07, 0.5491, 415.8, 0.0),
+    K_(0.204, -0.000169, 0.0, 0.0, 0.0, 0.0),
+    Kg_(-613.84, 0.7927, -1157400000.0, 0.0),
+    sigma_(0.04533, -6.88e-05, -1.6e-08, 0.0, 0.0, 0.0),
+    D_(4.75e-10, 1.75, 0.0, 0.0, 0.0) // note: same as iC3H8O
+{}
+
+
+Foam::nC3H8O::nC3H8O
+(
+    const liquid& l,
+    const NSRDSfunc5& density,
+    const NSRDSfunc1& vapourPressure,
+    const NSRDSfunc6& heatOfVapourisation,
+    const NSRDSfunc0& heatCapacity,
+    const NSRDSfunc0& enthalpy,
+    const NSRDSfunc7& idealGasHeatCapacity,
+    const NSRDSfunc4& secondVirialCoeff,
+    const NSRDSfunc1& dynamicViscosity,
+    const NSRDSfunc2& vapourDynamicViscosity,
+    const NSRDSfunc0& thermalConductivity,
+    const NSRDSfunc2& vapourThermalConductivity,
+    const NSRDSfunc0& surfaceTension,
+    const NSRDSfunc1& vapourDiffussivity
+)
+:
+    liquid(l),
+    rho_(density),
+    pv_(vapourPressure),
+    hl_(heatOfVapourisation),
+    cp_(heatCapacity),
+    h_(enthalpy),
+    cpg_(idealGasHeatCapacity),
+    B_(secondVirialCoeff),
+    mu_(dynamicViscosity),
+    mug_(vapourDynamicViscosity),
+    K_(thermalConductivity),
+    Kg_(vapourThermalConductivity),
+    sigma_(surfaceTension),
+    D_(vapourDiffussivity)
+{}
 
-defineTypeNameAndDebug(nC3H8O, 0);
-addToRunTimeSelectionTable(liquid, nC3H8O,);
-addToRunTimeSelectionTable(liquid, nC3H8O, Istream);
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+Foam::nC3H8O::nC3H8O(Istream& is)
+:
+    liquid(is),
+    rho_(is),
+    pv_(is),
+    hl_(is),
+    cp_(is),
+    h_(is),
+    cpg_(is),
+    B_(is),
+    mu_(is),
+    mug_(is),
+    K_(is),
+    Kg_(is),
+    sigma_(is),
+    D_(is)
+{}
 
-} // End namespace Foam
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/nC3H8O/nC3H8O.H b/src/thermophysicalModels/liquids/nC3H8O/nC3H8O.H
index 5bb5ba21d7900ed355f6b7dddbb3bf8a44c5a6d8..27601bc5481a498b8968366e9b0b045644d6e651 100644
--- a/src/thermophysicalModels/liquids/nC3H8O/nC3H8O.H
+++ b/src/thermophysicalModels/liquids/nC3H8O/nC3H8O.H
@@ -85,26 +85,9 @@ public:
     // Constructors
 
         //- Construct null
-        nC3H8O()
-        :
-            liquid(60.096, 536.71, 5.1696e+6, 0.21853, 0.253, 146.95, 6.5112e-7, 370.35, 5.6039e-30, 0.6279, 2.4557e+4),
-            rho_(75.300288, 0.272, 536.71, 0.2494),
-            pv_(77.46, -7960, -7.5235, 3e-07, 2),
-            hl_(536.71, 1098242.8115016, 0.647, -0.783, 0.613, 0),
-            cp_(216.320553780618, 18.5203674121406, -0.0751797124600639, 0.000126464323748669, 0, 0),
-            // NN: enthalpy, h_, is not used in the sprayModel.
-            // For consistency, the enthalpy is derived from hlat and hl.
-            // It is, however, convenient to have it available.
-            h_(-5533091.96851587, 216.320553780618, 9.26018370607029, -0.0250599041533546, 3.16160809371672e-05, 0),
-            cpg_(961.794462193823, 3467.78487752929, 1542, 2046.72523961661, 649),
-            B_(0.000933506389776358, -1.09325079872204, -531649.361022364, -2.32627795527157e+17, -3.81888977635783e+20),
-            mu_(0.571, 1521, -2.0894, 0, 0),
-            mug_(7.942e-07, 0.5491, 415.8, 0),
-            K_(0.204, -0.000169, 0, 0, 0, 0),
-            Kg_(-613.84, 0.7927, -1157400000, 0),
-            sigma_(0.04533, -6.88e-05, -1.6e-08, 0, 0, 0),
-            D_(4.75e-10, 1.75, 0.0, 0.0, 0.0) // NN. same as iC3H8O
-        {}
+        nC3H8O();
+
+        //- Construct from components
         nC3H8O
         (
             const liquid& l,
@@ -121,125 +104,56 @@ public:
             const NSRDSfunc2& vapourThermalConductivity,
             const NSRDSfunc0& surfaceTension,
             const NSRDSfunc1& vapourDiffussivity
-        )
-        :
-            liquid(l),
-            rho_(density),
-            pv_(vapourPressure),
-            hl_(heatOfVapourisation),
-            cp_(heatCapacity),
-            h_(enthalpy),
-            cpg_(idealGasHeatCapacity),
-            B_(secondVirialCoeff),
-            mu_(dynamicViscosity),
-            mug_(vapourDynamicViscosity),
-            K_(thermalConductivity),
-            Kg_(vapourThermalConductivity),
-            sigma_(surfaceTension),
-            D_(vapourDiffussivity)
-        {}
+        );
 
         //- Construct from Istream
-        nC3H8O(Istream& is)
-        :
-            liquid(is),
-            rho_(is),
-            pv_(is),
-            hl_(is),
-            cp_(is),
-            h_(is),
-            cpg_(is),
-            B_(is),
-            mu_(is),
-            mug_(is),
-            K_(is),
-            Kg_(is),
-            sigma_(is),
-            D_(is)
-        {}
+        nC3H8O(Istream& is);
 
 
     // Member Functions
 
         //- Liquid density [kg/m^3]
-        scalar rho(scalar p, scalar T) const
-        {
-            return rho_.f(p, T);
-        }
+        inline scalar rho(scalar p, scalar T) const;
 
         //- Vapour pressure [Pa]
-        scalar pv(scalar p, scalar T) const
-        {
-            return pv_.f(p, T);
-        }
+        inline scalar pv(scalar p, scalar T) const;
 
         //- Heat of vapourisation [J/kg]
-        scalar hl(scalar p, scalar T) const
-        {
-            return hl_.f(p, T);
-        }
+        inline scalar hl(scalar p, scalar T) const;
 
         //- Liquid heat capacity [J/(kg K)]
-        scalar cp(scalar p, scalar T) const
-        {
-            return cp_.f(p, T);
-        }
+        inline scalar cp(scalar p, scalar T) const;
 
         //- Liquid Enthalpy [J/(kg)]
-        scalar h(scalar p, scalar T) const
-        {
-            return h_.f(p, T);
-        }
+        inline scalar h(scalar p, scalar T) const;
 
         //- Ideal gas heat capacity [J/(kg K)]
-        scalar cpg(scalar p, scalar T) const
-        {
-            return cpg_.f(p, T);
-        }
+        inline scalar cpg(scalar p, scalar T) const;
 
         //- Second Virial Coefficient [m^3/kg]
-        scalar B(scalar p, scalar T) const
-        {
-            return B_.f(p, T);
-        }
+        inline scalar B(scalar p, scalar T) const;
 
         //- Liquid viscosity [Pa s]
-        scalar mu(scalar p, scalar T) const
-        {
-            return mu_.f(p, T);
-        }
+        inline scalar mu(scalar p, scalar T) const;
 
         //- Vapour viscosity [Pa s]
-        scalar mug(scalar p, scalar T) const
-        {
-            return mug_.f(p, T);
-        }
+        inline scalar mug(scalar p, scalar T) const;
 
-        //- Liquid thermal conductivity  [W/(m K)]
-        scalar K(scalar p, scalar T) const
-        {
-            return K_.f(p, T);
-        }
+        //- Liquid thermal conductivity [W/(m K)]
+        inline scalar K(scalar p, scalar T) const;
 
-        //- Vapour thermal conductivity  [W/(m K)]
-        scalar Kg(scalar p, scalar T) const
-        {
-            return Kg_.f(p, T);
-        }
+        //- Vapour thermal conductivity [W/(m K)]
+        inline scalar Kg(scalar p, scalar T) const;
 
         //- Surface tension [N/m]
-        scalar sigma(scalar p, scalar T) const
-        {
-            return sigma_.f(p, T);
-        }
+        inline scalar sigma(scalar p, scalar T) const;
 
         //- Vapour diffussivity [m2/s]
-        scalar D(scalar p, scalar T) const
-        {
-            return D_.f(p, T);
-        }
+        inline scalar D(scalar p, scalar T) const;
 
 
+    // I-O
+
         //- Write the function coefficients
         void writeData(Ostream& os) const
         {
@@ -258,9 +172,7 @@ public:
             D_.writeData(os); os << endl;
         }
 
-
-    // Ostream Operator
-
+        //- Ostream Operator
         friend Ostream& operator<<(Ostream& os, const nC3H8O& l)
         {
             l.writeData(os);
@@ -275,6 +187,10 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+#include "nC3H8OI.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 #endif
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/liquids/nC3H8O/nC3H8OI.H b/src/thermophysicalModels/liquids/nC3H8O/nC3H8OI.H
new file mode 100644
index 0000000000000000000000000000000000000000..ec850eddf8d4c9f39de477e59fc4e94d3dd5ca2f
--- /dev/null
+++ b/src/thermophysicalModels/liquids/nC3H8O/nC3H8OI.H
@@ -0,0 +1,106 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+inline Foam::scalar Foam::nC3H8O::rho(scalar p, scalar T) const
+{
+    return rho_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::nC3H8O::pv(scalar p, scalar T) const
+{
+    return pv_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::nC3H8O::hl(scalar p, scalar T) const
+{
+    return hl_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::nC3H8O::cp(scalar p, scalar T) const
+{
+    return cp_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::nC3H8O::h(scalar p, scalar T) const
+{
+    return h_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::nC3H8O::cpg(scalar p, scalar T) const
+{
+    return cpg_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::nC3H8O::B(scalar p, scalar T) const
+{
+    return B_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::nC3H8O::mu(scalar p, scalar T) const
+{
+    return mu_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::nC3H8O::mug(scalar p, scalar T) const
+{
+    return mug_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::nC3H8O::K(scalar p, scalar T) const
+{
+    return K_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::nC3H8O::Kg(scalar p, scalar T) const
+{
+    return Kg_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::nC3H8O::sigma(scalar p, scalar T) const
+{
+    return sigma_.f(p, T);
+}
+
+
+inline Foam::scalar Foam::nC3H8O::D(scalar p, scalar T) const
+{
+    return D_.f(p, T);
+}
+
+
+// ************************************************************************* //
+
diff --git a/src/thermophysicalModels/radiation/derivedFvPatchFields/greyDiffusiveRadiation/greyDiffusiveRadiationMixedFvPatchScalarField.C b/src/thermophysicalModels/radiation/derivedFvPatchFields/greyDiffusiveRadiation/greyDiffusiveRadiationMixedFvPatchScalarField.C
index 567eff9dafc283e9f8d44f86aee7fd4d19bb0de8..80c3c2dc694839322ceaf2cfa40b1df6929fe6be 100644
--- a/src/thermophysicalModels/radiation/derivedFvPatchFields/greyDiffusiveRadiation/greyDiffusiveRadiationMixedFvPatchScalarField.C
+++ b/src/thermophysicalModels/radiation/derivedFvPatchFields/greyDiffusiveRadiation/greyDiffusiveRadiationMixedFvPatchScalarField.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/thermophysicalModels/radiation/derivedFvPatchFields/greyDiffusiveRadiation/greyDiffusiveRadiationMixedFvPatchScalarField.H b/src/thermophysicalModels/radiation/derivedFvPatchFields/greyDiffusiveRadiation/greyDiffusiveRadiationMixedFvPatchScalarField.H
index 005fe768652354f712917046ac6cdc302a0aeec5..cad873ab725423ad055a576793f9c4149a356dc6 100644
--- a/src/thermophysicalModels/radiation/derivedFvPatchFields/greyDiffusiveRadiation/greyDiffusiveRadiationMixedFvPatchScalarField.H
+++ b/src/thermophysicalModels/radiation/derivedFvPatchFields/greyDiffusiveRadiation/greyDiffusiveRadiationMixedFvPatchScalarField.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/thermophysicalModels/radiation/derivedFvPatchFields/wideBandDiffusiveRadiation/wideBandDiffusiveRadiationMixedFvPatchScalarField.C b/src/thermophysicalModels/radiation/derivedFvPatchFields/wideBandDiffusiveRadiation/wideBandDiffusiveRadiationMixedFvPatchScalarField.C
index b3669bd6fa45708e430c6cea388bf13254f1c8a3..08dbb061ed6e9c8b63b9032c0b7e33ce8e6ee277 100644
--- a/src/thermophysicalModels/radiation/derivedFvPatchFields/wideBandDiffusiveRadiation/wideBandDiffusiveRadiationMixedFvPatchScalarField.C
+++ b/src/thermophysicalModels/radiation/derivedFvPatchFields/wideBandDiffusiveRadiation/wideBandDiffusiveRadiationMixedFvPatchScalarField.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/thermophysicalModels/radiation/derivedFvPatchFields/wideBandDiffusiveRadiation/wideBandDiffusiveRadiationMixedFvPatchScalarField.H b/src/thermophysicalModels/radiation/derivedFvPatchFields/wideBandDiffusiveRadiation/wideBandDiffusiveRadiationMixedFvPatchScalarField.H
index 9d170131b273ef0843fa59f291551c92b66b5662..60ba567ba33882f6eb5b66fc843617c62e418982 100644
--- a/src/thermophysicalModels/radiation/derivedFvPatchFields/wideBandDiffusiveRadiation/wideBandDiffusiveRadiationMixedFvPatchScalarField.H
+++ b/src/thermophysicalModels/radiation/derivedFvPatchFields/wideBandDiffusiveRadiation/wideBandDiffusiveRadiationMixedFvPatchScalarField.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/applications/solvers/heatTransfer/buoyantSimpleRadiationFoam/createRadiationModel.H b/src/thermophysicalModels/radiation/include/createRadiationModel.H
similarity index 68%
rename from applications/solvers/heatTransfer/buoyantSimpleRadiationFoam/createRadiationModel.H
rename to src/thermophysicalModels/radiation/include/createRadiationModel.H
index babe3c4dbe103dfafed9d392eebf0ea11d51ea4d..d61082c36fdc563e400e4f47bb6ee0050597bc2c 100644
--- a/applications/solvers/heatTransfer/buoyantSimpleRadiationFoam/createRadiationModel.H
+++ b/src/thermophysicalModels/radiation/include/createRadiationModel.H
@@ -1,5 +1,5 @@
     Info<< "Creating radiation model\n" << endl;
     autoPtr<radiation::radiationModel> radiation
     (
-        radiation::radiationModel::New(thermo->T())
+        radiation::radiationModel::New(thermo.T())
     );
diff --git a/src/thermophysicalModels/radiation/radiationModel/fvDOM/absorptionCoeffs/absorptionCoeffs.C b/src/thermophysicalModels/radiation/radiationModel/fvDOM/absorptionCoeffs/absorptionCoeffs.C
index 3452797b3eb23f61faf17dc2d07f56be7cf7f820..eeec89cef8fc178dfe5cec174c300a3a159976a9 100644
--- a/src/thermophysicalModels/radiation/radiationModel/fvDOM/absorptionCoeffs/absorptionCoeffs.C
+++ b/src/thermophysicalModels/radiation/radiationModel/fvDOM/absorptionCoeffs/absorptionCoeffs.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/thermophysicalModels/radiation/radiationModel/fvDOM/absorptionCoeffs/absorptionCoeffs.H b/src/thermophysicalModels/radiation/radiationModel/fvDOM/absorptionCoeffs/absorptionCoeffs.H
index 1a79e310b908f435d1c23ea41fd2a8355d46bc15..685d1052195db864aec04aec74b26a7c0f17dcce 100644
--- a/src/thermophysicalModels/radiation/radiationModel/fvDOM/absorptionCoeffs/absorptionCoeffs.H
+++ b/src/thermophysicalModels/radiation/radiationModel/fvDOM/absorptionCoeffs/absorptionCoeffs.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/thermophysicalModels/radiation/radiationModel/fvDOM/absorptionCoeffs/absorptionCoeffsI.H b/src/thermophysicalModels/radiation/radiationModel/fvDOM/absorptionCoeffs/absorptionCoeffsI.H
index c7759db4772a908cbc4f7b8ce8640436f5c8125b..9ae17155cd41aee4d1b6ebe11442fbae14726922 100644
--- a/src/thermophysicalModels/radiation/radiationModel/fvDOM/absorptionCoeffs/absorptionCoeffsI.H
+++ b/src/thermophysicalModels/radiation/radiationModel/fvDOM/absorptionCoeffs/absorptionCoeffsI.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/thermophysicalModels/radiation/radiationModel/fvDOM/blackBodyEmission/blackBodyEmission.C b/src/thermophysicalModels/radiation/radiationModel/fvDOM/blackBodyEmission/blackBodyEmission.C
index dee5647366936e75e202bf93426e042bd8f49ea2..bc21f3bfe0bfc027479aef047315895b4db061c4 100644
--- a/src/thermophysicalModels/radiation/radiationModel/fvDOM/blackBodyEmission/blackBodyEmission.C
+++ b/src/thermophysicalModels/radiation/radiationModel/fvDOM/blackBodyEmission/blackBodyEmission.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/thermophysicalModels/radiation/radiationModel/fvDOM/blackBodyEmission/blackBodyEmission.H b/src/thermophysicalModels/radiation/radiationModel/fvDOM/blackBodyEmission/blackBodyEmission.H
index 01719e50764880cb8d436034a8ffba5366f706c4..958f6d6d7e0bb1a9e6a611e625ad42f6def1b957 100644
--- a/src/thermophysicalModels/radiation/radiationModel/fvDOM/blackBodyEmission/blackBodyEmission.H
+++ b/src/thermophysicalModels/radiation/radiationModel/fvDOM/blackBodyEmission/blackBodyEmission.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/thermophysicalModels/radiation/radiationModel/fvDOM/fvDOM/fvDOM.C b/src/thermophysicalModels/radiation/radiationModel/fvDOM/fvDOM/fvDOM.C
index 296b99ff9e93c1faab2f43c463a1d4219f503663..bfcf1309e881dd41bea7d8f97671ca315f8d2236 100644
--- a/src/thermophysicalModels/radiation/radiationModel/fvDOM/fvDOM/fvDOM.C
+++ b/src/thermophysicalModels/radiation/radiationModel/fvDOM/fvDOM/fvDOM.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/thermophysicalModels/radiation/radiationModel/fvDOM/fvDOM/fvDOM.H b/src/thermophysicalModels/radiation/radiationModel/fvDOM/fvDOM/fvDOM.H
index f91163805a46f899a8253d65ea5b22f267861cb7..183ce1b9a8320984e21a2ad43bd87599a67c9740 100644
--- a/src/thermophysicalModels/radiation/radiationModel/fvDOM/fvDOM/fvDOM.H
+++ b/src/thermophysicalModels/radiation/radiationModel/fvDOM/fvDOM/fvDOM.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/thermophysicalModels/radiation/radiationModel/fvDOM/fvDOM/fvDOMI.H b/src/thermophysicalModels/radiation/radiationModel/fvDOM/fvDOM/fvDOMI.H
index 594b5bee0ac72a6dde43be556d2d616813353e4a..0995efa43643a76ec9a58e6649a332e3d22da4bf 100644
--- a/src/thermophysicalModels/radiation/radiationModel/fvDOM/fvDOM/fvDOMI.H
+++ b/src/thermophysicalModels/radiation/radiationModel/fvDOM/fvDOM/fvDOMI.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/thermophysicalModels/radiation/radiationModel/fvDOM/interpolationLookUpTable/interpolationLookUpTable.C b/src/thermophysicalModels/radiation/radiationModel/fvDOM/interpolationLookUpTable/interpolationLookUpTable.C
old mode 100755
new mode 100644
index f000e43fa3910ef87653e3d620b315809d67388f..b9af5e65b6c62a28bcbe2939db17ae7c22e33ea8
--- a/src/thermophysicalModels/radiation/radiationModel/fvDOM/interpolationLookUpTable/interpolationLookUpTable.C
+++ b/src/thermophysicalModels/radiation/radiationModel/fvDOM/interpolationLookUpTable/interpolationLookUpTable.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/thermophysicalModels/radiation/radiationModel/fvDOM/interpolationLookUpTable/interpolationLookUpTable.H b/src/thermophysicalModels/radiation/radiationModel/fvDOM/interpolationLookUpTable/interpolationLookUpTable.H
old mode 100755
new mode 100644
index 6140ae4bc3a6527acc6f1b30b3e05419c0f15b62..7768fb48ca2586fbefd811c4fd482469061e50d5
--- a/src/thermophysicalModels/radiation/radiationModel/fvDOM/interpolationLookUpTable/interpolationLookUpTable.H
+++ b/src/thermophysicalModels/radiation/radiationModel/fvDOM/interpolationLookUpTable/interpolationLookUpTable.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/thermophysicalModels/radiation/radiationModel/fvDOM/interpolationLookUpTable/interpolationLookUpTableI.H b/src/thermophysicalModels/radiation/radiationModel/fvDOM/interpolationLookUpTable/interpolationLookUpTableI.H
index 5829db3148e534ecdbcaaeb797427426db55acd0..8019d1c64fc20aa3cbf4dcca5645e75acfd0c166 100644
--- a/src/thermophysicalModels/radiation/radiationModel/fvDOM/interpolationLookUpTable/interpolationLookUpTableI.H
+++ b/src/thermophysicalModels/radiation/radiationModel/fvDOM/interpolationLookUpTable/interpolationLookUpTableI.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/thermophysicalModels/radiation/radiationModel/fvDOM/radiativeIntensityRay/radiativeIntensityRay.C b/src/thermophysicalModels/radiation/radiationModel/fvDOM/radiativeIntensityRay/radiativeIntensityRay.C
index 7441b900d695a91f3c6e81617d3d8f342ce53c83..ff22c6335933fb2ba307b82cfb7093432b4f7c30 100644
--- a/src/thermophysicalModels/radiation/radiationModel/fvDOM/radiativeIntensityRay/radiativeIntensityRay.C
+++ b/src/thermophysicalModels/radiation/radiationModel/fvDOM/radiativeIntensityRay/radiativeIntensityRay.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/thermophysicalModels/radiation/radiationModel/fvDOM/radiativeIntensityRay/radiativeIntensityRay.H b/src/thermophysicalModels/radiation/radiationModel/fvDOM/radiativeIntensityRay/radiativeIntensityRay.H
index 1e558c8f3cdf4e42b7a92498be2c07e8744aed98..c139a3633427827c6a2ca2629c0cbe00070ba84d 100644
--- a/src/thermophysicalModels/radiation/radiationModel/fvDOM/radiativeIntensityRay/radiativeIntensityRay.H
+++ b/src/thermophysicalModels/radiation/radiationModel/fvDOM/radiativeIntensityRay/radiativeIntensityRay.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/thermophysicalModels/radiation/radiationModel/fvDOM/radiativeIntensityRay/radiativeIntensityRayI.H b/src/thermophysicalModels/radiation/radiationModel/fvDOM/radiativeIntensityRay/radiativeIntensityRayI.H
index 0efd423a6dc08efb6a113900e5ac8c6f43b44874..649f5b7c9e4820110461b5c91c338dc8bd518850 100644
--- a/src/thermophysicalModels/radiation/radiationModel/fvDOM/radiativeIntensityRay/radiativeIntensityRayI.H
+++ b/src/thermophysicalModels/radiation/radiationModel/fvDOM/radiativeIntensityRay/radiativeIntensityRayI.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/thermophysicalModels/radiation/radiationModel/noRadiation/noRadiation.H b/src/thermophysicalModels/radiation/radiationModel/noRadiation/noRadiation.H
index 2527ab1211fac521aa8d55b8fb4a4b90ca873316..c171ce23bd40cb919c9562953b3f6eeb5def57f2 100644
--- a/src/thermophysicalModels/radiation/radiationModel/noRadiation/noRadiation.H
+++ b/src/thermophysicalModels/radiation/radiationModel/noRadiation/noRadiation.H
@@ -66,7 +66,7 @@ class noRadiation
 public:
 
     //- Runtime type information
-    TypeName("noRadiation");
+    TypeName("none");
 
 
     // Constructors
diff --git a/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/binaryAbsorptionEmission/binaryAbsorptionEmission.C b/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/binaryAbsorptionEmission/binaryAbsorptionEmission.C
index 15d8c37a31008217e0c5d07b4c9d416f1f33aa78..5cc3ac9b27a4582e0b35edbf26b0be858ea74509 100644
--- a/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/binaryAbsorptionEmission/binaryAbsorptionEmission.C
+++ b/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/binaryAbsorptionEmission/binaryAbsorptionEmission.C
@@ -75,44 +75,44 @@ Foam::radiation::binaryAbsorptionEmission::~binaryAbsorptionEmission()
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 Foam::tmp<Foam::volScalarField>
-Foam::radiation::binaryAbsorptionEmission::aCont() const
+Foam::radiation::binaryAbsorptionEmission::aCont(const label bandI) const
 {
-    return model1_->aCont() + model2_->aCont();
+    return model1_->aCont(bandI) + model2_->aCont(bandI);
 }
 
 
 Foam::tmp<Foam::volScalarField>
-Foam::radiation::binaryAbsorptionEmission::aDisp() const
+Foam::radiation::binaryAbsorptionEmission::aDisp(const label bandI) const
 {
-    return model1_->aDisp() + model2_->aDisp();
+    return model1_->aDisp(bandI) + model2_->aDisp(bandI);
 }
 
 
 Foam::tmp<Foam::volScalarField>
-Foam::radiation::binaryAbsorptionEmission::eCont() const
+Foam::radiation::binaryAbsorptionEmission::eCont(const label bandI) const
 {
-    return model1_->eCont() + model2_->eCont();
+    return model1_->eCont(bandI) + model2_->eCont(bandI);
 }
 
 
 Foam::tmp<Foam::volScalarField>
-Foam::radiation::binaryAbsorptionEmission::eDisp() const
+Foam::radiation::binaryAbsorptionEmission::eDisp(const label bandI) const
 {
-    return model1_->eDisp() + model2_->eDisp();
+    return model1_->eDisp(bandI) + model2_->eDisp(bandI);
 }
 
 
 Foam::tmp<Foam::volScalarField>
-Foam::radiation::binaryAbsorptionEmission::ECont() const
+Foam::radiation::binaryAbsorptionEmission::ECont(const label bandI) const
 {
-    return model1_->ECont() + model2_->ECont();
+    return model1_->ECont(bandI) + model2_->ECont(bandI);
 }
 
 
 Foam::tmp<Foam::volScalarField>
-Foam::radiation::binaryAbsorptionEmission::EDisp() const
+Foam::radiation::binaryAbsorptionEmission::EDisp(const label bandI) const
 {
-    return model1_->EDisp() + model2_->EDisp();
+    return model1_->EDisp(bandI) + model2_->EDisp(bandI);
 }
 
 
diff --git a/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/binaryAbsorptionEmission/binaryAbsorptionEmission.H b/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/binaryAbsorptionEmission/binaryAbsorptionEmission.H
index 68ad204b84a3dab0d32d02ab65937fc5e7bee28d..d5cec44a8f923746b2a6e6770a8a581ce553fb45 100644
--- a/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/binaryAbsorptionEmission/binaryAbsorptionEmission.H
+++ b/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/binaryAbsorptionEmission/binaryAbsorptionEmission.H
@@ -92,28 +92,28 @@ public:
             // Absorption coefficient
 
                 //- Absorption coefficient for continuous phase
-                tmp<volScalarField> aCont() const;
+                virtual tmp<volScalarField> aCont(const label bandI = 0) const;
 
                 //- Absorption coefficient for dispersed phase
-                tmp<volScalarField> aDisp() const;
+                virtual tmp<volScalarField> aDisp(const label bandI = 0) const;
 
 
             // Emission coefficient
 
                 //- Emission coefficient for continuous phase
-                tmp<volScalarField> eCont() const;
+                virtual tmp<volScalarField> eCont(const label bandI = 0) const;
 
                 //- Emission coefficient for dispersed phase
-                tmp<volScalarField> eDisp() const;
+                virtual tmp<volScalarField> eDisp(const label bandI = 0) const;
 
 
             // Emission contribution
 
                 //- Emission contribution for continuous phase
-                tmp<volScalarField> ECont() const;
+                virtual tmp<volScalarField> ECont(const label bandI = 0) const;
 
                 //- Emission contribution for continuous phase
-                tmp<volScalarField> EDisp() const;
+                virtual tmp<volScalarField> EDisp(const label bandI = 0) const;
 };
 
 
diff --git a/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/greyMeanAbsorptionEmission/greyMeanAbsorptionEmission.C b/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/greyMeanAbsorptionEmission/greyMeanAbsorptionEmission.C
index dccbbbad25064f2f278d6b93a813041fdc8b3d38..cdb57c0f5397ea63334fca60594b9595c4df2493 100644
--- a/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/greyMeanAbsorptionEmission/greyMeanAbsorptionEmission.C
+++ b/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/greyMeanAbsorptionEmission/greyMeanAbsorptionEmission.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/greyMeanAbsorptionEmission/greyMeanAbsorptionEmission.H b/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/greyMeanAbsorptionEmission/greyMeanAbsorptionEmission.H
index 2c24af42c49d7ceb08cd90209c717cd6183f009e..a5921d7c40802d09d49a3b31b0f135862fd43286 100644
--- a/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/greyMeanAbsorptionEmission/greyMeanAbsorptionEmission.H
+++ b/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/greyMeanAbsorptionEmission/greyMeanAbsorptionEmission.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/wideBandAbsorptionEmission/wideBandAbsorptionEmission.C b/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/wideBandAbsorptionEmission/wideBandAbsorptionEmission.C
index a96deeb0b40273b0e69d26305bde5bb38c0f9924..1665519e3e711fdaa8c80493c77f91c1be972fdb 100644
--- a/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/wideBandAbsorptionEmission/wideBandAbsorptionEmission.C
+++ b/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/wideBandAbsorptionEmission/wideBandAbsorptionEmission.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/wideBandAbsorptionEmission/wideBandAbsorptionEmission.H b/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/wideBandAbsorptionEmission/wideBandAbsorptionEmission.H
index 21e10c400b63385c9a047b1d655e1a0f662c8c2f..5a0dd1d20e0a6477110bc084537fa3ba2b13a4af 100644
--- a/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/wideBandAbsorptionEmission/wideBandAbsorptionEmission.H
+++ b/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/wideBandAbsorptionEmission/wideBandAbsorptionEmission.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/thermophysicalModels/reactionThermo/Make/files b/src/thermophysicalModels/reactionThermo/Make/files
new file mode 100644
index 0000000000000000000000000000000000000000..c2f9612ec5d5a462cbf6139bc7086ef1d0b55dae
--- /dev/null
+++ b/src/thermophysicalModels/reactionThermo/Make/files
@@ -0,0 +1,24 @@
+chemistryReaders/chemkinReader/chemkinReader.C
+chemistryReaders/chemkinReader/chemkinLexer.C
+chemistryReaders/chemistryReader/makeChemistryReaders.C
+
+mixtures/basicMultiComponentMixture/basicMultiComponentMixture.C
+
+combustionThermo/hCombustionThermo/hCombustionThermo.C
+combustionThermo/hCombustionThermo/newhCombustionThermo.C
+combustionThermo/hCombustionThermo/hCombustionThermos.C
+
+combustionThermo/hhuCombustionThermo/hhuCombustionThermo.C
+combustionThermo/hhuCombustionThermo/newhhuCombustionThermo.C
+combustionThermo/hhuCombustionThermo/hhuCombustionThermos.C
+
+reactionThermo/hReactionThermo/hReactionThermo.C
+reactionThermo/hReactionThermo/newhReactionThermo.C
+reactionThermo/hReactionThermo/hReactionThermos.C
+
+
+derivedFvPatchFields/fixedUnburntEnthalpy/fixedUnburntEnthalpyFvPatchScalarField.C
+derivedFvPatchFields/gradientUnburntEnthalpy/gradientUnburntEnthalpyFvPatchScalarField.C
+derivedFvPatchFields/mixedUnburntEnthalpy/mixedUnburntEnthalpyFvPatchScalarField.C
+
+LIB = $(FOAM_LIBBIN)/libreactionThermophysicalModels
diff --git a/src/thermophysicalModels/combustion/Make/options b/src/thermophysicalModels/reactionThermo/Make/options
similarity index 100%
rename from src/thermophysicalModels/combustion/Make/options
rename to src/thermophysicalModels/reactionThermo/Make/options
diff --git a/src/thermophysicalModels/combustion/chemistryReaders/chemistryReader/chemistryReader.C b/src/thermophysicalModels/reactionThermo/chemistryReaders/chemistryReader/chemistryReader.C
similarity index 78%
rename from src/thermophysicalModels/combustion/chemistryReaders/chemistryReader/chemistryReader.C
rename to src/thermophysicalModels/reactionThermo/chemistryReaders/chemistryReader/chemistryReader.C
index 38ad6e1f9801336b11ee9f3351bed30e8545051c..e178bd0338f685001280eba5f0433b0e6572b84a 100644
--- a/src/thermophysicalModels/combustion/chemistryReaders/chemistryReader/chemistryReader.C
+++ b/src/thermophysicalModels/reactionThermo/chemistryReaders/chemistryReader/chemistryReader.C
@@ -26,17 +26,11 @@ License
 
 #include "chemistryReader.H"
 
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
-
-namespace Foam
-{
-    defineTypeNameAndDebug(chemistryReader, 0);
-    defineRunTimeSelectionTable(chemistryReader, dictionary);
-};
-
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-Foam::autoPtr<Foam::chemistryReader> Foam::chemistryReader::New
+template<class ThermoType>
+Foam::autoPtr<Foam::chemistryReader<ThermoType> >
+Foam::chemistryReader<ThermoType>::New
 (
     const dictionary& thermoDict
 )
@@ -50,9 +44,8 @@ Foam::autoPtr<Foam::chemistryReader> Foam::chemistryReader::New
 
     Info<< "Selecting chemistryReader " << chemistryReaderTypeName << endl;
 
-    dictionaryConstructorTable::iterator cstrIter =
-        dictionaryConstructorTablePtr_
-        ->find(chemistryReaderTypeName);
+    typename dictionaryConstructorTable::iterator cstrIter =
+        dictionaryConstructorTablePtr_->find(chemistryReaderTypeName);
 
     if (cstrIter == dictionaryConstructorTablePtr_->end())
     {
@@ -60,13 +53,13 @@ Foam::autoPtr<Foam::chemistryReader> Foam::chemistryReader::New
         (
             "chemistryReader::New(const dictionary& thermoDict)"
         )   << "Unknown chemistryReader type "
-            << chemistryReaderTypeName << endl << endl
-            << "Valid  chemistryReaders are : " << endl
+            << chemistryReaderTypeName << nl << nl
+            << "Valid  chemistryReaders are: " << nl
             << dictionaryConstructorTablePtr_->toc()
             << exit(FatalError);
     }
 
-    return autoPtr<chemistryReader>(cstrIter()(thermoDict));
+    return autoPtr<chemistryReader<ThermoType> >(cstrIter()(thermoDict));
 }
 
 
diff --git a/src/thermophysicalModels/combustion/chemistryReaders/chemistryReader/chemistryReader.H b/src/thermophysicalModels/reactionThermo/chemistryReaders/chemistryReader/chemistryReader.H
similarity index 57%
rename from src/thermophysicalModels/combustion/chemistryReaders/chemistryReader/chemistryReader.H
rename to src/thermophysicalModels/reactionThermo/chemistryReaders/chemistryReader/chemistryReader.H
index bd5f4eaa1a5db8b80ac9778e1ea56573339bc7ad..550d44c79ad8cc60e464c4d7ec4c55a72bf5774e 100644
--- a/src/thermophysicalModels/combustion/chemistryReaders/chemistryReader/chemistryReader.H
+++ b/src/thermophysicalModels/reactionThermo/chemistryReaders/chemistryReader/chemistryReader.H
@@ -39,10 +39,6 @@ SourceFiles
 #include "typeInfo.H"
 #include "runTimeSelectionTables.H"
 #include "Reaction.H"
-#include "sutherlandTransport.H"
-#include "specieThermo.H"
-#include "janafThermo.H"
-#include "perfectGas.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -50,23 +46,12 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                           Class chemistryReader Declaration
+                      Class chemistryReader Declaration
 \*---------------------------------------------------------------------------*/
 
+template<class ThermoType>
 class chemistryReader
 {
-
-public:
-
-    // Public data types
-
-        typedef sutherlandTransport<specieThermo<janafThermo<perfectGas> > >
-            reactionThermo;
-
-        typedef Reaction<reactionThermo> reaction;
-
-private:
-
     // Private Member Functions
 
         //- Disallow default bitwise copy construct
@@ -81,6 +66,9 @@ public:
     //- Runtime type information
     TypeName("chemistryReader");
 
+    //- The type of thermo package the reader was instantiated for
+    typedef ThermoType thermoType;
+
 
     // Constructors
 
@@ -109,17 +97,18 @@ public:
         static autoPtr<chemistryReader> New(const dictionary& thermoDict);
 
 
-    // Destructor
-
-        virtual ~chemistryReader()
-        {}
+    //- Destructor
+    virtual ~chemistryReader()
+    {}
 
 
     // Member Functions
 
         virtual const speciesTable& species() const = 0;
-        virtual const HashPtrTable<reactionThermo>& speciesThermo() const = 0;
-        virtual const SLPtrList<reaction>& reactions() const = 0;
+
+        virtual const HashPtrTable<ThermoType>& speciesThermo() const = 0;
+
+        virtual const SLPtrList<Reaction<ThermoType> >& reactions() const = 0;
 };
 
 
@@ -129,6 +118,41 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+#define makeChemistryReader(Thermo)                                           \
+                                                                              \
+defineTemplateTypeNameAndDebug                                                \
+(                                                                             \
+    chemistryReader<Thermo>,                                                  \
+    0                                                                         \
+);                                                                            \
+                                                                              \
+defineTemplateRunTimeSelectionTable(chemistryReader<Thermo>, dictionary);
+
+
+#define makeChemistryReaderType(SS, Thermo)                                   \
+                                                                              \
+    defineNamedTemplateTypeNameAndDebug(SS<Thermo>, 0);                       \
+                                                                              \
+    chemistryReader<Thermo>::adddictionaryConstructorToTable<SS<Thermo> >     \
+        add##SS##Thermo##ConstructorToTable_;
+
+
+#define addChemistryReaderType(SS, Thermo)                                    \
+                                                                              \
+    defineNamedTemplateTypeNameAndDebug(SS, 0);                               \
+                                                                              \
+    chemistryReader<Thermo>::adddictionaryConstructorToTable<SS>              \
+        add##SS##Thermo##ConstructorToTable_;
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#ifdef NoRepository
+#   include "chemistryReader.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 #endif
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/reactionThermo/chemistryReaders/chemistryReader/makeChemistryReaders.C b/src/thermophysicalModels/reactionThermo/chemistryReaders/chemistryReader/makeChemistryReaders.C
new file mode 100644
index 0000000000000000000000000000000000000000..35ab18220b048c0777b8cca86b613dd85d2ce15b
--- /dev/null
+++ b/src/thermophysicalModels/reactionThermo/chemistryReaders/chemistryReader/makeChemistryReaders.C
@@ -0,0 +1,50 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "makeReactionThermo.H"
+#include "thermoPhysicsTypes.H"
+
+#include "chemistryReader.H"
+#include "foamChemistryReader.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+makeChemistryReader(gasThermoPhysics);
+makeChemistryReader(icoPoly8ThermoPhysics);
+
+makeChemistryReaderType(foamChemistryReader, gasThermoPhysics);
+makeChemistryReaderType(foamChemistryReader, icoPoly8ThermoPhysics);
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/combustion/chemistryReaders/chemkinReader/chemkinLexer.L b/src/thermophysicalModels/reactionThermo/chemistryReaders/chemkinReader/chemkinLexer.L
similarity index 98%
rename from src/thermophysicalModels/combustion/chemistryReaders/chemkinReader/chemkinLexer.L
rename to src/thermophysicalModels/reactionThermo/chemistryReaders/chemkinReader/chemkinLexer.L
index d32e172daec2b66d0330a231fae88c3e260ffc71..f7ec61e3314c059b889fd1f07cf1d9643b11046c 100644
--- a/src/thermophysicalModels/combustion/chemistryReaders/chemkinReader/chemkinLexer.L
+++ b/src/thermophysicalModels/reactionThermo/chemistryReaders/chemkinReader/chemkinLexer.L
@@ -1,4 +1,4 @@
-/*--------------------------------*- C++ -*----------------------------------*\
+/*---------------------------------------------------------------------------*\
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
@@ -306,13 +306,13 @@ List<specieElement> currentSpecieComposition(5);
 scalar currentLowT = 0;
 scalar currentHighT = 0;
 scalar currentCommonT = 0;
-reactionThermo::coeffArray highCpCoeffs;
-reactionThermo::coeffArray lowCpCoeffs;
+gasThermoPhysics::coeffArray highCpCoeffs;
+gasThermoPhysics::coeffArray lowCpCoeffs;
 
-reaction::specieCoeffs currentSpecieCoeff;
+gasReaction::specieCoeffs currentSpecieCoeff;
 
-DynamicList<reaction::specieCoeffs> lhs;
-DynamicList<reaction::specieCoeffs> rhs;
+DynamicList<gasReaction::specieCoeffs> lhs;
+DynamicList<gasReaction::specieCoeffs> rhs;
 
 scalarList ArrheniusCoeffs(3);
 DynamicList<scalar> reactionCoeffs;
@@ -322,7 +322,7 @@ label currentThirdBodyIndex = -1;
 word reactionCoeffsName = word::null;
 HashTable<scalarList> reactionCoeffsTable;
 
-DynamicList<reaction::specieCoeffs> *lrhsPtr = &lhs;
+DynamicList<gasReaction::specieCoeffs> *lrhsPtr = &lhs;
 
 reactionType rType = unknownReactionType;
 reactionRateType rrType = Arrhenius;
@@ -614,7 +614,7 @@ bool finishReaction = false;
 
 <readThermoLineLabel4>{thermoLineLabel4} {
 
-        HashPtrTable<reactionThermo>::iterator specieThermoIter
+        HashPtrTable<gasThermoPhysics>::iterator specieThermoIter
         (
             speciesThermo_.find(currentSpecieName)
         );
@@ -627,7 +627,7 @@ bool finishReaction = false;
         speciesThermo_.insert
         (
             currentSpecieName,
-            new reactionThermo
+            new gasThermoPhysics
             (
                 janafThermo<perfectGas>
                 (
@@ -863,7 +863,7 @@ bool finishReaction = false;
             {
                 case unimolecularFallOffReactionType:
                 {
-                    if (pDependentSpecieName.empty())
+                    if (!pDependentSpecieName.size())
                     {
                         FatalErrorIn("chemkinReader::lex()")
                             << "LOW keyword given for a unimolecular fall-off"
@@ -898,7 +898,7 @@ bool finishReaction = false;
 
                 case chemicallyActivatedBimolecularReactionType:
                 {
-                    if (pDependentSpecieName.empty())
+                    if (!pDependentSpecieName.size())
                     {
                         FatalErrorIn("chemkinReader::lex()")
                             << "HIGH keyword given for a chemically"
@@ -935,7 +935,7 @@ bool finishReaction = false;
 
                 case TroeReactionType:
                 {
-                    if (pDependentSpecieName.empty())
+                    if (!pDependentSpecieName.size())
                     {
                         FatalErrorIn("chemkinReader::lex()")
                             << "TROE keyword given for a"
@@ -969,7 +969,7 @@ bool finishReaction = false;
 
                 case SRIReactionType:
                 {
-                    if (pDependentSpecieName.empty())
+                    if (!pDependentSpecieName.size())
                     {
                         FatalErrorIn("chemkinReader::lex()")
                             << "SRI keyword given for a"
@@ -1434,7 +1434,7 @@ bool finishReaction = false;
 
 <readReactionOrder>{reactionCoeff}{endReactionCoeffs} {
 
-        DynamicList<reaction::specieCoeffs>& lrhs = *lrhsPtr;
+        DynamicList<gasReaction::specieCoeffs>& lrhs = *lrhsPtr;
 
         bool found = false;
 
@@ -1535,5 +1535,5 @@ bool finishReaction = false;
 %%
 
  /* ------------------------------------------------------------------------- *\
-    ------ End of STLToFoam.L
+    ------ End of chemkinLexer.L
  \* ------------------------------------------------------------------------- */
diff --git a/src/thermophysicalModels/combustion/chemistryReaders/chemkinReader/chemkinReader.C b/src/thermophysicalModels/reactionThermo/chemistryReaders/chemkinReader/chemkinReader.C
similarity index 96%
rename from src/thermophysicalModels/combustion/chemistryReaders/chemkinReader/chemkinReader.C
rename to src/thermophysicalModels/reactionThermo/chemistryReaders/chemkinReader/chemkinReader.C
index f04995cd3e241f41090f6f2b08f211dfb4bd2ecd..a6841241225ab9ced70ca0466d3c6fcb0d34347a 100644
--- a/src/thermophysicalModels/combustion/chemistryReaders/chemkinReader/chemkinReader.C
+++ b/src/thermophysicalModels/reactionThermo/chemistryReaders/chemkinReader/chemkinReader.C
@@ -46,8 +46,7 @@ License
 
 namespace Foam
 {
-    defineTypeNameAndDebug(chemkinReader, 0);
-    addToRunTimeSelectionTable(chemistryReader, chemkinReader, dictionary);
+    addChemistryReaderType(chemkinReader, gasThermoPhysics);
 };
 
 /* * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * */
@@ -164,8 +163,8 @@ template<class ReactionRateType>
 void Foam::chemkinReader::addReactionType
 (
     const reactionType rType,
-    DynamicList<reaction::specieCoeffs>& lhs,
-    DynamicList<reaction::specieCoeffs>& rhs,
+    DynamicList<gasReaction::specieCoeffs>& lhs,
+    DynamicList<gasReaction::specieCoeffs>& rhs,
     const ReactionRateType& rr
 )
 {
@@ -175,9 +174,9 @@ void Foam::chemkinReader::addReactionType
         {
             reactions_.append
             (
-                new IrreversibleReaction<reactionThermo, ReactionRateType>
+                new IrreversibleReaction<gasThermoPhysics, ReactionRateType>
                 (
-                    Reaction<reactionThermo>
+                    Reaction<gasThermoPhysics>
                     (
                         speciesTable_,
                         lhs.shrink(),
@@ -194,9 +193,9 @@ void Foam::chemkinReader::addReactionType
         {
             reactions_.append
             (
-                new ReversibleReaction<reactionThermo, ReactionRateType>
+                new ReversibleReaction<gasThermoPhysics, ReactionRateType>
                 (
-                    Reaction<reactionThermo>
+                    Reaction<gasThermoPhysics>
                     (
                         speciesTable_,
                         lhs.shrink(),
@@ -234,8 +233,8 @@ void Foam::chemkinReader::addPressureDependentReaction
 (
     const reactionType rType,
     const fallOffFunctionType fofType,
-    DynamicList<reaction::specieCoeffs>& lhs,
-    DynamicList<reaction::specieCoeffs>& rhs,
+    DynamicList<gasReaction::specieCoeffs>& lhs,
+    DynamicList<gasReaction::specieCoeffs>& rhs,
     const scalarList& efficiencies,
     const scalarList& k0Coeffs,
     const scalarList& kInfCoeffs,
@@ -417,8 +416,8 @@ void Foam::chemkinReader::addPressureDependentReaction
 
 void Foam::chemkinReader::addReaction
 (
-    DynamicList<reaction::specieCoeffs>& lhs,
-    DynamicList<reaction::specieCoeffs>& rhs,
+    DynamicList<gasReaction::specieCoeffs>& lhs,
+    DynamicList<gasReaction::specieCoeffs>& rhs,
     const scalarList& efficiencies,
     const reactionType rType,
     const reactionRateType rrType,
@@ -493,9 +492,9 @@ void Foam::chemkinReader::addReaction
                 reactions_.append
                 (
                     new NonEquilibriumReversibleReaction
-                        <reactionThermo, ArrheniusReactionRate>
+                        <gasThermoPhysics, ArrheniusReactionRate>
                     (
-                        Reaction<reactionThermo>
+                        Reaction<gasThermoPhysics>
                         (
                             speciesTable_,
                             lhs.shrink(),
@@ -546,9 +545,9 @@ void Foam::chemkinReader::addReaction
                 reactions_.append
                 (
                     new NonEquilibriumReversibleReaction
-                        <reactionThermo, thirdBodyArrheniusReactionRate>
+                        <gasThermoPhysics, thirdBodyArrheniusReactionRate>
                     (
-                        Reaction<reactionThermo>
+                        Reaction<gasThermoPhysics>
                         (
                             speciesTable_,
                             lhs.shrink(),
@@ -651,9 +650,9 @@ void Foam::chemkinReader::addReaction
                 reactions_.append
                 (
                     new NonEquilibriumReversibleReaction
-                        <reactionThermo, LandauTellerReactionRate>
+                        <gasThermoPhysics, LandauTellerReactionRate>
                     (
-                        Reaction<reactionThermo>
+                        Reaction<gasThermoPhysics>
                         (
                             speciesTable_,
                             lhs.shrink(),
@@ -797,7 +796,7 @@ void Foam::chemkinReader::read
     const fileName& thermoFileName
 )
 {
-    if (thermoFileName.size())
+    if (thermoFileName != fileName::null)
     {
         std::ifstream thermoStream(thermoFileName.c_str());
 
diff --git a/src/thermophysicalModels/combustion/chemistryReaders/chemkinReader/chemkinReader.H b/src/thermophysicalModels/reactionThermo/chemistryReaders/chemkinReader/chemkinReader.H
similarity index 93%
rename from src/thermophysicalModels/combustion/chemistryReaders/chemkinReader/chemkinReader.H
rename to src/thermophysicalModels/reactionThermo/chemistryReaders/chemkinReader/chemkinReader.H
index cdb9bc9095e26efd5bc7abefbee4493aad2fcb48..de679103806b55e96a6a8a9faad1edd41bca973a 100644
--- a/src/thermophysicalModels/combustion/chemistryReaders/chemkinReader/chemkinReader.H
+++ b/src/thermophysicalModels/reactionThermo/chemistryReaders/chemkinReader/chemkinReader.H
@@ -47,6 +47,8 @@ SourceFiles
 #include "speciesTable.H"
 #include "atomicWeights.H"
 
+#include "reactionTypes.H"
+
 #include <FlexLexer.h>
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -55,12 +57,12 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                           Class chemkin Declaration
+                       Class chemkinReader Declaration
 \*---------------------------------------------------------------------------*/
 
 class chemkinReader
 :
-    public chemistryReader,
+    public chemistryReader<gasThermoPhysics>,
     public yyFlexLexer
 {
 
@@ -198,13 +200,13 @@ private:
         HashTable<phase> speciePhase_;
 
         //- Table of the thermodynamic data given in the CHEMKIN file
-        HashPtrTable<reactionThermo> speciesThermo_;
+        HashPtrTable<gasThermoPhysics> speciesThermo_;
 
         //- Table of species composition
         HashTable<List<specieElement> > specieComposition_;
 
         //- List of the reactions
-        SLPtrList<reaction> reactions_;
+        SLPtrList<gasReaction> reactions_;
 
 
     // Private Member Functions
@@ -256,8 +258,8 @@ private:
         void addReactionType
         (
             const reactionType rType,
-            DynamicList<reaction::specieCoeffs>& lhs,
-            DynamicList<reaction::specieCoeffs>& rhs,
+            DynamicList<gasReaction::specieCoeffs>& lhs,
+            DynamicList<gasReaction::specieCoeffs>& rhs,
             const ReactionRateType& rr
         );
 
@@ -266,8 +268,8 @@ private:
         (
             const reactionType rType,
             const fallOffFunctionType fofType,
-            DynamicList<reaction::specieCoeffs>& lhs,
-            DynamicList<reaction::specieCoeffs>& rhs,
+            DynamicList<gasReaction::specieCoeffs>& lhs,
+            DynamicList<gasReaction::specieCoeffs>& rhs,
             const scalarList& thirdBodyEfficiencies,
             const scalarList& k0Coeffs,
             const scalarList& kInfCoeffs,
@@ -279,8 +281,8 @@ private:
 
         void addReaction
         (
-            DynamicList<reaction::specieCoeffs>& lhs,
-            DynamicList<reaction::specieCoeffs>& rhs,
+            DynamicList<gasReaction::specieCoeffs>& lhs,
+            DynamicList<gasReaction::specieCoeffs>& rhs,
             const scalarList& thirdBodyEfficiencies,
             const reactionType rType,
             const reactionRateType rrType,
@@ -363,7 +365,7 @@ public:
         }
 
         //- Table of the thermodynamic data given in the CHEMKIN file
-        const HashPtrTable<reactionThermo>& speciesThermo() const
+        const HashPtrTable<gasThermoPhysics>& speciesThermo() const
         {
             return speciesThermo_;
         }
@@ -375,7 +377,7 @@ public:
         }
 
         //- List of the reactions
-        const SLPtrList<reaction>& reactions() const
+        const SLPtrList<gasReaction>& reactions() const
         {
             return reactions_;
         }
diff --git a/src/thermophysicalModels/combustion/chemistryReaders/foamChemistryReader/foamChemistryReader.C b/src/thermophysicalModels/reactionThermo/chemistryReaders/foamChemistryReader/foamChemistryReader.C
similarity index 81%
rename from src/thermophysicalModels/combustion/chemistryReaders/foamChemistryReader/foamChemistryReader.C
rename to src/thermophysicalModels/reactionThermo/chemistryReaders/foamChemistryReader/foamChemistryReader.C
index e0913fe3d10e5add98f17cd5bd1dbae380c7b420..7e06956ab5e49488a3d0afb34b55cd6276e2749d 100644
--- a/src/thermophysicalModels/combustion/chemistryReaders/foamChemistryReader/foamChemistryReader.C
+++ b/src/thermophysicalModels/reactionThermo/chemistryReaders/foamChemistryReader/foamChemistryReader.C
@@ -28,36 +28,33 @@ License
 #include "IFstream.H"
 #include "addToRunTimeSelectionTable.H"
 
-/* * * * * * * * * * * * * * * * * Static data * * * * * * * * * * * * * * * */
-
-namespace Foam
-{
-    defineTypeNameAndDebug(foamChemistryReader, 0);
-    addToRunTimeSelectionTable(chemistryReader, foamChemistryReader, dictionary);
-};
-
 // * * * * * * * * * * * * * * * * Constructor * * * * * * * * * * * * * * * //
 
-// Construct from components
-Foam::foamChemistryReader::foamChemistryReader
+template<class ThermoType>
+Foam::foamChemistryReader<ThermoType>::foamChemistryReader
 (
     const fileName& reactionsFileName,
     const fileName& thermoFileName
 )
 :
+    chemistryReader<ThermoType>(),
     speciesThermo_(IFstream(thermoFileName)()),
     speciesTable_(dictionary(IFstream(reactionsFileName)()).lookup("species")),
     reactions_
     (
         dictionary(IFstream(reactionsFileName)()).lookup("reactions"),
-        reaction::iNew(speciesTable_, speciesThermo_)
+        Reaction<ThermoType>::iNew(speciesTable_, speciesThermo_)
     )
 {}
 
 
-// Construct from components
-Foam::foamChemistryReader::foamChemistryReader(const dictionary& thermoDict)
+template<class ThermoType>
+Foam::foamChemistryReader<ThermoType>::foamChemistryReader
+(
+    const dictionary& thermoDict
+)
 :
+    chemistryReader<ThermoType>(),
     speciesThermo_
     (
         IFstream
@@ -84,7 +81,7 @@ Foam::foamChemistryReader::foamChemistryReader(const dictionary& thermoDict)
                 fileName(thermoDict.lookup("foamChemistryFile")).expand()
             )()
         ).lookup("reactions"),
-        reaction::iNew(speciesTable_, speciesThermo_)
+        typename Reaction<ThermoType>::iNew(speciesTable_, speciesThermo_)
     )
 {}
 
diff --git a/src/thermophysicalModels/combustion/chemistryReaders/foamChemistryReader/foamChemistryReader.H b/src/thermophysicalModels/reactionThermo/chemistryReaders/foamChemistryReader/foamChemistryReader.H
similarity index 86%
rename from src/thermophysicalModels/combustion/chemistryReaders/foamChemistryReader/foamChemistryReader.H
rename to src/thermophysicalModels/reactionThermo/chemistryReaders/foamChemistryReader/foamChemistryReader.H
index 2fa851462d140262fd6b9dc899450ce685a9910b..129cf1c811c180a18dcc6ba9a2bd6f65dda6b4f4 100644
--- a/src/thermophysicalModels/combustion/chemistryReaders/foamChemistryReader/foamChemistryReader.H
+++ b/src/thermophysicalModels/reactionThermo/chemistryReaders/foamChemistryReader/foamChemistryReader.H
@@ -51,21 +51,22 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                           Class foamChemistry Declaration
+                       Class foamChemistry Declaration
 \*---------------------------------------------------------------------------*/
 
+template<class ThermoType>
 class foamChemistryReader
 :
-    public chemistryReader
+    public chemistryReader<ThermoType>
 {
         //- Table of the thermodynamic data given in the foamChemistry file
-        HashPtrTable<reactionThermo> speciesThermo_;
+        HashPtrTable<ThermoType> speciesThermo_;
 
         //- Table of species
         speciesTable speciesTable_;
 
         //- List of the reactions
-        SLPtrList<reaction> reactions_;
+        SLPtrList<Reaction<ThermoType> > reactions_;
 
 
     // Private Member Functions
@@ -97,10 +98,9 @@ public:
         foamChemistryReader(const dictionary& thermoDict);
 
 
-    // Destructor
-
-        virtual ~foamChemistryReader()
-        {}
+    //- Destructor
+    virtual ~foamChemistryReader()
+    {}
 
 
     // Member functions
@@ -112,13 +112,13 @@ public:
         }
 
         //- Table of the thermodynamic data given in the foamChemistry file
-        const HashPtrTable<reactionThermo>& speciesThermo() const
+        const HashPtrTable<ThermoType>& speciesThermo() const
         {
             return speciesThermo_;
         }
 
         //- List of the reactions
-        const SLPtrList<reaction>& reactions() const
+        const SLPtrList<Reaction<ThermoType> >& reactions() const
         {
             return reactions_;
         }
@@ -131,6 +131,12 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+#ifdef NoRepository
+#   include "foamChemistryReader.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 #endif
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/combustion/hCombustionThermo/hCombustionThermo.C b/src/thermophysicalModels/reactionThermo/combustionThermo/hCombustionThermo/hCombustionThermo.C
similarity index 81%
rename from src/thermophysicalModels/combustion/hCombustionThermo/hCombustionThermo.C
rename to src/thermophysicalModels/reactionThermo/combustionThermo/hCombustionThermo/hCombustionThermo.C
index 8f455f4eb4a15e80b42d1bc0a4e99ea7f115d830..5ea740221712048cb0c13bc85afc9a87f4fdf27e 100644
--- a/src/thermophysicalModels/combustion/hCombustionThermo/hCombustionThermo.C
+++ b/src/thermophysicalModels/reactionThermo/combustionThermo/hCombustionThermo/hCombustionThermo.C
@@ -31,17 +31,15 @@ License
 
 namespace Foam
 {
-
-/* * * * * * * * * * * * * * * private static data * * * * * * * * * * * * * */
-
-defineTypeNameAndDebug(hCombustionThermo, 0);
-defineRunTimeSelectionTable(hCombustionThermo, fvMesh);
+    defineTypeNameAndDebug(hCombustionThermo, 0);
+    defineRunTimeSelectionTable(hCombustionThermo, fvMesh);
+}
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-hCombustionThermo::hCombustionThermo(const fvMesh& mesh)
+Foam::hCombustionThermo::hCombustionThermo(const fvMesh& mesh)
 :
-    basicThermo(mesh),
+    basicPsiThermo(mesh),
 
     h_
     (
@@ -55,19 +53,15 @@ hCombustionThermo::hCombustionThermo(const fvMesh& mesh)
         ),
         mesh,
         dimensionSet(0, 2, -2, 0, 0),
-        hBoundaryTypes()
+        this->hBoundaryTypes()
     )
 {}
 
 
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
-hCombustionThermo::~hCombustionThermo()
+Foam::hCombustionThermo::~hCombustionThermo()
 {}
 
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-} // End namespace Foam
-
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/combustion/hCombustionThermo/hCombustionThermo.H b/src/thermophysicalModels/reactionThermo/combustionThermo/hCombustionThermo/hCombustionThermo.H
similarity index 77%
rename from src/thermophysicalModels/combustion/hCombustionThermo/hCombustionThermo.H
rename to src/thermophysicalModels/reactionThermo/combustionThermo/hCombustionThermo/hCombustionThermo.H
index fe1e12adc0615064f97298a1c08657cfb87ecd9c..b4b66b55bdb3dcefc0ad5143773cb400e03d2f78 100644
--- a/src/thermophysicalModels/combustion/hCombustionThermo/hCombustionThermo.H
+++ b/src/thermophysicalModels/reactionThermo/combustionThermo/hCombustionThermo/hCombustionThermo.H
@@ -30,15 +30,14 @@ Description
 
 SourceFiles
     hCombustionThermo.C
-    newhCombustionThermo.C
 
 \*---------------------------------------------------------------------------*/
 
 #ifndef hCombustionThermo_H
 #define hCombustionThermo_H
 
-#include "basicThermo.H"
-#include "combustionMixture.H"
+#include "basicPsiThermo.H"
+#include "basicMultiComponentMixture.H"
 #include "autoPtr.H"
 #include "runTimeSelectionTables.H"
 
@@ -48,18 +47,19 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                           Class hCombustionThermo Declaration
+                     Class hCombustionThermo Declaration
 \*---------------------------------------------------------------------------*/
 
 class hCombustionThermo
 :
-    public basicThermo
+    public basicPsiThermo
 {
 
 protected:
 
     // Protected data
 
+        //- Enthalpy field
         volScalarField h_;
 
 
@@ -69,16 +69,15 @@ public:
     TypeName("hCombustionThermo");
 
 
-    // Declare run-time constructor selection tables
-
-        declareRunTimeSelectionTable
-        (
-            autoPtr,
-            hCombustionThermo,
-            fvMesh,
-            (const fvMesh& mesh),
-            (mesh)
-        );
+    //- Declare run-time constructor selection tables
+    declareRunTimeSelectionTable
+    (
+        autoPtr,
+        hCombustionThermo,
+        fvMesh,
+        (const fvMesh& mesh),
+        (mesh)
+    );
 
 
     // Constructors
@@ -89,8 +88,16 @@ public:
 
     // Selectors
 
+        //- Standard selection based on fvMesh
         static autoPtr<hCombustionThermo> New(const fvMesh&);
 
+        //- Select and check that package contains 'thermoType'
+        static autoPtr<hCombustionThermo> NewType
+        (
+            const fvMesh&,
+            const word& thermoType
+        );
+
 
     //- Destructor
     virtual ~hCombustionThermo();
@@ -98,11 +105,11 @@ public:
 
     // Member functions
 
-        //- Return the composition of the combustion mixture
-        virtual combustionMixture& composition() = 0;
+        //- Return the composition of the multi-component mixture
+        virtual basicMultiComponentMixture& composition() = 0;
 
-        //- Return the composition of the combustion mixture
-        virtual const combustionMixture& composition() const = 0;
+        //- Return the composition of the multi-component mixture
+        virtual const basicMultiComponentMixture& composition() const = 0;
 
 
         // Access to thermodynamic state variables
diff --git a/src/thermophysicalModels/combustion/hCombustionThermo/hCombustionThermos.C b/src/thermophysicalModels/reactionThermo/combustionThermo/hCombustionThermo/hCombustionThermos.C
similarity index 80%
rename from src/thermophysicalModels/combustion/hCombustionThermo/hCombustionThermos.C
rename to src/thermophysicalModels/reactionThermo/combustionThermo/hCombustionThermo/hCombustionThermos.C
index fbfa73c85626e09068c819b01f2c6852bec099d0..94846bb75c09efee4ea8745991bd161959a353a2 100644
--- a/src/thermophysicalModels/combustion/hCombustionThermo/hCombustionThermos.C
+++ b/src/thermophysicalModels/reactionThermo/combustionThermo/hCombustionThermo/hCombustionThermos.C
@@ -24,11 +24,10 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "hCombustionThermo.H"
-#include "hMixtureThermo.H"
-
 #include "makeCombustionThermo.H"
-#include "addToRunTimeSelectionTable.H"
+
+#include "hCombustionThermo.H"
+#include "hPsiMixtureThermo.H"
 
 #include "perfectGas.H"
 
@@ -46,6 +45,7 @@ License
 #include "multiComponentMixture.H"
 #include "reactingMixture.H"
 
+#include "thermoPhysicsTypes.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -57,7 +57,7 @@ namespace Foam
 makeCombustionThermo
 (
     hCombustionThermo,
-    hMixtureThermo,
+    hPsiMixtureThermo,
     homogeneousMixture,
     constTransport,
     hConstThermo,
@@ -67,7 +67,7 @@ makeCombustionThermo
 makeCombustionThermo
 (
     hCombustionThermo,
-    hMixtureThermo,
+    hPsiMixtureThermo,
     inhomogeneousMixture,
     constTransport,
     hConstThermo,
@@ -77,7 +77,7 @@ makeCombustionThermo
 makeCombustionThermo
 (
     hCombustionThermo,
-    hMixtureThermo,
+    hPsiMixtureThermo,
     veryInhomogeneousMixture,
     constTransport,
     hConstThermo,
@@ -87,7 +87,7 @@ makeCombustionThermo
 makeCombustionThermo
 (
     hCombustionThermo,
-    hMixtureThermo,
+    hPsiMixtureThermo,
     homogeneousMixture,
     sutherlandTransport,
     janafThermo,
@@ -97,7 +97,7 @@ makeCombustionThermo
 makeCombustionThermo
 (
     hCombustionThermo,
-    hMixtureThermo,
+    hPsiMixtureThermo,
     inhomogeneousMixture,
     sutherlandTransport,
     janafThermo,
@@ -107,7 +107,7 @@ makeCombustionThermo
 makeCombustionThermo
 (
     hCombustionThermo,
-    hMixtureThermo,
+    hPsiMixtureThermo,
     veryInhomogeneousMixture,
     sutherlandTransport,
     janafThermo,
@@ -117,43 +117,32 @@ makeCombustionThermo
 makeCombustionThermo
 (
     hCombustionThermo,
-    hMixtureThermo,
+    hPsiMixtureThermo,
     dieselMixture,
     sutherlandTransport,
     janafThermo,
     perfectGas
 );
-   
-makeCombustionThermo
+
+// Multi-component thermo
+
+makeCombustionMixtureThermo
 (
     hCombustionThermo,
-    hMixtureThermo,
+    hPsiMixtureThermo,
     multiComponentMixture,
-    sutherlandTransport,
-    janafThermo,
-    perfectGas
+    gasThermoPhysics
 );
 
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-// Reaction thermo
-
-defineTemplateTypeNameAndDebug(hMixtureThermo<reactingMixture>, 0);
-
-typedef hMixtureThermo<reactingMixture> hMixtureThermoReactingMixture;
+// Multi-component reaction thermo
 
-addToRunTimeSelectionTable
+makeCombustionMixtureThermo
 (
     hCombustionThermo,
-    hMixtureThermoReactingMixture,
-    fvMesh
-);
-
-addToRunTimeSelectionTable
-(
-    basicThermo,
-    hMixtureThermoReactingMixture,
-    fvMesh
+    hPsiMixtureThermo,
+    reactingMixture,
+    gasThermoPhysics
 );
 
 
diff --git a/src/thermophysicalModels/reactionThermo/combustionThermo/hCombustionThermo/makeCombustionThermo.H b/src/thermophysicalModels/reactionThermo/combustionThermo/hCombustionThermo/makeCombustionThermo.H
new file mode 100644
index 0000000000000000000000000000000000000000..4ee0c2a022a3ed2c37656e4910724923b580a2b4
--- /dev/null
+++ b/src/thermophysicalModels/reactionThermo/combustionThermo/hCombustionThermo/makeCombustionThermo.H
@@ -0,0 +1,100 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+InClass
+    Foam::hCombustionThermo
+
+Description
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef makeCombustionThermo_H
+#define makeCombustionThermo_H
+
+#include "addToRunTimeSelectionTable.H"
+#include "basicPsiThermo.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#define makeCombustionThermo(CThermo,MixtureThermo,Mixture,Transport,Thermo,EqnOfState) \
+                                                                              \
+typedef MixtureThermo                                                         \
+    <Mixture<Transport<specieThermo<Thermo<EqnOfState> > > > >                \
+    MixtureThermo##Mixture##Transport##Thermo##EqnOfState;                    \
+                                                                              \
+defineTemplateTypeNameAndDebugWithName                                        \
+(                                                                             \
+    MixtureThermo##Mixture##Transport##Thermo##EqnOfState,                    \
+    #MixtureThermo                                                            \
+        "<"#Mixture"<"#Transport"<specieThermo<"#Thermo"<"#EqnOfState">>>>>", \
+    0                                                                         \
+);                                                                            \
+                                                                              \
+addToRunTimeSelectionTable                                                    \
+(                                                                             \
+    basicPsiThermo,                                                           \
+    MixtureThermo##Mixture##Transport##Thermo##EqnOfState,                    \
+    fvMesh                                                                    \
+);                                                                            \
+                                                                              \
+addToRunTimeSelectionTable                                                    \
+(                                                                             \
+    CThermo,                                                                  \
+    MixtureThermo##Mixture##Transport##Thermo##EqnOfState,                    \
+    fvMesh                                                                    \
+)
+
+
+#define makeCombustionMixtureThermo(CThermo,MixtureThermo,Mixture,ThermoPhys) \
+                                                                              \
+typedef MixtureThermo<Mixture<ThermoPhys> >                                   \
+    MixtureThermo##Mixture##ThermoPhys;                                       \
+                                                                              \
+defineTemplateTypeNameAndDebugWithName                                        \
+(                                                                             \
+    MixtureThermo##Mixture##ThermoPhys,                                       \
+    #MixtureThermo"<"#Mixture"<"#ThermoPhys">>",                              \
+    0                                                                         \
+);                                                                            \
+                                                                              \
+addToRunTimeSelectionTable                                                    \
+(                                                                             \
+    basicPsiThermo,                                                           \
+    MixtureThermo##Mixture##ThermoPhys,                                       \
+    fvMesh                                                                    \
+);                                                                            \
+                                                                              \
+addToRunTimeSelectionTable                                                    \
+(                                                                             \
+    CThermo,                                                                  \
+    MixtureThermo##Mixture##ThermoPhys,                                       \
+    fvMesh                                                                    \
+);
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/reactionThermo/combustionThermo/hCombustionThermo/newhCombustionThermo.C b/src/thermophysicalModels/reactionThermo/combustionThermo/hCombustionThermo/newhCombustionThermo.C
new file mode 100644
index 0000000000000000000000000000000000000000..788a298d0d841b2d09d258cb2c35a904dd254bd7
--- /dev/null
+++ b/src/thermophysicalModels/reactionThermo/combustionThermo/hCombustionThermo/newhCombustionThermo.C
@@ -0,0 +1,151 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "hCombustionThermo.H"
+#include "fvMesh.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+Foam::autoPtr<Foam::hCombustionThermo> Foam::hCombustionThermo::New
+(
+    const fvMesh& mesh
+)
+{
+    word hCombustionThermoTypeName;
+
+    // Enclose the creation of the thermophysicalProperties to ensure it is
+    // deleted before the turbulenceModel is created otherwise the dictionary
+    // is entered in the database twice
+    {
+        IOdictionary thermoDict
+        (
+            IOobject
+            (
+                "thermophysicalProperties",
+                mesh.time().constant(),
+                mesh,
+                IOobject::MUST_READ,
+                IOobject::NO_WRITE
+            )
+        );
+
+        thermoDict.lookup("thermoType") >> hCombustionThermoTypeName;
+    }
+
+    Info<< "Selecting thermodynamics package " << hCombustionThermoTypeName
+        << endl;
+
+    fvMeshConstructorTable::iterator cstrIter =
+        fvMeshConstructorTablePtr_->find(hCombustionThermoTypeName);
+
+    if (cstrIter == fvMeshConstructorTablePtr_->end())
+    {
+        FatalErrorIn("hCombustionThermo::New(const fvMesh&)")
+            << "Unknown hCombustionThermo type "
+            << hCombustionThermoTypeName << nl << nl
+            << "Valid hCombustionThermo types are:" << nl
+            << fvMeshConstructorTablePtr_->toc() << nl
+            << exit(FatalError);
+    }
+
+    return autoPtr<hCombustionThermo>(cstrIter()(mesh));
+}
+
+
+Foam::autoPtr<Foam::hCombustionThermo> Foam::hCombustionThermo::NewType
+(
+    const fvMesh& mesh,
+    const word& thermoType
+)
+{
+    word hCombustionThermoTypeName;
+
+    // Enclose the creation of the thermophysicalProperties to ensure it is
+    // deleted before the turbulenceModel is created otherwise the dictionary
+    // is entered in the database twice
+    {
+        IOdictionary thermoDict
+        (
+            IOobject
+            (
+                "thermophysicalProperties",
+                mesh.time().constant(),
+                mesh,
+                IOobject::MUST_READ,
+                IOobject::NO_WRITE
+            )
+        );
+
+        thermoDict.lookup("thermoType") >> hCombustionThermoTypeName;
+
+        if (hCombustionThermoTypeName.find(thermoType) == string::npos)
+        {
+            wordList allModels = fvMeshConstructorTablePtr_->toc();
+            DynamicList<word> validModels;
+            forAll(allModels, i)
+            {
+                if (allModels[i].find(thermoType) != string::npos)
+                {
+                    validModels.append(allModels[i]);
+                }
+            }
+
+            FatalErrorIn
+            (
+                "autoPtr<hCombustionThermo> hCombustionThermo::NewType"
+                "("
+                    "const fvMesh&, "
+                    "const word&"
+                ")"
+            )   << "Inconsistent thermo package selected:" << nl << nl
+                << hCombustionThermoTypeName << nl << nl << "Please select a "
+                << "thermo package based on " << thermoType
+                << ". Valid options include:" << nl << validModels << nl
+                << exit(FatalError);
+        }
+    }
+
+    Info<< "Selecting thermodynamics package " << hCombustionThermoTypeName
+        << endl;
+
+    fvMeshConstructorTable::iterator cstrIter =
+        fvMeshConstructorTablePtr_->find(hCombustionThermoTypeName);
+
+    if (cstrIter == fvMeshConstructorTablePtr_->end())
+    {
+        FatalErrorIn("hCombustionThermo::New(const fvMesh&)")
+            << "Unknown hCombustionThermo type "
+            << hCombustionThermoTypeName << nl << nl
+            << "Valid hCombustionThermo types are:" << nl
+            << fvMeshConstructorTablePtr_->toc() << nl
+            << exit(FatalError);
+    }
+
+    return autoPtr<hCombustionThermo>(cstrIter()(mesh));
+}
+
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/combustion/hhuCombustionThermo/hhuCombustionThermo.C b/src/thermophysicalModels/reactionThermo/combustionThermo/hhuCombustionThermo/hhuCombustionThermo.C
similarity index 100%
rename from src/thermophysicalModels/combustion/hhuCombustionThermo/hhuCombustionThermo.C
rename to src/thermophysicalModels/reactionThermo/combustionThermo/hhuCombustionThermo/hhuCombustionThermo.C
diff --git a/src/thermophysicalModels/combustion/hhuCombustionThermo/hhuCombustionThermo.H b/src/thermophysicalModels/reactionThermo/combustionThermo/hhuCombustionThermo/hhuCombustionThermo.H
similarity index 100%
rename from src/thermophysicalModels/combustion/hhuCombustionThermo/hhuCombustionThermo.H
rename to src/thermophysicalModels/reactionThermo/combustionThermo/hhuCombustionThermo/hhuCombustionThermo.H
diff --git a/src/thermophysicalModels/combustion/hhuCombustionThermo/hhuCombustionThermos.C b/src/thermophysicalModels/reactionThermo/combustionThermo/hhuCombustionThermo/hhuCombustionThermos.C
similarity index 100%
rename from src/thermophysicalModels/combustion/hhuCombustionThermo/hhuCombustionThermos.C
rename to src/thermophysicalModels/reactionThermo/combustionThermo/hhuCombustionThermo/hhuCombustionThermos.C
diff --git a/src/thermophysicalModels/combustion/hhuCombustionThermo/newhhuCombustionThermo.C b/src/thermophysicalModels/reactionThermo/combustionThermo/hhuCombustionThermo/newhhuCombustionThermo.C
similarity index 100%
rename from src/thermophysicalModels/combustion/hhuCombustionThermo/newhhuCombustionThermo.C
rename to src/thermophysicalModels/reactionThermo/combustionThermo/hhuCombustionThermo/newhhuCombustionThermo.C
diff --git a/src/thermophysicalModels/combustion/mixtureThermos/hMixtureThermo/hMixtureThermo.C b/src/thermophysicalModels/reactionThermo/combustionThermo/mixtureThermos/hPsiMixtureThermo/hPsiMixtureThermo.C
similarity index 81%
rename from src/thermophysicalModels/combustion/mixtureThermos/hMixtureThermo/hMixtureThermo.C
rename to src/thermophysicalModels/reactionThermo/combustionThermo/mixtureThermos/hPsiMixtureThermo/hPsiMixtureThermo.C
index 57d054ad43f118cc7e1d45875b2d4072d6dd8ed5..5a788049a62d2a649e1761ca4ae1df31f9d80047 100644
--- a/src/thermophysicalModels/combustion/mixtureThermos/hMixtureThermo/hMixtureThermo.C
+++ b/src/thermophysicalModels/reactionThermo/combustionThermo/mixtureThermos/hPsiMixtureThermo/hPsiMixtureThermo.C
@@ -24,49 +24,14 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "hMixtureThermo.H"
+#include "hPsiMixtureThermo.H"
 #include "fvMesh.H"
 #include "fixedValueFvPatchFields.H"
 
-// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
-
-template<class MixtureType>
-Foam::hMixtureThermo<MixtureType>::hMixtureThermo(const fvMesh& mesh)
-:
-    hCombustionThermo(mesh),
-    MixtureType(*this, mesh)
-{
-    scalarField& hCells = h_.internalField();
-    const scalarField& TCells = T_.internalField();
-
-    forAll(hCells, celli)
-    {
-        hCells[celli] = this->cellMixture(celli).H(TCells[celli]);
-    }
-
-    forAll(h_.boundaryField(), patchi)
-    {
-        h_.boundaryField()[patchi] == h(T_.boundaryField()[patchi], patchi);
-    }
-
-    hBoundaryCorrection(h_);
-
-    calculate();
-    psi_.oldTime();   // Switch on saving old time
-}
-
-
-// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
-
-template<class MixtureType>
-Foam::hMixtureThermo<MixtureType>::~hMixtureThermo()
-{}
-
-
 // * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
 
 template<class MixtureType>
-void Foam::hMixtureThermo<MixtureType>::calculate()
+void Foam::hPsiMixtureThermo<MixtureType>::calculate()
 {
     const scalarField& hCells = h_.internalField();
     const scalarField& pCells = p_.internalField();
@@ -78,14 +43,14 @@ void Foam::hMixtureThermo<MixtureType>::calculate()
 
     forAll(TCells, celli)
     {
-        const typename MixtureType::thermoType& mixture_ =
+        const typename MixtureType::thermoType& mixture =
             this->cellMixture(celli);
 
-        TCells[celli] = mixture_.TH(hCells[celli], TCells[celli]);
-        psiCells[celli] = mixture_.psi(pCells[celli], TCells[celli]);
+        TCells[celli] = mixture.TH(hCells[celli], TCells[celli]);
+        psiCells[celli] = mixture.psi(pCells[celli], TCells[celli]);
 
-        muCells[celli] = mixture_.mu(TCells[celli]);
-        alphaCells[celli] = mixture_.alpha(TCells[celli]);
+        muCells[celli] = mixture.mu(TCells[celli]);
+        alphaCells[celli] = mixture.alpha(TCells[celli]);
     }
 
     forAll(T_.boundaryField(), patchi)
@@ -103,42 +68,79 @@ void Foam::hMixtureThermo<MixtureType>::calculate()
         {
             forAll(pT, facei)
             {
-                const typename MixtureType::thermoType& mixture_ =
+                const typename MixtureType::thermoType& mixture =
                     this->patchFaceMixture(patchi, facei);
 
-                ph[facei] = mixture_.H(pT[facei]);
+                ph[facei] = mixture.H(pT[facei]);
 
-                ppsi[facei] = mixture_.psi(pp[facei], pT[facei]);
-                pmu_[facei] = mixture_.mu(pT[facei]);
-                palpha_[facei] = mixture_.alpha(pT[facei]);
+                ppsi[facei] = mixture.psi(pp[facei], pT[facei]);
+                pmu_[facei] = mixture.mu(pT[facei]);
+                palpha_[facei] = mixture.alpha(pT[facei]);
             }
         }
         else
         {
             forAll(pT, facei)
             {
-                const typename MixtureType::thermoType& mixture_ =
+                const typename MixtureType::thermoType& mixture =
                     this->patchFaceMixture(patchi, facei);
 
-                pT[facei] = mixture_.TH(ph[facei], pT[facei]);
+                pT[facei] = mixture.TH(ph[facei], pT[facei]);
 
-                ppsi[facei] = mixture_.psi(pp[facei], pT[facei]);
-                pmu_[facei] = mixture_.mu(pT[facei]);
-                palpha_[facei] = mixture_.alpha(pT[facei]);
+                ppsi[facei] = mixture.psi(pp[facei], pT[facei]);
+                pmu_[facei] = mixture.mu(pT[facei]);
+                palpha_[facei] = mixture.alpha(pT[facei]);
             }
         }
     }
 }
 
 
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template<class MixtureType>
+Foam::hPsiMixtureThermo<MixtureType>::hPsiMixtureThermo(const fvMesh& mesh)
+:
+    hCombustionThermo(mesh),
+    MixtureType(*this, mesh)
+{
+    scalarField& hCells = h_.internalField();
+    const scalarField& TCells = T_.internalField();
+
+    forAll(hCells, celli)
+    {
+        hCells[celli] = this->cellMixture(celli).H(TCells[celli]);
+    }
+
+    forAll(h_.boundaryField(), patchi)
+    {
+        h_.boundaryField()[patchi] == h(T_.boundaryField()[patchi], patchi);
+    }
+
+    hBoundaryCorrection(h_);
+
+    calculate();
+
+    // Switch on saving old time
+    psi_.oldTime();
+}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+template<class MixtureType>
+Foam::hPsiMixtureThermo<MixtureType>::~hPsiMixtureThermo()
+{}
+
+
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 template<class MixtureType>
-void Foam::hMixtureThermo<MixtureType>::correct()
+void Foam::hPsiMixtureThermo<MixtureType>::correct()
 {
     if (debug)
     {
-        Info<< "entering hMixtureThermo<MixtureType>::correct()" << endl;
+        Info<< "entering hPsiMixtureThermo<MixtureType>::correct()" << endl;
     }
 
     // force the saving of the old-time values
@@ -148,14 +150,14 @@ void Foam::hMixtureThermo<MixtureType>::correct()
 
     if (debug)
     {
-        Info<< "exiting hMixtureThermo<MixtureType>::correct()" << endl;
+        Info<< "exiting hPsiMixtureThermo<MixtureType>::correct()" << endl;
     }
 }
 
 
 template<class MixtureType>
 Foam::tmp<Foam::volScalarField>
-Foam::hMixtureThermo<MixtureType>::hs() const
+Foam::hPsiMixtureThermo<MixtureType>::hs() const
 {
     const fvMesh& mesh = T_.mesh();
 
@@ -202,7 +204,7 @@ Foam::hMixtureThermo<MixtureType>::hs() const
 
 template<class MixtureType>
 Foam::tmp<Foam::volScalarField>
-Foam::hMixtureThermo<MixtureType>::hc() const
+Foam::hPsiMixtureThermo<MixtureType>::hc() const
 {
     const fvMesh& mesh = T_.mesh();
 
@@ -247,7 +249,7 @@ Foam::hMixtureThermo<MixtureType>::hc() const
 
 template<class MixtureType>
 Foam::tmp<Foam::scalarField>
-Foam::hMixtureThermo<MixtureType>::h
+Foam::hPsiMixtureThermo<MixtureType>::h
 (
     const scalarField& T,
     const labelList& cells
@@ -267,7 +269,7 @@ Foam::hMixtureThermo<MixtureType>::h
 
 template<class MixtureType>
 Foam::tmp<Foam::scalarField>
-Foam::hMixtureThermo<MixtureType>::h
+Foam::hPsiMixtureThermo<MixtureType>::h
 (
     const scalarField& T,
     const label patchi
@@ -287,7 +289,7 @@ Foam::hMixtureThermo<MixtureType>::h
 
 template<class MixtureType>
 Foam::tmp<Foam::scalarField>
-Foam::hMixtureThermo<MixtureType>::Cp
+Foam::hPsiMixtureThermo<MixtureType>::Cp
 (
     const scalarField& T,
     const label patchi
@@ -308,7 +310,7 @@ Foam::hMixtureThermo<MixtureType>::Cp
 
 template<class MixtureType>
 Foam::tmp<Foam::volScalarField>
-Foam::hMixtureThermo<MixtureType>::Cp() const
+Foam::hPsiMixtureThermo<MixtureType>::Cp() const
 {
     const fvMesh& mesh = T_.mesh();
 
@@ -349,7 +351,7 @@ Foam::hMixtureThermo<MixtureType>::Cp() const
 
 
 template<class MixtureType>
-bool Foam::hMixtureThermo<MixtureType>::read()
+bool Foam::hPsiMixtureThermo<MixtureType>::read()
 {
     if (hCombustionThermo::read())
     {
diff --git a/src/thermophysicalModels/combustion/mixtureThermos/hMixtureThermo/hMixtureThermo.H b/src/thermophysicalModels/reactionThermo/combustionThermo/mixtureThermos/hPsiMixtureThermo/hPsiMixtureThermo.H
similarity index 83%
rename from src/thermophysicalModels/combustion/mixtureThermos/hMixtureThermo/hMixtureThermo.H
rename to src/thermophysicalModels/reactionThermo/combustionThermo/mixtureThermos/hPsiMixtureThermo/hPsiMixtureThermo.H
index 62d7943400e809a9891c1684c82a3012cf3cc247..64503284478016985773a5cef53b5de87af8d299 100644
--- a/src/thermophysicalModels/combustion/mixtureThermos/hMixtureThermo/hMixtureThermo.H
+++ b/src/thermophysicalModels/reactionThermo/combustionThermo/mixtureThermos/hPsiMixtureThermo/hPsiMixtureThermo.H
@@ -23,18 +23,18 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::hMixtureThermo
+    Foam::hPsiMixtureThermo
 
 Description
-    Foam::hMixtureThermo
+    Foam::hPsiMixtureThermo
 
 SourceFiles
-    hMixtureThermo.C
+    hPsiMixtureThermo.C
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef hMixtureThermo_H
-#define hMixtureThermo_H
+#ifndef hPsiMixtureThermo_H
+#define hPsiMixtureThermo_H
 
 #include "hCombustionThermo.H"
 
@@ -44,11 +44,11 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                           Class hMixtureThermo Declaration
+                      Class hPsiMixtureThermo Declaration
 \*---------------------------------------------------------------------------*/
 
 template<class MixtureType>
-class hMixtureThermo
+class hPsiMixtureThermo
 :
     public hCombustionThermo,
     public MixtureType
@@ -58,35 +58,35 @@ class hMixtureThermo
         void calculate();
 
         //- Construct as copy (not implemented)
-        hMixtureThermo(const hMixtureThermo<MixtureType>&);
+        hPsiMixtureThermo(const hPsiMixtureThermo<MixtureType>&);
 
 
 public:
 
     //- Runtime type information
-    TypeName("hMixtureThermo");
+    TypeName("hPsiMixtureThermo");
 
 
     // Constructors
 
         //- Construct from mesh
-        hMixtureThermo(const fvMesh&);
+        hPsiMixtureThermo(const fvMesh&);
 
 
     //- Destructor
-    virtual ~hMixtureThermo();
+    virtual ~hPsiMixtureThermo();
 
 
     // Member functions
 
-        //- Return the compostion of the combustion mixture
-        virtual combustionMixture& composition()
+        //- Return the compostion of the multi-component mixture
+        virtual basicMultiComponentMixture& composition()
         {
             return *this;
         }
 
-        //- Return the compostion of the combustion mixture
-        virtual const combustionMixture& composition() const
+        //- Return the compostion of the multi-component mixture
+        virtual const basicMultiComponentMixture& composition() const
         {
             return *this;
         }
@@ -100,6 +100,7 @@ public:
         //- Chemical enthalpy [J/kg]
         virtual tmp<volScalarField> hc() const;
 
+
         // Fields derived from thermodynamic state variables
 
             //- Enthalpy for cell-set [J/kg]
@@ -139,7 +140,7 @@ public:
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 #ifdef NoRepository
-#   include "hMixtureThermo.C"
+#   include "hPsiMixtureThermo.C"
 #endif
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/thermophysicalModels/combustion/mixtureThermos/hhuMixtureThermo/hhuMixtureThermo.C b/src/thermophysicalModels/reactionThermo/combustionThermo/mixtureThermos/hhuMixtureThermo/hhuMixtureThermo.C
similarity index 100%
rename from src/thermophysicalModels/combustion/mixtureThermos/hhuMixtureThermo/hhuMixtureThermo.C
rename to src/thermophysicalModels/reactionThermo/combustionThermo/mixtureThermos/hhuMixtureThermo/hhuMixtureThermo.C
diff --git a/src/thermophysicalModels/combustion/mixtureThermos/hhuMixtureThermo/hhuMixtureThermo.H b/src/thermophysicalModels/reactionThermo/combustionThermo/mixtureThermos/hhuMixtureThermo/hhuMixtureThermo.H
similarity index 93%
rename from src/thermophysicalModels/combustion/mixtureThermos/hhuMixtureThermo/hhuMixtureThermo.H
rename to src/thermophysicalModels/reactionThermo/combustionThermo/mixtureThermos/hhuMixtureThermo/hhuMixtureThermo.H
index 99cf720488d528ae062af50470dd184cee98a359..5e9834e86c086b036855efa7f9ba3ae66a1a0e33 100644
--- a/src/thermophysicalModels/combustion/mixtureThermos/hhuMixtureThermo/hhuMixtureThermo.H
+++ b/src/thermophysicalModels/reactionThermo/combustionThermo/mixtureThermos/hhuMixtureThermo/hhuMixtureThermo.H
@@ -36,7 +36,7 @@ SourceFiles
 #ifndef hhuMixtureThermo_H
 #define hhuMixtureThermo_H
 
-#include "hMixtureThermo.H"
+//#include "hPsiMixtureThermo.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -44,7 +44,7 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                           Class hhuMixtureThermo Declaration
+                      Class hhuMixtureThermo Declaration
 \*---------------------------------------------------------------------------*/
 
 template<class MixtureType>
@@ -79,14 +79,14 @@ public:
 
     // Member functions
 
-        //- Return the compostion of the combustion mixture
-        virtual combustionMixture& composition()
+        //- Return the compostion of the multi-component mixture
+        virtual basicMultiComponentMixture& composition()
         {
             return *this;
         }
 
-        //- Return the compostion of the combustion mixture
-        virtual const combustionMixture& composition() const
+        //- Return the compostion of the multi-component mixture
+        virtual const basicMultiComponentMixture& composition() const
         {
             return *this;
         }
diff --git a/src/thermophysicalModels/combustion/derivedFvPatchFields/fixedUnburntEnthalpy/fixedUnburntEnthalpyFvPatchScalarField.C b/src/thermophysicalModels/reactionThermo/derivedFvPatchFields/fixedUnburntEnthalpy/fixedUnburntEnthalpyFvPatchScalarField.C
similarity index 100%
rename from src/thermophysicalModels/combustion/derivedFvPatchFields/fixedUnburntEnthalpy/fixedUnburntEnthalpyFvPatchScalarField.C
rename to src/thermophysicalModels/reactionThermo/derivedFvPatchFields/fixedUnburntEnthalpy/fixedUnburntEnthalpyFvPatchScalarField.C
diff --git a/src/thermophysicalModels/combustion/derivedFvPatchFields/fixedUnburntEnthalpy/fixedUnburntEnthalpyFvPatchScalarField.H b/src/thermophysicalModels/reactionThermo/derivedFvPatchFields/fixedUnburntEnthalpy/fixedUnburntEnthalpyFvPatchScalarField.H
similarity index 98%
rename from src/thermophysicalModels/combustion/derivedFvPatchFields/fixedUnburntEnthalpy/fixedUnburntEnthalpyFvPatchScalarField.H
rename to src/thermophysicalModels/reactionThermo/derivedFvPatchFields/fixedUnburntEnthalpy/fixedUnburntEnthalpyFvPatchScalarField.H
index 6da82e29eb7a0748135f434c39408abf662f1866..d55a9585a10017ba20ec70678dbadc17290afa94 100644
--- a/src/thermophysicalModels/combustion/derivedFvPatchFields/fixedUnburntEnthalpy/fixedUnburntEnthalpyFvPatchScalarField.H
+++ b/src/thermophysicalModels/reactionThermo/derivedFvPatchFields/fixedUnburntEnthalpy/fixedUnburntEnthalpyFvPatchScalarField.H
@@ -44,7 +44,7 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                Class fixedUnburntEnthalpyFvPatchScalarField Declaration
+          Class fixedUnburntEnthalpyFvPatchScalarField Declaration
 \*---------------------------------------------------------------------------*/
 
 class fixedUnburntEnthalpyFvPatchScalarField
diff --git a/src/thermophysicalModels/combustion/derivedFvPatchFields/gradientUnburntEnthalpy/gradientUnburntEnthalpyFvPatchScalarField.C b/src/thermophysicalModels/reactionThermo/derivedFvPatchFields/gradientUnburntEnthalpy/gradientUnburntEnthalpyFvPatchScalarField.C
similarity index 100%
rename from src/thermophysicalModels/combustion/derivedFvPatchFields/gradientUnburntEnthalpy/gradientUnburntEnthalpyFvPatchScalarField.C
rename to src/thermophysicalModels/reactionThermo/derivedFvPatchFields/gradientUnburntEnthalpy/gradientUnburntEnthalpyFvPatchScalarField.C
diff --git a/src/thermophysicalModels/combustion/derivedFvPatchFields/gradientUnburntEnthalpy/gradientUnburntEnthalpyFvPatchScalarField.H b/src/thermophysicalModels/reactionThermo/derivedFvPatchFields/gradientUnburntEnthalpy/gradientUnburntEnthalpyFvPatchScalarField.H
similarity index 98%
rename from src/thermophysicalModels/combustion/derivedFvPatchFields/gradientUnburntEnthalpy/gradientUnburntEnthalpyFvPatchScalarField.H
rename to src/thermophysicalModels/reactionThermo/derivedFvPatchFields/gradientUnburntEnthalpy/gradientUnburntEnthalpyFvPatchScalarField.H
index 081ff77d91e7bf76934330f6edc08f69436ff90d..f237bb98ba814c18bc58286bc19b39f90a8aa497 100644
--- a/src/thermophysicalModels/combustion/derivedFvPatchFields/gradientUnburntEnthalpy/gradientUnburntEnthalpyFvPatchScalarField.H
+++ b/src/thermophysicalModels/reactionThermo/derivedFvPatchFields/gradientUnburntEnthalpy/gradientUnburntEnthalpyFvPatchScalarField.H
@@ -44,7 +44,7 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-               Class gradientUnburntEnthalpyFvPatchScalarField Declaration
+         Class gradientUnburntEnthalpyFvPatchScalarField Declaration
 \*---------------------------------------------------------------------------*/
 
 class gradientUnburntEnthalpyFvPatchScalarField
diff --git a/src/thermophysicalModels/combustion/derivedFvPatchFields/mixedUnburntEnthalpy/mixedUnburntEnthalpyFvPatchScalarField.C b/src/thermophysicalModels/reactionThermo/derivedFvPatchFields/mixedUnburntEnthalpy/mixedUnburntEnthalpyFvPatchScalarField.C
similarity index 100%
rename from src/thermophysicalModels/combustion/derivedFvPatchFields/mixedUnburntEnthalpy/mixedUnburntEnthalpyFvPatchScalarField.C
rename to src/thermophysicalModels/reactionThermo/derivedFvPatchFields/mixedUnburntEnthalpy/mixedUnburntEnthalpyFvPatchScalarField.C
diff --git a/src/thermophysicalModels/combustion/derivedFvPatchFields/mixedUnburntEnthalpy/mixedUnburntEnthalpyFvPatchScalarField.H b/src/thermophysicalModels/reactionThermo/derivedFvPatchFields/mixedUnburntEnthalpy/mixedUnburntEnthalpyFvPatchScalarField.H
similarity index 98%
rename from src/thermophysicalModels/combustion/derivedFvPatchFields/mixedUnburntEnthalpy/mixedUnburntEnthalpyFvPatchScalarField.H
rename to src/thermophysicalModels/reactionThermo/derivedFvPatchFields/mixedUnburntEnthalpy/mixedUnburntEnthalpyFvPatchScalarField.H
index f97d9ebf2c2202696c445a3a8344a64f35b58779..28d6c939a44ee7bd468cbd467a6827220ed61833 100644
--- a/src/thermophysicalModels/combustion/derivedFvPatchFields/mixedUnburntEnthalpy/mixedUnburntEnthalpyFvPatchScalarField.H
+++ b/src/thermophysicalModels/reactionThermo/derivedFvPatchFields/mixedUnburntEnthalpy/mixedUnburntEnthalpyFvPatchScalarField.H
@@ -44,7 +44,7 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-               Class mixedUnburntEnthalpyFvPatchScalarField Declaration
+           Class mixedUnburntEnthalpyFvPatchScalarField Declaration
 \*---------------------------------------------------------------------------*/
 
 class mixedUnburntEnthalpyFvPatchScalarField
diff --git a/src/thermophysicalModels/combustion/mixtureThermos/mixtures/combustionMixture/combustionMixture.C b/src/thermophysicalModels/reactionThermo/mixtures/basicMultiComponentMixture/basicMultiComponentMixture.C
similarity index 88%
rename from src/thermophysicalModels/combustion/mixtureThermos/mixtures/combustionMixture/combustionMixture.C
rename to src/thermophysicalModels/reactionThermo/mixtures/basicMultiComponentMixture/basicMultiComponentMixture.C
index 0744a4e2ead014599f3ff00d532d7ee67e0c2c13..1016a33a97bb9d11a365fc09b3a96b91423da34e 100644
--- a/src/thermophysicalModels/combustion/mixtureThermos/mixtures/combustionMixture/combustionMixture.C
+++ b/src/thermophysicalModels/reactionThermo/mixtures/basicMultiComponentMixture/basicMultiComponentMixture.C
@@ -24,17 +24,29 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "combustionMixture.H"
-#include "fvMesh.H"
+#include "basicMultiComponentMixture.H"
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
 
-namespace Foam
+void Foam::basicMultiComponentMixture::correctMassFractions()
 {
+    volScalarField Yt = Y_[0];
+
+    for(label n=1; n<Y_.size(); n++)
+    {
+        Yt += Y_[n];
+    }
+
+    forAll (Y_, n)
+    {
+        Y_[n] /= Yt;
+    }
+}
+
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-combustionMixture::combustionMixture
+Foam::basicMultiComponentMixture::basicMultiComponentMixture
 (
     const dictionary& thermoDict,
     const wordList& specieNames,
@@ -107,11 +119,9 @@ combustionMixture::combustionMixture
             );
         }
     }
-}
 
+    correctMassFractions();
+}
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-} // End namespace Foam
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/combustion/mixtureThermos/mixtures/combustionMixture/combustionMixture.H b/src/thermophysicalModels/reactionThermo/mixtures/basicMultiComponentMixture/basicMultiComponentMixture.H
similarity index 67%
rename from src/thermophysicalModels/combustion/mixtureThermos/mixtures/combustionMixture/combustionMixture.H
rename to src/thermophysicalModels/reactionThermo/mixtures/basicMultiComponentMixture/basicMultiComponentMixture.H
index f109ace2ac149beeaa3a55e28033639198e019a3..a21485889a666654d49d88f5da946a35b12892a6 100644
--- a/src/thermophysicalModels/combustion/mixtureThermos/mixtures/combustionMixture/combustionMixture.H
+++ b/src/thermophysicalModels/reactionThermo/mixtures/basicMultiComponentMixture/basicMultiComponentMixture.H
@@ -23,18 +23,18 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::combustionMixture
+    Foam::basicMultiComponentMixture
 
 Description
     combustion mixture
 
 SourceFiles
-    combustionMixture.C
+    basicMultiComponentMixture.C
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef combustionMixture_H
-#define combustionMixture_H
+#ifndef basicMultiComponentMixture_H
+#define basicMultiComponentMixture_H
 
 #include "volFields.H"
 #include "PtrList.H"
@@ -46,29 +46,35 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                           Class combustionMixture Declaration
+                 Class basicMultiComponentMixture Declaration
 \*---------------------------------------------------------------------------*/
 
-class combustionMixture
+class basicMultiComponentMixture
 {
 
 protected:
 
     // Protected data
 
-        //- The table of species
+        //- Table of specie names
         speciesTable species_;
 
         //- Species mass fractions
         PtrList<volScalarField> Y_;
 
 
+    // Protected member functions
+
+        //- Correct the mass fractions to sum to 1
+        void correctMassFractions();
+
+
 public:
 
     // Constructors
 
         //- Construct from dictionary and mesh
-        combustionMixture
+        basicMultiComponentMixture
         (
             const dictionary&,
             const wordList& specieNames,
@@ -76,69 +82,47 @@ public:
         );
 
 
-    // Destructor
-
-        virtual ~combustionMixture()
-        {}
+    //- Destructor
+    virtual ~basicMultiComponentMixture()
+    {}
 
 
     // Member functions
 
-        //- Return the mass-fraction fields
-        PtrList<volScalarField>& Y()
+        //- Return the table of species
+        const speciesTable& species() const
         {
-            return Y_;
+            return species_;
         }
 
+        //- Return the mass-fraction fields
+        inline PtrList<volScalarField>& Y();
+
         //- Return the const mass-fraction fields
-        const PtrList<volScalarField>& Y() const
-        {
-            return Y_;
-        }
+        inline const PtrList<volScalarField>& Y() const;
 
         //- Return the mass-fraction field for a specie given by index
-        volScalarField& Y(const label i)
-        {
-            return Y_[i];
-        }
+        inline volScalarField& Y(const label i);
 
         //- Return the const mass-fraction field for a specie given by index
-        const volScalarField& Y(const label i) const
-        {
-            return Y_[i];
-        }
+        inline const volScalarField& Y(const label i) const;
 
         //- Return the mass-fraction field for a specie given by name
-        volScalarField& Y(const word& specieName)
-        {
-            return Y_[species_[specieName]];
-        }
+        inline volScalarField& Y(const word& specieName);
 
         //- Return the const mass-fraction field for a specie given by name
-        const volScalarField& Y(const word& specieName) const
-        {
-            return Y_[species_[specieName]];
-        }
+        inline const volScalarField& Y(const word& specieName) const;
 
-        //- does the mixture include this specie
-        bool contains(const word& specieName) const
-        {
-            return species_.contains(specieName);
-        }
+        //- Does the mixture include this specie?
+        inline bool contains(const word& specieName) const;
 
-        scalar fres(const scalar ft, const scalar stoicRatio) const
-        {
-            return max(ft - (1.0 - ft)/stoicRatio, 0.0);
-        }
+        inline scalar fres(const scalar ft, const scalar stoicRatio) const;
 
-        tmp<volScalarField> fres
+        inline tmp<volScalarField> fres
         (
             const volScalarField& ft,
             const dimensionedScalar& stoicRatio
-        ) const
-        {
-            return max(ft - (scalar(1) - ft)/stoicRatio.value(), scalar(0));
-        }
+        ) const;
 };
 
 
@@ -148,6 +132,10 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+#include "basicMultiComponentMixtureI.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 #endif
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/reactionThermo/mixtures/basicMultiComponentMixture/basicMultiComponentMixtureI.H b/src/thermophysicalModels/reactionThermo/mixtures/basicMultiComponentMixture/basicMultiComponentMixtureI.H
new file mode 100644
index 0000000000000000000000000000000000000000..593cb6c47b4a3404a2fd0d6cbafb6d5fe2f23678
--- /dev/null
+++ b/src/thermophysicalModels/reactionThermo/mixtures/basicMultiComponentMixture/basicMultiComponentMixtureI.H
@@ -0,0 +1,103 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+inline Foam::PtrList<Foam::volScalarField>&
+Foam::basicMultiComponentMixture::Y()
+{
+    return Y_;
+}
+
+
+inline const Foam::PtrList<Foam::volScalarField>&
+Foam::basicMultiComponentMixture::Y() const
+{
+    return Y_;
+}
+
+
+inline Foam::volScalarField& Foam::basicMultiComponentMixture::Y(const label i)
+{
+    return Y_[i];
+}
+
+
+inline const Foam::volScalarField& Foam::basicMultiComponentMixture::Y
+(
+    const label i
+) const
+{
+    return Y_[i];
+}
+
+
+inline Foam::volScalarField& Foam::basicMultiComponentMixture::Y
+(
+    const word& specieName
+)
+{
+    return Y_[species_[specieName]];
+}
+
+
+inline const Foam::volScalarField& Foam::basicMultiComponentMixture::Y
+(
+    const word& specieName
+) const
+{
+    return Y_[species_[specieName]];
+}
+
+
+inline bool Foam::basicMultiComponentMixture::contains
+(
+    const word& specieName
+) const
+{
+    return species_.contains(specieName);
+}
+
+
+inline Foam::scalar Foam::basicMultiComponentMixture::fres
+(
+    const scalar ft,
+    const scalar stoicRatio
+) const
+{
+    return max(ft - (1.0 - ft)/stoicRatio, 0.0);
+}
+
+
+inline Foam::tmp<Foam::volScalarField> Foam::basicMultiComponentMixture::fres
+(
+    const volScalarField& ft,
+    const dimensionedScalar& stoicRatio
+) const
+{
+    return max(ft - (scalar(1) - ft)/stoicRatio.value(), scalar(0));
+}
+
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/combustion/mixtureThermos/mixtures/dieselMixture/dieselMixture.C b/src/thermophysicalModels/reactionThermo/mixtures/dieselMixture/dieselMixture.C
similarity index 83%
rename from src/thermophysicalModels/combustion/mixtureThermos/mixtures/dieselMixture/dieselMixture.C
rename to src/thermophysicalModels/reactionThermo/mixtures/dieselMixture/dieselMixture.C
index 09a12153a9089e141d16b8d1bef66a969c35a6e4..ff069468315f6dbf56a08a628197f49da191d66d 100644
--- a/src/thermophysicalModels/combustion/mixtureThermos/mixtures/dieselMixture/dieselMixture.C
+++ b/src/thermophysicalModels/reactionThermo/mixtures/dieselMixture/dieselMixture.C
@@ -27,28 +27,27 @@ License
 #include "dieselMixture.H"
 #include "fvMesh.H"
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 template<class ThermoType>
-const char* dieselMixture<ThermoType>::specieNames_[2] =
-    {"ft", "fu"};
+const char* Foam::dieselMixture<ThermoType>::specieNames_[2] = {"ft", "fu"};
 
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
 template<class ThermoType>
-dieselMixture<ThermoType>::dieselMixture
+Foam::dieselMixture<ThermoType>::dieselMixture
 (
     const dictionary& thermoDict,
     const fvMesh& mesh
 )
 :
-    combustionMixture(thermoDict, speciesTable(nSpecies_, specieNames_), mesh),
+    basicMultiComponentMixture
+    (
+        thermoDict,
+        speciesTable(nSpecies_, specieNames_),
+        mesh
+    ),
 
     stoicRatio_(thermoDict.lookup("stoichiometricAirFuelMassRatio")),
 
@@ -66,7 +65,7 @@ dieselMixture<ThermoType>::dieselMixture
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 template<class ThermoType>
-const ThermoType& dieselMixture<ThermoType>::mixture
+const ThermoType& Foam::dieselMixture<ThermoType>::mixture
 (
     const scalar ft,
     const scalar fu
@@ -91,7 +90,7 @@ const ThermoType& dieselMixture<ThermoType>::mixture
 
 
 template<class ThermoType>
-void dieselMixture<ThermoType>::read(const dictionary& thermoDict)
+void Foam::dieselMixture<ThermoType>::read(const dictionary& thermoDict)
 {
     fuel_ = ThermoType(thermoDict.lookup("fuel"));
     oxidant_ = ThermoType(thermoDict.lookup("oxidant"));
@@ -99,8 +98,4 @@ void dieselMixture<ThermoType>::read(const dictionary& thermoDict)
 }
 
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-} // End namespace Foam
-
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/combustion/mixtureThermos/mixtures/dieselMixture/dieselMixture.H b/src/thermophysicalModels/reactionThermo/mixtures/dieselMixture/dieselMixture.H
similarity index 95%
rename from src/thermophysicalModels/combustion/mixtureThermos/mixtures/dieselMixture/dieselMixture.H
rename to src/thermophysicalModels/reactionThermo/mixtures/dieselMixture/dieselMixture.H
index 02e0605238d183a17cfc6ef2721c605656f7f00f..cc2a2e8fc2afda30ec8d4c5fac1ce01645685524 100644
--- a/src/thermophysicalModels/combustion/mixtureThermos/mixtures/dieselMixture/dieselMixture.H
+++ b/src/thermophysicalModels/reactionThermo/mixtures/dieselMixture/dieselMixture.H
@@ -36,7 +36,7 @@ SourceFiles
 #ifndef dieselMixture_H
 #define dieselMixture_H
 
-#include "combustionMixture.H"
+#include "basicMultiComponentMixture.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -44,13 +44,13 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                           Class dieselMixture Declaration
+                         Class dieselMixture Declaration
 \*---------------------------------------------------------------------------*/
 
 template<class ThermoType>
 class dieselMixture
 :
-    public combustionMixture
+    public basicMultiComponentMixture
 {
     // Private data
 
@@ -84,10 +84,9 @@ public:
         dieselMixture(const dictionary&, const fvMesh&);
 
 
-    // Destructor
-
-        virtual ~dieselMixture()
-        {}
+    //- Destructor
+    virtual ~dieselMixture()
+    {}
 
 
     // Member functions
diff --git a/src/thermophysicalModels/combustion/mixtureThermos/mixtures/egrMixture/egrMixture.C b/src/thermophysicalModels/reactionThermo/mixtures/egrMixture/egrMixture.C
similarity index 84%
rename from src/thermophysicalModels/combustion/mixtureThermos/mixtures/egrMixture/egrMixture.C
rename to src/thermophysicalModels/reactionThermo/mixtures/egrMixture/egrMixture.C
index b61ad10f4be6f095cf4be9c6b8346ae51f599734..5e9e70e69f4916ca36bdbf5b70831f6ec1af1cea 100644
--- a/src/thermophysicalModels/combustion/mixtureThermos/mixtures/egrMixture/egrMixture.C
+++ b/src/thermophysicalModels/reactionThermo/mixtures/egrMixture/egrMixture.C
@@ -27,27 +27,27 @@ License
 #include "egrMixture.H"
 #include "fvMesh.H"
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 template<class ThermoType>
-const char* egrMixture<ThermoType>::specieNames_[3] = {"ft", "b", "egr"};
+const char* Foam::egrMixture<ThermoType>::specieNames_[3] = {"ft", "b", "egr"};
 
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
 template<class ThermoType>
-egrMixture<ThermoType>::egrMixture
+Foam::egrMixture<ThermoType>::egrMixture
 (
     const dictionary& thermoDict,
     const fvMesh& mesh
 )
 :
-    combustionMixture(thermoDict, speciesTable(nSpecies_, specieNames_), mesh),
+    basicMultiComponentMixture
+    (
+        thermoDict,
+        speciesTable(nSpecies_, specieNames_),
+        mesh
+    ),
 
     stoicRatio_(thermoDict.lookup("stoichiometricAirFuelMassRatio")),
 
@@ -66,7 +66,7 @@ egrMixture<ThermoType>::egrMixture
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 template<class ThermoType>
-const ThermoType& egrMixture<ThermoType>::mixture
+const ThermoType& Foam::egrMixture<ThermoType>::mixture
 (
     const scalar ft,
     const scalar b,
@@ -79,13 +79,13 @@ const ThermoType& egrMixture<ThermoType>::mixture
     }
     else
     {
-        
+
         scalar fu = b*ft + (1.0 - b)*fres(ft, stoicRatio().value());
         scalar ox = 1 - ft - (ft - fu)*stoicRatio().value();
-        
+
         fu *= (1.0 - egr);
         ox *= (1.0 - egr);
-        
+
         scalar pr = 1 - fu - ox;
 
         mixture_ = fu/fuel_.W()*fuel_;
@@ -98,7 +98,7 @@ const ThermoType& egrMixture<ThermoType>::mixture
 
 
 template<class ThermoType>
-void egrMixture<ThermoType>::read(const dictionary& thermoDict)
+void Foam::egrMixture<ThermoType>::read(const dictionary& thermoDict)
 {
     stoicRatio_ = thermoDict.lookup("stoichiometricAirFuelMassRatio");
 
@@ -108,8 +108,4 @@ void egrMixture<ThermoType>::read(const dictionary& thermoDict)
 }
 
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-} // End namespace Foam
-
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/combustion/mixtureThermos/mixtures/egrMixture/egrMixture.H b/src/thermophysicalModels/reactionThermo/mixtures/egrMixture/egrMixture.H
similarity index 96%
rename from src/thermophysicalModels/combustion/mixtureThermos/mixtures/egrMixture/egrMixture.H
rename to src/thermophysicalModels/reactionThermo/mixtures/egrMixture/egrMixture.H
index fc1b3fba39b9b1abddda743ed1a482d8bb12fecc..e53029155006c848158e9fc1104da1ee41e6b323 100644
--- a/src/thermophysicalModels/combustion/mixtureThermos/mixtures/egrMixture/egrMixture.H
+++ b/src/thermophysicalModels/reactionThermo/mixtures/egrMixture/egrMixture.H
@@ -36,7 +36,7 @@ SourceFiles
 #ifndef egrMixture_H
 #define egrMixture_H
 
-#include "combustionMixture.H"
+#include "basicMultiComponentMixture.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -44,13 +44,13 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                           Class egrMixture Declaration
+                         Class egrMixture Declaration
 \*---------------------------------------------------------------------------*/
 
 template<class ThermoType>
 class egrMixture
 :
-    public combustionMixture
+    public basicMultiComponentMixture
 {
     // Private data
 
@@ -90,10 +90,9 @@ public:
         egrMixture(const dictionary&, const fvMesh&);
 
 
-   // Destructor
-
-        virtual ~egrMixture()
-        {}
+    //- Destructor
+    virtual ~egrMixture()
+    {}
 
 
     // Member functions
diff --git a/src/thermophysicalModels/combustion/mixtureThermos/mixtures/homogeneousMixture/homogeneousMixture.C b/src/thermophysicalModels/reactionThermo/mixtures/homogeneousMixture/homogeneousMixture.C
similarity index 80%
rename from src/thermophysicalModels/combustion/mixtureThermos/mixtures/homogeneousMixture/homogeneousMixture.C
rename to src/thermophysicalModels/reactionThermo/mixtures/homogeneousMixture/homogeneousMixture.C
index e71614f3e7c368da372952ca0c3cc9c507bb1c19..09fbc701d82ddb7a9e23acec69cb09548687ccab 100644
--- a/src/thermophysicalModels/combustion/mixtureThermos/mixtures/homogeneousMixture/homogeneousMixture.C
+++ b/src/thermophysicalModels/reactionThermo/mixtures/homogeneousMixture/homogeneousMixture.C
@@ -27,27 +27,27 @@ License
 #include "homogeneousMixture.H"
 #include "fvMesh.H"
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 template<class ThermoType>
-const char* homogeneousMixture<ThermoType>::specieNames_[1] = {"b"};
+const char* Foam::homogeneousMixture<ThermoType>::specieNames_[1] = {"b"};
 
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
 template<class ThermoType>
-homogeneousMixture<ThermoType>::homogeneousMixture
+Foam::homogeneousMixture<ThermoType>::homogeneousMixture
 (
     const dictionary& thermoDict,
     const fvMesh& mesh
 )
 :
-    combustionMixture(thermoDict, speciesTable(nSpecies_, specieNames_), mesh),
+    basicMultiComponentMixture
+    (
+        thermoDict,
+        speciesTable(nSpecies_, specieNames_),
+        mesh
+    ),
 
     reactants_(thermoDict.lookup("reactants")),
     products_(thermoDict.lookup("products")),
@@ -59,7 +59,10 @@ homogeneousMixture<ThermoType>::homogeneousMixture
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 template<class ThermoType>
-const ThermoType& homogeneousMixture<ThermoType>::mixture(const scalar b) const
+const ThermoType& Foam::homogeneousMixture<ThermoType>::mixture
+(
+    const scalar b
+) const
 {
     if (b > 0.999)
     {
@@ -80,15 +83,11 @@ const ThermoType& homogeneousMixture<ThermoType>::mixture(const scalar b) const
 
 
 template<class ThermoType>
-void homogeneousMixture<ThermoType>::read(const dictionary& thermoDict)
+void Foam::homogeneousMixture<ThermoType>::read(const dictionary& thermoDict)
 {
     reactants_ = ThermoType(thermoDict.lookup("reactants"));
     products_ = ThermoType(thermoDict.lookup("products"));
 }
 
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-} // End namespace Foam
-
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/combustion/mixtureThermos/mixtures/homogeneousMixture/homogeneousMixture.H b/src/thermophysicalModels/reactionThermo/mixtures/homogeneousMixture/homogeneousMixture.H
similarity index 94%
rename from src/thermophysicalModels/combustion/mixtureThermos/mixtures/homogeneousMixture/homogeneousMixture.H
rename to src/thermophysicalModels/reactionThermo/mixtures/homogeneousMixture/homogeneousMixture.H
index 50e1952f497890ae7a3f365869ea6a097b267c2c..91c495fcc516b8665a6867dc6be5bb44a8539f53 100644
--- a/src/thermophysicalModels/combustion/mixtureThermos/mixtures/homogeneousMixture/homogeneousMixture.H
+++ b/src/thermophysicalModels/reactionThermo/mixtures/homogeneousMixture/homogeneousMixture.H
@@ -36,7 +36,7 @@ SourceFiles
 #ifndef homogeneousMixture_H
 #define homogeneousMixture_H
 
-#include "combustionMixture.H"
+#include "basicMultiComponentMixture.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -44,13 +44,13 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                           Class homogeneousMixture Declaration
+                     Class homogeneousMixture Declaration
 \*---------------------------------------------------------------------------*/
 
 template<class ThermoType>
 class homogeneousMixture
 :
-    public combustionMixture
+    public basicMultiComponentMixture
 {
     // Private data
 
@@ -81,10 +81,9 @@ public:
         homogeneousMixture(const dictionary&, const fvMesh&);
 
 
-    // Destructor
-
-        virtual ~homogeneousMixture()
-        {}
+    //- Destructor
+    virtual ~homogeneousMixture()
+    {}
 
 
     // Member functions
diff --git a/src/thermophysicalModels/combustion/mixtureThermos/mixtures/inhomogeneousMixture/inhomogeneousMixture.C b/src/thermophysicalModels/reactionThermo/mixtures/inhomogeneousMixture/inhomogeneousMixture.C
similarity index 83%
rename from src/thermophysicalModels/combustion/mixtureThermos/mixtures/inhomogeneousMixture/inhomogeneousMixture.C
rename to src/thermophysicalModels/reactionThermo/mixtures/inhomogeneousMixture/inhomogeneousMixture.C
index 0f916f5353fb8ee8f7861d0b55463921ec4b37d3..f491a70446b31f16db155f88e9f942d0cd49c191 100644
--- a/src/thermophysicalModels/combustion/mixtureThermos/mixtures/inhomogeneousMixture/inhomogeneousMixture.C
+++ b/src/thermophysicalModels/reactionThermo/mixtures/inhomogeneousMixture/inhomogeneousMixture.C
@@ -27,27 +27,28 @@ License
 #include "inhomogeneousMixture.H"
 #include "fvMesh.H"
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 template<class ThermoType>
-const char* inhomogeneousMixture<ThermoType>::specieNames_[2] = {"ft", "b"};
+const char* Foam::inhomogeneousMixture<ThermoType>::specieNames_[2] =
+    {"ft", "b"};
 
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
 template<class ThermoType>
-inhomogeneousMixture<ThermoType>::inhomogeneousMixture
+Foam::inhomogeneousMixture<ThermoType>::inhomogeneousMixture
 (
     const dictionary& thermoDict,
     const fvMesh& mesh
 )
 :
-    combustionMixture(thermoDict, speciesTable(nSpecies_, specieNames_), mesh),
+    basicMultiComponentMixture
+    (
+        thermoDict,
+        speciesTable(nSpecies_, specieNames_),
+        mesh
+    ),
 
     stoicRatio_(thermoDict.lookup("stoichiometricAirFuelMassRatio")),
 
@@ -65,7 +66,7 @@ inhomogeneousMixture<ThermoType>::inhomogeneousMixture
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 template<class ThermoType>
-const ThermoType& inhomogeneousMixture<ThermoType>::mixture
+const ThermoType& Foam::inhomogeneousMixture<ThermoType>::mixture
 (
     const scalar ft,
     const scalar b
@@ -91,7 +92,7 @@ const ThermoType& inhomogeneousMixture<ThermoType>::mixture
 
 
 template<class ThermoType>
-void inhomogeneousMixture<ThermoType>::read(const dictionary& thermoDict)
+void Foam::inhomogeneousMixture<ThermoType>::read(const dictionary& thermoDict)
 {
     stoicRatio_ = thermoDict.lookup("stoichiometricAirFuelMassRatio");
 
@@ -101,8 +102,4 @@ void inhomogeneousMixture<ThermoType>::read(const dictionary& thermoDict)
 }
 
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-} // End namespace Foam
-
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/combustion/mixtureThermos/mixtures/inhomogeneousMixture/inhomogeneousMixture.H b/src/thermophysicalModels/reactionThermo/mixtures/inhomogeneousMixture/inhomogeneousMixture.H
similarity index 95%
rename from src/thermophysicalModels/combustion/mixtureThermos/mixtures/inhomogeneousMixture/inhomogeneousMixture.H
rename to src/thermophysicalModels/reactionThermo/mixtures/inhomogeneousMixture/inhomogeneousMixture.H
index cb95973f5413233aba935ecb80c13158f606963b..22fbb83f3ca0aa065e7fd0fad06535abe3d601f9 100644
--- a/src/thermophysicalModels/combustion/mixtureThermos/mixtures/inhomogeneousMixture/inhomogeneousMixture.H
+++ b/src/thermophysicalModels/reactionThermo/mixtures/inhomogeneousMixture/inhomogeneousMixture.H
@@ -36,7 +36,7 @@ SourceFiles
 #ifndef inhomogeneousMixture_H
 #define inhomogeneousMixture_H
 
-#include "combustionMixture.H"
+#include "basicMultiComponentMixture.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -44,13 +44,13 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                           Class inhomogeneousMixture Declaration
+                    Class inhomogeneousMixture Declaration
 \*---------------------------------------------------------------------------*/
 
 template<class ThermoType>
 class inhomogeneousMixture
 :
-    public combustionMixture
+    public basicMultiComponentMixture
 {
     // Private data
 
@@ -87,10 +87,9 @@ public:
         inhomogeneousMixture(const dictionary&, const fvMesh&);
 
 
-    // Destructor
-
-        virtual ~inhomogeneousMixture()
-        {}
+    //- Destructor
+    virtual ~inhomogeneousMixture()
+    {}
 
 
     // Member functions
diff --git a/src/thermophysicalModels/combustion/mixtureThermos/mixtures/multiComponentMixture/multiComponentMixture.C b/src/thermophysicalModels/reactionThermo/mixtures/multiComponentMixture/multiComponentMixture.C
similarity index 73%
rename from src/thermophysicalModels/combustion/mixtureThermos/mixtures/multiComponentMixture/multiComponentMixture.C
rename to src/thermophysicalModels/reactionThermo/mixtures/multiComponentMixture/multiComponentMixture.C
index 5e27d6caebedc79a446e374e6219c652ebd266d6..521959a2e9c4907cab5d5341690a263bc800a5c3 100644
--- a/src/thermophysicalModels/combustion/mixtureThermos/mixtures/multiComponentMixture/multiComponentMixture.C
+++ b/src/thermophysicalModels/reactionThermo/mixtures/multiComponentMixture/multiComponentMixture.C
@@ -25,17 +25,11 @@ License
 \*---------------------------------------------------------------------------*/
 
 #include "multiComponentMixture.H"
-#include "fvMesh.H"
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
 
 template<class ThermoType>
-const ThermoType& multiComponentMixture<ThermoType>::constructSpeciesData
+const ThermoType& Foam::multiComponentMixture<ThermoType>::constructSpeciesData
 (
     const dictionary& thermoDict
 )
@@ -53,27 +47,10 @@ const ThermoType& multiComponentMixture<ThermoType>::constructSpeciesData
 }
 
 
-template<class ThermoType>
-void multiComponentMixture<ThermoType>::correctMassFractions()
-{
-    volScalarField Yt = Y_[0];
-
-    for(label n=1; n<Y_.size(); n++)
-    {
-        Yt += Y_[n];
-    }
-
-    forAll (Y_, n)
-    {
-        Y_[n] /= Yt;
-    }
-}
-
-
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
 template<class ThermoType>
-multiComponentMixture<ThermoType>::multiComponentMixture
+Foam::multiComponentMixture<ThermoType>::multiComponentMixture
 (
     const dictionary& thermoDict,
     const wordList& specieNames,
@@ -81,7 +58,7 @@ multiComponentMixture<ThermoType>::multiComponentMixture
     const fvMesh& mesh
 )
 :
-    combustionMixture(thermoDict, specieNames, mesh),
+    basicMultiComponentMixture(thermoDict, specieNames, mesh),
     speciesData_(species_.size()),
     mixture_("mixture", *specieThermoData[specieNames[0]])
 {
@@ -93,30 +70,26 @@ multiComponentMixture<ThermoType>::multiComponentMixture
             new ThermoType(*specieThermoData[species_[i]])
         );
     }
-
-    correctMassFractions();
 }
 
 
 template<class ThermoType>
-multiComponentMixture<ThermoType>::multiComponentMixture
+Foam::multiComponentMixture<ThermoType>::multiComponentMixture
 (
     const dictionary& thermoDict,
     const fvMesh& mesh
 )
 :
-    combustionMixture(thermoDict, thermoDict.lookup("species"), mesh),
+    basicMultiComponentMixture(thermoDict, thermoDict.lookup("species"), mesh),
     speciesData_(species_.size()),
     mixture_("mixture", constructSpeciesData(thermoDict))
-{
-    correctMassFractions();
-}
+{}
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 template<class ThermoType>
-const ThermoType& multiComponentMixture<ThermoType>::cellMixture
+const ThermoType& Foam::multiComponentMixture<ThermoType>::cellMixture
 (
     const label celli
 ) const
@@ -127,13 +100,13 @@ const ThermoType& multiComponentMixture<ThermoType>::cellMixture
     {
         mixture_ += Y_[n][celli]/speciesData_[n].W()*speciesData_[n];
     }
-        
+
     return mixture_;
 }
 
 
 template<class ThermoType>
-const ThermoType& multiComponentMixture<ThermoType>::patchFaceMixture
+const ThermoType& Foam::multiComponentMixture<ThermoType>::patchFaceMixture
 (
     const label patchi,
     const label facei
@@ -149,13 +122,16 @@ const ThermoType& multiComponentMixture<ThermoType>::patchFaceMixture
             Y_[n].boundaryField()[patchi][facei]
            /speciesData_[n].W()*speciesData_[n];
     }
-        
+
     return mixture_;
 }
 
 
 template<class ThermoType>
-void multiComponentMixture<ThermoType>::read(const dictionary& thermoDict)
+void Foam::multiComponentMixture<ThermoType>::read
+(
+    const dictionary& thermoDict
+)
 {
     forAll(species_, i)
     {
@@ -164,8 +140,4 @@ void multiComponentMixture<ThermoType>::read(const dictionary& thermoDict)
 }
 
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-} // End namespace Foam
-
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/combustion/mixtureThermos/mixtures/multiComponentMixture/multiComponentMixture.H b/src/thermophysicalModels/reactionThermo/mixtures/multiComponentMixture/multiComponentMixture.H
similarity index 95%
rename from src/thermophysicalModels/combustion/mixtureThermos/mixtures/multiComponentMixture/multiComponentMixture.H
rename to src/thermophysicalModels/reactionThermo/mixtures/multiComponentMixture/multiComponentMixture.H
index e0298314980f4a919f65936c6c5abe7f837b02bc..cb02f56683ee715c04e479cc988fc721b3685561 100644
--- a/src/thermophysicalModels/combustion/mixtureThermos/mixtures/multiComponentMixture/multiComponentMixture.H
+++ b/src/thermophysicalModels/reactionThermo/mixtures/multiComponentMixture/multiComponentMixture.H
@@ -36,7 +36,7 @@ SourceFiles
 #ifndef multiComponentMixture_H
 #define multiComponentMixture_H
 
-#include "combustionMixture.H"
+#include "basicMultiComponentMixture.H"
 #include "HashPtrTable.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -45,13 +45,13 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                           Class multiComponentMixture Declaration
+                    Class multiComponentMixture Declaration
 \*---------------------------------------------------------------------------*/
 
 template<class ThermoType>
 class multiComponentMixture
 :
-    public combustionMixture
+    public basicMultiComponentMixture
 {
     // Private data
 
@@ -96,10 +96,9 @@ public:
         multiComponentMixture(const dictionary&, const fvMesh&);
 
 
-    // Destructor
-
-        virtual ~multiComponentMixture()
-        {}
+    //- Destructor
+    virtual ~multiComponentMixture()
+    {}
 
 
     // Member functions
diff --git a/src/thermophysicalModels/combustion/mixtureThermos/mixtures/reactingMixture/reactingMixture.C b/src/thermophysicalModels/reactionThermo/mixtures/reactingMixture/reactingMixture.C
similarity index 70%
rename from src/thermophysicalModels/combustion/mixtureThermos/mixtures/reactingMixture/reactingMixture.C
rename to src/thermophysicalModels/reactionThermo/mixtures/reactingMixture/reactingMixture.C
index 9c020b3ade387de1c9c064c85be56bb53bb93efc..0247c643dfa4cbf72007e90d98979d969ca9f44a 100644
--- a/src/thermophysicalModels/combustion/mixtureThermos/mixtures/reactingMixture/reactingMixture.C
+++ b/src/thermophysicalModels/reactionThermo/mixtures/reactingMixture/reactingMixture.C
@@ -27,44 +27,41 @@ License
 #include "reactingMixture.H"
 #include "fvMesh.H"
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-reactingMixture::reactingMixture
+template<class ThermoType>
+Foam::reactingMixture<ThermoType>::reactingMixture
 (
     const dictionary& thermoDict,
     const fvMesh& mesh
 )
 :
-    autoPtr<chemistryReader>(chemistryReader::New(thermoDict)),
-    multiComponentMixture<chemistryReader::reactionThermo>
+    autoPtr<chemistryReader<ThermoType> >
+    (
+        chemistryReader<ThermoType>::New(thermoDict)
+    ),
+    multiComponentMixture<ThermoType>
     (
         thermoDict,
-        autoPtr<chemistryReader>::operator()().species(),
-        autoPtr<chemistryReader>::operator()().speciesThermo(),
+        autoPtr<chemistryReader<ThermoType> >::operator()().species(),
+        autoPtr<chemistryReader<ThermoType> >::operator()().speciesThermo(),
         mesh
     ),
-    PtrList<chemistryReader::reaction>
+    PtrList<Reaction<ThermoType> >
     (
-        autoPtr<chemistryReader>::operator()().reactions(), species_
+        autoPtr<chemistryReader<ThermoType> >::operator()().reactions(),
+        this->species_
     )
 {
-    autoPtr<chemistryReader>::clear();
+    autoPtr<chemistryReader<ThermoType> >::clear();
 }
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-void reactingMixture::read(const dictionary& thermoDict)
+template<class ThermoType>
+void Foam::reactingMixture<ThermoType>::read(const dictionary& thermoDict)
 {}
 
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-} // End namespace Foam
-
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/combustion/mixtureThermos/mixtures/reactingMixture/reactingMixture.H b/src/thermophysicalModels/reactionThermo/mixtures/reactingMixture/reactingMixture.H
similarity index 82%
rename from src/thermophysicalModels/combustion/mixtureThermos/mixtures/reactingMixture/reactingMixture.H
rename to src/thermophysicalModels/reactionThermo/mixtures/reactingMixture/reactingMixture.H
index a280ed834a5d1611f712e1b7d67d0bc42bb406d0..be8aa476c5617a451f390bc92d727c101cea531b 100644
--- a/src/thermophysicalModels/combustion/mixtureThermos/mixtures/reactingMixture/reactingMixture.H
+++ b/src/thermophysicalModels/reactionThermo/mixtures/reactingMixture/reactingMixture.H
@@ -45,24 +45,16 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                           Class reactingMixture Declaration
+                      Class reactingMixture Declaration
 \*---------------------------------------------------------------------------*/
 
+template<class ThermoType>
 class reactingMixture
 :
-    public autoPtr<chemistryReader>,
-    public multiComponentMixture<chemistryReader::reactionThermo>,
-    public PtrList<chemistryReader::reaction>
+    public autoPtr<chemistryReader<ThermoType> >,
+    public multiComponentMixture<ThermoType>,
+    public PtrList<Reaction<ThermoType> >
 {
-
-public:
-
-    typedef chemistryReader::reaction reaction;
-    typedef chemistryReader::reactionThermo reactionThermo;
-
-
-private:
-
     // Private member functions
 
         //- Disallow default bitwise copy construct
@@ -74,16 +66,19 @@ private:
 
 public:
 
+    //- The type of thermo package this mixture is instantiated for
+    typedef ThermoType thermoType;
+
+
     // Constructors
 
         //- Construct from dictionary and mesh
         reactingMixture(const dictionary&, const fvMesh&);
 
 
-    // Destructor
-
-        virtual ~reactingMixture()
-        {}
+    //- Destructor
+    virtual ~reactingMixture()
+    {}
 
 
     // Member functions
@@ -99,6 +94,12 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+#ifdef NoRepository
+#   include "reactingMixture.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 #endif
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/combustion/mixtureThermos/mixtures/veryInhomogeneousMixture/veryInhomogeneousMixture.C b/src/thermophysicalModels/reactionThermo/mixtures/veryInhomogeneousMixture/veryInhomogeneousMixture.C
similarity index 82%
rename from src/thermophysicalModels/combustion/mixtureThermos/mixtures/veryInhomogeneousMixture/veryInhomogeneousMixture.C
rename to src/thermophysicalModels/reactionThermo/mixtures/veryInhomogeneousMixture/veryInhomogeneousMixture.C
index 06a4e0f9ba24fc08b71802c6d645c2246caae4b0..82476163ea6a2940d327f00c16cd6a4811610b60 100644
--- a/src/thermophysicalModels/combustion/mixtureThermos/mixtures/veryInhomogeneousMixture/veryInhomogeneousMixture.C
+++ b/src/thermophysicalModels/reactionThermo/mixtures/veryInhomogeneousMixture/veryInhomogeneousMixture.C
@@ -27,28 +27,28 @@ License
 #include "veryInhomogeneousMixture.H"
 #include "fvMesh.H"
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 template<class ThermoType>
-const char* veryInhomogeneousMixture<ThermoType>::specieNames_[3] =
+const char* Foam::veryInhomogeneousMixture<ThermoType>::specieNames_[3] =
     {"ft", "fu", "b"};
 
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
 template<class ThermoType>
-veryInhomogeneousMixture<ThermoType>::veryInhomogeneousMixture
+Foam::veryInhomogeneousMixture<ThermoType>::veryInhomogeneousMixture
 (
     const dictionary& thermoDict,
     const fvMesh& mesh
 )
 :
-    combustionMixture(thermoDict, speciesTable(nSpecies_, specieNames_), mesh),
+    basicMultiComponentMixture
+    (
+        thermoDict,
+        speciesTable(nSpecies_, specieNames_),
+        mesh
+    ),
 
     stoicRatio_(thermoDict.lookup("stoichiometricAirFuelMassRatio")),
 
@@ -67,7 +67,7 @@ veryInhomogeneousMixture<ThermoType>::veryInhomogeneousMixture
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 template<class ThermoType>
-const ThermoType& veryInhomogeneousMixture<ThermoType>::mixture
+const ThermoType& Foam::veryInhomogeneousMixture<ThermoType>::mixture
 (
     const scalar ft,
     const scalar fu
@@ -92,7 +92,10 @@ const ThermoType& veryInhomogeneousMixture<ThermoType>::mixture
 
 
 template<class ThermoType>
-void veryInhomogeneousMixture<ThermoType>::read(const dictionary& thermoDict)
+void Foam::veryInhomogeneousMixture<ThermoType>::read
+(
+    const dictionary& thermoDict
+)
 {
     fuel_ = ThermoType(thermoDict.lookup("fuel"));
     oxidant_ = ThermoType(thermoDict.lookup("oxidant"));
@@ -100,8 +103,4 @@ void veryInhomogeneousMixture<ThermoType>::read(const dictionary& thermoDict)
 }
 
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-} // End namespace Foam
-
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/combustion/mixtureThermos/mixtures/veryInhomogeneousMixture/veryInhomogeneousMixture.H b/src/thermophysicalModels/reactionThermo/mixtures/veryInhomogeneousMixture/veryInhomogeneousMixture.H
similarity index 95%
rename from src/thermophysicalModels/combustion/mixtureThermos/mixtures/veryInhomogeneousMixture/veryInhomogeneousMixture.H
rename to src/thermophysicalModels/reactionThermo/mixtures/veryInhomogeneousMixture/veryInhomogeneousMixture.H
index fe0e1a7b69ba34a2f17e071e32ac47b1f5dce355..c257334690649b27ca90491f37a07088f01e32b9 100644
--- a/src/thermophysicalModels/combustion/mixtureThermos/mixtures/veryInhomogeneousMixture/veryInhomogeneousMixture.H
+++ b/src/thermophysicalModels/reactionThermo/mixtures/veryInhomogeneousMixture/veryInhomogeneousMixture.H
@@ -36,7 +36,7 @@ SourceFiles
 #ifndef veryInhomogeneousMixture_H
 #define veryInhomogeneousMixture_H
 
-#include "combustionMixture.H"
+#include "basicMultiComponentMixture.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -44,13 +44,13 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                           Class veryInhomogeneousMixture Declaration
+                  Class veryInhomogeneousMixture Declaration
 \*---------------------------------------------------------------------------*/
 
 template<class ThermoType>
 class veryInhomogeneousMixture
 :
-    public combustionMixture
+    public basicMultiComponentMixture
 {
     // Private data
 
@@ -90,10 +90,9 @@ public:
         veryInhomogeneousMixture(const dictionary&, const fvMesh&);
 
 
-    // Destructor
-
-        virtual ~veryInhomogeneousMixture()
-        {}
+    //- Destructor
+    virtual ~veryInhomogeneousMixture()
+    {}
 
 
     // Member functions
diff --git a/src/thermophysicalModels/reactionThermo/reactionThermo/hReactionThermo/hReactionThermo.C b/src/thermophysicalModels/reactionThermo/reactionThermo/hReactionThermo/hReactionThermo.C
new file mode 100644
index 0000000000000000000000000000000000000000..fca95dff16ae6b108ba5507eccff140072f8d37f
--- /dev/null
+++ b/src/thermophysicalModels/reactionThermo/reactionThermo/hReactionThermo/hReactionThermo.C
@@ -0,0 +1,67 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "hReactionThermo.H"
+#include "fvMesh.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    defineTypeNameAndDebug(hReactionThermo, 0);
+    defineRunTimeSelectionTable(hReactionThermo, fvMesh);
+}
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::hReactionThermo::hReactionThermo(const fvMesh& mesh)
+:
+    basicRhoThermo(mesh),
+
+    h_
+    (
+        IOobject
+        (
+            "h",
+            mesh.time().timeName(),
+            mesh,
+            IOobject::NO_READ,
+            IOobject::NO_WRITE
+        ),
+        mesh,
+        dimensionSet(0, 2, -2, 0, 0),
+        this->hBoundaryTypes()
+    )
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::hReactionThermo::~hReactionThermo()
+{}
+
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/reactionThermo/reactionThermo/hReactionThermo/hReactionThermo.H b/src/thermophysicalModels/reactionThermo/reactionThermo/hReactionThermo/hReactionThermo.H
new file mode 100644
index 0000000000000000000000000000000000000000..3d5c37614c3c16e3ec5fd7786bc667da322bb900
--- /dev/null
+++ b/src/thermophysicalModels/reactionThermo/reactionThermo/hReactionThermo/hReactionThermo.H
@@ -0,0 +1,150 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::hReactionThermo
+
+Description
+    Foam::hReactionThermo
+
+SourceFiles
+    hReactionThermo.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef hReactionThermo_H
+#define hReactionThermo_H
+
+#include "basicRhoThermo.H"
+#include "basicMultiComponentMixture.H"
+#include "autoPtr.H"
+#include "runTimeSelectionTables.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+                     Class hReactionThermo Declaration
+\*---------------------------------------------------------------------------*/
+
+class hReactionThermo
+:
+    public basicRhoThermo
+{
+
+protected:
+
+    // Protected data
+
+        //- Enthalpy field
+        volScalarField h_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("hReactionThermo");
+
+
+    //- Declare run-time constructor selection tables
+    declareRunTimeSelectionTable
+    (
+        autoPtr,
+        hReactionThermo,
+        fvMesh,
+        (const fvMesh& mesh),
+        (mesh)
+    );
+
+
+    // Constructors
+
+        //- Construct from dictionary and mesh
+        hReactionThermo(const fvMesh&);
+
+
+    // Selectors
+
+        //- Standard selection based on fvMesh
+        static autoPtr<hReactionThermo> New(const fvMesh&);
+
+        //- Select and check that package contains 'thermoType'
+        static autoPtr<hReactionThermo> NewType
+        (
+            const fvMesh&,
+            const word& thermoType
+        );
+
+
+    //- Destructor
+    virtual ~hReactionThermo();
+
+
+    // Member functions
+
+        //- Return the composition of the multi-component mixture
+        virtual basicMultiComponentMixture& composition() = 0;
+
+        //- Return the composition of the multi-component mixture
+        virtual const basicMultiComponentMixture& composition() const = 0;
+
+
+        // Access to thermodynamic state variables
+
+            //- Enthalpy [J/kg]
+            //  Non-const access allowed for transport equations
+            virtual volScalarField& h()
+            {
+                return h_;
+            }
+
+            //- Enthalpy [J/kg]
+            virtual const volScalarField& h() const
+            {
+                return h_;
+            }
+
+
+        //- Sensible enthalpy [J/kg]
+        virtual tmp<volScalarField> hs() const = 0;
+
+        //- Chemical enthalpy [J/kg]
+        virtual tmp<volScalarField> hc() const = 0;
+
+        //- Update properties
+        virtual void correct() = 0;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/reactionThermo/reactionThermo/hReactionThermo/hReactionThermos.C b/src/thermophysicalModels/reactionThermo/reactionThermo/hReactionThermo/hReactionThermos.C
new file mode 100644
index 0000000000000000000000000000000000000000..cafc62c4946e8bff9c0e15c07aa14efdb7c23830
--- /dev/null
+++ b/src/thermophysicalModels/reactionThermo/reactionThermo/hReactionThermo/hReactionThermos.C
@@ -0,0 +1,171 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "makeReactionThermo.H"
+
+#include "hReactionThermo.H"
+#include "hRhoMixtureThermo.H"
+
+#include "perfectGas.H"
+
+#include "hConstThermo.H"
+#include "janafThermo.H"
+#include "specieThermo.H"
+
+#include "constTransport.H"
+#include "sutherlandTransport.H"
+
+#include "homogeneousMixture.H"
+#include "inhomogeneousMixture.H"
+#include "veryInhomogeneousMixture.H"
+#include "dieselMixture.H"
+#include "multiComponentMixture.H"
+#include "reactingMixture.H"
+
+#include "thermoPhysicsTypes.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+makeReactionThermo
+(
+    hReactionThermo,
+    hRhoMixtureThermo,
+    homogeneousMixture,
+    constTransport,
+    hConstThermo,
+    perfectGas
+);
+
+makeReactionThermo
+(
+    hReactionThermo,
+    hRhoMixtureThermo,
+    inhomogeneousMixture,
+    constTransport,
+    hConstThermo,
+    perfectGas
+);
+
+makeReactionThermo
+(
+    hReactionThermo,
+    hRhoMixtureThermo,
+    veryInhomogeneousMixture,
+    constTransport,
+    hConstThermo,
+    perfectGas
+);
+
+makeReactionThermo
+(
+    hReactionThermo,
+    hRhoMixtureThermo,
+    homogeneousMixture,
+    sutherlandTransport,
+    janafThermo,
+    perfectGas
+);
+
+makeReactionThermo
+(
+    hReactionThermo,
+    hRhoMixtureThermo,
+    inhomogeneousMixture,
+    sutherlandTransport,
+    janafThermo,
+    perfectGas
+);
+
+makeReactionThermo
+(
+    hReactionThermo,
+    hRhoMixtureThermo,
+    veryInhomogeneousMixture,
+    sutherlandTransport,
+    janafThermo,
+    perfectGas
+);
+
+
+makeReactionThermo
+(
+    hReactionThermo,
+    hRhoMixtureThermo,
+    dieselMixture,
+    sutherlandTransport,
+    janafThermo,
+    perfectGas
+);
+
+
+// Multi-component thermo
+
+makeReactionMixtureThermo
+(
+    hReactionThermo,
+    hRhoMixtureThermo,
+    multiComponentMixture,
+    icoPoly8ThermoPhysics
+);
+
+makeReactionMixtureThermo
+(
+    hReactionThermo,
+    hRhoMixtureThermo,
+    multiComponentMixture,
+    gasThermoPhysics
+);
+
+
+// Multi-component reaction thermo
+
+makeReactionMixtureThermo
+(
+    hReactionThermo,
+    hRhoMixtureThermo,
+    reactingMixture,
+    icoPoly8ThermoPhysics
+);
+
+makeReactionMixtureThermo
+(
+    hReactionThermo,
+    hRhoMixtureThermo,
+    reactingMixture,
+    gasThermoPhysics
+);
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/reactionThermo/reactionThermo/hReactionThermo/makeReactionThermo.H b/src/thermophysicalModels/reactionThermo/reactionThermo/hReactionThermo/makeReactionThermo.H
new file mode 100644
index 0000000000000000000000000000000000000000..a74bded0bf74e571e8e43d9d9126075112034ea9
--- /dev/null
+++ b/src/thermophysicalModels/reactionThermo/reactionThermo/hReactionThermo/makeReactionThermo.H
@@ -0,0 +1,100 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+InClass
+    Foam::hReactionThermo
+
+Description
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef makeReactionThermo_H
+#define makeReactionThermo_H
+
+#include "addToRunTimeSelectionTable.H"
+#include "basicRhoThermo.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#define makeReactionThermo(CThermo,MixtureThermo,Mixture,Transport,Thermo,EqnOfState) \
+                                                                              \
+typedef MixtureThermo                                                         \
+    <Mixture<Transport<specieThermo<Thermo<EqnOfState> > > > >                \
+    MixtureThermo##Mixture##Transport##Thermo##EqnOfState;                    \
+                                                                              \
+defineTemplateTypeNameAndDebugWithName                                        \
+(                                                                             \
+    MixtureThermo##Mixture##Transport##Thermo##EqnOfState,                    \
+    #MixtureThermo                                                            \
+        "<"#Mixture"<"#Transport"<specieThermo<"#Thermo"<"#EqnOfState">>>>>", \
+    0                                                                         \
+);                                                                            \
+                                                                              \
+addToRunTimeSelectionTable                                                    \
+(                                                                             \
+    basicRhoThermo,                                                           \
+    MixtureThermo##Mixture##Transport##Thermo##EqnOfState,                    \
+    fvMesh                                                                    \
+);                                                                            \
+                                                                              \
+addToRunTimeSelectionTable                                                    \
+(                                                                             \
+    CThermo,                                                                  \
+    MixtureThermo##Mixture##Transport##Thermo##EqnOfState,                    \
+    fvMesh                                                                    \
+)
+
+
+#define makeReactionMixtureThermo(CThermo,MixtureThermo,Mixture,ThermoPhys)   \
+                                                                              \
+typedef MixtureThermo<Mixture<ThermoPhys> >                                   \
+    MixtureThermo##Mixture##ThermoPhys;                                       \
+                                                                              \
+defineTemplateTypeNameAndDebugWithName                                        \
+(                                                                             \
+    MixtureThermo##Mixture##ThermoPhys,                                       \
+    #MixtureThermo"<"#Mixture"<"#ThermoPhys">>",                              \
+    0                                                                         \
+);                                                                            \
+                                                                              \
+addToRunTimeSelectionTable                                                    \
+(                                                                             \
+    basicRhoThermo,                                                           \
+    MixtureThermo##Mixture##ThermoPhys,                                       \
+    fvMesh                                                                    \
+);                                                                            \
+                                                                              \
+addToRunTimeSelectionTable                                                    \
+(                                                                             \
+    CThermo,                                                                  \
+    MixtureThermo##Mixture##ThermoPhys,                                       \
+    fvMesh                                                                    \
+);
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/reactionThermo/reactionThermo/hReactionThermo/newhReactionThermo.C b/src/thermophysicalModels/reactionThermo/reactionThermo/hReactionThermo/newhReactionThermo.C
new file mode 100644
index 0000000000000000000000000000000000000000..688b37b6d2a726a82771119fd896c3649bcf59df
--- /dev/null
+++ b/src/thermophysicalModels/reactionThermo/reactionThermo/hReactionThermo/newhReactionThermo.C
@@ -0,0 +1,151 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "hReactionThermo.H"
+#include "fvMesh.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+Foam::autoPtr<Foam::hReactionThermo> Foam::hReactionThermo::New
+(
+    const fvMesh& mesh
+)
+{
+    word hReactionThermoTypeName;
+
+    // Enclose the creation of the thermophysicalProperties to ensure it is
+    // deleted before the turbulenceModel is created otherwise the dictionary
+    // is entered in the database twice
+    {
+        IOdictionary thermoDict
+        (
+            IOobject
+            (
+                "thermophysicalProperties",
+                mesh.time().constant(),
+                mesh,
+                IOobject::MUST_READ,
+                IOobject::NO_WRITE
+            )
+        );
+
+        thermoDict.lookup("thermoType") >> hReactionThermoTypeName;
+    }
+
+    Info<< "Selecting thermodynamics package " << hReactionThermoTypeName
+        << endl;
+
+    fvMeshConstructorTable::iterator cstrIter =
+        fvMeshConstructorTablePtr_->find(hReactionThermoTypeName);
+
+    if (cstrIter == fvMeshConstructorTablePtr_->end())
+    {
+        FatalErrorIn("hReactionThermo::New(const fvMesh&)")
+            << "Unknown hReactionThermo type "
+            << hReactionThermoTypeName << nl << nl
+            << "Valid hReactionThermo types are:" << nl
+            << fvMeshConstructorTablePtr_->toc() << nl
+            << exit(FatalError);
+    }
+
+    return autoPtr<hReactionThermo>(cstrIter()(mesh));
+}
+
+
+Foam::autoPtr<Foam::hReactionThermo> Foam::hReactionThermo::NewType
+(
+    const fvMesh& mesh,
+    const word& thermoType
+)
+{
+    word hReactionThermoTypeName;
+
+    // Enclose the creation of the thermophysicalProperties to ensure it is
+    // deleted before the turbulenceModel is created otherwise the dictionary
+    // is entered in the database twice
+    {
+        IOdictionary thermoDict
+        (
+            IOobject
+            (
+                "thermophysicalProperties",
+                mesh.time().constant(),
+                mesh,
+                IOobject::MUST_READ,
+                IOobject::NO_WRITE
+            )
+        );
+
+        thermoDict.lookup("thermoType") >> hReactionThermoTypeName;
+
+        if (hReactionThermoTypeName.find(thermoType) == string::npos)
+        {
+            wordList allModels = fvMeshConstructorTablePtr_->toc();
+            DynamicList<word> validModels;
+            forAll(allModels, i)
+            {
+                if (allModels[i].find(thermoType) != string::npos)
+                {
+                    validModels.append(allModels[i]);
+                }
+            }
+
+            FatalErrorIn
+            (
+                "autoPtr<hReactionThermo> hReactionThermo::NewType"
+                "("
+                    "const fvMesh&, "
+                    "const word&"
+                ")"
+            )   << "Inconsistent thermo package selected:" << nl << nl
+                << hReactionThermoTypeName << nl << nl << "Please select a "
+                << "thermo package based on " << thermoType
+                << ". Valid options include:" << nl << validModels << nl
+                << exit(FatalError);
+        }
+    }
+
+    Info<< "Selecting thermodynamics package " << hReactionThermoTypeName
+        << endl;
+
+    fvMeshConstructorTable::iterator cstrIter =
+        fvMeshConstructorTablePtr_->find(hReactionThermoTypeName);
+
+    if (cstrIter == fvMeshConstructorTablePtr_->end())
+    {
+        FatalErrorIn("hReactionThermo::New(const fvMesh&)")
+            << "Unknown hReactionThermo type "
+            << hReactionThermoTypeName << nl << nl
+            << "Valid hReactionThermo types are:" << nl
+            << fvMeshConstructorTablePtr_->toc() << nl
+            << exit(FatalError);
+    }
+
+    return autoPtr<hReactionThermo>(cstrIter()(mesh));
+}
+
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/reactionThermo/reactionThermo/mixtureThermos/hRhoMixtureThermo/hRhoMixtureThermo.C b/src/thermophysicalModels/reactionThermo/reactionThermo/mixtureThermos/hRhoMixtureThermo/hRhoMixtureThermo.C
new file mode 100644
index 0000000000000000000000000000000000000000..9cbf9202dee94885edbc428ad5d4f51a10d2a111
--- /dev/null
+++ b/src/thermophysicalModels/reactionThermo/reactionThermo/mixtureThermos/hRhoMixtureThermo/hRhoMixtureThermo.C
@@ -0,0 +1,367 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "hRhoMixtureThermo.H"
+#include "fvMesh.H"
+#include "fixedValueFvPatchFields.H"
+
+// * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
+
+template<class MixtureType>
+void Foam::hRhoMixtureThermo<MixtureType>::calculate()
+{
+    const scalarField& hCells = h_.internalField();
+    const scalarField& pCells = p_.internalField();
+
+    scalarField& TCells = T_.internalField();
+    scalarField& psiCells = psi_.internalField();
+    scalarField& rhoCells = rho_.internalField();
+    scalarField& muCells = mu_.internalField();
+    scalarField& alphaCells = alpha_.internalField();
+
+    forAll(TCells, celli)
+    {
+        const typename MixtureType::thermoType& mixture =
+            this->cellMixture(celli);
+
+        TCells[celli] = mixture.TH(hCells[celli], TCells[celli]);
+        psiCells[celli] = mixture.psi(pCells[celli], TCells[celli]);
+        rhoCells[celli] = mixture.rho(pCells[celli], TCells[celli]);
+
+        muCells[celli] = mixture.mu(TCells[celli]);
+        alphaCells[celli] = mixture.alpha(TCells[celli]);
+    }
+
+    forAll(T_.boundaryField(), patchi)
+    {
+        fvPatchScalarField& pp = p_.boundaryField()[patchi];
+        fvPatchScalarField& pT = T_.boundaryField()[patchi];
+        fvPatchScalarField& ppsi = psi_.boundaryField()[patchi];
+        fvPatchScalarField& prho = rho_.boundaryField()[patchi];
+
+        fvPatchScalarField& ph = h_.boundaryField()[patchi];
+
+        fvPatchScalarField& pmu_ = mu_.boundaryField()[patchi];
+        fvPatchScalarField& palpha_ = alpha_.boundaryField()[patchi];
+
+        if (pT.fixesValue())
+        {
+            forAll(pT, facei)
+            {
+                const typename MixtureType::thermoType& mixture =
+                    this->patchFaceMixture(patchi, facei);
+
+                ph[facei] = mixture.H(pT[facei]);
+
+                ppsi[facei] = mixture.psi(pp[facei], pT[facei]);
+                prho[facei] = mixture.rho(pp[facei], pT[facei]);
+                pmu_[facei] = mixture.mu(pT[facei]);
+                palpha_[facei] = mixture.alpha(pT[facei]);
+            }
+        }
+        else
+        {
+            forAll(pT, facei)
+            {
+                const typename MixtureType::thermoType& mixture =
+                    this->patchFaceMixture(patchi, facei);
+
+                pT[facei] = mixture.TH(ph[facei], pT[facei]);
+
+                ppsi[facei] = mixture.psi(pp[facei], pT[facei]);
+                prho[facei] = mixture.rho(pp[facei], pT[facei]);
+                pmu_[facei] = mixture.mu(pT[facei]);
+                palpha_[facei] = mixture.alpha(pT[facei]);
+            }
+        }
+    }
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template<class MixtureType>
+Foam::hRhoMixtureThermo<MixtureType>::hRhoMixtureThermo(const fvMesh& mesh)
+:
+    hReactionThermo(mesh),
+    MixtureType(*this, mesh)
+{
+    scalarField& hCells = h_.internalField();
+    const scalarField& TCells = T_.internalField();
+
+    forAll(hCells, celli)
+    {
+        hCells[celli] = this->cellMixture(celli).H(TCells[celli]);
+    }
+
+    forAll(h_.boundaryField(), patchi)
+    {
+        h_.boundaryField()[patchi] == h(T_.boundaryField()[patchi], patchi);
+    }
+
+    hBoundaryCorrection(h_);
+
+    calculate();
+}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+template<class MixtureType>
+Foam::hRhoMixtureThermo<MixtureType>::~hRhoMixtureThermo()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+template<class MixtureType>
+void Foam::hRhoMixtureThermo<MixtureType>::correct()
+{
+    if (debug)
+    {
+        Info<< "entering hRhoMixtureThermo<MixtureType>::correct()" << endl;
+    }
+
+    calculate();
+
+    if (debug)
+    {
+        Info<< "exiting hRhoMixtureThermo<MixtureType>::correct()" << endl;
+    }
+}
+
+
+template<class MixtureType>
+Foam::tmp<Foam::volScalarField>
+Foam::hRhoMixtureThermo<MixtureType>::hs() const
+{
+    const fvMesh& mesh = T_.mesh();
+
+    tmp<volScalarField> ths
+    (
+        new volScalarField
+        (
+            IOobject
+            (
+                "hs",
+                mesh.time().timeName(),
+                mesh,
+                IOobject::NO_READ,
+                IOobject::NO_WRITE
+            ),
+            mesh,
+            h_.dimensions()
+        )
+    );
+
+    volScalarField& hsf = ths();
+    scalarField& hsCells = hsf.internalField();
+    const scalarField& TCells = T_.internalField();
+
+    forAll(TCells, celli)
+    {
+        hsCells[celli] = this->cellMixture(celli).Hs(TCells[celli]);
+    }
+
+    forAll(T_.boundaryField(), patchi)
+    {
+        scalarField& hsp = hsf.boundaryField()[patchi];
+        const scalarField& Tp = T_.boundaryField()[patchi];
+
+        forAll(Tp, facei)
+        {
+            hsp[facei] = this->patchFaceMixture(patchi, facei).Hs(Tp[facei]);
+        }
+    }
+
+    return ths;
+}
+
+
+template<class MixtureType>
+Foam::tmp<Foam::volScalarField>
+Foam::hRhoMixtureThermo<MixtureType>::hc() const
+{
+    const fvMesh& mesh = T_.mesh();
+
+    tmp<volScalarField> thc
+    (
+        new volScalarField
+        (
+            IOobject
+            (
+                "hc",
+                mesh.time().timeName(),
+                mesh,
+                IOobject::NO_READ,
+                IOobject::NO_WRITE
+            ),
+            mesh,
+            h_.dimensions()
+        )
+    );
+
+    volScalarField& hcf = thc();
+    scalarField& hcCells = hcf.internalField();
+
+    forAll(hcCells, celli)
+    {
+        hcCells[celli] = this->cellMixture(celli).Hc();
+    }
+
+    forAll(hcf.boundaryField(), patchi)
+    {
+        scalarField& hcp = hcf.boundaryField()[patchi];
+
+        forAll(hcp, facei)
+        {
+            hcp[facei] = this->patchFaceMixture(patchi, facei).Hc();
+        }
+    }
+
+    return thc;
+}
+
+
+template<class MixtureType>
+Foam::tmp<Foam::scalarField>
+Foam::hRhoMixtureThermo<MixtureType>::h
+(
+    const scalarField& T,
+    const labelList& cells
+) const
+{
+    tmp<scalarField> th(new scalarField(T.size()));
+    scalarField& h = th();
+
+    forAll(T, celli)
+    {
+        h[celli] = this->cellMixture(cells[celli]).H(T[celli]);
+    }
+
+    return th;
+}
+
+
+template<class MixtureType>
+Foam::tmp<Foam::scalarField>
+Foam::hRhoMixtureThermo<MixtureType>::h
+(
+    const scalarField& T,
+    const label patchi
+) const
+{
+    tmp<scalarField> th(new scalarField(T.size()));
+    scalarField& h = th();
+
+    forAll(T, facei)
+    {
+        h[facei] = this->patchFaceMixture(patchi, facei).H(T[facei]);
+    }
+
+    return th;
+}
+
+
+template<class MixtureType>
+Foam::tmp<Foam::scalarField>
+Foam::hRhoMixtureThermo<MixtureType>::Cp
+(
+    const scalarField& T,
+    const label patchi
+) const
+{
+    tmp<scalarField> tCp(new scalarField(T.size()));
+
+    scalarField& cp = tCp();
+
+    forAll(T, facei)
+    {
+        cp[facei] = this->patchFaceMixture(patchi, facei).Cp(T[facei]);
+    }
+
+    return tCp;
+}
+
+
+template<class MixtureType>
+Foam::tmp<Foam::volScalarField>
+Foam::hRhoMixtureThermo<MixtureType>::Cp() const
+{
+    const fvMesh& mesh = T_.mesh();
+
+    tmp<volScalarField> tCp
+    (
+        new volScalarField
+        (
+            IOobject
+            (
+                "Cp",
+                mesh.time().timeName(),
+                mesh,
+                IOobject::NO_READ,
+                IOobject::NO_WRITE
+            ),
+            mesh,
+            dimensionSet(0, 2, -2, -1, 0)
+        )
+    );
+
+    volScalarField& cp = tCp();
+
+    scalarField& cpCells = cp.internalField();
+    const scalarField& TCells = T_.internalField();
+
+    forAll(TCells, celli)
+    {
+        cpCells[celli] = this->cellMixture(celli).Cp(TCells[celli]);
+    }
+
+    forAll(T_.boundaryField(), patchi)
+    {
+        cp.boundaryField()[patchi] = Cp(T_.boundaryField()[patchi], patchi);
+    }
+
+    return tCp;
+}
+
+
+template<class MixtureType>
+bool Foam::hRhoMixtureThermo<MixtureType>::read()
+{
+    if (hReactionThermo::read())
+    {
+        MixtureType::read(*this);
+        return true;
+    }
+    else
+    {
+        return false;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/reactionThermo/reactionThermo/mixtureThermos/hRhoMixtureThermo/hRhoMixtureThermo.H b/src/thermophysicalModels/reactionThermo/reactionThermo/mixtureThermos/hRhoMixtureThermo/hRhoMixtureThermo.H
new file mode 100644
index 0000000000000000000000000000000000000000..570f696bac41be646b72fdf814b648c1811b285f
--- /dev/null
+++ b/src/thermophysicalModels/reactionThermo/reactionThermo/mixtureThermos/hRhoMixtureThermo/hRhoMixtureThermo.H
@@ -0,0 +1,150 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2009-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::hRhoMixtureThermo
+
+Description
+    Foam::hRhoMixtureThermo
+
+SourceFiles
+    hRhoMixtureThermo.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef hRhoMixtureThermo_H
+#define hRhoMixtureThermo_H
+
+#include "hReactionThermo.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+                      Class hRhoMixtureThermo Declaration
+\*---------------------------------------------------------------------------*/
+
+template<class MixtureType>
+class hRhoMixtureThermo
+:
+    public hReactionThermo,
+    public MixtureType
+{
+    // Private member functions
+
+        void calculate();
+
+        //- Construct as copy (not implemented)
+        hRhoMixtureThermo(const hRhoMixtureThermo<MixtureType>&);
+
+
+public:
+
+    //- Runtime type information
+    TypeName("hRhoMixtureThermo");
+
+
+    // Constructors
+
+        //- Construct from mesh
+        hRhoMixtureThermo(const fvMesh&);
+
+
+    //- Destructor
+    virtual ~hRhoMixtureThermo();
+
+
+    // Member functions
+
+        //- Return the compostion of the multi-component mixture
+        virtual basicMultiComponentMixture& composition()
+        {
+            return *this;
+        }
+
+        //- Return the compostion of the multi-component mixture
+        virtual const basicMultiComponentMixture& composition() const
+        {
+            return *this;
+        }
+
+        //- Update properties
+        virtual void correct();
+
+        //- Sensible enthalpy [J/kg]
+        virtual tmp<volScalarField> hs() const;
+
+        //- Chemical enthalpy [J/kg]
+        virtual tmp<volScalarField> hc() const;
+
+
+        // Fields derived from thermodynamic state variables
+
+            //- Enthalpy for cell-set [J/kg]
+            virtual tmp<scalarField> h
+            (
+                const scalarField& T,
+                const labelList& cells
+            ) const;
+
+            //- Enthalpy for patch [J/kg]
+            virtual tmp<scalarField> h
+            (
+                const scalarField& T,
+                const label patchi
+            ) const;
+
+            //- Heat capacity at constant pressure for patch [J/kg/K]
+            virtual tmp<scalarField> Cp
+            (
+                const scalarField& T,
+                const label patchi
+            ) const;
+
+            //- Heat capacity at constant pressure [J/kg/K]
+            virtual tmp<volScalarField> Cp() const;
+
+
+        //- Read thermophysicalProperties dictionary
+        virtual bool read();
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#ifdef NoRepository
+#   include "hRhoMixtureThermo.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/solidMixture/solidMixture/solidMixture.C b/src/thermophysicalModels/solidMixture/solidMixture/solidMixture.C
index 2f9645138c9f020816f94fd413992f6b7f2443e6..8bb511e9cc9b7176e2c059f5075a429db16dbb16 100644
--- a/src/thermophysicalModels/solidMixture/solidMixture/solidMixture.C
+++ b/src/thermophysicalModels/solidMixture/solidMixture/solidMixture.C
@@ -34,7 +34,7 @@ Foam::solidMixture::solidMixture
     const dictionary& thermophysicalProperties
 )
 :
-    components_(thermophysicalProperties.lookup("solidFuelComponents")),
+    components_(thermophysicalProperties.lookup("solidComponents")),
     properties_(components_.size())
 {
 
diff --git a/src/thermophysicalModels/solids/C/C.C b/src/thermophysicalModels/solids/C/C.C
new file mode 100644
index 0000000000000000000000000000000000000000..1dbcfd2eed25f46a5948eef699d2717d5c5a0169
--- /dev/null
+++ b/src/thermophysicalModels/solids/C/C.C
@@ -0,0 +1,80 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "C.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    defineTypeNameAndDebug(C, 0);
+    addToRunTimeSelectionTable(solid, C,);
+    addToRunTimeSelectionTable(solid, C, Istream);
+}
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::C::C()
+:
+    solid(2010, 710, 0.04, 0.0, 1.0)
+{
+    WarningIn("C::C()")
+        << "Properties of graphite need to be checked!!!"
+        << endl;
+}
+
+
+Foam::C::C(const solid& s)
+:
+    solid(s)
+{}
+
+
+Foam::C::C(Istream& is)
+:
+    solid(is)
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+void Foam::C::writeData(Ostream& os) const
+{
+    solid::writeData(os);
+}
+
+
+// * * * * * * * * * * * * * * IOStream operators  * * * * * * * * * * * * * //
+
+Foam::Ostream& Foam::operator<<(Ostream& os, const C& s)
+{
+    s.writeData(os);
+    return os;
+}
+
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/solids/C/C.H b/src/thermophysicalModels/solids/C/C.H
new file mode 100644
index 0000000000000000000000000000000000000000..0a3110b55d63d7e60341fb029c5b2f3246ae3809
--- /dev/null
+++ b/src/thermophysicalModels/solids/C/C.H
@@ -0,0 +1,100 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::C
+
+Description
+    Graphite
+
+SourceFiles
+    C.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef solid_C_H
+#define solid_C_H
+
+#include "solid.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+class C;
+
+Ostream& operator<<
+(
+     Ostream&,
+     const C&
+);
+
+
+/*---------------------------------------------------------------------------*\
+                            Class C Declaration
+\*---------------------------------------------------------------------------*/
+
+class C
+:
+    public solid
+{
+public:
+
+    //- Runtime type information
+    TypeName("C");
+
+
+    // Constructors
+
+        //- Construct null
+        C();
+
+        //- Construct from solid
+        C(const solid& s);
+
+        //- Construct from Istream
+        C(Istream& is);
+
+
+    // I-O
+
+        //- Write the function coefficients
+        void writeData(Ostream& os) const;
+
+
+    //- Ostream Operator
+    friend Ostream& operator<<(Ostream& os, const C& s);
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/solids/CaCO3/CaCO3.C b/src/thermophysicalModels/solids/CaCO3/CaCO3.C
new file mode 100644
index 0000000000000000000000000000000000000000..77a4398322a48c74123ed77f490721d16ced4751
--- /dev/null
+++ b/src/thermophysicalModels/solids/CaCO3/CaCO3.C
@@ -0,0 +1,80 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "CaCO3.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    defineTypeNameAndDebug(CaCO3, 0);
+    addToRunTimeSelectionTable(solid, CaCO3,);
+    addToRunTimeSelectionTable(solid, CaCO3, Istream);
+}
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::CaCO3::CaCO3()
+:
+    solid(2710, 850, 1.3, 0.0, 1.0)
+{
+    WarningIn("CaCO3::CaCO3()")
+        << "Properties of CaCO3 need to be checked!!!"
+        << endl;
+}
+
+
+Foam::CaCO3::CaCO3(const solid& s)
+:
+    solid(s)
+{}
+
+
+Foam::CaCO3::CaCO3(Istream& is)
+:
+    solid(is)
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+void Foam::CaCO3::writeData(Ostream& os) const
+{
+    solid::writeData(os);
+}
+
+
+// * * * * * * * * * * * * * * IOStream operators  * * * * * * * * * * * * * //
+
+Foam::Ostream& Foam::operator<<(Ostream& os, const CaCO3& s)
+{
+    s.writeData(os);
+    return os;
+}
+
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/solids/Cs/Cs.H b/src/thermophysicalModels/solids/CaCO3/CaCO3.H
similarity index 73%
rename from src/thermophysicalModels/solids/Cs/Cs.H
rename to src/thermophysicalModels/solids/CaCO3/CaCO3.H
index 648c5bf9106af5939873fa7b8c44042af7d6157c..a3336f2f77105e1651d314796172122bd50f5d3b 100644
--- a/src/thermophysicalModels/solids/Cs/Cs.H
+++ b/src/thermophysicalModels/solids/CaCO3/CaCO3.H
@@ -23,18 +23,18 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::Cs
+    Foam::CaCO3
 
 Description
-    Graphite
+    Calcium carbonate (limestone)
 
 SourceFiles
-    Cs.C
+    CaCO3.C
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef solid_Cs_H
-#define solid_Cs_H
+#ifndef solid_CaCO3_H
+#define solid_CaCO3_H
 
 #include "solid.H"
 
@@ -43,11 +43,20 @@ SourceFiles
 namespace Foam
 {
 
+class CaCO3;
+
+Ostream& operator<<
+(
+     Ostream&,
+     const CaCO3&
+);
+
+
 /*---------------------------------------------------------------------------*\
-                            Class Cs Declaration
+                              Class CaCO3 Declaration
 \*---------------------------------------------------------------------------*/
 
-class Cs
+class CaCO3
 :
     public solid
 {
@@ -55,50 +64,30 @@ class Cs
 public:
 
     //- Runtime type information
-    TypeName("Cs");
+    TypeName("CaCO3");
 
 
     // Constructors
 
         //- Construct null
-        Cs()
-        :
-            solid(2010, 710, 0.04, 0.0, 1.0)
-        {
-            WarningIn("Cs::Cs()")
-                << "Properties of graphite need to be checked!!!"
-                << endl;
-        }
+        CaCO3();
 
         //- Construct from solid
-        Cs
-        (
-            const solid& s
-        )
-        :
-            solid(s)
-        {}
+        CaCO3(const solid& s);
 
         //- Construct from Istream
-        Cs(Istream& is)
-        :
-            solid(is)
-        {}
+        CaCO3(Istream& is);
+
+
+    // I-O
 
         //- Write the function coefficients
-        void writeData(Ostream& os) const
-        {
-            solid::writeData(os);
-        }
+        void writeData(Ostream& os) const;
 
 
     // Ostream Operator
 
-        friend Ostream& operator<<(Ostream& os, const Cs& s)
-        {
-            s.writeData(os);
-            return os;
-        }
+        friend Ostream& operator<<(Ostream& os, const CaCO3& s);
 };
 
 
diff --git a/src/thermophysicalModels/solids/Make/files b/src/thermophysicalModels/solids/Make/files
index 407737ead160d245904cd9b74f15069d29dbfec3..5da964b97f8ac1237b2d8f8c2dfd8eec89fadc7c 100644
--- a/src/thermophysicalModels/solids/Make/files
+++ b/src/thermophysicalModels/solids/Make/files
@@ -1,5 +1,8 @@
 solid/solid.C
+solid/newSolid.C
+
 ash/ash.C
-Cs/Cs.C
+C/C.C
+CaCO3/CaCO3.C
 
 LIB = $(FOAM_LIBBIN)/libsolids
diff --git a/src/thermophysicalModels/solids/ash/ash.C b/src/thermophysicalModels/solids/ash/ash.C
index c63318e399967e59a27af428b3b5f806f285fb9f..c904131aab258699500b7aee1175dc63bd96c71b 100644
--- a/src/thermophysicalModels/solids/ash/ash.C
+++ b/src/thermophysicalModels/solids/ash/ash.C
@@ -27,19 +27,54 @@ License
 #include "ash.H"
 #include "addToRunTimeSelectionTable.H"
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 namespace Foam
 {
+    defineTypeNameAndDebug(ash, 0);
+    addToRunTimeSelectionTable(solid, ash,);
+    addToRunTimeSelectionTable(solid, ash, Istream);
+}
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::ash::ash()
+:
+    solid(2010, 710, 0.04, 0.0, 1.0)
+{
+    WarningIn("ash::ash()")
+        << "Properties of ash need to be checked!!!"
+        << endl;
+}
+
+
+Foam::ash::ash(const solid& s)
+:
+    solid(s)
+{}
 
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
-defineTypeNameAndDebug(ash, 0);
-addToRunTimeSelectionTable(solid, ash,);
-addToRunTimeSelectionTable(solid, ash, Istream);
+Foam::ash::ash(Istream& is)
+:
+    solid(is)
+{}
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-} // End namespace Foam
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+void Foam::ash::writeData(Ostream& os) const
+{
+    solid::writeData(os);
+}
+
+
+// * * * * * * * * * * * * * * IOStream operators  * * * * * * * * * * * * * //
+
+Foam::Ostream& Foam::operator<<(Ostream& os, const ash& s)
+{
+    s.writeData(os);
+    return os;
+}
+
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/solids/ash/ash.H b/src/thermophysicalModels/solids/ash/ash.H
index e9de1e74db5783b805e14aa301f4ab5cdf477a85..f4bab78fdccbada0ebc326de653b45ac8c9b1389 100644
--- a/src/thermophysicalModels/solids/ash/ash.H
+++ b/src/thermophysicalModels/solids/ash/ash.H
@@ -43,6 +43,15 @@ SourceFiles
 namespace Foam
 {
 
+class ash;
+
+Ostream& operator<<
+(
+     Ostream&,
+     const ash&
+);
+
+
 /*---------------------------------------------------------------------------*\
                               Class ash Declaration
 \*---------------------------------------------------------------------------*/
@@ -61,45 +70,24 @@ public:
     // Constructors
 
         //- Construct null
-        ash()
-        :
-//   rho       Cp          K        Hf      e
-// [kg/m3] [J/(kg.K)] [W/(m.K)]   [J/kg]   [-]
-            solid(2010, 710, 0.04, 0.0, 1.0) // TODO
-        {
-            WarningIn("ash::ash()")
-                << "Properties of ash need to be checked!!!"
-                << endl;
-        }
-
-        ash
-        (
-            const solid& s
-        )
-        :
-            solid(s)
-        {}
+        ash();
+
+        //- Construct from solid
+        ash(const solid& s);
 
         //- Construct from Istream
-        ash(Istream& is)
-        :
-            solid(is)
-        {}
+        ash(Istream& is);
+
+
+    // I-O
 
         //- Write the function coefficients
-        void writeData(Ostream& os) const
-        {
-            solid::writeData(os);
-        }
+        void writeData(Ostream& os) const;
 
 
     // Ostream Operator
 
-        friend Ostream& operator<<(Ostream& os, const ash& s)
-        {
-            s.writeData(os);
-            return os;
-        }
+        friend Ostream& operator<<(Ostream& os, const ash& s);
 };
 
 
diff --git a/src/thermophysicalModels/solids/solid/newSolid.C b/src/thermophysicalModels/solids/solid/newSolid.C
new file mode 100644
index 0000000000000000000000000000000000000000..445a98a00d31e5df5b3620ed0521a2d394ebdd79
--- /dev/null
+++ b/src/thermophysicalModels/solids/solid/newSolid.C
@@ -0,0 +1,89 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "solid.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+Foam::autoPtr<Foam::solid> Foam::solid::New(Istream& is)
+{
+    if (debug)
+    {
+        Info<< "solid::New(Istream&): "
+            << "constructing solid"
+            << endl;
+    }
+
+    word solidType(is);
+
+    word coeffs(is);
+
+    if (coeffs == "defaultCoeffs")
+    {
+        ConstructorTable::iterator cstrIter =
+            ConstructorTablePtr_->find(solidType);
+
+        if (cstrIter == ConstructorTablePtr_->end())
+        {
+            FatalErrorIn("solid::New(Istream&)")
+                << "Unknown solid type " << solidType << nl << nl
+                << "Valid solid types are:" << endl
+                << ConstructorTablePtr_->toc()
+                << exit(FatalError);
+        }
+
+        return autoPtr<solid>(cstrIter()());
+    }
+    else if (coeffs == "coeffs")
+    {
+        IstreamConstructorTable::iterator cstrIter =
+            IstreamConstructorTablePtr_->find(solidType);
+
+        if (cstrIter == IstreamConstructorTablePtr_->end())
+        {
+            FatalErrorIn("solid::New(Istream&)")
+                << "Unknown solid type " << solidType << nl << nl
+                << "Valid solid types are:" << endl
+                << IstreamConstructorTablePtr_->toc()
+                << exit(FatalError);
+        }
+
+        return autoPtr<solid>(cstrIter()(is));
+    }
+    else
+    {
+        FatalErrorIn("solid::New(Istream&)")
+            << "solid type " << solidType
+            << ", option " << coeffs << " given"
+            << ", should be coeffs or defaultCoeffs"
+            << exit(FatalError);
+
+        return autoPtr<solid>(NULL);
+    }
+}
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/thermophysicalModels/solids/solid/solid.C b/src/thermophysicalModels/solids/solid/solid.C
index 02a0fdde4668e0593364b539ba93b53f77f1e7a5..5a9da6b875131714701557fecddd1569584bf8da 100644
--- a/src/thermophysicalModels/solids/solid/solid.C
+++ b/src/thermophysicalModels/solids/solid/solid.C
@@ -26,79 +26,63 @@ License
 
 #include "solid.H"
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 namespace Foam
 {
-
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
-
-defineTypeNameAndDebug(solid, 0);
-defineRunTimeSelectionTable(solid,);
-defineRunTimeSelectionTable(solid, Istream);
+    defineTypeNameAndDebug(solid, 0);
+    defineRunTimeSelectionTable(solid,);
+    defineRunTimeSelectionTable(solid, Istream);
+}
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-autoPtr<solid> solid::New(Istream& is)
+Foam::solid::solid
+(
+    scalar rho,
+    scalar cp,
+    scalar K,
+    scalar Hf,
+    scalar emissivity
+)
+:
+    rho_(rho),
+    cp_(cp),
+    K_(K),
+    Hf_(Hf),
+    emissivity_(emissivity)
+{}
+
+
+Foam::solid::solid(Istream& is)
+:
+    rho_(readScalar(is)),
+    cp_(readScalar(is)),
+    K_(readScalar(is)),
+    Hf_(readScalar(is)),
+    emissivity_(readScalar(is))
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+void Foam::solid::writeData(Ostream& os) const
 {
-    if (debug)
-    {
-        Info<< "solid::New(Istream&): "
-            << "constructing solid"
-            << endl;
-    }
-
-    word solidType(is);
-
-    word coeffs(is);
-
-    if (coeffs == "defaultCoeffs")
-    {
-        ConstructorTable::iterator cstrIter =
-            ConstructorTablePtr_->find(solidType);
-
-        if (cstrIter == ConstructorTablePtr_->end())
-        {
-            FatalErrorIn("solid::New(Istream&)")
-                << "Unknown solid type " << solidType << nl << nl
-                << "Valid solid types are :" << endl
-                << ConstructorTablePtr_->toc()
-                << exit(FatalError);
-        }
-
-        return autoPtr<solid>(cstrIter()());
-    }
-    else if (coeffs == "coeffs")
-    {
-        IstreamConstructorTable::iterator cstrIter =
-            IstreamConstructorTablePtr_->find(solidType);
-
-        if (cstrIter == IstreamConstructorTablePtr_->end())
-        {
-            FatalErrorIn("solid::New(Istream&)")
-                << "Unknown solid type " << solidType << nl << nl
-                << "Valid solid types are :" << endl
-                << IstreamConstructorTablePtr_->toc()
-                << exit(FatalError);
-        }
-
-        return autoPtr<solid>(cstrIter()(is));
-    }
-    else
-    {
-        FatalErrorIn("solid::New(Istream&)")
-            << "solid type " << solidType
-            << ", option " << coeffs << " given"
-            << ", should be coeffs or defaultCoeffs"
-            << exit(FatalError);
-
-        return autoPtr<solid>(NULL);
-    }
+    os  << rho_ << token::SPACE
+        << cp_ << token::SPACE
+        << K_ << token::SPACE
+        << Hf_ << token::SPACE
+        << emissivity_;
 }
 
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * IOStream operators  * * * * * * * * * * * * * //
+
+Foam::Ostream& Foam::operator<<(Ostream& os, const solid& s)
+{
+    s.writeData(os);
+    return os;
+}
 
-} // End namespace Foam
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/solids/solid/solid.H b/src/thermophysicalModels/solids/solid/solid.H
index 7ad30e79a285117e261d2ce1732993789e80f292..3a7c8e27101a6e554b1a951e1ef69944b5de8357 100644
--- a/src/thermophysicalModels/solids/solid/solid.H
+++ b/src/thermophysicalModels/solids/solid/solid.H
@@ -45,6 +45,15 @@ SourceFiles
 namespace Foam
 {
 
+class solid;
+
+Ostream& operator<<
+(
+     Ostream&,
+     const solid&
+);
+
+
 /*---------------------------------------------------------------------------*\
                             Class solid Declaration
 \*---------------------------------------------------------------------------*/
@@ -107,24 +116,10 @@ public:
             scalar K,
             scalar Hf,
             scalar emissivity
-        )
-        :
-            rho_(rho),
-            cp_(cp),
-            K_(K),
-            Hf_(Hf),
-            emissivity_(emissivity)
-        {}
+        );
 
         //- Construct from Istream
-        solid(Istream& is)
-        :
-            rho_(readScalar(is)),
-            cp_(readScalar(is)),
-            K_(readScalar(is)),
-            Hf_(readScalar(is)),
-            emissivity_(readScalar(is))
-        {}
+        solid(Istream& is);
 
         //- Return a pointer to a new solid created from input
         static autoPtr<solid> New(Istream& is);
@@ -141,59 +136,37 @@ public:
         // Phisical constants which define the solid
 
             //- Density [kg/m3]
-            scalar rho() const
-            {
-                return rho_;
-            }
+            inline scalar rho() const;
 
             //- Specific heat capacity [J/(kg.K)]
-            scalar cp() const
-            {
-                return cp_;
-            }
+            inline scalar cp() const;
 
             //- Thermal conductivity [W/(m.K)]
-            scalar K() const
-            {
-                return K_;
-            }
+            inline scalar K() const;
 
             //- Heat of formation [J/kg]
-            scalar Hf() const
-            {
-                return Hf_;
-            }
+            inline scalar Hf() const;
 
-            //- emissivity
-            scalar emissivity() const
-            {
-                return emissivity_;
-            }
+            //- Emissivity []
+            inline scalar emissivity() const;
 
 
         // I-O
 
             //- Write the solid properties
-            virtual void writeData(Ostream& os) const
-            {
-                os<< rho_ << token::SPACE
-                  << cp_ << token::SPACE
-                  << K_ << token::SPACE
-                  << Hf_ << token::SPACE
-                  << emissivity_;
-            }
+            virtual void writeData(Ostream& os) const;
 
 
         // Ostream Operator
 
-        friend Ostream& operator<<(Ostream& os, const solid& s)
-        {
-            s.writeData(os);
-            return os;
-        }
+        friend Ostream& operator<<(Ostream& os, const solid& s);
 };
 
 
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "solidI.H"
+
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 } // End namespace Foam
diff --git a/src/thermophysicalModels/solids/solid/solidI.H b/src/thermophysicalModels/solids/solid/solidI.H
new file mode 100644
index 0000000000000000000000000000000000000000..1921b1da3c25454593c7f113030343f01a657cdb
--- /dev/null
+++ b/src/thermophysicalModels/solids/solid/solidI.H
@@ -0,0 +1,59 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+inline Foam::scalar Foam::solid::rho() const
+{
+    return rho_;
+}
+
+
+inline Foam::scalar Foam::solid::cp() const
+{
+    return cp_;
+}
+
+
+inline Foam::scalar Foam::solid::K() const
+{
+    return K_;
+}
+
+
+inline Foam::scalar Foam::solid::Hf() const
+{
+    return Hf_;
+}
+
+
+inline Foam::scalar Foam::solid::emissivity() const
+{
+    return emissivity_;
+}
+
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/specie/Make/files b/src/thermophysicalModels/specie/Make/files
index 2f0e008422b669478807fc035629ef717bf462e1..428f6d8fc7784f5ba6e2226740d0ffddfada9b4f 100644
--- a/src/thermophysicalModels/specie/Make/files
+++ b/src/thermophysicalModels/specie/Make/files
@@ -1,14 +1,15 @@
 atomicWeights = atomicWeights
 specie = specie
 speciesTable = speciesTable
-perfectGas = equationOfState/perfectGas
+equationOfState = equationOfState
 reactions = reaction/reactions
 
 $(atomicWeights)/atomicWeights.C
 $(specie)/specie.C
 $(speciesTable)/speciesTable.C
-$(perfectGas)/perfectGas.C
+$(equationOfState)/perfectGas/perfectGas.C
 $(reactions)/makeChemkinReactions.C
+$(reactions)/makeReactionThermoReactions.C
 $(reactions)/makeLangmuirHinshelwoodReactions.C
 
 LIB = $(FOAM_LIBBIN)/libspecie
diff --git a/src/thermophysicalModels/specie/equationOfState/icoPolynomial/icoPolynomial.C b/src/thermophysicalModels/specie/equationOfState/icoPolynomial/icoPolynomial.C
new file mode 100644
index 0000000000000000000000000000000000000000..9fd15c2986c5fe3365f6c6d65b8af2bb2198aa34
--- /dev/null
+++ b/src/thermophysicalModels/specie/equationOfState/icoPolynomial/icoPolynomial.C
@@ -0,0 +1,65 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "icoPolynomial.H"
+#include "IOstreams.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template<int PolySize>
+icoPolynomial<PolySize>::icoPolynomial(Istream& is)
+:
+    specie(is),
+    rhoPolynomial_("rhoPolynomial", is)
+{}
+
+
+// * * * * * * * * * * * * * * * Ostream Operator  * * * * * * * * * * * * * //
+
+template<int PolySize>
+Ostream& operator<<(Ostream& os, const icoPolynomial<PolySize>& ip)
+{
+    os  << static_cast<const specie&>(ip);
+
+    os.check
+    (
+        "Ostream& operator<<(Ostream& os, const icoPolynomial<PolySize>& ip)"
+    );
+
+    return os;
+}
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/specie/equationOfState/icoPolynomial/icoPolynomial.H b/src/thermophysicalModels/specie/equationOfState/icoPolynomial/icoPolynomial.H
new file mode 100644
index 0000000000000000000000000000000000000000..27190fd833bfdedf79961cfb0b7467faaf42e84f
--- /dev/null
+++ b/src/thermophysicalModels/specie/equationOfState/icoPolynomial/icoPolynomial.H
@@ -0,0 +1,212 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::icoPolynomial
+
+Description
+    Incompressible, polynomial form of equation of state, using a polynomial
+    function for density.
+
+SourceFiles
+    icoPolynomialI.H
+    icoPolynomial.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef icoPolynomial_H
+#define icoPolynomial_H
+
+#include "specie.H"
+#include "autoPtr.H"
+#include "Polynomial.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+// Forward declaration of friend functions and operators
+
+template<int PolySize>
+class icoPolynomial;
+
+template<int PolySize>
+icoPolynomial<PolySize> operator+
+(
+    const icoPolynomial<PolySize>&,
+    const icoPolynomial<PolySize>&
+);
+
+template<int PolySize>
+icoPolynomial<PolySize> operator-
+(
+    const icoPolynomial<PolySize>&,
+    const icoPolynomial<PolySize>&
+);
+
+template<int PolySize>
+icoPolynomial<PolySize> operator*
+(
+    const scalar,
+    const icoPolynomial<PolySize>&
+);
+
+template<int PolySize>
+icoPolynomial<PolySize> operator==
+(
+    const icoPolynomial<PolySize>&,
+    const icoPolynomial<PolySize>&
+);
+
+template<int PolySize>
+Ostream& operator<<
+(
+    Ostream&,
+    const icoPolynomial<PolySize>&
+);
+
+
+/*---------------------------------------------------------------------------*\
+                        Class icoPolynomial Declaration
+\*---------------------------------------------------------------------------*/
+
+template<int PolySize>
+class icoPolynomial
+:
+    public specie
+{
+    // Private data
+
+        //- Density
+        Polynomial<PolySize> rhoPolynomial_;
+
+
+public:
+
+    // Constructors
+
+        //- Construct from components
+        inline icoPolynomial
+        (
+            const specie& sp,
+            const Polynomial<PolySize>& rhoPoly
+        );
+
+        //- Construct from Istream
+        icoPolynomial(Istream&);
+
+        //- Construct as named copy
+        inline icoPolynomial(const word& name, const icoPolynomial&);
+
+        //- Construct and return a clone
+        inline autoPtr<icoPolynomial> clone() const;
+
+        // Selector from Istream
+        inline static autoPtr<icoPolynomial> New(Istream& is);
+
+
+    // Member functions
+
+        //- Return density [kg/m^3]
+        inline scalar rho(scalar p, scalar T) const;
+
+        //- Return compressibility rho/p [s^2/m^2]
+        inline scalar psi(scalar p, scalar T) const;
+
+        //- Return compression factor []
+        inline scalar Z(scalar p, scalar T) const;
+
+
+    // Member operators
+
+        inline void operator+=(const icoPolynomial&);
+        inline void operator-=(const icoPolynomial&);
+
+        inline void operator*=(const scalar);
+
+
+    // Friend operators
+
+        friend icoPolynomial operator+ <PolySize>
+        (
+            const icoPolynomial&,
+            const icoPolynomial&
+        );
+
+        friend icoPolynomial operator- <PolySize>
+        (
+            const icoPolynomial&,
+            const icoPolynomial&
+        );
+
+        friend icoPolynomial operator* <PolySize>
+        (
+            const scalar s,
+            const icoPolynomial&
+        );
+
+        friend icoPolynomial operator== <PolySize>
+        (
+            const icoPolynomial&,
+            const icoPolynomial&
+        );
+
+
+    // Ostream Operator
+
+        friend Ostream& operator<< <PolySize>(Ostream&, const icoPolynomial&);
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#define makeIcoPolynomial(PolySize)                                          \
+                                                                             \
+defineTemplateTypeNameAndDebugWithName                                       \
+(                                                                            \
+    icoPolynomial<PolySize>,                                                 \
+    "icoPolynomial<"#PolySize">",                                            \
+    0                                                                        \
+);
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "icoPolynomialI.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#ifdef NoRepository
+#   include "icoPolynomial.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/specie/equationOfState/icoPolynomial/icoPolynomialI.H b/src/thermophysicalModels/specie/equationOfState/icoPolynomial/icoPolynomialI.H
new file mode 100644
index 0000000000000000000000000000000000000000..d174c57192bac3d842188fc6a03ddda8eeb23aac
--- /dev/null
+++ b/src/thermophysicalModels/specie/equationOfState/icoPolynomial/icoPolynomialI.H
@@ -0,0 +1,209 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "icoPolynomial.H"
+
+// * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
+
+template<int PolySize>
+inline Foam::icoPolynomial<PolySize>::icoPolynomial
+(
+    const specie& sp,
+    const Polynomial<PolySize>& rhoPoly
+)
+:
+    specie(sp),
+    rhoPolynomial_(rhoPoly)
+{}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template<int PolySize>
+inline Foam::icoPolynomial<PolySize>::icoPolynomial
+(
+    const word& name,
+    const icoPolynomial<PolySize>& ip
+)
+:
+    specie(name, ip),
+    rhoPolynomial_(ip.rhoPolynomial_)
+{}
+
+
+template<int PolySize>
+inline Foam::autoPtr<Foam::icoPolynomial<PolySize> >
+Foam::icoPolynomial<PolySize>::clone() const
+{
+    return autoPtr<icoPolynomial<PolySize> >
+    (
+        new icoPolynomial<PolySize>(*this)
+    );
+}
+
+
+template<int PolySize>
+inline Foam::autoPtr<Foam::icoPolynomial<PolySize> >
+Foam::icoPolynomial<PolySize>::New(Istream& is)
+{
+    return autoPtr<icoPolynomial<PolySize> >(new icoPolynomial<PolySize>(is));
+}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+template<int PolySize>
+inline Foam::scalar Foam::icoPolynomial<PolySize>::rho(scalar, scalar T) const
+{
+    return rhoPolynomial_.evaluate(T);
+}
+
+
+template<int PolySize>
+inline Foam::scalar Foam::icoPolynomial<PolySize>::psi(scalar, scalar) const
+{
+    return 0.0;
+}
+
+
+template<int PolySize>
+inline Foam::scalar Foam::icoPolynomial<PolySize>::Z(scalar, scalar) const
+{
+    return 0.0;
+}
+
+
+// * * * * * * * * * * * * * * * Member Operators  * * * * * * * * * * * * * //
+
+template<int PolySize>
+inline void Foam::icoPolynomial<PolySize>::operator+=
+(
+    const icoPolynomial<PolySize>& ip
+)
+{
+    scalar molr1 = this->nMoles();
+
+    specie::operator+=(ip);
+
+    molr1 /= this->nMoles();
+    scalar molr2 = ip.nMoles()/this->nMoles();
+
+    rhoPolynomial_ = molr1*rhoPolynomial_ + molr2*ip.rhoPolynomial_;
+}
+
+
+template<int PolySize>
+inline void Foam::icoPolynomial<PolySize>::operator-=
+(
+    const icoPolynomial<PolySize>& ip
+)
+{
+    scalar molr1 = this->nMoles();
+    specie::operator-=(ip);
+
+    molr1 /= this->nMoles();
+    scalar molr2 = ip.nMoles()/this->nMoles();
+
+    rhoPolynomial_ = molr1*rhoPolynomial_ - molr2*ip.rhoPolynomial_;
+}
+
+
+template<int PolySize>
+inline void Foam::icoPolynomial<PolySize>::operator*=(const scalar s)
+{
+    specie::operator*=(s);
+}
+
+
+// * * * * * * * * * * * * * * * Friend Operators  * * * * * * * * * * * * * //
+
+template<int PolySize>
+Foam::icoPolynomial<PolySize> Foam::operator+
+(
+    const icoPolynomial<PolySize>& ip1,
+    const icoPolynomial<PolySize>& ip2
+)
+{
+    scalar mol1 = ip1.nMoles();
+    scalar mol2 = ip2.nMoles();
+    scalar nMoles = mol1 + mol2;
+
+    return icoPolynomial<PolySize>
+    (
+        static_cast<const specie&>(ip1)
+      + static_cast<const specie&>(ip2),
+        (mol1/nMoles)*ip1.rhoPolynomial_ + (mol2/nMoles)*ip2.rhoPolynomial_
+    );
+}
+
+
+template<int PolySize>
+Foam::icoPolynomial<PolySize> Foam::operator-
+(
+    const icoPolynomial<PolySize>& ip1,
+    const icoPolynomial<PolySize>& ip2
+)
+{
+    scalar mol1 = ip1.nMoles();
+    scalar mol2 = ip2.nMoles();
+    scalar nMoles = mol1 + mol2;
+
+    return icoPolynomial<PolySize>
+    (
+        static_cast<const specie&>(ip1)
+      - static_cast<const specie&>(ip2),
+        (mol1/nMoles)*ip1.rhoPolynomial_ - (mol2/nMoles)*ip2.rhoPolynomial_
+    );
+}
+
+
+template<int PolySize>
+Foam::icoPolynomial<PolySize> Foam::operator*
+(
+    const scalar s,
+    const icoPolynomial<PolySize>& ip
+)
+{
+    return icoPolynomial<PolySize>
+    (
+        s*static_cast<const specie&>(ip),
+        ip.rhoPolynomial_
+    );
+}
+
+
+template<int PolySize>
+Foam::icoPolynomial<PolySize> Foam::operator==
+(
+    const icoPolynomial<PolySize>& ip1,
+    const icoPolynomial<PolySize>& ip2
+)
+{
+    return ip2 - ip1;
+}
+
+
+// ************************************************************************* //
diff --git a/src/OpenFOAM/containers/Lists/PtrList/PtrListLoopM.H b/src/thermophysicalModels/specie/include/reactionTypes.H
similarity index 76%
rename from src/OpenFOAM/containers/Lists/PtrList/PtrListLoopM.H
rename to src/thermophysicalModels/specie/include/reactionTypes.H
index cbd6fd10dfbf6525f5984f1d208447cb3426ce02..6ea8803c79d2071bdbe0af57095127df7ef3a93f 100644
--- a/src/OpenFOAM/containers/Lists/PtrList/PtrListLoopM.H
+++ b/src/thermophysicalModels/specie/include/reactionTypes.H
@@ -22,35 +22,38 @@ License
     along with OpenFOAM; if not, write to the Free Software Foundation,
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
+Typedefs
+    Foam::reactionTypes
+
 Description
-    simple generic PtrList MACROS for looping
+    Type definitions for reactions
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef PtrListLoop_H
-#define PtrListLoop_H
+#ifndef reactionTypes_H
+#define reactionTypes_H
 
-#include "undefListLoopM.H"
+#include "thermoPhysicsTypes.H"
+#include "Reaction.H"
 
+#include "icoPolynomial.H"
+#include "hPolynomialThermo.H"
+#include "polynomialTransport.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-// Element access looping using [] for vector and parallel machines
-
-#define List_FOR_ALL(f, i)      \
-        forAll(f, i)            \
-        {                       \
-
-#define List_END_FOR_ALL  }
+namespace Foam
+{
+    typedef Reaction<gasThermoPhysics> gasReaction;
 
-#define List_ELEM(f, fp, i) ((f)[i])
-
-#define List_ACCESS(type, f, fp)
-#define List_CONST_ACCESS(type, f, fp)
+    typedef Reaction<constGasThermoPhysics> constGasReaction;
 
+    typedef Reaction<icoPoly8ThermoPhysics> icoPoly8Reaction;
+}
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 #endif
 
 // ************************************************************************* //
+
diff --git a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloudThermoTypes.H b/src/thermophysicalModels/specie/include/thermoPhysicsTypes.H
similarity index 76%
rename from src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloudThermoTypes.H
rename to src/thermophysicalModels/specie/include/thermoPhysicsTypes.H
index 2341e65aa027a792bc4c51e1a4063b0b39417398..502958b505b8459b9d3245656e3a7767038a84f3 100644
--- a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloudThermoTypes.H
+++ b/src/thermophysicalModels/specie/include/thermoPhysicsTypes.H
@@ -23,39 +23,50 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Typedefs
-    Foam::cloudThermoTypes
+    Foam::thermoPhysicsTypes
 
 Description
+    Type definitions for thermo-physics models
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef ReactingCloudThermoTypes_H
-#define ReactingCloudThermoTypes_H
+#ifndef thermoPhysicsTypes_H
+#define thermoPhysicsTypes_H
 
-#include "sutherlandTransport.H"
-#include "multiComponentMixture.H"
-#include "specie.H"
-#include "constTransport.H"
-#include "specieThermo.H"
+#include "perfectGas.H"
 #include "hConstThermo.H"
 #include "janafThermo.H"
-#include "perfectGas.H"
+#include "specieThermo.H"
+#include "sutherlandTransport.H"
+#include "constTransport.H"
+
+#include "icoPolynomial.H"
+#include "hPolynomialThermo.H"
+#include "polynomialTransport.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 namespace Foam
 {
-//    typedef multiComponentMixture<constTransport<specieThermo<hConstThermo<perfectGas> > > > specieProperties;
-//    typedef hConstThermo<perfectGas> specieProperties;
-
-//    typedef sutherlandTransport<specieThermo<janafThermo<perfectGas> > >
-//        specieProperties;
-
     typedef sutherlandTransport<specieThermo<janafThermo<perfectGas> > >
-        specieReactingProperties;
+        gasThermoPhysics;
 
     typedef constTransport<specieThermo<hConstThermo<perfectGas> > >
-        specieConstProperties;
+        constGasThermoPhysics;
+
+    typedef polynomialTransport
+        <
+            specieThermo
+            <
+                hPolynomialThermo
+                <
+                    icoPolynomial<8>,
+                    8
+                >
+            >,
+            8
+        >
+        icoPoly8ThermoPhysics;
 }
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -63,3 +74,4 @@ namespace Foam
 #endif
 
 // ************************************************************************* //
+
diff --git a/src/thermophysicalModels/specie/reaction/reactions/makeChemkinReactions.C b/src/thermophysicalModels/specie/reaction/reactions/makeChemkinReactions.C
index 3bd2e3d0de95388b6a3914f9fe2814f9247e09ae..3756f2e3657a0b1a5dce610248a9250fcb1d02a5 100644
--- a/src/thermophysicalModels/specie/reaction/reactions/makeChemkinReactions.C
+++ b/src/thermophysicalModels/specie/reaction/reactions/makeChemkinReactions.C
@@ -26,7 +26,8 @@ Description
 
 \*---------------------------------------------------------------------------*/
 
-#include "makeReactionJanaf.H"
+#include "reactionTypes.H"
+#include "makeReactionThermo.H"
 
 #include "ArrheniusReactionRate.H"
 #include "thirdBodyArrheniusReactionRate.H"
@@ -47,21 +48,39 @@ namespace Foam
 
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
-defineTemplateTypeNameAndDebug(reaction, 0);
-defineTemplateRunTimeSelectionTable(reaction, Istream);
+defineTemplateTypeNameAndDebug(gasReaction, 0);
+defineTemplateRunTimeSelectionTable(gasReaction, Istream);
 
 
 // * * * * * * * * * * * * * Make CHEMKIN reactions  * * * * * * * * * * * * //
 
-makeIRNReactions(ArrheniusReactionRate)
-makeIRNReactions(LandauTellerReactionRate)
-makeIRNReactions(thirdBodyArrheniusReactionRate)
-makeIRReactions(JanevReactionRate)
-makeIRReactions(powerSeriesReactionRate)
+makeIRNReactions(gasThermoPhysics, ArrheniusReactionRate)
+makeIRNReactions(gasThermoPhysics, LandauTellerReactionRate)
+makeIRNReactions(gasThermoPhysics, thirdBodyArrheniusReactionRate)
+makeIRReactions(gasThermoPhysics, JanevReactionRate)
+makeIRReactions(gasThermoPhysics, powerSeriesReactionRate)
+
+makePressureDependentReactions
+(
+    gasThermoPhysics,
+    ArrheniusReactionRate,
+    LindemannFallOffFunction
+)
+
+makePressureDependentReactions
+(
+    gasThermoPhysics,
+    ArrheniusReactionRate,
+    TroeFallOffFunction
+)
+
+makePressureDependentReactions
+(
+    gasThermoPhysics,
+    ArrheniusReactionRate,
+    SRIFallOffFunction
+)
 
-makePressureDependentReactions(ArrheniusReactionRate, LindemannFallOffFunction)
-makePressureDependentReactions(ArrheniusReactionRate, TroeFallOffFunction)
-makePressureDependentReactions(ArrheniusReactionRate, SRIFallOffFunction)
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
diff --git a/src/thermophysicalModels/specie/reaction/reactions/makeLangmuirHinshelwoodReactions.C b/src/thermophysicalModels/specie/reaction/reactions/makeLangmuirHinshelwoodReactions.C
index 8a4b2f6ad87747979a644823d50b1774c9901c69..1789fe80fc4d513d6c0b3b7de485ba7f1fd2daf3 100644
--- a/src/thermophysicalModels/specie/reaction/reactions/makeLangmuirHinshelwoodReactions.C
+++ b/src/thermophysicalModels/specie/reaction/reactions/makeLangmuirHinshelwoodReactions.C
@@ -26,17 +26,16 @@ Description
 
 \*---------------------------------------------------------------------------*/
 
-#include "makeReactionJanaf.H"
+#include "makeReactionThermo.H"
+#include "reactionTypes.H"
 #include "LangmuirHinshelwoodReactionRate.H"
 
-
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 namespace Foam
 {
-
-    makeIRReactions(LangmuirHinshelwoodReactionRate)
-
+    makeIRReactions(gasThermoPhysics, LangmuirHinshelwoodReactionRate)
+    makeIRReactions(icoPoly8ThermoPhysics, LangmuirHinshelwoodReactionRate)
 }
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/specie/reaction/reactions/makeReactionJanaf.H b/src/thermophysicalModels/specie/reaction/reactions/makeReactionJanaf.H
deleted file mode 100644
index 7a4de043f6dde0b06cbdfde930893a31661ac217..0000000000000000000000000000000000000000
--- a/src/thermophysicalModels/specie/reaction/reactions/makeReactionJanaf.H
+++ /dev/null
@@ -1,118 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by the
-    Free Software Foundation; either version 2 of the License, or (at your
-    option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM; if not, write to the Free Software Foundation,
-    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-InClass
-    Foam::makeReactionJanaf
-
-Description
-
-\*---------------------------------------------------------------------------*/
-
-#ifndef makeReactionJanaf_H
-#define makeReactionJanaf_H
-
-#include "Reaction.H"
-
-#include "IrreversibleReaction.H"
-#include "ReversibleReaction.H"
-#include "NonEquilibriumReversibleReaction.H"
-
-#include "sutherlandTransport.H"
-#include "specieThermo.H"
-#include "janafThermo.H"
-#include "perfectGas.H"
-
-#include "addToRunTimeSelectionTable.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-typedef sutherlandTransport<specieThermo<janafThermo<perfectGas> > >
-    reactionThermo;
-
-typedef Reaction<reactionThermo>
-    reaction;
-
-#define makeReaction(Reaction, ReactionRate)                                  \
-                                                                              \
-    typedef Reaction<reactionThermo, ReactionRate>                            \
-        Reaction##ReactionRate;                                               \
-                                                                              \
-    template<>                                                                \
-    const word Reaction##ReactionRate::typeName                               \
-    (                                                                         \
-        Reaction::typeName_()                                                 \
-      + ReactionRate::type()                                                  \
-      + reaction::typeName_()                                                 \
-    );                                                                        \
-                                                                              \
-    addToRunTimeSelectionTable(reaction, Reaction##ReactionRate, Istream);
-
-#define makePressureDependentReaction(Reaction, PressureDependentReactionRate, ReactionRate, FallOffFunction)  \
-                                                                              \
-    typedef PressureDependentReactionRate<ReactionRate, FallOffFunction>      \
-    PressureDependentReactionRate##ReactionRate##FallOffFunction;             \
-                                                                              \
-    makeReaction                                                              \
-    (Reaction, PressureDependentReactionRate##ReactionRate##FallOffFunction)
-
-#define makeIRReactions(ReactionRate)                                         \
-    makeReaction(IrreversibleReaction, ReactionRate)                          \
-    makeReaction(ReversibleReaction, ReactionRate)
-
-#define makeIRNReactions(ReactionRate)                                        \
-    makeIRReactions(ReactionRate)                                             \
-    makeReaction(NonEquilibriumReversibleReaction, ReactionRate)
-
-#define makePressureDependentReactions(ReactionRate, FallOffFunction)         \
-                                                                              \
-    makePressureDependentReaction                                             \
-        (IrreversibleReaction, FallOffReactionRate,                           \
-         ReactionRate, FallOffFunction)                                       \
-                                                                              \
-    makePressureDependentReaction                                             \
-        (ReversibleReaction, FallOffReactionRate,                             \
-         ReactionRate, FallOffFunction)                                       \
-                                                                              \
-    makePressureDependentReaction                                             \
-        (IrreversibleReaction, ChemicallyActivatedReactionRate,               \
-         ReactionRate, FallOffFunction)                                       \
-                                                                              \
-    makePressureDependentReaction                                             \
-        (ReversibleReaction, ChemicallyActivatedReactionRate,                 \
-         ReactionRate, FallOffFunction)
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-} // End namespace Foam
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-#endif
-
-// ************************************************************************* //
diff --git a/src/thermophysicalModels/specie/reaction/reactions/makeReactionThermo.H b/src/thermophysicalModels/specie/reaction/reactions/makeReactionThermo.H
new file mode 100644
index 0000000000000000000000000000000000000000..6d982155c7d48f30f671585112e5d1ecc105430a
--- /dev/null
+++ b/src/thermophysicalModels/specie/reaction/reactions/makeReactionThermo.H
@@ -0,0 +1,158 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+InClass
+    Foam::makeReactionThermo
+
+Description
+    Macros for instantiating reactions on given thermo packages
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef makeReactionTherno_H
+#define makeReactionThermo_H
+
+#include "Reaction.H"
+
+#include "IrreversibleReaction.H"
+#include "ReversibleReaction.H"
+#include "NonEquilibriumReversibleReaction.H"
+
+#include "specieThermo.H"
+
+#include "sutherlandTransport.H"
+#include "janafThermo.H"
+#include "perfectGas.H"
+
+#include "polynomialTransport.H"
+#include "hPolynomialThermo.H"
+#include "icoPolynomial.H"
+
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#define makeReaction(Thermo, ReactionType, ReactionRate)                      \
+                                                                              \
+    typedef Reaction<Thermo> Reaction##Thermo;                                \
+                                                                              \
+    typedef ReactionType<Thermo, ReactionRate>                                \
+        ReactionType##Thermo##ReactionRate;                                   \
+                                                                              \
+    template<>                                                                \
+    const word ReactionType##Thermo##ReactionRate::typeName                   \
+    (                                                                         \
+        ReactionType::typeName_()                                             \
+      + ReactionRate::type()                                                  \
+      + Reaction##Thermo::typeName_()                                 \
+    );                                                                        \
+                                                                              \
+    addToRunTimeSelectionTable                                                \
+    (                                                                         \
+        Reaction##Thermo,                                                     \
+        ReactionType##Thermo##ReactionRate,                                   \
+        Istream                                                               \
+    );
+
+
+#define makePressureDependentReaction(Thermo, Reaction, PressureDependentReactionRate, ReactionRate, FallOffFunction) \
+                                                                              \
+    typedef PressureDependentReactionRate<ReactionRate, FallOffFunction>      \
+        PressureDependentReactionRate##ReactionRate##FallOffFunction;         \
+                                                                              \
+    makeReaction                                                              \
+    (                                                                         \
+        Thermo,                                                               \
+        Reaction,                                                             \
+        PressureDependentReactionRate##ReactionRate##FallOffFunction          \
+    )
+
+
+#define makeIRReactions(Thermo, ReactionRate)                                 \
+                                                                              \
+    makeReaction(Thermo, IrreversibleReaction, ReactionRate)                  \
+                                                                              \
+    makeReaction(Thermo, ReversibleReaction, ReactionRate)
+
+
+#define makeIRNReactions(Thermo, ReactionRate)                                \
+                                                                              \
+    makeIRReactions(Thermo, ReactionRate)                                     \
+                                                                              \
+    makeReaction(Thermo, NonEquilibriumReversibleReaction, ReactionRate)
+
+
+#define makePressureDependentReactions(Thermo, ReactionRate, FallOffFunction) \
+                                                                              \
+    makePressureDependentReaction                                             \
+    (                                                                         \
+        Thermo,                                                               \
+        IrreversibleReaction,                                                 \
+        FallOffReactionRate,                                                  \
+        ReactionRate,                                                         \
+        FallOffFunction                                                       \
+    )                                                                         \
+                                                                              \
+    makePressureDependentReaction                                             \
+    (                                                                         \
+        Thermo,                                                               \
+        ReversibleReaction,                                                   \
+        FallOffReactionRate,                                                  \
+        ReactionRate,                                                         \
+        FallOffFunction                                                       \
+    )                                                                         \
+                                                                              \
+    makePressureDependentReaction                                             \
+    (                                                                         \
+        Thermo,                                                               \
+        IrreversibleReaction,                                                 \
+        ChemicallyActivatedReactionRate,                                      \
+        ReactionRate,                                                         \
+        FallOffFunction                                                       \
+    )                                                                         \
+                                                                              \
+    makePressureDependentReaction                                             \
+    (                                                                         \
+        Thermo,                                                               \
+        ReversibleReaction,                                                   \
+        ChemicallyActivatedReactionRate,                                      \
+        ReactionRate,                                                         \
+        FallOffFunction                                                       \
+    )
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/specie/reaction/reactions/makeReactionThermoReactions.C b/src/thermophysicalModels/specie/reaction/reactions/makeReactionThermoReactions.C
new file mode 100644
index 0000000000000000000000000000000000000000..1a054b11249f50609912d1fd90f49f7a01376f4f
--- /dev/null
+++ b/src/thermophysicalModels/specie/reaction/reactions/makeReactionThermoReactions.C
@@ -0,0 +1,89 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Description
+
+\*---------------------------------------------------------------------------*/
+
+#include "reactionTypes.H"
+#include "makeReactionThermo.H"
+
+#include "ArrheniusReactionRate.H"
+#include "thirdBodyArrheniusReactionRate.H"
+#include "FallOffReactionRate.H"
+#include "ChemicallyActivatedReactionRate.H"
+#include "LindemannFallOffFunction.H"
+#include "TroeFallOffFunction.H"
+#include "SRIFallOffFunction.H"
+#include "LandauTellerReactionRate.H"
+#include "JanevReactionRate.H"
+#include "powerSeriesReactionRate.H"
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+defineTemplateTypeNameAndDebug(icoPoly8Reaction, 0);
+defineTemplateRunTimeSelectionTable(icoPoly8Reaction, Istream);
+
+
+// * * * * * * * * * * * * * Make CHEMKIN reactions  * * * * * * * * * * * * //
+
+makeIRNReactions(icoPoly8ThermoPhysics, ArrheniusReactionRate)
+makeIRNReactions(icoPoly8ThermoPhysics, LandauTellerReactionRate)
+makeIRNReactions(icoPoly8ThermoPhysics, thirdBodyArrheniusReactionRate)
+makeIRReactions(icoPoly8ThermoPhysics, JanevReactionRate)
+makeIRReactions(icoPoly8ThermoPhysics, powerSeriesReactionRate)
+
+makePressureDependentReactions
+(
+    icoPoly8ThermoPhysics,
+    ArrheniusReactionRate,
+    LindemannFallOffFunction
+)
+
+makePressureDependentReactions
+(
+    icoPoly8ThermoPhysics,
+    ArrheniusReactionRate,
+    TroeFallOffFunction
+)
+
+makePressureDependentReactions
+(
+    icoPoly8ThermoPhysics,
+    ArrheniusReactionRate,
+    SRIFallOffFunction
+)
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/specie/specie/specie.H b/src/thermophysicalModels/specie/specie/specie.H
index 38f36e34f2c6af4e8eb894e8f98a3807916ad04e..10238c220cd617dc51d0b4a365fdd8ec5ae451dc 100644
--- a/src/thermophysicalModels/specie/specie/specie.H
+++ b/src/thermophysicalModels/specie/specie/specie.H
@@ -62,7 +62,7 @@ class specie
         //- Number of moles of this component in the mixture
         scalar nMoles_;
 
-        //- Molecular weight of specie
+        //- Molecular weight of specie [kg/kmol]
         scalar molWeight_;
 
 
diff --git a/src/thermophysicalModels/specie/thermo/eConst/eConstThermo.C b/src/thermophysicalModels/specie/thermo/eConst/eConstThermo.C
index 8d62be816fbbe6806de8e0fada75ebfa8561879a..e13eb5b0ab3c77b8e520bc5ef9c006016cd92619 100644
--- a/src/thermophysicalModels/specie/thermo/eConst/eConstThermo.C
+++ b/src/thermophysicalModels/specie/thermo/eConst/eConstThermo.C
@@ -29,9 +29,10 @@ License
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::eConstThermo::eConstThermo(Istream& is)
+template<class equationOfState>
+Foam::eConstThermo<equationOfState>::eConstThermo(Istream& is)
 :
-    specieThermo(is),
+    equationOfState(is),
     Cv_(readScalar(is)),
     Hf_(readScalar(is))
 {
@@ -41,9 +42,15 @@ Foam::eConstThermo::eConstThermo(Istream& is)
 
 // * * * * * * * * * * * * * * * Ostream Operator  * * * * * * * * * * * * * //
 
-Foam::Ostream& Foam::operator<<(Ostream& os, const eConstThermo& ct)
+template<class equationOfState>
+Foam::Ostream& Foam::operator<<
+(
+    Ostream& os,
+    const eConstThermo<equationOfState>& ct
+)
 {
-    os << (const specieThermo&)ct << tab << ct.Cv_ << tab << ct.Hf_;
+    os  << static_cast<const equationOfState&>(ct) << tab
+        << ct.Cv_ << tab << ct.Hf_;
 
     os.check("Ostream& operator<<(Ostream& os, const eConstThermo& ct)");
     return os;
diff --git a/src/thermophysicalModels/specie/thermo/eConst/eConstThermo.H b/src/thermophysicalModels/specie/thermo/eConst/eConstThermo.H
index c01600eabdbc52d7b1df70b739305ac340fb568c..6d9bef74233c05173010b7595c627bb9d40eacc7 100644
--- a/src/thermophysicalModels/specie/thermo/eConst/eConstThermo.H
+++ b/src/thermophysicalModels/specie/thermo/eConst/eConstThermo.H
@@ -26,8 +26,8 @@ Class
     Foam::eConstThermo
 
 Description
-    Constant properties thermodynamics package derived from the basic
-    thermo package data type specieThermo.
+    Constant properties thermodynamics package templated on an equation of
+    state
 
 SourceFiles
     eConstThermoI.H
@@ -86,12 +86,13 @@ Ostream& operator<<
 
 
 /*---------------------------------------------------------------------------*\
-                           Class eConstThermo Declaration
+                        Class eConstThermo Declaration
 \*---------------------------------------------------------------------------*/
 
+template<class equationOfState>
 class eConstThermo
 :
-    public specieThermo
+    public equationOfState
 {
     // Private data
 
@@ -104,7 +105,7 @@ class eConstThermo
         //- Construct from components
         inline eConstThermo
         (
-            const specieThermo& st,
+            const equationOfState& st,
             const scalar cv,
             const scalar hf
         );
@@ -147,20 +148,10 @@ public:
             inline scalar s(const scalar T) const;
 
 
-        // Some derived properties
-        // Other derived properties obtained from specieThermo base type
-
-            //- Temperature from Enthalpy given an initial temperature T0
-            inline scalar TH(const scalar h, const scalar T0) const;
-
-            //- Temperature from internal energy given an initial temperature T0
-            inline scalar TE(const scalar e, const scalar T0) const;
-
-
     // Member operators
 
-        inline void operator+=(const hConstThermo&);
-        inline void operator-=(const hConstThermo&);
+        inline void operator+=(const eConstThermo&);
+        inline void operator-=(const eConstThermo&);
 
 
     // Friend operators
@@ -194,7 +185,8 @@ public:
 
         friend Ostream& operator<< <equationOfState>
         (
-            Ostream&, const eConstThermo&
+            Ostream&,
+            const eConstThermo&
         );
 };
 
@@ -207,6 +199,10 @@ public:
 
 #include "eConstThermoI.H"
 
+#ifdef NoRepository
+#   include "eConstThermo.C"
+#endif
+
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 #endif
diff --git a/src/thermophysicalModels/specie/thermo/eConst/eConstThermoI.H b/src/thermophysicalModels/specie/thermo/eConst/eConstThermoI.H
index aba6da1eef53a90a480ccc694c106be2a2170d6d..8e021c53ab403ba935b1dccfa4cd158edbc7a459 100644
--- a/src/thermophysicalModels/specie/thermo/eConst/eConstThermoI.H
+++ b/src/thermophysicalModels/specie/thermo/eConst/eConstThermoI.H
@@ -26,14 +26,15 @@ License
 
 // * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
 
-inline Foam::eConstThermo::eConstThermo
+template<class equationOfState>
+inline Foam::eConstThermo<equationOfState>::eConstThermo
 (
-    const specieThermo& st,
+    const equationOfState& st,
     const scalar cv,
     const scalar hf
 )
 :
-    specieThermo(st),
+    equationOfState(st),
     Cv_(cv),
     Hf_(hf)
 {}
@@ -41,20 +42,21 @@ inline Foam::eConstThermo::eConstThermo
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-inline Foam::eConstThermo::eConstThermo
+template<class equationOfState>
+inline Foam::eConstThermo<equationOfState>::eConstThermo
 (
     const word& name,
-    const eConstThermo& ct
+    const eConstThermo<equationOfState>& ct
 )
 :
-    specieThermo(name, ct),
+    equationOfState(name, ct),
     Cv_(ct.Cv_),
     Hf_(ct.Hf_)
 {}
 
 
 template<class equationOfState>
-inline Foam::autoPtr<eConstThermo<equationOfState> >
+inline Foam::autoPtr<Foam::eConstThermo<equationOfState> >
 Foam::eConstThermo<equationOfState>::clone() const
 {
     return autoPtr<eConstThermo<equationOfState> >
@@ -65,7 +67,7 @@ Foam::eConstThermo<equationOfState>::clone() const
 
 
 template<class equationOfState>
-inline autoPtr<eConstThermo<equationOfState> >
+inline Foam::autoPtr<Foam::eConstThermo<equationOfState> >
 Foam::eConstThermo<equationOfState>::New(Istream& is)
 {
     return autoPtr<eConstThermo<equationOfState> >
@@ -77,19 +79,31 @@ Foam::eConstThermo<equationOfState>::New(Istream& is)
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-inline Foam::scalar Foam::eConstThermo::cp(const scalar) const
+template<class equationOfState>
+inline Foam::scalar Foam::eConstThermo<equationOfState>::cp
+(
+    const scalar
+) const
 {
-    return Cv_*W() + RR;
+    return Cv_*this->W() + specie::RR;
 }
 
 
-inline Foam::scalar Foam::eConstThermo::h(const scalar T) const
+template<class equationOfState>
+inline Foam::scalar Foam::eConstThermo<equationOfState>::h
+(
+    const scalar T
+) const
 {
-    return cp(T)*T + Hf_*W();
+    return cp(T)*T + Hf_*this->W();
 }
 
 
-inline Foam::scalar Foam::eConstThermo::hs(const scalar T) const
+template<class equationOfState>
+inline Foam::scalar Foam::eConstThermo<equationOfState>::hs
+(
+    const scalar T
+) const
 {
     return cp(T)*T;
 }
@@ -102,104 +116,126 @@ inline Foam::scalar Foam::eConstThermo<equationOfState>::hc() const
 }
 
 
-inline Foam::scalar Foam::eConstThermo::s(const scalar T) const
+template<class equationOfState>
+inline Foam::scalar Foam::eConstThermo<equationOfState>::s
+(
+    const scalar T
+) const
 {
     notImplemented("scalar eConstThermo::s(const scalar T) const");
     return T;
 }
 
 
-inline Foam::scalar Foam::eConstThermo::TH
+// * * * * * * * * * * * * * * * Member Operators  * * * * * * * * * * * * * //
+
+template<class equationOfState>
+inline void Foam::eConstThermo<equationOfState>::operator+=
 (
-    const scalar h,
-    const scalar T0
-) const
+    const eConstThermo<equationOfState>& ct
+)
 {
-    return (h - Hf_)/Cp(T0);
-}
+    scalar molr1 = this->nMoles();
 
+    equationOfState::operator+=(ct);
 
-inline Foam::scalar Foam::eConstThermo::TE
-(
-    const scalar e,
-    const scalar
-) const
-{
-    return (e - Hf_)/Cv_;
+    molr1 /= this->nMoles();
+    scalar molr2 = ct.nMoles()/this->nMoles();
+
+    Cv_ = molr1*Cv_ + molr2*ct.Cv_;
+    Hf_ = molr1*Hf_ + molr2*ct.Hf_;
 }
 
 
-// * * * * * * * * * * * * * * * Member Operators  * * * * * * * * * * * * * //
-
-inline Foam::eConstThermo& Foam::eConstThermo::operator=
+template<class equationOfState>
+inline void Foam::eConstThermo<equationOfState>::operator-=
 (
-    const eConstThermo& ct
+    const eConstThermo<equationOfState>& ct
 )
 {
-    specieThermo::operator=(ct);
+    scalar molr1 = this->nMoles();
 
-    Cv_ = ct.Cv_;
-    Hf_ = ct.Hf_;
+    equationOfState::operator-=(ct);
 
-    return *this;
+    molr1 /= this->nMoles();
+    scalar molr2 = ct.nMoles()/this->nMoles();
+
+    Cv_ = molr1*Cv_ - molr2*ct.Cv_;
+    Hf_ = molr1*Hf_ - molr2*ct.Hf_;
 }
 
 
 // * * * * * * * * * * * * * * * Friend Operators  * * * * * * * * * * * * * //
 
-inline Foam::eConstThermo Foam::operator+
+template<class equationOfState>
+inline Foam::eConstThermo<equationOfState> Foam::operator+
 (
-    const eConstThermo& ct1,
-    const eConstThermo& ct2
+    const eConstThermo<equationOfState>& ct1,
+    const eConstThermo<equationOfState>& ct2
 )
 {
-    specieThermo st(((const specieThermo&)ct1) + ((const specieThermo&)ct2));
+    equationOfState eofs
+    (
+        static_cast<const equationOfState&>(ct1)
+      + static_cast<const equationOfState&>(ct2)
+    );
 
-    return eConstThermo
+    return eConstThermo<equationOfState>
     (
-        st,
-        ct1.nMoles()/st.nMoles()*ct1.Cv_ + ct2.nMoles()/st.nMoles()*ct2.Cv_,
-        ct1.nMoles()/st.nMoles()*ct1.Hf_ + ct2.nMoles()/st.nMoles()*ct2.Hf_
+        eofs,
+        ct1.nMoles()/eofs.nMoles()*ct1.Cv_
+      + ct2.nMoles()/eofs.nMoles()*ct2.Cv_,
+        ct1.nMoles()/eofs.nMoles()*ct1.Hf_
+      + ct2.nMoles()/eofs.nMoles()*ct2.Hf_
     );
 }
 
 
-inline Foam::eConstThermo Foam::operator-
+template<class equationOfState>
+inline Foam::eConstThermo<equationOfState> Foam::operator-
 (
-    const eConstThermo& ct1,
-    const eConstThermo& ct2
+    const eConstThermo<equationOfState>& ct1,
+    const eConstThermo<equationOfState>& ct2
 )
 {
-    specieThermo st(((const specieThermo&)ct1) - ((const specieThermo&)ct2));
+    equationOfState eofs
+    (
+        static_cast<const equationOfState&>(ct1)
+      - static_cast<const equationOfState&>(ct2)
+    );
 
-    return eConstThermo
+    return eConstThermo<equationOfState>
     (
-        st,
-        ct1.nMoles()/st.nMoles()*ct1.Cv_ - ct2.nMoles()/st.nMoles()*ct2.Cv_,
-        ct1.nMoles()/st.nMoles()*ct1.Hf_ - ct2.nMoles()/st.nMoles()*ct2.Hf_
+        eofs,
+        ct1.nMoles()/eofs.nMoles()*ct1.Cv_
+      - ct2.nMoles()/eofs.nMoles()*ct2.Cv_,
+        ct1.nMoles()/eofs.nMoles()*ct1.Hf_
+      - ct2.nMoles()/eofs.nMoles()*ct2.Hf_
     );
 }
 
 
-inline Foam::eConstThermo Foam::operator*
+template<class equationOfState>
+inline Foam::eConstThermo<equationOfState> Foam::operator*
 (
     const scalar s,
-    const eConstThermo& ct
+    const eConstThermo<equationOfState>& ct
 )
 {
-    return eConstThermo
+    return eConstThermo<equationOfState>
     (
-        s*((const specieThermo&)ct),
+        s*static_cast<const equationOfState&>(ct),
         ct.Cv_,
         ct.Hf_
     );
 }
 
 
-inline Foam::eConstThermo Foam::operator==
+template<class equationOfState>
+inline Foam::eConstThermo<equationOfState> Foam::operator==
 (
-    const eConstThermo& ct1,
-    const eConstThermo& ct2
+    const eConstThermo<equationOfState>& ct1,
+    const eConstThermo<equationOfState>& ct2
 )
 {
     return ct2 - ct1;
diff --git a/src/thermophysicalModels/specie/thermo/hConst/hConstThermo.H b/src/thermophysicalModels/specie/thermo/hConst/hConstThermo.H
index 2508f23c853d1d9756763ff29e76a2276f8965c3..c116c16203f3ae801214178fd54bc02cb7ec5a3d 100644
--- a/src/thermophysicalModels/specie/thermo/hConst/hConstThermo.H
+++ b/src/thermophysicalModels/specie/thermo/hConst/hConstThermo.H
@@ -122,7 +122,7 @@ public:
         //- Construct and return a clone
         inline autoPtr<hConstThermo> clone() const;
 
-        // Selector from Istream
+        //- Selector from Istream
         inline static autoPtr<hConstThermo> New(Istream& is);
 
 
diff --git a/src/thermophysicalModels/specie/thermo/hPolynomial/hPolynomialThermo.C b/src/thermophysicalModels/specie/thermo/hPolynomial/hPolynomialThermo.C
new file mode 100644
index 0000000000000000000000000000000000000000..294a96005a397a24e43c2e87d9643083aa90bb5a
--- /dev/null
+++ b/src/thermophysicalModels/specie/thermo/hPolynomial/hPolynomialThermo.C
@@ -0,0 +1,69 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "hPolynomialThermo.H"
+#include "IOstreams.H"
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template<class EquationOfState, int PolySize>
+Foam::hPolynomialThermo<EquationOfState, PolySize>::hPolynomialThermo(Istream& is)
+:
+    EquationOfState(is),
+    Hf_(readScalar(is)),
+    Sf_(readScalar(is)),
+    cpPolynomial_("cpPolynomial", is),
+    dhPolynomial_("dhPolynomial", cpPolynomial_.integrate()),
+    sPolynomial_("sPolynomial", cpPolynomial_.integrateMinus1())
+{}
+
+
+// * * * * * * * * * * * * * * * Ostream Operator  * * * * * * * * * * * * * //
+
+template<class EquationOfState, int PolySize>
+Foam::Ostream& Foam::operator<<
+(
+    Ostream& os,
+    const hPolynomialThermo<EquationOfState, PolySize>& pt
+)
+{
+    os  << static_cast<const EquationOfState&>(pt) << tab
+        << pt.Hf_ << tab
+        << pt.Sf_ << tab
+        << pt.cpPolynomial_ << tab
+        << pt.dhPolynomial_ << tab
+        << pt.sPolynomial;
+
+    os.check
+    (
+        "operator<<(Ostream& os, const hPolynomialThermo<EquationOfState>& pt)"
+    );
+
+    return os;
+}
+
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/specie/thermo/hPolynomial/hPolynomialThermo.H b/src/thermophysicalModels/specie/thermo/hPolynomial/hPolynomialThermo.H
new file mode 100644
index 0000000000000000000000000000000000000000..ec3c752f24bc7273dfd7b9460f7429fd6018b603
--- /dev/null
+++ b/src/thermophysicalModels/specie/thermo/hPolynomial/hPolynomialThermo.H
@@ -0,0 +1,221 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::hPolynomialThermo
+
+Description
+    Thermodynamics package templated on the equation of state, using polynomial
+    functions for cp, h and s
+
+    Polynomials for h and s derived from cp
+
+SourceFiles
+    hPolynomialThermoI.H
+    hPolynomialThermo.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef hPolynomialThermo_H
+#define hPolynomialThermo_H
+
+#include "scalar.H"
+#include "Polynomial.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+// Forward declaration of friend functions and operators
+
+template<class EquationOfState, int PolySize>
+class hPolynomialThermo;
+
+template<class EquationOfState, int PolySize>
+inline hPolynomialThermo<EquationOfState, PolySize> operator+
+(
+    const hPolynomialThermo<EquationOfState, PolySize>&,
+    const hPolynomialThermo<EquationOfState, PolySize>&
+);
+
+template<class EquationOfState, int PolySize>
+inline hPolynomialThermo<EquationOfState, PolySize> operator-
+(
+    const hPolynomialThermo<EquationOfState, PolySize>&,
+    const hPolynomialThermo<EquationOfState, PolySize>&
+);
+
+template<class EquationOfState, int PolySize>
+inline hPolynomialThermo<EquationOfState, PolySize> operator*
+(
+    const scalar,
+    const hPolynomialThermo<EquationOfState, PolySize>&
+);
+
+template<class EquationOfState, int PolySize>
+inline hPolynomialThermo<EquationOfState, PolySize> operator==
+(
+    const hPolynomialThermo<EquationOfState, PolySize>&,
+    const hPolynomialThermo<EquationOfState, PolySize>&
+);
+
+template<class EquationOfState, int PolySize>
+Ostream& operator<<
+(
+    Ostream&,
+    const hPolynomialThermo<EquationOfState, PolySize>&
+);
+
+
+/*---------------------------------------------------------------------------*\
+                      Class hPolynomialThermo Declaration
+\*---------------------------------------------------------------------------*/
+
+template<class EquationOfState, int PolySize>
+class hPolynomialThermo
+:
+    public EquationOfState
+{
+    // Private data
+
+        //- Heat of formation [J/kg]
+        scalar Hf_;
+
+        //- Standard entropy [J/(kg.K)]
+        scalar Sf_;
+
+        //- Specific heat at constant pressure
+        Polynomial<PolySize> cpPolynomial_;
+
+        //- Enthalpy - derived from cp
+        typename Polynomial<PolySize>::intPolyType dhPolynomial_;
+
+        //- Entropy - derived from cp
+        Polynomial<PolySize> sPolynomial_;
+
+
+    // Private member functions
+
+        //- Construct from components
+        inline hPolynomialThermo
+        (
+            const EquationOfState& pt,
+            const scalar Hf,
+            const scalar Sf,
+            const Polynomial<PolySize>& cpPoly,
+            const typename Polynomial<PolySize>::intPolyType& hPoly,
+            const Polynomial<PolySize>& sPoly
+        );
+
+
+public:
+
+    // Constructors
+
+        //- Construct from dictionary
+        hPolynomialThermo(Istream& is);
+
+        //- Construct as a named copy
+        inline hPolynomialThermo(const word&, const hPolynomialThermo&);
+
+
+    // Member Functions
+
+        //- Heat capacity at constant pressure [J/(kmol K)]
+        inline scalar cp(const scalar T) const;
+
+        //- Enthalpy [J/kmol]
+        inline scalar h(const scalar T) const;
+
+        //- Sensible enthalpy [J/kmol]
+        inline scalar hs(const scalar T) const;
+
+        //- Chemical enthalpy [J/kmol]
+        inline scalar hc() const;
+
+        //- Entropy [J/(kmol K)]
+        inline scalar s(const scalar T) const;
+
+
+    // Member operators
+
+        inline void operator+=(const hPolynomialThermo&);
+        inline void operator-=(const hPolynomialThermo&);
+
+
+    // Friend operators
+
+        friend hPolynomialThermo operator+ <EquationOfState, PolySize>
+        (
+            const hPolynomialThermo&,
+            const hPolynomialThermo&
+        );
+
+        friend hPolynomialThermo operator- <EquationOfState, PolySize>
+        (
+            const hPolynomialThermo&,
+            const hPolynomialThermo&
+        );
+
+        friend hPolynomialThermo operator* <EquationOfState, PolySize>
+        (
+            const scalar,
+            const hPolynomialThermo&
+        );
+
+        friend hPolynomialThermo operator== <EquationOfState, PolySize>
+        (
+            const hPolynomialThermo&,
+            const hPolynomialThermo&
+        );
+
+
+    // Ostream Operator
+
+        friend Ostream& operator<< <EquationOfState, PolySize>
+        (
+            Ostream&,
+            const hPolynomialThermo&
+        );
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "hPolynomialThermoI.H"
+
+#ifdef NoRepository
+#   include "hPolynomialThermo.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/specie/thermo/hPolynomial/hPolynomialThermoI.H b/src/thermophysicalModels/specie/thermo/hPolynomial/hPolynomialThermoI.H
new file mode 100644
index 0000000000000000000000000000000000000000..1382c6f3ecea86c65370e60741630ad03d3eabab
--- /dev/null
+++ b/src/thermophysicalModels/specie/thermo/hPolynomial/hPolynomialThermoI.H
@@ -0,0 +1,249 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "hPolynomialThermo.H"
+
+// * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
+
+template<class EquationOfState, int PolySize>
+inline Foam::hPolynomialThermo<EquationOfState, PolySize>::hPolynomialThermo
+(
+    const EquationOfState& pt,
+    const scalar Hf,
+    const scalar Sf,
+    const Polynomial<PolySize>& cpPoly,
+    const typename Polynomial<PolySize>::intPolyType& dhPoly,
+    const Polynomial<PolySize>& sPoly
+)
+:
+    EquationOfState(pt),
+    Hf_(Hf),
+    Sf_(Sf),
+    cpPolynomial_(cpPoly),
+    dhPolynomial_(dhPoly),
+    sPolynomial_(sPoly)
+{}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template<class EquationOfState, int PolySize>
+inline Foam::hPolynomialThermo<EquationOfState, PolySize>::hPolynomialThermo
+(
+    const word& name,
+    const hPolynomialThermo& pt
+)
+:
+    EquationOfState(name, pt),
+    Hf_(pt.Hf_),
+    Sf_(pt.Sf_),
+    cpPolynomial_(pt.cpPolynomial_),
+    dhPolynomial_(pt.dhPolynomial_),
+    sPolynomial_(pt.sPolynomial_)
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+template<class EquationOfState, int PolySize>
+inline Foam::scalar Foam::hPolynomialThermo<EquationOfState, PolySize>::cp
+(
+    const scalar T
+) const
+{
+    return cpPolynomial_.evaluate(T)*this->W();
+}
+
+
+template<class EquationOfState, int PolySize>
+inline Foam::scalar Foam::hPolynomialThermo<EquationOfState, PolySize>::h
+(
+    const scalar T
+) const
+{
+    return (dhPolynomial_.evaluate(T) + Hf_)*this->W();
+}
+
+
+template<class EquationOfState, int PolySize>
+inline Foam::scalar Foam::hPolynomialThermo<EquationOfState, PolySize>::hs
+(
+    const scalar T
+) const
+{
+    return dhPolynomial_.evaluate(T)*this->W();
+}
+
+
+template<class EquationOfState, int PolySize>
+inline Foam::scalar Foam::hPolynomialThermo<EquationOfState, PolySize>::hc()
+const
+{
+    return Hf_*this->W();
+}
+
+
+template<class EquationOfState, int PolySize>
+inline Foam::scalar Foam::hPolynomialThermo<EquationOfState, PolySize>::s
+(
+    const scalar T
+) const
+{
+    return (sPolynomial_.evaluate(T) + Sf_)*this->W();
+}
+
+
+// * * * * * * * * * * * * * * * Member Operators  * * * * * * * * * * * * * //
+
+template<class EquationOfState, int PolySize>
+inline void Foam::hPolynomialThermo<EquationOfState, PolySize>::operator+=
+(
+    const hPolynomialThermo<EquationOfState, PolySize>& pt
+)
+{
+    scalar molr1 = this->nMoles();
+
+    EquationOfState::operator+=(pt);
+
+    molr1 /= this->nMoles();
+    scalar molr2 = pt.nMoles()/this->nMoles();
+
+    Hf_ = molr1*Hf_ + molr2*pt.Hf_;
+    Sf_ = molr1*Sf_ + molr2*pt.Sf_;
+    cpPolynomial_ = molr1*cpPolynomial_ + molr2*pt.cpPolynomial_;
+    dhPolynomial_ = molr1*dhPolynomial_ + molr2*pt.dhPolynomial_;
+    sPolynomial_ = molr1*sPolynomial_ + molr2*pt.sPolynomial_;
+}
+
+
+template<class EquationOfState, int PolySize>
+inline void Foam::hPolynomialThermo<EquationOfState, PolySize>::operator-=
+(
+    const hPolynomialThermo<EquationOfState, PolySize>& pt
+)
+{
+    scalar molr1 = this->nMoles();
+
+    EquationOfState::operator-=(pt);
+
+    molr1 /= this->nMoles();
+    scalar molr2 = pt.nMoles()/this->nMoles();
+
+    Hf_ = molr1*Hf_ - molr2*pt.Hf_;
+    Sf_ = molr1*Hf_ - molr2*pt.Sf_;
+    cpPolynomial_ = molr1*cpPolynomial_ - molr2*pt.cpPolynomial_;
+    dhPolynomial_ = molr1*dhPolynomial_ - molr2*pt.dhPolynomial_;
+    sPolynomial_ = molr1*sPolynomial_ - molr2*pt.sPolynomial_;
+}
+
+
+// * * * * * * * * * * * * * * * Friend Operators  * * * * * * * * * * * * * //
+
+template<class EquationOfState, int PolySize>
+inline Foam::hPolynomialThermo<EquationOfState, PolySize> Foam::operator+
+(
+    const hPolynomialThermo<EquationOfState, PolySize>& pt1,
+    const hPolynomialThermo<EquationOfState, PolySize>& pt2
+)
+{
+    EquationOfState eofs
+    (
+        static_cast<const EquationOfState&>(pt1)
+      + static_cast<const EquationOfState&>(pt2)
+    );
+
+    scalar molr1 = pt1.nMoles()/eofs.nMoles();
+    scalar molr2 = pt2.nMoles()/eofs.nMoles();
+    return hPolynomialThermo<EquationOfState, PolySize>
+    (
+        eofs,
+        molr1*pt1.Hf_ + molr2*pt2.Hf_,
+        molr1*pt1.Sf_ + molr2*pt2.Sf_,
+        molr1*pt1.cpPolynomial_ + molr2*pt2.cpPolynomial_,
+        molr1*pt1.dhPolynomial_ + molr2*pt2.dhPolynomial_,
+        molr1*pt1.sPolynomial_ + molr2*pt2.sPolynomial_
+    );
+}
+
+
+template<class EquationOfState, int PolySize>
+inline Foam::hPolynomialThermo<EquationOfState, PolySize> Foam::operator-
+(
+    const hPolynomialThermo<EquationOfState, PolySize>& pt1,
+    const hPolynomialThermo<EquationOfState, PolySize>& pt2
+)
+{
+    EquationOfState eofs
+    (
+        static_cast<const EquationOfState&>(pt1)
+      - static_cast<const EquationOfState&>(pt2)
+    );
+
+    scalar molr1 = pt1.nMoles()/eofs.nMoles();
+    scalar molr2 = pt2.nMoles()/eofs.nMoles();
+    return hPolynomialThermo<EquationOfState, PolySize>
+    (
+        eofs,
+        molr1*pt1.Hf_ - molr2*pt2.Hf_,
+        molr1*pt1.Sf_ - molr2*pt2.Sf_,
+        molr1*pt1.cpPolynomial_ - molr2*pt2.cpPolynomial_,
+        molr1*pt1.dhPolynomial_ - molr2*pt2.dhPolynomial_,
+        molr1*pt1.sPolynomial_ - molr2*pt2.sPolynomial_
+    );
+}
+
+
+template<class EquationOfState, int PolySize>
+inline Foam::hPolynomialThermo<EquationOfState, PolySize> Foam::operator*
+(
+    const scalar s,
+    const hPolynomialThermo<EquationOfState, PolySize>& pt
+)
+{
+    return hPolynomialThermo<EquationOfState, PolySize>
+    (
+        s*static_cast<const EquationOfState&>(pt),
+        pt.Hf_,
+        pt.Sf_,
+        pt.cpPolynomial_,
+        pt.dhPolynomial_,
+        pt.sPolynomial_
+    );
+}
+
+
+template<class EquationOfState, int PolySize>
+inline Foam::hPolynomialThermo<EquationOfState, PolySize> Foam::operator==
+(
+    const hPolynomialThermo<EquationOfState, PolySize>& pt1,
+    const hPolynomialThermo<EquationOfState, PolySize>& pt2
+)
+{
+    return pt2 - pt1;
+}
+
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/specie/transport/polynomial/polynomialTransport.C b/src/thermophysicalModels/specie/transport/polynomial/polynomialTransport.C
new file mode 100644
index 0000000000000000000000000000000000000000..2744d4a97990960136447bbbda36ab1408c92def
--- /dev/null
+++ b/src/thermophysicalModels/specie/transport/polynomial/polynomialTransport.C
@@ -0,0 +1,65 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "polynomialTransport.H"
+#include "IOstreams.H"
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template<class Thermo, int PolySize>
+Foam::polynomialTransport<Thermo, PolySize>::polynomialTransport(Istream& is)
+:
+    Thermo(is),
+    muPolynomial_("muPolynomial", is),
+    kappaPolynomial_("kappaPolynomial", is)
+{}
+
+
+// * * * * * * * * * * * * * * * IOstream Operators  * * * * * * * * * * * * //
+
+template<class Thermo, int PolySize>
+Foam::Ostream& Foam::operator<<
+(
+    Ostream& os,
+    const polynomialTransport<Thermo, PolySize>& pt
+)
+{
+    os << static_cast<const Thermo&>(pt);
+
+    os.check
+    (
+        "Ostream& operator<<"
+        "("
+            "Ostream&, "
+            "const polynomialTransport<Thermo, PolySize>&"
+        ")"
+    );
+
+    return os;
+}
+
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/specie/transport/polynomial/polynomialTransport.H b/src/thermophysicalModels/specie/transport/polynomial/polynomialTransport.H
new file mode 100644
index 0000000000000000000000000000000000000000..3ab3879e64a203ac3915828d4bb667a1172b7443
--- /dev/null
+++ b/src/thermophysicalModels/specie/transport/polynomial/polynomialTransport.H
@@ -0,0 +1,206 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::polynomialTransport
+
+Description
+    Transport package using polynomial functions for mu and kappa
+
+SourceFiles
+    polynomialTransportI.H
+    polynomialTransport.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef polynomialTransport_H
+#define polynomialTransport_H
+
+#include "Polynomial.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+// Forward declaration of friend functions and operators
+
+template<class Thermo, int PolySize> class polynomialTransport;
+
+template<class Thermo, int PolySize>
+inline polynomialTransport<Thermo, PolySize> operator+
+(
+    const polynomialTransport<Thermo, PolySize>&,
+    const polynomialTransport<Thermo, PolySize>&
+);
+
+template<class Thermo, int PolySize>
+inline polynomialTransport<Thermo, PolySize> operator-
+(
+    const polynomialTransport<Thermo, PolySize>&,
+    const polynomialTransport<Thermo, PolySize>&
+);
+
+template<class Thermo, int PolySize>
+inline polynomialTransport<Thermo, PolySize> operator*
+(
+    const scalar,
+    const polynomialTransport<Thermo, PolySize>&
+);
+
+template<class Thermo, int PolySize>
+inline polynomialTransport<Thermo, PolySize> operator==
+(
+    const polynomialTransport<Thermo, PolySize>&,
+    const polynomialTransport<Thermo, PolySize>&
+);
+
+template<class Thermo, int PolySize>
+Ostream& operator<<
+(
+    Ostream&,
+    const polynomialTransport<Thermo, PolySize>&
+);
+
+
+/*---------------------------------------------------------------------------*\
+                     Class polynomialTransport Declaration
+\*---------------------------------------------------------------------------*/
+
+template<class Thermo, int PolySize>
+class polynomialTransport
+:
+    public Thermo
+{
+    // Private data
+
+        //- Dynamic viscosity
+        Polynomial<PolySize> muPolynomial_;
+
+        //- Thermal conductivity
+        Polynomial<PolySize> kappaPolynomial_;
+
+
+    // Private member functions
+
+        //- Construct from components
+        inline polynomialTransport
+        (
+            const Thermo& t,
+            const Polynomial<PolySize>& muPoly,
+            const Polynomial<PolySize>& kappaPoly
+        );
+
+
+public:
+
+    // Constructors
+
+        //- Construct as named copy
+        inline polynomialTransport(const word&, const polynomialTransport&);
+
+        //- Construct from Istream
+        polynomialTransport(Istream& is);
+
+        //- Construct and return a clone
+        inline autoPtr<polynomialTransport> clone() const;
+
+        // Selector from Istream
+        inline static autoPtr<polynomialTransport> New(Istream& is);
+
+
+    // Member functions
+
+        //- Dynamic viscosity [kg/ms]
+        inline scalar mu(const scalar T) const;
+
+        //- Thermal conductivity [W/mK]
+        inline scalar kappa(const scalar T) const;
+
+        //- Thermal diffusivity for enthalpy [kg/ms]
+        inline scalar alpha(const scalar T) const;
+
+        // Species diffusivity
+        //inline scalar D(const scalar T) const;
+
+
+    // Member operators
+
+        inline polynomialTransport& operator=(const polynomialTransport&);
+
+
+    // Friend operators
+
+        friend polynomialTransport operator+ <Thermo, PolySize>
+        (
+            const polynomialTransport&,
+            const polynomialTransport&
+        );
+
+        friend polynomialTransport operator- <Thermo, PolySize>
+        (
+            const polynomialTransport&,
+            const polynomialTransport&
+        );
+
+        friend polynomialTransport operator* <Thermo, PolySize>
+        (
+            const scalar,
+            const polynomialTransport&
+        );
+
+        friend polynomialTransport operator== <Thermo, PolySize>
+        (
+            const polynomialTransport&,
+            const polynomialTransport&
+        );
+
+
+    // Ostream Operator
+
+        friend Ostream& operator<< <Thermo, PolySize>
+        (
+            Ostream&,
+            const polynomialTransport&
+        );
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "polynomialTransportI.H"
+
+#ifdef NoRepository
+#   include "polynomialTransport.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/specie/transport/polynomial/polynomialTransportI.H b/src/thermophysicalModels/specie/transport/polynomial/polynomialTransportI.H
new file mode 100644
index 0000000000000000000000000000000000000000..9e6e00e6e3c603146007caa7866e2e9aaf6751b1
--- /dev/null
+++ b/src/thermophysicalModels/specie/transport/polynomial/polynomialTransportI.H
@@ -0,0 +1,213 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2008-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "specie.H"
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template<class Thermo, int PolySize>
+inline Foam::polynomialTransport<Thermo, PolySize>::polynomialTransport
+(
+    const Thermo& t,
+    const Polynomial<PolySize>& muPoly,
+    const Polynomial<PolySize>& kappaPoly
+)
+:
+    Thermo(t),
+    muPolynomial_(muPoly),
+    kappaPolynomial_(kappaPoly)
+{}
+
+
+template<class Thermo, int PolySize>
+inline Foam::polynomialTransport<Thermo, PolySize>::polynomialTransport
+(
+    const word& name,
+    const polynomialTransport& pt
+)
+:
+    Thermo(name, pt),
+    muPolynomial_(pt.muPolynomial_),
+    kappaPolynomial_(pt.kappaPolynomial_)
+{}
+
+
+template<class Thermo, int PolySize>
+inline Foam::autoPtr<Foam::polynomialTransport<Thermo, PolySize> >
+Foam::polynomialTransport<Thermo, PolySize>::clone() const
+{
+    return autoPtr<polynomialTransport<Thermo, PolySize> >
+    (
+        new polynomialTransport<Thermo, PolySize>(*this)
+    );
+}
+
+
+template<class Thermo, int PolySize>
+inline Foam::autoPtr<Foam::polynomialTransport<Thermo, PolySize> >
+Foam::polynomialTransport<Thermo, PolySize>::New(Istream& is)
+{
+    return autoPtr<polynomialTransport<Thermo, PolySize> >
+    (
+        new polynomialTransport<Thermo, PolySize>(is)
+    );
+}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+template<class Thermo, int PolySize>
+inline Foam::scalar Foam::polynomialTransport<Thermo, PolySize>::mu
+(
+    const scalar T
+) const
+{
+    return muPolynomial_.evaluate(T);
+}
+
+
+template<class Thermo, int PolySize>
+inline Foam::scalar Foam::polynomialTransport<Thermo, PolySize>::kappa
+(
+    const scalar T
+) const
+{
+    return kappaPolynomial_.evaluate(T);
+}
+
+
+template<class Thermo, int PolySize>
+inline Foam::scalar Foam::polynomialTransport<Thermo, PolySize>::alpha
+(
+    const scalar T
+) const
+{
+    scalar deltaT = T - specie::Tstd;
+    scalar CpBar =
+        (deltaT*(this->H(T) - this->H(specie::Tstd)) + this->Cp(T))
+       /(sqr(deltaT) + 1);
+
+    return kappa(T)/CpBar;
+}
+
+
+// * * * * * * * * * * * * * * * Member Operators  * * * * * * * * * * * * * //
+
+template<class Thermo, int PolySize>
+inline Foam::polynomialTransport<Thermo, PolySize>&
+Foam::polynomialTransport<Thermo, PolySize>::operator=
+(
+    const polynomialTransport<Thermo, PolySize>& pt
+)
+{
+    Thermo::operator=(pt);
+
+    muPolynomial_ = pt.muPolynomial_;
+    kappaPolynomial_ = pt.kappaPolynomial_;
+
+    return *this;
+}
+
+
+// * * * * * * * * * * * * * * * Friend Operators  * * * * * * * * * * * * * //
+
+template<class Thermo, int PolySize>
+inline Foam::polynomialTransport<Thermo, PolySize> Foam::operator+
+(
+    const polynomialTransport<Thermo, PolySize>& pt1,
+    const polynomialTransport<Thermo, PolySize>& pt2
+)
+{
+    Thermo t
+    (
+        static_cast<const Thermo&>(pt1) + static_cast<const Thermo&>(pt2)
+    );
+
+
+    scalar molr1 = pt1.nMoles()/t.nMoles();
+    scalar molr2 = pt2.nMoles()/t.nMoles();
+
+    return polynomialTransport<Thermo, PolySize>
+    (
+        t,
+        molr1*pt1.muPolynomial_ + molr2*pt2.muPolynomial_,
+        molr1*pt1.kappaPolynomial_ + molr2*pt2.kappaPolynomial_
+    );
+}
+
+
+template<class Thermo, int PolySize>
+inline Foam::polynomialTransport<Thermo, PolySize> Foam::operator-
+(
+    const polynomialTransport<Thermo, PolySize>& pt1,
+    const polynomialTransport<Thermo, PolySize>& pt2
+)
+{
+    Thermo t
+    (
+        static_cast<const Thermo&>(pt1) - static_cast<const Thermo&>(pt2)
+    );
+
+    scalar molr1 = pt1.nMoles()/t.nMoles();
+    scalar molr2 = pt2.nMoles()/t.nMoles();
+
+    return polynomialTransport<Thermo, PolySize>
+    (
+        t,
+        molr1*pt1.muPolynomial_ - molr2*pt2.muPolynomial_,
+        molr1*pt1.kappaPolynomial_ - molr2*pt2.kappaPolynomial_
+    );
+}
+
+
+template<class Thermo, int PolySize>
+inline Foam::polynomialTransport<Thermo, PolySize> Foam::operator*
+(
+    const scalar s,
+    const polynomialTransport<Thermo, PolySize>& pt
+)
+{
+    return polynomialTransport<Thermo, PolySize>
+    (
+        s*static_cast<const Thermo&>(pt),
+        pt.muPolynomial_,
+        pt.kappaPolynomial_
+    );
+}
+
+
+template<class Thermo, int PolySize>
+inline Foam::polynomialTransport<Thermo, PolySize> Foam::operator==
+(
+    const polynomialTransport<Thermo, PolySize>& pt1,
+    const polynomialTransport<Thermo, PolySize>& pt2
+)
+{
+    return pt2 - pt1;
+}
+
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/thermophysicalFunctions/APIfunctions/APIdiffCoefFunc/APIdiffCoefFunc.H b/src/thermophysicalModels/thermophysicalFunctions/APIfunctions/APIdiffCoefFunc/APIdiffCoefFunc.H
index b24d250d49b52285b56fe398d1e4d6e5bf60e019..7f95e450e3e205d506c1d1dd9af1384a8c66c83a 100644
--- a/src/thermophysicalModels/thermophysicalFunctions/APIfunctions/APIdiffCoefFunc/APIdiffCoefFunc.H
+++ b/src/thermophysicalModels/thermophysicalFunctions/APIfunctions/APIdiffCoefFunc/APIdiffCoefFunc.H
@@ -47,7 +47,7 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                           Class APIdiffCoefFunc Declaration
+                      Class APIdiffCoefFunc Declaration
 \*---------------------------------------------------------------------------*/
 
 class APIdiffCoefFunc
@@ -59,6 +59,9 @@ class APIdiffCoefFunc
         // API vapour mass diffusivity function coefficients
         scalar a_, b_, wf_, wa_;
 
+        // Helper variables
+        scalar alpha_, beta_;
+
 
 public:
 
@@ -74,7 +77,9 @@ public:
             a_(a),
             b_(b),
             wf_(wf),
-            wa_(wa)
+            wa_(wa),
+            alpha_(sqrt(1/wf_ + 1/wa_)),
+            beta_(sqr((cbrt(a_) + cbrt(b_))))
         {}
 
         //- Construct from Istream
@@ -83,21 +88,21 @@ public:
             a_(readScalar(is)),
             b_(readScalar(is)),
             wf_(readScalar(is)),
-            wa_(readScalar(is))
+            wa_(readScalar(is)),
+            alpha_(sqrt(1/wf_ + 1/wa_)),
+            beta_(sqr((cbrt(a_) + cbrt(b_))))
         {}
 
 
     // Member Functions
 
-        //- API vapour mass diffusivity function
+        //- API vapour mass diffusivity function using properties from
+        //  construction
         scalar f(scalar p, scalar T) const
         {
-            return
-               3.6059e-3*(pow(1.8*T, 1.75))*sqrt(1/wf_ + 1/wa_)
-               /(p*sqr((cbrt(a_) + cbrt(b_))));
+            return 3.6059e-3*(pow(1.8*T, 1.75))*alpha_/(p*beta_);
         }
 
-
         //- Write the function coefficients
         void writeData(Ostream& os) const
         {
diff --git a/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/wallFunctions/mutWallFunctions/mutRoughWallFunction/mutRoughWallFunctionFvPatchScalarField.C b/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/wallFunctions/mutWallFunctions/mutRoughWallFunction/mutRoughWallFunctionFvPatchScalarField.C
index 38a275aeb573e2603e2418bcf1b342397b350a80..a6b699d20d6fda74edceb157834b4f392049bce4 100644
--- a/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/wallFunctions/mutWallFunctions/mutRoughWallFunction/mutRoughWallFunctionFvPatchScalarField.C
+++ b/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/wallFunctions/mutWallFunctions/mutRoughWallFunction/mutRoughWallFunctionFvPatchScalarField.C
@@ -45,25 +45,23 @@ namespace RASModels
 scalar mutRoughWallFunctionFvPatchScalarField::fnRough
 (
     const scalar KsPlus,
-    const scalar Cs,
-    const scalar kappa
+    const scalar Cs
 ) const
 {
-    // Set deltaB based on non-dimensional roughness height
-    scalar deltaB = 0.0;
+    // Return fn based on non-dimensional roughness height
+
     if (KsPlus < 90.0)
     {
-        deltaB =
-            1.0/kappa
-            *log((KsPlus - 2.25)/87.75 + Cs*KsPlus)
-            *sin(0.4258*(log(KsPlus) - 0.811));
+        return pow
+        (
+            (KsPlus - 2.25)/87.75 + Cs*KsPlus,
+            sin(0.4258*(log(KsPlus) - 0.811))
+        );
     }
     else
     {
-        deltaB = 1.0/kappa*log(1.0 + Cs*KsPlus);
+        return (1.0 + Cs*KsPlus);
     }
-
-    return exp(min(deltaB*kappa, 50.0));
 }
 
 
@@ -216,8 +214,8 @@ void mutRoughWallFunctionFvPatchScalarField::updateCoeffs()
         scalar yPlusLamNew = yPlusLam;
         if (KsPlus > 2.25)
         {
-            Edash = E/fnRough(KsPlus, Cs_[faceI], kappa);
-            yPlusLam = rasModel.yPlusLam(kappa, Edash);
+            Edash = E/fnRough(KsPlus, Cs_[faceI]);
+            yPlusLamNew = rasModel.yPlusLam(kappa, Edash);
         }
 
         if (debug)
@@ -231,7 +229,9 @@ void mutRoughWallFunctionFvPatchScalarField::updateCoeffs()
 
         if (yPlus > yPlusLamNew)
         {
-            mutw[faceI] = muw[faceI]*(yPlus*kappa/log(Edash*yPlus) - 1);
+            mutw[faceI] =
+                muw[faceI]
+               *(yPlus*kappa/log(max(Edash*yPlus, 1+1e-4)) - 1);
         }
         else
         {
diff --git a/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/wallFunctions/mutWallFunctions/mutRoughWallFunction/mutRoughWallFunctionFvPatchScalarField.H b/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/wallFunctions/mutWallFunctions/mutRoughWallFunction/mutRoughWallFunctionFvPatchScalarField.H
index 88209f4184e215053badbfe174afd321ff03f801..b12ad6bc5765937ccb7226bb9580f9605fa91b6a 100644
--- a/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/wallFunctions/mutWallFunctions/mutRoughWallFunction/mutRoughWallFunctionFvPatchScalarField.H
+++ b/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/wallFunctions/mutWallFunctions/mutRoughWallFunction/mutRoughWallFunctionFvPatchScalarField.H
@@ -83,12 +83,7 @@ class mutRoughWallFunctionFvPatchScalarField
     // Private member functions
 
         //- Compute the roughness function
-        scalar fnRough
-        (
-            const scalar KsPlus,
-            const scalar Cs,
-            const scalar kappa
-        ) const;
+        scalar fnRough(const scalar KsPlus, const scalar Cs) const;
 
 
 public:
diff --git a/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutRoughWallFunction/nutRoughWallFunctionFvPatchScalarField.C b/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutRoughWallFunction/nutRoughWallFunctionFvPatchScalarField.C
index 7b6e14493e85f1d27cdf8d7e8a16a46606c82f69..afb08a5d52320014e214532e6da48e6ebaad1a90 100644
--- a/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutRoughWallFunction/nutRoughWallFunctionFvPatchScalarField.C
+++ b/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutRoughWallFunction/nutRoughWallFunctionFvPatchScalarField.C
@@ -45,8 +45,7 @@ namespace RASModels
 scalar nutRoughWallFunctionFvPatchScalarField::fnRough
 (
     const scalar KsPlus,
-    const scalar Cs,
-    const scalar kappa
+    const scalar Cs
 ) const
 {
     // Return fn based on non-dimensional roughness height
@@ -205,7 +204,7 @@ void nutRoughWallFunctionFvPatchScalarField::updateCoeffs()
 
         if (KsPlus > 2.25)
         {
-            Edash = E/fnRough(KsPlus, Cs_[faceI], kappa);
+            Edash = E/fnRough(KsPlus, Cs_[faceI]);
         }
 
         if (yPlus > yPlusLam)
diff --git a/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutRoughWallFunction/nutRoughWallFunctionFvPatchScalarField.H b/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutRoughWallFunction/nutRoughWallFunctionFvPatchScalarField.H
index 968c5c3f8f86612779651182cc3a6f733dd1ec92..3371cbaa6d396ccdcb7ef8aec11ca662c10882f2 100644
--- a/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutRoughWallFunction/nutRoughWallFunctionFvPatchScalarField.H
+++ b/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutRoughWallFunction/nutRoughWallFunctionFvPatchScalarField.H
@@ -80,12 +80,7 @@ class nutRoughWallFunctionFvPatchScalarField
     // Private member functions
 
         //- Compute the roughness function
-        scalar fnRough
-        (
-            const scalar KsPlus,
-            const scalar Cs,
-            const scalar kappa
-        ) const;
+        scalar fnRough(const scalar KsPlus, const scalar Cs) const;
 
 
 public:
diff --git a/tutorials/basic/laplacianFoam/flange/constant/polyMesh/boundary b/tutorials/basic/laplacianFoam/flange/constant/polyMesh/boundary
index c2b732e0e5fed98ab4b4bcf7888c8641d7937efd..c97383b613a17960eeb1dc2e49141439c8e3c066 100644
--- a/tutorials/basic/laplacianFoam/flange/constant/polyMesh/boundary
+++ b/tutorials/basic/laplacianFoam/flange/constant/polyMesh/boundary
@@ -1,8 +1,8 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.5                                   |
-|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
 FoamFile
@@ -10,6 +10,7 @@ FoamFile
     version     2.0;
     format      ascii;
     class       polyBoundaryMesh;
+    location    "constant/polyMesh";
     object      boundary;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/basic/potentialFoam/cylinder/constant/polyMesh/boundary b/tutorials/basic/potentialFoam/cylinder/constant/polyMesh/boundary
index b336b81ded7aba0392e9febbdc15b3d7340d4ea7..057865c7ffa417ce9deaabef7ce0d5a894bc50fd 100644
--- a/tutorials/basic/potentialFoam/cylinder/constant/polyMesh/boundary
+++ b/tutorials/basic/potentialFoam/cylinder/constant/polyMesh/boundary
@@ -1,8 +1,8 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.5                                   |
-|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
 FoamFile
@@ -10,6 +10,7 @@ FoamFile
     version     2.0;
     format      ascii;
     class       polyBoundaryMesh;
+    location    "constant/polyMesh";
     object      boundary;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/basic/potentialFoam/pitzDaily/constant/polyMesh/boundary b/tutorials/basic/potentialFoam/pitzDaily/constant/polyMesh/boundary
index 8eb7d98937fcdab8a13949fd6bdc743a0928e6d0..313dcceba1abd7b93d57320c4c674f1734692506 100644
--- a/tutorials/basic/potentialFoam/pitzDaily/constant/polyMesh/boundary
+++ b/tutorials/basic/potentialFoam/pitzDaily/constant/polyMesh/boundary
@@ -1,8 +1,8 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.5                                   |
-|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
 FoamFile
@@ -10,46 +10,43 @@ FoamFile
     version     2.0;
     format      ascii;
     class       polyBoundaryMesh;
+    location    "constant/polyMesh";
     object      boundary;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 5
 (
-inlet
-{
-    type patch;
-    nFaces 30;
-    startFace 24170;
-}
-
-outlet
-{
-    type patch;
-    nFaces 57;
-    startFace 24200;
-}
-
-upperWall
-{
-    type wall;
-    nFaces 223;
-    startFace 24257;
-}
-
-lowerWall
-{
-    type wall;
-    nFaces 250;
-    startFace 24480;
-}
-
-frontAndBack
-{
-    type empty;
-    nFaces 24450;
-    startFace 24730;
-}
+    inlet
+    {
+        type            patch;
+        nFaces          30;
+        startFace       24170;
+    }
+    outlet
+    {
+        type            patch;
+        nFaces          57;
+        startFace       24200;
+    }
+    upperWall
+    {
+        type            wall;
+        nFaces          223;
+        startFace       24257;
+    }
+    lowerWall
+    {
+        type            wall;
+        nFaces          250;
+        startFace       24480;
+    }
+    frontAndBack
+    {
+        type            empty;
+        nFaces          24450;
+        startFace       24730;
+    }
 )
 
 // ************************************************************************* //
diff --git a/tutorials/basic/scalarTransportFoam/pitzDaily/constant/polyMesh/boundary b/tutorials/basic/scalarTransportFoam/pitzDaily/constant/polyMesh/boundary
index 8eb7d98937fcdab8a13949fd6bdc743a0928e6d0..313dcceba1abd7b93d57320c4c674f1734692506 100644
--- a/tutorials/basic/scalarTransportFoam/pitzDaily/constant/polyMesh/boundary
+++ b/tutorials/basic/scalarTransportFoam/pitzDaily/constant/polyMesh/boundary
@@ -1,8 +1,8 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.5                                   |
-|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
 FoamFile
@@ -10,46 +10,43 @@ FoamFile
     version     2.0;
     format      ascii;
     class       polyBoundaryMesh;
+    location    "constant/polyMesh";
     object      boundary;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 5
 (
-inlet
-{
-    type patch;
-    nFaces 30;
-    startFace 24170;
-}
-
-outlet
-{
-    type patch;
-    nFaces 57;
-    startFace 24200;
-}
-
-upperWall
-{
-    type wall;
-    nFaces 223;
-    startFace 24257;
-}
-
-lowerWall
-{
-    type wall;
-    nFaces 250;
-    startFace 24480;
-}
-
-frontAndBack
-{
-    type empty;
-    nFaces 24450;
-    startFace 24730;
-}
+    inlet
+    {
+        type            patch;
+        nFaces          30;
+        startFace       24170;
+    }
+    outlet
+    {
+        type            patch;
+        nFaces          57;
+        startFace       24200;
+    }
+    upperWall
+    {
+        type            wall;
+        nFaces          223;
+        startFace       24257;
+    }
+    lowerWall
+    {
+        type            wall;
+        nFaces          250;
+        startFace       24480;
+    }
+    frontAndBack
+    {
+        type            empty;
+        nFaces          24450;
+        startFace       24730;
+    }
 )
 
 // ************************************************************************* //
diff --git a/tutorials/Lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/0/epsilon b/tutorials/combustion/XiFoam/les/pitzDaily/0/alphaSgs
similarity index 81%
rename from tutorials/Lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/0/epsilon
rename to tutorials/combustion/XiFoam/les/pitzDaily/0/alphaSgs
index ec63ed16726be65c6d5561d1b31ab88fd3ef8581..9a83c0337ed2a698047bce788505fcaf4fd037eb 100644
--- a/tutorials/Lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/0/epsilon
+++ b/tutorials/combustion/XiFoam/les/pitzDaily/0/alphaSgs
@@ -10,37 +10,37 @@ FoamFile
     version     2.0;
     format      ascii;
     class       volScalarField;
-    object      epsilon;
+    object      alphaSgs;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-dimensions      [0 2 -3 0 0 0 0];
+dimensions      [1 -1 -1 0 0 0 0];
 
-internalField   uniform 5390.5;
+internalField   uniform 0;
 
 boundaryField
 {
-    top
+    inlet           
     {
         type            zeroGradient;
     }
 
-    bottom
+    outlet          
     {
         type            zeroGradient;
     }
 
-    walls
+    upperWall       
     {
         type            zeroGradient;
     }
 
-    symmetry
+    lowerWall       
     {
-        type            symmetryPlane;
+        type            zeroGradient;
     }
 
-    frontAndBack
+    frontAndBack    
     {
         type            empty;
     }
diff --git a/tutorials/combustion/XiFoam/les/pitzDaily/constant/polyMesh/boundary b/tutorials/combustion/XiFoam/les/pitzDaily/constant/polyMesh/boundary
index 8eb7d98937fcdab8a13949fd6bdc743a0928e6d0..313dcceba1abd7b93d57320c4c674f1734692506 100644
--- a/tutorials/combustion/XiFoam/les/pitzDaily/constant/polyMesh/boundary
+++ b/tutorials/combustion/XiFoam/les/pitzDaily/constant/polyMesh/boundary
@@ -1,8 +1,8 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.5                                   |
-|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
 FoamFile
@@ -10,46 +10,43 @@ FoamFile
     version     2.0;
     format      ascii;
     class       polyBoundaryMesh;
+    location    "constant/polyMesh";
     object      boundary;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 5
 (
-inlet
-{
-    type patch;
-    nFaces 30;
-    startFace 24170;
-}
-
-outlet
-{
-    type patch;
-    nFaces 57;
-    startFace 24200;
-}
-
-upperWall
-{
-    type wall;
-    nFaces 223;
-    startFace 24257;
-}
-
-lowerWall
-{
-    type wall;
-    nFaces 250;
-    startFace 24480;
-}
-
-frontAndBack
-{
-    type empty;
-    nFaces 24450;
-    startFace 24730;
-}
+    inlet
+    {
+        type            patch;
+        nFaces          30;
+        startFace       24170;
+    }
+    outlet
+    {
+        type            patch;
+        nFaces          57;
+        startFace       24200;
+    }
+    upperWall
+    {
+        type            wall;
+        nFaces          223;
+        startFace       24257;
+    }
+    lowerWall
+    {
+        type            wall;
+        nFaces          250;
+        startFace       24480;
+    }
+    frontAndBack
+    {
+        type            empty;
+        nFaces          24450;
+        startFace       24730;
+    }
 )
 
 // ************************************************************************* //
diff --git a/tutorials/combustion/XiFoam/les/pitzDaily3D/0/alphaSgs b/tutorials/combustion/XiFoam/les/pitzDaily3D/0/alphaSgs
new file mode 100644
index 0000000000000000000000000000000000000000..c5331748aea22d1d09e92cbd2d3387342f312a82
--- /dev/null
+++ b/tutorials/combustion/XiFoam/les/pitzDaily3D/0/alphaSgs
@@ -0,0 +1,49 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      alphaSgs;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -1 -1 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    inlet           
+    {
+        type            zeroGradient;
+    }
+
+    outlet          
+    {
+        type            zeroGradient;
+    }
+
+    upperWall       
+    {
+        type            zeroGradient;
+    }
+
+    lowerWall       
+    {
+        type            zeroGradient;
+    }
+
+    frontAndBack    
+    {
+        type            cyclic;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/combustion/XiFoam/Allclean b/tutorials/combustion/XiFoam/ras/Allclean
similarity index 100%
rename from tutorials/combustion/XiFoam/Allclean
rename to tutorials/combustion/XiFoam/ras/Allclean
diff --git a/tutorials/combustion/XiFoam/Allrun b/tutorials/combustion/XiFoam/ras/Allrun
similarity index 100%
rename from tutorials/combustion/XiFoam/Allrun
rename to tutorials/combustion/XiFoam/ras/Allrun
diff --git a/tutorials/combustion/dieselFoam/aachenBomb/0/alphat b/tutorials/combustion/dieselFoam/aachenBomb/0/alphat
index 2684dd73c822be130389cc925a29ebd9cb627ec0..c56c4724ce2969ef2ccaa17e5b3344125efc1596 100644
--- a/tutorials/combustion/dieselFoam/aachenBomb/0/alphat
+++ b/tutorials/combustion/dieselFoam/aachenBomb/0/alphat
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.5                                   |
+|  \\    /   O peration     | Version:  dev                                   |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
@@ -23,7 +23,7 @@ boundaryField
 {
     walls
     {
-        type            alphatWallFunction;
+        type            compressible::alphatWallFunction;
         value           uniform 0;
     }
 }
diff --git a/tutorials/combustion/dieselFoam/aachenBomb/0/epsilon b/tutorials/combustion/dieselFoam/aachenBomb/0/epsilon
index e9dd46eb33ab84ca1e8bab21d748bfc6f058750a..e38ed02784cfef654a658662ead0d66dd32c48a6 100644
--- a/tutorials/combustion/dieselFoam/aachenBomb/0/epsilon
+++ b/tutorials/combustion/dieselFoam/aachenBomb/0/epsilon
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.5                                   |
+|  \\    /   O peration     | Version:  dev                                   |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
@@ -23,7 +23,7 @@ boundaryField
 {
     walls
     {
-        type            epsilonWallFunction;
+        type            compressible::epsilonWallFunction;
         value           uniform 90;
     }
 }
diff --git a/tutorials/combustion/dieselFoam/aachenBomb/0/k b/tutorials/combustion/dieselFoam/aachenBomb/0/k
index 251a39ce81061432f904f98f80de677eb38ebce6..b037171c72f46447a17c3aa8a16e71f5ae3acc3b 100644
--- a/tutorials/combustion/dieselFoam/aachenBomb/0/k
+++ b/tutorials/combustion/dieselFoam/aachenBomb/0/k
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.5                                   |
+|  \\    /   O peration     | Version:  dev                                   |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
@@ -23,7 +23,7 @@ boundaryField
 {
     walls
     {
-        type            kQRWallFunction;
+        type            compressible::kQRWallFunction;
         value           uniform 1;
     }
 }
diff --git a/tutorials/combustion/dieselFoam/aachenBomb/0/mut b/tutorials/combustion/dieselFoam/aachenBomb/0/mut
index e687f9b8fa216ba2de2f97e045c11372525473ae..2750ce32ecd5ed962213674d95930ff9b34920c5 100644
--- a/tutorials/combustion/dieselFoam/aachenBomb/0/mut
+++ b/tutorials/combustion/dieselFoam/aachenBomb/0/mut
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.5                                   |
+|  \\    /   O peration     | Version:  dev                                   |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/combustion/dieselFoam/aachenBomb/constant/chemistryProperties b/tutorials/combustion/dieselFoam/aachenBomb/constant/chemistryProperties
index be340ec092624c3700ecdf023d551ed099f103da..72c8fd655e70457a8d5c5a2e6d71c6c8c111423e 100644
--- a/tutorials/combustion/dieselFoam/aachenBomb/constant/chemistryProperties
+++ b/tutorials/combustion/dieselFoam/aachenBomb/constant/chemistryProperties
@@ -15,9 +15,11 @@ FoamFile
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+psiChemistryModel ODEChemistryModel<gasThermoPhysics>;
+
 chemistry       off;
 
-chemistrySolver ODE;
+chemistrySolver ode;
 
 initialChemicalTimeStep 1e-07;
 
@@ -32,7 +34,7 @@ EulerImplicitCoeffs
     equilibriumRateLimiter off;
 }
 
-ODECoeffs
+odeCoeffs
 {
     ODESolver       SIBS;
     eps             0.05;
diff --git a/tutorials/combustion/dieselFoam/aachenBomb/constant/polyMesh/boundary b/tutorials/combustion/dieselFoam/aachenBomb/constant/polyMesh/boundary
index 2e94e303b70438668052b23280a41adea47a0dd4..5e28555623fa8687c821f1ff8ff76939fe33007a 100644
--- a/tutorials/combustion/dieselFoam/aachenBomb/constant/polyMesh/boundary
+++ b/tutorials/combustion/dieselFoam/aachenBomb/constant/polyMesh/boundary
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.5                                   |
+|  \\    /   O peration     | Version:  dev                                   |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/combustion/dieselFoam/aachenBomb/constant/thermophysicalProperties b/tutorials/combustion/dieselFoam/aachenBomb/constant/thermophysicalProperties
index 24238233850126a97429b47c579583a711ef9122..f94afe7312e74472fc63442c3c4e59e0c6794e81 100644
--- a/tutorials/combustion/dieselFoam/aachenBomb/constant/thermophysicalProperties
+++ b/tutorials/combustion/dieselFoam/aachenBomb/constant/thermophysicalProperties
@@ -15,7 +15,7 @@ FoamFile
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-thermoType      hMixtureThermo<reactingMixture>;
+thermoType      hPsiMixtureThermo<reactingMixture<gasThermoPhysics>>;
 
 CHEMKINFile     "$FOAM_CASE/chemkin/chem.inp";
 
diff --git a/tutorials/combustion/engineFoam/kivaTest/constant/polyMesh/boundary b/tutorials/combustion/engineFoam/kivaTest/constant/polyMesh/boundary
index 7a3a7294ecd5d61df7425180aabf09e9843da208..24684a3ecfde305ea8ba37ac041d8c3e75c1d87c 100644
--- a/tutorials/combustion/engineFoam/kivaTest/constant/polyMesh/boundary
+++ b/tutorials/combustion/engineFoam/kivaTest/constant/polyMesh/boundary
@@ -1,8 +1,8 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.5                                   |
-|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
 FoamFile
@@ -10,32 +10,31 @@ FoamFile
     version     2.0;
     format      ascii;
     class       polyBoundaryMesh;
+    location    "constant/polyMesh";
     object      boundary;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 3
 (
-piston
-{
-    type wall;
-    nFaces 1326;
-    startFace 79522;
-}
-
-liner
-{
-    type wall;
-    nFaces 2710;
-    startFace 80848;
-}
-
-cylinderHead
-{
-    type wall;
-    nFaces 2184;
-    startFace 83558;
-}
+    piston
+    {
+        type            wall;
+        nFaces          1326;
+        startFace       79522;
+    }
+    liner
+    {
+        type            wall;
+        nFaces          2710;
+        startFace       80848;
+    }
+    cylinderHead
+    {
+        type            wall;
+        nFaces          2184;
+        startFace       83558;
+    }
 )
 
 // ************************************************************************* //
diff --git a/tutorials/combustion/engineFoam/kivaTest/system/controlDict b/tutorials/combustion/engineFoam/kivaTest/system/controlDict
index 359d4d135af67717be49fb54cd02cb64b8b16c58..2ae209cb5f6c44f1723423ec922326436a2e7b58 100644
--- a/tutorials/combustion/engineFoam/kivaTest/system/controlDict
+++ b/tutorials/combustion/engineFoam/kivaTest/system/controlDict
@@ -11,10 +11,12 @@ FoamFile
     format      ascii;
     class       dictionary;
     location    "system";
-    object      controlDict;
+    object      controlDict.1st;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+applicationClass engineFoam;
+
 startFrom       startTime;
 
 startTime       -180;
diff --git a/tutorials/compressible/rhoCentralFoam/LadenburgJet60psi/constant/thermophysicalProperties b/tutorials/compressible/rhoCentralFoam/LadenburgJet60psi/constant/thermophysicalProperties
index 9081551c6f6942e27458d17f287b256ba4c3ea2f..6fff161f863eab88afe4fcca0e5ba1f5fcc980d8 100644
--- a/tutorials/compressible/rhoCentralFoam/LadenburgJet60psi/constant/thermophysicalProperties
+++ b/tutorials/compressible/rhoCentralFoam/LadenburgJet60psi/constant/thermophysicalProperties
@@ -15,7 +15,7 @@ FoamFile
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-thermoType      hThermo<pureMixture<sutherlandTransport<specieThermo<hConstThermo<perfectGas>>>>>;
+thermoType      hPsiThermo<pureMixture<sutherlandTransport<specieThermo<hConstThermo<perfectGas>>>>>;
 
 mixture         air 1 28.96 1004.5 0 1.458e-06 110.4;
 
diff --git a/tutorials/compressible/rhoCentralFoam/LadenburgJet60psi/system/machines b/tutorials/compressible/rhoCentralFoam/LadenburgJet60psi/system/machines
deleted file mode 100644
index c1ebafec0159993aab2b1525f952e5b28e714776..0000000000000000000000000000000000000000
--- a/tutorials/compressible/rhoCentralFoam/LadenburgJet60psi/system/machines
+++ /dev/null
@@ -1,8 +0,0 @@
-borg1
-borg2
-borg3
-borg4
-borg5
-borg6
-borg7
-borg8
diff --git a/tutorials/compressible/rhoCentralFoam/biconic25-55Run35/constant/thermophysicalProperties b/tutorials/compressible/rhoCentralFoam/biconic25-55Run35/constant/thermophysicalProperties
index a4d934aeb2e5b8a50cb0e200272cff6f61f4483d..140131eb07a96a0fe4afdf9fe2dd261ceed10c8f 100644
--- a/tutorials/compressible/rhoCentralFoam/biconic25-55Run35/constant/thermophysicalProperties
+++ b/tutorials/compressible/rhoCentralFoam/biconic25-55Run35/constant/thermophysicalProperties
@@ -17,7 +17,7 @@ FoamFile
 
 Pr              Pr [ 0 0 0 0 0 0 0 ] 0.72;
 
-thermoType      hThermo<pureMixture<sutherlandTransport<specieThermo<janafThermo<perfectGas>>>>>;
+thermoType      hPsiThermo<pureMixture<sutherlandTransport<specieThermo<janafThermo<perfectGas>>>>>;
 
 mixture         N2 1 28.01348 100 10000 1000 2.9525407 0.0013968838 -4.9262577e-07 7.8600091e-11 -4.6074978e-15 -923.93753 5.8718221 3.5309628 -0.0001236595 -5.0299339e-07 2.4352768e-09 -1.4087954e-12 -1046.9637 2.9674391 1.458e-06 110;
 
diff --git a/tutorials/compressible/rhoCentralFoam/forwardStep/constant/thermophysicalProperties b/tutorials/compressible/rhoCentralFoam/forwardStep/constant/thermophysicalProperties
index 841a143c18ed9bb76e2fa5d864cbdf9ca93fed50..41f4c6be09c194abc58193ca7b00c15564660992 100644
--- a/tutorials/compressible/rhoCentralFoam/forwardStep/constant/thermophysicalProperties
+++ b/tutorials/compressible/rhoCentralFoam/forwardStep/constant/thermophysicalProperties
@@ -15,7 +15,7 @@ FoamFile
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-thermoType      hThermo<pureMixture<constTransport<specieThermo<hConstThermo<perfectGas>>>>>;
+thermoType      hPsiThermo<pureMixture<constTransport<specieThermo<hConstThermo<perfectGas>>>>>;
 
 mixture         normalisedGas 1 11640.3 2.5 0 0 1;
 
diff --git a/tutorials/compressible/rhoCentralFoam/obliqueShock/constant/thermophysicalProperties b/tutorials/compressible/rhoCentralFoam/obliqueShock/constant/thermophysicalProperties
index 841a143c18ed9bb76e2fa5d864cbdf9ca93fed50..41f4c6be09c194abc58193ca7b00c15564660992 100644
--- a/tutorials/compressible/rhoCentralFoam/obliqueShock/constant/thermophysicalProperties
+++ b/tutorials/compressible/rhoCentralFoam/obliqueShock/constant/thermophysicalProperties
@@ -15,7 +15,7 @@ FoamFile
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-thermoType      hThermo<pureMixture<constTransport<specieThermo<hConstThermo<perfectGas>>>>>;
+thermoType      hPsiThermo<pureMixture<constTransport<specieThermo<hConstThermo<perfectGas>>>>>;
 
 mixture         normalisedGas 1 11640.3 2.5 0 0 1;
 
diff --git a/tutorials/compressible/rhoCentralFoam/shockTube/constant/thermophysicalProperties b/tutorials/compressible/rhoCentralFoam/shockTube/constant/thermophysicalProperties
index 919fec0ceab7d526193af6520876a6a75fe08f7a..613fd43883bcdefdfd3e4ec65f8d4a360a47b432 100644
--- a/tutorials/compressible/rhoCentralFoam/shockTube/constant/thermophysicalProperties
+++ b/tutorials/compressible/rhoCentralFoam/shockTube/constant/thermophysicalProperties
@@ -15,7 +15,7 @@ FoamFile
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-thermoType      hThermo<pureMixture<constTransport<specieThermo<hConstThermo<perfectGas>>>>>;
+thermoType      hPsiThermo<pureMixture<constTransport<specieThermo<hConstThermo<perfectGas>>>>>;
 
 mixture         air 1 28.96 1004.5 2.544e+06 0 1;
 
diff --git a/tutorials/compressible/rhoCentralFoam/wedge15Ma5/constant/thermophysicalProperties b/tutorials/compressible/rhoCentralFoam/wedge15Ma5/constant/thermophysicalProperties
index 841a143c18ed9bb76e2fa5d864cbdf9ca93fed50..41f4c6be09c194abc58193ca7b00c15564660992 100644
--- a/tutorials/compressible/rhoCentralFoam/wedge15Ma5/constant/thermophysicalProperties
+++ b/tutorials/compressible/rhoCentralFoam/wedge15Ma5/constant/thermophysicalProperties
@@ -15,7 +15,7 @@ FoamFile
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-thermoType      hThermo<pureMixture<constTransport<specieThermo<hConstThermo<perfectGas>>>>>;
+thermoType      hPsiThermo<pureMixture<constTransport<specieThermo<hConstThermo<perfectGas>>>>>;
 
 mixture         normalisedGas 1 11640.3 2.5 0 0 1;
 
diff --git a/tutorials/compressible/rhoPimpleFoam/angledDuct/0/alphat b/tutorials/compressible/rhoPimpleFoam/angledDuct/0/alphat
index f609fa6c14c41bba0ec2726af2cf56a9ca8c949a..dc2104f83c5ce3f90987cad077de403fcd15988e 100644
--- a/tutorials/compressible/rhoPimpleFoam/angledDuct/0/alphat
+++ b/tutorials/compressible/rhoPimpleFoam/angledDuct/0/alphat
@@ -23,22 +23,22 @@ boundaryField
 {
     front
     {
-        type            alphatWallFunction;
+        type            compressible::alphatWallFunction;
         value           uniform 0;
     }
     back
     {
-        type            alphatWallFunction;
+        type            compressible::alphatWallFunction;
         value           uniform 0;
     }
     wall
     {
-        type            alphatWallFunction;
+        type            compressible::alphatWallFunction;
         value           uniform 0;
     }
     porosityWall
     {
-        type            alphatWallFunction;
+        type            compressible::alphatWallFunction;
         value           uniform 0;
     }
     inlet
diff --git a/tutorials/compressible/rhoPimpleFoam/angledDuct/0/epsilon b/tutorials/compressible/rhoPimpleFoam/angledDuct/0/epsilon
index 502e0489570c5c063dd34ce656009712bd077300..e4dccfe57777d09934d55a61d67f94e2917585f0 100644
--- a/tutorials/compressible/rhoPimpleFoam/angledDuct/0/epsilon
+++ b/tutorials/compressible/rhoPimpleFoam/angledDuct/0/epsilon
@@ -23,27 +23,27 @@ boundaryField
 {
     front
     {
-        type            epsilonWallFunction;
+        type            compressible::epsilonWallFunction;
         value           uniform 200;
     }
     back
     {
-        type            epsilonWallFunction;
+        type            compressible::epsilonWallFunction;
         value           uniform 200;
     }
     wall
     {
-        type            epsilonWallFunction;
+        type            compressible::epsilonWallFunction;
         value           uniform 200;
     }
     porosityWall
     {
-        type            epsilonWallFunction;
+        type            compressible::epsilonWallFunction;
         value           uniform 200;
     }
     inlet
     {
-        type            turbulentMixingLengthDissipationRateInlet;
+        type            compressible::turbulentMixingLengthDissipationRateInlet;
         mixingLength    0.005;
         value           uniform 200;
     }
diff --git a/tutorials/compressible/rhoPimpleFoam/angledDuct/0/k b/tutorials/compressible/rhoPimpleFoam/angledDuct/0/k
index 6171b9506b8a48d2de911a5c485b6c2bd13d6028..36be49f2ea41fa4546f2b605b525f151f624a334 100644
--- a/tutorials/compressible/rhoPimpleFoam/angledDuct/0/k
+++ b/tutorials/compressible/rhoPimpleFoam/angledDuct/0/k
@@ -23,22 +23,22 @@ boundaryField
 {
     front
     {
-        type            kQRWallFunction;
+        type            compressible::kQRWallFunction;
         value           uniform 1;
     }
     back
     {
-        type            kQRWallFunction;
+        type            compressible::kQRWallFunction;
         value           uniform 1;
     }
     wall
     {
-        type            kQRWallFunction;
+        type            compressible::kQRWallFunction;
         value           uniform 1;
     }
     porosityWall
     {
-        type            kQRWallFunction;
+        type            compressible::kQRWallFunction;
         value           uniform 1;
     }
     inlet
diff --git a/tutorials/compressible/rhoPimpleFoam/angledDuct/constant/thermophysicalProperties b/tutorials/compressible/rhoPimpleFoam/angledDuct/constant/thermophysicalProperties
index bd1a6c1f0496c414f331f2d0c1357fd1918e36a8..a94ec3d442ef2ea46e7b3a863dd5512f05d8ae85 100644
--- a/tutorials/compressible/rhoPimpleFoam/angledDuct/constant/thermophysicalProperties
+++ b/tutorials/compressible/rhoPimpleFoam/angledDuct/constant/thermophysicalProperties
@@ -15,7 +15,7 @@ FoamFile
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-thermoType      hThermo<pureMixture<sutherlandTransport<specieThermo<hConstThermo<perfectGas>>>>>;
+thermoType      hPsiThermo<pureMixture<sutherlandTransport<specieThermo<hConstThermo<perfectGas>>>>>;
 
 mixture         air 1 28.9 1007 0 1.4792e-06 116;
 
diff --git a/tutorials/compressible/rhoPisoFoam/les/pitzDaily/constant/thermophysicalProperties b/tutorials/compressible/rhoPisoFoam/les/pitzDaily/constant/thermophysicalProperties
index 7f85f2afd5e60654d526bf686b5f4f2819841dab..3c52e2545f8de88e10ecba0a455f73b2a3565e66 100644
--- a/tutorials/compressible/rhoPisoFoam/les/pitzDaily/constant/thermophysicalProperties
+++ b/tutorials/compressible/rhoPisoFoam/les/pitzDaily/constant/thermophysicalProperties
@@ -15,7 +15,7 @@ FoamFile
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-thermoType      hThermo<pureMixture<constTransport<specieThermo<hConstThermo<perfectGas>>>>>;
+thermoType      hPsiThermo<pureMixture<constTransport<specieThermo<hConstThermo<perfectGas>>>>>;
 
 mixture         air 1 28.9 1000 0 1.8e-05 0.7;
 
diff --git a/tutorials/compressible/rhoPisoFoam/ras/cavity/0/epsilon b/tutorials/compressible/rhoPisoFoam/ras/cavity/0/epsilon
index 1b7c6c0d70a42a55f17e2b579fa12cf5403e1412..698ff247d3588ecf485750ed392cd0745e137d2c 100644
--- a/tutorials/compressible/rhoPisoFoam/ras/cavity/0/epsilon
+++ b/tutorials/compressible/rhoPisoFoam/ras/cavity/0/epsilon
@@ -23,13 +23,13 @@ boundaryField
 {
     movingWall
     {
-        type            epsilonWallFunction;
+        type            compressible::epsilonWallFunction;
         value           uniform 0;
     }
 
     fixedWalls
     {
-        type            epsilonWallFunction;
+        type            compressible::epsilonWallFunction;
         value           uniform 0;
     }
 
diff --git a/tutorials/compressible/rhoPisoFoam/ras/cavity/0/k b/tutorials/compressible/rhoPisoFoam/ras/cavity/0/k
index 64ea0ca8fbd25e149a023c3c3ecee9af977197a8..8f645b088c807cbc6b2215416a42a7e5e316c791 100644
--- a/tutorials/compressible/rhoPisoFoam/ras/cavity/0/k
+++ b/tutorials/compressible/rhoPisoFoam/ras/cavity/0/k
@@ -15,7 +15,7 @@ FoamFile
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-dimensions      [ 0 2 -2 0 0 0 0 ];
+dimensions      [0 2 -2 0 0 0 0];
 
 internalField   uniform 0.00325;
 
@@ -23,16 +23,14 @@ boundaryField
 {
     movingWall
     {
-        type            kQRWallFunction;
+        type            compressible::kQRWallFunction;
         value           uniform 0;
     }
-
     fixedWalls
     {
-        type            kQRWallFunction;
+        type            compressible::kQRWallFunction;
         value           uniform 0;
     }
-
     frontAndBack
     {
         type            empty;
diff --git a/tutorials/compressible/rhoPisoFoam/ras/cavity/0/mut b/tutorials/compressible/rhoPisoFoam/ras/cavity/0/mut
index 3aaa8e77f82971aa58a9b96e84e20178a824085a..a0f4c473102445c3741b8324de193086abc82af1 100644
--- a/tutorials/compressible/rhoPisoFoam/ras/cavity/0/mut
+++ b/tutorials/compressible/rhoPisoFoam/ras/cavity/0/mut
@@ -15,7 +15,7 @@ FoamFile
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-dimensions      [ 1 -1 -1 0 0 0 0 ];
+dimensions      [1 -1 -1 0 0 0 0];
 
 internalField   uniform 0;
 
@@ -26,13 +26,11 @@ boundaryField
         type            mutWallFunction;
         value           uniform 0;
     }
-
     fixedWalls
     {
         type            mutWallFunction;
         value           uniform 0;
     }
-
     frontAndBack
     {
         type            empty;
diff --git a/tutorials/compressible/rhoPisoFoam/ras/cavity/0/omega b/tutorials/compressible/rhoPisoFoam/ras/cavity/0/omega
index fa4f022f0140184baac96f3b5198908e796c1cf2..863c2292b647b2cee86d4fe26c990f3677ed9502 100644
--- a/tutorials/compressible/rhoPisoFoam/ras/cavity/0/omega
+++ b/tutorials/compressible/rhoPisoFoam/ras/cavity/0/omega
@@ -15,7 +15,7 @@ FoamFile
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-dimensions      [ 0 0 -1 0 0 0 0 ];
+dimensions      [0 0 -1 0 0 0 0];
 
 internalField   uniform 2.6;
 
@@ -23,16 +23,14 @@ boundaryField
 {
     movingWall
     {
-        type            omegaWallFunction;
+        type            compressible::omegaWallFunction;
         value           uniform 0;
     }
-
     fixedWalls
     {
-        type            omegaWallFunction;
+        type            compressible::omegaWallFunction;
         value           uniform 0;
     }
-
     frontAndBack
     {
         type            empty;
diff --git a/tutorials/compressible/rhoPisoFoam/ras/cavity/constant/thermophysicalProperties b/tutorials/compressible/rhoPisoFoam/ras/cavity/constant/thermophysicalProperties
index d02b85fec4397d8da50129dd6d2374b56619abe6..f7638810ff7a4d465637cea0b9f7caca2680d98f 100644
--- a/tutorials/compressible/rhoPisoFoam/ras/cavity/constant/thermophysicalProperties
+++ b/tutorials/compressible/rhoPisoFoam/ras/cavity/constant/thermophysicalProperties
@@ -15,7 +15,7 @@ FoamFile
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-thermoType      hThermo<pureMixture<constTransport<specieThermo<hConstThermo<perfectGas>>>>>;
+thermoType      hPsiThermo<pureMixture<constTransport<specieThermo<hConstThermo<perfectGas>>>>>;
 
 mixture         air 1 28.9 1007 0 1.84e-05 0.7;
 
diff --git a/tutorials/compressible/rhoPorousSimpleFoam/angledDuctImplicit/0/alphat b/tutorials/compressible/rhoPorousSimpleFoam/angledDuctImplicit/0/alphat
new file mode 100644
index 0000000000000000000000000000000000000000..dc2104f83c5ce3f90987cad077de403fcd15988e
--- /dev/null
+++ b/tutorials/compressible/rhoPorousSimpleFoam/angledDuctImplicit/0/alphat
@@ -0,0 +1,57 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      alphat;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -1 -1 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    front
+    {
+        type            compressible::alphatWallFunction;
+        value           uniform 0;
+    }
+    back
+    {
+        type            compressible::alphatWallFunction;
+        value           uniform 0;
+    }
+    wall
+    {
+        type            compressible::alphatWallFunction;
+        value           uniform 0;
+    }
+    porosityWall
+    {
+        type            compressible::alphatWallFunction;
+        value           uniform 0;
+    }
+    inlet
+    {
+        type            calculated;
+        value           uniform 0;
+    }
+    outlet
+    {
+        type            calculated;
+        value           uniform 0;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/compressible/rhoPorousSimpleFoam/angledDuctImplicit/0/epsilon b/tutorials/compressible/rhoPorousSimpleFoam/angledDuctImplicit/0/epsilon
index 13cfc84a0ec1f4c5046a0e4d04d0b7a446a7d611..e0c4dcffbcfbaa46aba58a4bc0f5f0f8f72f3c7e 100644
--- a/tutorials/compressible/rhoPorousSimpleFoam/angledDuctImplicit/0/epsilon
+++ b/tutorials/compressible/rhoPorousSimpleFoam/angledDuctImplicit/0/epsilon
@@ -23,31 +23,31 @@ boundaryField
 {
     front
     {
-        type            epsilonWallFunction;
-        value           uniform 0;
+        type            compressible::epsilonWallFunction;
+        value           uniform 200;
     }
 
     back
     {
-        type            epsilonWallFunction;
-        value           uniform 0;
+        type            compressible::epsilonWallFunction;
+        value           uniform 200;
     }
 
     wall
     {
-        type            epsilonWallFunction;
-        value           uniform 0;
+        type            compressible::epsilonWallFunction;
+        value           uniform 200;
     }
 
     porosityWall
     {
-        type            epsilonWallFunction;
-        value           uniform 0;
+        type            compressible::epsilonWallFunction;
+        value           uniform 200;
     }
 
     inlet
     {
-        type            turbulentMixingLengthDissipationRateInlet;
+        type            compressible::turbulentMixingLengthDissipationRateInlet;
         mixingLength    0.005;
         value           uniform 200;
     }
diff --git a/tutorials/compressible/rhoPorousSimpleFoam/angledDuctImplicit/0/k b/tutorials/compressible/rhoPorousSimpleFoam/angledDuctImplicit/0/k
index 16c1e28fb894fe44a909cc4caa010fb591b74072..1243952ec2d5bc9a98375a7c5de17f4f406689c2 100644
--- a/tutorials/compressible/rhoPorousSimpleFoam/angledDuctImplicit/0/k
+++ b/tutorials/compressible/rhoPorousSimpleFoam/angledDuctImplicit/0/k
@@ -23,26 +23,26 @@ boundaryField
 {
     front
     {
-        type            kQRWallFunction;
-        value           uniform 0;
+        type            compressible::kQRWallFunction;
+        value           uniform 1;
     }
 
     back
     {
-        type            kQRWallFunction;
-        value           uniform 0;
+        type            compressible::kQRWallFunction;
+        value           uniform 1;
     }
 
     wall
     {
-        type            kQRWallFunction;
-        value           uniform 0;
+        type            compressible::kQRWallFunction;
+        value           uniform 1;
     }
 
     porosityWall
     {
-        type            kQRWallFunction;
-        value           uniform 0;
+        type            compressible::kQRWallFunction;
+        value           uniform 1;
     }
 
     inlet
diff --git a/tutorials/compressible/rhoPorousSimpleFoam/angledDuctImplicit/constant/thermophysicalProperties b/tutorials/compressible/rhoPorousSimpleFoam/angledDuctImplicit/constant/thermophysicalProperties
index ab0fa0fe3c8b725dac44909a43c7849d66428e8c..81db5fe944aba427c44fb2a6289733bb6ef6eb44 100644
--- a/tutorials/compressible/rhoPorousSimpleFoam/angledDuctImplicit/constant/thermophysicalProperties
+++ b/tutorials/compressible/rhoPorousSimpleFoam/angledDuctImplicit/constant/thermophysicalProperties
@@ -15,7 +15,7 @@ FoamFile
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-thermoType      hThermo<pureMixture<sutherlandTransport<specieThermo<hConstThermo<perfectGas>>>>>;
+thermoType      hPsiThermo<pureMixture<sutherlandTransport<specieThermo<hConstThermo<perfectGas>>>>>;
 
 mixture         air 1 28.9 1007 0 1.4792e-06 116;
 
diff --git a/tutorials/compressible/sonicFoam/Allrun b/tutorials/compressible/sonicFoam/Allrun
new file mode 100755
index 0000000000000000000000000000000000000000..4f1a1e464a13287c4b685a7fdc8fc94ae46230b9
--- /dev/null
+++ b/tutorials/compressible/sonicFoam/Allrun
@@ -0,0 +1,5 @@
+#!/bin/sh
+set -x
+
+(cd laminar && ./Allrun)
+(cd ras && ./Allrun)
diff --git a/tutorials/compressible/sonicFoam/laminar/Allrun b/tutorials/compressible/sonicFoam/laminar/Allrun
new file mode 100755
index 0000000000000000000000000000000000000000..573ff3a12dff2b3e37cb14a13f0d7ed7454b3abf
--- /dev/null
+++ b/tutorials/compressible/sonicFoam/laminar/Allrun
@@ -0,0 +1,22 @@
+#!/bin/sh
+# Source tutorial run functions
+. $WM_PROJECT_DIR/bin/tools/RunFunctions
+
+# Get application name from directory
+application=sonicFoam
+
+cases=" \
+forwardStep \
+shockTube \
+"
+for case in $cases
+do
+    (cd $case && runApplication blockMesh)
+#
+    if [ "$case" = "shockTube" ] ; then
+        (cd $case && ./Allrun)
+    else
+        (cd $case && runApplication $application)
+    fi
+#
+done
diff --git a/tutorials/compressible/sonicFoam/laminar/forwardStep/constant/thermophysicalProperties b/tutorials/compressible/sonicFoam/laminar/forwardStep/constant/thermophysicalProperties
new file mode 100644
index 0000000000000000000000000000000000000000..82d43de5709a190f9567de1b5d3e6b9abe8e119a
--- /dev/null
+++ b/tutorials/compressible/sonicFoam/laminar/forwardStep/constant/thermophysicalProperties
@@ -0,0 +1,23 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      thermophysicalProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+thermoType      ePsiThermo<pureMixture<constTransport<specieThermo<eConstThermo<perfectGas>>>>>;
+
+mixture         air 1 11640.31 1.78571 0 0 0.7;
+
+
+// ************************************************************************* //
diff --git a/tutorials/compressible/sonicFoam/laminar/forwardStep/constant/turbulenceProperties b/tutorials/compressible/sonicFoam/laminar/forwardStep/constant/turbulenceProperties
new file mode 100644
index 0000000000000000000000000000000000000000..c2c3b28a1b4e8f4a2cae55f58bd61f9b1a67b488
--- /dev/null
+++ b/tutorials/compressible/sonicFoam/laminar/forwardStep/constant/turbulenceProperties
@@ -0,0 +1,21 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      turbulenceProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+simulationType  laminar;
+
+
+// ************************************************************************* //
diff --git a/tutorials/compressible/sonicFoam/laminar/forwardStep/system/fvSchemes b/tutorials/compressible/sonicFoam/laminar/forwardStep/system/fvSchemes
index 1c36c50aa67708935b325763ac50f49fc7fc4a44..6bebe35dfbbc69607c1b0588b7573526be914b21 100644
--- a/tutorials/compressible/sonicFoam/laminar/forwardStep/system/fvSchemes
+++ b/tutorials/compressible/sonicFoam/laminar/forwardStep/system/fvSchemes
@@ -30,17 +30,19 @@ gradSchemes
 divSchemes
 {
     default         none;
-    div(phi,U)      Gauss limitedLinearV 1;
+    div(phi,U)      Gauss upwind;
     div(phid,p)     Gauss limitedLinear 1;
     div(phi,e)      Gauss limitedLinear 1;
+    div(phiU,p)     Gauss limitedLinear 1;
+    div((muEff*dev2(grad(U).T()))) Gauss linear 1;
 }
 
 laplacianSchemes
 {
     default         none;
-    laplacian(mu,U) Gauss linear corrected;
-    laplacian(mu,e) Gauss linear corrected;
     laplacian((rho*(1|A(U))),p) Gauss linear corrected;
+    laplacian(muEff,U) Gauss linear corrected;
+    laplacian(alphaEff,e) Gauss linear corrected;
 }
 
 interpolationSchemes
diff --git a/tutorials/compressible/sonicFoam/laminar/shockTube/constant/thermophysicalProperties b/tutorials/compressible/sonicFoam/laminar/shockTube/constant/thermophysicalProperties
new file mode 100644
index 0000000000000000000000000000000000000000..2560f39757b887a4b0539ac5a9e4972df349cf7b
--- /dev/null
+++ b/tutorials/compressible/sonicFoam/laminar/shockTube/constant/thermophysicalProperties
@@ -0,0 +1,23 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      thermophysicalProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+thermoType      ePsiThermo<pureMixture<constTransport<specieThermo<eConstThermo<perfectGas>>>>>;
+
+mixture         air 1 28.9 717.5 0 0 0.7;
+
+
+// ************************************************************************* //
diff --git a/tutorials/compressible/sonicFoam/laminar/shockTube/constant/turbulenceProperties b/tutorials/compressible/sonicFoam/laminar/shockTube/constant/turbulenceProperties
new file mode 100644
index 0000000000000000000000000000000000000000..c2c3b28a1b4e8f4a2cae55f58bd61f9b1a67b488
--- /dev/null
+++ b/tutorials/compressible/sonicFoam/laminar/shockTube/constant/turbulenceProperties
@@ -0,0 +1,21 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      turbulenceProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+simulationType  laminar;
+
+
+// ************************************************************************* //
diff --git a/tutorials/compressible/sonicFoam/laminar/shockTube/system/fvSchemes b/tutorials/compressible/sonicFoam/laminar/shockTube/system/fvSchemes
index deef4abd2614ed5708f90773817385c711ea18e4..6bebe35dfbbc69607c1b0588b7573526be914b21 100644
--- a/tutorials/compressible/sonicFoam/laminar/shockTube/system/fvSchemes
+++ b/tutorials/compressible/sonicFoam/laminar/shockTube/system/fvSchemes
@@ -33,14 +33,16 @@ divSchemes
     div(phi,U)      Gauss upwind;
     div(phid,p)     Gauss limitedLinear 1;
     div(phi,e)      Gauss limitedLinear 1;
+    div(phiU,p)     Gauss limitedLinear 1;
+    div((muEff*dev2(grad(U).T()))) Gauss linear 1;
 }
 
 laplacianSchemes
 {
     default         none;
-    laplacian(mu,U) Gauss linear corrected;
-    laplacian(mu,e) Gauss linear corrected;
     laplacian((rho*(1|A(U))),p) Gauss linear corrected;
+    laplacian(muEff,U) Gauss linear corrected;
+    laplacian(alphaEff,e) Gauss linear corrected;
 }
 
 interpolationSchemes
diff --git a/tutorials/compressible/sonicFoam/ras/nacaAirfoil/constant/thermophysicalProperties b/tutorials/compressible/sonicFoam/ras/nacaAirfoil/constant/thermophysicalProperties
index 8e15891e509cc2f3819180595b2f41133983d22c..5580ffd632eb5654f28b94c1895a31d40aff2e8c 100644
--- a/tutorials/compressible/sonicFoam/ras/nacaAirfoil/constant/thermophysicalProperties
+++ b/tutorials/compressible/sonicFoam/ras/nacaAirfoil/constant/thermophysicalProperties
@@ -15,9 +15,9 @@ FoamFile
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-thermoType      hThermo<pureMixture<constTransport<specieThermo<hConstThermo<perfectGas>>>>>;
+thermoType      ePsiThermo<pureMixture<constTransport<specieThermo<eConstThermo<perfectGas>>>>>;
 
-mixture         air 1 28.9 1000 2.544e+06 1.8e-05 0.7;
+mixture         air 1 28.9 717.5 0 1.8e-05 0.7;
 
 
 // ************************************************************************* //
diff --git a/tutorials/compressible/sonicFoam/ras/nacaAirfoil/constant/turbulenceProperties b/tutorials/compressible/sonicFoam/ras/nacaAirfoil/constant/turbulenceProperties
new file mode 100644
index 0000000000000000000000000000000000000000..3721a46a2ead37eb2bf10434bcde59afa9fe9bf6
--- /dev/null
+++ b/tutorials/compressible/sonicFoam/ras/nacaAirfoil/constant/turbulenceProperties
@@ -0,0 +1,21 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      turbulenceProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+simulationType  RASModel;
+
+
+// ************************************************************************* //
diff --git a/tutorials/compressible/sonicFoam/ras/nacaAirfoil/system/controlDict b/tutorials/compressible/sonicFoam/ras/nacaAirfoil/system/controlDict
index ce2e9218c9147050f7603bc262f792b96c0dd5d6..aad6ecd97e30ebec71a08d33a00af3cdc2d8d691 100644
--- a/tutorials/compressible/sonicFoam/ras/nacaAirfoil/system/controlDict
+++ b/tutorials/compressible/sonicFoam/ras/nacaAirfoil/system/controlDict
@@ -49,7 +49,12 @@ functions
     {
         type        forceCoeffs;
         functionObjectLibs ( "libforces.so" );
-        patches     ( WALL10 );
+        outputControl timeStep;
+        outputInterval 1;
+        patches
+        (
+            WALL10
+        );
         pName       p;
         UName       U;
         log         true;
diff --git a/tutorials/compressible/sonicFoam/ras/nacaAirfoil/system/fvSchemes b/tutorials/compressible/sonicFoam/ras/nacaAirfoil/system/fvSchemes
index 0cab17b88eec287ffaaa417e472a94fefbc2d732..444443d62d3df4f18f9189082ba3d4f6b18c613c 100644
--- a/tutorials/compressible/sonicFoam/ras/nacaAirfoil/system/fvSchemes
+++ b/tutorials/compressible/sonicFoam/ras/nacaAirfoil/system/fvSchemes
@@ -35,7 +35,7 @@ divSchemes
     div(R)          Gauss linear;
     div(phid,p)     Gauss limitedLinear 1;
     div(phiU,p)     Gauss limitedLinear 1;
-    div(phi,h)      Gauss limitedLinear 1;
+    div(phi,e)      Gauss limitedLinear 1;
     div((muEff*dev2(grad(U).T()))) Gauss linear;
 }
 
@@ -47,7 +47,7 @@ laplacianSchemes
     laplacian(DREff,R) Gauss linear limited 0.5;
     laplacian(DepsilonEff,epsilon) Gauss linear limited 0.5;
     laplacian((rho*(1|A(U))),p) Gauss linear limited 0.5;
-    laplacian(alphaEff,h) Gauss linear limited 0.5;
+    laplacian(alphaEff,e) Gauss linear limited 0.5;
 }
 
 interpolationSchemes
@@ -63,7 +63,7 @@ snGradSchemes
 fluxRequired
 {
     default         no;
-    p               ;
+    p;
 }
 
 
diff --git a/tutorials/compressible/sonicFoam/ras/nacaAirfoil/system/fvSolution b/tutorials/compressible/sonicFoam/ras/nacaAirfoil/system/fvSolution
index a1782db6853bdb92132e5fc1a5e57cffb57a091f..d46dcd13cf44c7d474ea2f11965f7e2cc907cada 100644
--- a/tutorials/compressible/sonicFoam/ras/nacaAirfoil/system/fvSolution
+++ b/tutorials/compressible/sonicFoam/ras/nacaAirfoil/system/fvSolution
@@ -41,7 +41,7 @@ solvers
         relTol          0;
     }
 
-    h
+    e 
     {
         solver          PBiCG;
         preconditioner  DILU;
diff --git a/tutorials/compressible/sonicFoam/ras/prism/constant/thermophysicalProperties b/tutorials/compressible/sonicFoam/ras/prism/constant/thermophysicalProperties
index 754163e2a972e3860710533ee809e51d9c3a99d7..5580ffd632eb5654f28b94c1895a31d40aff2e8c 100644
--- a/tutorials/compressible/sonicFoam/ras/prism/constant/thermophysicalProperties
+++ b/tutorials/compressible/sonicFoam/ras/prism/constant/thermophysicalProperties
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.5                                   |
+|  \\    /   O peration     | Version:  dev                                   |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
@@ -15,9 +15,9 @@ FoamFile
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-thermoType      hThermo<pureMixture<constTransport<specieThermo<hConstThermo<perfectGas>>>>>;
+thermoType      ePsiThermo<pureMixture<constTransport<specieThermo<eConstThermo<perfectGas>>>>>;
 
-mixture         air 1 28.9 1300 2.544e+06 1.84e-05 0.7;
+mixture         air 1 28.9 717.5 0 1.8e-05 0.7;
 
 
 // ************************************************************************* //
diff --git a/tutorials/compressible/sonicFoam/ras/prism/constant/turbulenceProperties b/tutorials/compressible/sonicFoam/ras/prism/constant/turbulenceProperties
new file mode 100644
index 0000000000000000000000000000000000000000..3721a46a2ead37eb2bf10434bcde59afa9fe9bf6
--- /dev/null
+++ b/tutorials/compressible/sonicFoam/ras/prism/constant/turbulenceProperties
@@ -0,0 +1,21 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      turbulenceProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+simulationType  RASModel;
+
+
+// ************************************************************************* //
diff --git a/tutorials/compressible/sonicFoam/ras/prism/system/fvSchemes b/tutorials/compressible/sonicFoam/ras/prism/system/fvSchemes
index 7b3c03466f4a90b221e27fd07136ba28a964021b..9737d97c289fa4fbab2e69809936f7e094fc7463 100644
--- a/tutorials/compressible/sonicFoam/ras/prism/system/fvSchemes
+++ b/tutorials/compressible/sonicFoam/ras/prism/system/fvSchemes
@@ -35,7 +35,7 @@ divSchemes
     div(R)          Gauss linear;
     div(phid,p)     Gauss limitedLinear 1;
     div(phiU,p)     Gauss limitedLinear 1;
-    div(phi,h)      Gauss limitedLinear 1;
+    div(phi,e)      Gauss limitedLinear 1;
     div((muEff*dev2(grad(U).T()))) Gauss linear;
 }
 
@@ -47,7 +47,7 @@ laplacianSchemes
     laplacian(DREff,R) Gauss linear corrected;
     laplacian(DepsilonEff,epsilon) Gauss linear corrected;
     laplacian((rho*(1|A(U))),p) Gauss linear corrected;
-    laplacian(alphaEff,h) Gauss linear corrected;
+    laplacian(alphaEff,e) Gauss linear corrected;
 }
 
 interpolationSchemes
@@ -63,7 +63,7 @@ snGradSchemes
 fluxRequired
 {
     default         no;
-    p               ;
+    p;
 }
 
 
diff --git a/tutorials/compressible/sonicFoam/ras/prism/system/fvSolution b/tutorials/compressible/sonicFoam/ras/prism/system/fvSolution
index 5341a980f476377d047e400880c6756dafccccc2..5ff77210a9690153b90dde73e1370197d85d7cbe 100644
--- a/tutorials/compressible/sonicFoam/ras/prism/system/fvSolution
+++ b/tutorials/compressible/sonicFoam/ras/prism/system/fvSolution
@@ -41,7 +41,7 @@ solvers
         relTol          0;
     }
 
-    h
+    e 
     {
         solver          PBiCG;
         preconditioner  DILU;
diff --git a/tutorials/discreteMethods/dsmc/freeSpacePeriodic/0/boundaryT b/tutorials/discreteMethods/dsmc/freeSpacePeriodic/0/boundaryT
new file mode 100644
index 0000000000000000000000000000000000000000..9afc247827516321ce0b5e52eb795aacee4423ca
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/freeSpacePeriodic/0/boundaryT
@@ -0,0 +1,39 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      boundaryT;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 1 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    xPeriodic
+    {
+        type            cyclic;
+    }
+
+    yPeriodic
+    {
+        type            cyclic;
+    }
+
+    zPeriodic
+    {
+        type            cyclic;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/dsmc/freeSpacePeriodic/0/boundaryU b/tutorials/discreteMethods/dsmc/freeSpacePeriodic/0/boundaryU
new file mode 100644
index 0000000000000000000000000000000000000000..b7117eafbc88a45b32ee2caf91af18ae22182dc7
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/freeSpacePeriodic/0/boundaryU
@@ -0,0 +1,39 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volVectorField;
+    object      boundaryU;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -1 0 0 0 0];
+
+internalField   uniform (0 0 0);
+
+boundaryField
+{
+    xPeriodic
+    {
+        type            cyclic;
+    }
+
+    yPeriodic
+    {
+        type            cyclic;
+    }
+
+    zPeriodic
+    {
+        type            cyclic;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/dsmc/freeSpacePeriodic/0/dsmcRhoN b/tutorials/discreteMethods/dsmc/freeSpacePeriodic/0/dsmcRhoN
new file mode 100644
index 0000000000000000000000000000000000000000..e9eae893d481e09bfa8bd9c14da29e2a9d783d7d
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/freeSpacePeriodic/0/dsmcRhoN
@@ -0,0 +1,39 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      dsmcRhoN;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 -3 0 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    xPeriodic
+    {
+        type            cyclic;
+    }
+
+    yPeriodic
+    {
+        type            cyclic;
+    }
+
+    zPeriodic
+    {
+        type            cyclic;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/dsmc/freeSpacePeriodic/0/fD b/tutorials/discreteMethods/dsmc/freeSpacePeriodic/0/fD
new file mode 100644
index 0000000000000000000000000000000000000000..0ec2aa7410f25dbefe5ffe80efad7750657881f5
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/freeSpacePeriodic/0/fD
@@ -0,0 +1,39 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volVectorField;
+    object      fD;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -1 -2 0 0 0 0];
+
+internalField   uniform (0 0 0);
+
+boundaryField
+{
+    xPeriodic
+    {
+        type            cyclic;
+    }
+
+    yPeriodic
+    {
+        type            cyclic;
+    }
+
+    zPeriodic
+    {
+        type            cyclic;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/dsmc/freeSpacePeriodic/0/iDof b/tutorials/discreteMethods/dsmc/freeSpacePeriodic/0/iDof
new file mode 100644
index 0000000000000000000000000000000000000000..626a947a110e1337a002592b4c1e83e80ac63e07
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/freeSpacePeriodic/0/iDof
@@ -0,0 +1,39 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      iDof;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 -3 0 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    xPeriodic
+    {
+        type            cyclic;
+    }
+
+    yPeriodic
+    {
+        type            cyclic;
+    }
+
+    zPeriodic
+    {
+        type            cyclic;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/dsmc/freeSpacePeriodic/0/internalE b/tutorials/discreteMethods/dsmc/freeSpacePeriodic/0/internalE
new file mode 100644
index 0000000000000000000000000000000000000000..3dc30a0f2ec2d9c335764c66826d4e2863827da2
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/freeSpacePeriodic/0/internalE
@@ -0,0 +1,39 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      internalE;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -1 -2 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    xPeriodic
+    {
+        type            cyclic;
+    }
+
+    yPeriodic
+    {
+        type            cyclic;
+    }
+
+    zPeriodic
+    {
+        type            cyclic;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/dsmc/freeSpacePeriodic/0/linearKE b/tutorials/discreteMethods/dsmc/freeSpacePeriodic/0/linearKE
new file mode 100644
index 0000000000000000000000000000000000000000..1d8b022dc9afe7adf9d56a39e09cded1901e6bf8
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/freeSpacePeriodic/0/linearKE
@@ -0,0 +1,39 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      linearKE;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -1 -2 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    xPeriodic
+    {
+        type            cyclic;
+    }
+
+    yPeriodic
+    {
+        type            cyclic;
+    }
+
+    zPeriodic
+    {
+        type            cyclic;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/dsmc/freeSpacePeriodic/0/momentum b/tutorials/discreteMethods/dsmc/freeSpacePeriodic/0/momentum
new file mode 100644
index 0000000000000000000000000000000000000000..e35350692e7c33af9407f229a876a9006366b8cc
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/freeSpacePeriodic/0/momentum
@@ -0,0 +1,39 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volVectorField;
+    object      momentum;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -2 -1 0 0 0 0];
+
+internalField   uniform (0 0 0);
+
+boundaryField
+{
+    xPeriodic
+    {
+        type            cyclic;
+    }
+
+    yPeriodic
+    {
+        type            cyclic;
+    }
+
+    zPeriodic
+    {
+        type            cyclic;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/dsmc/freeSpacePeriodic/0/q b/tutorials/discreteMethods/dsmc/freeSpacePeriodic/0/q
new file mode 100644
index 0000000000000000000000000000000000000000..aae46273e982bd3c3495abaffc24ea89303b135d
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/freeSpacePeriodic/0/q
@@ -0,0 +1,39 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      q;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 0 -3 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    xPeriodic
+    {
+        type            cyclic;
+    }
+
+    yPeriodic
+    {
+        type            cyclic;
+    }
+
+    zPeriodic
+    {
+        type            cyclic;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/dsmc/freeSpacePeriodic/0/rhoM b/tutorials/discreteMethods/dsmc/freeSpacePeriodic/0/rhoM
new file mode 100644
index 0000000000000000000000000000000000000000..8dc0b17f55699f616773087006ecc874b4acbc26
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/freeSpacePeriodic/0/rhoM
@@ -0,0 +1,39 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      rhoM;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -3 0 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    xPeriodic
+    {
+        type            cyclic;
+    }
+
+    yPeriodic
+    {
+        type            cyclic;
+    }
+
+    zPeriodic
+    {
+        type            cyclic;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/dsmc/freeSpacePeriodic/0/rhoN b/tutorials/discreteMethods/dsmc/freeSpacePeriodic/0/rhoN
new file mode 100644
index 0000000000000000000000000000000000000000..038fd26de386704949e026bc29e577e24696f74e
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/freeSpacePeriodic/0/rhoN
@@ -0,0 +1,39 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      rhoN;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 -3 0 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    xPeriodic
+    {
+        type            cyclic;
+    }
+
+    yPeriodic
+    {
+        type            cyclic;
+    }
+
+    zPeriodic
+    {
+        type            cyclic;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/dsmc/freeSpacePeriodic/Allclean b/tutorials/discreteMethods/dsmc/freeSpacePeriodic/Allclean
new file mode 100755
index 0000000000000000000000000000000000000000..1cc972be26a9fa8c309f14c3c0d52659e62d236c
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/freeSpacePeriodic/Allclean
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+# Source tutorial clean functions
+. $WM_PROJECT_DIR/bin/tools/CleanFunctions
+
+cleanCase
+rm -rf 0/lagrangian 0/dsmcSigmaTcRMax
diff --git a/tutorials/discreteMethods/dsmc/freeSpacePeriodic/Allrun b/tutorials/discreteMethods/dsmc/freeSpacePeriodic/Allrun
new file mode 100755
index 0000000000000000000000000000000000000000..3c61ac798ec54d2bf1f7f6c8799de3e396ab53c9
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/freeSpacePeriodic/Allrun
@@ -0,0 +1,7 @@
+#!/bin/sh
+# Source tutorial run functions
+. $WM_PROJECT_DIR/bin/tools/RunFunctions
+
+runApplication blockMesh
+runApplication dsmcInitialise
+runApplication dsmcFoam
diff --git a/tutorials/discreteMethods/dsmc/freeSpacePeriodic/constant/dsmcProperties b/tutorials/discreteMethods/dsmc/freeSpacePeriodic/constant/dsmcProperties
new file mode 100644
index 0000000000000000000000000000000000000000..395e69cbaa421127d0c60e7dd8bf126b94c60e4e
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/freeSpacePeriodic/constant/dsmcProperties
@@ -0,0 +1,77 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      dsmcProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+
+// General Properties
+// ~~~~~~~~~~~~~~~~~~
+
+nEquivalentParticles            1e12;
+
+
+// Wall Interaction Model
+// ~~~~~~~~~~~~~~~~~~~~~~
+
+WallInteractionModel            SpecularReflection;
+
+SpecularReflectionCoeffs {}
+
+// Binary Collision Model
+// ~~~~~~~~~~~~~~~~~~~~~~
+
+BinaryCollisionModel            LarsenBorgnakkeVariableHardSphere;
+
+LarsenBorgnakkeVariableHardSphereCoeffs
+{
+    Tref                        273;
+    relaxationCollisionNumber   5.0;
+}
+
+
+// Inflow Boundary Model
+// ~~~~~~~~~~~~~~~~~~~~~
+InflowBoundaryModel             NoInflow;
+
+NoInflowCoeffs {}
+
+// Molecular species
+// ~~~~~~~~~~~~~~~~~
+
+typeIdList                      (N2 O2);
+
+moleculeProperties
+{
+    N2
+    {
+        mass                            46.5e-27;
+        diameter                        4.17e-10;
+        internalDegreesOfFreedom        2;
+        viscosityCoefficient            1.656e-5;
+        omega                           0.74;
+    }
+
+    O2
+    {
+        mass                            53.12e-27;
+        diameter                        4.07e-10;
+        internalDegreesOfFreedom        2;
+        viscosityCoefficient            1.919e-5;
+        omega                           0.77;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/dsmc/freeSpacePeriodic/constant/polyMesh/blockMeshDict b/tutorials/discreteMethods/dsmc/freeSpacePeriodic/constant/polyMesh/blockMeshDict
new file mode 100644
index 0000000000000000000000000000000000000000..fc32e203da6c40ae08ff6677eaf6318988a1b364
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/freeSpacePeriodic/constant/polyMesh/blockMeshDict
@@ -0,0 +1,73 @@
+/*---------------------------------------------------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.3                                   |
+|   \\  /    A nd           | Web:      http://www.openfoam.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+FoamFile
+{
+    version         2.0;
+    format          ascii;
+
+    root            "";
+    case            "";
+    instance        "";
+    local           "";
+
+    class           dictionary;
+    object          blockMeshDict;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+convertToMeters 0.01;
+
+vertices
+(
+    (-5 -4 -4)
+    (5 -4 -4)
+    (5 4 -4)
+    (-5 4 -4)
+    (-5 -4 4)
+    (5 -4 4)
+    (5 4 4)
+    (-5 4 4)
+);
+
+blocks
+(
+    hex (0 1 2 3 4 5 6 7) (20 16 16) simpleGrading (1 1 1)
+);
+
+patches
+(
+    cyclic
+    xPeriodic
+    (
+        (1 2 6 5)
+        (0 4 7 3)
+    )
+
+    cyclic
+    yPeriodic
+    (
+        (2 3 7 6)
+        (0 1 5 4)
+    )
+
+    cyclic
+    zPeriodic
+    (
+        (4 5 6 7)
+        (0 3 2 1)
+    )
+)
+
+mergePatchPairs
+(
+);
+
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/dsmc/freeSpacePeriodic/constant/polyMesh/boundary b/tutorials/discreteMethods/dsmc/freeSpacePeriodic/constant/polyMesh/boundary
new file mode 100644
index 0000000000000000000000000000000000000000..1a6e0ae58a917c86ccc62d907ad966c4ff8cecdc
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/freeSpacePeriodic/constant/polyMesh/boundary
@@ -0,0 +1,43 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       polyBoundaryMesh;
+    location    "constant/polyMesh";
+    object      boundary;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+3
+(
+    xPeriodic
+    {
+        type            cyclic;
+        nFaces          512;
+        startFace       14464;
+        featureCos      0.9;
+    }
+    yPeriodic
+    {
+        type            cyclic;
+        nFaces          640;
+        startFace       14976;
+        featureCos      0.9;
+    }
+    zPeriodic
+    {
+        type            cyclic;
+        nFaces          640;
+        startFace       15616;
+        featureCos      0.9;
+    }
+)
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/dsmc/freeSpacePeriodic/system/controlDict b/tutorials/discreteMethods/dsmc/freeSpacePeriodic/system/controlDict
new file mode 100644
index 0000000000000000000000000000000000000000..2a3172775adfe838f4cd3fa5c1200a5ac2b23fdd
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/freeSpacePeriodic/system/controlDict
@@ -0,0 +1,124 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      controlDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+startFrom       startTime;
+
+startTime       0;
+
+stopAt          endTime;
+
+endTime         1e-3;
+
+deltaT          1e-6;
+
+writeControl    runTime;
+
+writeInterval   1e-4;
+
+purgeWrite      0;
+
+writeFormat     ascii;
+
+writePrecision  10;
+
+writeCompression uncompressed;
+
+timeFormat      general;
+
+timePrecision   6;
+
+runTimeModifiable yes;
+
+adjustTimeStep  no;
+
+functions
+(
+    dsmcFields1
+    {
+        type dsmcFields;
+        enabled   on;
+        functionObjectLibs ( "libutilityFunctionObjects.so" );
+        outputControl     outputTime;
+    }
+    fieldAverage1
+    {
+        type fieldAverage;
+        functionObjectLibs ( "libfieldFunctionObjects.so" );
+        outputControl     outputTime;
+        resetOnOutput     off;
+        fields
+        (
+            rhoN
+            {
+                 mean on;
+                 prime2Mean off;
+                 base time;
+            }
+            rhoM
+            {
+                mean on;
+                prime2Mean off;
+                base time;
+            }
+            dsmcRhoN
+            {
+                 mean on;
+                 prime2Mean off;
+                 base time;
+            }
+            momentum
+            {
+                mean on;
+                prime2Mean off;
+                base time;
+            }
+            linearKE
+            {
+                mean on;
+                prime2Mean off;
+                base time;
+            }
+            internalE
+            {
+                mean on;
+                prime2Mean off;
+                base time;
+            }
+            iDof
+            {
+                mean on;
+                prime2Mean off;
+                base time;
+            }
+            q
+            {
+                 mean on;
+                 prime2Mean off;
+                 base time;
+            }
+            fD
+            {
+                mean on;
+                prime2Mean off;
+                base time;
+            }
+        );
+    }
+);
+
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/molecularDynamics/gnemdFoam/nanoNozzle/system/decomposeParDict b/tutorials/discreteMethods/dsmc/freeSpacePeriodic/system/decomposeParDict
similarity index 95%
rename from tutorials/discreteMethods/molecularDynamics/gnemdFoam/nanoNozzle/system/decomposeParDict
rename to tutorials/discreteMethods/dsmc/freeSpacePeriodic/system/decomposeParDict
index 2b1855ea4634bda4d66c8129ce2d08d57a2fb0c9..77c30529ecfb004319a85c5dc2d05bbfe32dff38 100644
--- a/tutorials/discreteMethods/molecularDynamics/gnemdFoam/nanoNozzle/system/decomposeParDict
+++ b/tutorials/discreteMethods/dsmc/freeSpacePeriodic/system/decomposeParDict
@@ -17,11 +17,11 @@ FoamFile
 
 numberOfSubdomains 4;
 
-method          metis;
+method          simple;
 
 simpleCoeffs
 {
-    n               ( 4 1 1 );
+    n               ( 1 2 2 );
     delta           0.001;
 }
 
diff --git a/tutorials/mesh/snappyHexMesh/iglooWithFridges/system/fvSolution b/tutorials/discreteMethods/dsmc/freeSpacePeriodic/system/dsmcInitialiseDict
similarity index 84%
rename from tutorials/mesh/snappyHexMesh/iglooWithFridges/system/fvSolution
rename to tutorials/discreteMethods/dsmc/freeSpacePeriodic/system/dsmcInitialiseDict
index 876c8c233f9dece81ca38c9186f66b783bae4ec9..c8ec236aa69ea5d841b4f00f73246960c6916ea4 100644
--- a/tutorials/mesh/snappyHexMesh/iglooWithFridges/system/fvSolution
+++ b/tutorials/discreteMethods/dsmc/freeSpacePeriodic/system/dsmcInitialiseDict
@@ -11,20 +11,19 @@ FoamFile
     format      ascii;
     class       dictionary;
     location    "system";
-    object      fvSolution;
+    object      dsmcInitialiseDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-solvers
-{}
-
-PISO
+numberDensities
 {
-    nCorrectors     2;
-    nNonOrthogonalCorrectors 0;
-    pRefCell        0;
-    pRefValue       0;
-}
+    N2          0.777e20;
+    O2          0.223e20;
+};
+
+temperature     300;
+
+velocity        (1950 0 0);
 
 
 // ************************************************************************* //
diff --git a/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCube/system/fvSchemes b/tutorials/discreteMethods/dsmc/freeSpacePeriodic/system/fvSchemes
similarity index 76%
rename from tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCube/system/fvSchemes
rename to tutorials/discreteMethods/dsmc/freeSpacePeriodic/system/fvSchemes
index f923afcfacf038c5cd521b7e67b1c11b4d535866..42fda7921ca0a70a5b1f415666f49d4d07befb7b 100644
--- a/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCube/system/fvSchemes
+++ b/tutorials/discreteMethods/dsmc/freeSpacePeriodic/system/fvSchemes
@@ -17,43 +17,37 @@ FoamFile
 
 ddtSchemes
 {
-    default         Euler;
+    default         none;
 }
 
 gradSchemes
 {
-    default         Gauss linear;
-    grad(p)         Gauss linear;
+    default         none;
 }
 
 divSchemes
 {
     default         none;
-    div(phi,U)      Gauss linear;
 }
 
 laplacianSchemes
 {
     default         none;
-    laplacian(nu,U) Gauss linear corrected;
-    laplacian(1|A(U),p) Gauss linear corrected;
 }
 
 interpolationSchemes
 {
-    default         linear;
-    interpolate(HbyA) linear;
+    default         none;
 }
 
 snGradSchemes
 {
-    default         corrected;
+    default         none;
 }
 
 fluxRequired
 {
     default         no;
-    p               ;
 }
 
 
diff --git a/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCube/system/mdEquilibrationDict b/tutorials/discreteMethods/dsmc/freeSpacePeriodic/system/fvSolution
similarity index 91%
rename from tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCube/system/mdEquilibrationDict
rename to tutorials/discreteMethods/dsmc/freeSpacePeriodic/system/fvSolution
index 2dd296045bbd9676b0bf078bc53d2dc5e4958365..1e39435250fcc6c21b5ca292d31d085533ce9716 100644
--- a/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCube/system/mdEquilibrationDict
+++ b/tutorials/discreteMethods/dsmc/freeSpacePeriodic/system/fvSolution
@@ -11,11 +11,12 @@ FoamFile
     format      ascii;
     class       dictionary;
     location    "system";
-    object      mdEquilibrationDict;
+    object      fvSolution;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-equilibrationTargetTemperature 300;
-
+solvers
+{
+}
 
 // ************************************************************************* //
diff --git a/tutorials/discreteMethods/dsmc/freeSpaceStream/0/boundaryT b/tutorials/discreteMethods/dsmc/freeSpaceStream/0/boundaryT
new file mode 100644
index 0000000000000000000000000000000000000000..6bc3a516f0d2f1aa48d409cbbf8395422c840b64
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/freeSpaceStream/0/boundaryT
@@ -0,0 +1,42 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      boundaryT;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 1 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    outlet
+    {
+        type            fixedValue;
+        value           uniform 300;
+    }
+
+    inlet
+    {
+        type            fixedValue;
+        value           uniform 300;
+    }
+
+    sides
+    {
+        type            fixedValue;
+        value           uniform 300;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/dsmc/freeSpaceStream/0/boundaryU b/tutorials/discreteMethods/dsmc/freeSpaceStream/0/boundaryU
new file mode 100644
index 0000000000000000000000000000000000000000..6da36fb365e6c59359906b491672040021b098f2
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/freeSpaceStream/0/boundaryU
@@ -0,0 +1,42 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volVectorField;
+    object      boundaryU;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -1 0 0 0 0];
+
+internalField   uniform (0 0 0);
+
+boundaryField
+{
+    outlet
+    {
+        type            fixedValue;
+        value           uniform (1325 -352 823);
+    }
+
+    inlet
+    {
+        type            fixedValue;
+        value           uniform (1325 -352 823);
+    }
+
+    sides
+    {
+        type            fixedValue;
+        value           uniform (1325 -352 823);
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/dsmc/freeSpaceStream/0/dsmcRhoN b/tutorials/discreteMethods/dsmc/freeSpaceStream/0/dsmcRhoN
new file mode 100644
index 0000000000000000000000000000000000000000..022a5f973f6fbf7720f1aae69f889c7fd3a8b3f3
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/freeSpaceStream/0/dsmcRhoN
@@ -0,0 +1,39 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      dsmcRhoN;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 -3 0 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    outlet
+    {
+        type            zeroGradient;
+    }
+
+    inlet
+    {
+        type            zeroGradient;
+    }
+
+    sides
+    {
+        type            zeroGradient;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/dsmc/freeSpaceStream/0/fD b/tutorials/discreteMethods/dsmc/freeSpaceStream/0/fD
new file mode 100644
index 0000000000000000000000000000000000000000..e2da50d9a45e5de9309a2ab4e5aefda91f48ec0e
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/freeSpaceStream/0/fD
@@ -0,0 +1,39 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volVectorField;
+    object      fD;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -1 -2 0 0 0 0];
+
+internalField   uniform (0 0 0);
+
+boundaryField
+{
+    outlet
+    {
+        type            zeroGradient;
+    }
+
+    inlet
+    {
+        type            zeroGradient;
+    }
+
+    sides
+    {
+        type            zeroGradient;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/dsmc/freeSpaceStream/0/iDof b/tutorials/discreteMethods/dsmc/freeSpaceStream/0/iDof
new file mode 100644
index 0000000000000000000000000000000000000000..00ba74788aca028e4a424fa1f60a183e4fb7922a
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/freeSpaceStream/0/iDof
@@ -0,0 +1,39 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      iDof;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 -3 0 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    outlet
+    {
+        type            zeroGradient;
+    }
+
+    inlet
+    {
+        type            zeroGradient;
+    }
+
+    sides
+    {
+        type            zeroGradient;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/dsmc/freeSpaceStream/0/internalE b/tutorials/discreteMethods/dsmc/freeSpaceStream/0/internalE
new file mode 100644
index 0000000000000000000000000000000000000000..4408c91430ae071b500cfdcd489c4c950b74ae2e
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/freeSpaceStream/0/internalE
@@ -0,0 +1,39 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      internalE;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -1 -2 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    outlet
+    {
+        type            zeroGradient;
+    }
+
+    inlet
+    {
+        type            zeroGradient;
+    }
+
+    sides
+    {
+        type            zeroGradient;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/dsmc/freeSpaceStream/0/interpolaterhoN b/tutorials/discreteMethods/dsmc/freeSpaceStream/0/interpolaterhoN
new file mode 100644
index 0000000000000000000000000000000000000000..a9fe596c4337a79927b0a77ef635a72b11a79173
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/freeSpaceStream/0/interpolaterhoN
@@ -0,0 +1,42 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       surfaceScalarField;
+    location    "0";
+    object      interpolaterhoN;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 -3 0 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    outlet
+    {
+        type            calculated;
+        value           uniform 0;
+    }
+    inlet
+    {
+        type            calculated;
+        value           uniform 0;
+    }
+    sides
+    {
+        type            calculated;
+        value           uniform 0;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/dsmc/freeSpaceStream/0/linearKE b/tutorials/discreteMethods/dsmc/freeSpaceStream/0/linearKE
new file mode 100644
index 0000000000000000000000000000000000000000..691ab915aeee75db15d2e7eb5c8b546aa2983bed
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/freeSpaceStream/0/linearKE
@@ -0,0 +1,39 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      linearKE;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -1 -2 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    outlet
+    {
+        type            zeroGradient;
+    }
+
+    inlet
+    {
+        type            zeroGradient;
+    }
+
+    sides
+    {
+        type            zeroGradient;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/dsmc/freeSpaceStream/0/momentum b/tutorials/discreteMethods/dsmc/freeSpaceStream/0/momentum
new file mode 100644
index 0000000000000000000000000000000000000000..a3e4a449ae32749d72ad412447dc2d5c0226fdea
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/freeSpaceStream/0/momentum
@@ -0,0 +1,39 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volVectorField;
+    object      momentum;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -2 -1 0 0 0 0];
+
+internalField   uniform (0 0 0);
+
+boundaryField
+{
+    outlet
+    {
+        type            zeroGradient;
+    }
+
+    inlet
+    {
+        type            zeroGradient;
+    }
+
+    sides
+    {
+        type            zeroGradient;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/dsmc/freeSpaceStream/0/q b/tutorials/discreteMethods/dsmc/freeSpaceStream/0/q
new file mode 100644
index 0000000000000000000000000000000000000000..5b4fcc23bf75d0e65697c6f3db845ec42d411051
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/freeSpaceStream/0/q
@@ -0,0 +1,39 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      q;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 0 -3 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    outlet
+    {
+        type            zeroGradient;
+    }
+
+    inlet
+    {
+        type            zeroGradient;
+    }
+
+    sides
+    {
+        type            zeroGradient;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/dsmc/freeSpaceStream/0/rhoM b/tutorials/discreteMethods/dsmc/freeSpaceStream/0/rhoM
new file mode 100644
index 0000000000000000000000000000000000000000..9f2443cdbb2b856fbdece7a849f5e29fb1e3c714
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/freeSpaceStream/0/rhoM
@@ -0,0 +1,39 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      rhoM;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -3 0 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    outlet
+    {
+        type            zeroGradient;
+    }
+
+    inlet
+    {
+        type            zeroGradient;
+    }
+
+    sides
+    {
+        type            zeroGradient;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/dsmc/freeSpaceStream/0/rhoN b/tutorials/discreteMethods/dsmc/freeSpaceStream/0/rhoN
new file mode 100644
index 0000000000000000000000000000000000000000..e99d2742a3098a506fbe4fcda5f7e18c271f629e
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/freeSpaceStream/0/rhoN
@@ -0,0 +1,39 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      rhoN;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 -3 0 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    outlet
+    {
+        type            zeroGradient;
+    }
+
+    inlet
+    {
+        type            zeroGradient;
+    }
+
+    sides
+    {
+        type            zeroGradient;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/dsmc/freeSpaceStream/Allclean b/tutorials/discreteMethods/dsmc/freeSpaceStream/Allclean
new file mode 100755
index 0000000000000000000000000000000000000000..1cc972be26a9fa8c309f14c3c0d52659e62d236c
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/freeSpaceStream/Allclean
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+# Source tutorial clean functions
+. $WM_PROJECT_DIR/bin/tools/CleanFunctions
+
+cleanCase
+rm -rf 0/lagrangian 0/dsmcSigmaTcRMax
diff --git a/tutorials/discreteMethods/dsmc/freeSpaceStream/Allrun b/tutorials/discreteMethods/dsmc/freeSpaceStream/Allrun
new file mode 100755
index 0000000000000000000000000000000000000000..3c61ac798ec54d2bf1f7f6c8799de3e396ab53c9
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/freeSpaceStream/Allrun
@@ -0,0 +1,7 @@
+#!/bin/sh
+# Source tutorial run functions
+. $WM_PROJECT_DIR/bin/tools/RunFunctions
+
+runApplication blockMesh
+runApplication dsmcInitialise
+runApplication dsmcFoam
diff --git a/tutorials/discreteMethods/dsmc/freeSpaceStream/constant/dsmcProperties b/tutorials/discreteMethods/dsmc/freeSpaceStream/constant/dsmcProperties
new file mode 100644
index 0000000000000000000000000000000000000000..d4d67559c117cf4a092f48a2ecd424509a0d0914
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/freeSpaceStream/constant/dsmcProperties
@@ -0,0 +1,87 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      dsmcProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+
+// General Properties
+// ~~~~~~~~~~~~~~~~~~
+
+nEquivalentParticles            1e12;
+
+
+// Wall Interaction Model
+// ~~~~~~~~~~~~~~~~~~~~~~
+
+WallInteractionModel            MaxwellianThermal;
+
+MaxwellianThermalCoeffs {}
+
+
+// Binary Collision Model
+// ~~~~~~~~~~~~~~~~~~~~~~
+
+BinaryCollisionModel            LarsenBorgnakkeVariableHardSphere;
+
+LarsenBorgnakkeVariableHardSphereCoeffs
+{
+    Tref                        273;
+    relaxationCollisionNumber   5.0;
+}
+
+
+// Inflow Boundary Model
+// ~~~~~~~~~~~~~~~~~~~~~
+
+InflowBoundaryModel             FreeStream;
+
+FreeStreamCoeffs
+{
+    numberDensities
+    {
+        N2      0.777e20;
+        O2      0.223e20;
+    };
+}
+
+
+// Molecular species
+// ~~~~~~~~~~~~~~~~~
+
+typeIdList                      (N2 O2);
+
+moleculeProperties
+{
+    N2
+    {
+        mass                            46.5e-27;
+        diameter                        4.17e-10;
+        internalDegreesOfFreedom        2;
+        viscosityCoefficient            1.656e-5;
+        omega                           0.74;
+    }
+
+    O2
+    {
+        mass                            53.12e-27;
+        diameter                        4.07e-10;
+        internalDegreesOfFreedom        2;
+        viscosityCoefficient            1.919e-5;
+        omega                           0.77;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/dsmc/freeSpaceStream/constant/polyMesh/blockMeshDict b/tutorials/discreteMethods/dsmc/freeSpaceStream/constant/polyMesh/blockMeshDict
new file mode 100644
index 0000000000000000000000000000000000000000..9343042c3890e0751d912f76edea446f84d70c30
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/freeSpaceStream/constant/polyMesh/blockMeshDict
@@ -0,0 +1,73 @@
+/*---------------------------------------------------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.3                                   |
+|   \\  /    A nd           | Web:      http://www.openfoam.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+FoamFile
+{
+    version         2.0;
+    format          ascii;
+
+    root            "";
+    case            "";
+    instance        "";
+    local           "";
+
+    class           dictionary;
+    object          blockMeshDict;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+convertToMeters 0.01;
+
+vertices
+(
+    (-5 -4 -4)
+    (5 -4 -4)
+    (5 4 -4)
+    (-5 4 -4)
+    (-5 -4 4)
+    (5 -4 4)
+    (5 4 4)
+    (-5 4 4)
+);
+
+blocks
+(
+    hex (0 1 2 3 4 5 6 7) (20 16 16) simpleGrading (1 1 1)
+);
+
+patches
+(
+    patch
+    outlet
+    (
+        (1 2 6 5)
+    )
+
+    patch
+    inlet
+    (
+        (0 4 7 3)
+    )
+
+    patch
+    sides
+    (
+        (2 3 7 6)
+        (0 1 5 4)
+        (4 5 6 7)
+        (0 3 2 1)
+    )
+)
+
+mergePatchPairs
+(
+);
+
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/dsmc/freeSpaceStream/constant/polyMesh/boundary b/tutorials/discreteMethods/dsmc/freeSpaceStream/constant/polyMesh/boundary
new file mode 100644
index 0000000000000000000000000000000000000000..502b052a7ffd8630ceb3b449f005aecee7c05edc
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/freeSpaceStream/constant/polyMesh/boundary
@@ -0,0 +1,40 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       polyBoundaryMesh;
+    location    "constant/polyMesh";
+    object      boundary;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+3
+(
+    outlet
+    {
+        type            patch;
+        nFaces          256;
+        startFace       14464;
+    }
+    inlet
+    {
+        type            patch;
+        nFaces          256;
+        startFace       14720;
+    }
+    sides
+    {
+        type            patch;
+        nFaces          1280;
+        startFace       14976;
+    }
+)
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/dsmc/freeSpaceStream/system/controlDict b/tutorials/discreteMethods/dsmc/freeSpaceStream/system/controlDict
new file mode 100644
index 0000000000000000000000000000000000000000..f123a030860f2fd7374e5e6f19af066031e68cc5
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/freeSpaceStream/system/controlDict
@@ -0,0 +1,124 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      controlDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+startFrom       startTime;
+
+startTime       0;
+
+stopAt          endTime;
+
+endTime         2e-2;
+
+deltaT          1e-6;
+
+writeControl    runTime;
+
+writeInterval   1e-3;
+
+purgeWrite      0;
+
+writeFormat     ascii;
+
+writePrecision  10;
+
+writeCompression uncompressed;
+
+timeFormat      general;
+
+timePrecision   6;
+
+runTimeModifiable yes;
+
+adjustTimeStep  no;
+
+functions
+(
+    dsmcFields1
+    {
+        type dsmcFields;
+        enabled   on;
+        functionObjectLibs ( "libutilityFunctionObjects.so" );
+        outputControl     outputTime;
+    }
+    fieldAverage1
+    {
+        type fieldAverage;
+        functionObjectLibs ( "libfieldFunctionObjects.so" );
+        outputControl     outputTime;
+        resetOnOutput     off;
+        fields
+        (
+            rhoN
+            {
+                 mean on;
+                 prime2Mean off;
+                 base time;
+            }
+            rhoM
+            {
+                mean on;
+                prime2Mean off;
+                base time;
+            }
+            dsmcRhoN
+            {
+                 mean on;
+                 prime2Mean off;
+                 base time;
+            }
+            momentum
+            {
+                mean on;
+                prime2Mean off;
+                base time;
+            }
+            linearKE
+            {
+                mean on;
+                prime2Mean off;
+                base time;
+            }
+            internalE
+            {
+                mean on;
+                prime2Mean off;
+                base time;
+            }
+            iDof
+            {
+                mean on;
+                prime2Mean off;
+                base time;
+            }
+            q
+            {
+                 mean on;
+                 prime2Mean off;
+                 base time;
+            }
+            fD
+            {
+                mean on;
+                prime2Mean off;
+                base time;
+            }
+        );
+    }
+);
+
+
+// ************************************************************************* //
diff --git a/tutorials/mesh/snappyHexMesh/motorBike/system/decomposeParDict b/tutorials/discreteMethods/dsmc/freeSpaceStream/system/decomposeParDict
similarity index 83%
rename from tutorials/mesh/snappyHexMesh/motorBike/system/decomposeParDict
rename to tutorials/discreteMethods/dsmc/freeSpaceStream/system/decomposeParDict
index c0de7923c6eef835d325647f9b074087c87add01..77c30529ecfb004319a85c5dc2d05bbfe32dff38 100644
--- a/tutorials/mesh/snappyHexMesh/motorBike/system/decomposeParDict
+++ b/tutorials/discreteMethods/dsmc/freeSpaceStream/system/decomposeParDict
@@ -15,31 +15,36 @@ FoamFile
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-numberOfSubdomains 6;
+numberOfSubdomains 4;
 
-method          hierarchical;
+method          simple;
 
 simpleCoeffs
 {
-    n               ( 4 1 1 );
+    n               ( 1 2 2 );
     delta           0.001;
 }
 
 hierarchicalCoeffs
 {
-    n               ( 3 2 1 );
+    n               ( 1 1 1 );
     delta           0.001;
     order           xyz;
 }
 
-manualCoeffs
+metisCoeffs
 {
-    dataFile        "cellDecomposition";
+    processorWeights ( 1 1 1 1 );
 }
 
-metisCoeffs
+manualCoeffs
 {
+    dataFile        "";
 }
 
+distributed     no;
+
+roots           ( );
+
 
 // ************************************************************************* //
diff --git a/tutorials/discreteMethods/dsmc/freeSpaceStream/system/dsmcInitialiseDict b/tutorials/discreteMethods/dsmc/freeSpaceStream/system/dsmcInitialiseDict
new file mode 100644
index 0000000000000000000000000000000000000000..b5cc93423253ea73ac94aaedd58c300082a08d71
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/freeSpaceStream/system/dsmcInitialiseDict
@@ -0,0 +1,29 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      dsmcInitialiseDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+numberDensities
+{
+    N2          0.777e20;
+    O2          0.223e20;
+};
+
+temperature     300;
+
+velocity        (1325 -352 823);
+
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/molecularDynamics/gnemdFoam/nanoNozzle/system/fvSchemes b/tutorials/discreteMethods/dsmc/freeSpaceStream/system/fvSchemes
similarity index 76%
rename from tutorials/discreteMethods/molecularDynamics/gnemdFoam/nanoNozzle/system/fvSchemes
rename to tutorials/discreteMethods/dsmc/freeSpaceStream/system/fvSchemes
index f923afcfacf038c5cd521b7e67b1c11b4d535866..42fda7921ca0a70a5b1f415666f49d4d07befb7b 100644
--- a/tutorials/discreteMethods/molecularDynamics/gnemdFoam/nanoNozzle/system/fvSchemes
+++ b/tutorials/discreteMethods/dsmc/freeSpaceStream/system/fvSchemes
@@ -17,43 +17,37 @@ FoamFile
 
 ddtSchemes
 {
-    default         Euler;
+    default         none;
 }
 
 gradSchemes
 {
-    default         Gauss linear;
-    grad(p)         Gauss linear;
+    default         none;
 }
 
 divSchemes
 {
     default         none;
-    div(phi,U)      Gauss linear;
 }
 
 laplacianSchemes
 {
     default         none;
-    laplacian(nu,U) Gauss linear corrected;
-    laplacian(1|A(U),p) Gauss linear corrected;
 }
 
 interpolationSchemes
 {
-    default         linear;
-    interpolate(HbyA) linear;
+    default         none;
 }
 
 snGradSchemes
 {
-    default         corrected;
+    default         none;
 }
 
 fluxRequired
 {
     default         no;
-    p               ;
 }
 
 
diff --git a/tutorials/discreteMethods/molecularDynamics/gnemdFoam/constrictedChannel/system/mdSolution b/tutorials/discreteMethods/dsmc/freeSpaceStream/system/fvSolution
similarity index 89%
rename from tutorials/discreteMethods/molecularDynamics/gnemdFoam/constrictedChannel/system/mdSolution
rename to tutorials/discreteMethods/dsmc/freeSpaceStream/system/fvSolution
index dfef948901fc9407d740d27c3f58e12fc09f78c8..1e39435250fcc6c21b5ca292d31d085533ce9716 100644
--- a/tutorials/discreteMethods/molecularDynamics/gnemdFoam/constrictedChannel/system/mdSolution
+++ b/tutorials/discreteMethods/dsmc/freeSpaceStream/system/fvSolution
@@ -11,13 +11,12 @@ FoamFile
     format      ascii;
     class       dictionary;
     location    "system";
-    object      mdSolution;
+    object      fvSolution;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-integrationMethod verletLeapfrog;
-
-potentialEnergyLimit 5.256e-20;
-
+solvers
+{
+}
 
 // ************************************************************************* //
diff --git a/tutorials/discreteMethods/dsmc/supersonicCorner/0/boundaryT b/tutorials/discreteMethods/dsmc/supersonicCorner/0/boundaryT
new file mode 100644
index 0000000000000000000000000000000000000000..7b7fbd9188e6f8cd4052203c687de78be8ece6f1
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/supersonicCorner/0/boundaryT
@@ -0,0 +1,41 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      boundaryT;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 1 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    flow
+    {
+        type            fixedValue;
+        value           uniform 300;
+    }
+
+    entrance
+    {
+        type            symmetryPlane;
+    }
+
+    walls
+    {
+        type            fixedValue;
+        value           uniform 1000;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/dsmc/supersonicCorner/0/boundaryU b/tutorials/discreteMethods/dsmc/supersonicCorner/0/boundaryU
new file mode 100644
index 0000000000000000000000000000000000000000..1c21f7372c5f4c4b1312995046cd9aa9cf1aa419
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/supersonicCorner/0/boundaryU
@@ -0,0 +1,41 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volVectorField;
+    object      boundaryU;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -1 0 0 0 0];
+
+internalField   uniform (0 0 0);
+
+boundaryField
+{
+    flow
+    {
+        type            fixedValue;
+        value           uniform (1936 0 0);
+    }
+
+    entrance
+    {
+        type            symmetryPlane;
+    }
+
+    walls
+    {
+        type            fixedValue;
+        value           uniform (0 0 0);
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/dsmc/supersonicCorner/0/dsmcRhoN b/tutorials/discreteMethods/dsmc/supersonicCorner/0/dsmcRhoN
new file mode 100644
index 0000000000000000000000000000000000000000..21d83f0b9f634e8cd24cb80fb1978327759087bb
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/supersonicCorner/0/dsmcRhoN
@@ -0,0 +1,39 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      dsmcRhoN;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 -3 0 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    flow
+    {
+        type            zeroGradient;
+    }
+
+    entrance
+    {
+        type            symmetryPlane;
+    }
+
+    walls
+    {
+        type            zeroGradient;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/dsmc/supersonicCorner/0/fD b/tutorials/discreteMethods/dsmc/supersonicCorner/0/fD
new file mode 100644
index 0000000000000000000000000000000000000000..ae1df5d0114e5e2e3639632a9f3d220c660c9b76
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/supersonicCorner/0/fD
@@ -0,0 +1,41 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volVectorField;
+    object      fD;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -1 -2 0 0 0 0];
+
+internalField   uniform (0 0 0);
+
+boundaryField
+{
+    flow
+    {
+        type            calculated;
+        value           uniform (0 0 0);
+    }
+
+    entrance
+    {
+        type            symmetryPlane;
+    }
+
+    walls
+    {
+        type            calculated;
+        value           uniform (0 0 0);
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/dsmc/supersonicCorner/0/iDof b/tutorials/discreteMethods/dsmc/supersonicCorner/0/iDof
new file mode 100644
index 0000000000000000000000000000000000000000..50c9624edd4051c04e53a804ba33d1b93865c261
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/supersonicCorner/0/iDof
@@ -0,0 +1,40 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      iDof;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 -3 0 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    flow
+    {
+        type            zeroGradient;
+    }
+
+    entrance
+    {
+        type            symmetryPlane;
+    }
+
+    walls
+    {
+        type            zeroGradient;
+    }
+
+}
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/dsmc/supersonicCorner/0/internalE b/tutorials/discreteMethods/dsmc/supersonicCorner/0/internalE
new file mode 100644
index 0000000000000000000000000000000000000000..51f1e04d8b3755fbbd6fc067b8420bf7034304ef
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/supersonicCorner/0/internalE
@@ -0,0 +1,39 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      internalE;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -1 -2 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    flow
+    {
+        type            zeroGradient;
+    }
+
+    entrance
+    {
+        type            symmetryPlane;
+    }
+
+    walls
+    {
+        type            zeroGradient;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/dsmc/supersonicCorner/0/linearKE b/tutorials/discreteMethods/dsmc/supersonicCorner/0/linearKE
new file mode 100644
index 0000000000000000000000000000000000000000..765956b135c36edd515b971b9967569b27ddfc14
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/supersonicCorner/0/linearKE
@@ -0,0 +1,39 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      linearKE;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -1 -2 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    flow
+    {
+        type            zeroGradient;
+    }
+
+    entrance
+    {
+        type            symmetryPlane;
+    }
+
+    walls
+    {
+        type            zeroGradient;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/dsmc/supersonicCorner/0/momentum b/tutorials/discreteMethods/dsmc/supersonicCorner/0/momentum
new file mode 100644
index 0000000000000000000000000000000000000000..1899e2e7c665f50bdf5694b385a34b439df38da3
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/supersonicCorner/0/momentum
@@ -0,0 +1,40 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volVectorField;
+    object      momentum;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -2 -1 0 0 0 0];
+
+internalField   uniform (0 0 0);
+
+boundaryField
+{
+    flow
+    {
+        type            zeroGradient;
+    }
+
+    entrance
+    {
+        type            symmetryPlane;
+    }
+
+    walls
+    {
+        type            zeroGradient;
+    }
+
+}
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/dsmc/supersonicCorner/0/q b/tutorials/discreteMethods/dsmc/supersonicCorner/0/q
new file mode 100644
index 0000000000000000000000000000000000000000..51c1b8cdec3797bdbb05cae3b736935810cc240c
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/supersonicCorner/0/q
@@ -0,0 +1,42 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      q;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 0 -3 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    flow
+    {
+        type            calculated;
+        value           uniform 0;
+
+    }
+
+    entrance
+    {
+        type            symmetryPlane;
+    }
+
+    walls
+    {
+        type            calculated;
+        value           uniform 0;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/dsmc/supersonicCorner/0/rhoM b/tutorials/discreteMethods/dsmc/supersonicCorner/0/rhoM
new file mode 100644
index 0000000000000000000000000000000000000000..7f2d427a479cecad93dfb5de554c0a83c1b1d6d5
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/supersonicCorner/0/rhoM
@@ -0,0 +1,39 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      rhoM;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -3 0 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    flow
+    {
+        type            zeroGradient;
+    }
+
+    entrance
+    {
+        type            symmetryPlane;
+    }
+
+    walls
+    {
+        type            zeroGradient;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/dsmc/supersonicCorner/0/rhoN b/tutorials/discreteMethods/dsmc/supersonicCorner/0/rhoN
new file mode 100644
index 0000000000000000000000000000000000000000..98ffe8ca1e723aa85a7f493d783fa1b2b0bb8d1e
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/supersonicCorner/0/rhoN
@@ -0,0 +1,39 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      rhoN;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 -3 0 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    flow
+    {
+        type            zeroGradient;
+    }
+
+    entrance
+    {
+        type            symmetryPlane;
+    }
+
+    walls
+    {
+        type            zeroGradient;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/dsmc/supersonicCorner/Allclean b/tutorials/discreteMethods/dsmc/supersonicCorner/Allclean
new file mode 100755
index 0000000000000000000000000000000000000000..5622060c8ee23c89d8743d2217de1c3b7381e6b0
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/supersonicCorner/Allclean
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+# Source tutorial clean functions
+. $WM_PROJECT_DIR/bin/tools/CleanFunctions
+
+cleanCase
+rm -rf 0/lagrangian 0/dsmcSigmaTcRMax
+rm -rf processor*
+rm -f system/machines
\ No newline at end of file
diff --git a/tutorials/discreteMethods/dsmc/supersonicCorner/Allrun b/tutorials/discreteMethods/dsmc/supersonicCorner/Allrun
new file mode 100755
index 0000000000000000000000000000000000000000..402135df749b6f380b1c870897e27c053918afb4
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/supersonicCorner/Allrun
@@ -0,0 +1,11 @@
+#!/bin/sh
+# Source tutorial run functions
+. $WM_PROJECT_DIR/bin/tools/RunFunctions
+
+runApplication blockMesh
+runApplication decomposePar
+runParallel dsmcInitialise 4 system/machines
+hostname > system/machines
+runParallel dsmcFoam 4 system/machines
+runApplication reconstructPar -noLagrangian
+
diff --git a/tutorials/discreteMethods/dsmc/supersonicCorner/constant/dsmcProperties b/tutorials/discreteMethods/dsmc/supersonicCorner/constant/dsmcProperties
new file mode 100644
index 0000000000000000000000000000000000000000..2d950a4814d564bd56c7afc883ae2e1d1f652c75
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/supersonicCorner/constant/dsmcProperties
@@ -0,0 +1,88 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      dsmcProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+
+// General Properties
+// ~~~~~~~~~~~~~~~~~~
+
+nEquivalentParticles            1.2e12;
+
+
+// Wall Interaction Model
+// ~~~~~~~~~~~~~~~~~~~~~~
+
+//WallInteractionModel            SpecularReflection;
+WallInteractionModel            MaxwellianThermal;
+
+SpecularReflectionCoeffs {}
+
+MaxwellianThermalCoeffs {}
+
+
+// Binary Collision Model
+// ~~~~~~~~~~~~~~~~~~~~~~
+
+//BinaryCollisionModel            VariableHardSphere;
+BinaryCollisionModel            LarsenBorgnakkeVariableHardSphere;
+
+VariableHardSphereCoeffs
+{
+    Tref        273;
+}
+
+LarsenBorgnakkeVariableHardSphereCoeffs
+{
+    Tref                        273;
+    relaxationCollisionNumber   5.0;
+}
+
+
+// Inflow Boundary Model
+// ~~~~~~~~~~~~~~~~~~~~~
+
+InflowBoundaryModel             FreeStream;
+//InflowBoundaryModel             NoInflow;
+
+NoInflowCoeffs {}
+
+FreeStreamCoeffs
+{
+    numberDensities
+    {
+        Ar      1.0e20;
+    };
+}
+
+
+// Molecular species
+// ~~~~~~~~~~~~~~~~~
+
+typeIdList                      (Ar);
+
+moleculeProperties
+{
+    Ar
+    {
+        mass                            66.3e-27;
+        diameter                        4.17e-10;
+        internalDegreesOfFreedom        0;
+        viscosityCoefficient            2.117e-5;
+        omega                           0.81;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/dsmc/supersonicCorner/constant/polyMesh/blockMeshDict b/tutorials/discreteMethods/dsmc/supersonicCorner/constant/polyMesh/blockMeshDict
new file mode 100644
index 0000000000000000000000000000000000000000..6b9aa389277a491baea403d7ee5e16a4a3add664
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/supersonicCorner/constant/polyMesh/blockMeshDict
@@ -0,0 +1,83 @@
+/*---------------------------------------------------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.3                                   |
+|   \\  /    A nd           | Web:      http://www.openfoam.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+FoamFile
+{
+    version         2.0;
+    format          ascii;
+
+    root            "";
+    case            "";
+    instance        "";
+    local           "";
+
+    class           dictionary;
+    object          blockMeshDict;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+convertToMeters 0.01;
+
+vertices
+(
+    (0 0 0)
+    (5 0 0)
+    (5 18 0)
+    (0 18 0)
+    (0 0 18)
+    (5 0 18)
+    (5 18 18)
+    (0 18 18)
+    (30 0 0)
+    (30 18 0)
+    (30 0 18)
+    (30 18 18)
+
+);
+
+blocks
+(
+    hex (0 1 2 3 4 5 6 7) (10 36 36) simpleGrading (1 1 1)
+    hex (1 8 9 2 5 10 11 6) (50 36 36) simpleGrading (1 1 1)
+);
+
+patches
+(
+    patch
+    flow
+    (
+        (8 9 11 10)
+        (0 4 7 3)
+        (2 3 7 6)
+        (2 6 11 9)
+        (4 5 6 7)
+        (5 10 11 6)
+    )
+
+    symmetryPlane
+    entrance
+    (
+        (0 1 5 4)
+        (0 3 2 1)
+    )
+
+    wall
+    walls
+    (
+        (1 8 10 5)
+        (1 2 9 8)
+    )
+)
+
+mergePatchPairs
+(
+);
+
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/dsmc/supersonicCorner/constant/polyMesh/boundary b/tutorials/discreteMethods/dsmc/supersonicCorner/constant/polyMesh/boundary
new file mode 100644
index 0000000000000000000000000000000000000000..87ffe1fea34bf9faaf2139d0208b367378d4cb50
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/supersonicCorner/constant/polyMesh/boundary
@@ -0,0 +1,40 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       polyBoundaryMesh;
+    location    "constant/polyMesh";
+    object      boundary;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+3
+(
+    flow
+    {
+        type            patch;
+        nFaces          6912;
+        startFace       227664;
+    }
+    entrance
+    {
+        type            symmetryPlane;
+        nFaces          720;
+        startFace       234576;
+    }
+    walls
+    {
+        type            wall;
+        nFaces          3600;
+        startFace       235296;
+    }
+)
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/dsmc/supersonicCorner/system/controlDict b/tutorials/discreteMethods/dsmc/supersonicCorner/system/controlDict
new file mode 100644
index 0000000000000000000000000000000000000000..2e92a436f3be2f2352abd09dc95034e42ea55867
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/supersonicCorner/system/controlDict
@@ -0,0 +1,124 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      controlDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+startFrom       startTime;
+
+startTime       0;
+
+stopAt          endTime;
+
+endTime         0.025;
+
+deltaT          1e-6;
+
+writeControl    runTime;
+
+writeInterval   1e-3;
+
+purgeWrite      0;
+
+writeFormat     ascii;
+
+writePrecision  10;
+
+writeCompression uncompressed;
+
+timeFormat      general;
+
+timePrecision   6;
+
+runTimeModifiable yes;
+
+adjustTimeStep  no;
+
+functions
+(
+    dsmcFields1
+    {
+        type dsmcFields;
+        enabled   on;
+        functionObjectLibs ( "libutilityFunctionObjects.so" );
+        outputControl     outputTime;
+    }
+    fieldAverage1
+    {
+        type fieldAverage;
+        functionObjectLibs ( "libfieldFunctionObjects.so" );
+        outputControl     outputTime;
+        resetOnOutput     off;
+        fields
+        (
+            rhoN
+            {
+                 mean on;
+                 prime2Mean off;
+                 base time;
+            }
+            rhoM
+            {
+                mean on;
+                prime2Mean off;
+                base time;
+            }
+            dsmcRhoN
+            {
+                 mean on;
+                 prime2Mean off;
+                 base time;
+            }
+            momentum
+            {
+                mean on;
+                prime2Mean off;
+                base time;
+            }
+            linearKE
+            {
+                mean on;
+                prime2Mean off;
+                base time;
+            }
+            internalE
+            {
+                mean on;
+                prime2Mean off;
+                base time;
+            }
+            iDof
+            {
+                mean on;
+                prime2Mean off;
+                base time;
+            }
+            q
+            {
+                 mean on;
+                 prime2Mean off;
+                 base time;
+            }
+            fD
+            {
+                mean on;
+                prime2Mean off;
+                base time;
+            }
+        );
+    }
+);
+
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/dsmc/supersonicCorner/system/decomposeParDict b/tutorials/discreteMethods/dsmc/supersonicCorner/system/decomposeParDict
new file mode 100644
index 0000000000000000000000000000000000000000..bf8dffb737c91db0646cde4bd56a4fd0629c82b9
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/supersonicCorner/system/decomposeParDict
@@ -0,0 +1,50 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      decomposeParDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+numberOfSubdomains 4;
+
+method          simple;
+
+simpleCoeffs
+{
+    n               ( 2 2 1 );
+    delta           0.001;
+}
+
+hierarchicalCoeffs
+{
+    n               ( 1 1 1 );
+    delta           0.001;
+    order           xyz;
+}
+
+metisCoeffs
+{
+    processorWeights ( 1 1 1 1 );
+}
+
+manualCoeffs
+{
+    dataFile        "";
+}
+
+distributed     no;
+
+roots           ( );
+
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/dsmc/supersonicCorner/system/dsmcInitialiseDict b/tutorials/discreteMethods/dsmc/supersonicCorner/system/dsmcInitialiseDict
new file mode 100644
index 0000000000000000000000000000000000000000..54774bfb88a21b624a707ea455139fa86b4d834a
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/supersonicCorner/system/dsmcInitialiseDict
@@ -0,0 +1,28 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      dsmcInitialiseDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+numberDensities
+{
+    Ar          1.0e20;
+};
+
+temperature     300;
+
+velocity        (1936 0 0);
+
+
+// ************************************************************************* //
diff --git a/tutorials/mesh/snappyHexMesh/iglooWithFridges/system/fvSchemes b/tutorials/discreteMethods/dsmc/supersonicCorner/system/fvSchemes
similarity index 72%
rename from tutorials/mesh/snappyHexMesh/iglooWithFridges/system/fvSchemes
rename to tutorials/discreteMethods/dsmc/supersonicCorner/system/fvSchemes
index 2fa85964b7e2113902ff5be6f03334f6777d84b6..42fda7921ca0a70a5b1f415666f49d4d07befb7b 100644
--- a/tutorials/mesh/snappyHexMesh/iglooWithFridges/system/fvSchemes
+++ b/tutorials/discreteMethods/dsmc/supersonicCorner/system/fvSchemes
@@ -17,44 +17,37 @@ FoamFile
 
 ddtSchemes
 {
-    default         Euler;
+    default         none;
 }
 
 gradSchemes
 {
-    default         Gauss linear;
-    grad(p)         Gauss linear;
+    default         none;
 }
 
 divSchemes
 {
     default         none;
-    div(phi,U)      Gauss linear;
 }
 
 laplacianSchemes
 {
     default         none;
-    laplacian(nu,U) Gauss linear corrected;
-    laplacian(1|A(U),p) Gauss linear corrected;
-    laplacian(diffusivity,cellMotionU) Gauss linear uncorrected;
 }
 
 interpolationSchemes
 {
-    default         linear;
-    interpolate(HbyA) linear;
+    default         none;
 }
 
 snGradSchemes
 {
-    default         corrected;
+    default         none;
 }
 
 fluxRequired
 {
     default         no;
-    p               ;
 }
 
 
diff --git a/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCube/system/mdSolution b/tutorials/discreteMethods/dsmc/supersonicCorner/system/fvSolution
similarity index 89%
rename from tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCube/system/mdSolution
rename to tutorials/discreteMethods/dsmc/supersonicCorner/system/fvSolution
index dfef948901fc9407d740d27c3f58e12fc09f78c8..1e39435250fcc6c21b5ca292d31d085533ce9716 100644
--- a/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCube/system/mdSolution
+++ b/tutorials/discreteMethods/dsmc/supersonicCorner/system/fvSolution
@@ -11,13 +11,12 @@ FoamFile
     format      ascii;
     class       dictionary;
     location    "system";
-    object      mdSolution;
+    object      fvSolution;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-integrationMethod verletLeapfrog;
-
-potentialEnergyLimit 5.256e-20;
-
+solvers
+{
+}
 
 // ************************************************************************* //
diff --git a/tutorials/discreteMethods/dsmc/wedge15Ma5/0/boundaryT b/tutorials/discreteMethods/dsmc/wedge15Ma5/0/boundaryT
new file mode 100644
index 0000000000000000000000000000000000000000..7aa7905710a606e8e72678e02d59887826ff8690
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/wedge15Ma5/0/boundaryT
@@ -0,0 +1,42 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      boundaryT;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 1 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    flow
+    {
+        type            fixedValue;
+        value           uniform 300;
+    }
+
+    obstacle
+    {
+        type            fixedValue;
+        value           uniform 550;
+    }
+
+    periodic
+    {
+        type            cyclic;
+    }
+}
+
+// ************************************************************************* //
+
diff --git a/tutorials/discreteMethods/dsmc/wedge15Ma5/0/boundaryU b/tutorials/discreteMethods/dsmc/wedge15Ma5/0/boundaryU
new file mode 100644
index 0000000000000000000000000000000000000000..dfa4801d7000be60ae30e5df7eae230669c6c674
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/wedge15Ma5/0/boundaryU
@@ -0,0 +1,41 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volVectorField;
+    object      boundaryU;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -1 0 0 0 0];
+
+internalField   uniform (0 0 0);
+
+boundaryField
+{
+    flow
+    {
+        type            fixedValue;
+        value           uniform (1736 0 0);
+    }
+
+    obstacle
+    {
+        type            fixedValue;
+        value           uniform (0 0 0);
+    }
+
+    periodic
+    {
+        type            cyclic;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/dsmc/wedge15Ma5/0/dsmcRhoN b/tutorials/discreteMethods/dsmc/wedge15Ma5/0/dsmcRhoN
new file mode 100644
index 0000000000000000000000000000000000000000..aa3f432f46e752d9fa2c5dfb6fa48acae998d595
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/wedge15Ma5/0/dsmcRhoN
@@ -0,0 +1,39 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      dsmcRhoN;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 -3 0 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    flow
+    {
+        type            zeroGradient;
+    }
+
+    obstacle
+    {
+        type            zeroGradient;
+    }
+
+    periodic
+    {
+        type            cyclic;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/dsmc/wedge15Ma5/0/fD b/tutorials/discreteMethods/dsmc/wedge15Ma5/0/fD
new file mode 100644
index 0000000000000000000000000000000000000000..85d8c061d08d0fcb845b785396bc62df0d9ef1eb
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/wedge15Ma5/0/fD
@@ -0,0 +1,40 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volVectorField;
+    object      fD;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -1 -2 0 0 0 0];
+
+internalField   uniform (0 0 0);
+
+boundaryField
+{
+    flow
+    {
+        type            zeroGradient;
+    }
+
+    obstacle
+    {
+        type            calculated;
+        value           uniform (0 0 0);
+    }
+
+    periodic
+    {
+        type            cyclic;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/dsmc/wedge15Ma5/0/iDof b/tutorials/discreteMethods/dsmc/wedge15Ma5/0/iDof
new file mode 100644
index 0000000000000000000000000000000000000000..542b42e13ad3ccab8803ed830c00a5a20eb98433
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/wedge15Ma5/0/iDof
@@ -0,0 +1,39 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      iDof;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 -3 0 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    flow
+    {
+        type            zeroGradient;
+    }
+
+    obstacle
+    {
+        type            zeroGradient;
+    }
+
+    periodic
+    {
+        type            cyclic;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/dsmc/wedge15Ma5/0/internalE b/tutorials/discreteMethods/dsmc/wedge15Ma5/0/internalE
new file mode 100644
index 0000000000000000000000000000000000000000..496e5afd331f009db8322ad39797d198181ff3d4
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/wedge15Ma5/0/internalE
@@ -0,0 +1,39 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      internalE;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -1 -2 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    flow
+    {
+        type            zeroGradient;
+    }
+
+    obstacle
+    {
+        type            zeroGradient;
+    }
+
+    periodic
+    {
+        type            cyclic;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/dsmc/wedge15Ma5/0/linearKE b/tutorials/discreteMethods/dsmc/wedge15Ma5/0/linearKE
new file mode 100644
index 0000000000000000000000000000000000000000..c52708ab4d2410adf5713f509dba421d66384afc
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/wedge15Ma5/0/linearKE
@@ -0,0 +1,39 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      linearKE;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -1 -2 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    flow
+    {
+        type            zeroGradient;
+    }
+
+    obstacle
+    {
+        type            zeroGradient;
+    }
+
+    periodic
+    {
+        type            cyclic;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/dsmc/wedge15Ma5/0/momentum b/tutorials/discreteMethods/dsmc/wedge15Ma5/0/momentum
new file mode 100644
index 0000000000000000000000000000000000000000..338ace9965dcaa4a102273cafa2d7efa1417978f
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/wedge15Ma5/0/momentum
@@ -0,0 +1,39 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volVectorField;
+    object      momentum;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -2 -1 0 0 0 0];
+
+internalField   uniform (0 0 0);
+
+boundaryField
+{
+    flow
+    {
+        type            zeroGradient;
+    }
+
+    obstacle
+    {
+        type            zeroGradient;
+    }
+
+    periodic
+    {
+        type            cyclic;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/dsmc/wedge15Ma5/0/q b/tutorials/discreteMethods/dsmc/wedge15Ma5/0/q
new file mode 100644
index 0000000000000000000000000000000000000000..6e2a7fd4511edcf27b0d919741eebcd79d6798e8
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/wedge15Ma5/0/q
@@ -0,0 +1,40 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      q;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 0 -3 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    flow
+    {
+        type            zeroGradient;
+    }
+
+    obstacle
+    {
+        type            calculated;
+        value           uniform 0;
+    }
+
+    periodic
+    {
+        type            cyclic;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/dsmc/wedge15Ma5/0/rhoM b/tutorials/discreteMethods/dsmc/wedge15Ma5/0/rhoM
new file mode 100644
index 0000000000000000000000000000000000000000..2ab4a148b1b27cf318081d080f622353c4e1967c
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/wedge15Ma5/0/rhoM
@@ -0,0 +1,39 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      rhoM;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -3 0 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    flow
+    {
+        type            zeroGradient;
+    }
+
+    obstacle
+    {
+        type            zeroGradient;
+    }
+
+    periodic
+    {
+        type            cyclic;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/dsmc/wedge15Ma5/0/rhoN b/tutorials/discreteMethods/dsmc/wedge15Ma5/0/rhoN
new file mode 100644
index 0000000000000000000000000000000000000000..fa576a150c96e545742e6196b0eac499584fbd96
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/wedge15Ma5/0/rhoN
@@ -0,0 +1,39 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      rhoN;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 -3 0 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    flow
+    {
+        type            zeroGradient;
+    }
+
+    obstacle
+    {
+        type            zeroGradient;
+    }
+
+    periodic
+    {
+        type            cyclic;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/dsmc/wedge15Ma5/Allclean b/tutorials/discreteMethods/dsmc/wedge15Ma5/Allclean
new file mode 100755
index 0000000000000000000000000000000000000000..a81bd945995ae2476d7d49837ef74e909c5053c9
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/wedge15Ma5/Allclean
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+# Source tutorial clean functions
+. $WM_PROJECT_DIR/bin/tools/CleanFunctions
+
+cleanCase
+rm -rf 0/lagrangian 0/dsmcSigmaTcRMax
+rm -rf processor*
+rm -rf forces1
+rm -f system/machines
\ No newline at end of file
diff --git a/tutorials/discreteMethods/dsmc/wedge15Ma5/Allrun b/tutorials/discreteMethods/dsmc/wedge15Ma5/Allrun
new file mode 100755
index 0000000000000000000000000000000000000000..402135df749b6f380b1c870897e27c053918afb4
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/wedge15Ma5/Allrun
@@ -0,0 +1,11 @@
+#!/bin/sh
+# Source tutorial run functions
+. $WM_PROJECT_DIR/bin/tools/RunFunctions
+
+runApplication blockMesh
+runApplication decomposePar
+runParallel dsmcInitialise 4 system/machines
+hostname > system/machines
+runParallel dsmcFoam 4 system/machines
+runApplication reconstructPar -noLagrangian
+
diff --git a/tutorials/discreteMethods/dsmc/wedge15Ma5/constant/dsmcProperties b/tutorials/discreteMethods/dsmc/wedge15Ma5/constant/dsmcProperties
new file mode 100644
index 0000000000000000000000000000000000000000..bd07689d19a53dcc80bd34dc6b13499797c5378b
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/wedge15Ma5/constant/dsmcProperties
@@ -0,0 +1,89 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      dsmcProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+
+// General Properties
+// ~~~~~~~~~~~~~~~~~~
+
+nEquivalentParticles            5e12;
+
+
+// Wall Interaction Model
+// ~~~~~~~~~~~~~~~~~~~~~~
+
+WallInteractionModel            MaxwellianThermal;
+
+MaxwellianThermalCoeffs {}
+
+
+// Binary Collision Model
+// ~~~~~~~~~~~~~~~~~~~~~~
+
+BinaryCollisionModel            LarsenBorgnakkeVariableHardSphere;
+
+LarsenBorgnakkeVariableHardSphereCoeffs
+{
+    Tref                        273;
+    relaxationCollisionNumber   5.0;
+}
+
+
+// Inflow Boundary Model
+// ~~~~~~~~~~~~~~~~~~~~~
+
+InflowBoundaryModel             FreeStream;
+
+NoInflowCoeffs {}
+
+FreeStreamCoeffs
+{
+    numberDensities
+    {
+        N2      0.777e20;
+        O2      0.223e20;
+    };
+}
+
+
+// Molecular species
+// ~~~~~~~~~~~~~~~~~
+
+typeIdList                      (N2 O2);
+
+moleculeProperties
+{
+    N2
+    {
+        mass                            46.5e-27;
+        diameter                        4.17e-10;
+        internalDegreesOfFreedom        2;
+        viscosityCoefficient            1.656e-5;
+        omega                           0.74;
+    }
+
+    O2
+    {
+        mass                            53.12e-27;
+        diameter                        4.07e-10;
+        internalDegreesOfFreedom        2;
+        viscosityCoefficient            1.919e-5;
+        omega                           0.77;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/dsmc/wedge15Ma5/constant/polyMesh/blockMeshDict b/tutorials/discreteMethods/dsmc/wedge15Ma5/constant/polyMesh/blockMeshDict
new file mode 100644
index 0000000000000000000000000000000000000000..858a5357faec9992f7284e4e55ee3a8fd874d742
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/wedge15Ma5/constant/polyMesh/blockMeshDict
@@ -0,0 +1,74 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      blockMeshDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+convertToMeters 1;
+
+vertices
+(
+    (-0.15242 0       -0.05)
+    ( 0       0       -0.05)
+    ( 0.3048  0.081670913853  -0.05)
+    (-0.15242 0.3 -0.05)
+    ( 0       0.3 -0.05)
+    ( 0.3048  0.3 -0.05)
+
+    (-0.15242 0        0.05)
+    ( 0       0        0.05)
+    ( 0.3048  0.081670913853 0.05)
+    (-0.15242 0.3  0.05)
+    ( 0       0.3  0.05)
+    ( 0.3048  0.3  0.05)
+
+);
+
+blocks
+(
+    hex (0 1 4 3 6 7 10 9 ) (20 40 12) simpleGrading (1 1 1)
+    hex (1 2 5 4 7 8 11 10) (40 40 12) simpleGrading (1 1 1)
+);
+
+edges
+(
+);
+
+patches
+(
+    patch flow
+    (
+        (0 6 9 3)
+        (2 5 11 8)
+        (0 1 7 6)
+        (3 9 10 4)
+        (4 10 11 5)
+    )
+    wall obstacle
+    (
+        (1 2 8 7)
+    )
+    cyclic periodic
+    (
+        (0 3 4 1)
+        (1 4 5 2)
+        (6 7 10 9)
+        (7 8 11 10)
+    )
+);
+
+mergePatchPairs
+(
+);
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/dsmc/wedge15Ma5/constant/polyMesh/boundary b/tutorials/discreteMethods/dsmc/wedge15Ma5/constant/polyMesh/boundary
new file mode 100644
index 0000000000000000000000000000000000000000..5c089fb5b2b5fc9bf41e975d323a588a8c50291d
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/wedge15Ma5/constant/polyMesh/boundary
@@ -0,0 +1,41 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       polyBoundaryMesh;
+    location    "constant/polyMesh";
+    object      boundary;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+3
+(
+    flow
+    {
+        type            patch;
+        nFaces          1920;
+        startFace       82800;
+    }
+    obstacle
+    {
+        type            wall;
+        nFaces          480;
+        startFace       84720;
+    }
+    periodic
+    {
+        type            cyclic;
+        nFaces          4800;
+        startFace       85200;
+        featureCos      0.9;
+    }
+)
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/dsmc/wedge15Ma5/system/controlDict b/tutorials/discreteMethods/dsmc/wedge15Ma5/system/controlDict
new file mode 100644
index 0000000000000000000000000000000000000000..b069a968567e38b9d2b079d3a33ee3621256362e
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/wedge15Ma5/system/controlDict
@@ -0,0 +1,139 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      controlDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+startFrom       latestTime;
+
+startTime       0;
+
+stopAt          endTime;
+
+endTime         0.00125;
+// endTime         0.01;
+
+deltaT          2e-6;
+
+writeControl    runTime;
+
+writeInterval   1e-4;
+
+purgeWrite      0;
+
+writeFormat     ascii;
+
+writePrecision  10;
+
+writeCompression uncompressed;
+
+timeFormat      general;
+
+timePrecision   6;
+
+runTimeModifiable yes;
+
+adjustTimeStep  no;
+
+functions
+(
+    dsmcFields1
+    {
+        type dsmcFields;
+        enabled   on;
+        functionObjectLibs ( "libutilityFunctionObjects.so" );
+        outputControl     outputTime;
+    }
+
+    fieldAverage1
+    {
+        type fieldAverage;
+        functionObjectLibs ( "libfieldFunctionObjects.so" );
+        outputControl     outputTime;
+        resetOnOutput     off;
+        fields
+        (
+            rhoN
+            {
+                 mean on;
+                 prime2Mean off;
+                 base time;
+            }
+            rhoM
+            {
+                mean on;
+                prime2Mean off;
+                base time;
+            }
+            dsmcRhoN
+            {
+                 mean on;
+                 prime2Mean off;
+                 base time;
+            }
+            momentum
+            {
+                mean on;
+                prime2Mean off;
+                base time;
+            }
+            linearKE
+            {
+                mean on;
+                prime2Mean off;
+                base time;
+            }
+            internalE
+            {
+                mean on;
+                prime2Mean off;
+                base time;
+            }
+            iDof
+            {
+                mean on;
+                prime2Mean off;
+                base time;
+            }
+            q
+            {
+                 mean on;
+                 prime2Mean off;
+                 base time;
+            }
+            fD
+            {
+                mean on;
+                prime2Mean off;
+                base time;
+            }
+        );
+    }
+
+    forces1
+    {
+        type        forces;
+        enabled     on;
+        functionObjectLibs ( "libforces.so" );
+        outputControl     outputTime;
+        patches     ( obstacle );
+        directForceDensity true;
+        fDName      fDMean;
+        CofR        ( 0 0 0 );
+        log         on;
+    }
+);
+
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/dsmc/wedge15Ma5/system/decomposeParDict b/tutorials/discreteMethods/dsmc/wedge15Ma5/system/decomposeParDict
new file mode 100644
index 0000000000000000000000000000000000000000..a533085b04aff6c998b4ad26efe83d5d65920e43
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/wedge15Ma5/system/decomposeParDict
@@ -0,0 +1,50 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      decomposeParDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+numberOfSubdomains 4;
+
+method          simple;
+
+simpleCoeffs
+{
+    n               ( 1 1 4 );
+    delta           0.001;
+}
+
+hierarchicalCoeffs
+{
+    n               ( 1 1 1 );
+    delta           0.001;
+    order           xyz;
+}
+
+metisCoeffs
+{
+    processorWeights ( 1 1 1 1 );
+}
+
+manualCoeffs
+{
+    dataFile        "";
+}
+
+distributed     no;
+
+roots           ( );
+
+
+// ************************************************************************* //
diff --git a/tutorials/mesh/snappyHexMesh/motorBike/system/fvSolution b/tutorials/discreteMethods/dsmc/wedge15Ma5/system/dsmcInitialiseDict
similarity index 84%
rename from tutorials/mesh/snappyHexMesh/motorBike/system/fvSolution
rename to tutorials/discreteMethods/dsmc/wedge15Ma5/system/dsmcInitialiseDict
index 876c8c233f9dece81ca38c9186f66b783bae4ec9..118c809b6f1cc8122ed391a2808a4eb984b4d836 100644
--- a/tutorials/mesh/snappyHexMesh/motorBike/system/fvSolution
+++ b/tutorials/discreteMethods/dsmc/wedge15Ma5/system/dsmcInitialiseDict
@@ -11,20 +11,19 @@ FoamFile
     format      ascii;
     class       dictionary;
     location    "system";
-    object      fvSolution;
+    object      dsmcInitialiseDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-solvers
-{}
-
-PISO
+numberDensities
 {
-    nCorrectors     2;
-    nNonOrthogonalCorrectors 0;
-    pRefCell        0;
-    pRefValue       0;
-}
+    N2          0.777e20;
+    O2          0.223e20;
+};
+
+temperature     300;
+
+velocity        (1736 0 0);
 
 
 // ************************************************************************* //
diff --git a/tutorials/discreteMethods/dsmc/wedge15Ma5/system/fvSchemes b/tutorials/discreteMethods/dsmc/wedge15Ma5/system/fvSchemes
new file mode 100644
index 0000000000000000000000000000000000000000..42fda7921ca0a70a5b1f415666f49d4d07befb7b
--- /dev/null
+++ b/tutorials/discreteMethods/dsmc/wedge15Ma5/system/fvSchemes
@@ -0,0 +1,54 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      fvSchemes;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ddtSchemes
+{
+    default         none;
+}
+
+gradSchemes
+{
+    default         none;
+}
+
+divSchemes
+{
+    default         none;
+}
+
+laplacianSchemes
+{
+    default         none;
+}
+
+interpolationSchemes
+{
+    default         none;
+}
+
+snGradSchemes
+{
+    default         none;
+}
+
+fluxRequired
+{
+    default         no;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/molecularDynamics/gnemdFoam/nanoNozzle/system/mdSolution b/tutorials/discreteMethods/dsmc/wedge15Ma5/system/fvSolution
similarity index 89%
rename from tutorials/discreteMethods/molecularDynamics/gnemdFoam/nanoNozzle/system/mdSolution
rename to tutorials/discreteMethods/dsmc/wedge15Ma5/system/fvSolution
index dfef948901fc9407d740d27c3f58e12fc09f78c8..1e39435250fcc6c21b5ca292d31d085533ce9716 100644
--- a/tutorials/discreteMethods/molecularDynamics/gnemdFoam/nanoNozzle/system/mdSolution
+++ b/tutorials/discreteMethods/dsmc/wedge15Ma5/system/fvSolution
@@ -11,13 +11,12 @@ FoamFile
     format      ascii;
     class       dictionary;
     location    "system";
-    object      mdSolution;
+    object      fvSolution;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-integrationMethod verletLeapfrog;
-
-potentialEnergyLimit 5.256e-20;
-
+solvers
+{
+}
 
 // ************************************************************************* //
diff --git a/tutorials/discreteMethods/molecularDynamics/gnemdFoam/constrictedChannel/constant/polyMesh/blockMeshDict b/tutorials/discreteMethods/molecularDynamics/gnemdFoam/constrictedChannel/constant/polyMesh/blockMeshDict
deleted file mode 100644
index ee03c904028a9b25f447b0cd74457e8a2439d6fb..0000000000000000000000000000000000000000
--- a/tutorials/discreteMethods/molecularDynamics/gnemdFoam/constrictedChannel/constant/polyMesh/blockMeshDict
+++ /dev/null
@@ -1,163 +0,0 @@
-/*--------------------------------*- C++ -*----------------------------------*\
-| =========                 |                                                 |
-| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.5                                   |
-|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
-|    \\/     M anipulation  |                                                 |
-\*---------------------------------------------------------------------------*/
-FoamFile
-{
-    version     2.0;
-    format      ascii;
-    class       dictionary;
-    object      blockMeshDict;
-}
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-convertToMeters 0.25e-9;
-
-vertices        
-(
-	(0 0 0) //0
-	(15 0 0)
-	(15 3 0)
-	(0 3 0)
-	(0 0 12)
-	(15 0 12)
-	(15 3 12)
-	(0 3 12) //7
-	(22 0 0)
-	(22 3 0)
-	(22 0 12)
-	(22 3 12) //11
-	(31 0 0)
-	(31 3 0)
-	(31 0 12)
-	(31 3 12) //15
-	(20 9 0)
-	(17 9 0)
-	(20 9 12)
-	(17 9 12) //19
-	(0 9 0)
-	(0 9 12) //21
-	(31 9 0)
-	(31 9 12) //23
-	(17 18 0)
-	(0 18 0)
-	(17 18 12)
-	(0 18 12) //27
-	(31 18 0)
-	(20 18 0)
-	(31 18 12)
-	(20 18 12) //31
-	(17 21 0)
-	(0 21 0)
-	(17 21 12)
-	(0 21 12) //35
-	(31 21 0)
-	(20 21 0)
-	(31 21 12)
-	(20 21 12) //39
-	(17 25 0)
-	(0 25 0)
-	(17 25 12)
-	(0 25 12) // 43
-	(31 25 0)
-	(20 25 0)
-	(31 25 12)
-	(20 25 12) // 47
-);
-
-blocks          
-(
- hex (0 1 2 3 4 5 6 7) bottomWall (15 3 6) simpleGrading (1 1 1) //1
- hex (1 8 9 2 5 10 11 6) bottomWall (3 3 6) simpleGrading (1 1 1) //2
- hex (2 9 16 17 6 11 18 19) bottomWall (3 6 6) simpleGrading (1 1 1) //3
- hex (8 12 13 9 10 14 15 11) bottomWall (9 3 6) simpleGrading (1 1 1) //4
- hex (3 2 17 20 7 6 19 21) liquid (15 6 6) simpleGrading (1 1 1) //5
- hex (20 17 24 25 21 19 26 27) liquid (15 9 6) simpleGrading (1 1 1) //6
- hex (25 24 32 33 27 26 34 35) liquid (15 3 6) simpleGrading (1 1 1) //6A
- hex (17 16 29 24 19 18 31 26) liquid (3 9 6) simpleGrading (1 1 1) //7
- hex (16 22 28 29 18 23 30 31) liquid (9 9 6) simpleGrading (1 1 1) //8
- hex (29 28 36 37 31 30 38 39) liquid (9 3 6) simpleGrading (1 1 1) //8A
- hex (9 13 22 16 11 15 23 18) liquid (9 6 6) simpleGrading (1 1 1) //9
- hex (33 32 40 41 35 34 42 43) topWall (15 3 6) simpleGrading (1 1 1) //10
- hex (32 37 45 40 34 39 47 42) topWall (3 3 6) simpleGrading (1 1 1) //11
- hex (24 29 37 32 26 31 39 34) topWall (3 3 6) simpleGrading (1 1 1) //12
- hex (37 36 44 45 39 38 46 47) topWall (9 3 6) simpleGrading (1 1 1) //13
-);
-
-patches         
-(
-	cyclic
-	periodicX
-	(
-		(0 4 7 3)
-		(3 7 21 20)
-		(20 21 27 25)
-		(25 27 35 33)
-		(33 35 43 41)
-		(12 13 15 14)
-		(13 22 23 15)
-		(22 28 30 23)
-		(28 36 38 30)
-		(36 44 46 38)
-	)
-
-	cyclic
-	periodicZ
-	(
-		(0 3 2 1)
-		(1 2 9 8)
-		(8 9 13 12)
-		(2 17 16 9)
-		(2 3 20 17)
-		(9 16 22 13)
-		(17 20 25 24)
-		(16 29 28 22)
-		(16 17 24 29)
-		(24 25 33 32)
-		(28 29 37 36)
-		(32 33 41 40)
-		(36 37 45 44)
-		(32 40 45 37)
-		(24 32 37 29)
-		(4 5 6 7)
-		(5 10 11 6)
-		(10 14 15 11)
-		(6 11 18 19)
-		(7 6 19 21)
-		(11 15 23 18)
-		(19 26 27 21)
-		(18 23 30 31)
-		(18 31 26 19)
-		(26 34 35 27)
-		(30 38 39 31)
-		(34 42 43 35)
-		(38 46 47 39)
-		(34 39 47 42)
-		(26 31 39 34)
-	)
-
-	wall
-	outerBoundaryBottom
-	(
-		(0 1 5 4)
-		(1 8 10 5)
-		(8 12 14 10)
-	)
-	
-	wall
-	outerBoundaryTop
-	(
-		(40 41 43 42)
-		(44 45 47 46)
-		(40 42 47 45)
-	)
-);
-
-mergePatchPairs 
-(
-);
-
-// ************************************************************************* //
diff --git a/tutorials/discreteMethods/molecularDynamics/gnemdFoam/constrictedChannel/system/molConfigDict b/tutorials/discreteMethods/molecularDynamics/gnemdFoam/constrictedChannel/system/molConfigDict
deleted file mode 100644
index 6bd9f1538e2c0723d9505442bdf2453015012738..0000000000000000000000000000000000000000
--- a/tutorials/discreteMethods/molecularDynamics/gnemdFoam/constrictedChannel/system/molConfigDict
+++ /dev/null
@@ -1,64 +0,0 @@
-/*--------------------------------*- C++ -*----------------------------------*\
-| =========                 |                                                 |
-| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.5                                   |
-|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
-|    \\/     M anipulation  |                                                 |
-\*---------------------------------------------------------------------------*/
-FoamFile
-{
-    version     2.0;
-    format      ascii;
-    class       dictionary;
-    location    "system";
-    object      molConfigDict;
-}
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-bottomWall
-{
-    massDensity     1220;
-    temperature     300;
-    velocityDistribution maxwellian;
-    bulkVelocity    ( 0 0 0 );
-    id              Ar;
-    mass            6.63352033e-26;
-    latticeStructure FCC;
-    anchor          ( 1.05e-09 3.18e-09 2.87e-09 );
-    anchorSpecifies molecule;
-    tethered        yes;
-    orientationAngles ( 30 0 0 );
-}
-
-liquid
-{
-    massDensity     1100;
-    temperature     250;
-    velocityDistribution maxwellian;
-    bulkVelocity    ( 245 0 0 );
-    id              Ne;
-    mass            3.350996347e-26;
-    latticeStructure SC;
-    anchor          ( 1.05e-09 3.18e-09 2.87e-09 );
-    anchorSpecifies molecule;
-    tethered        no;
-    orientationAngles ( 45 0 0 );
-}
-
-topWall
-{
-    massDensity     1220;
-    temperature     200;
-    velocityDistribution maxwellian;
-    bulkVelocity    ( 0 0 0 );
-    id              Ar;
-    mass            6.63352033e-26;
-    latticeStructure BCC;
-    anchor          ( 1.05e-09 3.18e-09 2.87e-09 );
-    anchorSpecifies corner;
-    tethered        yes;
-    orientationAngles ( 0 0 0 );
-}
-
-
-// ************************************************************************* //
diff --git a/tutorials/discreteMethods/molecularDynamics/gnemdFoam/constrictedChannel/system/potentialDict b/tutorials/discreteMethods/molecularDynamics/gnemdFoam/constrictedChannel/system/potentialDict
deleted file mode 100644
index 56a7bbee713bf0a24860dad6ad2e592c9e17f464..0000000000000000000000000000000000000000
--- a/tutorials/discreteMethods/molecularDynamics/gnemdFoam/constrictedChannel/system/potentialDict
+++ /dev/null
@@ -1,104 +0,0 @@
-/*--------------------------------*- C++ -*----------------------------------*\
-| =========                 |                                                 |
-| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.5                                   |
-|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
-|    \\/     M anipulation  |                                                 |
-\*---------------------------------------------------------------------------*/
-FoamFile
-{
-    version     2.0;
-    format      ascii;
-    class       dictionary;
-    location    "system";
-    object      potentialDict;
-}
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-removalOrder    2 ( Ne Ar );
-
-pair
-{
-    Ar-Ar
-    {
-        pairPotential   maitlandSmith;
-        rCut            1e-09;
-        rMin            1.5e-10;
-        dr              5e-14;
-        maitlandSmithCoeffs
-        {
-            m               13;
-            gamma           7.5;
-            rm              3.756e-10;
-            epsilon         1.990108438e-21;
-        }
-
-        energyScalingFunction doubleSigmoid;
-        doubleSigmoidCoeffs
-        {
-            shift1          9e-10;
-            scale1          -64771072;
-            shift2          9.7e-10;
-            scale2          -259084288;
-        }
-
-        writeTables     yes;
-    }
-
-    Ar-Ne
-    {
-        pairPotential   maitlandSmith;
-        rCut            9e-10;
-        rMin            1e-10;
-        dr              5e-14;
-        maitlandSmithCoeffs
-        {
-            m               13;
-            gamma           4;
-            rm              3.48e-10;
-            epsilon         8.765026657e-22;
-        }
-
-        energyScalingFunction shiftedForce;
-        writeTables     yes;
-    }
-
-    Ne-Ne
-    {
-        pairPotential   maitlandSmith;
-        rCut            8e-10;
-        rMin            1e-10;
-        dr              5e-14;
-        maitlandSmithCoeffs
-        {
-            m               13;
-            gamma           5;
-            rm              3.0739e-10;
-            epsilon         5.813260729e-22;
-        }
-
-        energyScalingFunction shiftedForce;
-        writeTables     yes;
-    }
-}
-
-tether
-{
-    Ar
-    {
-        tetherPotential restrainedHarmonicSpring;
-        restrainedHarmonicSpringCoeffs
-        {
-            springConstant  0.1;
-            rR              1.2e-09;
-        }
-    }
-}
-
-external
-{
-    gravity         ( 0 0 0 );
-}
-
-
-// ************************************************************************* //
diff --git a/tutorials/discreteMethods/molecularDynamics/gnemdFoam/nanoNozzle/system/molConfigDict b/tutorials/discreteMethods/molecularDynamics/gnemdFoam/nanoNozzle/system/molConfigDict
deleted file mode 100644
index 937130f4ac3ba22f29b727686566f27b6adfa45a..0000000000000000000000000000000000000000
--- a/tutorials/discreteMethods/molecularDynamics/gnemdFoam/nanoNozzle/system/molConfigDict
+++ /dev/null
@@ -1,64 +0,0 @@
-/*--------------------------------*- C++ -*----------------------------------*\
-| =========                 |                                                 |
-| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.5                                   |
-|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
-|    \\/     M anipulation  |                                                 |
-\*---------------------------------------------------------------------------*/
-FoamFile
-{
-    version     2.0;
-    format      ascii;
-    class       dictionary;
-    location    "system";
-    object      molConfigDict;
-}
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-sectionA
-{
-    massDensity     1220;
-    temperature     300;
-    velocityDistribution maxwellian;
-    bulkVelocity    ( -250 0 0 );
-    id              Ar;
-    mass            6.63352033e-26;
-    latticeStructure SC;
-    anchor          ( 0 0 0 );
-    anchorSpecifies molecule;
-    tethered        no;
-    orientationAngles ( 0 0 0 );
-}
-
-sectionB
-{
-    massDensity     1220;
-    temperature     300;
-    velocityDistribution maxwellian;
-    bulkVelocity    ( -250 0 0 );
-    id              Ne;
-    mass            3.350917e-26;
-    latticeStructure SC;
-    anchor          ( 0 0 0 );
-    anchorSpecifies molecule;
-    tethered        no;
-    orientationAngles ( 0 0 0 );
-}
-
-sectionC
-{
-    massDensity     1220;
-    temperature     300;
-    velocityDistribution maxwellian;
-    bulkVelocity    ( -250 0 0 );
-    id              Ar;
-    mass            6.63352033e-26;
-    latticeStructure SC;
-    anchor          ( 0 0 0 );
-    anchorSpecifies molecule;
-    tethered        no;
-    orientationAngles ( 0 0 0 );
-}
-
-
-// ************************************************************************* //
diff --git a/tutorials/discreteMethods/molecularDynamics/gnemdFoam/nanoNozzle/system/potentialDict b/tutorials/discreteMethods/molecularDynamics/gnemdFoam/nanoNozzle/system/potentialDict
deleted file mode 100644
index 0386a6994e0d9708901895788978e11f2d5bf453..0000000000000000000000000000000000000000
--- a/tutorials/discreteMethods/molecularDynamics/gnemdFoam/nanoNozzle/system/potentialDict
+++ /dev/null
@@ -1,86 +0,0 @@
-/*--------------------------------*- C++ -*----------------------------------*\
-| =========                 |                                                 |
-| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.5                                   |
-|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
-|    \\/     M anipulation  |                                                 |
-\*---------------------------------------------------------------------------*/
-FoamFile
-{
-    version     2.0;
-    format      ascii;
-    class       dictionary;
-    location    "system";
-    object      potentialDict;
-}
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-removalOrder    1 ( Ar );
-
-pair
-{
-    Ar-Ar
-    {
-        pairPotential   maitlandSmith;
-        rCut            1e-09;
-        rMin            1.5e-10;
-        dr              5e-14;
-        maitlandSmithCoeffs
-        {
-            m               13;
-            gamma           7.5;
-            rm              3.756e-10;
-            epsilon         1.990108438e-21;
-        }
-
-        energyScalingFunction doubleSigmoid;
-        doubleSigmoidCoeffs
-        {
-            shift1          9e-10;
-            scale1          -64771072;
-            shift2          9.7e-10;
-            scale2          -259084288;
-        }
-
-        writeTables     no;
-    }
-
-    Ar-Ne
-    {
-        pairPotential   maitlandSmith;
-        rCut            9e-10;
-        rMin            1e-10;
-        dr              5e-14;
-        maitlandSmithCoeffs
-        {
-            m               13;
-            gamma           4;
-            rm              3.48e-10;
-            epsilon         8.765026657e-22;
-        }
-
-        energyScalingFunction shiftedForce;
-        writeTables     no;
-    }
-
-    Ne-Ne
-    {
-        pairPotential   maitlandSmith;
-        rCut            8e-10;
-        rMin            1e-10;
-        dr              5e-14;
-        maitlandSmithCoeffs
-        {
-            m               13;
-            gamma           5;
-            rm              3.0739e-10;
-            epsilon         5.813260729e-22;
-        }
-
-        energyScalingFunction shiftedForce;
-        writeTables     no;
-    }
-}
-
-
-// ************************************************************************* //
diff --git a/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/Allclean b/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/Allclean
index 00dd874d7638805cf31b2c56b01b659e0792e1c4..d8245cb12bceacb3316f8f922262a9e911b9b155 100755
--- a/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/Allclean
+++ b/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/Allclean
@@ -3,9 +3,20 @@
 # Source tutorial clean functions
 . $WM_PROJECT_DIR/bin/tools/CleanFunctions
 
-cd periodicCube
-    rm -rf 0
-    rm -rf Ar-Ar
-    rm -rf constant/idList
+cd periodicCubeArgon
+    rm -rf 0/*
+    rm -f Ar-Ar
+    rm -f electrostatic
+    rm -f constant/idList
+    rm -rf constant/polyMesh/sets
+    cleanCase
+cd ..
+
+cd periodicCubeWater
+    rm -rf 0/*
+    rm -f O-O
+    rm -f electrostatic
+    rm -f constant/idList
+    rm -rf constant/polyMesh/sets
     cleanCase
 cd ..
diff --git a/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/Allrun b/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/Allrun
index 0c590da09a8c91a0815034deba71b3d4d681e762..59649516d94c727094c0725e9dd028a7c0a864d1 100755
--- a/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/Allrun
+++ b/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/Allrun
@@ -5,9 +5,14 @@
 
 application="mdEquilibrationFoam"
 
-cd periodicCube
+cd periodicCubeArgon
     runApplication blockMesh
-    runApplication molConfig
+    runApplication mdInitialise
     runApplication $application
 cd ..
 
+cd periodicCubeWater
+    runApplication blockMesh
+    runApplication mdInitialise
+    runApplication $application
+cd ..
\ No newline at end of file
diff --git a/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCube/system/molConfigDict b/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCube/system/molConfigDict
deleted file mode 100644
index 6f48e375e8c3ba101230631096b6ecd6df24a156..0000000000000000000000000000000000000000
--- a/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCube/system/molConfigDict
+++ /dev/null
@@ -1,34 +0,0 @@
-/*--------------------------------*- C++ -*----------------------------------*\
-| =========                 |                                                 |
-| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.5                                   |
-|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
-|    \\/     M anipulation  |                                                 |
-\*---------------------------------------------------------------------------*/
-FoamFile
-{
-    version     2.0;
-    format      ascii;
-    class       dictionary;
-    location    "system";
-    object      molConfigDict;
-}
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-liquid
-{
-    massDensity     1220;
-    temperature     300;
-    velocityDistribution maxwellian;
-    bulkVelocity    ( 0 0 0 );
-    id              Ar;
-    mass            6.63352033e-26;
-    latticeStructure SC;
-    anchor          ( 0 0 0 );
-    anchorSpecifies molecule;
-    tethered        no;
-    orientationAngles ( 0 0 0 );
-}
-
-
-// ************************************************************************* //
diff --git a/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCube/system/potentialDict b/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCube/system/potentialDict
deleted file mode 100644
index 1abf7b0e569b0a3b4dd0530d9c9f3ec332d43f6c..0000000000000000000000000000000000000000
--- a/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCube/system/potentialDict
+++ /dev/null
@@ -1,65 +0,0 @@
-/*--------------------------------*- C++ -*----------------------------------*\
-| =========                 |                                                 |
-| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.5                                   |
-|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
-|    \\/     M anipulation  |                                                 |
-\*---------------------------------------------------------------------------*/
-FoamFile
-{
-    version     2.0;
-    format      ascii;
-    class       dictionary;
-    location    "system";
-    object      potentialDict;
-}
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-removalOrder    1 ( Ar );
-
-pair
-{
-    Ar-Ar
-    {
-        pairPotential   azizChen;
-        rCut            1.2e-09;
-        rMin            1.5e-10;
-        dr              2e-14;
-        azizChenCoeffs
-        {
-            epsilon         1.97742255e-21;
-            rm              3.759e-10;
-            A               9502720;
-            alpha           16.345655;
-            C6              1.0914254;
-            C8              0.6002595;
-            C10             0.3700113;
-            D               1.4;
-            gamma           2;
-        }
-
-        energyScalingFunction noScaling;
-        writeTables     yes;
-    }
-}
-
-tether
-{
-    Ar
-    {
-        tetherPotential restrainedHarmonicSpring;
-        restrainedHarmonicSpringCoeffs
-        {
-            springConstant  0.0277;
-            rR              1.2e-09;
-        }
-    }
-}
-
-external
-{
-    gravity         ( 0 0 0 );
-}
-
-
-// ************************************************************************* //
diff --git a/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeArgon/constant/moleculeProperties b/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeArgon/constant/moleculeProperties
new file mode 100644
index 0000000000000000000000000000000000000000..567fce489ce0f0bd6805f2a72cb5001db238cbcd
--- /dev/null
+++ b/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeArgon/constant/moleculeProperties
@@ -0,0 +1,36 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      moleculeProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+Ar
+{
+    siteIds                     (Ar);
+    pairPotentialSiteIds        (Ar);
+    siteReferencePositions
+    (
+        (0 0 0)
+    );
+    siteMasses
+    (
+        6.63352033e-26
+    );
+    siteCharges
+    (
+        0
+    );
+}
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeArgon/constant/polyMesh/blockMeshDict b/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeArgon/constant/polyMesh/blockMeshDict
new file mode 100644
index 0000000000000000000000000000000000000000..23a2ee9874ef09ad03276bbe470cc179802a227c
--- /dev/null
+++ b/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeArgon/constant/polyMesh/blockMeshDict
@@ -0,0 +1,73 @@
+/*---------------------------------------------------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.3                                   |
+|   \\  /    A nd           | Web:      http://www.openfoam.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+FoamFile
+{
+    version         2.0;
+    format          ascii;
+
+    root            "";
+    case            "";
+    instance        "";
+    local           "";
+
+    class           dictionary;
+    object          blockMeshDict;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+convertToMeters 2.462491658e-9;
+
+vertices
+(
+    (-1 -1 -1)
+    (1 -1 -1)
+    (1 1 -1)
+    (-1 1 -1)
+    (-1 -1 1)
+    (1 -1 1)
+    (1 1 1)
+    (-1 1 1)
+);
+
+blocks
+(
+    hex (0 1 2 3 4 5 6 7) liquid (12 12 12) simpleGrading (1 1 1)
+);
+
+patches
+(
+    cyclic
+    periodicX
+    (
+        (1 2 6 5)
+        (0 4 7 3)
+    )
+
+    cyclic
+    periodicY
+    (
+        (2 3 7 6)
+        (0 1 5 4)
+    )
+
+    cyclic
+    periodicZ
+    (
+        (0 3 2 1)
+        (4 5 6 7)
+    )
+)
+
+mergePatchPairs
+(
+);
+
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCube/constant/polyMesh/boundary b/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeArgon/constant/polyMesh/boundary
similarity index 90%
rename from tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCube/constant/polyMesh/boundary
rename to tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeArgon/constant/polyMesh/boundary
index b3548de91cf4646aa6692d8e02914c5ed4755ff7..850c9baa1ec078697b17ec724c99578c6047e10d 100644
--- a/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCube/constant/polyMesh/boundary
+++ b/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeArgon/constant/polyMesh/boundary
@@ -1,8 +1,8 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.5                                   |
-|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
 FoamFile
diff --git a/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCube/system/controlDict b/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeArgon/system/controlDict
similarity index 92%
rename from tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCube/system/controlDict
rename to tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeArgon/system/controlDict
index f1052a4864fad271f58b2d6f62e0f3898d42c81d..76f7ed8a7ee4afac7f47fb4c97b4a42a01147053 100644
--- a/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCube/system/controlDict
+++ b/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeArgon/system/controlDict
@@ -2,7 +2,7 @@
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
 |  \\    /   O peration     | Version:  1.5                                   |
-|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
 FoamFile
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      controlDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -45,5 +44,4 @@ runTimeModifiable yes;
 
 adjustTimeStep  no;
 
-
 // ************************************************************************* //
diff --git a/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeArgon/system/decomposeParDict b/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeArgon/system/decomposeParDict
new file mode 100644
index 0000000000000000000000000000000000000000..958e14c73370e57528f6fd38a15607b7ba3c2bcd
--- /dev/null
+++ b/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeArgon/system/decomposeParDict
@@ -0,0 +1,64 @@
+/*---------------------------------------------------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.3                                   |
+|   \\  /    A nd           | Web:      http://www.openfoam.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+FoamFile
+{
+    version         2.0;
+    format          ascii;
+
+    root            "";
+    case            "";
+    instance        "";
+    local           "";
+
+    class           dictionary;
+    object          decomposeParDict;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+
+numberOfSubdomains 2;
+
+method              simple;
+
+simpleCoeffs
+{
+    n               (2 1 1);
+    delta           0.001;
+}
+
+hierarchicalCoeffs
+{
+    n               (1 1 1);
+    delta           0.001;
+    order           xyz;
+}
+
+metisCoeffs
+{
+    processorWeights
+    (
+        1
+	    3
+    );
+}
+
+manualCoeffs
+{
+    dataFile        "";
+}
+
+distributed     no;
+
+roots
+(
+);
+
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeArgon/system/fvSchemes b/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeArgon/system/fvSchemes
new file mode 100644
index 0000000000000000000000000000000000000000..42fda7921ca0a70a5b1f415666f49d4d07befb7b
--- /dev/null
+++ b/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeArgon/system/fvSchemes
@@ -0,0 +1,54 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      fvSchemes;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ddtSchemes
+{
+    default         none;
+}
+
+gradSchemes
+{
+    default         none;
+}
+
+divSchemes
+{
+    default         none;
+}
+
+laplacianSchemes
+{
+    default         none;
+}
+
+interpolationSchemes
+{
+    default         none;
+}
+
+snGradSchemes
+{
+    default         none;
+}
+
+fluxRequired
+{
+    default         no;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeArgon/system/fvSolution b/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeArgon/system/fvSolution
new file mode 100644
index 0000000000000000000000000000000000000000..1e39435250fcc6c21b5ca292d31d085533ce9716
--- /dev/null
+++ b/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeArgon/system/fvSolution
@@ -0,0 +1,22 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      fvSolution;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+solvers
+{
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interFoam/les/nozzleFlow2D/constant/polyMesh/sets/c0_old b/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeArgon/system/mdEquilibrationDict
similarity index 88%
rename from tutorials/multiphase/interFoam/les/nozzleFlow2D/constant/polyMesh/sets/c0_old
rename to tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeArgon/system/mdEquilibrationDict
index 5fbe1c4c4b15e3608a0e45519f8bea631f0e42ec..bbdbb899ec8d9cd8de0b2329c76e18c55db5e73b 100644
--- a/tutorials/multiphase/interFoam/les/nozzleFlow2D/constant/polyMesh/sets/c0_old
+++ b/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeArgon/system/mdEquilibrationDict
@@ -9,15 +9,12 @@ FoamFile
 {
     version     2.0;
     format      ascii;
-    class       topoSet;
-    location    "constant/polyMesh/sets";
-    object      c0_old;
+    class       dictionary;
+    object      mdEquilibrationDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-
-0
-(
-)
+targetTemperature  300.0;
 
 // ************************************************************************* //
+
diff --git a/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeArgon/system/mdInitialiseDict b/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeArgon/system/mdInitialiseDict
new file mode 100644
index 0000000000000000000000000000000000000000..cb562f34a6c148531c9a243458edb24af24b5de7
--- /dev/null
+++ b/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeArgon/system/mdInitialiseDict
@@ -0,0 +1,44 @@
+/*---------------------------------------------------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.3                                   |
+|   \\  /    A nd           | Web:      http://www.openfoam.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+FoamFile
+{
+    version         2.0;
+    format          ascii;
+
+    root            "";
+    case            "";
+    instance        "";
+    local           "";
+
+    class           dictionary;
+    object          molConfigDict;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+// Euler angles, expressed in degrees as phi, theta, psi, see
+// http://mathworld.wolfram.com/EulerAngles.html
+
+liquid
+{
+    massDensity             1220;
+    temperature             300;
+    bulkVelocity            (0.0 0.0 0.0);
+    latticeIds              (Ar);
+    tetherSiteIds           ();
+    latticePositions
+    (
+        (0 0 0)
+    );
+    anchor                  (0 0 0);
+    orientationAngles       (0 0 0);
+    latticeCellShape        (1 1 1);
+}
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeArgon/system/potentialDict b/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeArgon/system/potentialDict
new file mode 100644
index 0000000000000000000000000000000000000000..190428f399ffe941ecd05be8492411c4497c5b6c
--- /dev/null
+++ b/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeArgon/system/potentialDict
@@ -0,0 +1,121 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+n|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      potentials;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+// Subdictionaries specifying types of intermolecular potential.
+// Sub-sub dictionaries specify the potentials themselves.
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// Removal order
+
+// This is the order in which to remove overlapping pairs if more than one
+// type of molecule is present.  The most valuable molecule type is at the
+// right hand end, the molecule that will be removed 1st is 1st on the list.
+// Not all types need to be present, a molecule that is not present is
+// automatically less valuable than any on the list.  For molecules of the
+// same type there is no control over which is removed.
+
+removalOrder ( Ar );
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// Potential Energy Limit
+
+// Maximum permissible pair energy allowed at startup.  Used to remove
+// overlapping molecules created during preprocessing.
+
+potentialEnergyLimit 1e-18;
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// Pair potentials
+
+// If there are r different type of molecules, and a pair force is required
+// between all combinations, then there are C = r(r+1)/2 combinations,
+// i.e. for r = {1,2,3,4}, C = {1,3,6,10} (sum of triangular numbers).
+
+// Pair potentials are specified by the combinaition of their ids,
+// for MOLA and MOLB, "MOLA-MOLB" OR "MOLB-MOLA" is acceptable
+// (strictly OR, both or neither is an error)
+
+pair
+{
+    Ar-Ar
+    {
+        pairPotential   maitlandSmith;
+        rCut            1.0e-9;
+        rMin            0.15e-9;
+        dr              5e-14;
+        maitlandSmithCoeffs
+        {
+            m           13.0;
+            gamma       7.5;
+            rm          0.3756e-9;
+            epsilon     1.990108438e-21;
+        }
+        energyScalingFunction   doubleSigmoid;
+        doubleSigmoidCoeffs
+        {
+            shift1      0.9e-9;
+            scale1      0.3e11;
+            shift2      0.97e-9;
+            scale2      1.2e11;
+        }
+        writeTables     yes;
+    }
+
+    electrostatic
+    {
+        pairPotential   dampedCoulomb;
+        rCut            1.0e-9;
+        rMin            0.1e-9;
+        dr              2e-12;
+        dampedCoulombCoeffs
+        {
+            alpha       2e9;
+        }
+        energyScalingFunction   shiftedForce;
+        writeTables     yes;
+    }
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// Tethering Potentials
+
+tether
+{
+    O
+    {
+        tetherPotential restrainedHarmonicSpring;
+        restrainedHarmonicSpringCoeffs
+        {
+            springConstant  0.277;
+            rR              1.2e-9;
+        }
+    }
+}
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// External Forces
+
+// Bulk external forces (namely gravity) will be specified as forces rather
+// than potentials to allow their direction to be controlled.
+
+external
+{
+    gravity             (0 0 0);
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeWater/constant/moleculeProperties b/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeWater/constant/moleculeProperties
new file mode 100644
index 0000000000000000000000000000000000000000..2486f3c146ba4495cb003f1912db45ff57b5aa55
--- /dev/null
+++ b/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeWater/constant/moleculeProperties
@@ -0,0 +1,72 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      moleculeProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+water
+{
+    siteIds                     (H H O M);
+    pairPotentialSiteIds        (O);
+    siteReferencePositions
+    (
+        (7.56950327263661e-11 5.85882276618295e-11 0)
+        (-7.56950327263661e-11 5.85882276618295e-11 0)
+        (0 0 0)
+        (0 1.5e-11 0)
+    );
+    siteMasses
+    (
+        1.67353255e-27
+        1.67353255e-27
+        2.6560176e-26
+        0
+    );
+    siteCharges
+    (
+        8.3313177324e-20
+        8.3313177324e-20
+        0
+        -1.66626354648e-19
+    );
+}
+
+water2
+{
+    siteIds                     (H2 H2 O M2);
+    pairPotentialSiteIds        (O);
+    siteReferencePositions
+    (
+        (7.56950327263661e-11 5.85882276618295e-11 0)
+        (-7.56950327263661e-11 5.85882276618295e-11 0)
+        (0 0 0)
+        (0 1.5e-11 0)
+    );
+    siteMasses
+    (
+        1.67353255e-27
+        1.67353255e-27
+        2.6560176e-26
+        0
+    );
+    siteCharges
+    (
+        8.3313177324e-20
+        8.3313177324e-20
+        0
+        -1.66626354648e-19
+    );
+}
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeWater/constant/polyMesh/blockMeshDict b/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeWater/constant/polyMesh/blockMeshDict
new file mode 100644
index 0000000000000000000000000000000000000000..b78ecf45c974246d6545e6265c8e459946d467bf
--- /dev/null
+++ b/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeWater/constant/polyMesh/blockMeshDict
@@ -0,0 +1,73 @@
+/*---------------------------------------------------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.3                                   |
+|   \\  /    A nd           | Web:      http://www.openfoam.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+FoamFile
+{
+    version         2.0;
+    format          ascii;
+
+    root            "";
+    case            "";
+    instance        "";
+    local           "";
+
+    class           dictionary;
+    object          blockMeshDict;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+convertToMeters 2.10840e-9;
+
+vertices
+(
+    (-1 -1 -1)
+    (1 -1 -1)
+    (1 1 -1)
+    (-1 1 -1)
+    (-1 -1 1)
+    (1 -1 1)
+    (1 1 1)
+    (-1 1 1)
+);
+
+blocks
+(
+    hex (0 1 2 3 4 5 6 7) liquid (12 12 11) simpleGrading (1 1 1)
+);
+
+patches
+(
+    cyclic
+    periodicX
+    (
+        (1 2 6 5)
+        (0 4 7 3)
+    )
+
+    cyclic
+    periodicY
+    (
+        (2 3 7 6)
+        (0 1 5 4)
+    )
+
+    cyclic
+    periodicZ
+    (
+        (0 3 2 1)
+        (4 5 6 7)
+    )
+)
+
+mergePatchPairs
+(
+);
+
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/molecularDynamics/gnemdFoam/constrictedChannel/constant/polyMesh/boundary b/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeWater/constant/polyMesh/boundary
similarity index 67%
rename from tutorials/discreteMethods/molecularDynamics/gnemdFoam/constrictedChannel/constant/polyMesh/boundary
rename to tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeWater/constant/polyMesh/boundary
index e9d933420b7298f5aa2fef9909433f031b113f5a..27cc5e87df98bf4826a1a86391e91fbf982a59f1 100644
--- a/tutorials/discreteMethods/molecularDynamics/gnemdFoam/constrictedChannel/constant/polyMesh/boundary
+++ b/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeWater/constant/polyMesh/boundary
@@ -1,8 +1,8 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.5                                   |
-|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
 FoamFile
@@ -15,33 +15,28 @@ FoamFile
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-4
+3
 (
     periodicX
     {
         type            cyclic;
-        nFaces          288;
-        startFace       10710;
+        nFaces          264;
+        startFace       4344;
         featureCos      0.9;
     }
-    periodicZ
+    periodicY
     {
         type            cyclic;
-        nFaces          1296;
-        startFace       10998;
+        nFaces          264;
+        startFace       4608;
         featureCos      0.9;
     }
-    outerBoundaryBottom
-    {
-        type            wall;
-        nFaces          162;
-        startFace       12294;
-    }
-    outerBoundaryTop
+    periodicZ
     {
-        type            wall;
-        nFaces          162;
-        startFace       12456;
+        type            cyclic;
+        nFaces          288;
+        startFace       4872;
+        featureCos      0.9;
     }
 )
 
diff --git a/tutorials/discreteMethods/molecularDynamics/gnemdFoam/constrictedChannel/system/controlDict b/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeWater/system/controlDict
similarity index 86%
rename from tutorials/discreteMethods/molecularDynamics/gnemdFoam/constrictedChannel/system/controlDict
rename to tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeWater/system/controlDict
index c43b52a4489940816c201cd8c03c5ca1f7694a2e..51a42ecc0e828d90fd725f5c361eae36c95f5f15 100644
--- a/tutorials/discreteMethods/molecularDynamics/gnemdFoam/constrictedChannel/system/controlDict
+++ b/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeWater/system/controlDict
@@ -2,7 +2,7 @@
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
 |  \\    /   O peration     | Version:  1.5                                   |
-|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
 FoamFile
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      controlDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -21,13 +20,13 @@ startTime       0;
 
 stopAt          endTime;
 
-endTime         8e-11;
+endTime         5e-12;
 
-deltaT          1e-14;
+deltaT          1e-15;
 
 writeControl    runTime;
 
-writeInterval   2e-12;
+writeInterval   2e-13;
 
 purgeWrite      0;
 
@@ -45,5 +44,4 @@ runTimeModifiable yes;
 
 adjustTimeStep  no;
 
-
 // ************************************************************************* //
diff --git a/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeWater/system/decomposeParDict b/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeWater/system/decomposeParDict
new file mode 100644
index 0000000000000000000000000000000000000000..e0302aafcc9b69d045a7b00b3a4a108a44973291
--- /dev/null
+++ b/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeWater/system/decomposeParDict
@@ -0,0 +1,64 @@
+/*---------------------------------------------------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.3                                   |
+|   \\  /    A nd           | Web:      http://www.openfoam.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+FoamFile
+{
+    version         2.0;
+    format          ascii;
+
+    root            "";
+    case            "";
+    instance        "";
+    local           "";
+
+    class           dictionary;
+    object          decomposeParDict;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+
+numberOfSubdomains 4;
+
+method              simple;
+
+simpleCoeffs
+{
+    n               (2 2 1);
+    delta           0.001;
+}
+
+hierarchicalCoeffs
+{
+    n               (1 1 1);
+    delta           0.001;
+    order           xyz;
+}
+
+metisCoeffs
+{
+    processorWeights
+    (
+        1
+	    3
+    );
+}
+
+manualCoeffs
+{
+    dataFile        "";
+}
+
+distributed     no;
+
+roots
+(
+);
+
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeWater/system/fvSchemes b/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeWater/system/fvSchemes
new file mode 100644
index 0000000000000000000000000000000000000000..42fda7921ca0a70a5b1f415666f49d4d07befb7b
--- /dev/null
+++ b/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeWater/system/fvSchemes
@@ -0,0 +1,54 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      fvSchemes;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ddtSchemes
+{
+    default         none;
+}
+
+gradSchemes
+{
+    default         none;
+}
+
+divSchemes
+{
+    default         none;
+}
+
+laplacianSchemes
+{
+    default         none;
+}
+
+interpolationSchemes
+{
+    default         none;
+}
+
+snGradSchemes
+{
+    default         none;
+}
+
+fluxRequired
+{
+    default         no;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeWater/system/fvSolution b/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeWater/system/fvSolution
new file mode 100644
index 0000000000000000000000000000000000000000..1e39435250fcc6c21b5ca292d31d085533ce9716
--- /dev/null
+++ b/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeWater/system/fvSolution
@@ -0,0 +1,22 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      fvSolution;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+solvers
+{
+}
+
+// ************************************************************************* //
diff --git a/tutorials/combustion/dieselFoam/aachenBomb/0/spray b/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeWater/system/mdEquilibrationDict
similarity index 92%
rename from tutorials/combustion/dieselFoam/aachenBomb/0/spray
rename to tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeWater/system/mdEquilibrationDict
index c5f9cb2f59b6a48c85af4caac770e05dca1f3c3e..de8cb745e1f62f9f76556059a8d34a750d5b808f 100644
--- a/tutorials/combustion/dieselFoam/aachenBomb/0/spray
+++ b/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeWater/system/mdEquilibrationDict
@@ -10,11 +10,10 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    object      spray;
+    object      mdEquilibrationDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-(
-)
+targetTemperature  298;
 
 // ************************************************************************* //
diff --git a/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeWater/system/mdInitialiseDict b/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeWater/system/mdInitialiseDict
new file mode 100644
index 0000000000000000000000000000000000000000..ff1444ead5acf93663635513847686618cb704e5
--- /dev/null
+++ b/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeWater/system/mdInitialiseDict
@@ -0,0 +1,53 @@
+/*---------------------------------------------------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.3                                   |
+|   \\  /    A nd           | Web:      http://www.openfoam.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+FoamFile
+{
+    version         2.0;
+    format          ascii;
+
+    root            "";
+    case            "";
+    instance        "";
+    local           "";
+
+    class           dictionary;
+    object          molConfigDict;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+// Euler angles, expressed in degrees as phi, theta, psi, see
+// http://mathworld.wolfram.com/EulerAngles.html
+
+liquid
+{
+    massDensity             980;
+    temperature             298;
+    bulkVelocity            (0.0 0.0 0.0);
+    latticeIds
+    (
+        water
+        water2
+        water
+        water2
+    );
+    tetherSiteIds           ();
+    latticePositions
+    (
+        (0 0 0)
+        (0 0.5 0.5)
+        (0.5 0 0.5)
+        (0.5 0.5 0)
+    );
+    anchor                  (0 0 0);
+    orientationAngles       (0 0 0);
+    latticeCellShape        (1 1 1);
+}
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeWater/system/potentialDict b/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeWater/system/potentialDict
new file mode 100644
index 0000000000000000000000000000000000000000..25b268e74c7e3e102b49eeaa23186dc47031e338
--- /dev/null
+++ b/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeWater/system/potentialDict
@@ -0,0 +1,118 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      potentials;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+// Subdictionaries specifying types of intermolecular potential.
+// Sub-sub dictionaries specify the potentials themselves.
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// Removal order
+
+// This is the order in which to remove overlapping pairs if more than one
+// type of molecule is present.  The most valuable molecule type is at the
+// right hand end, the molecule that will be removed 1st is 1st on the list.
+// Not all types need to be present, a molecule that is not present is
+// automatically less valuable than any on the list.  For molecules of the
+// same type there is no control over which is removed.
+
+removalOrder ( water );
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// Potential Energy Limit
+
+// Maximum permissible pair energy allowed at startup.  Used to remove
+// overlapping molecules created during preprocessing.
+
+potentialEnergyLimit 1e-18;
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// Pair potentials
+
+// If a pair are not present here it is assumed that they do not interact.
+
+// Electrostatic pair interactions are not listed here - they are handled
+// separately.
+
+// If there are r different type of molecules, and a pair force is required
+// between all combinations, then there are C = r(r+1)/2 combinations,
+// i.e. for r = {1,2,3,4}, C = {1,3,6,10} (sum of triangular numbers).
+
+// Pair potentials are specified by the combinaition of their ids,
+// for MOLA and MOLB, "MOLA-MOLB" OR "MOLB-MOLA" is acceptable
+// (strictly OR, both or neither will throw an error)
+
+pair
+{
+    O-O
+    {
+        pairPotential   lennardJones;
+        rCut            1.0e-9;
+        rMin            0.1e-9;
+        dr              1e-13;
+        lennardJonesCoeffs
+        {
+            sigma       3.154e-10;
+            epsilon     1.07690722e-21;
+        }
+        energyScalingFunction   noScaling;
+        writeTables     yes;
+    }
+
+    electrostatic
+    {
+        pairPotential   dampedCoulomb;
+        rCut            1e-9;
+        rMin            2e-11;
+        dr              2e-12;
+        dampedCoulombCoeffs
+        {
+            alpha       2e9;
+        }
+        energyScalingFunction   shiftedForce;
+        writeTables     yes;
+    }
+}
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// Tethering Potentials
+
+tether
+{
+    O
+    {
+        tetherPotential restrainedHarmonicSpring;
+        restrainedHarmonicSpringCoeffs
+        {
+            springConstant  0.277;
+            rR              1.2e-9;
+        }
+    }
+}
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// External Forces
+
+// Bulk external forces (namely gravity) will be specified as forces rather
+// than potentials to allow their direction to be controlled.
+
+external
+{
+    gravity             (0 0 0);
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/molecularDynamics/gnemdFoam/Allclean b/tutorials/discreteMethods/molecularDynamics/mdFoam/Allclean
similarity index 57%
rename from tutorials/discreteMethods/molecularDynamics/gnemdFoam/Allclean
rename to tutorials/discreteMethods/molecularDynamics/mdFoam/Allclean
index 11f901ce8e07f87b4c4e41b1be30311c5ecd5589..7ff7776cb12c793a7bed32339e31b6ded3897549 100755
--- a/tutorials/discreteMethods/molecularDynamics/gnemdFoam/Allclean
+++ b/tutorials/discreteMethods/molecularDynamics/mdFoam/Allclean
@@ -3,14 +3,8 @@
 # Source tutorial clean functions
 . $WM_PROJECT_DIR/bin/tools/CleanFunctions
 
-cd constrictedChannel
-    rm -rf 0
-    rm -rf Ar-Ar Ar-Ne Ne-Ne
-    rm -rf constant/idList
-    cleanCase
-cd ..
-
 cd nanoNozzle
+    rm -rf constant/polyMesh/sets
     rm -rf processor[0-9]
     cleanCase
 cd ..
diff --git a/tutorials/discreteMethods/molecularDynamics/gnemdFoam/Allrun b/tutorials/discreteMethods/molecularDynamics/mdFoam/Allrun
similarity index 60%
rename from tutorials/discreteMethods/molecularDynamics/gnemdFoam/Allrun
rename to tutorials/discreteMethods/molecularDynamics/mdFoam/Allrun
index 640ecd9bdc14899a37fe41bf908956b6623fa5f3..c756b2ca7e7a3d0ac97842edb011c9f6891abc98 100755
--- a/tutorials/discreteMethods/molecularDynamics/gnemdFoam/Allrun
+++ b/tutorials/discreteMethods/molecularDynamics/mdFoam/Allrun
@@ -3,13 +3,7 @@
 # Source tutorial run functions
 . $WM_PROJECT_DIR/bin/tools/RunFunctions
 
-application="gnemdFoam"
-
-cd constrictedChannel
-   runApplication blockMesh
-   runApplication molConfig
-   runApplication $application
-cd ..
+application="mdFoam"
 
 cd nanoNozzle
     runApplication blockMesh
@@ -17,7 +11,7 @@ cd nanoNozzle
     runApplication decomposePar
     hostname > system/machines
 
-    runParallel molConfig 4 system/machines
+    runParallel mdInitialise 4 system/machines
     runParallel $application 4 system/machines
 
     runApplication reconstructPar
diff --git a/tutorials/discreteMethods/molecularDynamics/mdFoam/nanoNozzle/constant/moleculeProperties b/tutorials/discreteMethods/molecularDynamics/mdFoam/nanoNozzle/constant/moleculeProperties
new file mode 100644
index 0000000000000000000000000000000000000000..faf53865886ddd2133a0f6ad01f43d111d94c951
--- /dev/null
+++ b/tutorials/discreteMethods/molecularDynamics/mdFoam/nanoNozzle/constant/moleculeProperties
@@ -0,0 +1,45 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      moleculeProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+water
+{
+    siteIds                     (H H O M);
+    pairPotentialSiteIds        (O);
+    siteReferencePositions
+    (
+        (7.56950327263661e-11 5.85882276618295e-11 0)
+        (-7.56950327263661e-11 5.85882276618295e-11 0)
+        (0 0 0)
+        (0 1.5e-11 0)
+    );
+    siteMasses
+    (
+        1.67353255e-27
+        1.67353255e-27
+        2.6560176e-26
+        0
+    );
+    siteCharges
+    (
+        8.3313177324e-20
+        8.3313177324e-20
+        0
+        -1.66626354648e-19
+    );
+}
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/molecularDynamics/gnemdFoam/nanoNozzle/constant/polyMesh/blockMeshDict b/tutorials/discreteMethods/molecularDynamics/mdFoam/nanoNozzle/constant/polyMesh/blockMeshDict
similarity index 65%
rename from tutorials/discreteMethods/molecularDynamics/gnemdFoam/nanoNozzle/constant/polyMesh/blockMeshDict
rename to tutorials/discreteMethods/molecularDynamics/mdFoam/nanoNozzle/constant/polyMesh/blockMeshDict
index 024f66a3838c1a7bd2348707c3fca7e080686015..bfd56736e27cc02fb354b8ce9de41ef67748dd03 100644
--- a/tutorials/discreteMethods/molecularDynamics/gnemdFoam/nanoNozzle/constant/polyMesh/blockMeshDict
+++ b/tutorials/discreteMethods/molecularDynamics/mdFoam/nanoNozzle/constant/polyMesh/blockMeshDict
@@ -14,9 +14,9 @@ FoamFile
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-convertToMeters 3e-9;
+convertToMeters 3.2e-9;
 
-vertices        
+vertices
 (
 	(0 0 0)
 	(3.5 0 0)
@@ -44,47 +44,19 @@ vertices
 	(16 2.5 3.5)
 );
 
-blocks          
+blocks
 (
-	hex (0 1 2 3 4 5 6 7) sectionA (16 15 15) simpleGrading (1 1 1)
-    hex (1 8 9 2 5 10 11 6) sectionA (16 15 15) simpleGrading (0.4 1 1)
-	hex (8 12 13 9 10 14 15 11) sectionB (16 15 15) simpleGrading (1 1 1)
-	hex (12 16 17 13 14 18 19 15) sectionC (11 15 15) simpleGrading (2.8 1 1)
-	hex (16 20 21 17 18 22 23 19) sectionC (16 15 15) simpleGrading (1 1 1)
+	hex (0 1 2 3 4 5 6 7) sectionA (20 16 16) simpleGrading (1 1 1)
+    hex (1 8 9 2 5 10 11 6) sectionA (20 16 16) simpleGrading (1 1 1)
+	hex (8 12 13 9 10 14 15 11) sectionB (29 16 16) simpleGrading (1 1 1)
+	hex (12 16 17 13 14 18 19 15) sectionC (17 16 16) simpleGrading (1 1 1)
+	hex (16 20 21 17 18 22 23 19) sectionC (20 16 16) simpleGrading (1 1 1)
 );
 
-edges           
-(
-		simpleSpline 12 16
-		(
-			(10.375 0.875 0.4)
-			(10.75 0.75 0)
-			(11.125 0.625 -0.4)
-		)
-		
-		simpleSpline 14 18
-		(
-			(10.375 0.875 2.6)
-			(10.75 0.75 3)
-			(11.125 0.625 3.4)
-		)
-		
-		simpleSpline 15 19
-		(
-			(10.375 2.125 2.6)
-			(10.75 2.25 3)
-			(11.125 2.375 3.4)
-		)
-		
-		simpleSpline 13 17
-		(
-			(10.375 2.125 0.4)
-			(10.75 2.25 0)
-			(11.125 2.375 -0.4)
-		)
-);
+edges
+();
 
-patches         
+patches
 (
 	patch
 	sectionAEnd
@@ -92,12 +64,12 @@ patches
 		(0 4 7 3)
 	)
 
-	patch
+	wall
 	sectionCEnd
 	(
 		(20 21 23 22)
 	)
-		
+
 	wall
 	front
 	(
@@ -107,7 +79,7 @@ patches
 		(12 16 18 14)
 		(16 20 22 18)
 	)
-		
+
 	wall
 	back
 	(
@@ -117,7 +89,7 @@ patches
 		(13 15 19 17)
 		(17 19 23 21)
 	)
-		
+
 	wall
 	top
 	(
@@ -127,7 +99,7 @@ patches
 		(14 18 19 15)
 		(18 22 23 19)
 	)
-		
+
 	wall
 	bottom
 	(
@@ -139,7 +111,7 @@ patches
 	)
 );
 
-mergePatchPairs 
+mergePatchPairs
 (
 );
 
diff --git a/tutorials/discreteMethods/molecularDynamics/gnemdFoam/nanoNozzle/constant/polyMesh/boundary b/tutorials/discreteMethods/molecularDynamics/mdFoam/nanoNozzle/constant/polyMesh/boundary
similarity index 66%
rename from tutorials/discreteMethods/molecularDynamics/gnemdFoam/nanoNozzle/constant/polyMesh/boundary
rename to tutorials/discreteMethods/molecularDynamics/mdFoam/nanoNozzle/constant/polyMesh/boundary
index a58d17ed7f51a0b1d98167dadad04ec7b6a21c8b..8f1b5f6505e47c52d85bd170a7fae0d85f55ec1c 100644
--- a/tutorials/discreteMethods/molecularDynamics/gnemdFoam/nanoNozzle/constant/polyMesh/boundary
+++ b/tutorials/discreteMethods/molecularDynamics/mdFoam/nanoNozzle/constant/polyMesh/boundary
@@ -1,8 +1,8 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.5                                   |
-|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
 FoamFile
@@ -20,38 +20,38 @@ FoamFile
     sectionAEnd
     {
         type            patch;
-        nFaces          225;
-        startFace       48150;
+        nFaces          256;
+        startFace       77760;
     }
     sectionCEnd
     {
-        type            patch;
-        nFaces          225;
-        startFace       48375;
+        type            wall;
+        nFaces          256;
+        startFace       78016;
     }
     front
     {
         type            wall;
-        nFaces          1125;
-        startFace       48600;
+        nFaces          1696;
+        startFace       78272;
     }
     back
     {
         type            wall;
-        nFaces          1125;
-        startFace       49725;
+        nFaces          1696;
+        startFace       79968;
     }
     top
     {
         type            wall;
-        nFaces          1125;
-        startFace       50850;
+        nFaces          1696;
+        startFace       81664;
     }
     bottom
     {
         type            wall;
-        nFaces          1125;
-        startFace       51975;
+        nFaces          1696;
+        startFace       83360;
     }
 )
 
diff --git a/tutorials/discreteMethods/molecularDynamics/mdFoam/nanoNozzle/system/controlDict b/tutorials/discreteMethods/molecularDynamics/mdFoam/nanoNozzle/system/controlDict
new file mode 100644
index 0000000000000000000000000000000000000000..51a42ecc0e828d90fd725f5c361eae36c95f5f15
--- /dev/null
+++ b/tutorials/discreteMethods/molecularDynamics/mdFoam/nanoNozzle/system/controlDict
@@ -0,0 +1,47 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      controlDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+startFrom       startTime;
+
+startTime       0;
+
+stopAt          endTime;
+
+endTime         5e-12;
+
+deltaT          1e-15;
+
+writeControl    runTime;
+
+writeInterval   2e-13;
+
+purgeWrite      0;
+
+writeFormat     ascii;
+
+writePrecision  12;
+
+writeCompression uncompressed;
+
+timeFormat      general;
+
+timePrecision   6;
+
+runTimeModifiable yes;
+
+adjustTimeStep  no;
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/molecularDynamics/mdFoam/nanoNozzle/system/decomposeParDict b/tutorials/discreteMethods/molecularDynamics/mdFoam/nanoNozzle/system/decomposeParDict
new file mode 100644
index 0000000000000000000000000000000000000000..a3946a745f2169cea62449bd32b9365bd539cd69
--- /dev/null
+++ b/tutorials/discreteMethods/molecularDynamics/mdFoam/nanoNozzle/system/decomposeParDict
@@ -0,0 +1,66 @@
+/*---------------------------------------------------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.3                                   |
+|   \\  /    A nd           | Web:      http://www.openfoam.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+FoamFile
+{
+    version         2.0;
+    format          ascii;
+
+    root            "";
+    case            "";
+    instance        "";
+    local           "";
+
+    class           dictionary;
+    object          decomposeParDict;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+
+numberOfSubdomains 4;
+
+method              metis;
+
+simpleCoeffs
+{
+    n               (2 2 1);
+    delta           0.001;
+}
+
+hierarchicalCoeffs
+{
+    n               (1 1 1);
+    delta           0.001;
+    order           xyz;
+}
+
+metisCoeffs
+{
+    processorWeights
+    (
+        1
+        1
+        1
+        1
+    );
+}
+
+manualCoeffs
+{
+    dataFile        "";
+}
+
+distributed     no;
+
+roots
+(
+);
+
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/molecularDynamics/mdFoam/nanoNozzle/system/fvSchemes b/tutorials/discreteMethods/molecularDynamics/mdFoam/nanoNozzle/system/fvSchemes
new file mode 100644
index 0000000000000000000000000000000000000000..42fda7921ca0a70a5b1f415666f49d4d07befb7b
--- /dev/null
+++ b/tutorials/discreteMethods/molecularDynamics/mdFoam/nanoNozzle/system/fvSchemes
@@ -0,0 +1,54 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      fvSchemes;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ddtSchemes
+{
+    default         none;
+}
+
+gradSchemes
+{
+    default         none;
+}
+
+divSchemes
+{
+    default         none;
+}
+
+laplacianSchemes
+{
+    default         none;
+}
+
+interpolationSchemes
+{
+    default         none;
+}
+
+snGradSchemes
+{
+    default         none;
+}
+
+fluxRequired
+{
+    default         no;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/molecularDynamics/mdFoam/nanoNozzle/system/fvSolution b/tutorials/discreteMethods/molecularDynamics/mdFoam/nanoNozzle/system/fvSolution
new file mode 100644
index 0000000000000000000000000000000000000000..1e39435250fcc6c21b5ca292d31d085533ce9716
--- /dev/null
+++ b/tutorials/discreteMethods/molecularDynamics/mdFoam/nanoNozzle/system/fvSolution
@@ -0,0 +1,22 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      fvSolution;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+solvers
+{
+}
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/molecularDynamics/mdFoam/nanoNozzle/system/mdEquilibrationDict b/tutorials/discreteMethods/molecularDynamics/mdFoam/nanoNozzle/system/mdEquilibrationDict
new file mode 100644
index 0000000000000000000000000000000000000000..de8cb745e1f62f9f76556059a8d34a750d5b808f
--- /dev/null
+++ b/tutorials/discreteMethods/molecularDynamics/mdFoam/nanoNozzle/system/mdEquilibrationDict
@@ -0,0 +1,19 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      mdEquilibrationDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+targetTemperature  298;
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/molecularDynamics/mdFoam/nanoNozzle/system/mdInitialiseDict b/tutorials/discreteMethods/molecularDynamics/mdFoam/nanoNozzle/system/mdInitialiseDict
new file mode 100644
index 0000000000000000000000000000000000000000..0d91d5a08b1413b4a02ccb5d22d096df67b3a500
--- /dev/null
+++ b/tutorials/discreteMethods/molecularDynamics/mdFoam/nanoNozzle/system/mdInitialiseDict
@@ -0,0 +1,85 @@
+/*---------------------------------------------------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.3                                   |
+|   \\  /    A nd           | Web:      http://www.openfoam.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+FoamFile
+{
+    version         2.0;
+    format          ascii;
+
+    root            "";
+    case            "";
+    instance        "";
+    local           "";
+
+    class           dictionary;
+    object          molConfigDict;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+// Euler angles, expressed in degrees as phi, theta, psi, see
+// http://mathworld.wolfram.com/EulerAngles.html
+
+sectionA
+{
+    massDensity             1004;
+    temperature             298;
+    bulkVelocity            (0.0 0.0 0.0);
+    latticeIds
+    (
+        water
+    );
+    tetherSiteIds           ();
+    latticePositions
+    (
+        (0 0 0)
+    );
+    anchor                  (0 0 0);
+    orientationAngles       (0 0 0);
+    latticeCellShape        (1 1 1);
+}
+
+sectionB
+{
+    massDensity             1004;
+    temperature             298;
+    bulkVelocity            (0.0 0.0 0.0);
+    latticeIds
+    (
+        water
+    );
+    tetherSiteIds           ();
+    latticePositions
+    (
+        (0 0 0)
+    );
+    anchor                  (0 0 0);
+    orientationAngles       (0 0 0);
+    latticeCellShape        (1 1 1);
+}
+
+sectionC
+{
+    massDensity             1004;
+    temperature             298;
+    bulkVelocity            (0.0 0.0 0.0);
+    latticeIds
+    (
+        water
+    );
+    tetherSiteIds           ();
+    latticePositions
+    (
+        (0 0 0)
+    );
+    anchor                  (0 0 0);
+    orientationAngles       (0 0 0);
+    latticeCellShape        (1 1 1);
+}
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/molecularDynamics/mdFoam/nanoNozzle/system/potentialDict b/tutorials/discreteMethods/molecularDynamics/mdFoam/nanoNozzle/system/potentialDict
new file mode 100644
index 0000000000000000000000000000000000000000..25b268e74c7e3e102b49eeaa23186dc47031e338
--- /dev/null
+++ b/tutorials/discreteMethods/molecularDynamics/mdFoam/nanoNozzle/system/potentialDict
@@ -0,0 +1,118 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      potentials;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+// Subdictionaries specifying types of intermolecular potential.
+// Sub-sub dictionaries specify the potentials themselves.
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// Removal order
+
+// This is the order in which to remove overlapping pairs if more than one
+// type of molecule is present.  The most valuable molecule type is at the
+// right hand end, the molecule that will be removed 1st is 1st on the list.
+// Not all types need to be present, a molecule that is not present is
+// automatically less valuable than any on the list.  For molecules of the
+// same type there is no control over which is removed.
+
+removalOrder ( water );
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// Potential Energy Limit
+
+// Maximum permissible pair energy allowed at startup.  Used to remove
+// overlapping molecules created during preprocessing.
+
+potentialEnergyLimit 1e-18;
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// Pair potentials
+
+// If a pair are not present here it is assumed that they do not interact.
+
+// Electrostatic pair interactions are not listed here - they are handled
+// separately.
+
+// If there are r different type of molecules, and a pair force is required
+// between all combinations, then there are C = r(r+1)/2 combinations,
+// i.e. for r = {1,2,3,4}, C = {1,3,6,10} (sum of triangular numbers).
+
+// Pair potentials are specified by the combinaition of their ids,
+// for MOLA and MOLB, "MOLA-MOLB" OR "MOLB-MOLA" is acceptable
+// (strictly OR, both or neither will throw an error)
+
+pair
+{
+    O-O
+    {
+        pairPotential   lennardJones;
+        rCut            1.0e-9;
+        rMin            0.1e-9;
+        dr              1e-13;
+        lennardJonesCoeffs
+        {
+            sigma       3.154e-10;
+            epsilon     1.07690722e-21;
+        }
+        energyScalingFunction   noScaling;
+        writeTables     yes;
+    }
+
+    electrostatic
+    {
+        pairPotential   dampedCoulomb;
+        rCut            1e-9;
+        rMin            2e-11;
+        dr              2e-12;
+        dampedCoulombCoeffs
+        {
+            alpha       2e9;
+        }
+        energyScalingFunction   shiftedForce;
+        writeTables     yes;
+    }
+}
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// Tethering Potentials
+
+tether
+{
+    O
+    {
+        tetherPotential restrainedHarmonicSpring;
+        restrainedHarmonicSpringCoeffs
+        {
+            springConstant  0.277;
+            rR              1.2e-9;
+        }
+    }
+}
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// External Forces
+
+// Bulk external forces (namely gravity) will be specified as forces rather
+// than potentials to allow their direction to be controlled.
+
+external
+{
+    gravity             (0 0 0);
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/0/T b/tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/0/T
new file mode 100644
index 0000000000000000000000000000000000000000..a5a03f6a2e3944867bd11d1adb15e3f468569dc6
--- /dev/null
+++ b/tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/0/T
@@ -0,0 +1,443 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      T;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 1 0 0 0];
+
+internalField   uniform 300;
+
+boundaryField
+{
+    floor
+    {
+        type            fixedValue;
+        value           nonuniform List<scalar> 
+400
+(
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+600
+600
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+600
+600
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+)
+;
+    }
+    ceiling
+    {
+        type            fixedValue;
+        value           uniform 300;
+    }
+    fixedWalls
+    {
+        type            zeroGradient;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/0/T.org b/tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/0/T.org
new file mode 100644
index 0000000000000000000000000000000000000000..a5a03f6a2e3944867bd11d1adb15e3f468569dc6
--- /dev/null
+++ b/tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/0/T.org
@@ -0,0 +1,443 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      T;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 1 0 0 0];
+
+internalField   uniform 300;
+
+boundaryField
+{
+    floor
+    {
+        type            fixedValue;
+        value           nonuniform List<scalar> 
+400
+(
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+600
+600
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+600
+600
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+)
+;
+    }
+    ceiling
+    {
+        type            fixedValue;
+        value           uniform 300;
+    }
+    fixedWalls
+    {
+        type            zeroGradient;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/0/U b/tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/0/U
new file mode 100644
index 0000000000000000000000000000000000000000..0b6b191dab023e6aa4c9701188dd93252aeb7aa9
--- /dev/null
+++ b/tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/0/U
@@ -0,0 +1,42 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volVectorField;
+    object      U;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -1 0 0 0 0];
+
+internalField   uniform (0 0 0);
+
+boundaryField
+{
+    floor           
+    {
+        type            fixedValue;
+        value           uniform (0 0 0);
+    }
+
+    ceiling         
+    {
+        type            fixedValue;
+        value           uniform (0 0 0);
+    }
+
+    fixedWalls      
+    {
+        type            fixedValue;
+        value           uniform (0 0 0);
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/buoyantSimpleFoam/hotRoom/0/pd b/tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/0/alphat
similarity index 83%
rename from tutorials/heatTransfer/buoyantSimpleFoam/hotRoom/0/pd
rename to tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/0/alphat
index 3a679ba63a51f43776afa9f72c8fe4e69e328aac..3bcb9c03b13cf7d96e3456eabea33e5f6d0ee8e1 100644
--- a/tutorials/heatTransfer/buoyantSimpleFoam/hotRoom/0/pd
+++ b/tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/0/alphat
@@ -10,11 +10,12 @@ FoamFile
     version     2.0;
     format      ascii;
     class       volScalarField;
-    object      pd;
+    location    "0";
+    object      alphat;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-dimensions      [1 -1 -2 0 0 0 0];
+dimensions      [1 -1 -1 0 0 0 0];
 
 internalField   uniform 0;
 
@@ -22,21 +23,20 @@ boundaryField
 {
     floor
     {
-        type            fixedFluxBuoyantPressure;
+        type            alphatWallFunction;
         value           uniform 0;
     }
-
     ceiling
     {
-        type            fixedFluxBuoyantPressure;
+        type            alphatWallFunction;
         value           uniform 0;
     }
-
     fixedWalls
     {
-        type            fixedFluxBuoyantPressure;
+        type            alphatWallFunction;
         value           uniform 0;
     }
 }
 
+
 // ************************************************************************* //
diff --git a/tutorials/discreteMethods/molecularDynamics/gnemdFoam/constrictedChannel/system/fvSolution b/tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/0/epsilon
similarity index 59%
rename from tutorials/discreteMethods/molecularDynamics/gnemdFoam/constrictedChannel/system/fvSolution
rename to tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/0/epsilon
index 46670343363af32a79fcf7bd788316556b9de7d7..892d69375d9d5eab2aa804a87ee6661bbc1a9f06 100644
--- a/tutorials/discreteMethods/molecularDynamics/gnemdFoam/constrictedChannel/system/fvSolution
+++ b/tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/0/epsilon
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.5                                   |
+|  \\    /   O peration     | Version:  dev                                   |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
@@ -9,37 +9,33 @@ FoamFile
 {
     version     2.0;
     format      ascii;
-    class       dictionary;
-    location    "system";
-    object      fvSolution;
+    class       volScalarField;
+    location    "0";
+    object      epsilon;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-solvers
+dimensions      [0 2 -3 0 0 0 0];
+
+internalField   uniform 0.01;
+
+boundaryField
 {
-    p
+    floor
     {
-        solver          PCG;
-        preconditioner  DIC;
-        tolerance       1e-06;
-        relTol          0;
+        type            epsilonWallFunction;
+        value           uniform 0.01;
     }
-
-    U
+    ceiling
     {
-        solver          PBiCG;
-        preconditioner  DILU;
-        tolerance       1e-05;
-        relTol          0;
+        type            epsilonWallFunction;
+        value           uniform 0.01;
+    }
+    fixedWalls
+    {
+        type            epsilonWallFunction;
+        value           uniform 0.01;
     }
-}
-
-PISO
-{
-    nCorrectors     2;
-    nNonOrthogonalCorrectors 0;
-    pRefCell        0;
-    pRefValue       0;
 }
 
 
diff --git a/tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/0/epsilon.old b/tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/0/epsilon.old
new file mode 100644
index 0000000000000000000000000000000000000000..23851291dc60d3b0df3be887acfbeb0bb5067ef8
--- /dev/null
+++ b/tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/0/epsilon.old
@@ -0,0 +1,42 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      epsilon;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 2 -3 0 0 0 0];
+
+internalField   uniform 0.01;
+
+boundaryField
+{
+    floor
+    {
+        type            compressible::epsilonWallFunction;
+        value           uniform 0.01;
+    }
+    ceiling
+    {
+        type            compressible::epsilonWallFunction;
+        value           uniform 0.01;
+    }
+    fixedWalls
+    {
+        type            compressible::epsilonWallFunction;
+        value           uniform 0.01;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/0/k b/tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/0/k
new file mode 100644
index 0000000000000000000000000000000000000000..38c2a542ef4c0c57799adb46dbd114f24947f474
--- /dev/null
+++ b/tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/0/k
@@ -0,0 +1,42 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      k;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 2 -2 0 0 0 0];
+
+internalField   uniform 0.1;
+
+boundaryField
+{
+    floor
+    {
+        type            kQRWallFunction;
+        value           uniform 0.1;
+    }
+    ceiling
+    {
+        type            kQRWallFunction;
+        value           uniform 0.1;
+    }
+    fixedWalls
+    {
+        type            kQRWallFunction;
+        value           uniform 0.1;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/0/k.old b/tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/0/k.old
new file mode 100644
index 0000000000000000000000000000000000000000..4ec7f08960c175a6d955e2c1d3cfb98453524647
--- /dev/null
+++ b/tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/0/k.old
@@ -0,0 +1,42 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      k;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 2 -2 0 0 0 0];
+
+internalField   uniform 0.1;
+
+boundaryField
+{
+    floor
+    {
+        type            compressible::kQRWallFunction;
+        value           uniform 0.1;
+    }
+    ceiling
+    {
+        type            compressible::kQRWallFunction;
+        value           uniform 0.1;
+    }
+    fixedWalls
+    {
+        type            compressible::kQRWallFunction;
+        value           uniform 0.1;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/0/nut b/tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/0/nut
new file mode 100644
index 0000000000000000000000000000000000000000..a81ad6b59fd8d4b8617763e08058fbb36b3b8aef
--- /dev/null
+++ b/tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/0/nut
@@ -0,0 +1,42 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      nut;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 2 -1 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    floor
+    {
+        type            nutWallFunction;
+        value           uniform 0;
+    }
+    ceiling
+    {
+        type            nutWallFunction;
+        value           uniform 0;
+    }
+    fixedWalls
+    {
+        type            nutWallFunction;
+        value           uniform 0;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoom/0/pd b/tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/0/p
similarity index 76%
rename from tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoom/0/pd
rename to tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/0/p
index 1841d7882f5c06e25080901cd800391c09d11868..502fb88dfaf0b335774fa4a45714c68078bec5ad 100644
--- a/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoom/0/pd
+++ b/tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/0/p
@@ -10,11 +10,11 @@ FoamFile
     version     2.0;
     format      ascii;
     class       volScalarField;
-    object      pd;
+    object      p;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-dimensions      [1 -1 -2 0 0 0 0];
+dimensions      [0 2 -2 0 0 0 0];
 
 internalField   uniform 0;
 
@@ -22,25 +22,22 @@ boundaryField
 {
     floor
     {
-        type            fixedFluxBuoyantPressure;
+        type            buoyantPressure;
+        rho             rhok;
         value           uniform 0;
     }
 
     ceiling
     {
-        type            fixedFluxBuoyantPressure;
+        type            buoyantPressure;
+        rho             rhok;
         value           uniform 0;
     }
 
     fixedWalls
     {
-        type            fixedFluxBuoyantPressure;
-        value           uniform 0;
-    }
-
-    box
-    {
-        type            fixedFluxBuoyantPressure;
+        type            buoyantPressure;
+        rho             rhok;
         value           uniform 0;
     }
 }
diff --git a/tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/Allclean b/tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/Allclean
new file mode 100755
index 0000000000000000000000000000000000000000..83fcec83ecad6243fdfd74b8afb16acd55518f36
--- /dev/null
+++ b/tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/Allclean
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+# Source tutorial clean functions
+. $WM_PROJECT_DIR/bin/tools/CleanFunctions
+
+cleanCase
+cp 0/T.org 0/T
diff --git a/tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/Allrun b/tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/Allrun
new file mode 100755
index 0000000000000000000000000000000000000000..92490b5b5ea392da192d42ec102f629c87c73e60
--- /dev/null
+++ b/tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/Allrun
@@ -0,0 +1,10 @@
+#!/bin/sh
+# Source tutorial run functions
+. $WM_PROJECT_DIR/bin/tools/RunFunctions
+
+application="buoyantBoussinesqPisoFoam"
+
+compileApplication ../../buoyantPisoFoam/hotRoom/setHotRoom
+runApplication blockMesh
+runApplication setHotRoom
+runApplication $application
diff --git a/tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/constant/RASProperties b/tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/constant/RASProperties
new file mode 100644
index 0000000000000000000000000000000000000000..35b5a409f230c180f07469bfe0679cdf00cb419d
--- /dev/null
+++ b/tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/constant/RASProperties
@@ -0,0 +1,100 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      RASProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+RASModel        kEpsilon;
+
+turbulence      on;
+
+printCoeffs     on;
+
+laminarCoeffs
+{
+}
+
+kEpsilonCoeffs
+{
+    Cmu             0.09;
+    C1              1.44;
+    C2              1.92;
+    C3              0.85;
+    alphah          1;
+    alphak          1;
+    alphaEps        0.76923;
+}
+
+RNGkEpsilonCoeffs
+{
+    Cmu             0.0845;
+    C1              1.42;
+    C2              1.68;
+    C3              -0.33;
+    alphah          1;
+    alphak          1.39;
+    alphaEps        1.39;
+    eta0            4.38;
+    beta            0.012;
+}
+
+LaunderSharmaKECoeffs
+{
+    Cmu             0.09;
+    C1              1.44;
+    C2              1.92;
+    C3              -0.33;
+    alphah          1;
+    alphak          1;
+    alphaEps        0.76923;
+}
+
+LRRCoeffs
+{
+    Cmu             0.09;
+    Clrr1           1.8;
+    Clrr2           0.6;
+    C1              1.44;
+    C2              1.92;
+    alphah          1;
+    Cs              0.25;
+    Ceps            0.15;
+    alphaR          1;
+    alphaEps        0.76923;
+}
+
+LaunderGibsonRSTMCoeffs
+{
+    Cmu             0.09;
+    Clg1            1.8;
+    Clg2            0.6;
+    C1              1.44;
+    C2              1.92;
+    alphah          1;
+    C1Ref           0.5;
+    C2Ref           0.3;
+    Cs              0.25;
+    Ceps            0.15;
+    alphaR          1;
+    alphaEps        0.76923;
+}
+
+wallFunctionCoeffs
+{
+    kappa           0.4187;
+    E               9;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/Lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/constant/environmentalProperties b/tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/constant/environmentalProperties
similarity index 100%
rename from tutorials/Lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/constant/environmentalProperties
rename to tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/constant/environmentalProperties
diff --git a/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCube/constant/polyMesh/blockMeshDict b/tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/constant/polyMesh/blockMeshDict
similarity index 72%
rename from tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCube/constant/polyMesh/blockMeshDict
rename to tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/constant/polyMesh/blockMeshDict
index 187c2c7784d60dda7a64455a321799191e21c95e..fa2bb5c4c6e834caba8be30e1825ea1a45c22c92 100644
--- a/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCube/constant/polyMesh/blockMeshDict
+++ b/tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/constant/polyMesh/blockMeshDict
@@ -14,48 +14,47 @@ FoamFile
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-convertToMeters 2.462491658e-9;
+convertToMeters 1;
 
-vertices
+vertices        
 (
-    (-1 -1 -1)
-    (1 -1 -1)
-    (1 1 -1)
-    (-1 1 -1)
-    (-1 -1 1)
-    (1 -1 1)
-    (1 1 1)
-    (-1 1 1)
+    (0 0 0)
+    (10 0 0)
+    (10 5 0)
+    (0 5 0)
+    (0 0 10)
+    (10 0 10)
+    (10 5 10)
+    (0 5 10)
 );
 
-blocks
+blocks          
 (
-    hex (0 1 2 3 4 5 6 7) liquid (12 12 12) simpleGrading (1 1 1)
+    hex (0 1 2 3 4 5 6 7) (20 10 20) simpleGrading (1 1 1)
 );
 
-patches
+edges           
 (
-    cyclic
-    periodicX
+);
+
+patches         
+(
+    wall floor 
     (
-        (1 2 6 5)
-        (0 4 7 3)
+        (1 5 4 0)
     )
-
-    cyclic
-    periodicY
+    wall ceiling 
     (
-        (2 3 7 6)
-        (0 1 5 4)
+        (3 7 6 2)
     )
-
-    cyclic
-    periodicZ
+    wall fixedWalls 
     (
+        (0 4 7 3)
+        (2 6 5 1)
         (0 3 2 1)
         (4 5 6 7)
     )
-)
+);
 
 mergePatchPairs
 (
diff --git a/tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/constant/polyMesh/boundary b/tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/constant/polyMesh/boundary
new file mode 100644
index 0000000000000000000000000000000000000000..0d4d0e498dae524c835cc1addc9707eb5af47fb3
--- /dev/null
+++ b/tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/constant/polyMesh/boundary
@@ -0,0 +1,40 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       polyBoundaryMesh;
+    location    "constant/polyMesh";
+    object      boundary;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+3
+(
+    floor
+    {
+        type            wall;
+        nFaces          400;
+        startFace       11200;
+    }
+    ceiling
+    {
+        type            wall;
+        nFaces          400;
+        startFace       11600;
+    }
+    fixedWalls
+    {
+        type            wall;
+        nFaces          800;
+        startFace       12000;
+    }
+)
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/constant/transportProperties b/tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/constant/transportProperties
new file mode 100644
index 0000000000000000000000000000000000000000..f48fda19ccac705f76f1573b7ba40cce45abfd5b
--- /dev/null
+++ b/tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/constant/transportProperties
@@ -0,0 +1,42 @@
+/*---------------------------------------------------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      http://www.openfoam.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+FoamFile
+{
+    version         2.0;
+    format          ascii;
+
+    root            "";
+    case            "";
+    instance        "";
+    local           "";
+
+    class           dictionary;
+    object          transportProperties;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+transportModel Newtonian;
+
+// Laminar viscosity
+nu              nu [0 2 -1 0 0 0 0] 1e-05;
+
+// Thermal expansion coefficient
+beta            beta [0 0 0 -1 0 0 0] 3e-03;
+
+// Reference temperature
+TRef            TRef [0 0 0 1 0 0 0] 300;
+
+// Laminar Prandtl number
+Pr              Pr [0 0 0 0 0 0 0] 0.9;
+
+// Turbulent Prandtl number
+Prt             Prt [0 0 0 0 0 0 0] 0.7;
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/molecularDynamics/gnemdFoam/nanoNozzle/system/controlDict b/tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/system/controlDict
similarity index 89%
rename from tutorials/discreteMethods/molecularDynamics/gnemdFoam/nanoNozzle/system/controlDict
rename to tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/system/controlDict
index 46436871638186b4ead04e658ceeadd2579b9a5f..26a1219ee04433266c5a0540f5ecf239fc0d0f93 100644
--- a/tutorials/discreteMethods/molecularDynamics/gnemdFoam/nanoNozzle/system/controlDict
+++ b/tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/system/controlDict
@@ -21,19 +21,19 @@ startTime       0;
 
 stopAt          endTime;
 
-endTime         3e-11;
+endTime         1000;
 
-deltaT          1e-14;
+deltaT          1;
 
-writeControl    runTime;
+writeControl    timeStep;
 
-writeInterval   1e-12;
+writeInterval   100;
 
 purgeWrite      0;
 
 writeFormat     ascii;
 
-writePrecision  12;
+writePrecision  6;
 
 writeCompression uncompressed;
 
@@ -45,5 +45,6 @@ runTimeModifiable yes;
 
 adjustTimeStep  no;
 
+maxCo           0.5;
 
 // ************************************************************************* //
diff --git a/tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/system/fvSchemes b/tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/system/fvSchemes
new file mode 100644
index 0000000000000000000000000000000000000000..6be8f0129f6c5ae27dae2d20c5e0cd28fcf26f12
--- /dev/null
+++ b/tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/system/fvSchemes
@@ -0,0 +1,68 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      fvSchemes;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ddtSchemes
+{
+    default         Euler;
+}
+
+gradSchemes
+{
+    default         Gauss linear;
+}
+
+divSchemes
+{
+    default         none;
+    div(phi,U)      Gauss upwind;
+    div(phi,T)      Gauss upwind;
+    div(phi,k)      Gauss upwind;
+    div(phi,epsilon) Gauss upwind;
+    div(phi,R)      Gauss upwind;
+    div(R)          Gauss linear;
+    div((nuEff*dev(grad(U).T()))) Gauss linear;
+}
+
+laplacianSchemes
+{
+    default         none;
+    laplacian(nuEff,U) Gauss linear corrected;
+    laplacian((1|A(U)),p) Gauss linear corrected;
+    laplacian(kappaEff,T) Gauss linear corrected;
+    laplacian(DkEff,k) Gauss linear corrected;
+    laplacian(DepsilonEff,epsilon) Gauss linear corrected;
+    laplacian(DREff,R) Gauss linear corrected;
+}
+
+interpolationSchemes
+{
+    default         linear;
+}
+
+snGradSchemes
+{
+    default         corrected;
+}
+
+fluxRequired
+{
+    default         no;
+    p               ;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCube/system/fvSolution b/tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/system/fvSolution
similarity index 61%
rename from tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCube/system/fvSolution
rename to tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/system/fvSolution
index 46670343363af32a79fcf7bd788316556b9de7d7..7afa2f50aa9b1dc663a24bada8c0971be911c656 100644
--- a/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCube/system/fvSolution
+++ b/tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/system/fvSolution
@@ -21,7 +21,15 @@ solvers
     {
         solver          PCG;
         preconditioner  DIC;
-        tolerance       1e-06;
+        tolerance       1e-07;
+        relTol          0.1;
+    }
+
+    pFinal
+    {
+        solver          PCG;
+        preconditioner  DIC;
+        tolerance       1e-07;
         relTol          0;
     }
 
@@ -32,10 +40,43 @@ solvers
         tolerance       1e-05;
         relTol          0;
     }
+
+    T
+    {
+        solver          PBiCG;
+        preconditioner  DILU;
+        tolerance       1e-05;
+        relTol          0;
+    }
+
+    k
+    {
+        solver          PBiCG;
+        preconditioner  DILU;
+        tolerance       1e-05;
+        relTol          0;
+    }
+
+    epsilon
+    {
+        solver          PBiCG;
+        preconditioner  DILU;
+        tolerance       1e-05;
+        relTol          0;
+    }
+
+    R
+    {
+        solver          PBiCG;
+        preconditioner  DILU;
+        tolerance       1e-05;
+        relTol          0;
+    }
 }
 
 PISO
 {
+    momentumPredictor yes;
     nCorrectors     2;
     nNonOrthogonalCorrectors 0;
     pRefCell        0;
diff --git a/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom/0/T b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom/0/T
new file mode 100644
index 0000000000000000000000000000000000000000..a5a03f6a2e3944867bd11d1adb15e3f468569dc6
--- /dev/null
+++ b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom/0/T
@@ -0,0 +1,443 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      T;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 1 0 0 0];
+
+internalField   uniform 300;
+
+boundaryField
+{
+    floor
+    {
+        type            fixedValue;
+        value           nonuniform List<scalar> 
+400
+(
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+600
+600
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+600
+600
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+)
+;
+    }
+    ceiling
+    {
+        type            fixedValue;
+        value           uniform 300;
+    }
+    fixedWalls
+    {
+        type            zeroGradient;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom/0/T.org b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom/0/T.org
new file mode 100644
index 0000000000000000000000000000000000000000..a5a03f6a2e3944867bd11d1adb15e3f468569dc6
--- /dev/null
+++ b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom/0/T.org
@@ -0,0 +1,443 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      T;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 1 0 0 0];
+
+internalField   uniform 300;
+
+boundaryField
+{
+    floor
+    {
+        type            fixedValue;
+        value           nonuniform List<scalar> 
+400
+(
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+600
+600
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+600
+600
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+300
+)
+;
+    }
+    ceiling
+    {
+        type            fixedValue;
+        value           uniform 300;
+    }
+    fixedWalls
+    {
+        type            zeroGradient;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom/0/U b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom/0/U
new file mode 100644
index 0000000000000000000000000000000000000000..0b6b191dab023e6aa4c9701188dd93252aeb7aa9
--- /dev/null
+++ b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom/0/U
@@ -0,0 +1,42 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volVectorField;
+    object      U;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -1 0 0 0 0];
+
+internalField   uniform (0 0 0);
+
+boundaryField
+{
+    floor           
+    {
+        type            fixedValue;
+        value           uniform (0 0 0);
+    }
+
+    ceiling         
+    {
+        type            fixedValue;
+        value           uniform (0 0 0);
+    }
+
+    fixedWalls      
+    {
+        type            fixedValue;
+        value           uniform (0 0 0);
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/buoyantPisoFoam/hotRoom/0/pd b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom/0/alphat
similarity index 83%
rename from tutorials/heatTransfer/buoyantPisoFoam/hotRoom/0/pd
rename to tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom/0/alphat
index 3a679ba63a51f43776afa9f72c8fe4e69e328aac..3bcb9c03b13cf7d96e3456eabea33e5f6d0ee8e1 100644
--- a/tutorials/heatTransfer/buoyantPisoFoam/hotRoom/0/pd
+++ b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom/0/alphat
@@ -10,11 +10,12 @@ FoamFile
     version     2.0;
     format      ascii;
     class       volScalarField;
-    object      pd;
+    location    "0";
+    object      alphat;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-dimensions      [1 -1 -2 0 0 0 0];
+dimensions      [1 -1 -1 0 0 0 0];
 
 internalField   uniform 0;
 
@@ -22,21 +23,20 @@ boundaryField
 {
     floor
     {
-        type            fixedFluxBuoyantPressure;
+        type            alphatWallFunction;
         value           uniform 0;
     }
-
     ceiling
     {
-        type            fixedFluxBuoyantPressure;
+        type            alphatWallFunction;
         value           uniform 0;
     }
-
     fixedWalls
     {
-        type            fixedFluxBuoyantPressure;
+        type            alphatWallFunction;
         value           uniform 0;
     }
 }
 
+
 // ************************************************************************* //
diff --git a/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom/0/epsilon b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom/0/epsilon
new file mode 100644
index 0000000000000000000000000000000000000000..892d69375d9d5eab2aa804a87ee6661bbc1a9f06
--- /dev/null
+++ b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom/0/epsilon
@@ -0,0 +1,42 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      epsilon;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 2 -3 0 0 0 0];
+
+internalField   uniform 0.01;
+
+boundaryField
+{
+    floor
+    {
+        type            epsilonWallFunction;
+        value           uniform 0.01;
+    }
+    ceiling
+    {
+        type            epsilonWallFunction;
+        value           uniform 0.01;
+    }
+    fixedWalls
+    {
+        type            epsilonWallFunction;
+        value           uniform 0.01;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom/0/epsilon.old b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom/0/epsilon.old
new file mode 100644
index 0000000000000000000000000000000000000000..23851291dc60d3b0df3be887acfbeb0bb5067ef8
--- /dev/null
+++ b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom/0/epsilon.old
@@ -0,0 +1,42 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      epsilon;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 2 -3 0 0 0 0];
+
+internalField   uniform 0.01;
+
+boundaryField
+{
+    floor
+    {
+        type            compressible::epsilonWallFunction;
+        value           uniform 0.01;
+    }
+    ceiling
+    {
+        type            compressible::epsilonWallFunction;
+        value           uniform 0.01;
+    }
+    fixedWalls
+    {
+        type            compressible::epsilonWallFunction;
+        value           uniform 0.01;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom/0/k b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom/0/k
new file mode 100644
index 0000000000000000000000000000000000000000..38c2a542ef4c0c57799adb46dbd114f24947f474
--- /dev/null
+++ b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom/0/k
@@ -0,0 +1,42 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      k;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 2 -2 0 0 0 0];
+
+internalField   uniform 0.1;
+
+boundaryField
+{
+    floor
+    {
+        type            kQRWallFunction;
+        value           uniform 0.1;
+    }
+    ceiling
+    {
+        type            kQRWallFunction;
+        value           uniform 0.1;
+    }
+    fixedWalls
+    {
+        type            kQRWallFunction;
+        value           uniform 0.1;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom/0/k.old b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom/0/k.old
new file mode 100644
index 0000000000000000000000000000000000000000..4ec7f08960c175a6d955e2c1d3cfb98453524647
--- /dev/null
+++ b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom/0/k.old
@@ -0,0 +1,42 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      k;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 2 -2 0 0 0 0];
+
+internalField   uniform 0.1;
+
+boundaryField
+{
+    floor
+    {
+        type            compressible::kQRWallFunction;
+        value           uniform 0.1;
+    }
+    ceiling
+    {
+        type            compressible::kQRWallFunction;
+        value           uniform 0.1;
+    }
+    fixedWalls
+    {
+        type            compressible::kQRWallFunction;
+        value           uniform 0.1;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom/0/nut b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom/0/nut
new file mode 100644
index 0000000000000000000000000000000000000000..a81ad6b59fd8d4b8617763e08058fbb36b3b8aef
--- /dev/null
+++ b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom/0/nut
@@ -0,0 +1,42 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      nut;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 2 -1 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    floor
+    {
+        type            nutWallFunction;
+        value           uniform 0;
+    }
+    ceiling
+    {
+        type            nutWallFunction;
+        value           uniform 0;
+    }
+    fixedWalls
+    {
+        type            nutWallFunction;
+        value           uniform 0;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom/0/p b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom/0/p
new file mode 100644
index 0000000000000000000000000000000000000000..502fb88dfaf0b335774fa4a45714c68078bec5ad
--- /dev/null
+++ b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom/0/p
@@ -0,0 +1,45 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      p;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 2 -2 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    floor
+    {
+        type            buoyantPressure;
+        rho             rhok;
+        value           uniform 0;
+    }
+
+    ceiling
+    {
+        type            buoyantPressure;
+        rho             rhok;
+        value           uniform 0;
+    }
+
+    fixedWalls
+    {
+        type            buoyantPressure;
+        rho             rhok;
+        value           uniform 0;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom/Allclean b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom/Allclean
new file mode 100755
index 0000000000000000000000000000000000000000..83fcec83ecad6243fdfd74b8afb16acd55518f36
--- /dev/null
+++ b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom/Allclean
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+# Source tutorial clean functions
+. $WM_PROJECT_DIR/bin/tools/CleanFunctions
+
+cleanCase
+cp 0/T.org 0/T
diff --git a/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom/Allrun b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom/Allrun
new file mode 100755
index 0000000000000000000000000000000000000000..628624c70292d70d593effaa1a4e9fc9e2281550
--- /dev/null
+++ b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom/Allrun
@@ -0,0 +1,10 @@
+#!/bin/sh
+# Source tutorial run functions
+. $WM_PROJECT_DIR/bin/tools/RunFunctions
+
+application="buoyantBoussinesqSimpleFoam"
+
+compileApplication ../../buoyantPisoFoam/hotRoom/setHotRoom
+runApplication blockMesh
+runApplication setHotRoom
+runApplication $application
diff --git a/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom/constant/RASProperties b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom/constant/RASProperties
new file mode 100644
index 0000000000000000000000000000000000000000..35b5a409f230c180f07469bfe0679cdf00cb419d
--- /dev/null
+++ b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom/constant/RASProperties
@@ -0,0 +1,100 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      RASProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+RASModel        kEpsilon;
+
+turbulence      on;
+
+printCoeffs     on;
+
+laminarCoeffs
+{
+}
+
+kEpsilonCoeffs
+{
+    Cmu             0.09;
+    C1              1.44;
+    C2              1.92;
+    C3              0.85;
+    alphah          1;
+    alphak          1;
+    alphaEps        0.76923;
+}
+
+RNGkEpsilonCoeffs
+{
+    Cmu             0.0845;
+    C1              1.42;
+    C2              1.68;
+    C3              -0.33;
+    alphah          1;
+    alphak          1.39;
+    alphaEps        1.39;
+    eta0            4.38;
+    beta            0.012;
+}
+
+LaunderSharmaKECoeffs
+{
+    Cmu             0.09;
+    C1              1.44;
+    C2              1.92;
+    C3              -0.33;
+    alphah          1;
+    alphak          1;
+    alphaEps        0.76923;
+}
+
+LRRCoeffs
+{
+    Cmu             0.09;
+    Clrr1           1.8;
+    Clrr2           0.6;
+    C1              1.44;
+    C2              1.92;
+    alphah          1;
+    Cs              0.25;
+    Ceps            0.15;
+    alphaR          1;
+    alphaEps        0.76923;
+}
+
+LaunderGibsonRSTMCoeffs
+{
+    Cmu             0.09;
+    Clg1            1.8;
+    Clg2            0.6;
+    C1              1.44;
+    C2              1.92;
+    alphah          1;
+    C1Ref           0.5;
+    C2Ref           0.3;
+    Cs              0.25;
+    Ceps            0.15;
+    alphaR          1;
+    alphaEps        0.76923;
+}
+
+wallFunctionCoeffs
+{
+    kappa           0.4187;
+    E               9;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom/constant/environmentalProperties b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom/constant/environmentalProperties
new file mode 100644
index 0000000000000000000000000000000000000000..a866ff549fd799e63d2d6946a66cf3da14d092bd
--- /dev/null
+++ b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom/constant/environmentalProperties
@@ -0,0 +1,21 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      environmentalProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+g               g [ 0 1 -2 0 0 0 0 ] ( 0 -9.81 0 );
+
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom/constant/polyMesh/blockMeshDict b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom/constant/polyMesh/blockMeshDict
new file mode 100644
index 0000000000000000000000000000000000000000..fa2bb5c4c6e834caba8be30e1825ea1a45c22c92
--- /dev/null
+++ b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom/constant/polyMesh/blockMeshDict
@@ -0,0 +1,63 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      blockMeshDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+convertToMeters 1;
+
+vertices        
+(
+    (0 0 0)
+    (10 0 0)
+    (10 5 0)
+    (0 5 0)
+    (0 0 10)
+    (10 0 10)
+    (10 5 10)
+    (0 5 10)
+);
+
+blocks          
+(
+    hex (0 1 2 3 4 5 6 7) (20 10 20) simpleGrading (1 1 1)
+);
+
+edges           
+(
+);
+
+patches         
+(
+    wall floor 
+    (
+        (1 5 4 0)
+    )
+    wall ceiling 
+    (
+        (3 7 6 2)
+    )
+    wall fixedWalls 
+    (
+        (0 4 7 3)
+        (2 6 5 1)
+        (0 3 2 1)
+        (4 5 6 7)
+    )
+);
+
+mergePatchPairs
+(
+);
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom/constant/polyMesh/boundary b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom/constant/polyMesh/boundary
new file mode 100644
index 0000000000000000000000000000000000000000..0d4d0e498dae524c835cc1addc9707eb5af47fb3
--- /dev/null
+++ b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom/constant/polyMesh/boundary
@@ -0,0 +1,40 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       polyBoundaryMesh;
+    location    "constant/polyMesh";
+    object      boundary;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+3
+(
+    floor
+    {
+        type            wall;
+        nFaces          400;
+        startFace       11200;
+    }
+    ceiling
+    {
+        type            wall;
+        nFaces          400;
+        startFace       11600;
+    }
+    fixedWalls
+    {
+        type            wall;
+        nFaces          800;
+        startFace       12000;
+    }
+)
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom/constant/transportProperties b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom/constant/transportProperties
new file mode 100644
index 0000000000000000000000000000000000000000..f48fda19ccac705f76f1573b7ba40cce45abfd5b
--- /dev/null
+++ b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom/constant/transportProperties
@@ -0,0 +1,42 @@
+/*---------------------------------------------------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      http://www.openfoam.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+FoamFile
+{
+    version         2.0;
+    format          ascii;
+
+    root            "";
+    case            "";
+    instance        "";
+    local           "";
+
+    class           dictionary;
+    object          transportProperties;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+transportModel Newtonian;
+
+// Laminar viscosity
+nu              nu [0 2 -1 0 0 0 0] 1e-05;
+
+// Thermal expansion coefficient
+beta            beta [0 0 0 -1 0 0 0] 3e-03;
+
+// Reference temperature
+TRef            TRef [0 0 0 1 0 0 0] 300;
+
+// Laminar Prandtl number
+Pr              Pr [0 0 0 0 0 0 0] 0.9;
+
+// Turbulent Prandtl number
+Prt             Prt [0 0 0 0 0 0 0] 0.7;
+
+// ************************************************************************* //
diff --git a/tutorials/mesh/snappyHexMesh/motorBike/system/controlDict b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom/system/controlDict
similarity index 94%
rename from tutorials/mesh/snappyHexMesh/motorBike/system/controlDict
rename to tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom/system/controlDict
index ef80311ee11931792c1d637b6d45c5a9b75c24de..bfc52cf914e6d70563729bb9790dda8a20daaa70 100644
--- a/tutorials/mesh/snappyHexMesh/motorBike/system/controlDict
+++ b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom/system/controlDict
@@ -21,19 +21,19 @@ startTime       0;
 
 stopAt          endTime;
 
-endTime         100;
+endTime         1000;
 
 deltaT          1;
 
 writeControl    timeStep;
 
-writeInterval   1;
+writeInterval   100;
 
 purgeWrite      0;
 
 writeFormat     ascii;
 
-writePrecision  7;
+writePrecision  6;
 
 writeCompression uncompressed;
 
diff --git a/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom/system/fvSchemes b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom/system/fvSchemes
new file mode 100644
index 0000000000000000000000000000000000000000..b54bb8631600a594830b214816d8a858bcf83a02
--- /dev/null
+++ b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom/system/fvSchemes
@@ -0,0 +1,68 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      fvSchemes;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ddtSchemes
+{
+    default         steadyState;
+}
+
+gradSchemes
+{
+    default         Gauss linear;
+}
+
+divSchemes
+{
+    default         none;
+    div(phi,U)      Gauss upwind;
+    div(phi,T)      Gauss upwind;
+    div(phi,k)      Gauss upwind;
+    div(phi,epsilon) Gauss upwind;
+    div(phi,R)      Gauss upwind;
+    div(R)          Gauss linear;
+    div((nuEff*dev(grad(U).T()))) Gauss linear;
+}
+
+laplacianSchemes
+{
+    default         none;
+    laplacian(nuEff,U) Gauss linear corrected;
+    laplacian((1|A(U)),p) Gauss linear corrected;
+    laplacian(kappaEff,T) Gauss linear corrected;
+    laplacian(DkEff,k) Gauss linear corrected;
+    laplacian(DepsilonEff,epsilon) Gauss linear corrected;
+    laplacian(DREff,R) Gauss linear corrected;
+}
+
+interpolationSchemes
+{
+    default         linear;
+}
+
+snGradSchemes
+{
+    default         corrected;
+}
+
+fluxRequired
+{
+    default         no;
+    p               ;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom/system/fvSolution b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom/system/fvSolution
new file mode 100644
index 0000000000000000000000000000000000000000..429a10a7fdef11317fd88716d83302a85e16d099
--- /dev/null
+++ b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom/system/fvSolution
@@ -0,0 +1,88 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      fvSolution;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+solvers
+{
+    p
+    {
+        solver          PCG;
+        preconditioner  DIC;
+        tolerance       1e-08;
+        relTol          0.01;
+    }
+
+    U
+    {
+        solver          PBiCG;
+        preconditioner  DILU;
+        tolerance       1e-05;
+        relTol          0.1;
+    }
+
+    T
+    {
+        solver          PBiCG;
+        preconditioner  DILU;
+        tolerance       1e-05;
+        relTol          0.1;
+    }
+
+    k
+    {
+        solver          PBiCG;
+        preconditioner  DILU;
+        tolerance       1e-05;
+        relTol          0.1;
+    }
+
+    epsilon
+    {
+        solver          PBiCG;
+        preconditioner  DILU;
+        tolerance       1e-05;
+        relTol          0.1;
+    }
+
+    R
+    {
+        solver          PBiCG;
+        preconditioner  DILU;
+        tolerance       1e-05;
+        relTol          0.1;
+    }
+}
+
+SIMPLE
+{
+    nNonOrthogonalCorrectors 0;
+    pRefCell        0;
+    pRefValue       0;
+}
+
+relaxationFactors
+{
+    rho             1;
+    p               0.7;
+    U               0.2;
+    T               0.7;
+    k               0.7;
+    epsilon         0.7;
+    R               0.7;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/iglooWithFridges/0/T b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/iglooWithFridges/0/T
new file mode 100644
index 0000000000000000000000000000000000000000..2f930360fd37896b527889abe6270f3643cca6e6
--- /dev/null
+++ b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/iglooWithFridges/0/T
@@ -0,0 +1,48 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      T;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 1 0 0 0];
+
+internalField   uniform 265;
+
+boundaryField
+{
+    ground
+    {
+        type            fixedValue;
+        value           uniform 265;
+    }
+
+    igloo_region0
+    {
+        type            fixedValue;
+        value           uniform 265;
+    }
+
+    twoFridgeFreezers_seal_0
+    {
+        type            fixedValue;
+        value           uniform 303;
+    }
+
+    twoFridgeFreezers_herring_1
+    {
+        type            fixedValue;
+        value           uniform 303;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/iglooWithFridges/0/U b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/iglooWithFridges/0/U
new file mode 100644
index 0000000000000000000000000000000000000000..5d70f2a9c021a7c55ded01f6296f0113bb31029b
--- /dev/null
+++ b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/iglooWithFridges/0/U
@@ -0,0 +1,48 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volVectorField;
+    object      U;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -1 0 0 0 0];
+
+internalField   uniform (0 0 0);
+
+boundaryField
+{
+    ground
+    {
+        type            fixedValue;
+        value           uniform (0 0 0);
+    }
+
+    igloo_region0
+    {
+        type            fixedValue;
+        value           uniform (0 0 0);
+    }
+
+    twoFridgeFreezers_seal_0
+    {
+        type            fixedValue;
+        value           uniform (0 0 0);
+    }
+
+    twoFridgeFreezers_herring_1
+    {
+        type            fixedValue;
+        value           uniform (0 0 0);
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/iglooWithFridges/0/alphat b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/iglooWithFridges/0/alphat
new file mode 100644
index 0000000000000000000000000000000000000000..acdcda178a7d947cf732c6668ddf055b5bc51d05
--- /dev/null
+++ b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/iglooWithFridges/0/alphat
@@ -0,0 +1,50 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      alphat;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -1 -1 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    ground
+    {
+        type            alphatWallFunction;
+        value           uniform 0;
+    }
+
+    igloo_region0
+    {
+        type            alphatWallFunction;
+        value           uniform 0;
+    }
+
+    twoFridgeFreezers_seal_0
+    {
+        type            alphatWallFunction;
+        value           uniform 0;
+    }
+
+    twoFridgeFreezers_herring_1
+    {
+        type            alphatWallFunction;
+        value           uniform 0;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/iglooWithFridges/0/epsilon b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/iglooWithFridges/0/epsilon
new file mode 100644
index 0000000000000000000000000000000000000000..0fa9bf60f265f63d0b0c957fc39f70ec920c8323
--- /dev/null
+++ b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/iglooWithFridges/0/epsilon
@@ -0,0 +1,50 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      epsilon;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 2 -3 0 0 0 0];
+
+internalField   uniform 0.01;
+
+boundaryField
+{
+    ground
+    {
+        type            epsilonWallFunction;
+        value           uniform 0.01;
+    }
+
+    igloo_region0
+    {
+        type            epsilonWallFunction;
+        value           uniform 0.01;
+    }
+
+    twoFridgeFreezers_seal_0
+    {
+        type            epsilonWallFunction;
+        value           uniform 0.01;
+    }
+
+    twoFridgeFreezers_herring_1
+    {
+        type            epsilonWallFunction;
+        value           uniform 0.01;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/iglooWithFridges/0/k b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/iglooWithFridges/0/k
new file mode 100644
index 0000000000000000000000000000000000000000..bd0cf46f0db295c3f0170202b33472417c20bca3
--- /dev/null
+++ b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/iglooWithFridges/0/k
@@ -0,0 +1,50 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      k;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 2 -2 0 0 0 0];
+
+internalField   uniform 0.1;
+
+boundaryField
+{
+    ground
+    {
+        type            kQRWallFunction;
+        value           uniform 0.1;
+    }
+
+    igloo_region0
+    {
+        type            kQRWallFunction;
+        value           uniform 0.1;
+    }
+
+    twoFridgeFreezers_seal_0
+    {
+        type            kQRWallFunction;
+        value           uniform 0.1;
+    }
+
+    twoFridgeFreezers_herring_1
+    {
+        type            kQRWallFunction;
+        value           uniform 0.1;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/iglooWithFridges/0/nut b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/iglooWithFridges/0/nut
new file mode 100644
index 0000000000000000000000000000000000000000..e9e5f16e555dccc27b4fd7c11b0b4877afc1bb4f
--- /dev/null
+++ b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/iglooWithFridges/0/nut
@@ -0,0 +1,50 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      nut;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 2 -1 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    ground
+    {
+        type            nutWallFunction;
+        value           uniform 0;
+    }
+
+    igloo_region0
+    {
+        type            nutWallFunction;
+        value           uniform 0;
+    }
+
+    twoFridgeFreezers_seal_0
+    {
+        type            nutWallFunction;
+        value           uniform 0;
+    }
+
+    twoFridgeFreezers_herring_1
+    {
+        type            nutWallFunction;
+        value           uniform 0;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/iglooWithFridges/0/p b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/iglooWithFridges/0/p
new file mode 100644
index 0000000000000000000000000000000000000000..6835a61b1258dc947b0fcf662a11290acf90045f
--- /dev/null
+++ b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/iglooWithFridges/0/p
@@ -0,0 +1,52 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      p;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 2 -2 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    ground
+    {
+        type            buoyantPressure;
+        rho             rhok;
+        value           uniform 0;
+    }
+
+    igloo_region0
+    {
+        type            buoyantPressure;
+        rho             rhok;
+        value           uniform 0;
+    }
+
+    twoFridgeFreezers_seal_0
+    {
+        type            buoyantPressure;
+        rho             rhok;
+        value           uniform 0;
+    }
+
+    twoFridgeFreezers_herring_1
+    {
+        type            buoyantPressure;
+        rho             rhok;
+        value           uniform 0;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/iglooWithFridges/Allrun b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/iglooWithFridges/Allrun
new file mode 100755
index 0000000000000000000000000000000000000000..79dc3f4b95e1f1dff9646fd6dd1ba9fa3bbae4ac
--- /dev/null
+++ b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/iglooWithFridges/Allrun
@@ -0,0 +1,9 @@
+#!/bin/sh
+# Source tutorial run functions
+. $WM_PROJECT_DIR/bin/tools/RunFunctions
+
+runApplication blockMesh
+runApplication snappyHexMesh -overwrite
+runApplication setFields
+runApplication buoyantBoussinesqSimpleFoam
+
diff --git a/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/iglooWithFridges/constant/RASProperties b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/iglooWithFridges/constant/RASProperties
new file mode 100644
index 0000000000000000000000000000000000000000..35b5a409f230c180f07469bfe0679cdf00cb419d
--- /dev/null
+++ b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/iglooWithFridges/constant/RASProperties
@@ -0,0 +1,100 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      RASProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+RASModel        kEpsilon;
+
+turbulence      on;
+
+printCoeffs     on;
+
+laminarCoeffs
+{
+}
+
+kEpsilonCoeffs
+{
+    Cmu             0.09;
+    C1              1.44;
+    C2              1.92;
+    C3              0.85;
+    alphah          1;
+    alphak          1;
+    alphaEps        0.76923;
+}
+
+RNGkEpsilonCoeffs
+{
+    Cmu             0.0845;
+    C1              1.42;
+    C2              1.68;
+    C3              -0.33;
+    alphah          1;
+    alphak          1.39;
+    alphaEps        1.39;
+    eta0            4.38;
+    beta            0.012;
+}
+
+LaunderSharmaKECoeffs
+{
+    Cmu             0.09;
+    C1              1.44;
+    C2              1.92;
+    C3              -0.33;
+    alphah          1;
+    alphak          1;
+    alphaEps        0.76923;
+}
+
+LRRCoeffs
+{
+    Cmu             0.09;
+    Clrr1           1.8;
+    Clrr2           0.6;
+    C1              1.44;
+    C2              1.92;
+    alphah          1;
+    Cs              0.25;
+    Ceps            0.15;
+    alphaR          1;
+    alphaEps        0.76923;
+}
+
+LaunderGibsonRSTMCoeffs
+{
+    Cmu             0.09;
+    Clg1            1.8;
+    Clg2            0.6;
+    C1              1.44;
+    C2              1.92;
+    alphah          1;
+    C1Ref           0.5;
+    C2Ref           0.3;
+    Cs              0.25;
+    Ceps            0.15;
+    alphaR          1;
+    alphaEps        0.76923;
+}
+
+wallFunctionCoeffs
+{
+    kappa           0.4187;
+    E               9;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/iglooWithFridges/constant/environmentalProperties b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/iglooWithFridges/constant/environmentalProperties
new file mode 100644
index 0000000000000000000000000000000000000000..8ecb2a440203a35f242328826e7484e672012712
--- /dev/null
+++ b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/iglooWithFridges/constant/environmentalProperties
@@ -0,0 +1,20 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      environmentalProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+g               g [0 1 -2 0 0 0 0] (0 0 -9.81);
+
+// ************************************************************************* //
diff --git a/tutorials/mesh/snappyHexMesh/iglooWithFridges/constant/polyMesh/blockMeshDict b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/iglooWithFridges/constant/polyMesh/blockMeshDict
similarity index 93%
rename from tutorials/mesh/snappyHexMesh/iglooWithFridges/constant/polyMesh/blockMeshDict
rename to tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/iglooWithFridges/constant/polyMesh/blockMeshDict
index d97dbb8e268c425f32326827a59e880e05e07eda..39d94d804fadab1df4f1ac72260fbd477d5f9204 100644
--- a/tutorials/mesh/snappyHexMesh/iglooWithFridges/constant/polyMesh/blockMeshDict
+++ b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/iglooWithFridges/constant/polyMesh/blockMeshDict
@@ -40,27 +40,32 @@ edges
 
 patches
 (
-    patch maxY
+    empty maxY
     (
         (3 7 6 2)
     )
-    patch minX
+
+    empty minX
     (
         (0 4 7 3)
     )
-    patch maxX
+
+    empty maxX
     (
         (2 6 5 1)
     )
-    patch minY
+
+    empty minY
     (
         (1 5 4 0)
     )
-    patch minZ
+
+    wall ground
     (
         (0 3 2 1)
     )
-    patch maxZ
+
+    empty maxZ
     (
         (4 5 6 7)
     )
diff --git a/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/iglooWithFridges/constant/transportProperties b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/iglooWithFridges/constant/transportProperties
new file mode 100644
index 0000000000000000000000000000000000000000..f48fda19ccac705f76f1573b7ba40cce45abfd5b
--- /dev/null
+++ b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/iglooWithFridges/constant/transportProperties
@@ -0,0 +1,42 @@
+/*---------------------------------------------------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      http://www.openfoam.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+FoamFile
+{
+    version         2.0;
+    format          ascii;
+
+    root            "";
+    case            "";
+    instance        "";
+    local           "";
+
+    class           dictionary;
+    object          transportProperties;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+transportModel Newtonian;
+
+// Laminar viscosity
+nu              nu [0 2 -1 0 0 0 0] 1e-05;
+
+// Thermal expansion coefficient
+beta            beta [0 0 0 -1 0 0 0] 3e-03;
+
+// Reference temperature
+TRef            TRef [0 0 0 1 0 0 0] 300;
+
+// Laminar Prandtl number
+Pr              Pr [0 0 0 0 0 0 0] 0.9;
+
+// Turbulent Prandtl number
+Prt             Prt [0 0 0 0 0 0 0] 0.7;
+
+// ************************************************************************* //
diff --git a/tutorials/mesh/snappyHexMesh/iglooWithFridges/constant/triSurface/fridgeA.eMesh b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/iglooWithFridges/constant/triSurface/fridgeA.eMesh
similarity index 100%
rename from tutorials/mesh/snappyHexMesh/iglooWithFridges/constant/triSurface/fridgeA.eMesh
rename to tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/iglooWithFridges/constant/triSurface/fridgeA.eMesh
diff --git a/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/iglooWithFridges/system/controlDict b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/iglooWithFridges/system/controlDict
new file mode 100644
index 0000000000000000000000000000000000000000..46e7cd00c334efd3d10a44f4e932cef57ccff22d
--- /dev/null
+++ b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/iglooWithFridges/system/controlDict
@@ -0,0 +1,47 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      controlDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+startFrom       startTime;
+
+startTime       0;
+
+stopAt          endTime;
+
+endTime         1000;
+
+deltaT          1;
+
+writeControl    timeStep;
+
+writeInterval   100;
+
+purgeWrite      0;
+
+writeFormat     ascii;
+
+writePrecision  6;
+
+writeCompression uncompressed;
+
+timeFormat      general;
+
+timePrecision   6;
+
+runTimeModifiable yes;
+
+
+// ************************************************************************* //
diff --git a/tutorials/mesh/snappyHexMesh/iglooWithFridges/system/decomposeParDict b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/iglooWithFridges/system/decomposeParDict
similarity index 100%
rename from tutorials/mesh/snappyHexMesh/iglooWithFridges/system/decomposeParDict
rename to tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/iglooWithFridges/system/decomposeParDict
diff --git a/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/iglooWithFridges/system/fvSchemes b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/iglooWithFridges/system/fvSchemes
new file mode 100644
index 0000000000000000000000000000000000000000..b54bb8631600a594830b214816d8a858bcf83a02
--- /dev/null
+++ b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/iglooWithFridges/system/fvSchemes
@@ -0,0 +1,68 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      fvSchemes;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ddtSchemes
+{
+    default         steadyState;
+}
+
+gradSchemes
+{
+    default         Gauss linear;
+}
+
+divSchemes
+{
+    default         none;
+    div(phi,U)      Gauss upwind;
+    div(phi,T)      Gauss upwind;
+    div(phi,k)      Gauss upwind;
+    div(phi,epsilon) Gauss upwind;
+    div(phi,R)      Gauss upwind;
+    div(R)          Gauss linear;
+    div((nuEff*dev(grad(U).T()))) Gauss linear;
+}
+
+laplacianSchemes
+{
+    default         none;
+    laplacian(nuEff,U) Gauss linear corrected;
+    laplacian((1|A(U)),p) Gauss linear corrected;
+    laplacian(kappaEff,T) Gauss linear corrected;
+    laplacian(DkEff,k) Gauss linear corrected;
+    laplacian(DepsilonEff,epsilon) Gauss linear corrected;
+    laplacian(DREff,R) Gauss linear corrected;
+}
+
+interpolationSchemes
+{
+    default         linear;
+}
+
+snGradSchemes
+{
+    default         corrected;
+}
+
+fluxRequired
+{
+    default         no;
+    p               ;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/iglooWithFridges/system/fvSolution b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/iglooWithFridges/system/fvSolution
new file mode 100644
index 0000000000000000000000000000000000000000..c2053ee47d6e6890ba5dc9b2e9041cdd7eb269d5
--- /dev/null
+++ b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/iglooWithFridges/system/fvSolution
@@ -0,0 +1,88 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      fvSolution;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+solvers
+{
+    p
+    {
+        solver          PCG;
+        preconditioner  DIC;
+        tolerance       1e-08;
+        relTol          0.01;
+    }
+
+    U
+    {
+        solver          PBiCG;
+        preconditioner  DILU;
+        tolerance       1e-05;
+        relTol          0.1;
+    }
+
+    T
+    {
+        solver          PBiCG;
+        preconditioner  DILU;
+        tolerance       1e-05;
+        relTol          0.1;
+    }
+
+    k
+    {
+        solver          PBiCG;
+        preconditioner  DILU;
+        tolerance       1e-05;
+        relTol          0.1;
+    }
+
+    epsilon
+    {
+        solver          PBiCG;
+        preconditioner  DILU;
+        tolerance       1e-05;
+        relTol          0.1;
+    }
+
+    R
+    {
+        solver          PBiCG;
+        preconditioner  DILU;
+        tolerance       1e-05;
+        relTol          0.1;
+    }
+}
+
+SIMPLE
+{
+    nNonOrthogonalCorrectors 0;
+    pRefCell        0;
+    pRefValue       0;
+}
+
+relaxationFactors
+{
+    rho             1;
+    p               0.3;
+    U               0.7;
+    T               0.7;
+    k               0.7;
+    epsilon         0.7;
+    R               0.7;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/mesh/snappyHexMesh/iglooWithFridges/system/snappyHexMeshDict b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/iglooWithFridges/system/snappyHexMeshDict
similarity index 97%
rename from tutorials/mesh/snappyHexMesh/iglooWithFridges/system/snappyHexMeshDict
rename to tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/iglooWithFridges/system/snappyHexMeshDict
index be30045c6d4d77a2bf014349a0e4890ff5d963bd..d31010ace7ef8ced9166f5e0bd4e2ec0ad4c347c 100644
--- a/tutorials/mesh/snappyHexMesh/iglooWithFridges/system/snappyHexMeshDict
+++ b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/iglooWithFridges/system/snappyHexMeshDict
@@ -42,10 +42,13 @@ geometry
         min (0 0 0);
         max (1 1 1);
     }
+
     fridgeFreezer
     {
         type searchableSurfaceCollection;
-    
+
+        mergeSubRegions true;
+
         freezer
         {
             surface box1;
@@ -71,14 +74,17 @@ geometry
             }
         }
     }
+
     twoFridgeFreezers
     {
         type searchableSurfaceCollection;
-    
+
+        mergeSubRegions true;
+
         seal
         {
-            surface fridgeFreezer;
-            scale (1.0 1.0 1.0);
+            surface box1;
+            scale (1.0 1.0 2.1);
             transform
             {
                 type    cartesian;
@@ -89,8 +95,8 @@ geometry
         }
         herring
         {
-            surface fridgeFreezer;
-            scale (1.0 1.0 1.0);
+            surface box1;
+            scale (1.0 1.0 2.1);
             transform
             {
                 type    cartesian;
@@ -244,6 +250,8 @@ snapControls
 // Settings for the layer addition.
 addLayersControls
 {
+    relativeSizes true;
+
     // Per final patch (so not geometry!) the layer information
     layers
     {
@@ -264,7 +272,7 @@ addLayersControls
     //  is the
     //  thickness of the layer furthest away from the wall.
     //  Relative to undistorted size of cell outside layer.
-    finalLayerRatio 0.5;
+    finalLayerThickness 0.5;
 
     //- Minimum thickness of cell layer. If for any reason layer
     //  cannot be above minThickness do not add layer.
diff --git a/tutorials/heatTransfer/buoyantPisoFoam/hotRoom/0/alphat b/tutorials/heatTransfer/buoyantPisoFoam/hotRoom/0/alphat
new file mode 100644
index 0000000000000000000000000000000000000000..5b9884a613ee886a95cb72e4cd55c77c0657e501
--- /dev/null
+++ b/tutorials/heatTransfer/buoyantPisoFoam/hotRoom/0/alphat
@@ -0,0 +1,42 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      alphat;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -1 -1 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    floor
+    {
+        type            compressible::alphatWallFunction;
+        value           uniform 0;
+    }
+    ceiling
+    {
+        type            compressible::alphatWallFunction;
+        value           uniform 0;
+    }
+    fixedWalls
+    {
+        type            compressible::alphatWallFunction;
+        value           uniform 0;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/buoyantPisoFoam/hotRoom/0/mut b/tutorials/heatTransfer/buoyantPisoFoam/hotRoom/0/mut
new file mode 100644
index 0000000000000000000000000000000000000000..7c893682965996d4b4b48036a27527eeab2ebdf6
--- /dev/null
+++ b/tutorials/heatTransfer/buoyantPisoFoam/hotRoom/0/mut
@@ -0,0 +1,42 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      mut;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -1 -1 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    floor
+    {
+        type            mutWallFunction;
+        value           uniform 0;
+    }
+    ceiling
+    {
+        type            mutWallFunction;
+        value           uniform 0;
+    }
+    fixedWalls
+    {
+        type            mutWallFunction;
+        value           uniform 0;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/buoyantPisoFoam/hotRoom/0/p b/tutorials/heatTransfer/buoyantPisoFoam/hotRoom/0/p
index 10cf8ccf8e1db93392b06f55e43b51c5006cde71..349cfb544ecd2067ace69184f34c7414544584b0 100644
--- a/tutorials/heatTransfer/buoyantPisoFoam/hotRoom/0/p
+++ b/tutorials/heatTransfer/buoyantPisoFoam/hotRoom/0/p
@@ -16,26 +16,26 @@ FoamFile
 
 dimensions      [1 -1 -2 0 0 0 0];
 
-internalField   uniform 100000;
+internalField   uniform 1e5;
 
 boundaryField
 {
     floor
     {
-        type            calculated;
-        value           uniform 100000;
+        type            buoyantPressure;
+        value           uniform 1e5;
     }
 
     ceiling
     {
-        type            calculated;
-        value           uniform 100000;
+        type            buoyantPressure;
+        value           uniform 1e5;
     }
 
     fixedWalls
     {
-        type            calculated;
-        value           uniform 100000;
+        type            buoyantPressure;
+        value           uniform 1e5;
     }
 }
 
diff --git a/tutorials/heatTransfer/buoyantPisoFoam/hotRoom/constant/thermophysicalProperties b/tutorials/heatTransfer/buoyantPisoFoam/hotRoom/constant/thermophysicalProperties
index f826516c2ebc44480f764103bbcc05c3f2e83efd..fb233e2de3b1b75cced36021ada8f28f58c58802 100644
--- a/tutorials/heatTransfer/buoyantPisoFoam/hotRoom/constant/thermophysicalProperties
+++ b/tutorials/heatTransfer/buoyantPisoFoam/hotRoom/constant/thermophysicalProperties
@@ -15,7 +15,7 @@ FoamFile
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-thermoType      hThermo<pureMixture<constTransport<specieThermo<hConstThermo<perfectGas>>>>>;
+thermoType      hRhoThermo<pureMixture<constTransport<specieThermo<hConstThermo<perfectGas>>>>>;
 
 mixture         air 1 28.9 1000 0 1.8e-05 0.7;
 
diff --git a/tutorials/heatTransfer/buoyantPisoFoam/hotRoom/system/controlDict b/tutorials/heatTransfer/buoyantPisoFoam/hotRoom/system/controlDict
index cb2e7470f67597540554a58b19942872bab68d34..26a1219ee04433266c5a0540f5ecf239fc0d0f93 100644
--- a/tutorials/heatTransfer/buoyantPisoFoam/hotRoom/system/controlDict
+++ b/tutorials/heatTransfer/buoyantPisoFoam/hotRoom/system/controlDict
@@ -21,9 +21,9 @@ startTime       0;
 
 stopAt          endTime;
 
-endTime         400;
+endTime         1000;
 
-deltaT          0.25;
+deltaT          1;
 
 writeControl    timeStep;
 
diff --git a/tutorials/heatTransfer/buoyantPisoFoam/hotRoom/system/fvSchemes b/tutorials/heatTransfer/buoyantPisoFoam/hotRoom/system/fvSchemes
index 583bf08e11cb06903ecea9b68ba94a197d2ebed3..35b5a3de97726aa485d4a2b0953e416448dbb7b3 100644
--- a/tutorials/heatTransfer/buoyantPisoFoam/hotRoom/system/fvSchemes
+++ b/tutorials/heatTransfer/buoyantPisoFoam/hotRoom/system/fvSchemes
@@ -42,7 +42,7 @@ laplacianSchemes
 {
     default         none;
     laplacian(muEff,U) Gauss linear corrected;
-    laplacian((rho*(1|A(U))),pd) Gauss linear corrected;
+    laplacian((rho*(1|A(U))),p) Gauss linear corrected;
     laplacian(alphaEff,h) Gauss linear corrected;
     laplacian(DkEff,k) Gauss linear corrected;
     laplacian(DepsilonEff,epsilon) Gauss linear corrected;
@@ -62,7 +62,7 @@ snGradSchemes
 fluxRequired
 {
     default         no;
-    pd              ;
+    p               ;
 }
 
 
diff --git a/tutorials/heatTransfer/buoyantPisoFoam/hotRoom/system/fvSolution b/tutorials/heatTransfer/buoyantPisoFoam/hotRoom/system/fvSolution
index c7dcb8279da2f8d7c4afc7063a37071da1f38f73..ffe5b53f56aa268749c19d3ceede84925d35c365 100644
--- a/tutorials/heatTransfer/buoyantPisoFoam/hotRoom/system/fvSolution
+++ b/tutorials/heatTransfer/buoyantPisoFoam/hotRoom/system/fvSolution
@@ -25,7 +25,7 @@ solvers
         relTol          0;
     }
 
-    pd
+    p
     {
         solver          PCG;
         preconditioner  DIC;
@@ -33,7 +33,7 @@ solvers
         relTol          0.1;
     }
 
-    pdFinal
+    pFinal
     {
         solver          PCG;
         preconditioner  DIC;
diff --git a/tutorials/heatTransfer/buoyantSimpleFoam/hotRoom/0/mut b/tutorials/heatTransfer/buoyantSimpleFoam/hotRoom/0/mut
new file mode 100644
index 0000000000000000000000000000000000000000..7c893682965996d4b4b48036a27527eeab2ebdf6
--- /dev/null
+++ b/tutorials/heatTransfer/buoyantSimpleFoam/hotRoom/0/mut
@@ -0,0 +1,42 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      mut;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -1 -1 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    floor
+    {
+        type            mutWallFunction;
+        value           uniform 0;
+    }
+    ceiling
+    {
+        type            mutWallFunction;
+        value           uniform 0;
+    }
+    fixedWalls
+    {
+        type            mutWallFunction;
+        value           uniform 0;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/buoyantSimpleFoam/hotRoom/0/p b/tutorials/heatTransfer/buoyantSimpleFoam/hotRoom/0/p
index 10cf8ccf8e1db93392b06f55e43b51c5006cde71..349cfb544ecd2067ace69184f34c7414544584b0 100644
--- a/tutorials/heatTransfer/buoyantSimpleFoam/hotRoom/0/p
+++ b/tutorials/heatTransfer/buoyantSimpleFoam/hotRoom/0/p
@@ -16,26 +16,26 @@ FoamFile
 
 dimensions      [1 -1 -2 0 0 0 0];
 
-internalField   uniform 100000;
+internalField   uniform 1e5;
 
 boundaryField
 {
     floor
     {
-        type            calculated;
-        value           uniform 100000;
+        type            buoyantPressure;
+        value           uniform 1e5;
     }
 
     ceiling
     {
-        type            calculated;
-        value           uniform 100000;
+        type            buoyantPressure;
+        value           uniform 1e5;
     }
 
     fixedWalls
     {
-        type            calculated;
-        value           uniform 100000;
+        type            buoyantPressure;
+        value           uniform 1e5;
     }
 }
 
diff --git a/tutorials/heatTransfer/buoyantSimpleFoam/hotRoom/constant/thermophysicalProperties b/tutorials/heatTransfer/buoyantSimpleFoam/hotRoom/constant/thermophysicalProperties
index f826516c2ebc44480f764103bbcc05c3f2e83efd..6d55fcba3d7dd3a1e149ef0dd6f1582e917b7e7d 100644
--- a/tutorials/heatTransfer/buoyantSimpleFoam/hotRoom/constant/thermophysicalProperties
+++ b/tutorials/heatTransfer/buoyantSimpleFoam/hotRoom/constant/thermophysicalProperties
@@ -15,7 +15,7 @@ FoamFile
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-thermoType      hThermo<pureMixture<constTransport<specieThermo<hConstThermo<perfectGas>>>>>;
+thermoType      hPsiThermo<pureMixture<constTransport<specieThermo<hConstThermo<perfectGas>>>>>;
 
 mixture         air 1 28.9 1000 0 1.8e-05 0.7;
 
diff --git a/tutorials/heatTransfer/buoyantSimpleFoam/hotRoom/system/fvSchemes b/tutorials/heatTransfer/buoyantSimpleFoam/hotRoom/system/fvSchemes
index 9dbebd21cbc1a0cd01091dde9e0cbcd63a459855..cb548b9d9fa88a28a17aefd4f99b9edeee80ea47 100644
--- a/tutorials/heatTransfer/buoyantSimpleFoam/hotRoom/system/fvSchemes
+++ b/tutorials/heatTransfer/buoyantSimpleFoam/hotRoom/system/fvSchemes
@@ -41,7 +41,7 @@ laplacianSchemes
 {
     default         none;
     laplacian(muEff,U) Gauss linear corrected;
-    laplacian((rho*(1|A(U))),pd) Gauss linear corrected;
+    laplacian((rho*(1|A(U))),p) Gauss linear corrected;
     laplacian(alphaEff,h) Gauss linear corrected;
     laplacian(DkEff,k) Gauss linear corrected;
     laplacian(DepsilonEff,epsilon) Gauss linear corrected;
@@ -61,7 +61,7 @@ snGradSchemes
 fluxRequired
 {
     default         no;
-    pd              ;
+    p               ;
 }
 
 
diff --git a/tutorials/heatTransfer/buoyantSimpleFoam/hotRoom/system/fvSolution b/tutorials/heatTransfer/buoyantSimpleFoam/hotRoom/system/fvSolution
index dfbfd6a27f1d095120342e7f47910f85b53f92c8..c543e875278062213cdf99ae620a9d1b1810c10f 100644
--- a/tutorials/heatTransfer/buoyantSimpleFoam/hotRoom/system/fvSolution
+++ b/tutorials/heatTransfer/buoyantSimpleFoam/hotRoom/system/fvSolution
@@ -17,7 +17,7 @@ FoamFile
 
 solvers
 {
-    pd
+    p
     {
         solver          PCG;
         preconditioner  DIC;
@@ -69,15 +69,15 @@ solvers
 SIMPLE
 {
     nNonOrthogonalCorrectors 0;
-    pdRefCell       0;
-    pdRefValue      0;
+    pRefCell        0;
+    pRefValue       1e5;
 }
 
 relaxationFactors
 {
     rho             1;
-    pd              0.3;
-    U               0.7;
+    p               0.7;
+    U               0.2;
     h               0.7;
     k               0.7;
     epsilon         0.7;
diff --git a/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoom/0/p b/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoom/0/p
index f200e3eeb0f918f10cf34f5b87e5d04abd76b21d..f36884c5b2bea50659ca7ac526c853470f1aece7 100644
--- a/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoom/0/p
+++ b/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoom/0/p
@@ -22,25 +22,25 @@ boundaryField
 {
     floor
     {
-        type            calculated;
+        type            buoyantPressure;
         value           uniform 100000;
     }
 
     ceiling
     {
-        type            calculated;
+        type            buoyantPressure;
         value           uniform 100000;
     }
 
     fixedWalls
     {
-        type            calculated;
+        type            buoyantPressure;
         value           uniform 100000;
     }
 
     box
     {
-        type            calculated;
+        type            buoyantPressure;
         value           uniform 100000;
     }
 }
diff --git a/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoom/constant/radiationProperties b/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoom/constant/radiationProperties
index d8bbfe7f595cd351683a08e8f1d8fe5974ea401d..5fc829b87cf5f1b92eaa88fe1ef7e7324601bbc1 100644
--- a/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoom/constant/radiationProperties
+++ b/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoom/constant/radiationProperties
@@ -27,6 +27,9 @@ P1Coeffs
 {
 }
 
+// Number of flow iterations per radiation iteration
+solverFreq 1;
+
 absorptionEmissionModel constantAbsorptionEmission;
 
 constantAbsorptionEmissionCoeffs
diff --git a/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoom/constant/thermophysicalProperties b/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoom/constant/thermophysicalProperties
index f826516c2ebc44480f764103bbcc05c3f2e83efd..6d55fcba3d7dd3a1e149ef0dd6f1582e917b7e7d 100644
--- a/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoom/constant/thermophysicalProperties
+++ b/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoom/constant/thermophysicalProperties
@@ -15,7 +15,7 @@ FoamFile
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-thermoType      hThermo<pureMixture<constTransport<specieThermo<hConstThermo<perfectGas>>>>>;
+thermoType      hPsiThermo<pureMixture<constTransport<specieThermo<hConstThermo<perfectGas>>>>>;
 
 mixture         air 1 28.9 1000 0 1.8e-05 0.7;
 
diff --git a/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoom/system/fvSchemes b/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoom/system/fvSchemes
index 2263c0977531361f056a900481ca7409854ed755..cd290308eb8752ef4ba6ef50fe5e3a17a2aba085 100644
--- a/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoom/system/fvSchemes
+++ b/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoom/system/fvSchemes
@@ -41,7 +41,7 @@ laplacianSchemes
 {
     default         none;
     laplacian(muEff,U) Gauss linear corrected;
-    laplacian((rho*(1|A(U))),pd) Gauss linear corrected;
+    laplacian((rho*(1|A(U))),p) Gauss linear corrected;
     laplacian(alphaEff,h) Gauss linear corrected;
     laplacian(DkEff,k) Gauss linear corrected;
     laplacian(DepsilonEff,epsilon) Gauss linear corrected;
@@ -62,7 +62,7 @@ snGradSchemes
 fluxRequired
 {
     default         no;
-    pd              ;
+    p;
 }
 
 
diff --git a/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoom/system/fvSolution b/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoom/system/fvSolution
index f6c1f9453a3985e9e77725582bd8f113f91cf78a..25a07616b314a40fd7a0dc43cfa299b9ec71f295 100644
--- a/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoom/system/fvSolution
+++ b/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoom/system/fvSolution
@@ -17,7 +17,7 @@ FoamFile
 
 solvers
 {
-    pd
+    p
     {
         solver          PCG;
         preconditioner  DIC;
@@ -69,14 +69,14 @@ solvers
 SIMPLE
 {
     nNonOrthogonalCorrectors 0;
-    pdRefCell       0;
-    pdRefValue      0;
+    pRefCell       0;
+    pRefValue      0;
 }
 
 relaxationFactors
 {
     rho             1;
-    pd              0.3;
+    p               0.3;
     U               0.7;
     h               0.7;
     k               0.7;
diff --git a/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoomFvDOM/0/G b/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoomFvDOM/0/G
new file mode 100644
index 0000000000000000000000000000000000000000..cb9783649fe55f5f67032842ed34cefccd958808
--- /dev/null
+++ b/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoomFvDOM/0/G
@@ -0,0 +1,56 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      G;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 0 -3 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    floor
+    {
+        type            MarshakRadiation;
+        T               T;
+        emissivity      1;
+        value           uniform 0;
+    }
+
+    fixedWalls
+    {
+        type            MarshakRadiation;
+        T               T;
+        emissivity      1;
+        value           uniform 0;
+    }
+
+    ceiling
+    {
+        type            MarshakRadiation;
+        T               T;
+        emissivity      1;
+        value           uniform 0;
+    }
+
+    box
+    {
+        type            MarshakRadiation;
+        T               T;
+        emissivity      1;
+        value           uniform 0;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoomFvDOM/0/IDefault b/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoomFvDOM/0/IDefault
new file mode 100644
index 0000000000000000000000000000000000000000..bbb4ec4ca347db87a2f6d153c8a75e30f9abb452
--- /dev/null
+++ b/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoomFvDOM/0/IDefault
@@ -0,0 +1,32 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      IDefault;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 0 -3 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    ".*"
+    {
+        type            greyDiffusiveRadiation;
+        T               T;
+        emissivity      0.5;
+        value           uniform 0;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoomFvDOM/0/T b/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoomFvDOM/0/T
new file mode 100644
index 0000000000000000000000000000000000000000..19ee7d9d08e1a184e767104e3384895d5ab2e4c0
--- /dev/null
+++ b/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoomFvDOM/0/T
@@ -0,0 +1,47 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      T;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 1 0 0 0];
+
+internalField   uniform 300;
+
+boundaryField
+{
+    floor
+    {
+        type            fixedValue;
+        value           uniform 300.0;
+    }
+
+    ceiling
+    {
+        type            fixedValue;
+        value           uniform 300.0;
+    }
+
+    fixedWalls
+    {
+        type            zeroGradient;
+    }
+
+    box
+    {
+        type            fixedValue;
+        value           uniform 500.0;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoomFvDOM/0/U b/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoomFvDOM/0/U
new file mode 100644
index 0000000000000000000000000000000000000000..9a0eaf66b54cacbc5eed28bb9ed45cf51b8e8ba3
--- /dev/null
+++ b/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoomFvDOM/0/U
@@ -0,0 +1,48 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volVectorField;
+    object      U;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -1 0 0 0 0];
+
+internalField   uniform (0 0 0);
+
+boundaryField
+{
+    floor           
+    {
+        type            fixedValue;
+        value           uniform (0 0 0);
+    }
+
+    ceiling         
+    {
+        type            fixedValue;
+        value           uniform (0 0 0);
+    }
+
+    fixedWalls      
+    {
+        type            fixedValue;
+        value           uniform (0 0 0);
+    }
+
+    box
+    {
+        type            fixedValue;
+        value           uniform (0 0 0);
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoomFvDOM/0/alphat b/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoomFvDOM/0/alphat
new file mode 100644
index 0000000000000000000000000000000000000000..f11126d3f5379f99fbfa6dd2237ce2157f5189a9
--- /dev/null
+++ b/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoomFvDOM/0/alphat
@@ -0,0 +1,47 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      alphat;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -1 -1 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    box
+    {
+        type            alphatWallFunction;
+        value           uniform 0;
+    }
+    floor
+    {
+        type            alphatWallFunction;
+        value           uniform 0;
+    }
+    ceiling
+    {
+        type            alphatWallFunction;
+        value           uniform 0;
+    }
+    fixedWalls
+    {
+        type            alphatWallFunction;
+        value           uniform 0;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoomFvDOM/0/epsilon b/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoomFvDOM/0/epsilon
new file mode 100644
index 0000000000000000000000000000000000000000..d5e7b9cd0273d6d3e2024e42e6ec4aaac6be4986
--- /dev/null
+++ b/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoomFvDOM/0/epsilon
@@ -0,0 +1,50 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      epsilon;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [ 0 2 -3 0 0 0 0 ];
+
+internalField   uniform 0.01;
+
+boundaryField
+{
+    floor
+    {
+        type            compressible::epsilonWallFunction;
+        value           uniform 0;
+    }
+
+    ceiling
+    {
+        type            compressible::epsilonWallFunction;
+        value           uniform 0;
+    }
+
+    fixedWalls
+    {
+        type            compressible::epsilonWallFunction;
+        value           uniform 0;
+    }
+
+    box
+    {
+        type            compressible::epsilonWallFunction;
+        value           uniform 0;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoomFvDOM/0/k b/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoomFvDOM/0/k
new file mode 100644
index 0000000000000000000000000000000000000000..5b206f8e4e379cbc9d5a2764071140549649d354
--- /dev/null
+++ b/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoomFvDOM/0/k
@@ -0,0 +1,50 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      k;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [ 0 2 -2 0 0 0 0 ];
+
+internalField   uniform 0.1;
+
+boundaryField
+{
+    floor
+    {
+        type            compressible::kQRWallFunction;
+        value           uniform 0;
+    }
+
+    ceiling
+    {
+        type            compressible::kQRWallFunction;
+        value           uniform 0;
+    }
+
+    fixedWalls
+    {
+        type            compressible::kQRWallFunction;
+        value           uniform 0;
+    }
+
+    box
+    {
+        type            compressible::kQRWallFunction;
+        value           uniform 0;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoomFvDOM/0/mut b/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoomFvDOM/0/mut
new file mode 100644
index 0000000000000000000000000000000000000000..c609cbf3d2c865212d20992980a9b59a349b9c68
--- /dev/null
+++ b/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoomFvDOM/0/mut
@@ -0,0 +1,50 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      mut;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [ 1 -1 -1 0 0 0 0 ];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    box
+    {
+        type            mutWallFunction;
+        value           uniform 0;
+    }
+
+    floor
+    {
+        type            mutWallFunction;
+        value           uniform 0;
+    }
+
+    ceiling
+    {
+        type            mutWallFunction;
+        value           uniform 0;
+    }
+
+    fixedWalls
+    {
+        type            mutWallFunction;
+        value           uniform 0;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoomFvDOM/0/p b/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoomFvDOM/0/p
new file mode 100644
index 0000000000000000000000000000000000000000..f36884c5b2bea50659ca7ac526c853470f1aece7
--- /dev/null
+++ b/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoomFvDOM/0/p
@@ -0,0 +1,48 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      p;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -1 -2 0 0 0 0];
+
+internalField   uniform 100000;
+
+boundaryField
+{
+    floor
+    {
+        type            buoyantPressure;
+        value           uniform 100000;
+    }
+
+    ceiling
+    {
+        type            buoyantPressure;
+        value           uniform 100000;
+    }
+
+    fixedWalls
+    {
+        type            buoyantPressure;
+        value           uniform 100000;
+    }
+
+    box
+    {
+        type            buoyantPressure;
+        value           uniform 100000;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoomFvDOM/constant/RASProperties b/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoomFvDOM/constant/RASProperties
new file mode 100644
index 0000000000000000000000000000000000000000..35b5a409f230c180f07469bfe0679cdf00cb419d
--- /dev/null
+++ b/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoomFvDOM/constant/RASProperties
@@ -0,0 +1,100 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      RASProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+RASModel        kEpsilon;
+
+turbulence      on;
+
+printCoeffs     on;
+
+laminarCoeffs
+{
+}
+
+kEpsilonCoeffs
+{
+    Cmu             0.09;
+    C1              1.44;
+    C2              1.92;
+    C3              0.85;
+    alphah          1;
+    alphak          1;
+    alphaEps        0.76923;
+}
+
+RNGkEpsilonCoeffs
+{
+    Cmu             0.0845;
+    C1              1.42;
+    C2              1.68;
+    C3              -0.33;
+    alphah          1;
+    alphak          1.39;
+    alphaEps        1.39;
+    eta0            4.38;
+    beta            0.012;
+}
+
+LaunderSharmaKECoeffs
+{
+    Cmu             0.09;
+    C1              1.44;
+    C2              1.92;
+    C3              -0.33;
+    alphah          1;
+    alphak          1;
+    alphaEps        0.76923;
+}
+
+LRRCoeffs
+{
+    Cmu             0.09;
+    Clrr1           1.8;
+    Clrr2           0.6;
+    C1              1.44;
+    C2              1.92;
+    alphah          1;
+    Cs              0.25;
+    Ceps            0.15;
+    alphaR          1;
+    alphaEps        0.76923;
+}
+
+LaunderGibsonRSTMCoeffs
+{
+    Cmu             0.09;
+    Clg1            1.8;
+    Clg2            0.6;
+    C1              1.44;
+    C2              1.92;
+    alphah          1;
+    C1Ref           0.5;
+    C2Ref           0.3;
+    Cs              0.25;
+    Ceps            0.15;
+    alphaR          1;
+    alphaEps        0.76923;
+}
+
+wallFunctionCoeffs
+{
+    kappa           0.4187;
+    E               9;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoomFvDOM/constant/environmentalProperties b/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoomFvDOM/constant/environmentalProperties
new file mode 100644
index 0000000000000000000000000000000000000000..639bd90b066ffdac881dc8722b84c1bf39170e9d
--- /dev/null
+++ b/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoomFvDOM/constant/environmentalProperties
@@ -0,0 +1,21 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      environmentalProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+g               g [ 0 1 -2 0 0 0 0 ] ( 0 0 -9.81 );
+
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoomFvDOM/constant/polyMesh/blockMeshDict b/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoomFvDOM/constant/polyMesh/blockMeshDict
new file mode 100644
index 0000000000000000000000000000000000000000..e69de20d9d6c7b3b86178f0f7d486dae976931ad
--- /dev/null
+++ b/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoomFvDOM/constant/polyMesh/blockMeshDict
@@ -0,0 +1,170 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      blockMeshDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+convertToMeters 1;
+
+vertices
+(
+    ( 0.0  0.0  0.0)
+    ( 0.5  0.0  0.0)
+    ( 1.5  0.0  0.0)
+    (10.0  0.0  0.0)
+    ( 0.0  0.5  0.0)
+    ( 0.5  0.5  0.0)
+    ( 1.5  0.5  0.0)
+    (10.0  0.5  0.0)
+    ( 0.0  1.5  0.0)
+    ( 0.5  1.5  0.0)
+    ( 1.5  1.5  0.0)
+    (10.0  1.5  0.0)
+    ( 0.0  6.0  0.0)
+    ( 0.5  6.0  0.0)
+    ( 1.5  6.0  0.0)
+    (10.0  6.0  0.0)
+
+    ( 0.0  0.0  0.5)
+    ( 0.5  0.0  0.5)
+    ( 1.5  0.0  0.5)
+    (10.0  0.0  0.5)
+    ( 0.0  0.5  0.5)
+    ( 0.5  0.5  0.5)
+    ( 1.5  0.5  0.5)
+    (10.0  0.5  0.5)
+    ( 0.0  1.5  0.5)
+    ( 0.5  1.5  0.5)
+    ( 1.5  1.5  0.5)
+    (10.0  1.5  0.5)
+    ( 0.0  6.0  0.5)
+    ( 0.5  6.0  0.5)
+    ( 1.5  6.0  0.5)
+    (10.0  6.0  0.5)
+
+    ( 0.0  0.0  2.0)
+    ( 0.5  0.0  2.0)
+    ( 1.5  0.0  2.0)
+    (10.0  0.0  2.0)
+    ( 0.0  0.5  2.0)
+    ( 0.5  0.5  2.0)
+    ( 1.5  0.5  2.0)
+    (10.0  0.5  2.0)
+    ( 0.0  1.5  2.0)
+    ( 0.5  1.5  2.0)
+    ( 1.5  1.5  2.0)
+    (10.0  1.5  2.0)
+    ( 0.0  6.0  2.0)
+    ( 0.5  6.0  2.0)
+    ( 1.5  6.0  2.0)
+    (10.0  6.0  2.0)
+);
+
+blocks
+(
+    hex ( 0  1  5  4 16 17 21 20) ( 5  5  5) simpleGrading (1 1 1)
+    hex ( 1  2  6  5 17 18 22 21) (10  5  5) simpleGrading (1 1 1)
+    hex ( 2  3  7  6 18 19 23 22) (80  5  5) simpleGrading (1 1 1)
+    hex ( 4  5  9  8 20 21 25 24) ( 5 10  5) simpleGrading (1 1 1)
+    hex ( 6  7 11 10 22 23 27 26) (80 10  5) simpleGrading (1 1 1)
+    hex ( 8  9 13 12 24 25 29 28) ( 5 40  5) simpleGrading (1 1 1)
+    hex ( 9 10 14 13 25 26 30 29) (10 40  5) simpleGrading (1 1 1)
+    hex (10 11 15 14 26 27 31 30) (80 40  5) simpleGrading (1 1 1)
+
+    hex (16 17 21 20 32 33 37 36) ( 5  5 15) simpleGrading (1 1 1)
+    hex (17 18 22 21 33 34 38 37) (10  5 15) simpleGrading (1 1 1)
+    hex (18 19 23 22 34 35 39 38) (80  5 15) simpleGrading (1 1 1)
+    hex (20 21 25 24 36 37 41 40) ( 5 10 15) simpleGrading (1 1 1)
+
+    hex (21 22 26 25 37 38 42 41) (10 10 15) simpleGrading (1 1 1)
+
+    hex (22 23 27 26 38 39 43 42) (80 10 15) simpleGrading (1 1 1)
+    hex (24 25 29 28 40 41 45 44) ( 5 40 15) simpleGrading (1 1 1)
+    hex (25 26 30 29 41 42 46 45) (10 40 15) simpleGrading (1 1 1)
+    hex (26 27 31 30 42 43 47 46) (80 40 15) simpleGrading (1 1 1)
+);
+
+edges
+(
+);
+
+patches
+(
+    wall box
+    (
+        ( 6 22 21  5)
+        (10 26 22  6)
+        ( 9 25 26 10)
+        ( 5 21 25  9)
+        (22 26 25 21)
+    )
+    wall floor
+    (
+        ( 1  5  4  0)
+        ( 2  6  5  1)
+        ( 3  7  6  2)
+        ( 5  9  8  4)
+        ( 7 11 10  6)
+        ( 9 13 12  8)
+        (10 14 13  9)
+        (11 15 14 10)
+    )
+    wall ceiling
+    (
+        (33 37 36 32)
+        (34	38 37 33)
+        (35 39 38 34)
+        (37 41 40 36)
+        (38 42 41 37)
+        (39 43 42 38)
+        (41 45 44 40)
+        (42 46 45 41)
+        (43 47 46 42)
+    )
+    wall fixedWalls
+    (
+        ( 1 17 16  0)
+        ( 2 18 17  1)
+        ( 3 19 18  2)
+        (17 33 32 16)
+        (18 34 33 17)
+        (19 35 34 18)
+
+        ( 7 23 19  3)
+        (11 27 23  7)
+        (15 31 27 11)
+        (23 39 35 19)
+        (27 43 39 23)
+        (31 47 43 27)
+
+        (14 30 31 15)
+        (13 29 30 14)
+        (12 28 29 13)
+        (30 46 47 31)
+        (29 45 46 30)
+        (28 44 45 29)
+
+        ( 8 24 28 12)
+        ( 4 20 24  8)
+        ( 0 16 20  4)
+        (24 40 44 28)
+        (20 36 40 24)
+        (16 32 36 20)
+    )
+);
+
+mergePatchPairs
+(
+);
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoomFvDOM/constant/polyMesh/boundary b/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoomFvDOM/constant/polyMesh/boundary
new file mode 100644
index 0000000000000000000000000000000000000000..ab64c00e2818ae921e8d7797fd57ddc8e836a70c
--- /dev/null
+++ b/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoomFvDOM/constant/polyMesh/boundary
@@ -0,0 +1,46 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       polyBoundaryMesh;
+    location    "constant/polyMesh";
+    object      boundary;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+4
+(
+    box
+    {
+        type            wall;
+        nFaces          300;
+        startFace       303675;
+    }
+    floor
+    {
+        type            wall;
+        nFaces          5125;
+        startFace       303975;
+    }
+    ceiling
+    {
+        type            wall;
+        nFaces          5225;
+        startFace       309100;
+    }
+    fixedWalls
+    {
+        type            wall;
+        nFaces          6000;
+        startFace       314325;
+    }
+)
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoomFvDOM/constant/radiationProperties b/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoomFvDOM/constant/radiationProperties
new file mode 100644
index 0000000000000000000000000000000000000000..1521e119a1c03763e3ee05efd9afd3fc4579c46a
--- /dev/null
+++ b/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoomFvDOM/constant/radiationProperties
@@ -0,0 +1,59 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      radiationProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+radiation       on;
+
+radiationModel  fvDOM;
+
+noRadiation
+{
+}
+
+P1Coeffs
+{
+}
+
+fvDOMCoeffs
+{
+    nPhi    3;          // azimuthal angles in PI/2 on X-Y.(from Y to X)
+    nTheta  5;          // polar angles in PI (from Z to X-Y plane)
+    convergence 1e-3;   // convergence criteria for radiation iteration
+    maxIter 10;         // maximum number of iterations
+}
+
+// Number of flow iterations per radiation iteration
+solverFreq 10;
+
+absorptionEmissionModel constantAbsorptionEmission;
+
+constantAbsorptionEmissionCoeffs
+{
+    a               a [ 0 -1 0 0 0 0 0 ] 0.01;
+    e               e [ 0 -1 0 0 0 0 0 ] 0;
+    E               E [ 1 -1 -3 0 0 0 0 ] 0;
+}
+
+scatterModel    constantScatter;
+
+constantScatterCoeffs
+{
+    sigma           sigma [ 0 -1 0 0 0 0 0 ] 0;
+    C               C [ 0 0 0 0 0 0 0 ] 0;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/compressible/sonicFoam/laminar/forwardStep/constant/thermodynamicProperties b/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoomFvDOM/constant/thermophysicalProperties
similarity index 79%
rename from tutorials/compressible/sonicFoam/laminar/forwardStep/constant/thermodynamicProperties
rename to tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoomFvDOM/constant/thermophysicalProperties
index c6bf31c073b282576473751b3d19f08f877cb84a..6d55fcba3d7dd3a1e149ef0dd6f1582e917b7e7d 100644
--- a/tutorials/compressible/sonicFoam/laminar/forwardStep/constant/thermodynamicProperties
+++ b/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoomFvDOM/constant/thermophysicalProperties
@@ -11,13 +11,15 @@ FoamFile
     format      ascii;
     class       dictionary;
     location    "constant";
-    object      thermodynamicProperties;
+    object      thermophysicalProperties;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-Cv              Cv [ 0 2 -2 -1 0 0 0 ] 1.78571;
+thermoType      hPsiThermo<pureMixture<constTransport<specieThermo<hConstThermo<perfectGas>>>>>;
 
-R               R [ 0 2 -2 -1 0 0 0 ] 0.714286;
+mixture         air 1 28.9 1000 0 1.8e-05 0.7;
+
+pRef            100000;
 
 
 // ************************************************************************* //
diff --git a/tutorials/mesh/snappyHexMesh/iglooWithFridges/system/controlDict b/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoomFvDOM/system/controlDict
similarity index 92%
rename from tutorials/mesh/snappyHexMesh/iglooWithFridges/system/controlDict
rename to tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoomFvDOM/system/controlDict
index ef80311ee11931792c1d637b6d45c5a9b75c24de..06eec5ead0b78d157eddd5c952c86b16a369c092 100644
--- a/tutorials/mesh/snappyHexMesh/iglooWithFridges/system/controlDict
+++ b/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoomFvDOM/system/controlDict
@@ -21,19 +21,19 @@ startTime       0;
 
 stopAt          endTime;
 
-endTime         100;
+endTime         1000;
 
 deltaT          1;
 
 writeControl    timeStep;
 
-writeInterval   1;
+writeInterval   100;
 
 purgeWrite      0;
 
-writeFormat     ascii;
+writeFormat     binary;
 
-writePrecision  7;
+writePrecision  6;
 
 writeCompression uncompressed;
 
diff --git a/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoomFvDOM/system/fvSchemes b/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoomFvDOM/system/fvSchemes
new file mode 100644
index 0000000000000000000000000000000000000000..ee909d216c664b3d7ac374a3cb0cb9b79754ac02
--- /dev/null
+++ b/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoomFvDOM/system/fvSchemes
@@ -0,0 +1,70 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      fvSchemes;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ddtSchemes
+{
+    default         steadyState;
+}
+
+gradSchemes
+{
+    default         Gauss linear;
+}
+
+divSchemes
+{
+    default         none;
+    div(phi,U)      Gauss upwind;
+    div(phi,h)      Gauss upwind;
+    div(phi,k)      Gauss upwind;
+    div(phi,epsilon) Gauss upwind;
+    div(phi,R)      Gauss upwind;
+    div(R)          Gauss linear;
+    div(Ji,Ii_h)    Gauss linearUpwind Gauss linear; //Gauss upwind;
+    div((muEff*dev2(grad(U).T()))) Gauss linear;
+}
+
+laplacianSchemes
+{
+    default         none;
+    laplacian(muEff,U) Gauss linear corrected;
+    laplacian((rho*(1|A(U))),p) Gauss linear corrected;
+    laplacian(alphaEff,h) Gauss linear corrected;
+    laplacian(DkEff,k) Gauss linear corrected;
+    laplacian(DepsilonEff,epsilon) Gauss linear corrected;
+    laplacian(DREff,R) Gauss linear corrected;
+    laplacian(gammaRad,G) Gauss linear corrected;
+}
+
+interpolationSchemes
+{
+    default         linear;
+}
+
+snGradSchemes
+{
+    default         corrected;
+}
+
+fluxRequired
+{
+    default         no;
+    p;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoomFvDOM/system/fvSolution b/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoomFvDOM/system/fvSolution
new file mode 100644
index 0000000000000000000000000000000000000000..685132185bffc4cc62e02c64eacc88582fbd3f4c
--- /dev/null
+++ b/tutorials/heatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoomFvDOM/system/fvSolution
@@ -0,0 +1,92 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      fvSolution;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+solvers
+{
+    p
+    {
+        solver          GAMG;
+        tolerance       1e-06;
+        relTol          0.01;
+        smoother        GaussSeidel;
+        cacheAgglomeration true;
+        nCellsInCoarsestLevel 10;
+        agglomerator    faceAreaPair;
+        mergeLevels     1;
+    }
+
+    U
+    {
+        solver          PBiCG;
+        preconditioner  DILU;
+        tolerance       1e-05;
+        relTol          0.1;
+    }
+
+    h
+    {
+        solver          PBiCG;
+        preconditioner  DILU;
+        tolerance       1e-05;
+        relTol          0.1;
+    }
+
+    k
+    {
+        solver          PBiCG;
+        preconditioner  DILU;
+        tolerance       1e-05;
+        relTol          0.1;
+    }
+
+    epsilon
+    {
+        solver          PBiCG;
+        preconditioner  DILU;
+        tolerance       1e-05;
+        relTol          0.1;
+    }
+
+    Ii
+    {
+        solver          PBiCG;
+        preconditioner  DILU;
+        tolerance       1e-05;
+        relTol          0.1;
+    }
+}
+
+SIMPLE
+{
+    nNonOrthogonalCorrectors 0;
+    pRefCell       0;
+    pRefValue      0;
+}
+
+relaxationFactors
+{
+    rho             1.0;
+    p               0.3;
+    U               0.7;
+    h               0.7;
+    k               0.7;
+    epsilon         0.7;
+    "ILambda.*"     0.7;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/0/p b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/0/p
index a98fc2825d0103495eea908d93fe1de81df15128..385ded3bb382650a44976dea9ec855adf5df7ebe 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/0/p
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/0/p
@@ -16,40 +16,40 @@ FoamFile
 
 dimensions      [1 -1 -2 0 0 0 0];
 
-internalField   uniform 0;
+internalField   uniform 1e5;
 
 boundaryField
 {
     minX
     {
-        type            calculated;
-        value           uniform 0;
+        type            buoyantPressure;
+        value           1e5;
     }
     maxX
     {
-        type            calculated;
-        value           uniform 0;
+        type            buoyantPressure;
+        value           1e5;
     }
 
     minY
     {
-        type            calculated;
-        value           uniform 0;
+        type            buoyantPressure;
+        value           1e5;
     }
     maxY
     {
-        type            calculated;
-        value           uniform 0;
+        type            buoyantPressure;
+        value           1e5;
     }
     minZ
     {
-        type            calculated;
-        value           uniform 0;
+        type            buoyantPressure;
+        value           1e5;
     }
     maxZ
     {
-        type            calculated;
-        value           uniform 0;
+        type            buoyantPressure;
+        value           1e5;
     }
 }
 
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/Allrun b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/Allrun
index f4374b6a93079b3971e9000714616bab0a1a0685..c3c4b5e504a38eb0b761783bd9d0dd0dd4c396eb 100755
--- a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/Allrun
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/Allrun
@@ -15,13 +15,13 @@ runApplication splitMeshRegions -cellZones
 
 for i in bottomAir topAir heater leftSolid rightSolid
 do
-   changeDictionary -region $i
+   changeDictionary -region $i >& log.changeDictionary.$i
 done
 
 # remove fluid fields from solid regions (important for post-processing)
 for i in heater leftSolid rightSolid
 do
-   rm -f 0*/$i/{mut,alphat,epsilon,k,p,pd,U}
+   rm -f 0*/$i/{mut,alphat,epsilon,k,p,p,U}
 done
 
 # remove solid fields from fluid regions (important for post-processing)
@@ -30,7 +30,26 @@ do
    rm -f 0*/$i/{cp,K}
 done
 
-runApplication chtMultiRegionFoam
+
+#-- Run on single processor
+#runApplication chtMultiRegionFoam
+
+# Decompose
+for i in bottomAir topAir heater leftSolid rightSolid
+do
+   decomposePar -region $i >& log.decomposePar.$i
+done
+
+# Run
+hostname > system/machines
+runParallel chtMultiRegionFoam 4 system/machines
+
+# Reconstruct
+for i in bottomAir topAir heater leftSolid rightSolid
+do
+   reconstructPar -region $i >& log.reconstructPar.$i
+done
+
 
 echo
 echo "creating files for paraview post-processing"
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/constant/bottomAir/thermophysicalProperties b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/constant/bottomAir/thermophysicalProperties
index 7eb3ee5b9f430e1429510ce0cf7063914b1f4f41..02fdc143ae4770b373a64bc74f3704da6d5ab69e 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/constant/bottomAir/thermophysicalProperties
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/constant/bottomAir/thermophysicalProperties
@@ -14,7 +14,7 @@ FoamFile
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-thermoType      hThermo<pureMixture<constTransport<specieThermo<hConstThermo<perfectGas>>>>>;
+thermoType      hPsiThermo<pureMixture<constTransport<specieThermo<hConstThermo<perfectGas>>>>>;
 
 mixture         air 1 28.9 1000 0 1.8e-05 0.7;
 
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/constant/bottomAir/turbulenceProperties b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/constant/bottomAir/turbulenceProperties
index 07f85c68df22113b7c7747b89457597b0ea41d66..0efb448180f1ba26ac35d2dda07035e9ec6873f6 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/constant/bottomAir/turbulenceProperties
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/constant/bottomAir/turbulenceProperties
@@ -14,6 +14,6 @@ FoamFile
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-simulationType  RASModel;
+simulationType  laminar;
 
 // ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/constant/polyMesh/boundary b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/constant/polyMesh/boundary
index 69a0952209dee387ae6cda9212a645086bba6b7a..73459cea0720d03956f9bd6cfb7f59f4d60a5d64 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/constant/polyMesh/boundary
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/constant/polyMesh/boundary
@@ -1,8 +1,8 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.5                                   |
-|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
 FoamFile
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/constant/regionProperties b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/constant/regionProperties
index e72fde91a8b5918e35f833a9997d6ba34d496a92..4fc4b886687248dbf1cbc6b1d248c9e22b2d8ea2 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/constant/regionProperties
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/constant/regionProperties
@@ -19,7 +19,4 @@ fluidRegionNames ( bottomAir topAir );
 
 solidRegionNames ( heater leftSolid rightSolid );
 
-pRef            100000;
-
-
 // ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/constant/topAir/thermophysicalProperties b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/constant/topAir/thermophysicalProperties
deleted file mode 120000
index bd35030a13bd2a596bd156fcb37634090c0342a4..0000000000000000000000000000000000000000
--- a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/constant/topAir/thermophysicalProperties
+++ /dev/null
@@ -1 +0,0 @@
-../bottomAir/thermophysicalProperties
\ No newline at end of file
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/constant/topAir/thermophysicalProperties b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/constant/topAir/thermophysicalProperties
new file mode 100644
index 0000000000000000000000000000000000000000..02fdc143ae4770b373a64bc74f3704da6d5ab69e
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/constant/topAir/thermophysicalProperties
@@ -0,0 +1,21 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      thermophysicalProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+thermoType      hPsiThermo<pureMixture<constTransport<specieThermo<hConstThermo<perfectGas>>>>>;
+
+mixture         air 1 28.9 1000 0 1.8e-05 0.7;
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/README b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/README
index fd464e464c710813fac07db7d9ee31278ad58094..5a81b9a5708b0346c6cdd4bd2f6835feb3700bc1 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/README
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/README
@@ -1,3 +1,3 @@
-fvSchemes and fvSolution are not used here
-- added so that pre-processing activities can proceed
+fvSolution is used for outer correctors specification.
+fvSchemes is only so that pre-processing activities can proceed
 
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/bottomAir/changeDictionaryDict b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/bottomAir/changeDictionaryDict
index 5f75f1a76ddf1691f69796712f10ba8a2ec10238..6c80174e3550fcc2163435f18ae6404a26615f1c 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/bottomAir/changeDictionaryDict
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/bottomAir/changeDictionaryDict
@@ -16,6 +16,31 @@ FoamFile
 
 dictionaryReplacement
 {
+    boundary
+    {
+        bottomAir_to_leftSolid
+        {
+            offset          ( 0 0 0 );
+            sampleMode      nearestPatchFace;
+            sampleRegion    leftSolid;
+            samplePatch     leftSolid_to_bottomAir;
+        }
+        bottomAir_to_rightSolid
+        {
+            offset          ( 0 0 0 );
+            sampleMode      nearestPatchFace;
+            sampleRegion    rightSolid;
+            samplePatch     rightSolid_to_bottomAir;
+        }
+        bottomAir_to_heater
+        {
+            offset          ( 0 0 0 );
+            sampleMode      nearestPatchFace;
+            sampleRegion    heater;
+            samplePatch     heater_to_bottomAir;
+        }
+    }
+
     U
     {
         internalField   uniform (0 0 0);
@@ -62,8 +87,6 @@ dictionaryReplacement
             bottomAir_to_leftSolid
             {
                 type            solidWallMixedTemperatureCoupled;
-                neighbourRegionName leftSolid;
-                neighbourPatchName leftSolid_to_bottomAir;
                 neighbourFieldName T;
                 K               K;
                 value           uniform 300;
@@ -72,8 +95,6 @@ dictionaryReplacement
             bottomAir_to_heater
             {
                 type            solidWallMixedTemperatureCoupled;
-                neighbourRegionName heater;
-                neighbourPatchName heater_to_bottomAir;
                 neighbourFieldName T;
                 K               K;
                 value           uniform 300;
@@ -81,8 +102,6 @@ dictionaryReplacement
             bottomAir_to_rightSolid
             {
                 type            solidWallMixedTemperatureCoupled;
-                neighbourRegionName rightSolid;
-                neighbourPatchName rightSolid_to_bottomAir;
                 neighbourFieldName T;
                 K               K;
                 value           uniform 300;
@@ -205,101 +224,55 @@ dictionaryReplacement
         }
     }
 
-    pd
-    {
-        boundaryField
-        {
-            minX
-            {
-                type            fixedFluxBuoyantPressure;
-                value           0;
-            }
-            maxX
-            {
-                type            fixedFluxBuoyantPressure;
-                value           0;
-            }
-            minY
-            {
-                type            fixedFluxBuoyantPressure;
-                value           0;
-            }
-            minZ
-            {
-                type            fixedFluxBuoyantPressure;
-                value           0;
-            }
-            maxZ
-            {
-                type            fixedFluxBuoyantPressure;
-                value           0;
-            }
-            bottomAir_to_leftSolid
-            {
-                type            fixedFluxBuoyantPressure;
-                value           0;
-            }
-            bottomAir_to_heater
-            {
-                type            fixedFluxBuoyantPressure;
-                value           0;
-            }
-            bottomAir_to_rightSolid
-            {
-                type            fixedFluxBuoyantPressure;
-                value           0;
-            }
-        }
-    }
-
     p
     {
-        internalField   uniform 100000;
+        internalField   uniform 1E5;
+
         boundaryField
         {
             minX
             {
-                type            calculated;
-                value           uniform 100000;
+                type            buoyantPressure;
+                value           1e5;
             }
             maxX
             {
-                type            calculated;
-                value           uniform 100000;
+                type            buoyantPressure;
+                value           1e5;
             }
             minY
             {
-                type            calculated;
-                value           uniform 100000;
+                type            buoyantPressure;
+                value           1e5;
             }
             minZ
             {
-                type            calculated;
-                value           uniform 100000;
+                type            buoyantPressure;
+                value           1e5;
             }
             maxZ
             {
-                type            calculated;
-                value           uniform 100000;
+                type            buoyantPressure;
+                value           1e5;
             }
-
             bottomAir_to_leftSolid
             {
-                type            calculated;
-                value           uniform 100000;
+                type            buoyantPressure;
+                value           1e5;
             }
             bottomAir_to_heater
             {
-                type            calculated;
-                value           uniform 100000;
+                type            buoyantPressure;
+                value           1e5;
             }
             bottomAir_to_rightSolid
             {
-                type            calculated;
-                value           uniform 100000;
+                type            buoyantPressure;
+                value           1e5;
             }
         }
     }
+
 }
 
 // ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/bottomAir/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/bottomAir/decomposeParDict
new file mode 100644
index 0000000000000000000000000000000000000000..aad15ee459b6e01cdf6fabba08eb2fa5b8c2a4dd
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/bottomAir/decomposeParDict
@@ -0,0 +1,86 @@
+/*-------------------------------*- C++ -*---------------------------------*\
+|    =========                                                              |
+|    \\      /     OpenFOAM                                                 |
+|     \\    /                                                               |
+|      \\  /       The Open Source CFD Toolbox                              |
+|       \\/                                        http://www.OpenFOAM.org  |
+\*-------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    note        "mesh decomposition control dictionary";
+    location    "system";
+    object      decomposeParDict;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+numberOfSubdomains  4;
+
+//- Keep owner and neighbour on same processor for faces in zones:
+// preserveFaceZones (heater solid1 solid3);
+
+method          scotch;
+// method          hierarchical;
+// method          simple;
+// method          metis;
+// method          manual;
+
+simpleCoeffs
+{
+    n           (2 2 1);
+    delta       0.001;
+}
+
+hierarchicalCoeffs
+{
+    n           (2 2 1);
+    delta       0.001;
+    order       xyz;
+}
+
+metisCoeffs
+{
+ /*
+    processorWeights
+    (
+        1
+        1
+        1
+        1
+    );
+  */
+}
+
+scotchCoeffs
+{
+    //processorWeights
+    //(
+    //    1
+    //    1
+    //    1
+    //    1
+    //);
+    //writeGraph  true;
+    //strategy "b";
+}
+
+manualCoeffs
+{
+    dataFile    "decompositionData";
+}
+
+
+//// Is the case distributed
+//distributed     yes;
+//// Per slave (so nProcs-1 entries) the directory above the case.
+//roots           
+//(
+//    "/tmp"
+//    "/tmp"
+//);
+
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/bottomAir/fvSchemes b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/bottomAir/fvSchemes
index 9e792da55f1a212351fd1e5d2d26e2992642a502..5559e33626b9f62d129a9265641d3156edb4814d 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/bottomAir/fvSchemes
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/bottomAir/fvSchemes
@@ -30,7 +30,7 @@ divSchemes
 {
     default         none;
     div(phi,U)      Gauss upwind;
-    div(phiU,p)     Gauss upwind;
+    div(phiU,p)     Gauss linear;
     div(phi,h)      Gauss upwind;
     div(phi,k)      Gauss upwind;
     div(phi,epsilon) Gauss upwind;
@@ -43,7 +43,7 @@ laplacianSchemes
 {
     default         none;
     laplacian(muEff,U) Gauss linear limited 0.333;
-    laplacian((rho*(1|A(U))),pd) Gauss linear limited 0.333;
+    laplacian((rho*(1|A(U))),p) Gauss linear limited 0.333;
     laplacian(alphaEff,h) Gauss linear limited 0.333;
     laplacian(DkEff,k) Gauss linear limited 0.333;
     laplacian(DepsilonEff,epsilon) Gauss linear limited 0.333;
@@ -63,7 +63,7 @@ snGradSchemes
 fluxRequired
 {
     default         no;
-    pd;
+    p;
 }
 
 // ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/bottomAir/fvSolution b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/bottomAir/fvSolution
index 84839fe0ac905869edce0e444073487c84f3c61e..e0ecb9405c6ee97475280b790e95176ff3b61e41 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/bottomAir/fvSolution
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/bottomAir/fvSolution
@@ -20,28 +20,14 @@ solvers
     {
         solver          PCG
         preconditioner  DIC;
-        tolerance       1e-6;
+        tolerance       1e-8;
         relTol          0;
     };
-//    pd
-//    {
-//        solver           PCG
-//        preconditioner   DIC;
-//        tolerance        1e-6;
-//        relTol           0.1;
-//    };
-//    pdFinal
-//    {
-//        solver           PCG;
-//        preconditioner   DIC;
-//        tolerance        1e-08;
-//        relTol           0;
-//    };
-    pd
+    p
     {
         solver           GAMG;
-        tolerance        1e-6;
-        relTol           0.1;
+        tolerance        1e-8;
+        relTol           0.01;
 
         smoother         GaussSeidel;
 
@@ -50,10 +36,10 @@ solvers
         agglomerator     faceAreaPair;
         mergeLevels      1;
     };
-    pdFinal
+    pFinal
     {
         solver           GAMG;
-        tolerance        1e-6;
+        tolerance        1e-8;
         relTol           0;
 
         smoother         GaussSeidel;
@@ -70,32 +56,41 @@ solvers
         tolerance        1e-08;
         relTol           0;
     };
+
     h
     {
         solver           PBiCG;
         preconditioner   DILU;
-        tolerance        1e-06;
+        tolerance        1e-08;
+        relTol           0.1;
+    };
+    hFinal
+    {
+        solver           PBiCG;
+        preconditioner   DILU;
+        tolerance        1e-08;
         relTol           0;
     };
+
     k
     {
         solver           PBiCG;
         preconditioner   DILU;
-        tolerance        1e-06;
+        tolerance        1e-08;
         relTol           0;
     };
     epsilon
     {
         solver           PBiCG;
         preconditioner   DILU;
-        tolerance        1e-06;
+        tolerance        1e-08;
         relTol           0;
     };
     R
     {
         solver           PBiCG;
         preconditioner   DILU;
-        tolerance        1e-06;
+        tolerance        1e-08;
         relTol           0;
     };
 }
@@ -106,14 +101,23 @@ PISO
     nOuterCorrectors     1;
     nCorrectors     2;
     nNonOrthogonalCorrectors 1;
-    pdRefCell        0;
-    pdRefValue       0;
+    pRefPoint       (-0.081 -0.0257 8.01);
+    pRefValue       1e5;
+}
+
+
+PIMPLE
+{
+    momentumPredictor   on;
+    nCorrectors         2;
+    nNonOrthogonalCorrectors 0;
 }
 
-//relaxationFactors
-//{
-////    h               0.9;
+
+relaxationFactors
+{
+//    h               0.9;
 //    U               0.9;
-//}
+}
 
 // ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/controlDict b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/controlDict
index 2a5d32fc95549424c2cb293f12ff9656a8daf9c9..ba30afed2a2f13c7f5362edb583baa00576c8ab0 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/controlDict
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/controlDict
@@ -17,17 +17,17 @@ FoamFile
 
 startFrom       latestTime;
 
-startTime       0;
+startTime       0.001;
 
 stopAt          endTime;
 
-endTime         180;
+endTime         200;
 
 deltaT          0.001;
 
 writeControl    adjustableRunTime;
 
-writeInterval   5;
+writeInterval   50;
 
 purgeWrite      0;
 
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/decomposeParDict
new file mode 100644
index 0000000000000000000000000000000000000000..aad15ee459b6e01cdf6fabba08eb2fa5b8c2a4dd
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/decomposeParDict
@@ -0,0 +1,86 @@
+/*-------------------------------*- C++ -*---------------------------------*\
+|    =========                                                              |
+|    \\      /     OpenFOAM                                                 |
+|     \\    /                                                               |
+|      \\  /       The Open Source CFD Toolbox                              |
+|       \\/                                        http://www.OpenFOAM.org  |
+\*-------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    note        "mesh decomposition control dictionary";
+    location    "system";
+    object      decomposeParDict;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+numberOfSubdomains  4;
+
+//- Keep owner and neighbour on same processor for faces in zones:
+// preserveFaceZones (heater solid1 solid3);
+
+method          scotch;
+// method          hierarchical;
+// method          simple;
+// method          metis;
+// method          manual;
+
+simpleCoeffs
+{
+    n           (2 2 1);
+    delta       0.001;
+}
+
+hierarchicalCoeffs
+{
+    n           (2 2 1);
+    delta       0.001;
+    order       xyz;
+}
+
+metisCoeffs
+{
+ /*
+    processorWeights
+    (
+        1
+        1
+        1
+        1
+    );
+  */
+}
+
+scotchCoeffs
+{
+    //processorWeights
+    //(
+    //    1
+    //    1
+    //    1
+    //    1
+    //);
+    //writeGraph  true;
+    //strategy "b";
+}
+
+manualCoeffs
+{
+    dataFile    "decompositionData";
+}
+
+
+//// Is the case distributed
+//distributed     yes;
+//// Per slave (so nProcs-1 entries) the directory above the case.
+//roots           
+//(
+//    "/tmp"
+//    "/tmp"
+//);
+
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/fvSolution b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/fvSolution
index 78262ec2df008422f0817dc264bc8dab539bf568..50f28d672d7203b69ec909d90a6764a191c51631 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/fvSolution
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/fvSolution
@@ -14,4 +14,9 @@ FoamFile
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+PIMPLE
+{
+    nOuterCorrectors 1;
+}
+
 // ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/heater/changeDictionaryDict b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/heater/changeDictionaryDict
index 92038e31df8fd503518e3a30e581e9d16756227c..2bea6785224723f43db9cba91aaaf21d5ebf8998 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/heater/changeDictionaryDict
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/heater/changeDictionaryDict
@@ -16,6 +16,38 @@ FoamFile
 
 dictionaryReplacement
 {
+    boundary
+    {
+        heater_to_bottomAir
+        {
+            offset          ( 0 0 0 );
+            sampleMode      nearestPatchFace;
+            sampleRegion    bottomAir;
+            samplePatch     bottomAir_to_heater;
+        }
+        heater_to_leftSolid
+        {
+            offset          ( 0 0 0 );
+            sampleMode      nearestPatchFace;
+            sampleRegion    leftSolid;
+            samplePatch     leftSolid_to_heater;
+        }
+        heater_to_rightSolid
+        {
+            offset          ( 0 0 0 );
+            sampleMode      nearestPatchFace;
+            sampleRegion    rightSolid;
+            samplePatch     rightSolid_to_heater;
+        }
+        heater_to_topAir
+        {
+            offset          ( 0 0 0 );
+            sampleMode      nearestPatchFace;
+            sampleRegion    topAir;
+            samplePatch     topAir_to_heater;
+        }
+    }
+
     T
     {
         internalField   uniform 300;
@@ -40,8 +72,6 @@ dictionaryReplacement
             heater_to_bottomAir
             {
                 type            solidWallMixedTemperatureCoupled;
-                neighbourRegionName bottomAir;
-                neighbourPatchName bottomAir_to_heater;
                 neighbourFieldName T;
                 K               K;
                 value           uniform 300;
@@ -50,8 +80,6 @@ dictionaryReplacement
             heater_to_leftSolid
             {
                 type            solidWallMixedTemperatureCoupled;
-                neighbourRegionName leftSolid;
-                neighbourPatchName leftSolid_to_heater;
                 neighbourFieldName T;
                 K               K;
                 value           uniform 300;
@@ -59,8 +87,6 @@ dictionaryReplacement
             heater_to_rightSolid
             {
                 type            solidWallMixedTemperatureCoupled;
-                neighbourRegionName rightSolid;
-                neighbourPatchName rightSolid_to_heater;
                 neighbourFieldName T;
                 K               K;
                 value           uniform 300;
@@ -68,8 +94,6 @@ dictionaryReplacement
             heater_to_topAir
             {
                 type            solidWallMixedTemperatureCoupled;
-                neighbourRegionName topAir;
-                neighbourPatchName topAir_to_heater;
                 neighbourFieldName T;
                 K               K;
                 value           uniform 300;
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/heater/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/heater/decomposeParDict
new file mode 100644
index 0000000000000000000000000000000000000000..aad15ee459b6e01cdf6fabba08eb2fa5b8c2a4dd
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/heater/decomposeParDict
@@ -0,0 +1,86 @@
+/*-------------------------------*- C++ -*---------------------------------*\
+|    =========                                                              |
+|    \\      /     OpenFOAM                                                 |
+|     \\    /                                                               |
+|      \\  /       The Open Source CFD Toolbox                              |
+|       \\/                                        http://www.OpenFOAM.org  |
+\*-------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    note        "mesh decomposition control dictionary";
+    location    "system";
+    object      decomposeParDict;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+numberOfSubdomains  4;
+
+//- Keep owner and neighbour on same processor for faces in zones:
+// preserveFaceZones (heater solid1 solid3);
+
+method          scotch;
+// method          hierarchical;
+// method          simple;
+// method          metis;
+// method          manual;
+
+simpleCoeffs
+{
+    n           (2 2 1);
+    delta       0.001;
+}
+
+hierarchicalCoeffs
+{
+    n           (2 2 1);
+    delta       0.001;
+    order       xyz;
+}
+
+metisCoeffs
+{
+ /*
+    processorWeights
+    (
+        1
+        1
+        1
+        1
+    );
+  */
+}
+
+scotchCoeffs
+{
+    //processorWeights
+    //(
+    //    1
+    //    1
+    //    1
+    //    1
+    //);
+    //writeGraph  true;
+    //strategy "b";
+}
+
+manualCoeffs
+{
+    dataFile    "decompositionData";
+}
+
+
+//// Is the case distributed
+//distributed     yes;
+//// Per slave (so nProcs-1 entries) the directory above the case.
+//roots           
+//(
+//    "/tmp"
+//    "/tmp"
+//);
+
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/heater/fvSolution b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/heater/fvSolution
index d1c768d4d4444eb6e1937e1840ddde4a19096376..342a7d4232540c1bcefb8362e4e638d7e9a3b9b0 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/heater/fvSolution
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/heater/fvSolution
@@ -30,4 +30,9 @@ PISO
     nNonOrthogonalCorrectors 1;
 }
 
+PIMPLE
+{
+    nNonOrthogonalCorrectors 1;
+}
+
 // ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/leftSolid/changeDictionaryDict b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/leftSolid/changeDictionaryDict
index c30a9b5c4bb180f2b7541a0cbaefa68c62791b40..0fb3ee191c8a06de31849237b5bdd5499d40f8f0 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/leftSolid/changeDictionaryDict
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/leftSolid/changeDictionaryDict
@@ -16,6 +16,31 @@ FoamFile
 
 dictionaryReplacement
 {
+    boundary
+    {
+        leftSolid_to_bottomAir
+        {
+            offset          ( 0 0 0 );
+            sampleMode      nearestPatchFace;
+            sampleRegion    bottomAir;
+            samplePatch     bottomAir_to_leftSolid;
+        }
+        leftSolid_to_heater
+        {
+            offset          ( 0 0 0 );
+            sampleMode      nearestPatchFace;
+            sampleRegion    heater;
+            samplePatch     heater_to_leftSolid;;
+        }
+        leftSolid_to_topAir
+        {
+            offset          ( 0 0 0 );
+            sampleMode      nearestPatchFace;
+            sampleRegion    topAir;
+            samplePatch     topAir_to_leftSolid;;
+        }
+    }
+
     T
     {
         internalField   uniform 300;
@@ -37,8 +62,6 @@ dictionaryReplacement
             leftSolid_to_bottomAir
             {
                 type            solidWallMixedTemperatureCoupled;
-                neighbourRegionName bottomAir;
-                neighbourPatchName bottomAir_to_leftSolid;
                 neighbourFieldName T;
                 K               K;
                 value           uniform 300;
@@ -47,8 +70,6 @@ dictionaryReplacement
             leftSolid_to_heater
             {
                 type            solidWallMixedTemperatureCoupled;
-                neighbourRegionName heater;
-                neighbourPatchName heater_to_leftSolid;
                 neighbourFieldName T;
                 K               K;
                 value           uniform 300;
@@ -56,8 +77,6 @@ dictionaryReplacement
             leftSolid_to_topAir
             {
                 type            solidWallMixedTemperatureCoupled;
-                neighbourRegionName topAir;
-                neighbourPatchName topAir_to_leftSolid;
                 neighbourFieldName T;
                 K               K;
                 value           uniform 300;
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/leftSolid/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/leftSolid/decomposeParDict
new file mode 100644
index 0000000000000000000000000000000000000000..aad15ee459b6e01cdf6fabba08eb2fa5b8c2a4dd
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/leftSolid/decomposeParDict
@@ -0,0 +1,86 @@
+/*-------------------------------*- C++ -*---------------------------------*\
+|    =========                                                              |
+|    \\      /     OpenFOAM                                                 |
+|     \\    /                                                               |
+|      \\  /       The Open Source CFD Toolbox                              |
+|       \\/                                        http://www.OpenFOAM.org  |
+\*-------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    note        "mesh decomposition control dictionary";
+    location    "system";
+    object      decomposeParDict;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+numberOfSubdomains  4;
+
+//- Keep owner and neighbour on same processor for faces in zones:
+// preserveFaceZones (heater solid1 solid3);
+
+method          scotch;
+// method          hierarchical;
+// method          simple;
+// method          metis;
+// method          manual;
+
+simpleCoeffs
+{
+    n           (2 2 1);
+    delta       0.001;
+}
+
+hierarchicalCoeffs
+{
+    n           (2 2 1);
+    delta       0.001;
+    order       xyz;
+}
+
+metisCoeffs
+{
+ /*
+    processorWeights
+    (
+        1
+        1
+        1
+        1
+    );
+  */
+}
+
+scotchCoeffs
+{
+    //processorWeights
+    //(
+    //    1
+    //    1
+    //    1
+    //    1
+    //);
+    //writeGraph  true;
+    //strategy "b";
+}
+
+manualCoeffs
+{
+    dataFile    "decompositionData";
+}
+
+
+//// Is the case distributed
+//distributed     yes;
+//// Per slave (so nProcs-1 entries) the directory above the case.
+//roots           
+//(
+//    "/tmp"
+//    "/tmp"
+//);
+
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/rightSolid/changeDictionaryDict b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/rightSolid/changeDictionaryDict
index 292f92f1d3b4efdd81831370545adc34357fd586..c3d6b08a0d147cef9d91a02a45036fadc4cfa59b 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/rightSolid/changeDictionaryDict
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/rightSolid/changeDictionaryDict
@@ -16,6 +16,31 @@ FoamFile
 
 dictionaryReplacement
 {
+    boundary
+    {
+        rightSolid_to_heater
+        {
+            offset          ( 0 0 0 );
+            sampleMode      nearestPatchFace;
+            sampleRegion    heater;
+            samplePatch     heater_to_rightSolid;
+        }
+        rightSolid_to_bottomAir
+        {
+            offset          ( 0 0 0 );
+            sampleMode      nearestPatchFace;
+            sampleRegion    bottomAir;
+            samplePatch     bottomAir_to_rightSolid;
+        }
+        rightSolid_to_topAir
+        {
+            offset          ( 0 0 0 );
+            sampleMode      nearestPatchFace;
+            sampleRegion    topAir;
+            samplePatch     topAir_to_rightSolid;
+        }
+    }
+
     T
     {
         internalField   uniform 300;
@@ -37,8 +62,6 @@ dictionaryReplacement
             rightSolid_to_heater
             {
                 type            solidWallMixedTemperatureCoupled;
-                neighbourRegionName heater;
-                neighbourPatchName heater_to_rightSolid;
                 neighbourFieldName T;
                 K               K;
                 value           uniform 300;
@@ -46,8 +69,6 @@ dictionaryReplacement
             rightSolid_to_bottomAir
             {
                 type            solidWallMixedTemperatureCoupled;
-                neighbourRegionName bottomAir;
-                neighbourPatchName bottomAir_to_rightSolid;
                 neighbourFieldName T;
                 K               K;
                 value           uniform 300;
@@ -55,8 +76,6 @@ dictionaryReplacement
             rightSolid_to_topAir
             {
                 type            solidWallMixedTemperatureCoupled;
-                neighbourRegionName topAir;
-                neighbourPatchName topAir_to_rightSolid;
                 neighbourFieldName T;
                 K               K;
                 value           uniform 300;
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/rightSolid/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/rightSolid/decomposeParDict
new file mode 100644
index 0000000000000000000000000000000000000000..aad15ee459b6e01cdf6fabba08eb2fa5b8c2a4dd
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/rightSolid/decomposeParDict
@@ -0,0 +1,86 @@
+/*-------------------------------*- C++ -*---------------------------------*\
+|    =========                                                              |
+|    \\      /     OpenFOAM                                                 |
+|     \\    /                                                               |
+|      \\  /       The Open Source CFD Toolbox                              |
+|       \\/                                        http://www.OpenFOAM.org  |
+\*-------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    note        "mesh decomposition control dictionary";
+    location    "system";
+    object      decomposeParDict;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+numberOfSubdomains  4;
+
+//- Keep owner and neighbour on same processor for faces in zones:
+// preserveFaceZones (heater solid1 solid3);
+
+method          scotch;
+// method          hierarchical;
+// method          simple;
+// method          metis;
+// method          manual;
+
+simpleCoeffs
+{
+    n           (2 2 1);
+    delta       0.001;
+}
+
+hierarchicalCoeffs
+{
+    n           (2 2 1);
+    delta       0.001;
+    order       xyz;
+}
+
+metisCoeffs
+{
+ /*
+    processorWeights
+    (
+        1
+        1
+        1
+        1
+    );
+  */
+}
+
+scotchCoeffs
+{
+    //processorWeights
+    //(
+    //    1
+    //    1
+    //    1
+    //    1
+    //);
+    //writeGraph  true;
+    //strategy "b";
+}
+
+manualCoeffs
+{
+    dataFile    "decompositionData";
+}
+
+
+//// Is the case distributed
+//distributed     yes;
+//// Per slave (so nProcs-1 entries) the directory above the case.
+//roots           
+//(
+//    "/tmp"
+//    "/tmp"
+//);
+
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/topAir/changeDictionaryDict b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/topAir/changeDictionaryDict
index e13083daa743d89571b74dfcac14d8605ea0b60b..a437f44d5d5cd79a7aa466342d7df83797b252db 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/topAir/changeDictionaryDict
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/topAir/changeDictionaryDict
@@ -16,6 +16,31 @@ FoamFile
 
 dictionaryReplacement
 {
+    boundary
+    {
+        topAir_to_leftSolid
+        {
+            offset          ( 0 0 0 );
+            sampleMode      nearestPatchFace;
+            sampleRegion    leftSolid;
+            samplePatch     leftSolid_to_topAir;
+        }
+        topAir_to_heater
+        {
+            offset          ( 0 0 0 );
+            sampleMode      nearestPatchFace;
+            sampleRegion    heater;
+            samplePatch     heater_to_topAir;
+        }
+        topAir_to_rightSolid
+        {
+            offset          ( 0 0 0 );
+            sampleMode      nearestPatchFace;
+            sampleRegion    rightSolid;
+            samplePatch     rightSolid_to_topAir;
+        }
+    }
+
     U
     {
         internalField   uniform ( 0.01 0 0 );
@@ -63,8 +88,6 @@ dictionaryReplacement
             topAir_to_leftSolid
             {
                 type            solidWallMixedTemperatureCoupled;
-                neighbourRegionName leftSolid;
-                neighbourPatchName leftSolid_to_topAir;
                 neighbourFieldName T;
                 K               K;
                 value           uniform 300;
@@ -73,8 +96,6 @@ dictionaryReplacement
             topAir_to_heater
             {
                 type            solidWallMixedTemperatureCoupled;
-                neighbourRegionName heater;
-                neighbourPatchName heater_to_topAir;
                 neighbourFieldName T;
                 K               K;
                 value           uniform 300;
@@ -82,8 +103,6 @@ dictionaryReplacement
             topAir_to_rightSolid
             {
                 type            solidWallMixedTemperatureCoupled;
-                neighbourRegionName rightSolid;
-                neighbourPatchName rightSolid_to_topAir;
                 neighbourFieldName T;
                 K               K;
                 value           uniform 300;
@@ -204,109 +223,61 @@ dictionaryReplacement
         }
     }
 
-    pd
+    p
     {
+        internalField   uniform 1E5;
+
         boundaryField
         {
             minX
             {
-                type            fixedFluxBuoyantPressure;
-                value           0;
+                type            buoyantPressure;
+                value           1e5;
             }
             maxX
             {
                 type            waveTransmissive;
-                field           pd;
+                //field           p;
                 phi             phi;
                 rho             rho;
                 psi             psi;
                 gamma           1.4;    // cp/cv
-                fieldInf        0;
+                fieldInf        1e5;
                 lInf            0.40;   // double length of domain
-                value           uniform 0;
+                value           uniform 1e5;
             }
 
             minY
             {
-                type            fixedFluxBuoyantPressure;
-                value           0;
-            }
-
-            minZ
-            {
-                type            fixedFluxBuoyantPressure;
-                value           0;
-            }
-            maxZ
-            {
-                type            fixedFluxBuoyantPressure;
-                value           0;
-            }
-
-            topAir_to_leftSolid
-            {
-                type            fixedFluxBuoyantPressure;
-                value           0;
+                type            buoyantPressure;
+                value           1e5;
             }
-            topAir_to_heater
-            {
-                type            fixedFluxBuoyantPressure;
-                value           0;
-            }
-            topAir_to_rightSolid
-            {
-                type            fixedFluxBuoyantPressure;
-                value           0;
-            }
-        }
-    }
-
-    p
-    {
-        internalField   uniform 100000;
 
-        boundaryField
-        {
-            minX
-            {
-                type            calculated;
-                value           uniform 100000;
-            }
-            maxX
-            {
-                type            calculated;
-                value           uniform 100000;
-            }
-            maxY
-            {
-                type            calculated;
-                value           uniform 100000;
-            }
             minZ
             {
-                type            calculated;
-                value           uniform 100000;
+                type            buoyantPressure;
+                value           1e5;
             }
             maxZ
             {
-                type            calculated;
-                value           uniform 100000;
+                type            buoyantPressure;
+                value           1e5;
             }
 
             topAir_to_leftSolid
             {
-                type            calculated;
-                value           uniform 100000;
+                type            buoyantPressure;
+                value           1e5;
             }
             topAir_to_heater
             {
-                type            calculated;
-                value           uniform 100000;
+                type            buoyantPressure;
+                value           1e5;
             }
             topAir_to_rightSolid
             {
-                type            calculated;
-                value           uniform 100000;
+                type            buoyantPressure;
+                value           1e5;
             }
         }
     }
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/topAir/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/topAir/decomposeParDict
new file mode 100644
index 0000000000000000000000000000000000000000..aad15ee459b6e01cdf6fabba08eb2fa5b8c2a4dd
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/topAir/decomposeParDict
@@ -0,0 +1,86 @@
+/*-------------------------------*- C++ -*---------------------------------*\
+|    =========                                                              |
+|    \\      /     OpenFOAM                                                 |
+|     \\    /                                                               |
+|      \\  /       The Open Source CFD Toolbox                              |
+|       \\/                                        http://www.OpenFOAM.org  |
+\*-------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    note        "mesh decomposition control dictionary";
+    location    "system";
+    object      decomposeParDict;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+numberOfSubdomains  4;
+
+//- Keep owner and neighbour on same processor for faces in zones:
+// preserveFaceZones (heater solid1 solid3);
+
+method          scotch;
+// method          hierarchical;
+// method          simple;
+// method          metis;
+// method          manual;
+
+simpleCoeffs
+{
+    n           (2 2 1);
+    delta       0.001;
+}
+
+hierarchicalCoeffs
+{
+    n           (2 2 1);
+    delta       0.001;
+    order       xyz;
+}
+
+metisCoeffs
+{
+ /*
+    processorWeights
+    (
+        1
+        1
+        1
+        1
+    );
+  */
+}
+
+scotchCoeffs
+{
+    //processorWeights
+    //(
+    //    1
+    //    1
+    //    1
+    //    1
+    //);
+    //writeGraph  true;
+    //strategy "b";
+}
+
+manualCoeffs
+{
+    dataFile    "decompositionData";
+}
+
+
+//// Is the case distributed
+//distributed     yes;
+//// Per slave (so nProcs-1 entries) the directory above the case.
+//roots           
+//(
+//    "/tmp"
+//    "/tmp"
+//);
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/MRFSimpleFoam/MRFSimpleFoam/MRFSimpleFoam.C b/tutorials/incompressible/MRFSimpleFoam/MRFSimpleFoam/MRFSimpleFoam.C
index 241b6930fc533a640da3e2074eca1754de2bbcb6..9225fe4cb7c20e4456307054f6ade7afa7aec3d3 100644
--- a/tutorials/incompressible/MRFSimpleFoam/MRFSimpleFoam/MRFSimpleFoam.C
+++ b/tutorials/incompressible/MRFSimpleFoam/MRFSimpleFoam/MRFSimpleFoam.C
@@ -40,15 +40,14 @@ Description
 
 int main(int argc, char *argv[])
 {
+    #include "setRootCase.H"
 
-#   include "setRootCase.H"
+    #include "createTime.H"
+    #include "createMesh.H"
+    #include "createFields.H"
+    #include "initContinuityErrs.H"
 
-#   include "createTime.H"
-#   include "createMesh.H"
-#   include "createFields.H"
-#   include "initContinuityErrs.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
     Info<< "\nStarting time loop\n" << endl;
 
@@ -56,7 +55,7 @@ int main(int argc, char *argv[])
     {
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
-#       include "readSIMPLEControls.H"
+        #include "readSIMPLEControls.H"
 
         p.storePrevIter();
 
@@ -101,7 +100,7 @@ int main(int argc, char *argv[])
                 }
             }
 
-#           include "continuityErrs.H"
+            #include "continuityErrs.H"
 
             // Explicitly relax pressure for momentum corrector
             p.relax();
diff --git a/tutorials/incompressible/MRFSimpleFoam/mixerVessel2D/constant/polyMesh/sets/rotor b/tutorials/incompressible/MRFSimpleFoam/mixerVessel2D/constant/polyMesh/sets/rotor
deleted file mode 100644
index ac93c353c22b550408cbb8028a193ad8361cb72e..0000000000000000000000000000000000000000
--- a/tutorials/incompressible/MRFSimpleFoam/mixerVessel2D/constant/polyMesh/sets/rotor
+++ /dev/null
@@ -1,3045 +0,0 @@
-/*--------------------------------*- C++ -*----------------------------------*\
-| =========                 |                                                 |
-| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.5                                   |
-|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
-|    \\/     M anipulation  |                                                 |
-\*---------------------------------------------------------------------------*/
-FoamFile
-{
-    version     2.0;
-    format      ascii;
-    class       faceSet;
-    object      rotor;
-}
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-3024
-(
-0 
-1 
-2 
-3 
-4 
-5 
-6 
-7 
-8 
-9 
-10 
-11 
-12 
-13 
-14 
-15 
-16 
-17 
-18 
-19 
-20 
-21 
-22 
-23 
-24 
-25 
-26 
-27 
-28 
-29 
-30 
-31 
-32 
-33 
-34 
-35 
-36 
-37 
-38 
-39 
-40 
-41 
-42 
-43 
-44 
-45 
-46 
-47 
-48 
-49 
-50 
-51 
-52 
-53 
-54 
-55 
-56 
-57 
-58 
-59 
-60 
-61 
-62 
-63 
-64 
-65 
-66 
-67 
-68 
-69 
-70 
-71 
-72 
-73 
-74 
-75 
-76 
-77 
-78 
-79 
-80 
-81 
-82 
-83 
-84 
-85 
-86 
-87 
-88 
-89 
-90 
-91 
-92 
-93 
-94 
-95 
-96 
-97 
-98 
-99 
-100 
-101 
-102 
-103 
-104 
-105 
-106 
-107 
-108 
-109 
-110 
-111 
-112 
-113 
-114 
-115 
-116 
-117 
-118 
-119 
-120 
-121 
-122 
-123 
-124 
-125 
-126 
-127 
-128 
-129 
-130 
-131 
-132 
-133 
-134 
-135 
-136 
-137 
-138 
-139 
-140 
-141 
-142 
-143 
-144 
-145 
-146 
-147 
-148 
-149 
-150 
-151 
-152 
-153 
-154 
-155 
-156 
-157 
-158 
-159 
-160 
-161 
-162 
-163 
-164 
-165 
-166 
-167 
-168 
-169 
-170 
-171 
-172 
-173 
-174 
-175 
-176 
-177 
-178 
-179 
-180 
-181 
-182 
-183 
-184 
-185 
-186 
-187 
-188 
-189 
-190 
-191 
-192 
-193 
-194 
-195 
-196 
-197 
-198 
-199 
-200 
-201 
-202 
-203 
-204 
-205 
-206 
-207 
-208 
-209 
-210 
-211 
-212 
-213 
-214 
-215 
-216 
-217 
-218 
-219 
-220 
-221 
-222 
-223 
-224 
-225 
-226 
-227 
-228 
-229 
-230 
-231 
-232 
-233 
-234 
-235 
-236 
-237 
-238 
-239 
-240 
-241 
-242 
-243 
-244 
-245 
-246 
-247 
-248 
-249 
-250 
-251 
-252 
-253 
-254 
-255 
-256 
-257 
-258 
-259 
-260 
-261 
-262 
-263 
-264 
-265 
-266 
-267 
-268 
-269 
-270 
-271 
-272 
-273 
-274 
-275 
-276 
-277 
-278 
-279 
-280 
-281 
-282 
-283 
-284 
-285 
-286 
-287 
-288 
-289 
-290 
-291 
-292 
-293 
-294 
-295 
-296 
-297 
-298 
-299 
-300 
-301 
-302 
-303 
-304 
-305 
-306 
-307 
-308 
-309 
-310 
-311 
-312 
-313 
-314 
-315 
-316 
-317 
-318 
-319 
-320 
-321 
-322 
-323 
-324 
-325 
-326 
-327 
-328 
-329 
-330 
-331 
-332 
-333 
-334 
-335 
-336 
-337 
-338 
-339 
-340 
-341 
-342 
-343 
-344 
-345 
-346 
-347 
-348 
-349 
-350 
-351 
-352 
-353 
-354 
-355 
-356 
-357 
-358 
-359 
-360 
-361 
-362 
-363 
-364 
-365 
-366 
-367 
-368 
-369 
-370 
-371 
-372 
-373 
-374 
-375 
-376 
-377 
-378 
-379 
-380 
-381 
-382 
-383 
-384 
-385 
-386 
-387 
-388 
-389 
-390 
-391 
-392 
-393 
-394 
-395 
-396 
-397 
-398 
-399 
-400 
-401 
-402 
-403 
-404 
-405 
-406 
-407 
-408 
-409 
-410 
-411 
-412 
-413 
-414 
-415 
-416 
-417 
-418 
-419 
-420 
-421 
-422 
-423 
-424 
-425 
-426 
-427 
-428 
-429 
-430 
-431 
-432 
-433 
-434 
-435 
-436 
-437 
-438 
-439 
-440 
-441 
-442 
-443 
-444 
-445 
-446 
-447 
-448 
-449 
-450 
-451 
-452 
-453 
-454 
-455 
-456 
-457 
-458 
-459 
-460 
-461 
-462 
-463 
-464 
-465 
-466 
-467 
-468 
-469 
-470 
-471 
-472 
-473 
-474 
-475 
-476 
-477 
-478 
-479 
-480 
-481 
-482 
-483 
-484 
-485 
-486 
-487 
-488 
-489 
-490 
-491 
-492 
-493 
-494 
-495 
-496 
-497 
-498 
-499 
-500 
-501 
-502 
-503 
-504 
-505 
-506 
-507 
-508 
-509 
-510 
-511 
-512 
-513 
-514 
-515 
-516 
-517 
-518 
-519 
-520 
-521 
-522 
-523 
-524 
-525 
-526 
-527 
-528 
-529 
-530 
-531 
-532 
-533 
-534 
-535 
-536 
-537 
-538 
-539 
-540 
-541 
-542 
-543 
-544 
-545 
-546 
-547 
-548 
-549 
-550 
-551 
-552 
-553 
-554 
-555 
-556 
-557 
-558 
-559 
-560 
-561 
-562 
-563 
-564 
-565 
-566 
-567 
-568 
-569 
-570 
-571 
-572 
-573 
-574 
-575 
-576 
-577 
-578 
-579 
-580 
-581 
-582 
-583 
-584 
-585 
-586 
-587 
-588 
-589 
-590 
-591 
-592 
-593 
-594 
-595 
-596 
-597 
-598 
-599 
-600 
-601 
-602 
-603 
-604 
-605 
-606 
-607 
-608 
-609 
-610 
-611 
-612 
-613 
-614 
-615 
-616 
-617 
-618 
-619 
-620 
-621 
-622 
-623 
-624 
-625 
-626 
-627 
-628 
-629 
-630 
-631 
-632 
-633 
-634 
-635 
-636 
-637 
-638 
-639 
-640 
-641 
-642 
-643 
-644 
-645 
-646 
-647 
-648 
-649 
-650 
-651 
-652 
-653 
-654 
-655 
-656 
-657 
-658 
-659 
-660 
-661 
-662 
-663 
-664 
-665 
-666 
-667 
-668 
-669 
-670 
-671 
-672 
-673 
-674 
-675 
-676 
-677 
-678 
-679 
-680 
-681 
-682 
-683 
-684 
-685 
-686 
-687 
-688 
-689 
-690 
-691 
-692 
-693 
-694 
-695 
-696 
-697 
-698 
-699 
-700 
-701 
-702 
-703 
-704 
-705 
-706 
-707 
-708 
-709 
-710 
-711 
-712 
-713 
-714 
-715 
-716 
-717 
-718 
-719 
-720 
-721 
-722 
-723 
-724 
-725 
-726 
-727 
-728 
-729 
-730 
-731 
-732 
-733 
-734 
-735 
-736 
-737 
-738 
-739 
-740 
-741 
-742 
-743 
-744 
-745 
-746 
-747 
-748 
-749 
-750 
-751 
-752 
-753 
-754 
-755 
-756 
-757 
-758 
-759 
-760 
-761 
-762 
-763 
-764 
-765 
-766 
-767 
-768 
-769 
-770 
-771 
-772 
-773 
-774 
-775 
-776 
-777 
-778 
-779 
-780 
-781 
-782 
-783 
-784 
-785 
-786 
-787 
-788 
-789 
-790 
-791 
-792 
-793 
-794 
-795 
-796 
-797 
-798 
-799 
-800 
-801 
-802 
-803 
-804 
-805 
-806 
-807 
-808 
-809 
-810 
-811 
-812 
-813 
-814 
-815 
-816 
-817 
-818 
-819 
-820 
-821 
-822 
-823 
-824 
-825 
-826 
-827 
-828 
-829 
-830 
-831 
-832 
-833 
-834 
-835 
-836 
-837 
-838 
-839 
-840 
-841 
-842 
-843 
-844 
-845 
-846 
-847 
-848 
-849 
-850 
-851 
-852 
-853 
-854 
-855 
-856 
-857 
-858 
-859 
-860 
-861 
-862 
-863 
-864 
-865 
-866 
-867 
-868 
-869 
-870 
-871 
-872 
-873 
-874 
-875 
-876 
-877 
-878 
-879 
-880 
-881 
-882 
-883 
-884 
-885 
-886 
-887 
-888 
-889 
-890 
-891 
-892 
-893 
-894 
-895 
-896 
-897 
-898 
-899 
-900 
-901 
-902 
-903 
-904 
-905 
-906 
-907 
-908 
-909 
-910 
-911 
-912 
-913 
-914 
-915 
-916 
-917 
-918 
-919 
-920 
-921 
-922 
-923 
-924 
-925 
-926 
-927 
-928 
-929 
-930 
-931 
-932 
-933 
-934 
-935 
-936 
-937 
-938 
-939 
-940 
-941 
-942 
-943 
-944 
-945 
-946 
-947 
-948 
-949 
-950 
-951 
-952 
-953 
-954 
-955 
-956 
-957 
-958 
-959 
-960 
-961 
-962 
-963 
-964 
-965 
-966 
-967 
-968 
-969 
-970 
-971 
-972 
-973 
-974 
-975 
-976 
-977 
-978 
-979 
-980 
-981 
-982 
-983 
-984 
-985 
-986 
-987 
-988 
-989 
-990 
-991 
-992 
-993 
-994 
-995 
-996 
-997 
-998 
-999 
-1000 
-1001 
-1002 
-1003 
-1004 
-1005 
-1006 
-1007 
-1008 
-1009 
-1010 
-1011 
-1012 
-1013 
-1014 
-1015 
-1016 
-1017 
-1018 
-1019 
-1020 
-1021 
-1022 
-1023 
-1024 
-1025 
-1026 
-1027 
-1028 
-1029 
-1030 
-1031 
-1032 
-1033 
-1034 
-1035 
-1036 
-1037 
-1038 
-1039 
-1040 
-1041 
-1042 
-1043 
-1044 
-1045 
-1046 
-1047 
-1048 
-1049 
-1050 
-1051 
-1052 
-1053 
-1054 
-1055 
-1056 
-1057 
-1058 
-1059 
-1060 
-1061 
-1062 
-1063 
-1064 
-1065 
-1066 
-1067 
-1068 
-1069 
-1070 
-1071 
-1072 
-1073 
-1074 
-1075 
-1076 
-1077 
-1078 
-1079 
-1080 
-1081 
-1082 
-1083 
-1084 
-1085 
-1086 
-1087 
-1088 
-1089 
-1090 
-1091 
-1092 
-1093 
-1094 
-1095 
-1096 
-1097 
-1098 
-1099 
-1100 
-1101 
-1102 
-1103 
-1104 
-1105 
-1106 
-1107 
-1108 
-1109 
-1110 
-1111 
-1112 
-1113 
-1114 
-1115 
-1116 
-1117 
-1118 
-1119 
-1120 
-1121 
-1122 
-1123 
-1124 
-1125 
-1126 
-1127 
-1128 
-1129 
-1130 
-1131 
-1132 
-1133 
-1134 
-1135 
-1136 
-1137 
-1138 
-1139 
-1140 
-1141 
-1142 
-1143 
-1144 
-1145 
-1146 
-1147 
-1148 
-1149 
-1150 
-1151 
-1152 
-1153 
-1154 
-1155 
-1156 
-1157 
-1158 
-1159 
-1160 
-1161 
-1162 
-1163 
-1164 
-1165 
-1166 
-1167 
-1168 
-1169 
-1170 
-1171 
-1172 
-1173 
-1174 
-1175 
-1176 
-1177 
-1178 
-1179 
-1180 
-1181 
-1182 
-1183 
-1184 
-1185 
-1186 
-1187 
-1188 
-1189 
-1190 
-1191 
-1192 
-1193 
-1194 
-1195 
-1196 
-1197 
-1198 
-1199 
-1200 
-1201 
-1202 
-1203 
-1204 
-1205 
-1206 
-1207 
-1208 
-1209 
-1210 
-1211 
-1212 
-1213 
-1214 
-1215 
-1216 
-1217 
-1218 
-1219 
-1220 
-1221 
-1222 
-1223 
-1224 
-1225 
-1226 
-1227 
-1228 
-1229 
-1230 
-1231 
-1232 
-1233 
-1234 
-1235 
-1236 
-1237 
-1238 
-1239 
-1240 
-1241 
-1242 
-1243 
-1244 
-1245 
-1246 
-1247 
-1248 
-1249 
-1250 
-1251 
-1252 
-1253 
-1254 
-1255 
-1256 
-1257 
-1258 
-1259 
-1260 
-1261 
-1262 
-1263 
-1264 
-1265 
-1266 
-1267 
-1268 
-1269 
-1270 
-1271 
-1272 
-1273 
-1274 
-1275 
-1276 
-1277 
-1278 
-1279 
-1280 
-1281 
-1282 
-1283 
-1284 
-1285 
-1286 
-1287 
-1288 
-1289 
-1290 
-1291 
-1292 
-1293 
-1294 
-1295 
-1296 
-1297 
-1298 
-1299 
-1300 
-1301 
-1302 
-1303 
-1304 
-1305 
-1306 
-1307 
-1308 
-1309 
-1310 
-1311 
-1312 
-1313 
-1314 
-1315 
-1316 
-1317 
-1318 
-1319 
-1320 
-1321 
-1322 
-1323 
-1324 
-1325 
-1326 
-1327 
-1328 
-1329 
-1330 
-1331 
-1332 
-1333 
-1334 
-1335 
-1336 
-1337 
-1338 
-1339 
-1340 
-1341 
-1342 
-1343 
-1344 
-1345 
-1346 
-1347 
-1348 
-1349 
-1350 
-1351 
-1352 
-1353 
-1354 
-1355 
-1356 
-1357 
-1358 
-1359 
-1360 
-1361 
-1362 
-1363 
-1364 
-1365 
-1366 
-1367 
-1368 
-1369 
-1370 
-1371 
-1372 
-1373 
-1374 
-1375 
-1376 
-1377 
-1378 
-1379 
-1380 
-1381 
-1382 
-1383 
-1384 
-1385 
-1386 
-1387 
-1388 
-1389 
-1390 
-1391 
-1392 
-1393 
-1394 
-1395 
-1396 
-1397 
-1398 
-1399 
-1400 
-1401 
-1402 
-1403 
-1404 
-1405 
-1406 
-1407 
-1408 
-1409 
-1410 
-1411 
-1412 
-1413 
-1414 
-1415 
-1416 
-1417 
-1418 
-1419 
-1420 
-1421 
-1422 
-1423 
-1424 
-1425 
-1426 
-1427 
-1428 
-1429 
-1430 
-1431 
-1432 
-1433 
-1434 
-1435 
-1436 
-1437 
-1438 
-1439 
-1440 
-1441 
-1442 
-1443 
-1444 
-1445 
-1446 
-1447 
-1448 
-1449 
-1450 
-1451 
-1452 
-1453 
-1454 
-1455 
-1456 
-1457 
-1458 
-1459 
-1460 
-1461 
-1462 
-1463 
-1464 
-1465 
-1466 
-1467 
-1468 
-1469 
-1470 
-1471 
-1472 
-1473 
-1474 
-1475 
-1476 
-1477 
-1478 
-1479 
-1480 
-1481 
-1482 
-1483 
-1484 
-1485 
-1486 
-1487 
-1488 
-1489 
-1490 
-1491 
-1492 
-1493 
-1494 
-1495 
-1496 
-1497 
-1498 
-1499 
-1500 
-1501 
-1502 
-1503 
-1504 
-1505 
-1506 
-1507 
-1508 
-1509 
-1510 
-1511 
-1512 
-1513 
-1514 
-1515 
-1516 
-1517 
-1518 
-1519 
-1520 
-1521 
-1522 
-1523 
-1524 
-1525 
-1526 
-1527 
-1528 
-1529 
-1530 
-1531 
-1532 
-1533 
-1534 
-1535 
-1536 
-1537 
-1538 
-1539 
-1540 
-1541 
-1542 
-1543 
-1544 
-1545 
-1546 
-1547 
-1548 
-1549 
-1550 
-1551 
-1552 
-1553 
-1554 
-1555 
-1556 
-1557 
-1558 
-1559 
-1560 
-1561 
-1562 
-1563 
-1564 
-1565 
-1566 
-1567 
-1568 
-1569 
-1570 
-1571 
-1572 
-1573 
-1574 
-1575 
-1576 
-1577 
-1578 
-1579 
-1580 
-1581 
-1582 
-1583 
-1584 
-1585 
-1586 
-1587 
-1588 
-1589 
-1590 
-1591 
-1592 
-1593 
-1594 
-1595 
-1596 
-1597 
-1598 
-1599 
-1600 
-1601 
-1602 
-1603 
-1604 
-1605 
-1606 
-1607 
-1608 
-1609 
-1610 
-1611 
-1612 
-1613 
-1614 
-1615 
-1616 
-1617 
-1618 
-1619 
-1620 
-1621 
-1622 
-1623 
-1624 
-1625 
-1626 
-1627 
-1628 
-1629 
-1630 
-1631 
-1632 
-1633 
-1634 
-1635 
-1636 
-1637 
-1638 
-1639 
-1640 
-1641 
-1642 
-1643 
-1644 
-1645 
-1646 
-1647 
-1648 
-1649 
-1650 
-1651 
-1652 
-1653 
-1654 
-1655 
-1656 
-1657 
-1658 
-1659 
-1660 
-1661 
-1662 
-1663 
-1664 
-1665 
-1666 
-1667 
-1668 
-1669 
-1670 
-1671 
-1672 
-1673 
-1674 
-1675 
-1676 
-1677 
-1678 
-1679 
-1680 
-1681 
-1682 
-1683 
-1684 
-1685 
-1686 
-1687 
-1688 
-1689 
-1690 
-1691 
-1692 
-1693 
-1694 
-1695 
-1696 
-1697 
-1698 
-1699 
-1700 
-1701 
-1702 
-1703 
-1704 
-1705 
-1706 
-1707 
-1708 
-1709 
-1710 
-1711 
-1712 
-1713 
-1714 
-1715 
-1716 
-1717 
-1718 
-1719 
-1720 
-1721 
-1722 
-1723 
-1724 
-1725 
-1726 
-1727 
-1728 
-1729 
-1730 
-1731 
-1732 
-1733 
-1734 
-1735 
-1736 
-1737 
-1738 
-1739 
-1740 
-1741 
-1742 
-1743 
-1744 
-1745 
-1746 
-1747 
-1748 
-1749 
-1750 
-1751 
-1752 
-1753 
-1754 
-1755 
-1756 
-1757 
-1758 
-1759 
-1760 
-1761 
-1762 
-1763 
-1764 
-1765 
-1766 
-1767 
-1768 
-1769 
-1770 
-1771 
-1772 
-1773 
-1774 
-1775 
-1776 
-1777 
-1778 
-1779 
-1780 
-1781 
-1782 
-1783 
-1784 
-1785 
-1786 
-1787 
-1788 
-1789 
-1790 
-1791 
-1792 
-1793 
-1794 
-1795 
-1796 
-1797 
-1798 
-1799 
-1800 
-1801 
-1802 
-1803 
-1804 
-1805 
-1806 
-1807 
-1808 
-1809 
-1810 
-1811 
-1812 
-1813 
-1814 
-1815 
-1816 
-1817 
-1818 
-1819 
-1820 
-1821 
-1822 
-1823 
-1824 
-1825 
-1826 
-1827 
-1828 
-1829 
-1830 
-1831 
-1832 
-1833 
-1834 
-1835 
-1836 
-1837 
-1838 
-1839 
-1840 
-1841 
-1842 
-1843 
-1844 
-1845 
-1846 
-1847 
-1848 
-1849 
-1850 
-1851 
-1852 
-1853 
-1854 
-1855 
-1856 
-1857 
-1858 
-1859 
-1860 
-1861 
-1862 
-1863 
-1864 
-1865 
-1866 
-1867 
-1868 
-1869 
-1870 
-1871 
-1872 
-1873 
-1874 
-1875 
-1876 
-1877 
-1878 
-1879 
-1880 
-1881 
-1882 
-1883 
-1884 
-1885 
-1886 
-1887 
-1888 
-1889 
-1890 
-1891 
-1892 
-1893 
-1894 
-1895 
-1896 
-1897 
-1898 
-1899 
-1900 
-1901 
-1902 
-1903 
-1904 
-1905 
-1906 
-1907 
-1908 
-1909 
-1910 
-1911 
-1912 
-1913 
-1914 
-1915 
-1916 
-1917 
-1918 
-1919 
-1920 
-1921 
-1922 
-1923 
-1924 
-1925 
-1926 
-1927 
-1928 
-1929 
-1930 
-1931 
-1932 
-1933 
-1934 
-1935 
-1936 
-1937 
-1938 
-1939 
-1940 
-1941 
-1942 
-1943 
-1944 
-1945 
-1946 
-1947 
-1948 
-1949 
-1950 
-1951 
-1952 
-1953 
-1954 
-1955 
-1956 
-1957 
-1958 
-1959 
-1960 
-1961 
-1962 
-1963 
-1964 
-1965 
-1966 
-1967 
-1968 
-1969 
-1970 
-1971 
-1972 
-1973 
-1974 
-1975 
-1976 
-1977 
-1978 
-1979 
-1980 
-1981 
-1982 
-1983 
-1984 
-1985 
-1986 
-1987 
-1988 
-1989 
-1990 
-1991 
-1992 
-1993 
-1994 
-1995 
-1996 
-1997 
-1998 
-1999 
-2000 
-2001 
-2002 
-2003 
-2004 
-2005 
-2006 
-2007 
-2008 
-2009 
-2010 
-2011 
-2012 
-2013 
-2014 
-2015 
-2016 
-2017 
-2018 
-2019 
-2020 
-2021 
-2022 
-2023 
-2024 
-2025 
-2026 
-2027 
-2028 
-2029 
-2030 
-2031 
-2032 
-2033 
-2034 
-2035 
-2036 
-2037 
-2038 
-2039 
-2040 
-2041 
-2042 
-2043 
-2044 
-2045 
-2046 
-2047 
-2048 
-2049 
-2050 
-2051 
-2052 
-2053 
-2054 
-2055 
-2056 
-2057 
-2058 
-2059 
-2060 
-2061 
-2062 
-2063 
-2064 
-2065 
-2066 
-2067 
-2068 
-2069 
-2070 
-2071 
-2072 
-2073 
-2074 
-2075 
-2076 
-2077 
-2078 
-2079 
-2080 
-2081 
-2082 
-2083 
-2084 
-2085 
-2086 
-2087 
-2088 
-2089 
-2090 
-2091 
-2092 
-2093 
-2094 
-2095 
-2096 
-2097 
-2098 
-2099 
-2100 
-2101 
-2102 
-2103 
-2104 
-2105 
-2106 
-2107 
-2108 
-2109 
-2110 
-2111 
-2112 
-2113 
-2114 
-2115 
-2116 
-2117 
-2118 
-2119 
-2120 
-2121 
-2122 
-2123 
-2124 
-2125 
-2126 
-2127 
-2128 
-2129 
-2130 
-2131 
-2132 
-2133 
-2134 
-2135 
-2136 
-2137 
-2138 
-2139 
-2140 
-2141 
-2142 
-2143 
-2144 
-2145 
-2146 
-2147 
-2148 
-2149 
-2150 
-2151 
-2152 
-2153 
-2154 
-2155 
-2156 
-2157 
-2158 
-2159 
-2160 
-2161 
-2162 
-2163 
-2164 
-2165 
-2166 
-2167 
-2168 
-2169 
-2170 
-2171 
-2172 
-2173 
-2174 
-2175 
-2176 
-2177 
-2178 
-2179 
-2180 
-2181 
-2182 
-2183 
-2184 
-2185 
-2186 
-2187 
-2188 
-2189 
-2190 
-2191 
-2192 
-2193 
-2194 
-2195 
-2196 
-2197 
-2198 
-2199 
-2200 
-2201 
-2202 
-2203 
-2204 
-2205 
-2206 
-2207 
-2208 
-2209 
-2210 
-2211 
-2212 
-2213 
-2214 
-2215 
-2216 
-2217 
-2218 
-2219 
-2220 
-2221 
-2222 
-2223 
-2224 
-2225 
-2226 
-2227 
-2228 
-2229 
-2230 
-2231 
-2232 
-2233 
-2234 
-2235 
-2236 
-2237 
-2238 
-2239 
-2240 
-2241 
-2242 
-2243 
-2244 
-2245 
-2246 
-2247 
-2248 
-2249 
-2250 
-2251 
-2252 
-2253 
-2254 
-2255 
-2256 
-2257 
-2258 
-2259 
-2260 
-2261 
-2262 
-2263 
-2264 
-2265 
-2266 
-2267 
-2268 
-2269 
-2270 
-2271 
-2272 
-2273 
-2274 
-2275 
-2276 
-2277 
-2278 
-2279 
-2280 
-2281 
-2282 
-2283 
-2284 
-2285 
-2286 
-2287 
-2288 
-2289 
-2290 
-2291 
-2292 
-2293 
-2294 
-2295 
-2296 
-2297 
-2298 
-2299 
-2300 
-2301 
-2302 
-2303 
-2304 
-2305 
-2306 
-2307 
-2308 
-2309 
-2310 
-2311 
-2312 
-2313 
-2314 
-2315 
-2316 
-2317 
-2318 
-2319 
-2320 
-2321 
-2322 
-2323 
-2324 
-2325 
-2326 
-2327 
-2328 
-2329 
-2330 
-2331 
-2332 
-2333 
-2334 
-2335 
-2336 
-2337 
-2338 
-2339 
-2340 
-2341 
-2342 
-2343 
-2344 
-2345 
-2346 
-2347 
-2348 
-2349 
-2350 
-2351 
-2352 
-2353 
-2354 
-2355 
-2356 
-2357 
-2358 
-2359 
-2360 
-2361 
-2362 
-2363 
-2364 
-2365 
-2366 
-2367 
-2368 
-2369 
-2370 
-2371 
-2372 
-2373 
-2374 
-2375 
-2376 
-2377 
-2378 
-2379 
-2380 
-2381 
-2382 
-2383 
-2384 
-2385 
-2386 
-2387 
-2388 
-2389 
-2390 
-2391 
-2392 
-2393 
-2394 
-2395 
-2396 
-2397 
-2398 
-2399 
-2400 
-2401 
-2402 
-2403 
-2404 
-2405 
-2406 
-2407 
-2408 
-2409 
-2410 
-2411 
-2412 
-2413 
-2414 
-2415 
-2416 
-2417 
-2418 
-2419 
-2420 
-2421 
-2422 
-2423 
-2424 
-2425 
-2426 
-2427 
-2428 
-2429 
-2430 
-2431 
-2432 
-2433 
-2434 
-2435 
-2436 
-2437 
-2438 
-2439 
-2440 
-2441 
-2442 
-2443 
-2444 
-2445 
-2446 
-2447 
-2448 
-2449 
-2450 
-2451 
-2452 
-2453 
-2454 
-2455 
-2456 
-2457 
-2458 
-2459 
-2460 
-2461 
-2462 
-2463 
-2464 
-2465 
-2466 
-2467 
-2468 
-2469 
-2470 
-2471 
-2472 
-2473 
-2474 
-2475 
-2476 
-2477 
-2478 
-2479 
-2480 
-2481 
-2482 
-2483 
-2484 
-2485 
-2486 
-2487 
-2488 
-2489 
-2490 
-2491 
-2492 
-2493 
-2494 
-2495 
-2496 
-2497 
-2498 
-2499 
-2500 
-2501 
-2502 
-2503 
-2504 
-2505 
-2506 
-2507 
-2508 
-2509 
-2510 
-2511 
-2512 
-2513 
-2514 
-2515 
-2516 
-2517 
-2518 
-2519 
-2520 
-2521 
-2522 
-2523 
-2524 
-2525 
-2526 
-2527 
-2528 
-2529 
-2530 
-2531 
-2532 
-2533 
-2534 
-2535 
-2536 
-2537 
-2538 
-2539 
-2540 
-2541 
-2542 
-2543 
-2544 
-2545 
-2546 
-2547 
-2548 
-2549 
-2550 
-2551 
-2552 
-2553 
-2554 
-2555 
-2556 
-2557 
-2558 
-2559 
-2560 
-2561 
-2562 
-2563 
-2564 
-2565 
-2566 
-2567 
-2568 
-2569 
-2570 
-2571 
-2572 
-2573 
-2574 
-2575 
-2576 
-2577 
-2578 
-2579 
-2580 
-2581 
-2582 
-2583 
-2584 
-2585 
-2586 
-2587 
-2588 
-2589 
-2590 
-2591 
-2592 
-2593 
-2594 
-2595 
-2596 
-2597 
-2598 
-2599 
-2600 
-2601 
-2602 
-2603 
-2604 
-2605 
-2606 
-2607 
-2608 
-2609 
-2610 
-2611 
-2612 
-2613 
-2614 
-2615 
-2616 
-2617 
-2618 
-2619 
-2620 
-2621 
-2622 
-2623 
-2624 
-2625 
-2626 
-2627 
-2628 
-2629 
-2630 
-2631 
-2632 
-2633 
-2634 
-2635 
-2636 
-2637 
-2638 
-2639 
-2640 
-2641 
-2642 
-2643 
-2644 
-2645 
-2646 
-2647 
-2648 
-2649 
-2650 
-2651 
-2652 
-2653 
-2654 
-2655 
-2656 
-2657 
-2658 
-2659 
-2660 
-2661 
-2662 
-2663 
-2664 
-2665 
-2666 
-2667 
-2668 
-2669 
-2670 
-2671 
-2672 
-2673 
-2674 
-2675 
-2676 
-2677 
-2678 
-2679 
-2680 
-2681 
-2682 
-2683 
-2684 
-2685 
-2686 
-2687 
-2688 
-2689 
-2690 
-2691 
-2692 
-2693 
-2694 
-2695 
-2696 
-2697 
-2698 
-2699 
-2700 
-2701 
-2702 
-2703 
-2704 
-2705 
-2706 
-2707 
-2708 
-2709 
-2710 
-2711 
-2712 
-2713 
-2714 
-2715 
-2716 
-2717 
-2718 
-2719 
-2720 
-2721 
-2722 
-2723 
-2724 
-2725 
-2726 
-2727 
-2728 
-2729 
-2730 
-2731 
-2732 
-2733 
-2734 
-2735 
-2736 
-2737 
-2738 
-2739 
-2740 
-2741 
-2742 
-2743 
-2744 
-2745 
-2746 
-2747 
-2748 
-2749 
-2750 
-2751 
-2752 
-2753 
-2754 
-2755 
-2756 
-2757 
-2758 
-2759 
-2760 
-2761 
-2762 
-2763 
-2764 
-2765 
-2766 
-2767 
-2768 
-2769 
-2770 
-2771 
-2772 
-2773 
-2774 
-2775 
-2776 
-2777 
-2778 
-2779 
-2780 
-2781 
-2782 
-2783 
-2784 
-2785 
-2786 
-2787 
-2788 
-2789 
-2790 
-2791 
-2792 
-2793 
-2794 
-2795 
-2796 
-2797 
-2798 
-2799 
-2800 
-2801 
-2802 
-2803 
-2804 
-2805 
-2806 
-2807 
-2808 
-2809 
-2810 
-2811 
-2812 
-2813 
-2814 
-2815 
-2816 
-2817 
-2818 
-2819 
-2820 
-2821 
-2822 
-2823 
-2824 
-2825 
-2826 
-2827 
-2828 
-2829 
-2830 
-2831 
-2832 
-2833 
-2834 
-2835 
-2836 
-2837 
-2838 
-2839 
-2840 
-2841 
-2842 
-2843 
-2844 
-2845 
-2846 
-2847 
-2848 
-2849 
-2850 
-2851 
-2852 
-2853 
-2854 
-2855 
-2856 
-2857 
-2858 
-2859 
-2860 
-2861 
-2862 
-2863 
-2864 
-2865 
-2866 
-2867 
-2868 
-2869 
-2870 
-2871 
-2872 
-2873 
-2874 
-2875 
-2876 
-2877 
-2878 
-2879 
-2880 
-2881 
-2882 
-2883 
-2884 
-2885 
-2886 
-2887 
-2888 
-2889 
-2890 
-2891 
-2892 
-2893 
-2894 
-2895 
-2896 
-2897 
-2898 
-2899 
-2900 
-2901 
-2902 
-2903 
-2904 
-2905 
-2906 
-2907 
-2908 
-2909 
-2910 
-2911 
-2912 
-2913 
-2914 
-2915 
-2916 
-2917 
-2918 
-2919 
-2920 
-2921 
-2922 
-2923 
-2924 
-2925 
-2926 
-2927 
-2928 
-2929 
-2930 
-2931 
-2932 
-2933 
-2934 
-2935 
-2936 
-2937 
-2938 
-2939 
-2940 
-2941 
-2942 
-2943 
-2944 
-2945 
-2946 
-2947 
-2948 
-2949 
-2950 
-2951 
-2952 
-2953 
-2954 
-2955 
-2956 
-2957 
-2958 
-2959 
-2960 
-2961 
-2962 
-2963 
-2964 
-2965 
-2966 
-2967 
-2968 
-2969 
-2970 
-2971 
-2972 
-2973 
-2974 
-2975 
-2976 
-2977 
-2978 
-2979 
-2980 
-2981 
-2982 
-2983 
-2984 
-2985 
-2986 
-2987 
-2988 
-2989 
-2990 
-2991 
-2992 
-2993 
-2994 
-2995 
-2996 
-2997 
-2998 
-2999 
-3000 
-3001 
-3002 
-3003 
-3004 
-3005 
-3006 
-3007 
-3008 
-3009 
-3010 
-3011 
-3012 
-3013 
-3014 
-3015 
-3016 
-3017 
-3018 
-3019 
-3020 
-3021 
-3022 
-3023 
-)
-
-// ************************************************************************* //
diff --git a/tutorials/incompressible/MRFSimpleFoam/mixerVessel2D/constant/polyMesh/sets/rotor_old b/tutorials/incompressible/MRFSimpleFoam/mixerVessel2D/constant/polyMesh/sets/rotor_old
deleted file mode 100644
index 7d419e3061323b353f48d263893f5eeadb037f62..0000000000000000000000000000000000000000
--- a/tutorials/incompressible/MRFSimpleFoam/mixerVessel2D/constant/polyMesh/sets/rotor_old
+++ /dev/null
@@ -1,6309 +0,0 @@
-/*--------------------------------*- C++ -*----------------------------------*\
-| =========                 |                                                 |
-| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.5                                   |
-|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
-|    \\/     M anipulation  |                                                 |
-\*---------------------------------------------------------------------------*/
-FoamFile
-{
-    version     2.0;
-    format      ascii;
-    class       topoSet;
-    object      rotor_old;
-}
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-6288
-(
-0 
-1 
-2 
-3 
-4 
-5 
-6 
-7 
-8 
-9 
-10 
-11 
-12 
-13 
-14 
-15 
-16 
-17 
-18 
-19 
-20 
-21 
-22 
-23 
-24 
-25 
-26 
-27 
-28 
-29 
-30 
-31 
-32 
-33 
-34 
-35 
-36 
-37 
-38 
-39 
-40 
-41 
-42 
-43 
-44 
-45 
-46 
-47 
-48 
-49 
-50 
-51 
-52 
-53 
-54 
-55 
-56 
-57 
-58 
-59 
-60 
-61 
-62 
-63 
-64 
-65 
-66 
-67 
-68 
-69 
-70 
-71 
-72 
-73 
-74 
-75 
-76 
-77 
-78 
-79 
-80 
-81 
-82 
-83 
-84 
-85 
-86 
-87 
-88 
-89 
-90 
-91 
-92 
-93 
-94 
-95 
-96 
-97 
-98 
-99 
-100 
-101 
-102 
-103 
-104 
-105 
-106 
-107 
-108 
-109 
-110 
-111 
-112 
-113 
-114 
-115 
-116 
-117 
-118 
-119 
-120 
-121 
-122 
-123 
-124 
-125 
-126 
-127 
-128 
-129 
-130 
-131 
-132 
-133 
-134 
-135 
-136 
-137 
-138 
-139 
-140 
-141 
-142 
-143 
-144 
-145 
-146 
-147 
-148 
-149 
-150 
-151 
-152 
-153 
-154 
-155 
-156 
-157 
-158 
-159 
-160 
-161 
-162 
-163 
-164 
-165 
-166 
-167 
-168 
-169 
-170 
-171 
-172 
-173 
-174 
-175 
-176 
-177 
-178 
-179 
-180 
-181 
-182 
-183 
-184 
-185 
-186 
-187 
-188 
-189 
-190 
-191 
-192 
-193 
-194 
-195 
-196 
-197 
-198 
-199 
-200 
-201 
-202 
-203 
-204 
-205 
-206 
-207 
-208 
-209 
-210 
-211 
-212 
-213 
-214 
-215 
-216 
-217 
-218 
-219 
-220 
-221 
-222 
-223 
-224 
-225 
-226 
-227 
-228 
-229 
-230 
-231 
-232 
-233 
-234 
-235 
-236 
-237 
-238 
-239 
-240 
-241 
-242 
-243 
-244 
-245 
-246 
-247 
-248 
-249 
-250 
-251 
-252 
-253 
-254 
-255 
-256 
-257 
-258 
-259 
-260 
-261 
-262 
-263 
-264 
-265 
-266 
-267 
-268 
-269 
-270 
-271 
-272 
-273 
-274 
-275 
-276 
-277 
-278 
-279 
-280 
-281 
-282 
-283 
-284 
-285 
-286 
-287 
-288 
-289 
-290 
-291 
-292 
-293 
-294 
-295 
-296 
-297 
-298 
-299 
-300 
-301 
-302 
-303 
-304 
-305 
-306 
-307 
-308 
-309 
-310 
-311 
-312 
-313 
-314 
-315 
-316 
-317 
-318 
-319 
-320 
-321 
-322 
-323 
-324 
-325 
-326 
-327 
-328 
-329 
-330 
-331 
-332 
-333 
-334 
-335 
-336 
-337 
-338 
-339 
-340 
-341 
-342 
-343 
-344 
-345 
-346 
-347 
-348 
-349 
-350 
-351 
-352 
-353 
-354 
-355 
-356 
-357 
-358 
-359 
-360 
-361 
-362 
-363 
-364 
-365 
-366 
-367 
-368 
-369 
-370 
-371 
-372 
-373 
-374 
-375 
-376 
-377 
-378 
-379 
-380 
-381 
-382 
-383 
-384 
-385 
-386 
-387 
-388 
-389 
-390 
-391 
-392 
-393 
-394 
-395 
-396 
-397 
-398 
-399 
-400 
-401 
-402 
-403 
-404 
-405 
-406 
-407 
-408 
-409 
-410 
-411 
-412 
-413 
-414 
-415 
-416 
-417 
-418 
-419 
-420 
-421 
-422 
-423 
-424 
-425 
-426 
-427 
-428 
-429 
-430 
-431 
-432 
-433 
-434 
-435 
-436 
-437 
-438 
-439 
-440 
-441 
-442 
-443 
-444 
-445 
-446 
-447 
-448 
-449 
-450 
-451 
-452 
-453 
-454 
-455 
-456 
-457 
-458 
-459 
-460 
-461 
-462 
-463 
-464 
-465 
-466 
-467 
-468 
-469 
-470 
-471 
-472 
-473 
-474 
-475 
-476 
-477 
-478 
-479 
-480 
-481 
-482 
-483 
-484 
-485 
-486 
-487 
-488 
-489 
-490 
-491 
-492 
-493 
-494 
-495 
-496 
-497 
-498 
-499 
-500 
-501 
-502 
-503 
-504 
-505 
-506 
-507 
-508 
-509 
-510 
-511 
-512 
-513 
-514 
-515 
-516 
-517 
-518 
-519 
-520 
-521 
-522 
-523 
-524 
-525 
-526 
-527 
-528 
-529 
-530 
-531 
-532 
-533 
-534 
-535 
-536 
-537 
-538 
-539 
-540 
-541 
-542 
-543 
-544 
-545 
-546 
-547 
-548 
-549 
-550 
-551 
-552 
-553 
-554 
-555 
-556 
-557 
-558 
-559 
-560 
-561 
-562 
-563 
-564 
-565 
-566 
-567 
-568 
-569 
-570 
-571 
-572 
-573 
-574 
-575 
-576 
-577 
-578 
-579 
-580 
-581 
-582 
-583 
-584 
-585 
-586 
-587 
-588 
-589 
-590 
-591 
-592 
-593 
-594 
-595 
-596 
-597 
-598 
-599 
-600 
-601 
-602 
-603 
-604 
-605 
-606 
-607 
-608 
-609 
-610 
-611 
-612 
-613 
-614 
-615 
-616 
-617 
-618 
-619 
-620 
-621 
-622 
-623 
-624 
-625 
-626 
-627 
-628 
-629 
-630 
-631 
-632 
-633 
-634 
-635 
-636 
-637 
-638 
-639 
-640 
-641 
-642 
-643 
-644 
-645 
-646 
-647 
-648 
-649 
-650 
-651 
-652 
-653 
-654 
-655 
-656 
-657 
-658 
-659 
-660 
-661 
-662 
-663 
-664 
-665 
-666 
-667 
-668 
-669 
-670 
-671 
-672 
-673 
-674 
-675 
-676 
-677 
-678 
-679 
-680 
-681 
-682 
-683 
-684 
-685 
-686 
-687 
-688 
-689 
-690 
-691 
-692 
-693 
-694 
-695 
-696 
-697 
-698 
-699 
-700 
-701 
-702 
-703 
-704 
-705 
-706 
-707 
-708 
-709 
-710 
-711 
-712 
-713 
-714 
-715 
-716 
-717 
-718 
-719 
-720 
-721 
-722 
-723 
-724 
-725 
-726 
-727 
-728 
-729 
-730 
-731 
-732 
-733 
-734 
-735 
-736 
-737 
-738 
-739 
-740 
-741 
-742 
-743 
-744 
-745 
-746 
-747 
-748 
-749 
-750 
-751 
-752 
-753 
-754 
-755 
-756 
-757 
-758 
-759 
-760 
-761 
-762 
-763 
-764 
-765 
-766 
-767 
-768 
-769 
-770 
-771 
-772 
-773 
-774 
-775 
-776 
-777 
-778 
-779 
-780 
-781 
-782 
-783 
-784 
-785 
-786 
-787 
-788 
-789 
-790 
-791 
-792 
-793 
-794 
-795 
-796 
-797 
-798 
-799 
-800 
-801 
-802 
-803 
-804 
-805 
-806 
-807 
-808 
-809 
-810 
-811 
-812 
-813 
-814 
-815 
-816 
-817 
-818 
-819 
-820 
-821 
-822 
-823 
-824 
-825 
-826 
-827 
-828 
-829 
-830 
-831 
-832 
-833 
-834 
-835 
-836 
-837 
-838 
-839 
-840 
-841 
-842 
-843 
-844 
-845 
-846 
-847 
-848 
-849 
-850 
-851 
-852 
-853 
-854 
-855 
-856 
-857 
-858 
-859 
-860 
-861 
-862 
-863 
-864 
-865 
-866 
-867 
-868 
-869 
-870 
-871 
-872 
-873 
-874 
-875 
-876 
-877 
-878 
-879 
-880 
-881 
-882 
-883 
-884 
-885 
-886 
-887 
-888 
-889 
-890 
-891 
-892 
-893 
-894 
-895 
-896 
-897 
-898 
-899 
-900 
-901 
-902 
-903 
-904 
-905 
-906 
-907 
-908 
-909 
-910 
-911 
-912 
-913 
-914 
-915 
-916 
-917 
-918 
-919 
-920 
-921 
-922 
-923 
-924 
-925 
-926 
-927 
-928 
-929 
-930 
-931 
-932 
-933 
-934 
-935 
-936 
-937 
-938 
-939 
-940 
-941 
-942 
-943 
-944 
-945 
-946 
-947 
-948 
-949 
-950 
-951 
-952 
-953 
-954 
-955 
-956 
-957 
-958 
-959 
-960 
-961 
-962 
-963 
-964 
-965 
-966 
-967 
-968 
-969 
-970 
-971 
-972 
-973 
-974 
-975 
-976 
-977 
-978 
-979 
-980 
-981 
-982 
-983 
-984 
-985 
-986 
-987 
-988 
-989 
-990 
-991 
-992 
-993 
-994 
-995 
-996 
-997 
-998 
-999 
-1000 
-1001 
-1002 
-1003 
-1004 
-1005 
-1006 
-1007 
-1008 
-1009 
-1010 
-1011 
-1012 
-1013 
-1014 
-1015 
-1016 
-1017 
-1018 
-1019 
-1020 
-1021 
-1022 
-1023 
-1024 
-1025 
-1026 
-1027 
-1028 
-1029 
-1030 
-1031 
-1032 
-1033 
-1034 
-1035 
-1036 
-1037 
-1038 
-1039 
-1040 
-1041 
-1042 
-1043 
-1044 
-1045 
-1046 
-1047 
-1048 
-1049 
-1050 
-1051 
-1052 
-1053 
-1054 
-1055 
-1056 
-1057 
-1058 
-1059 
-1060 
-1061 
-1062 
-1063 
-1064 
-1065 
-1066 
-1067 
-1068 
-1069 
-1070 
-1071 
-1072 
-1073 
-1074 
-1075 
-1076 
-1077 
-1078 
-1079 
-1080 
-1081 
-1082 
-1083 
-1084 
-1085 
-1086 
-1087 
-1088 
-1089 
-1090 
-1091 
-1092 
-1093 
-1094 
-1095 
-1096 
-1097 
-1098 
-1099 
-1100 
-1101 
-1102 
-1103 
-1104 
-1105 
-1106 
-1107 
-1108 
-1109 
-1110 
-1111 
-1112 
-1113 
-1114 
-1115 
-1116 
-1117 
-1118 
-1119 
-1120 
-1121 
-1122 
-1123 
-1124 
-1125 
-1126 
-1127 
-1128 
-1129 
-1130 
-1131 
-1132 
-1133 
-1134 
-1135 
-1136 
-1137 
-1138 
-1139 
-1140 
-1141 
-1142 
-1143 
-1144 
-1145 
-1146 
-1147 
-1148 
-1149 
-1150 
-1151 
-1152 
-1153 
-1154 
-1155 
-1156 
-1157 
-1158 
-1159 
-1160 
-1161 
-1162 
-1163 
-1164 
-1165 
-1166 
-1167 
-1168 
-1169 
-1170 
-1171 
-1172 
-1173 
-1174 
-1175 
-1176 
-1177 
-1178 
-1179 
-1180 
-1181 
-1182 
-1183 
-1184 
-1185 
-1186 
-1187 
-1188 
-1189 
-1190 
-1191 
-1192 
-1193 
-1194 
-1195 
-1196 
-1197 
-1198 
-1199 
-1200 
-1201 
-1202 
-1203 
-1204 
-1205 
-1206 
-1207 
-1208 
-1209 
-1210 
-1211 
-1212 
-1213 
-1214 
-1215 
-1216 
-1217 
-1218 
-1219 
-1220 
-1221 
-1222 
-1223 
-1224 
-1225 
-1226 
-1227 
-1228 
-1229 
-1230 
-1231 
-1232 
-1233 
-1234 
-1235 
-1236 
-1237 
-1238 
-1239 
-1240 
-1241 
-1242 
-1243 
-1244 
-1245 
-1246 
-1247 
-1248 
-1249 
-1250 
-1251 
-1252 
-1253 
-1254 
-1255 
-1256 
-1257 
-1258 
-1259 
-1260 
-1261 
-1262 
-1263 
-1264 
-1265 
-1266 
-1267 
-1268 
-1269 
-1270 
-1271 
-1272 
-1273 
-1274 
-1275 
-1276 
-1277 
-1278 
-1279 
-1280 
-1281 
-1282 
-1283 
-1284 
-1285 
-1286 
-1287 
-1288 
-1289 
-1290 
-1291 
-1292 
-1293 
-1294 
-1295 
-1296 
-1297 
-1298 
-1299 
-1300 
-1301 
-1302 
-1303 
-1304 
-1305 
-1306 
-1307 
-1308 
-1309 
-1310 
-1311 
-1312 
-1313 
-1314 
-1315 
-1316 
-1317 
-1318 
-1319 
-1320 
-1321 
-1322 
-1323 
-1324 
-1325 
-1326 
-1327 
-1328 
-1329 
-1330 
-1331 
-1332 
-1333 
-1334 
-1335 
-1336 
-1337 
-1338 
-1339 
-1340 
-1341 
-1342 
-1343 
-1344 
-1345 
-1346 
-1347 
-1348 
-1349 
-1350 
-1351 
-1352 
-1353 
-1354 
-1355 
-1356 
-1357 
-1358 
-1359 
-1360 
-1361 
-1362 
-1363 
-1364 
-1365 
-1366 
-1367 
-1368 
-1369 
-1370 
-1371 
-1372 
-1373 
-1374 
-1375 
-1376 
-1377 
-1378 
-1379 
-1380 
-1381 
-1382 
-1383 
-1384 
-1385 
-1386 
-1387 
-1388 
-1389 
-1390 
-1391 
-1392 
-1393 
-1394 
-1395 
-1396 
-1397 
-1398 
-1399 
-1400 
-1401 
-1402 
-1403 
-1404 
-1405 
-1406 
-1407 
-1408 
-1409 
-1410 
-1411 
-1412 
-1413 
-1414 
-1415 
-1416 
-1417 
-1418 
-1419 
-1420 
-1421 
-1422 
-1423 
-1424 
-1425 
-1426 
-1427 
-1428 
-1429 
-1430 
-1431 
-1432 
-1433 
-1434 
-1435 
-1436 
-1437 
-1438 
-1439 
-1440 
-1441 
-1442 
-1443 
-1444 
-1445 
-1446 
-1447 
-1448 
-1449 
-1450 
-1451 
-1452 
-1453 
-1454 
-1455 
-1456 
-1457 
-1458 
-1459 
-1460 
-1461 
-1462 
-1463 
-1464 
-1465 
-1466 
-1467 
-1468 
-1469 
-1470 
-1471 
-1472 
-1473 
-1474 
-1475 
-1476 
-1477 
-1478 
-1479 
-1480 
-1481 
-1482 
-1483 
-1484 
-1485 
-1486 
-1487 
-1488 
-1489 
-1490 
-1491 
-1492 
-1493 
-1494 
-1495 
-1496 
-1497 
-1498 
-1499 
-1500 
-1501 
-1502 
-1503 
-1504 
-1505 
-1506 
-1507 
-1508 
-1509 
-1510 
-1511 
-1512 
-1513 
-1514 
-1515 
-1516 
-1517 
-1518 
-1519 
-1520 
-1521 
-1522 
-1523 
-1524 
-1525 
-1526 
-1527 
-1528 
-1529 
-1530 
-1531 
-1532 
-1533 
-1534 
-1535 
-1536 
-1537 
-1538 
-1539 
-1540 
-1541 
-1542 
-1543 
-1544 
-1545 
-1546 
-1547 
-1548 
-1549 
-1550 
-1551 
-1552 
-1553 
-1554 
-1555 
-1556 
-1557 
-1558 
-1559 
-1560 
-1561 
-1562 
-1563 
-1564 
-1565 
-1566 
-1567 
-1568 
-1569 
-1570 
-1571 
-1572 
-1573 
-1574 
-1575 
-1576 
-1577 
-1578 
-1579 
-1580 
-1581 
-1582 
-1583 
-1584 
-1585 
-1586 
-1587 
-1588 
-1589 
-1590 
-1591 
-1592 
-1593 
-1594 
-1595 
-1596 
-1597 
-1598 
-1599 
-1600 
-1601 
-1602 
-1603 
-1604 
-1605 
-1606 
-1607 
-1608 
-1609 
-1610 
-1611 
-1612 
-1613 
-1614 
-1615 
-1616 
-1617 
-1618 
-1619 
-1620 
-1621 
-1622 
-1623 
-1624 
-1625 
-1626 
-1627 
-1628 
-1629 
-1630 
-1631 
-1632 
-1633 
-1634 
-1635 
-1636 
-1637 
-1638 
-1639 
-1640 
-1641 
-1642 
-1643 
-1644 
-1645 
-1646 
-1647 
-1648 
-1649 
-1650 
-1651 
-1652 
-1653 
-1654 
-1655 
-1656 
-1657 
-1658 
-1659 
-1660 
-1661 
-1662 
-1663 
-1664 
-1665 
-1666 
-1667 
-1668 
-1669 
-1670 
-1671 
-1672 
-1673 
-1674 
-1675 
-1676 
-1677 
-1678 
-1679 
-1680 
-1681 
-1682 
-1683 
-1684 
-1685 
-1686 
-1687 
-1688 
-1689 
-1690 
-1691 
-1692 
-1693 
-1694 
-1695 
-1696 
-1697 
-1698 
-1699 
-1700 
-1701 
-1702 
-1703 
-1704 
-1705 
-1706 
-1707 
-1708 
-1709 
-1710 
-1711 
-1712 
-1713 
-1714 
-1715 
-1716 
-1717 
-1718 
-1719 
-1720 
-1721 
-1722 
-1723 
-1724 
-1725 
-1726 
-1727 
-1728 
-1729 
-1730 
-1731 
-1732 
-1733 
-1734 
-1735 
-1736 
-1737 
-1738 
-1739 
-1740 
-1741 
-1742 
-1743 
-1744 
-1745 
-1746 
-1747 
-1748 
-1749 
-1750 
-1751 
-1752 
-1753 
-1754 
-1755 
-1756 
-1757 
-1758 
-1759 
-1760 
-1761 
-1762 
-1763 
-1764 
-1765 
-1766 
-1767 
-1768 
-1769 
-1770 
-1771 
-1772 
-1773 
-1774 
-1775 
-1776 
-1777 
-1778 
-1779 
-1780 
-1781 
-1782 
-1783 
-1784 
-1785 
-1786 
-1787 
-1788 
-1789 
-1790 
-1791 
-1792 
-1793 
-1794 
-1795 
-1796 
-1797 
-1798 
-1799 
-1800 
-1801 
-1802 
-1803 
-1804 
-1805 
-1806 
-1807 
-1808 
-1809 
-1810 
-1811 
-1812 
-1813 
-1814 
-1815 
-1816 
-1817 
-1818 
-1819 
-1820 
-1821 
-1822 
-1823 
-1824 
-1825 
-1826 
-1827 
-1828 
-1829 
-1830 
-1831 
-1832 
-1833 
-1834 
-1835 
-1836 
-1837 
-1838 
-1839 
-1840 
-1841 
-1842 
-1843 
-1844 
-1845 
-1846 
-1847 
-1848 
-1849 
-1850 
-1851 
-1852 
-1853 
-1854 
-1855 
-1856 
-1857 
-1858 
-1859 
-1860 
-1861 
-1862 
-1863 
-1864 
-1865 
-1866 
-1867 
-1868 
-1869 
-1870 
-1871 
-1872 
-1873 
-1874 
-1875 
-1876 
-1877 
-1878 
-1879 
-1880 
-1881 
-1882 
-1883 
-1884 
-1885 
-1886 
-1887 
-1888 
-1889 
-1890 
-1891 
-1892 
-1893 
-1894 
-1895 
-1896 
-1897 
-1898 
-1899 
-1900 
-1901 
-1902 
-1903 
-1904 
-1905 
-1906 
-1907 
-1908 
-1909 
-1910 
-1911 
-1912 
-1913 
-1914 
-1915 
-1916 
-1917 
-1918 
-1919 
-1920 
-1921 
-1922 
-1923 
-1924 
-1925 
-1926 
-1927 
-1928 
-1929 
-1930 
-1931 
-1932 
-1933 
-1934 
-1935 
-1936 
-1937 
-1938 
-1939 
-1940 
-1941 
-1942 
-1943 
-1944 
-1945 
-1946 
-1947 
-1948 
-1949 
-1950 
-1951 
-1952 
-1953 
-1954 
-1955 
-1956 
-1957 
-1958 
-1959 
-1960 
-1961 
-1962 
-1963 
-1964 
-1965 
-1966 
-1967 
-1968 
-1969 
-1970 
-1971 
-1972 
-1973 
-1974 
-1975 
-1976 
-1977 
-1978 
-1979 
-1980 
-1981 
-1982 
-1983 
-1984 
-1985 
-1986 
-1987 
-1988 
-1989 
-1990 
-1991 
-1992 
-1993 
-1994 
-1995 
-1996 
-1997 
-1998 
-1999 
-2000 
-2001 
-2002 
-2003 
-2004 
-2005 
-2006 
-2007 
-2008 
-2009 
-2010 
-2011 
-2012 
-2013 
-2014 
-2015 
-2016 
-2017 
-2018 
-2019 
-2020 
-2021 
-2022 
-2023 
-2024 
-2025 
-2026 
-2027 
-2028 
-2029 
-2030 
-2031 
-2032 
-2033 
-2034 
-2035 
-2036 
-2037 
-2038 
-2039 
-2040 
-2041 
-2042 
-2043 
-2044 
-2045 
-2046 
-2047 
-2048 
-2049 
-2050 
-2051 
-2052 
-2053 
-2054 
-2055 
-2056 
-2057 
-2058 
-2059 
-2060 
-2061 
-2062 
-2063 
-2064 
-2065 
-2066 
-2067 
-2068 
-2069 
-2070 
-2071 
-2072 
-2073 
-2074 
-2075 
-2076 
-2077 
-2078 
-2079 
-2080 
-2081 
-2082 
-2083 
-2084 
-2085 
-2086 
-2087 
-2088 
-2089 
-2090 
-2091 
-2092 
-2093 
-2094 
-2095 
-2096 
-2097 
-2098 
-2099 
-2100 
-2101 
-2102 
-2103 
-2104 
-2105 
-2106 
-2107 
-2108 
-2109 
-2110 
-2111 
-2112 
-2113 
-2114 
-2115 
-2116 
-2117 
-2118 
-2119 
-2120 
-2121 
-2122 
-2123 
-2124 
-2125 
-2126 
-2127 
-2128 
-2129 
-2130 
-2131 
-2132 
-2133 
-2134 
-2135 
-2136 
-2137 
-2138 
-2139 
-2140 
-2141 
-2142 
-2143 
-2144 
-2145 
-2146 
-2147 
-2148 
-2149 
-2150 
-2151 
-2152 
-2153 
-2154 
-2155 
-2156 
-2157 
-2158 
-2159 
-2160 
-2161 
-2162 
-2163 
-2164 
-2165 
-2166 
-2167 
-2168 
-2169 
-2170 
-2171 
-2172 
-2173 
-2174 
-2175 
-2176 
-2177 
-2178 
-2179 
-2180 
-2181 
-2182 
-2183 
-2184 
-2185 
-2186 
-2187 
-2188 
-2189 
-2190 
-2191 
-2192 
-2193 
-2194 
-2195 
-2196 
-2197 
-2198 
-2199 
-2200 
-2201 
-2202 
-2203 
-2204 
-2205 
-2206 
-2207 
-2208 
-2209 
-2210 
-2211 
-2212 
-2213 
-2214 
-2215 
-2216 
-2217 
-2218 
-2219 
-2220 
-2221 
-2222 
-2223 
-2224 
-2225 
-2226 
-2227 
-2228 
-2229 
-2230 
-2231 
-2232 
-2233 
-2234 
-2235 
-2236 
-2237 
-2238 
-2239 
-2240 
-2241 
-2242 
-2243 
-2244 
-2245 
-2246 
-2247 
-2248 
-2249 
-2250 
-2251 
-2252 
-2253 
-2254 
-2255 
-2256 
-2257 
-2258 
-2259 
-2260 
-2261 
-2262 
-2263 
-2264 
-2265 
-2266 
-2267 
-2268 
-2269 
-2270 
-2271 
-2272 
-2273 
-2274 
-2275 
-2276 
-2277 
-2278 
-2279 
-2280 
-2281 
-2282 
-2283 
-2284 
-2285 
-2286 
-2287 
-2288 
-2289 
-2290 
-2291 
-2292 
-2293 
-2294 
-2295 
-2296 
-2297 
-2298 
-2299 
-2300 
-2301 
-2302 
-2303 
-2304 
-2305 
-2306 
-2307 
-2308 
-2309 
-2310 
-2311 
-2312 
-2313 
-2314 
-2315 
-2316 
-2317 
-2318 
-2319 
-2320 
-2321 
-2322 
-2323 
-2324 
-2325 
-2326 
-2327 
-2328 
-2329 
-2330 
-2331 
-2332 
-2333 
-2334 
-2335 
-2336 
-2337 
-2338 
-2339 
-2340 
-2341 
-2342 
-2343 
-2344 
-2345 
-2346 
-2347 
-2348 
-2349 
-2350 
-2351 
-2352 
-2353 
-2354 
-2355 
-2356 
-2357 
-2358 
-2359 
-2360 
-2361 
-2362 
-2363 
-2364 
-2365 
-2366 
-2367 
-2368 
-2369 
-2370 
-2371 
-2372 
-2373 
-2374 
-2375 
-2376 
-2377 
-2378 
-2379 
-2380 
-2381 
-2382 
-2383 
-2384 
-2385 
-2386 
-2387 
-2388 
-2389 
-2390 
-2391 
-2392 
-2393 
-2394 
-2395 
-2396 
-2397 
-2398 
-2399 
-2400 
-2401 
-2402 
-2403 
-2404 
-2405 
-2406 
-2407 
-2408 
-2409 
-2410 
-2411 
-2412 
-2413 
-2414 
-2415 
-2416 
-2417 
-2418 
-2419 
-2420 
-2421 
-2422 
-2423 
-2424 
-2425 
-2426 
-2427 
-2428 
-2429 
-2430 
-2431 
-2432 
-2433 
-2434 
-2435 
-2436 
-2437 
-2438 
-2439 
-2440 
-2441 
-2442 
-2443 
-2444 
-2445 
-2446 
-2447 
-2448 
-2449 
-2450 
-2451 
-2452 
-2453 
-2454 
-2455 
-2456 
-2457 
-2458 
-2459 
-2460 
-2461 
-2462 
-2463 
-2464 
-2465 
-2466 
-2467 
-2468 
-2469 
-2470 
-2471 
-2472 
-2473 
-2474 
-2475 
-2476 
-2477 
-2478 
-2479 
-2480 
-2481 
-2482 
-2483 
-2484 
-2485 
-2486 
-2487 
-2488 
-2489 
-2490 
-2491 
-2492 
-2493 
-2494 
-2495 
-2496 
-2497 
-2498 
-2499 
-2500 
-2501 
-2502 
-2503 
-2504 
-2505 
-2506 
-2507 
-2508 
-2509 
-2510 
-2511 
-2512 
-2513 
-2514 
-2515 
-2516 
-2517 
-2518 
-2519 
-2520 
-2521 
-2522 
-2523 
-2524 
-2525 
-2526 
-2527 
-2528 
-2529 
-2530 
-2531 
-2532 
-2533 
-2534 
-2535 
-2536 
-2537 
-2538 
-2539 
-2540 
-2541 
-2542 
-2543 
-2544 
-2545 
-2546 
-2547 
-2548 
-2549 
-2550 
-2551 
-2552 
-2553 
-2554 
-2555 
-2556 
-2557 
-2558 
-2559 
-2560 
-2561 
-2562 
-2563 
-2564 
-2565 
-2566 
-2567 
-2568 
-2569 
-2570 
-2571 
-2572 
-2573 
-2574 
-2575 
-2576 
-2577 
-2578 
-2579 
-2580 
-2581 
-2582 
-2583 
-2584 
-2585 
-2586 
-2587 
-2588 
-2589 
-2590 
-2591 
-2592 
-2593 
-2594 
-2595 
-2596 
-2597 
-2598 
-2599 
-2600 
-2601 
-2602 
-2603 
-2604 
-2605 
-2606 
-2607 
-2608 
-2609 
-2610 
-2611 
-2612 
-2613 
-2614 
-2615 
-2616 
-2617 
-2618 
-2619 
-2620 
-2621 
-2622 
-2623 
-2624 
-2625 
-2626 
-2627 
-2628 
-2629 
-2630 
-2631 
-2632 
-2633 
-2634 
-2635 
-2636 
-2637 
-2638 
-2639 
-2640 
-2641 
-2642 
-2643 
-2644 
-2645 
-2646 
-2647 
-2648 
-2649 
-2650 
-2651 
-2652 
-2653 
-2654 
-2655 
-2656 
-2657 
-2658 
-2659 
-2660 
-2661 
-2662 
-2663 
-2664 
-2665 
-2666 
-2667 
-2668 
-2669 
-2670 
-2671 
-2672 
-2673 
-2674 
-2675 
-2676 
-2677 
-2678 
-2679 
-2680 
-2681 
-2682 
-2683 
-2684 
-2685 
-2686 
-2687 
-2688 
-2689 
-2690 
-2691 
-2692 
-2693 
-2694 
-2695 
-2696 
-2697 
-2698 
-2699 
-2700 
-2701 
-2702 
-2703 
-2704 
-2705 
-2706 
-2707 
-2708 
-2709 
-2710 
-2711 
-2712 
-2713 
-2714 
-2715 
-2716 
-2717 
-2718 
-2719 
-2720 
-2721 
-2722 
-2723 
-2724 
-2725 
-2726 
-2727 
-2728 
-2729 
-2730 
-2731 
-2732 
-2733 
-2734 
-2735 
-2736 
-2737 
-2738 
-2739 
-2740 
-2741 
-2742 
-2743 
-2744 
-2745 
-2746 
-2747 
-2748 
-2749 
-2750 
-2751 
-2752 
-2753 
-2754 
-2755 
-2756 
-2757 
-2758 
-2759 
-2760 
-2761 
-2762 
-2763 
-2764 
-2765 
-2766 
-2767 
-2768 
-2769 
-2770 
-2771 
-2772 
-2773 
-2774 
-2775 
-2776 
-2777 
-2778 
-2779 
-2780 
-2781 
-2782 
-2783 
-2784 
-2785 
-2786 
-2787 
-2788 
-2789 
-2790 
-2791 
-2792 
-2793 
-2794 
-2795 
-2796 
-2797 
-2798 
-2799 
-2800 
-2801 
-2802 
-2803 
-2804 
-2805 
-2806 
-2807 
-2808 
-2809 
-2810 
-2811 
-2812 
-2813 
-2814 
-2815 
-2816 
-2817 
-2818 
-2819 
-2820 
-2821 
-2822 
-2823 
-2824 
-2825 
-2826 
-2827 
-2828 
-2829 
-2830 
-2831 
-2832 
-2833 
-2834 
-2835 
-2836 
-2837 
-2838 
-2839 
-2840 
-2841 
-2842 
-2843 
-2844 
-2845 
-2846 
-2847 
-2848 
-2849 
-2850 
-2851 
-2852 
-2853 
-2854 
-2855 
-2856 
-2857 
-2858 
-2859 
-2860 
-2861 
-2862 
-2863 
-2864 
-2865 
-2866 
-2867 
-2868 
-2869 
-2870 
-2871 
-2872 
-2873 
-2874 
-2875 
-2876 
-2877 
-2878 
-2879 
-2880 
-2881 
-2882 
-2883 
-2884 
-2885 
-2886 
-2887 
-2888 
-2889 
-2890 
-2891 
-2892 
-2893 
-2894 
-2895 
-2896 
-2897 
-2898 
-2899 
-2900 
-2901 
-2902 
-2903 
-2904 
-2905 
-2906 
-2907 
-2908 
-2909 
-2910 
-2911 
-2912 
-2913 
-2914 
-2915 
-2916 
-2917 
-2918 
-2919 
-2920 
-2921 
-2922 
-2923 
-2924 
-2925 
-2926 
-2927 
-2928 
-2929 
-2930 
-2931 
-2932 
-2933 
-2934 
-2935 
-2936 
-2937 
-2938 
-2939 
-2940 
-2941 
-2942 
-2943 
-2944 
-2945 
-2946 
-2947 
-2948 
-2949 
-2950 
-2951 
-2952 
-2953 
-2954 
-2955 
-2956 
-2957 
-2958 
-2959 
-2960 
-2961 
-2962 
-2963 
-2964 
-2965 
-2966 
-2967 
-2968 
-2969 
-2970 
-2971 
-2972 
-2973 
-2974 
-2975 
-2976 
-2977 
-2978 
-2979 
-2980 
-2981 
-2982 
-2983 
-2984 
-2985 
-2986 
-2987 
-2988 
-2989 
-2990 
-2991 
-2992 
-2993 
-2994 
-2995 
-2996 
-2997 
-2998 
-2999 
-3000 
-3001 
-3002 
-3003 
-3004 
-3005 
-3006 
-3007 
-3008 
-3009 
-3010 
-3011 
-3012 
-3013 
-3014 
-3015 
-3016 
-3017 
-3018 
-3019 
-3020 
-3021 
-3022 
-3023 
-5952 
-5953 
-5954 
-5955 
-5956 
-5957 
-5958 
-5959 
-5960 
-5961 
-5962 
-5963 
-5964 
-5965 
-5966 
-5967 
-5968 
-5969 
-5970 
-5971 
-5972 
-5973 
-5974 
-5975 
-5976 
-5977 
-5978 
-5979 
-5980 
-5981 
-5982 
-5983 
-5984 
-5985 
-5986 
-5987 
-5988 
-5989 
-5990 
-5991 
-5992 
-5993 
-5994 
-5995 
-5996 
-5997 
-5998 
-5999 
-6000 
-6001 
-6002 
-6003 
-6004 
-6005 
-6006 
-6007 
-6008 
-6009 
-6010 
-6011 
-6012 
-6013 
-6014 
-6015 
-6016 
-6017 
-6018 
-6019 
-6020 
-6021 
-6022 
-6023 
-6024 
-6025 
-6026 
-6027 
-6028 
-6029 
-6030 
-6031 
-6032 
-6033 
-6034 
-6035 
-6036 
-6037 
-6038 
-6039 
-6040 
-6041 
-6042 
-6043 
-6044 
-6045 
-6046 
-6047 
-6048 
-6049 
-6050 
-6051 
-6052 
-6053 
-6054 
-6055 
-6056 
-6057 
-6058 
-6059 
-6060 
-6061 
-6062 
-6063 
-6064 
-6065 
-6066 
-6067 
-6068 
-6069 
-6070 
-6071 
-6072 
-6073 
-6074 
-6075 
-6076 
-6077 
-6078 
-6079 
-6080 
-6081 
-6082 
-6083 
-6084 
-6085 
-6086 
-6087 
-6088 
-6089 
-6090 
-6091 
-6092 
-6093 
-6094 
-6095 
-6096 
-6097 
-6098 
-6099 
-6100 
-6101 
-6102 
-6103 
-6104 
-6105 
-6106 
-6107 
-6108 
-6109 
-6110 
-6111 
-6112 
-6113 
-6114 
-6115 
-6116 
-6117 
-6118 
-6119 
-6120 
-6121 
-6122 
-6123 
-6124 
-6125 
-6126 
-6127 
-6128 
-6129 
-6130 
-6131 
-6132 
-6133 
-6134 
-6135 
-6136 
-6137 
-6138 
-6139 
-6140 
-6141 
-6142 
-6143 
-6336 
-6337 
-6338 
-6339 
-6340 
-6341 
-6342 
-6343 
-6344 
-6345 
-6346 
-6347 
-6348 
-6349 
-6350 
-6351 
-6352 
-6353 
-6354 
-6355 
-6356 
-6357 
-6358 
-6359 
-6360 
-6361 
-6362 
-6363 
-6364 
-6365 
-6366 
-6367 
-6368 
-6369 
-6370 
-6371 
-6372 
-6373 
-6374 
-6375 
-6376 
-6377 
-6378 
-6379 
-6380 
-6381 
-6382 
-6383 
-6384 
-6385 
-6386 
-6387 
-6388 
-6389 
-6390 
-6391 
-6392 
-6393 
-6394 
-6395 
-6396 
-6397 
-6398 
-6399 
-6400 
-6401 
-6402 
-6403 
-6404 
-6405 
-6406 
-6407 
-6408 
-6409 
-6410 
-6411 
-6412 
-6413 
-6414 
-6415 
-6416 
-6417 
-6418 
-6419 
-6420 
-6421 
-6422 
-6423 
-6424 
-6425 
-6426 
-6427 
-6428 
-6429 
-6430 
-6431 
-6432 
-6433 
-6434 
-6435 
-6436 
-6437 
-6438 
-6439 
-6440 
-6441 
-6442 
-6443 
-6444 
-6445 
-6446 
-6447 
-6448 
-6449 
-6450 
-6451 
-6452 
-6453 
-6454 
-6455 
-6456 
-6457 
-6458 
-6459 
-6460 
-6461 
-6462 
-6463 
-6464 
-6465 
-6466 
-6467 
-6468 
-6469 
-6470 
-6471 
-6472 
-6473 
-6474 
-6475 
-6476 
-6477 
-6478 
-6479 
-6480 
-6481 
-6482 
-6483 
-6484 
-6485 
-6486 
-6487 
-6488 
-6489 
-6490 
-6491 
-6492 
-6493 
-6494 
-6495 
-6496 
-6497 
-6498 
-6499 
-6500 
-6501 
-6502 
-6503 
-6504 
-6505 
-6506 
-6507 
-6508 
-6509 
-6510 
-6511 
-6512 
-6513 
-6514 
-6515 
-6516 
-6517 
-6518 
-6519 
-6520 
-6521 
-6522 
-6523 
-6524 
-6525 
-6526 
-6527 
-6528 
-6529 
-6530 
-6531 
-6532 
-6533 
-6534 
-6535 
-6536 
-6537 
-6538 
-6539 
-6540 
-6541 
-6542 
-6543 
-6544 
-6545 
-6546 
-6547 
-6548 
-6549 
-6550 
-6551 
-6552 
-6553 
-6554 
-6555 
-6556 
-6557 
-6558 
-6559 
-6560 
-6561 
-6562 
-6563 
-6564 
-6565 
-6566 
-6567 
-6568 
-6569 
-6570 
-6571 
-6572 
-6573 
-6574 
-6575 
-6576 
-6577 
-6578 
-6579 
-6580 
-6581 
-6582 
-6583 
-6584 
-6585 
-6586 
-6587 
-6588 
-6589 
-6590 
-6591 
-6592 
-6593 
-6594 
-6595 
-6596 
-6597 
-6598 
-6599 
-6600 
-6601 
-6602 
-6603 
-6604 
-6605 
-6606 
-6607 
-6608 
-6609 
-6610 
-6611 
-6612 
-6613 
-6614 
-6615 
-6616 
-6617 
-6618 
-6619 
-6620 
-6621 
-6622 
-6623 
-6624 
-6625 
-6626 
-6627 
-6628 
-6629 
-6630 
-6631 
-6632 
-6633 
-6634 
-6635 
-6636 
-6637 
-6638 
-6639 
-6640 
-6641 
-6642 
-6643 
-6644 
-6645 
-6646 
-6647 
-6648 
-6649 
-6650 
-6651 
-6652 
-6653 
-6654 
-6655 
-6656 
-6657 
-6658 
-6659 
-6660 
-6661 
-6662 
-6663 
-6664 
-6665 
-6666 
-6667 
-6668 
-6669 
-6670 
-6671 
-6672 
-6673 
-6674 
-6675 
-6676 
-6677 
-6678 
-6679 
-6680 
-6681 
-6682 
-6683 
-6684 
-6685 
-6686 
-6687 
-6688 
-6689 
-6690 
-6691 
-6692 
-6693 
-6694 
-6695 
-6696 
-6697 
-6698 
-6699 
-6700 
-6701 
-6702 
-6703 
-6704 
-6705 
-6706 
-6707 
-6708 
-6709 
-6710 
-6711 
-6712 
-6713 
-6714 
-6715 
-6716 
-6717 
-6718 
-6719 
-6720 
-6721 
-6722 
-6723 
-6724 
-6725 
-6726 
-6727 
-6728 
-6729 
-6730 
-6731 
-6732 
-6733 
-6734 
-6735 
-6736 
-6737 
-6738 
-6739 
-6740 
-6741 
-6742 
-6743 
-6744 
-6745 
-6746 
-6747 
-6748 
-6749 
-6750 
-6751 
-6752 
-6753 
-6754 
-6755 
-6756 
-6757 
-6758 
-6759 
-6760 
-6761 
-6762 
-6763 
-6764 
-6765 
-6766 
-6767 
-6768 
-6769 
-6770 
-6771 
-6772 
-6773 
-6774 
-6775 
-6776 
-6777 
-6778 
-6779 
-6780 
-6781 
-6782 
-6783 
-6784 
-6785 
-6786 
-6787 
-6788 
-6789 
-6790 
-6791 
-6792 
-6793 
-6794 
-6795 
-6796 
-6797 
-6798 
-6799 
-6800 
-6801 
-6802 
-6803 
-6804 
-6805 
-6806 
-6807 
-6808 
-6809 
-6810 
-6811 
-6812 
-6813 
-6814 
-6815 
-6816 
-6817 
-6818 
-6819 
-6820 
-6821 
-6822 
-6823 
-6824 
-6825 
-6826 
-6827 
-6828 
-6829 
-6830 
-6831 
-6832 
-6833 
-6834 
-6835 
-6836 
-6837 
-6838 
-6839 
-6840 
-6841 
-6842 
-6843 
-6844 
-6845 
-6846 
-6847 
-6848 
-6849 
-6850 
-6851 
-6852 
-6853 
-6854 
-6855 
-6856 
-6857 
-6858 
-6859 
-6860 
-6861 
-6862 
-6863 
-6864 
-6865 
-6866 
-6867 
-6868 
-6869 
-6870 
-6871 
-6872 
-6873 
-6874 
-6875 
-6876 
-6877 
-6878 
-6879 
-6880 
-6881 
-6882 
-6883 
-6884 
-6885 
-6886 
-6887 
-6888 
-6889 
-6890 
-6891 
-6892 
-6893 
-6894 
-6895 
-6896 
-6897 
-6898 
-6899 
-6900 
-6901 
-6902 
-6903 
-6904 
-6905 
-6906 
-6907 
-6908 
-6909 
-6910 
-6911 
-6912 
-6913 
-6914 
-6915 
-6916 
-6917 
-6918 
-6919 
-6920 
-6921 
-6922 
-6923 
-6924 
-6925 
-6926 
-6927 
-6928 
-6929 
-6930 
-6931 
-6932 
-6933 
-6934 
-6935 
-6936 
-6937 
-6938 
-6939 
-6940 
-6941 
-6942 
-6943 
-6944 
-6945 
-6946 
-6947 
-6948 
-6949 
-6950 
-6951 
-6952 
-6953 
-6954 
-6955 
-6956 
-6957 
-6958 
-6959 
-6960 
-6961 
-6962 
-6963 
-6964 
-6965 
-6966 
-6967 
-6968 
-6969 
-6970 
-6971 
-6972 
-6973 
-6974 
-6975 
-6976 
-6977 
-6978 
-6979 
-6980 
-6981 
-6982 
-6983 
-6984 
-6985 
-6986 
-6987 
-6988 
-6989 
-6990 
-6991 
-6992 
-6993 
-6994 
-6995 
-6996 
-6997 
-6998 
-6999 
-7000 
-7001 
-7002 
-7003 
-7004 
-7005 
-7006 
-7007 
-7008 
-7009 
-7010 
-7011 
-7012 
-7013 
-7014 
-7015 
-7016 
-7017 
-7018 
-7019 
-7020 
-7021 
-7022 
-7023 
-7024 
-7025 
-7026 
-7027 
-7028 
-7029 
-7030 
-7031 
-7032 
-7033 
-7034 
-7035 
-7036 
-7037 
-7038 
-7039 
-7040 
-7041 
-7042 
-7043 
-7044 
-7045 
-7046 
-7047 
-7048 
-7049 
-7050 
-7051 
-7052 
-7053 
-7054 
-7055 
-7056 
-7057 
-7058 
-7059 
-7060 
-7061 
-7062 
-7063 
-7064 
-7065 
-7066 
-7067 
-7068 
-7069 
-7070 
-7071 
-7072 
-7073 
-7074 
-7075 
-7076 
-7077 
-7078 
-7079 
-7080 
-7081 
-7082 
-7083 
-7084 
-7085 
-7086 
-7087 
-7088 
-7089 
-7090 
-7091 
-7092 
-7093 
-7094 
-7095 
-7096 
-7097 
-7098 
-7099 
-7100 
-7101 
-7102 
-7103 
-7104 
-7105 
-7106 
-7107 
-7108 
-7109 
-7110 
-7111 
-7112 
-7113 
-7114 
-7115 
-7116 
-7117 
-7118 
-7119 
-7120 
-7121 
-7122 
-7123 
-7124 
-7125 
-7126 
-7127 
-7128 
-7129 
-7130 
-7131 
-7132 
-7133 
-7134 
-7135 
-7136 
-7137 
-7138 
-7139 
-7140 
-7141 
-7142 
-7143 
-7144 
-7145 
-7146 
-7147 
-7148 
-7149 
-7150 
-7151 
-7152 
-7153 
-7154 
-7155 
-7156 
-7157 
-7158 
-7159 
-7160 
-7161 
-7162 
-7163 
-7164 
-7165 
-7166 
-7167 
-7168 
-7169 
-7170 
-7171 
-7172 
-7173 
-7174 
-7175 
-7176 
-7177 
-7178 
-7179 
-7180 
-7181 
-7182 
-7183 
-7184 
-7185 
-7186 
-7187 
-7188 
-7189 
-7190 
-7191 
-7192 
-7193 
-7194 
-7195 
-7196 
-7197 
-7198 
-7199 
-7200 
-7201 
-7202 
-7203 
-7204 
-7205 
-7206 
-7207 
-7208 
-7209 
-7210 
-7211 
-7212 
-7213 
-7214 
-7215 
-7216 
-7217 
-7218 
-7219 
-7220 
-7221 
-7222 
-7223 
-7224 
-7225 
-7226 
-7227 
-7228 
-7229 
-7230 
-7231 
-7232 
-7233 
-7234 
-7235 
-7236 
-7237 
-7238 
-7239 
-7240 
-7241 
-7242 
-7243 
-7244 
-7245 
-7246 
-7247 
-7248 
-7249 
-7250 
-7251 
-7252 
-7253 
-7254 
-7255 
-7256 
-7257 
-7258 
-7259 
-7260 
-7261 
-7262 
-7263 
-7264 
-7265 
-7266 
-7267 
-7268 
-7269 
-7270 
-7271 
-7272 
-7273 
-7274 
-7275 
-7276 
-7277 
-7278 
-7279 
-7280 
-7281 
-7282 
-7283 
-7284 
-7285 
-7286 
-7287 
-7288 
-7289 
-7290 
-7291 
-7292 
-7293 
-7294 
-7295 
-7296 
-7297 
-7298 
-7299 
-7300 
-7301 
-7302 
-7303 
-7304 
-7305 
-7306 
-7307 
-7308 
-7309 
-7310 
-7311 
-7312 
-7313 
-7314 
-7315 
-7316 
-7317 
-7318 
-7319 
-7320 
-7321 
-7322 
-7323 
-7324 
-7325 
-7326 
-7327 
-7328 
-7329 
-7330 
-7331 
-7332 
-7333 
-7334 
-7335 
-7336 
-7337 
-7338 
-7339 
-7340 
-7341 
-7342 
-7343 
-7344 
-7345 
-7346 
-7347 
-7348 
-7349 
-7350 
-7351 
-7352 
-7353 
-7354 
-7355 
-7356 
-7357 
-7358 
-7359 
-7360 
-7361 
-7362 
-7363 
-7364 
-7365 
-7366 
-7367 
-7368 
-7369 
-7370 
-7371 
-7372 
-7373 
-7374 
-7375 
-7376 
-7377 
-7378 
-7379 
-7380 
-7381 
-7382 
-7383 
-7384 
-7385 
-7386 
-7387 
-7388 
-7389 
-7390 
-7391 
-7392 
-7393 
-7394 
-7395 
-7396 
-7397 
-7398 
-7399 
-7400 
-7401 
-7402 
-7403 
-7404 
-7405 
-7406 
-7407 
-7408 
-7409 
-7410 
-7411 
-7412 
-7413 
-7414 
-7415 
-7416 
-7417 
-7418 
-7419 
-7420 
-7421 
-7422 
-7423 
-7424 
-7425 
-7426 
-7427 
-7428 
-7429 
-7430 
-7431 
-7432 
-7433 
-7434 
-7435 
-7436 
-7437 
-7438 
-7439 
-7440 
-7441 
-7442 
-7443 
-7444 
-7445 
-7446 
-7447 
-7448 
-7449 
-7450 
-7451 
-7452 
-7453 
-7454 
-7455 
-7456 
-7457 
-7458 
-7459 
-7460 
-7461 
-7462 
-7463 
-7464 
-7465 
-7466 
-7467 
-7468 
-7469 
-7470 
-7471 
-7472 
-7473 
-7474 
-7475 
-7476 
-7477 
-7478 
-7479 
-7480 
-7481 
-7482 
-7483 
-7484 
-7485 
-7486 
-7487 
-7488 
-7489 
-7490 
-7491 
-7492 
-7493 
-7494 
-7495 
-7496 
-7497 
-7498 
-7499 
-7500 
-7501 
-7502 
-7503 
-7504 
-7505 
-7506 
-7507 
-7508 
-7509 
-7510 
-7511 
-7512 
-7513 
-7514 
-7515 
-7516 
-7517 
-7518 
-7519 
-7520 
-7521 
-7522 
-7523 
-7524 
-7525 
-7526 
-7527 
-7528 
-7529 
-7530 
-7531 
-7532 
-7533 
-7534 
-7535 
-7536 
-7537 
-7538 
-7539 
-7540 
-7541 
-7542 
-7543 
-7544 
-7545 
-7546 
-7547 
-7548 
-7549 
-7550 
-7551 
-7552 
-7553 
-7554 
-7555 
-7556 
-7557 
-7558 
-7559 
-7560 
-7561 
-7562 
-7563 
-7564 
-7565 
-7566 
-7567 
-7568 
-7569 
-7570 
-7571 
-7572 
-7573 
-7574 
-7575 
-7576 
-7577 
-7578 
-7579 
-7580 
-7581 
-7582 
-7583 
-7584 
-7585 
-7586 
-7587 
-7588 
-7589 
-7590 
-7591 
-7592 
-7593 
-7594 
-7595 
-7596 
-7597 
-7598 
-7599 
-7600 
-7601 
-7602 
-7603 
-7604 
-7605 
-7606 
-7607 
-7608 
-7609 
-7610 
-7611 
-7612 
-7613 
-7614 
-7615 
-7616 
-7617 
-7618 
-7619 
-7620 
-7621 
-7622 
-7623 
-7624 
-7625 
-7626 
-7627 
-7628 
-7629 
-7630 
-7631 
-7632 
-7633 
-7634 
-7635 
-7636 
-7637 
-7638 
-7639 
-7640 
-7641 
-7642 
-7643 
-7644 
-7645 
-7646 
-7647 
-7648 
-7649 
-7650 
-7651 
-7652 
-7653 
-7654 
-7655 
-7656 
-7657 
-7658 
-7659 
-7660 
-7661 
-7662 
-7663 
-7664 
-7665 
-7666 
-7667 
-7668 
-7669 
-7670 
-7671 
-7672 
-7673 
-7674 
-7675 
-7676 
-7677 
-7678 
-7679 
-7680 
-7681 
-7682 
-7683 
-7684 
-7685 
-7686 
-7687 
-7688 
-7689 
-7690 
-7691 
-7692 
-7693 
-7694 
-7695 
-7696 
-7697 
-7698 
-7699 
-7700 
-7701 
-7702 
-7703 
-7704 
-7705 
-7706 
-7707 
-7708 
-7709 
-7710 
-7711 
-7712 
-7713 
-7714 
-7715 
-7716 
-7717 
-7718 
-7719 
-7720 
-7721 
-7722 
-7723 
-7724 
-7725 
-7726 
-7727 
-7728 
-7729 
-7730 
-7731 
-7732 
-7733 
-7734 
-7735 
-7736 
-7737 
-7738 
-7739 
-7740 
-7741 
-7742 
-7743 
-7744 
-7745 
-7746 
-7747 
-7748 
-7749 
-7750 
-7751 
-7752 
-7753 
-7754 
-7755 
-7756 
-7757 
-7758 
-7759 
-7760 
-7761 
-7762 
-7763 
-7764 
-7765 
-7766 
-7767 
-7768 
-7769 
-7770 
-7771 
-7772 
-7773 
-7774 
-7775 
-7776 
-7777 
-7778 
-7779 
-7780 
-7781 
-7782 
-7783 
-7784 
-7785 
-7786 
-7787 
-7788 
-7789 
-7790 
-7791 
-7792 
-7793 
-7794 
-7795 
-7796 
-7797 
-7798 
-7799 
-7800 
-7801 
-7802 
-7803 
-7804 
-7805 
-7806 
-7807 
-7808 
-7809 
-7810 
-7811 
-7812 
-7813 
-7814 
-7815 
-7816 
-7817 
-7818 
-7819 
-7820 
-7821 
-7822 
-7823 
-7824 
-7825 
-7826 
-7827 
-7828 
-7829 
-7830 
-7831 
-7832 
-7833 
-7834 
-7835 
-7836 
-7837 
-7838 
-7839 
-7840 
-7841 
-7842 
-7843 
-7844 
-7845 
-7846 
-7847 
-7848 
-7849 
-7850 
-7851 
-7852 
-7853 
-7854 
-7855 
-7856 
-7857 
-7858 
-7859 
-7860 
-7861 
-7862 
-7863 
-7864 
-7865 
-7866 
-7867 
-7868 
-7869 
-7870 
-7871 
-9408 
-9409 
-9410 
-9411 
-9412 
-9413 
-9414 
-9415 
-9416 
-9417 
-9418 
-9419 
-9420 
-9421 
-9422 
-9423 
-9424 
-9425 
-9426 
-9427 
-9428 
-9429 
-9430 
-9431 
-9432 
-9433 
-9434 
-9435 
-9436 
-9437 
-9438 
-9439 
-9440 
-9441 
-9442 
-9443 
-9444 
-9445 
-9446 
-9447 
-9448 
-9449 
-9450 
-9451 
-9452 
-9453 
-9454 
-9455 
-9456 
-9457 
-9458 
-9459 
-9460 
-9461 
-9462 
-9463 
-9464 
-9465 
-9466 
-9467 
-9468 
-9469 
-9470 
-9471 
-9472 
-9473 
-9474 
-9475 
-9476 
-9477 
-9478 
-9479 
-9480 
-9481 
-9482 
-9483 
-9484 
-9485 
-9486 
-9487 
-9488 
-9489 
-9490 
-9491 
-9492 
-9493 
-9494 
-9495 
-9496 
-9497 
-9498 
-9499 
-9500 
-9501 
-9502 
-9503 
-9504 
-9505 
-9506 
-9507 
-9508 
-9509 
-9510 
-9511 
-9512 
-9513 
-9514 
-9515 
-9516 
-9517 
-9518 
-9519 
-9520 
-9521 
-9522 
-9523 
-9524 
-9525 
-9526 
-9527 
-9528 
-9529 
-9530 
-9531 
-9532 
-9533 
-9534 
-9535 
-9536 
-9537 
-9538 
-9539 
-9540 
-9541 
-9542 
-9543 
-9544 
-9545 
-9546 
-9547 
-9548 
-9549 
-9550 
-9551 
-9552 
-9553 
-9554 
-9555 
-9556 
-9557 
-9558 
-9559 
-9560 
-9561 
-9562 
-9563 
-9564 
-9565 
-9566 
-9567 
-9568 
-9569 
-9570 
-9571 
-9572 
-9573 
-9574 
-9575 
-9576 
-9577 
-9578 
-9579 
-9580 
-9581 
-9582 
-9583 
-9584 
-9585 
-9586 
-9587 
-9588 
-9589 
-9590 
-9591 
-9592 
-9593 
-9594 
-9595 
-9596 
-9597 
-9598 
-9599 
-9600 
-9601 
-9602 
-9603 
-9604 
-9605 
-9606 
-9607 
-9608 
-9609 
-9610 
-9611 
-9612 
-9613 
-9614 
-9615 
-9616 
-9617 
-9618 
-9619 
-9620 
-9621 
-9622 
-9623 
-9624 
-9625 
-9626 
-9627 
-9628 
-9629 
-9630 
-9631 
-9632 
-9633 
-9634 
-9635 
-9636 
-9637 
-9638 
-9639 
-9640 
-9641 
-9642 
-9643 
-9644 
-9645 
-9646 
-9647 
-9648 
-9649 
-9650 
-9651 
-9652 
-9653 
-9654 
-9655 
-9656 
-9657 
-9658 
-9659 
-9660 
-9661 
-9662 
-9663 
-9664 
-9665 
-9666 
-9667 
-9668 
-9669 
-9670 
-9671 
-9672 
-9673 
-9674 
-9675 
-9676 
-9677 
-9678 
-9679 
-9680 
-9681 
-9682 
-9683 
-9684 
-9685 
-9686 
-9687 
-9688 
-9689 
-9690 
-9691 
-9692 
-9693 
-9694 
-9695 
-9696 
-9697 
-9698 
-9699 
-9700 
-9701 
-9702 
-9703 
-9704 
-9705 
-9706 
-9707 
-9708 
-9709 
-9710 
-9711 
-9712 
-9713 
-9714 
-9715 
-9716 
-9717 
-9718 
-9719 
-9720 
-9721 
-9722 
-9723 
-9724 
-9725 
-9726 
-9727 
-9728 
-9729 
-9730 
-9731 
-9732 
-9733 
-9734 
-9735 
-9736 
-9737 
-9738 
-9739 
-9740 
-9741 
-9742 
-9743 
-9744 
-9745 
-9746 
-9747 
-9748 
-9749 
-9750 
-9751 
-9752 
-9753 
-9754 
-9755 
-9756 
-9757 
-9758 
-9759 
-9760 
-9761 
-9762 
-9763 
-9764 
-9765 
-9766 
-9767 
-9768 
-9769 
-9770 
-9771 
-9772 
-9773 
-9774 
-9775 
-9776 
-9777 
-9778 
-9779 
-9780 
-9781 
-9782 
-9783 
-9784 
-9785 
-9786 
-9787 
-9788 
-9789 
-9790 
-9791 
-9792 
-9793 
-9794 
-9795 
-9796 
-9797 
-9798 
-9799 
-9800 
-9801 
-9802 
-9803 
-9804 
-9805 
-9806 
-9807 
-9808 
-9809 
-9810 
-9811 
-9812 
-9813 
-9814 
-9815 
-9816 
-9817 
-9818 
-9819 
-9820 
-9821 
-9822 
-9823 
-9824 
-9825 
-9826 
-9827 
-9828 
-9829 
-9830 
-9831 
-9832 
-9833 
-9834 
-9835 
-9836 
-9837 
-9838 
-9839 
-9840 
-9841 
-9842 
-9843 
-9844 
-9845 
-9846 
-9847 
-9848 
-9849 
-9850 
-9851 
-9852 
-9853 
-9854 
-9855 
-9856 
-9857 
-9858 
-9859 
-9860 
-9861 
-9862 
-9863 
-9864 
-9865 
-9866 
-9867 
-9868 
-9869 
-9870 
-9871 
-9872 
-9873 
-9874 
-9875 
-9876 
-9877 
-9878 
-9879 
-9880 
-9881 
-9882 
-9883 
-9884 
-9885 
-9886 
-9887 
-9888 
-9889 
-9890 
-9891 
-9892 
-9893 
-9894 
-9895 
-9896 
-9897 
-9898 
-9899 
-9900 
-9901 
-9902 
-9903 
-9904 
-9905 
-9906 
-9907 
-9908 
-9909 
-9910 
-9911 
-9912 
-9913 
-9914 
-9915 
-9916 
-9917 
-9918 
-9919 
-9920 
-9921 
-9922 
-9923 
-9924 
-9925 
-9926 
-9927 
-9928 
-9929 
-9930 
-9931 
-9932 
-9933 
-9934 
-9935 
-9936 
-9937 
-9938 
-9939 
-9940 
-9941 
-9942 
-9943 
-9944 
-9945 
-9946 
-9947 
-9948 
-9949 
-9950 
-9951 
-9952 
-9953 
-9954 
-9955 
-9956 
-9957 
-9958 
-9959 
-9960 
-9961 
-9962 
-9963 
-9964 
-9965 
-9966 
-9967 
-9968 
-9969 
-9970 
-9971 
-9972 
-9973 
-9974 
-9975 
-9976 
-9977 
-9978 
-9979 
-9980 
-9981 
-9982 
-9983 
-9984 
-9985 
-9986 
-9987 
-9988 
-9989 
-9990 
-9991 
-9992 
-9993 
-9994 
-9995 
-9996 
-9997 
-9998 
-9999 
-10000 
-10001 
-10002 
-10003 
-10004 
-10005 
-10006 
-10007 
-10008 
-10009 
-10010 
-10011 
-10012 
-10013 
-10014 
-10015 
-10016 
-10017 
-10018 
-10019 
-10020 
-10021 
-10022 
-10023 
-10024 
-10025 
-10026 
-10027 
-10028 
-10029 
-10030 
-10031 
-10032 
-10033 
-10034 
-10035 
-10036 
-10037 
-10038 
-10039 
-10040 
-10041 
-10042 
-10043 
-10044 
-10045 
-10046 
-10047 
-10048 
-10049 
-10050 
-10051 
-10052 
-10053 
-10054 
-10055 
-10056 
-10057 
-10058 
-10059 
-10060 
-10061 
-10062 
-10063 
-10064 
-10065 
-10066 
-10067 
-10068 
-10069 
-10070 
-10071 
-10072 
-10073 
-10074 
-10075 
-10076 
-10077 
-10078 
-10079 
-10080 
-10081 
-10082 
-10083 
-10084 
-10085 
-10086 
-10087 
-10088 
-10089 
-10090 
-10091 
-10092 
-10093 
-10094 
-10095 
-10096 
-10097 
-10098 
-10099 
-10100 
-10101 
-10102 
-10103 
-10104 
-10105 
-10106 
-10107 
-10108 
-10109 
-10110 
-10111 
-10112 
-10113 
-10114 
-10115 
-10116 
-10117 
-10118 
-10119 
-10120 
-10121 
-10122 
-10123 
-10124 
-10125 
-10126 
-10127 
-10128 
-10129 
-10130 
-10131 
-10132 
-10133 
-10134 
-10135 
-10136 
-10137 
-10138 
-10139 
-10140 
-10141 
-10142 
-10143 
-10144 
-10145 
-10146 
-10147 
-10148 
-10149 
-10150 
-10151 
-10152 
-10153 
-10154 
-10155 
-10156 
-10157 
-10158 
-10159 
-10160 
-10161 
-10162 
-10163 
-10164 
-10165 
-10166 
-10167 
-10168 
-10169 
-10170 
-10171 
-10172 
-10173 
-10174 
-10175 
-10176 
-10177 
-10178 
-10179 
-10180 
-10181 
-10182 
-10183 
-10184 
-10185 
-10186 
-10187 
-10188 
-10189 
-10190 
-10191 
-10192 
-10193 
-10194 
-10195 
-10196 
-10197 
-10198 
-10199 
-10200 
-10201 
-10202 
-10203 
-10204 
-10205 
-10206 
-10207 
-10208 
-10209 
-10210 
-10211 
-10212 
-10213 
-10214 
-10215 
-10216 
-10217 
-10218 
-10219 
-10220 
-10221 
-10222 
-10223 
-10224 
-10225 
-10226 
-10227 
-10228 
-10229 
-10230 
-10231 
-10232 
-10233 
-10234 
-10235 
-10236 
-10237 
-10238 
-10239 
-10240 
-10241 
-10242 
-10243 
-10244 
-10245 
-10246 
-10247 
-10248 
-10249 
-10250 
-10251 
-10252 
-10253 
-10254 
-10255 
-10256 
-10257 
-10258 
-10259 
-10260 
-10261 
-10262 
-10263 
-10264 
-10265 
-10266 
-10267 
-10268 
-10269 
-10270 
-10271 
-10272 
-10273 
-10274 
-10275 
-10276 
-10277 
-10278 
-10279 
-10280 
-10281 
-10282 
-10283 
-10284 
-10285 
-10286 
-10287 
-10288 
-10289 
-10290 
-10291 
-10292 
-10293 
-10294 
-10295 
-10296 
-10297 
-10298 
-10299 
-10300 
-10301 
-10302 
-10303 
-10304 
-10305 
-10306 
-10307 
-10308 
-10309 
-10310 
-10311 
-10312 
-10313 
-10314 
-10315 
-10316 
-10317 
-10318 
-10319 
-10320 
-10321 
-10322 
-10323 
-10324 
-10325 
-10326 
-10327 
-10328 
-10329 
-10330 
-10331 
-10332 
-10333 
-10334 
-10335 
-10336 
-10337 
-10338 
-10339 
-10340 
-10341 
-10342 
-10343 
-10344 
-10345 
-10346 
-10347 
-10348 
-10349 
-10350 
-10351 
-10352 
-10353 
-10354 
-10355 
-10356 
-10357 
-10358 
-10359 
-10360 
-10361 
-10362 
-10363 
-10364 
-10365 
-10366 
-10367 
-10368 
-10369 
-10370 
-10371 
-10372 
-10373 
-10374 
-10375 
-10376 
-10377 
-10378 
-10379 
-10380 
-10381 
-10382 
-10383 
-10384 
-10385 
-10386 
-10387 
-10388 
-10389 
-10390 
-10391 
-10392 
-10393 
-10394 
-10395 
-10396 
-10397 
-10398 
-10399 
-10400 
-10401 
-10402 
-10403 
-10404 
-10405 
-10406 
-10407 
-10408 
-10409 
-10410 
-10411 
-10412 
-10413 
-10414 
-10415 
-10416 
-10417 
-10418 
-10419 
-10420 
-10421 
-10422 
-10423 
-10424 
-10425 
-10426 
-10427 
-10428 
-10429 
-10430 
-10431 
-10432 
-10433 
-10434 
-10435 
-10436 
-10437 
-10438 
-10439 
-10440 
-10441 
-10442 
-10443 
-10444 
-10445 
-10446 
-10447 
-10448 
-10449 
-10450 
-10451 
-10452 
-10453 
-10454 
-10455 
-10456 
-10457 
-10458 
-10459 
-10460 
-10461 
-10462 
-10463 
-10464 
-10465 
-10466 
-10467 
-10468 
-10469 
-10470 
-10471 
-10472 
-10473 
-10474 
-10475 
-10476 
-10477 
-10478 
-10479 
-10480 
-10481 
-10482 
-10483 
-10484 
-10485 
-10486 
-10487 
-10488 
-10489 
-10490 
-10491 
-10492 
-10493 
-10494 
-10495 
-10496 
-10497 
-10498 
-10499 
-10500 
-10501 
-10502 
-10503 
-10504 
-10505 
-10506 
-10507 
-10508 
-10509 
-10510 
-10511 
-10512 
-10513 
-10514 
-10515 
-10516 
-10517 
-10518 
-10519 
-10520 
-10521 
-10522 
-10523 
-10524 
-10525 
-10526 
-10527 
-10528 
-10529 
-10530 
-10531 
-10532 
-10533 
-10534 
-10535 
-10536 
-10537 
-10538 
-10539 
-10540 
-10541 
-10542 
-10543 
-10544 
-10545 
-10546 
-10547 
-10548 
-10549 
-10550 
-10551 
-10552 
-10553 
-10554 
-10555 
-10556 
-10557 
-10558 
-10559 
-10560 
-10561 
-10562 
-10563 
-10564 
-10565 
-10566 
-10567 
-10568 
-10569 
-10570 
-10571 
-10572 
-10573 
-10574 
-10575 
-10576 
-10577 
-10578 
-10579 
-10580 
-10581 
-10582 
-10583 
-10584 
-10585 
-10586 
-10587 
-10588 
-10589 
-10590 
-10591 
-10592 
-10593 
-10594 
-10595 
-10596 
-10597 
-10598 
-10599 
-10600 
-10601 
-10602 
-10603 
-10604 
-10605 
-10606 
-10607 
-10608 
-10609 
-10610 
-10611 
-10612 
-10613 
-10614 
-10615 
-10616 
-10617 
-10618 
-10619 
-10620 
-10621 
-10622 
-10623 
-10624 
-10625 
-10626 
-10627 
-10628 
-10629 
-10630 
-10631 
-10632 
-10633 
-10634 
-10635 
-10636 
-10637 
-10638 
-10639 
-10640 
-10641 
-10642 
-10643 
-10644 
-10645 
-10646 
-10647 
-10648 
-10649 
-10650 
-10651 
-10652 
-10653 
-10654 
-10655 
-10656 
-10657 
-10658 
-10659 
-10660 
-10661 
-10662 
-10663 
-10664 
-10665 
-10666 
-10667 
-10668 
-10669 
-10670 
-10671 
-10672 
-10673 
-10674 
-10675 
-10676 
-10677 
-10678 
-10679 
-10680 
-10681 
-10682 
-10683 
-10684 
-10685 
-10686 
-10687 
-10688 
-10689 
-10690 
-10691 
-10692 
-10693 
-10694 
-10695 
-10696 
-10697 
-10698 
-10699 
-10700 
-10701 
-10702 
-10703 
-10704 
-10705 
-10706 
-10707 
-10708 
-10709 
-10710 
-10711 
-10712 
-10713 
-10714 
-10715 
-10716 
-10717 
-10718 
-10719 
-10720 
-10721 
-10722 
-10723 
-10724 
-10725 
-10726 
-10727 
-10728 
-10729 
-10730 
-10731 
-10732 
-10733 
-10734 
-10735 
-10736 
-10737 
-10738 
-10739 
-10740 
-10741 
-10742 
-10743 
-10744 
-10745 
-10746 
-10747 
-10748 
-10749 
-10750 
-10751 
-10752 
-10753 
-10754 
-10755 
-10756 
-10757 
-10758 
-10759 
-10760 
-10761 
-10762 
-10763 
-10764 
-10765 
-10766 
-10767 
-10768 
-10769 
-10770 
-10771 
-10772 
-10773 
-10774 
-10775 
-10776 
-10777 
-10778 
-10779 
-10780 
-10781 
-10782 
-10783 
-10784 
-10785 
-10786 
-10787 
-10788 
-10789 
-10790 
-10791 
-10792 
-10793 
-10794 
-10795 
-10796 
-10797 
-10798 
-10799 
-10800 
-10801 
-10802 
-10803 
-10804 
-10805 
-10806 
-10807 
-10808 
-10809 
-10810 
-10811 
-10812 
-10813 
-10814 
-10815 
-10816 
-10817 
-10818 
-10819 
-10820 
-10821 
-10822 
-10823 
-10824 
-10825 
-10826 
-10827 
-10828 
-10829 
-10830 
-10831 
-10832 
-10833 
-10834 
-10835 
-10836 
-10837 
-10838 
-10839 
-10840 
-10841 
-10842 
-10843 
-10844 
-10845 
-10846 
-10847 
-10848 
-10849 
-10850 
-10851 
-10852 
-10853 
-10854 
-10855 
-10856 
-10857 
-10858 
-10859 
-10860 
-10861 
-10862 
-10863 
-10864 
-10865 
-10866 
-10867 
-10868 
-10869 
-10870 
-10871 
-10872 
-10873 
-10874 
-10875 
-10876 
-10877 
-10878 
-10879 
-10880 
-10881 
-10882 
-10883 
-10884 
-10885 
-10886 
-10887 
-10888 
-10889 
-10890 
-10891 
-10892 
-10893 
-10894 
-10895 
-10896 
-10897 
-10898 
-10899 
-10900 
-10901 
-10902 
-10903 
-10904 
-10905 
-10906 
-10907 
-10908 
-10909 
-10910 
-10911 
-10912 
-10913 
-10914 
-10915 
-10916 
-10917 
-10918 
-10919 
-10920 
-10921 
-10922 
-10923 
-10924 
-10925 
-10926 
-10927 
-10928 
-10929 
-10930 
-10931 
-10932 
-10933 
-10934 
-10935 
-10936 
-10937 
-10938 
-10939 
-10940 
-10941 
-10942 
-10943 
-)
-
-// ************************************************************************* //
diff --git a/tutorials/incompressible/MRFSimpleFoam/mixerVessel2D/makeMesh b/tutorials/incompressible/MRFSimpleFoam/mixerVessel2D/makeMesh
index b0be10d8e5f2b0525cec8f23c93585fde73f5879..b4fc1a22ef1aa0decb5ae200a0ada926514b79ab 100755
--- a/tutorials/incompressible/MRFSimpleFoam/mixerVessel2D/makeMesh
+++ b/tutorials/incompressible/MRFSimpleFoam/mixerVessel2D/makeMesh
@@ -1,11 +1,13 @@
 #!/bin/sh
+set -x
 
 m4 < constant/polyMesh/blockMeshDict.m4 > constant/polyMesh/blockMeshDict
-blockMesh
-cellSet
+blockMesh >& log.blockMesh
+cellSet >& log.cellSet
+
 #- MRF determines its own faceZone if not supplied
 #cp system/faceSetDict_rotorFaces system/faceSetDict
 #faceSet
 #cp system/faceSetDict_noBoundaryFaces system/faceSetDict
 #faceSet
-setsToZones -noFlipMap
+setsToZones -noFlipMap >& log.setsToZones
diff --git a/tutorials/incompressible/pimpleDyMFoam/movingCone/system/fvSolution b/tutorials/incompressible/pimpleDyMFoam/movingCone/system/fvSolution
index 486f7ad5fb2836444d68502c50b37e8c4e55b62a..ca87cfa23b842b53e1d7e75478f7e809c12c2083 100644
--- a/tutorials/incompressible/pimpleDyMFoam/movingCone/system/fvSolution
+++ b/tutorials/incompressible/pimpleDyMFoam/movingCone/system/fvSolution
@@ -58,9 +58,10 @@ solvers
     }
 }
 
-PISO
+PIMPLE
 {
-    nCorrectors     2;
+    nOuterCorrectors    2;
+    nCorrectors         1;
     nNonOrthogonalCorrectors 0;
 }
 
diff --git a/tutorials/incompressible/pisoFoam/les/pitzDailyDirectMapped/constant/polyMesh/boundary b/tutorials/incompressible/pisoFoam/les/pitzDailyDirectMapped/constant/polyMesh/boundary
index 4530c7b820cd84a5d66dfda299ca4ac6620a2c8b..0b56bb9f5e8be426cd22b962d4b254728ac55ab7 100644
--- a/tutorials/incompressible/pisoFoam/les/pitzDailyDirectMapped/constant/polyMesh/boundary
+++ b/tutorials/incompressible/pisoFoam/les/pitzDailyDirectMapped/constant/polyMesh/boundary
@@ -20,7 +20,7 @@ FoamFile
 (
 inlet
 {
-    type            directMapped;
+    type            directMappedPatch;
     nFaces          30;
     startFace       27238;
     sampleMode      nearestCell;
diff --git a/tutorials/incompressible/simpleFoam/motorBike/0/U b/tutorials/incompressible/simpleFoam/motorBike/0/U
new file mode 100644
index 0000000000000000000000000000000000000000..e7777b5b82cefc522a75100dbc609479396263eb
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/motorBike/0/U
@@ -0,0 +1,51 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volVectorField;
+    location    "0";
+    object      U;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include        "initialConditions"
+
+dimensions      [0 1 -1 0 0 0 0];
+
+internalField   uniform $flowVelocity;
+
+boundaryField
+{
+    #include "fixedInlet"
+
+    outlet
+    {
+        type            inletOutlet;
+        inletValue      uniform (0 0 0);
+        value           $internalField;
+    }
+
+    lowerWall
+    {
+        type            fixedValue;
+        value           uniform (20 0 0);
+    }
+
+    "motorBike_.*"
+    {
+        type            fixedValue;
+        value           uniform (0 0 0);
+    }
+
+    #include "frontBackUpperPatches"
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/simpleFoam/motorBike/0/fixedInlet b/tutorials/incompressible/simpleFoam/motorBike/0/fixedInlet
new file mode 100644
index 0000000000000000000000000000000000000000..6d094ec4aa6fbe1f7c48fe1380f9fd767ecebfd1
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/motorBike/0/fixedInlet
@@ -0,0 +1,15 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+inlet
+{
+    type  fixedValue;
+    value $internalField;
+}
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/simpleFoam/motorBike/0/frontBackUpperPatches b/tutorials/incompressible/simpleFoam/motorBike/0/frontBackUpperPatches
new file mode 100644
index 0000000000000000000000000000000000000000..f92c018ea17045e717f692ae9952a17f607a8fa5
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/motorBike/0/frontBackUpperPatches
@@ -0,0 +1,19 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+upperWall
+{
+    type slip;
+}
+
+frontAndBack
+{
+    type slip;
+}
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/simpleFoam/motorBike/0/initialConditions b/tutorials/incompressible/simpleFoam/motorBike/0/initialConditions
new file mode 100644
index 0000000000000000000000000000000000000000..f8ecb7d700ead76ea4776f565764429b8c745b01
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/motorBike/0/initialConditions
@@ -0,0 +1,15 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+flowVelocity         (20 0 0);
+pressure             0;
+turbulentKE          0.24;
+turbulentOmega       1.78;
+#inputMode           merge
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/simpleFoam/motorBike/0/k b/tutorials/incompressible/simpleFoam/motorBike/0/k
new file mode 100644
index 0000000000000000000000000000000000000000..470670d9c1c5bfa1097585367bee9982c2c34ade
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/motorBike/0/k
@@ -0,0 +1,25 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      k;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include        "initialConditions"
+
+dimensions      [0 2 -2 0 0 0 0];
+
+internalField   uniform $turbulentKE;
+
+#include        "turbulentBoundaryField"
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/simpleFoam/motorBike/0/nut b/tutorials/incompressible/simpleFoam/motorBike/0/nut
new file mode 100644
index 0000000000000000000000000000000000000000..650811c0bd591588f095fb17f46320acee8351ad
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/motorBike/0/nut
@@ -0,0 +1,62 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      nut;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 2 -1 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    frontAndBack
+    {
+        type            calculated;
+        value           uniform 0;
+    }
+
+    inlet
+    {
+        type            calculated;
+        value           uniform 0;
+    }
+
+    outlet
+    {
+        type            calculated;
+        value           uniform 0;
+    }
+
+    lowerWall
+    {
+        type            nutWallFunction;
+        value           uniform 0;
+    }
+
+    upperWall
+    {
+        type            calculated;
+        value           uniform 0;
+    }
+
+    "motorBike_.*"
+    {
+        type            nutWallFunction;
+        value           uniform 0;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/simpleFoam/motorBike/0/omega b/tutorials/incompressible/simpleFoam/motorBike/0/omega
new file mode 100644
index 0000000000000000000000000000000000000000..c5c2f307c59dda17f7adcb1de81a6aedd0300602
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/motorBike/0/omega
@@ -0,0 +1,25 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      epsilon;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include        "initialConditions"
+
+dimensions      [0 0 -1 0 0 0 0];
+
+internalField   uniform $turbulentOmega;
+
+#include        "turbulentBoundaryField"
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/simpleFoam/motorBike/0/p b/tutorials/incompressible/simpleFoam/motorBike/0/p
new file mode 100644
index 0000000000000000000000000000000000000000..366e75b5c50f79c6e07c293b2ea4ca35ef1aeff1
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/motorBike/0/p
@@ -0,0 +1,49 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      p;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include        "initialConditions"
+
+dimensions      [0 2 -2 0 0 0 0];
+
+internalField   uniform $pressure;
+
+boundaryField
+{
+    inlet
+    {
+        type            zeroGradient;
+    }
+
+    outlet
+    {
+        type            fixedValue;
+        value           $internalField;
+    }
+
+    lowerWall
+    {
+        type            zeroGradient;
+    }
+
+    "motorBike_.*"
+    {
+        type            zeroGradient;
+    }
+
+    #include "frontBackUpperPatches"
+}
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/simpleFoam/motorBike/0/turbulentBoundaryField b/tutorials/incompressible/simpleFoam/motorBike/0/turbulentBoundaryField
new file mode 100644
index 0000000000000000000000000000000000000000..39fd6f16c15cfea5efbc1c2b7aecd239ccfbd80c
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/motorBike/0/turbulentBoundaryField
@@ -0,0 +1,33 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+boundaryField
+{
+    #include "fixedInlet"
+
+    outlet
+    {
+        type            inletOutlet;
+        inletValue      $internalField;
+        value           $internalField;
+    }
+
+    lowerWall
+    {
+        type            kQRWallFunction;
+    }
+
+    "motorBike_.*"
+    {
+        type            kQRWallFunction;
+    }
+
+    #include "frontBackUpperPatches"
+}
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/simpleFoam/motorBike/Allrun b/tutorials/incompressible/simpleFoam/motorBike/Allrun
new file mode 100755
index 0000000000000000000000000000000000000000..7e6037f4cda17672f6eb05aa84677958521f8d7c
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/motorBike/Allrun
@@ -0,0 +1,8 @@
+#!/bin/sh
+# Source tutorial run functions
+. $WM_PROJECT_DIR/bin/tools/RunFunctions
+
+runApplication blockMesh
+runApplication snappyHexMesh -overwrite
+runApplication simpleFoam
+
diff --git a/tutorials/incompressible/simpleFoam/motorBike/constant/RASProperties b/tutorials/incompressible/simpleFoam/motorBike/constant/RASProperties
new file mode 100644
index 0000000000000000000000000000000000000000..e9be8519b47fd95aeb13fe0eefb01471ec88d7ff
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/motorBike/constant/RASProperties
@@ -0,0 +1,200 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      RASProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+RASModel            kOmegaSST;
+
+turbulence          on;
+
+printCoeffs         on;
+
+laminarCoeffs
+{
+}
+
+kEpsilonCoeffs
+{
+    Cmu              0.09;
+    C1               1.44;
+    C2               1.92;
+    alphaEps         0.76923;
+}
+
+RNGkEpsilonCoeffs
+{
+    Cmu              0.0845;
+    C1               1.42;
+    C2               1.68;
+    alphak           1.39;
+    alphaEps         1.39;
+    eta0             4.38;
+    beta             0.012;
+}
+
+realizableKECoeffs
+{
+    Cmu              0.09;
+    A0               4.0;
+    C2               1.9;
+    alphak           1;
+    alphaEps         0.833333;
+}
+
+kOmegaSSTCoeffs
+{
+    alphaK1          0.85034;
+    alphaK2          1.0;
+    alphaOmega1      0.5;
+    alphaOmega2      0.85616;
+    gamma1           0.5532;
+    gamma2           0.4403;
+    beta1            0.0750;
+    beta2            0.0828;
+    betaStar         0.09;
+    a1               0.31;
+    c1               10;
+
+    Cmu              0.09;
+}
+
+NonlinearKEShihCoeffs
+{
+    Cmu              0.09;
+    C1               1.44;
+    C2               1.92;
+    alphak           1;
+    alphaEps         0.76932;
+    A1               1.25;
+    A2               1000;
+    Ctau1            -4;
+    Ctau2            13;
+    Ctau3            -2;
+    alphaKsi         0.9;
+}
+
+LienCubicKECoeffs
+{
+    C1               1.44;
+    C2               1.92;
+    alphak           1;
+    alphaEps         0.76923;
+    A1               1.25;
+    A2               1000;
+    Ctau1            -4;
+    Ctau2            13;
+    Ctau3            -2;
+    alphaKsi         0.9;
+}
+
+QZetaCoeffs
+{
+    Cmu              0.09;
+    C1               1.44;
+    C2               1.92;
+    alphaZeta        0.76923;
+    anisotropic     no;
+}
+
+LaunderSharmaKECoeffs
+{
+    Cmu              0.09;
+    C1               1.44;
+    C2               1.92;
+    alphaEps         0.76923;
+}
+
+LamBremhorstKECoeffs
+{
+    Cmu              0.09;
+    C1               1.44;
+    C2               1.92;
+    alphaEps         0.76923;
+}
+
+LienCubicKELowReCoeffs
+{
+    Cmu              0.09;
+    C1               1.44;
+    C2               1.92;
+    alphak           1;
+    alphaEps         0.76923;
+    A1               1.25;
+    A2               1000;
+    Ctau1            -4;
+    Ctau2            13;
+    Ctau3            -2;
+    alphaKsi         0.9;
+    Am               0.016;
+    Aepsilon         0.263;
+    Amu              0.00222;
+}
+
+LienLeschzinerLowReCoeffs
+{
+    Cmu              0.09;
+    C1               1.44;
+    C2               1.92;
+    alphak           1;
+    alphaEps         0.76923;
+    Am               0.016;
+    Aepsilon         0.263;
+    Amu              0.00222;
+}
+
+LRRCoeffs
+{
+    Cmu              0.09;
+    Clrr1            1.8;
+    Clrr2            0.6;
+    C1               1.44;
+    C2               1.92;
+    Cs               0.25;
+    Ceps             0.15;
+    alphaEps         0.76923;
+}
+
+LaunderGibsonRSTMCoeffs
+{
+    Cmu              0.09;
+    Clg1             1.8;
+    Clg2             0.6;
+    C1               1.44;
+    C2               1.92;
+    C1Ref            0.5;
+    C2Ref            0.3;
+    Cs               0.25;
+    Ceps             0.15;
+    alphaEps         0.76923;
+    alphaR           1.22;
+}
+
+SpalartAllmarasCoeffs
+{
+    alphaNut         1.5;
+    Cb1              0.1355;
+    Cb2              0.622;
+    Cw2              0.3;
+    Cw3              2;
+    Cv1              7.1;
+    Cv2              5.0;
+}
+
+wallFunctionCoeffs
+{
+    kappa            0.4187;
+    E                9;
+}
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/simpleFoam/motorBike/constant/polyMesh/blockMeshDict b/tutorials/incompressible/simpleFoam/motorBike/constant/polyMesh/blockMeshDict
new file mode 100644
index 0000000000000000000000000000000000000000..0b5b6428a6273ed9ed1b24f5b847c5617783999b
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/motorBike/constant/polyMesh/blockMeshDict
@@ -0,0 +1,74 @@
+/*---------------------------------------------------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.0                                   |
+|   \\  /    A nd           | Web:      http://www.openfoam.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+FoamFile
+{
+    version         2.0;
+    format          ascii;
+
+    root            "";
+    case            "";
+    instance        "";
+    local           "";
+
+    class           dictionary;
+    object          blockMeshDict;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+
+convertToMeters 1;
+
+vertices
+(
+    (-5 -4 0)
+    (15 -4 0)
+    (15  4 0)
+    (-5  4 0)
+    (-5 -4 8)
+    (15 -4 8)
+    (15  4 8)
+    (-5  4 8)
+);
+
+blocks
+(
+    hex (0 1 2 3 4 5 6 7) (20 8 8) simpleGrading (1 1 1)
+);
+
+edges
+(
+);
+
+patches
+(
+    patch frontAndBack
+    (
+        (3 7 6 2)
+        (1 5 4 0)
+    )
+    patch inlet
+    (
+        (0 4 7 3)
+    )
+    patch outlet
+    (
+        (2 6 5 1)
+    )
+    wall lowerWall
+    (
+        (0 3 2 1)
+    )
+    patch upperWall
+    (
+        (4 5 6 7)
+    )
+);
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/simpleFoam/motorBike/constant/polyMesh/boundary b/tutorials/incompressible/simpleFoam/motorBike/constant/polyMesh/boundary
new file mode 100644
index 0000000000000000000000000000000000000000..7a2e8906845066b4a1bc85618d616d2b6e2b4fcb
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/motorBike/constant/polyMesh/boundary
@@ -0,0 +1,454 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       polyBoundaryMesh;
+    location    "constant/polyMesh";
+    object      boundary;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+72
+(
+    frontAndBack
+    {
+        type            patch;
+        nFaces          320;
+        startFace       955219;
+    }
+    inlet
+    {
+        type            patch;
+        nFaces          64;
+        startFace       955539;
+    }
+    outlet
+    {
+        type            patch;
+        nFaces          64;
+        startFace       955603;
+    }
+    lowerWall
+    {
+        type            wall;
+        nFaces          5330;
+        startFace       955667;
+    }
+    upperWall
+    {
+        type            patch;
+        nFaces          160;
+        startFace       960997;
+    }
+    motorBike_frt-fairing:001%1
+    {
+        type            wall;
+        nFaces          9726;
+        startFace       961157;
+    }
+    motorBike_windshield:002%2
+    {
+        type            wall;
+        nFaces          86;
+        startFace       970883;
+    }
+    motorBike_rr-wh-rim:005%5
+    {
+        type            wall;
+        nFaces          186;
+        startFace       970969;
+    }
+    motorBike_rr-wh-rim:010%10
+    {
+        type            wall;
+        nFaces          355;
+        startFace       971155;
+    }
+    motorBike_fr-wh-rim:011%11
+    {
+        type            wall;
+        nFaces          594;
+        startFace       971510;
+    }
+    motorBike_fr-wh-brake-disk:012%12
+    {
+        type            wall;
+        nFaces          55;
+        startFace       972104;
+    }
+    motorBike_frame:016-shadow%13
+    {
+        type            wall;
+        nFaces          163;
+        startFace       972159;
+    }
+    motorBike_rear-susp:014%14
+    {
+        type            wall;
+        nFaces          1300;
+        startFace       972322;
+    }
+    motorBike_rear-susp:014-shadow%15
+    {
+        type            wall;
+        nFaces          166;
+        startFace       973622;
+    }
+    motorBike_frame:016%16
+    {
+        type            wall;
+        nFaces          21;
+        startFace       973788;
+    }
+    motorBike_rr-wh-rim:005-shadow%17
+    {
+        type            wall;
+        nFaces          25;
+        startFace       973809;
+    }
+    motorBike_rr-wh-chain-hub:022%22
+    {
+        type            wall;
+        nFaces          161;
+        startFace       973834;
+    }
+    motorBike_rearseat%24
+    {
+        type            wall;
+        nFaces          543;
+        startFace       973995;
+    }
+    motorBike_frt-fairing%25
+    {
+        type            wall;
+        nFaces          927;
+        startFace       974538;
+    }
+    motorBike_windshield%26
+    {
+        type            wall;
+        nFaces          821;
+        startFace       975465;
+    }
+    motorBike_headlights%27
+    {
+        type            wall;
+        nFaces          280;
+        startFace       976286;
+    }
+    motorBike_driversseat%28
+    {
+        type            wall;
+        nFaces          457;
+        startFace       976566;
+    }
+    motorBike_rear-body%29
+    {
+        type            wall;
+        nFaces          3081;
+        startFace       977023;
+    }
+    motorBike_fuel-tank%30
+    {
+        type            wall;
+        nFaces          1512;
+        startFace       980104;
+    }
+    motorBike_exhaust%31
+    {
+        type            wall;
+        nFaces          3516;
+        startFace       981616;
+    }
+    motorBike_rr-wh-rim%32
+    {
+        type            wall;
+        nFaces          2128;
+        startFace       985132;
+    }
+    motorBike_fr-mud-guard%33
+    {
+        type            wall;
+        nFaces          1096;
+        startFace       987260;
+    }
+    motorBike_fr-wh-rim%34
+    {
+        type            wall;
+        nFaces          954;
+        startFace       988356;
+    }
+    motorBike_fr-wh-brake-disk%35
+    {
+        type            wall;
+        nFaces          533;
+        startFace       989310;
+    }
+    motorBike_fr-brake-caliper%36
+    {
+        type            wall;
+        nFaces          199;
+        startFace       989843;
+    }
+    motorBike_fr-wh-tyre%37
+    {
+        type            wall;
+        nFaces          1855;
+        startFace       990042;
+    }
+    motorBike_hbars%38
+    {
+        type            wall;
+        nFaces          745;
+        startFace       991897;
+    }
+    motorBike_fr-forks%39
+    {
+        type            wall;
+        nFaces          1637;
+        startFace       992642;
+    }
+    motorBike_chain%40
+    {
+        type            wall;
+        nFaces          484;
+        startFace       994279;
+    }
+    motorBike_rr-wh-tyre%41
+    {
+        type            wall;
+        nFaces          3022;
+        startFace       994763;
+    }
+    motorBike_square-dial%42
+    {
+        type            wall;
+        nFaces          9;
+        startFace       997785;
+    }
+    motorBike_round-dial%43
+    {
+        type            wall;
+        nFaces          24;
+        startFace       997794;
+    }
+    motorBike_dial-holder%44
+    {
+        type            wall;
+        nFaces          120;
+        startFace       997818;
+    }
+    motorBike_rear-susp%45
+    {
+        type            wall;
+        nFaces          2050;
+        startFace       997938;
+    }
+    motorBike_rear-brake-lights%46
+    {
+        type            wall;
+        nFaces          75;
+        startFace       999988;
+    }
+    motorBike_rear-light-bracket%47
+    {
+        type            wall;
+        nFaces          226;
+        startFace       1000063;
+    }
+    motorBike_frame%48
+    {
+        type            wall;
+        nFaces          2849;
+        startFace       1000289;
+    }
+    motorBike_rear-mud-guard%49
+    {
+        type            wall;
+        nFaces          1177;
+        startFace       1003138;
+    }
+    motorBike_rear-susp-spring-damp%50
+    {
+        type            wall;
+        nFaces          138;
+        startFace       1004315;
+    }
+    motorBike_fairing-inner-plate%51
+    {
+        type            wall;
+        nFaces          551;
+        startFace       1004453;
+    }
+    motorBike_clutch-housing%52
+    {
+        type            wall;
+        nFaces          1199;
+        startFace       1005004;
+    }
+    motorBike_radiator%53
+    {
+        type            wall;
+        nFaces          51;
+        startFace       1006203;
+    }
+    motorBike_water-pipe%54
+    {
+        type            wall;
+        nFaces          112;
+        startFace       1006254;
+    }
+    motorBike_water-pump%55
+    {
+        type            wall;
+        nFaces          96;
+        startFace       1006366;
+    }
+    motorBike_engine%56
+    {
+        type            wall;
+        nFaces          2963;
+        startFace       1006462;
+    }
+    motorBike_rear-shock-link%57
+    {
+        type            wall;
+        nFaces          33;
+        startFace       1009425;
+    }
+    motorBike_rear-brake-fluid-pot-bracket%58
+    {
+        type            wall;
+        nFaces          63;
+        startFace       1009458;
+    }
+    motorBike_rear-brake-fluid-pot%59
+    {
+        type            wall;
+        nFaces          59;
+        startFace       1009521;
+    }
+    motorBike_footpeg%60
+    {
+        type            wall;
+        nFaces          103;
+        startFace       1009580;
+    }
+    motorBike_rr-wh-chain-hub%61
+    {
+        type            wall;
+        nFaces          160;
+        startFace       1009683;
+    }
+    motorBike_rear-brake-caliper%62
+    {
+        type            wall;
+        nFaces          158;
+        startFace       1009843;
+    }
+    motorBike_rider-helmet%65
+    {
+        type            wall;
+        nFaces          964;
+        startFace       1010001;
+    }
+    motorBike_rider-visor%66
+    {
+        type            wall;
+        nFaces          170;
+        startFace       1010965;
+    }
+    motorBike_rider-boots%67
+    {
+        type            wall;
+        nFaces          1657;
+        startFace       1011135;
+    }
+    motorBike_rider-gloves%68
+    {
+        type            wall;
+        nFaces          436;
+        startFace       1012792;
+    }
+    motorBike_rider-body%69
+    {
+        type            wall;
+        nFaces          7207;
+        startFace       1013228;
+    }
+    motorBike_frame:0%70
+    {
+        type            wall;
+        nFaces          52;
+        startFace       1020435;
+    }
+    motorBike_frt-fairing:001-shadow%74
+    {
+        type            wall;
+        nFaces          1340;
+        startFace       1020487;
+    }
+    motorBike_windshield-shadow%75
+    {
+        type            wall;
+        nFaces          111;
+        startFace       1021827;
+    }
+    motorBike_fr-mud-guard-shadow%81
+    {
+        type            wall;
+        nFaces          135;
+        startFace       1021938;
+    }
+    motorBike_fr-wh-brake-disk-shadow%83
+    {
+        type            wall;
+        nFaces          77;
+        startFace       1022073;
+    }
+    motorBike_rear-mud-guard-shadow%84
+    {
+        type            wall;
+        nFaces          143;
+        startFace       1022150;
+    }
+    motorBike_rear-susp-spring-damp-shadow%85
+    {
+        type            wall;
+        nFaces          15;
+        startFace       1022293;
+    }
+    motorBike_radiator-shadow%86
+    {
+        type            wall;
+        nFaces          12;
+        startFace       1022308;
+    }
+    motorBike_rear-shock-link-shadow%87
+    {
+        type            wall;
+        nFaces          7;
+        startFace       1022320;
+    }
+    motorBike_rear-brake-fluid-pot-bracket-shadow%88
+    {
+        type            wall;
+        nFaces          6;
+        startFace       1022327;
+    }
+    motorBike_rr-wh-chain-hub-shadow%89
+    {
+        type            wall;
+        nFaces          24;
+        startFace       1022333;
+    }
+)
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/simpleFoam/motorBike/constant/transportProperties b/tutorials/incompressible/simpleFoam/motorBike/constant/transportProperties
new file mode 100644
index 0000000000000000000000000000000000000000..c88ea15da7769291d18e4fcc034f97f7d90ca52c
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/motorBike/constant/transportProperties
@@ -0,0 +1,21 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      transportProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+transportModel  Newtonian;
+
+nu              nu [0 2 -1 0 0 0 0] 1.5e-05;
+
+// ************************************************************************* //
diff --git a/tutorials/mesh/snappyHexMesh/motorBike/constant/triSurface/motorBike.stl b/tutorials/incompressible/simpleFoam/motorBike/constant/triSurface/motorBike.stl
similarity index 100%
rename from tutorials/mesh/snappyHexMesh/motorBike/constant/triSurface/motorBike.stl
rename to tutorials/incompressible/simpleFoam/motorBike/constant/triSurface/motorBike.stl
diff --git a/tutorials/incompressible/simpleFoam/motorBike/constant/turbulenceProperties b/tutorials/incompressible/simpleFoam/motorBike/constant/turbulenceProperties
new file mode 100644
index 0000000000000000000000000000000000000000..871d8e64aa5f27d5e8ae105b7f9bffa65a35652d
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/motorBike/constant/turbulenceProperties
@@ -0,0 +1,174 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      turbulenceProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+turbulenceModel SpalartAllmaras;
+
+turbulence      on;
+
+laminarCoeffs
+{
+}
+
+kEpsilonCoeffs
+{
+    Cmu             Cmu [ 0 0 0 0 0 0 0 ] 0.09;
+    C1              C1 [ 0 0 0 0 0 0 0 ] 1.44;
+    C2              C2 [ 0 0 0 0 0 0 0 ] 1.92;
+    alphaEps        alphaEps [ 0 0 0 0 0 0 0 ] 0.76923;
+}
+
+RNGkEpsilonCoeffs
+{
+    Cmu             Cmu [ 0 0 0 0 0 0 0 ] 0.0845;
+    C1              C1 [ 0 0 0 0 0 0 0 ] 1.42;
+    C2              C2 [ 0 0 0 0 0 0 0 ] 1.68;
+    alphak          alphaK [ 0 0 0 0 0 0 0 ] 1.39;
+    alphaEps        alphaEps [ 0 0 0 0 0 0 0 ] 1.39;
+    eta0            eta0 [ 0 0 0 0 0 0 0 ] 4.38;
+    beta            beta [ 0 0 0 0 0 0 0 ] 0.012;
+}
+
+NonlinearKEShihCoeffs
+{
+    Cmu             Cmu [ 0 0 0 0 0 0 0 ] 0.09;
+    C1              C1 [ 0 0 0 0 0 0 0 ] 1.44;
+    C2              C2 [ 0 0 0 0 0 0 0 ] 1.92;
+    alphak          alphak [ 0 0 0 0 0 0 0 ] 1;
+    alphaEps        alphaEps [ 0 0 0 0 0 0 0 ] 0.76932;
+    A1              A1 [ 0 0 0 0 0 0 0 ] 1.25;
+    A2              A2 [ 0 0 0 0 0 0 0 ] 1000;
+    Ctau1           Ctau1 [ 0 0 0 0 0 0 0 ] -4;
+    Ctau2           Ctau2 [ 0 0 0 0 0 0 0 ] 13;
+    Ctau3           Ctau3 [ 0 0 0 0 0 0 0 ] -2;
+    alphaKsi        alphaKsi [ 0 0 0 0 0 0 0 ] 0.9;
+}
+
+LienCubicKECoeffs
+{
+    C1              C1 [ 0 0 0 0 0 0 0 ] 1.44;
+    C2              C2 [ 0 0 0 0 0 0 0 ] 1.92;
+    alphak          alphak [ 0 0 0 0 0 0 0 ] 1;
+    alphaEps        alphaEps [ 0 0 0 0 0 0 0 ] 0.76923;
+    A1              A1 [ 0 0 0 0 0 0 0 ] 1.25;
+    A2              A2 [ 0 0 0 0 0 0 0 ] 1000;
+    Ctau1           Ctau1 [ 0 0 0 0 0 0 0 ] -4;
+    Ctau2           Ctau2 [ 0 0 0 0 0 0 0 ] 13;
+    Ctau3           Ctau3 [ 0 0 0 0 0 0 0 ] -2;
+    alphaKsi        alphaKsi [ 0 0 0 0 0 0 0 ] 0.9;
+}
+
+QZetaCoeffs
+{
+    Cmu             Cmu [ 0 0 0 0 0 0 0 ] 0.09;
+    C1              C1 [ 0 0 0 0 0 0 0 ] 1.44;
+    C2              C2 [ 0 0 0 0 0 0 0 ] 1.92;
+    alphaZeta       alphaZeta [ 0 0 0 0 0 0 0 ] 0.76923;
+    anisotropic     no;
+}
+
+LaunderSharmaKECoeffs
+{
+    Cmu             Cmu [ 0 0 0 0 0 0 0 ] 0.09;
+    C1              C1 [ 0 0 0 0 0 0 0 ] 1.44;
+    C2              C2 [ 0 0 0 0 0 0 0 ] 1.92;
+    alphaEps        alphaEps [ 0 0 0 0 0 0 0 ] 0.76923;
+}
+
+LamBremhorstKECoeffs
+{
+    Cmu             Cmu [ 0 0 0 0 0 0 0 ] 0.09;
+    C1              C1 [ 0 0 0 0 0 0 0 ] 1.44;
+    C2              C2 [ 0 0 0 0 0 0 0 ] 1.92;
+    alphaEps        alphaEps [ 0 0 0 0 0 0 0 ] 0.76923;
+}
+
+LienCubicKELowReCoeffs
+{
+    Cmu             Cmu [ 0 0 0 0 0 0 0 ] 0.09;
+    C1              C1 [ 0 0 0 0 0 0 0 ] 1.44;
+    C2              C2 [ 0 0 0 0 0 0 0 ] 1.92;
+    alphak          alphak [ 0 0 0 0 0 0 0 ] 1;
+    alphaEps        alphaEps [ 0 0 0 0 0 0 0 ] 0.76923;
+    A1              A1 [ 0 0 0 0 0 0 0 ] 1.25;
+    A2              A2 [ 0 0 0 0 0 0 0 ] 1000;
+    Ctau1           Ctau1 [ 0 0 0 0 0 0 0 ] -4;
+    Ctau2           Ctau2 [ 0 0 0 0 0 0 0 ] 13;
+    Ctau3           Ctau3 [ 0 0 0 0 0 0 0 ] -2;
+    alphaKsi        alphaKsi [ 0 0 0 0 0 0 0 ] 0.9;
+    Am              Am [ 0 0 0 0 0 0 0 ] 0.016;
+    Aepsilon        Aepsilon [ 0 0 0 0 0 0 0 ] 0.263;
+    Amu             Amu [ 0 0 0 0 0 0 0 ] 0.00222;
+}
+
+LienLeschzinerLowReCoeffs
+{
+    Cmu             Cmu [ 0 0 0 0 0 0 0 ] 0.09;
+    C1              C1 [ 0 0 0 0 0 0 0 ] 1.44;
+    C2              C2 [ 0 0 0 0 0 0 0 ] 1.92;
+    alphak          alphak [ 0 0 0 0 0 0 0 ] 1;
+    alphaEps        alphaEps [ 0 0 0 0 0 0 0 ] 0.76923;
+    Am              Am [ 0 0 0 0 0 0 0 ] 0.016;
+    Aepsilon        Aepsilon [ 0 0 0 0 0 0 0 ] 0.263;
+    Amu             Amu [ 0 0 0 0 0 0 0 ] 0.00222;
+}
+
+LRRCoeffs
+{
+    Cmu             Cmu [ 0 0 0 0 0 0 0 ] 0.09;
+    Clrr1           Clrr1 [ 0 0 0 0 0 0 0 ] 1.8;
+    Clrr2           Clrr2 [ 0 0 0 0 0 0 0 ] 0.6;
+    C1              C1 [ 0 0 0 0 0 0 0 ] 1.44;
+    C2              C2 [ 0 0 0 0 0 0 0 ] 1.92;
+    Cs              Cs [ 0 0 0 0 0 0 0 ] 0.25;
+    Ceps            Ceps [ 0 0 0 0 0 0 0 ] 0.15;
+    alphaEps        alphaEps [ 0 0 0 0 0 0 0 ] 0.76923;
+}
+
+LaunderGibsonRSTMCoeffs
+{
+    Cmu             Cmu [ 0 0 0 0 0 0 0 ] 0.09;
+    Clg1            Clg1 [ 0 0 0 0 0 0 0 ] 1.8;
+    Clg2            Clg2 [ 0 0 0 0 0 0 0 ] 0.6;
+    C1              C1 [ 0 0 0 0 0 0 0 ] 1.44;
+    C2              C2 [ 0 0 0 0 0 0 0 ] 1.92;
+    C1Ref           C1Ref [ 0 0 0 0 0 0 0 ] 0.5;
+    C2Ref           C2Ref [ 0 0 0 0 0 0 0 ] 0.3;
+    Cs              Cs [ 0 0 0 0 0 0 0 ] 0.25;
+    Ceps            Ceps [ 0 0 0 0 0 0 0 ] 0.15;
+    alphaEps        alphaEps [ 0 0 0 0 0 0 0 ] 0.76923;
+    alphaR          alphaR [ 0 0 0 0 0 0 0 ] 1.22;
+}
+
+SpalartAllmarasCoeffs
+{
+    alphaNut        alphaNut [ 0 0 0 0 0 0 0 ] 1.5;
+    Cb1             Cb1 [ 0 0 0 0 0 0 0 ] 0.1355;
+    Cb2             Cb2 [ 0 0 0 0 0 0 0 ] 0.622;
+    Cw2             Cw2 [ 0 0 0 0 0 0 0 ] 0.3;
+    Cw3             Cw3 [ 0 0 0 0 0 0 0 ] 2;
+    Cv1             Cv1 [ 0 0 0 0 0 0 0 ] 7.1;
+    Cv2             Cv2 [ 0 0 0 0 0 0 0 ] 5;
+}
+
+wallFunctionCoeffs
+{
+    kappa           kappa [ 0 0 0 0 0 0 0 ] 0.4187;
+    E               E [ 0 0 0 0 0 0 0 ] 9;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/simpleFoam/motorBike/system/controlDict b/tutorials/incompressible/simpleFoam/motorBike/system/controlDict
new file mode 100644
index 0000000000000000000000000000000000000000..0fe34b6df670b430b48a3fa66524a9ed5e8cc5f8
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/motorBike/system/controlDict
@@ -0,0 +1,47 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      controlDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+application     simpleFoam;
+
+startFrom       latestTime;
+
+startTime       0;
+
+stopAt          endTime;
+
+endTime         500;
+
+deltaT          1;
+
+writeControl    timeStep;
+
+writeInterval   100;
+
+purgeWrite      0;
+
+writeFormat     ascii;
+
+writePrecision  6;
+
+writeCompression compressed;
+
+timeFormat      general;
+
+timePrecision   6;
+
+runTimeModifiable yes;
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/simpleFoam/motorBike/system/decomposeParDict b/tutorials/incompressible/simpleFoam/motorBike/system/decomposeParDict
new file mode 100644
index 0000000000000000000000000000000000000000..cbcdf2d23a46a8963942ae1a90a3491a08a8cc08
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/motorBike/system/decomposeParDict
@@ -0,0 +1,65 @@
+// The FOAM Project // File: decomposeParDict
+/*
+-------------------------------------------------------------------------------
+ =========         | dictionary
+ \\      /         | 
+  \\    /          | Name:   decomposeParDict
+   \\  /           | Family: FoamX configuration file
+    \\/            | 
+    F ield         | FOAM version: 2.1
+    O peration     | Product of Nabla Ltd.
+    A and          | 
+    M anipulation  | Email: Enquiries@Nabla.co.uk
+-------------------------------------------------------------------------------
+*/
+// FoamX Case Dictionary.
+
+FoamFile
+{
+    version         2.0;
+    format          ascii;
+
+    root            "/home/penfold/mattijs/foam/mattijs2.1/run/icoFoam";
+    case            "cavity";
+    instance        "system";
+    local           "";
+
+    class           dictionary;
+    object          decomposeParDict;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+
+numberOfSubdomains 6;
+
+method          hierarchical;
+//method          metis;
+//method          parMetis;
+
+simpleCoeffs
+{
+    n               (4 1 1);
+    delta           0.001;
+}
+
+hierarchicalCoeffs
+{
+    n               (3 2 1);
+    delta           0.001;
+    order           xyz;
+}
+
+manualCoeffs
+{
+    dataFile        "cellDecomposition";
+}
+
+metisCoeffs
+{
+    //n                   (5 1 1);
+    //cellWeightsFile     "constant/cellWeightsFile";
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/simpleFoam/motorBike/system/fvSchemes b/tutorials/incompressible/simpleFoam/motorBike/system/fvSchemes
new file mode 100644
index 0000000000000000000000000000000000000000..8b6d823cc462316399d3df66f7d2317e3f1c841a
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/motorBike/system/fvSchemes
@@ -0,0 +1,63 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      fvSchemes;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ddtSchemes
+{
+    default steadyState;
+}
+
+gradSchemes
+{
+    default         Gauss linear;
+    grad(p)         Gauss linear;
+    grad(U)         Gauss linear;
+//    grad(U)         cellLimited Gauss linear 1;
+}
+
+divSchemes
+{
+    default         none;
+    div(phi,U)      Gauss linearUpwindV Gauss linear;
+    div(phi,k)      Gauss upwind;
+    div(phi,omega)  Gauss upwind;
+    div((nuEff*dev(grad(U).T()))) Gauss linear;
+}
+
+laplacianSchemes
+{
+    default         Gauss linear corrected;
+//    default         Gauss linear limited 0.5;
+//    default         Gauss linear limited 0.333;
+}
+
+interpolationSchemes
+{
+    default         linear;
+    interpolate(U)  linear;
+}
+
+snGradSchemes
+{
+    default         corrected;
+}
+
+fluxRequired
+{
+    default         no;
+    p;
+}
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/simpleFoam/motorBike/system/fvSolution b/tutorials/incompressible/simpleFoam/motorBike/system/fvSolution
new file mode 100644
index 0000000000000000000000000000000000000000..c0356c6b38a6cbc94b9b3755f34e4df1def6aad3
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/motorBike/system/fvSolution
@@ -0,0 +1,74 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      fvSolution;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+solvers
+{
+    p
+    {
+        solver           GAMG;
+        tolerance        1e-7;
+        relTol           0.1;
+        smoother         GaussSeidel;
+        nPreSweeps       0;
+        nPostSweeps      2;
+        cacheAgglomeration on;
+        agglomerator     faceAreaPair;
+        nCellsInCoarsestLevel 10;
+        mergeLevels      1;
+    };
+
+    U
+    {
+        solver           smoothSolver;
+        smoother         GaussSeidel;
+        tolerance        1e-8;
+        relTol           0.1;
+        nSweeps          1;
+    };
+
+    k
+    {
+        solver           smoothSolver;
+        smoother         GaussSeidel;
+        tolerance        1e-8;
+        relTol           0.1;
+        nSweeps          1;
+    };
+
+    omega
+    {
+        solver           smoothSolver;
+        smoother         GaussSeidel;
+        tolerance        1e-8;
+        relTol           0.1;
+        nSweeps          1;
+    };
+}
+
+SIMPLE
+{
+    nNonOrthogonalCorrectors 0;
+}
+
+relaxationFactors
+{
+    p               0.3;
+    U               0.7;
+    k               0.7;
+    omega           0.7;
+}
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/simpleFoam/motorBike/system/snappyHexMeshDict b/tutorials/incompressible/simpleFoam/motorBike/system/snappyHexMeshDict
new file mode 100644
index 0000000000000000000000000000000000000000..1006a1e1b6a097c15e9a2b472b67595e1979fa09
--- /dev/null
+++ b/tutorials/incompressible/simpleFoam/motorBike/system/snappyHexMeshDict
@@ -0,0 +1,579 @@
+/*---------------------------------------------------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.0                                   |
+|   \\  /    A nd           | Web:      http://www.openfoam.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      snappyHexMeshDict;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+// Which of the steps to run
+castellatedMesh true;
+snap            true;
+addLayers       true;
+
+
+// Geometry. Definition of all surfaces. All surfaces are of class
+// searchableSurface.
+// Surfaces are used
+// - to specify refinement for any mesh cell intersecting it
+// - to specify refinement for any mesh cell inside/outside/near
+// - to 'snap' the mesh boundary to the surface
+geometry
+{
+    motorBike.stl
+    {
+        type triSurfaceMesh;
+        name motorBike;
+    }
+
+    refinementBox
+    {
+        type searchableBox;
+        min (-1.0 -0.7 0.0);
+        max ( 8.0  0.7 2.5);
+    }
+};
+
+
+
+// Settings for the castellatedMesh generation.
+castellatedMeshControls
+{
+
+    // Refinement parameters
+    // ~~~~~~~~~~~~~~~~~~~~~
+
+    // While refining maximum number of cells per processor. This is basically
+    // the number of cells that fit on a processor. If you choose this too small
+    // it will do just more refinement iterations to obtain a similar mesh.
+    maxLocalCells 1000000;
+
+    // Overall cell limit (approximately). Refinement will stop immediately
+    // upon reaching this number so a refinement level might not complete.
+    // Note that this is the number of cells before removing the part which
+    // is not 'visible' from the keepPoint. The final number of cells might
+    // actually be a lot less.
+    maxGlobalCells 2000000;
+
+    // The surface refinement loop might spend lots of iterations refining just a
+    // few cells. This setting will cause refinement to stop if <= minimumRefine
+    // are selected for refinement. Note: it will at least do one iteration
+    // (unless the number of cells to refine is 0)
+    minRefinementCells 10;
+
+    // Number of buffer layers between different levels.
+    // 1 means normal 2:1 refinement restriction, larger means slower
+    // refinement.
+    nCellsBetweenLevels 3;
+
+
+
+    // Explicit feature edge refinement
+    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+    // Specifies a level for any cell intersected by its edges.
+    // This is a featureEdgeMesh, read from constant/triSurface for now.
+    features
+    (
+        //{
+        //    file "someLine.eMesh";
+        //    level 2;
+        //}
+    );
+
+
+
+    // Surface based refinement
+    // ~~~~~~~~~~~~~~~~~~~~~~~~
+
+    // Specifies two levels for every surface. The first is the minimum level,
+    // every cell intersecting a surface gets refined up to the minimum level.
+    // The second level is the maximum level. Cells that 'see' multiple
+    // intersections where the intersections make an
+    // angle > resolveFeatureAngle get refined up to the maximum level.
+
+    refinementSurfaces
+    {
+        motorBike
+        {
+            // Surface-wise min and max refinement level
+            level (5 6);
+        }
+    }
+
+    // Resolve sharp angles
+    resolveFeatureAngle 30;
+
+
+    // Region-wise refinement
+    // ~~~~~~~~~~~~~~~~~~~~~~
+
+    // Specifies refinement level for cells in relation to a surface. One of
+    // three modes
+    // - distance. 'levels' specifies per distance to the surface the
+    //   wanted refinement level. The distances need to be specified in
+    //   descending order.
+    // - inside. 'levels' is only one entry and only the level is used. All
+    //   cells inside the surface get refined up to the level. The surface
+    //   needs to be closed for this to be possible.
+    // - outside. Same but cells outside.
+
+    refinementRegions
+    {
+        refinementBox
+        {
+            mode inside;
+            levels ((1E15 4));
+        }
+    }
+
+
+    // Mesh selection
+    // ~~~~~~~~~~~~~~
+
+    // After refinement patches get added for all refinementSurfaces and
+    // all cells intersecting the surfaces get put into these patches. The
+    // section reachable from the locationInMesh is kept.
+    // NOTE: This point should never be on a face, always inside a cell, even
+    // after refinement.
+    locationInMesh (3 3 0.43);
+}
+
+
+
+// Settings for the snapping.
+snapControls
+{
+    //- Number of patch smoothing iterations before finding correspondence
+    //  to surface
+    nSmoothPatch 3;
+
+    //- Relative distance for points to be attracted by surface feature point
+    //  or edge. True distance is this factor times local
+    //  maximum edge length.
+    tolerance 4.0;
+
+    //- Number of mesh displacement relaxation iterations.
+    nSolveIter 30;
+
+    //- Maximum number of snapping relaxation iterations. Should stop
+    //  before upon reaching a correct mesh.
+    nRelaxIter 5;
+}
+
+
+
+// Settings for the layer addition.
+addLayersControls
+{
+    // Per final patch (so not geometry!) the layer information
+    layers
+    {
+        minZ
+        {
+            nSurfaceLayers 1;
+        }
+        motorBike_frt-fairing:001%1
+        {
+            nSurfaceLayers 1;
+        }
+        motorBike_windshield:002%2
+        {
+            nSurfaceLayers 1;
+        }
+        motorBike_rr-wh-rim:005%5
+        {
+            nSurfaceLayers 1;
+        }
+        motorBike_rr-wh-rim:010%10
+        {
+            nSurfaceLayers 1;
+        }
+        motorBike_fr-wh-rim:011%11
+        {
+            nSurfaceLayers 1;
+        }
+        motorBike_fr-wh-brake-disk:012%12
+        {
+            nSurfaceLayers 1;
+        }
+        motorBike_frame:016-shadow%13
+        {
+            nSurfaceLayers 1;
+        }
+        motorBike_rear-susp:014%14
+        {
+            nSurfaceLayers 1;
+        }
+        motorBike_rear-susp:014-shadow%15
+        {
+            nSurfaceLayers 1;
+        }
+        motorBike_frame:016%16
+        {
+            nSurfaceLayers 1;
+        }
+        motorBike_rr-wh-rim:005-shadow%17
+        {
+            nSurfaceLayers 1;
+        }
+        motorBike_rr-wh-chain-hub:022%22
+        {
+            nSurfaceLayers 1;
+        }
+        motorBike_rearseat%24
+        {
+            nSurfaceLayers 1;
+        }
+        motorBike_frt-fairing%25
+        {
+            nSurfaceLayers 1;
+        }
+        motorBike_windshield%26
+        {
+            nSurfaceLayers 1;
+        }
+        motorBike_headlights%27
+        {
+            nSurfaceLayers 1;
+        }
+        motorBike_driversseat%28
+        {
+            nSurfaceLayers 1;
+        }
+        motorBike_rear-body%29
+        {
+            nSurfaceLayers 1;
+        }
+        motorBike_fuel-tank%30
+        {
+            nSurfaceLayers 1;
+        }
+        motorBike_exhaust%31
+        {
+            nSurfaceLayers 1;
+        }
+        motorBike_rr-wh-rim%32
+        {
+            nSurfaceLayers 1;
+        }
+        motorBike_fr-mud-guard%33
+        {
+            nSurfaceLayers 1;
+        }
+        motorBike_fr-wh-rim%34
+        {
+            nSurfaceLayers 1;
+        }
+        motorBike_fr-wh-brake-disk%35
+        {
+            nSurfaceLayers 1;
+        }
+        motorBike_fr-brake-caliper%36
+        {
+            nSurfaceLayers 1;
+        }
+        motorBike_fr-wh-tyre%37
+        {
+            nSurfaceLayers 1;
+        }
+        motorBike_hbars%38
+        {
+            nSurfaceLayers 1;
+        }
+        motorBike_fr-forks%39
+        {
+            nSurfaceLayers 1;
+        }
+        motorBike_chain%40
+        {
+            nSurfaceLayers 1;
+        }
+        motorBike_rr-wh-tyre%41
+        {
+            nSurfaceLayers 1;
+        }
+        motorBike_square-dial%42
+        {
+            nSurfaceLayers 1;
+        }
+        motorBike_round-dial%43
+        {
+            nSurfaceLayers 1;
+        }
+        motorBike_dial-holder%44
+        {
+            nSurfaceLayers 1;
+        }
+        motorBike_rear-susp%45
+        {
+            nSurfaceLayers 1;
+        }
+        motorBike_rear-brake-lights%46
+        {
+            nSurfaceLayers 1;
+        }
+        motorBike_rear-light-bracket%47
+        {
+            nSurfaceLayers 1;
+        }
+        motorBike_frame%48
+        {
+            nSurfaceLayers 1;
+        }
+        motorBike_rear-mud-guard%49
+        {
+            nSurfaceLayers 1;
+        }
+        motorBike_rear-susp-spring-damp%50
+        {
+            nSurfaceLayers 1;
+        }
+        motorBike_fairing-inner-plate%51
+        {
+            nSurfaceLayers 1;
+        }
+        motorBike_clutch-housing%52
+        {
+            nSurfaceLayers 1;
+        }
+        motorBike_radiator%53
+        {
+            nSurfaceLayers 1;
+        }
+        motorBike_water-pipe%54
+        {
+            nSurfaceLayers 1;
+        }
+        motorBike_water-pump%55
+        {
+            nSurfaceLayers 1;
+        }
+        motorBike_engine%56
+        {
+            nSurfaceLayers 1;
+        }
+        motorBike_rear-shock-link%57
+        {
+            nSurfaceLayers 1;
+        }
+        motorBike_rear-brake-fluid-pot-bracket%58
+        {
+            nSurfaceLayers 1;
+        }
+        motorBike_rear-brake-fluid-pot%59
+        {
+            nSurfaceLayers 1;
+        }
+        motorBike_footpeg%60
+        {
+            nSurfaceLayers 1;
+        }
+        motorBike_rr-wh-chain-hub%61
+        {
+            nSurfaceLayers 1;
+        }
+        motorBike_rear-brake-caliper%62
+        {
+            nSurfaceLayers 1;
+        }
+        motorBike_rider-helmet%65
+        {
+            nSurfaceLayers 1;
+        }
+        motorBike_rider-visor%66
+        {
+            nSurfaceLayers 1;
+        }
+        motorBike_rider-boots%67
+        {
+            nSurfaceLayers 1;
+        }
+        motorBike_rider-gloves%68
+        {
+            nSurfaceLayers 1;
+        }
+        motorBike_rider-body%69
+        {
+            nSurfaceLayers 1;
+        }
+        motorBike_frame:0%70
+        {
+            nSurfaceLayers 1;
+        }
+        motorBike_frt-fairing:001-shadow%74
+        {
+            nSurfaceLayers 1;
+        }
+        motorBike_windshield-shadow%75
+        {
+            nSurfaceLayers 1;
+        }
+        motorBike_fr-mud-guard-shadow%81
+        {
+            nSurfaceLayers 1;
+        }
+        motorBike_fr-wh-brake-disk-shadow%83
+        {
+            nSurfaceLayers 1;
+        }
+        motorBike_rear-mud-guard-shadow%84
+        {
+            nSurfaceLayers 1;
+        }
+        motorBike_rear-susp-spring-damp-shadow%85
+        {
+            nSurfaceLayers 1;
+        }
+        motorBike_radiator-shadow%86
+        {
+            nSurfaceLayers 1;
+        }
+        motorBike_rear-shock-link-shadow%87
+        {
+            nSurfaceLayers 1;
+        }
+        motorBike_rear-brake-fluid-pot-bracket-shadow%88
+        {
+            nSurfaceLayers 1;
+        }
+        motorBike_rr-wh-chain-hub-shadow%89
+        {
+            nSurfaceLayers 1;
+        }
+    }
+
+    // Expansion factor for layer mesh
+    expansionRatio 1.0;
+
+    //- Wanted thickness of final added cell layer. If multiple layers
+    //  is the
+    //  thickness of the layer furthest away from the wall.
+    //  Relative to undistorted size of cell outside layer.
+    finalLayerRatio 0.3;
+
+    //- Minimum thickness of cell layer. If for any reason layer
+    //  cannot be above minThickness do not add layer.
+    //  Relative to undistorted size of cell outside layer.
+    minThickness 0.1;
+
+    //- If points get not extruded do nGrow layers of connected faces that are
+    //  also not grown. This helps convergence of the layer addition process
+    //  close to features.
+    nGrow 1;
+
+
+    // Advanced settings
+
+    //- When not to extrude surface. 0 is flat surface, 90 is when two faces
+    //  make straight angle.
+    featureAngle 30;
+
+    //- Maximum number of snapping relaxation iterations. Should stop
+    //  before upon reaching a correct mesh.
+    nRelaxIter 3;
+
+    // Number of smoothing iterations of surface normals
+    nSmoothSurfaceNormals 1;
+
+    // Number of smoothing iterations of interior mesh movement direction
+    nSmoothNormals 3;
+
+    // Smooth layer thickness over surface patches
+    nSmoothThickness 10;
+
+    // Stop layer growth on highly warped cells
+    maxFaceThicknessRatio 0.5;
+
+    // Reduce layer growth where ratio thickness to medial
+    // distance is large
+    maxThicknessToMedialRatio 0.3;
+
+    // Angle used to pick up medial axis points
+    minMedianAxisAngle 130;
+
+    // Create buffer region for new layer terminations
+    nBufferCellsNoExtrude 0;
+}
+
+
+
+// Generic mesh quality settings. At any undoable phase these determine
+// where to undo.
+meshQualityControls
+{
+    //- Maximum non-orthogonality allowed. Set to 180 to disable.
+    maxNonOrtho 65;
+
+    //- Max skewness allowed. Set to <0 to disable.
+    maxBoundarySkewness 20;
+    maxInternalSkewness 4;
+
+    //- Max concaveness allowed. Is angle (in degrees) below which concavity
+    //  is allowed. 0 is straight face, <0 would be convex face.
+    //  Set to 180 to disable.
+    maxConcave 80;
+
+    //- Minimum projected area v.s. actual area. Set to -1 to disable.
+    minFlatness 0.5;
+
+    //- Minimum pyramid volume. Is absolute volume of cell pyramid.
+    //  Set to very negative number (e.g. -1E30) to disable.
+    minVol 1e-13;
+
+    //- Minimum face area. Set to <0 to disable.
+    minArea -1;
+
+    //- Minimum face twist. Set to <-1 to disable. dot product of face normal
+    //- and face centre triangles normal
+    minTwist 0.02;
+
+    //- minimum normalised cell determinant
+    //- 1 = hex, <= 0 = folded or flattened illegal cell
+    minDeterminant 0.001;
+
+    //- minFaceWeight (0 -> 0.5)
+    minFaceWeight 0.02;
+
+    //- minVolRatio (0 -> 1)
+    minVolRatio 0.01;
+
+    //must be >0 for Fluent compatibility
+    minTriangleTwist -1;
+
+
+    // Advanced
+
+    //- Number of error distribution iterations
+    nSmoothScale 4;
+    //- amount to scale back displacement at error points
+    errorReduction 0.75;
+}
+
+
+// Advanced
+
+// Flags for optional output
+// 0 : only write final meshes
+// 1 : write intermediate meshes
+// 2 : write volScalarField with cellLevel for postprocessing
+// 4 : write current intersections as .obj files
+debug 0;
+
+
+// Merge tolerance. Is fraction of overall bounding box of initial mesh.
+// Note: the write tolerance needs to be higher than this.
+mergeTolerance 1E-6;
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/0/CH4 b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/0/CH4
new file mode 100644
index 0000000000000000000000000000000000000000..5b0f18db0c6875dbc23ea4628dd8d379c60352e2
--- /dev/null
+++ b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/0/CH4
@@ -0,0 +1,51 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      CH4;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 0.0;
+
+boundaryField
+{
+    top
+    {
+        type            zeroGradient;
+    }
+
+    bottom
+    {
+        type            zeroGradient;
+    }
+
+    walls
+    {
+        type            zeroGradient;
+    }
+
+    symmetry
+    {
+        type            symmetryPlane;
+    }
+
+    frontAndBack
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/Lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/0/k b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/0/CO
similarity index 81%
rename from tutorials/Lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/0/k
rename to tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/0/CO
index b2e4f58aab813ed1f1ba9667db76c30d0ad49f1c..40eed00221bf5cab6f6a4b747c4cfd87995b47f5 100644
--- a/tutorials/Lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/0/k
+++ b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/0/CO
@@ -1,8 +1,8 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.5                                   |
-|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
 FoamFile
@@ -10,13 +10,14 @@ FoamFile
     version     2.0;
     format      ascii;
     class       volScalarField;
-    object      k;
+    location    "0";
+    object      CO;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-dimensions      [0 2 -2 0 0 0 0];
+dimensions      [0 0 0 0 0 0 0];
 
-internalField   uniform 37.5;
+internalField   uniform 0.0;
 
 boundaryField
 {
@@ -46,4 +47,5 @@ boundaryField
     }
 }
 
+
 // ************************************************************************* //
diff --git a/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/0/CO2 b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/0/CO2
new file mode 100644
index 0000000000000000000000000000000000000000..6afb84af406e6b1d6c1808bf0b48709a9ca5c72c
--- /dev/null
+++ b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/0/CO2
@@ -0,0 +1,51 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      CO2;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 0.0;
+
+boundaryField
+{
+    top
+    {
+        type            zeroGradient;
+    }
+
+    bottom
+    {
+        type            zeroGradient;
+    }
+
+    walls
+    {
+        type            zeroGradient;
+    }
+
+    symmetry
+    {
+        type            symmetryPlane;
+    }
+
+    frontAndBack
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/0/G b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/0/G
new file mode 100644
index 0000000000000000000000000000000000000000..1fbaf23d4d1a6799f3214f3fce3c3ddb44b20155
--- /dev/null
+++ b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/0/G
@@ -0,0 +1,56 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      G;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 0 -3 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    top
+    {
+        type            MarshakRadiation;
+        T               T;
+        emissivity      1.0;
+        value           uniform 0;
+    }
+    bottom
+    {
+        type            MarshakRadiation;
+        T               T;
+        emissivity      1.0;
+        value           uniform 0;
+    }
+    walls
+    {
+        type            MarshakRadiation;
+        T               T;
+        emissivity      1.0;
+        value           uniform 0;
+    }
+    symmetry
+    {
+        type            symmetryPlane;
+    }
+    frontAndBack
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/0/H2 b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/0/H2
new file mode 100644
index 0000000000000000000000000000000000000000..c0632b8637eeb249ae07fff809a2982fe78d0895
--- /dev/null
+++ b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/0/H2
@@ -0,0 +1,51 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      H2;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 0.0;
+
+boundaryField
+{
+    top
+    {
+        type            zeroGradient;
+    }
+
+    bottom
+    {
+        type            zeroGradient;
+    }
+
+    walls
+    {
+        type            zeroGradient;
+    }
+
+    symmetry
+    {
+        type            symmetryPlane;
+    }
+
+    frontAndBack
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/0/H2O b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/0/H2O
new file mode 100644
index 0000000000000000000000000000000000000000..39a64df509d548c4854c802acf92d15be3b4d271
--- /dev/null
+++ b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/0/H2O
@@ -0,0 +1,51 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      H2O;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 0.0;
+
+boundaryField
+{
+    top
+    {
+        type            zeroGradient;
+    }
+
+    bottom
+    {
+        type            zeroGradient;
+    }
+
+    walls
+    {
+        type            zeroGradient;
+    }
+
+    symmetry
+    {
+        type            symmetryPlane;
+    }
+
+    frontAndBack
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/0/N2 b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/0/N2
new file mode 100644
index 0000000000000000000000000000000000000000..8d98a27778df9c5d83935c86aad7018a14ea1524
--- /dev/null
+++ b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/0/N2
@@ -0,0 +1,51 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      N2;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 0.79;
+
+boundaryField
+{
+    top
+    {
+        type            zeroGradient;
+    }
+
+    bottom
+    {
+        type            zeroGradient;
+    }
+
+    walls
+    {
+        type            zeroGradient;
+    }
+
+    symmetry
+    {
+        type            symmetryPlane;
+    }
+
+    frontAndBack
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/0/O2 b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/0/O2
new file mode 100644
index 0000000000000000000000000000000000000000..2715a766861a21e627f8147b8f73343cacb582ee
--- /dev/null
+++ b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/0/O2
@@ -0,0 +1,51 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      O2;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 0.21;
+
+boundaryField
+{
+    top
+    {
+        type            zeroGradient;
+    }
+
+    bottom
+    {
+        type            zeroGradient;
+    }
+
+    walls
+    {
+        type            zeroGradient;
+    }
+
+    symmetry
+    {
+        type            symmetryPlane;
+    }
+
+    frontAndBack
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/0/T b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/0/T
new file mode 100644
index 0000000000000000000000000000000000000000..9cfa5c9c23054721bc7d8f07d89b9524ac766cd5
--- /dev/null
+++ b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/0/T
@@ -0,0 +1,52 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      T;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 1 0 0 0];
+
+internalField   uniform 400;
+
+boundaryField
+{
+    top
+    {
+        type            zeroGradient;
+    }
+
+    bottom
+    {
+        type            zeroGradient;
+    }
+
+    walls
+    {
+        type            fixedValue;
+        value           uniform 400;
+    }
+
+    symmetry
+    {
+        type            symmetryPlane;
+    }
+
+    frontAndBack
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/0/U b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/0/U
new file mode 100644
index 0000000000000000000000000000000000000000..b6c4c172b85c40b8cd9fab0b47b98f50ff1d83ac
--- /dev/null
+++ b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/0/U
@@ -0,0 +1,50 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volVectorField;
+    location    "0";
+    object      U;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -1 0 0 0 0];
+
+internalField   uniform (0 0 0);
+
+boundaryField
+{
+    top
+    {
+        type            fixedValue;
+        value           uniform (0 0 0);
+    }
+    bottom
+    {
+        type            fixedValue;
+        value           uniform (0 0 0);
+    }
+    walls
+    {
+        type            fixedValue;
+        value           uniform (0 0 0);
+    }
+    symmetry
+    {
+        type            symmetryPlane;
+    }
+    frontAndBack
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/0/epsilon b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/0/epsilon
new file mode 100644
index 0000000000000000000000000000000000000000..9fcf588c0c292537815ea7ef2c72563a85a14851
--- /dev/null
+++ b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/0/epsilon
@@ -0,0 +1,50 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      epsilon;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 2 -3 0 0 0 0];
+
+internalField   uniform 5390.5;
+
+boundaryField
+{
+    top
+    {
+        type            compressible::epsilonWallFunction;
+        value           uniform 5390.5;
+    }
+    bottom
+    {
+        type            compressible::epsilonWallFunction;
+        value           uniform 5390.5;
+    }
+    walls
+    {
+        type            compressible::epsilonWallFunction;
+        value           uniform 5390.5;
+    }
+    symmetry
+    {
+        type            symmetryPlane;
+    }
+    frontAndBack
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/0/k b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/0/k
new file mode 100644
index 0000000000000000000000000000000000000000..9abb57fdb013a1d9dd1ac7859f9554dc0c642b71
--- /dev/null
+++ b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/0/k
@@ -0,0 +1,50 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      k;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 2 -2 0 0 0 0];
+
+internalField   uniform 37.5;
+
+boundaryField
+{
+    top
+    {
+        type            compressible::kQRWallFunction;
+        value           uniform 37.5;
+    }
+    bottom
+    {
+        type            compressible::kQRWallFunction;
+        value           uniform 37.5;
+    }
+    walls
+    {
+        type            compressible::kQRWallFunction;
+        value           uniform 37.5;
+    }
+    symmetry
+    {
+        type            symmetryPlane;
+    }
+    frontAndBack
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/0/p b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/0/p
new file mode 100644
index 0000000000000000000000000000000000000000..55edbea3d6a520edbeac996c3f63849072fc68b9
--- /dev/null
+++ b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/0/p
@@ -0,0 +1,2551 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      p;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -1 -2 0 0 0 0];
+
+internalField   nonuniform List<scalar>
+2500
+(
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+100000
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+5e+05
+)
+;
+
+boundaryField
+{
+    top
+    {
+        type            zeroGradient;
+    }
+    bottom
+    {
+        type            zeroGradient;
+    }
+    walls
+    {
+        type            zeroGradient;
+    }
+    symmetry
+    {
+        type            symmetryPlane;
+    }
+    frontAndBack
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/0/p.org b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/0/p.org
new file mode 100644
index 0000000000000000000000000000000000000000..e716bc595b57c9309c03f85c8f87d57b8abf2022
--- /dev/null
+++ b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/0/p.org
@@ -0,0 +1,51 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      p;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -1 -2 0 0 0 0];
+
+internalField   uniform 100000;
+
+boundaryField
+{
+    top
+    {
+        type            zeroGradient;
+    }
+
+    bottom
+    {
+        type            zeroGradient;
+    }
+
+    walls
+    {
+        type            zeroGradient;
+    }
+
+    symmetry
+    {
+        type            symmetryPlane;
+    }
+
+    frontAndBack
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/chemkin/chem.inp b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/chemkin/chem.inp
new file mode 100644
index 0000000000000000000000000000000000000000..0e2a2580cac2df2a45ae23f51fd88749d506f2f3
--- /dev/null
+++ b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/chemkin/chem.inp
@@ -0,0 +1,11 @@
+ELEMENTS
+O  H  C  N
+END
+SPECIES
+N2  O2 CH4  H2  CO2 H2O
+END
+REACTIONS
+ CH4  + 2   O2 => CO2 + 2 H2O 7.000E+12  0.00  20000
+ H2   + 0.5 O2 => H2O         1.500E+14  0.00  20000
+
+END
diff --git a/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/chemkin/foam.dat b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/chemkin/foam.dat
new file mode 100644
index 0000000000000000000000000000000000000000..b3a1716ea5ce4bae7365586f328a2bfb0401d95e
--- /dev/null
+++ b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/chemkin/foam.dat
@@ -0,0 +1,32 @@
+(
+CO2 CO2	1	44.01
+    0	5000	1000
+    3.85746 0.00441437 -2.21481e-06 5.2349e-10 -4.72084e-14 -48759.2 2.27164
+    2.35677 0.0089846 -7.12356e-06 2.45919e-09 -1.437e-13 -48372 9.90105
+	1.67212e-06	170.672
+CH4 CH4	1	16.043
+    0	5000	1000
+    0.0748515 0.0133909 -5.73286e-06 1.22293e-09 -1.01815e-13 -9468.34 18.4373
+    5.14988 -0.013671 4.91801e-05 -4.84743e-08 1.66694e-11 -10246.6 -4.6413
+	1.67212e-06	170.672
+H2 H2	1	2.01594
+    0	5000	1000
+    3.33728 -4.94025e-05 4.99457e-07 -1.79566e-10 2.00255e-14 -950.159 -3.20502
+    2.34433 0.00798052 -1.94782e-05 2.01572e-08 -7.37612e-12 -917.935 0.68301
+	1.67212e-06	170.672
+H2O H2O	1	18.0153
+    0	5000	1000
+    3.03399 0.00217692 -1.64073e-07 -9.7042e-11 1.68201e-14 -30004.3 4.96677
+    4.19864 -0.00203643 6.5204e-06 -5.48797e-09 1.77198e-12 -30293.7 -0.849032
+	1.67212e-06	170.672
+O2 O2	1	31.9988
+    0	5000	1000
+    3.28254 0.00148309 -7.57967e-07 2.09471e-10 -2.16718e-14 -1088.46 5.45323
+    3.78246 -0.00299673 9.8473e-06 -9.6813e-09 3.24373e-12 -1063.94 3.65768
+	1.67212e-06	170.672
+N2 N2	1	28.0134
+    0	5000	1000
+    2.92664 0.00148798 -5.68476e-07 1.0097e-10 -6.75335e-15 -922.798 5.98053
+    3.29868 0.00140824 -3.96322e-06 5.64152e-09 -2.44485e-12 -1020.9 3.95037
+	1.67212e-06	170.672
+)
diff --git a/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/chemkin/foam.inp b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/chemkin/foam.inp
new file mode 100644
index 0000000000000000000000000000000000000000..9473b7e8fabb566b85f949b468c737844f9318d9
--- /dev/null
+++ b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/chemkin/foam.inp
@@ -0,0 +1,22 @@
+species
+6
+(
+N2
+O2
+CH4
+H2
+CO2
+H2O
+)
+;
+
+reactions
+2
+(
+irreversibleArrheniusReaction
+    CH4 + 2O2^1.0 = CO2 + 2H2O^1.0
+    (7e+06 0 10063.8)
+irreversibleArrheniusReaction
+    H2 + 0.5O2^1.0 = H2O
+    (4.74342e+12 0 10063.8)
+);
diff --git a/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/chemkin/therm.dat b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/chemkin/therm.dat
new file mode 100644
index 0000000000000000000000000000000000000000..20792659cfd9fce124c0c83f297c356c811258f2
--- /dev/null
+++ b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/chemkin/therm.dat
@@ -0,0 +1,3283 @@
+THERMO ALL
+   200.000  1000.000  5000.000
+(CH2O)3            70590C   3H   6O   3     G  0200.00   4000.00  1500.00      1
+ 0.01913678E+03 0.08578044E-01-0.08882060E-05-0.03574819E-08 0.06605143E-12    2
+-0.06560876E+06-0.08432507E+03-0.04662286E+02 0.06091547E+00-0.04710536E-03    3
+ 0.01968843E-06-0.03563271E-10-0.05665404E+06 0.04525265E+03                   4
+(CH3)2SICH2        61991H   8C   3SI  1     G  0200.00   2500.00  1500.00      1
+ 0.01547852E+03 0.01065700E+00-0.01234345E-05-0.01293352E-07 0.02528715E-11    2
+-0.06693076E+04-0.05358884E+03 0.02027522E+02 0.04408673E+00-0.03370024E-03    3
+ 0.01484466E-06-0.02830898E-10 0.03931454E+05 0.01815821E+03                   4
+AL                 62987AL  1               G  0200.00   5000.00  0600.00      1
+ 0.02559589E+02-0.01063224E-02 0.07202828E-06-0.02121105E-09 0.02289429E-13    2
+ 0.03890214E+06 0.05234522E+02 0.02736825E+02-0.05912374E-02-0.04033938E-05    3
+ 0.02322343E-07-0.01705599E-10 0.03886795E+06 0.04363880E+02                   4
+AL2H6              62987AL  2H   6          G  0200.00   1500.00  0600.00      1
+ 0.02634884E+02 0.02135952E+00 0.03154151E-05-0.07684674E-07 0.02335832E-10    2
+ 0.08871346E+05 0.09827515E+02-0.06800681E+02 0.05080744E+00 0.01039747E-03    3
+-0.01119582E-05 0.08459155E-09 0.01060537E+06 0.05554526E+03                   4
+AL2ME6             62987AL  2C   6H  18     G  0200.00   1500.00  0600.00      1
+ 0.01773147E+03 0.04935747E+00 0.01196854E-04-0.01639826E-06 0.04890867E-10    2
+-0.03855560E+06-0.05053298E+03-0.07159750E+01 0.01067109E+01 0.02117605E-03    3
+-0.02193212E-05 0.01644144E-08-0.03515546E+06 0.03890763E+03                   4
+ALAS               62987AL  1AS  1          G  0200.00   1500.00  0600.00      1
+ 0.04790027E+02-0.01908226E-03-0.01983390E-05 0.02239358E-08-0.06904706E-12    2
+ 0.05259290E+06 0.03259703E+02 0.05047764E+02-0.06419947E-02-0.01432071E-04    3
+ 0.04754391E-07-0.03297621E-10 0.05254264E+06 0.01985206E+02                   4
+ALH                62987AL  1H   1          G  0200.00   5000.00  1000.00      1
+ 0.03392644E+02 0.01215399E-01-0.04676595E-05 0.08691625E-09-0.06022669E-13    2
+ 0.03006845E+06 0.02758899E+02 0.03071503E+02 0.02165549E-01-0.03275638E-04    3
+ 0.04136984E-07-0.01877121E-10 0.03021221E+06 0.04548855E+02                   4
+ALH2               62987AL  1H   2          G  0200.00   1500.00  0600.00      1
+ 0.04486543E+02 0.03128832E-01-0.01969438E-05-0.01016030E-07 0.03497468E-11    2
+ 0.01960959E+06 0.08167897E+01 0.02442137E+02 0.09915913E-01 0.02471083E-05    3
+-0.02119583E-06 0.01710234E-09 0.01997588E+06 0.01065270E+03                   4
+ALH3               62987AL  1H   3          G  0200.00   1500.00  0600.00      1
+ 0.04186838E+02 0.06159249E-01-0.03877593E-06-0.02061928E-07 0.06600276E-11    2
+ 0.07908079E+05 0.05134396E+01 0.01008323E+02 0.01640324E+00 0.01976746E-04    3
+-0.03528558E-06 0.02753378E-09 0.08484656E+05 0.01585838E+03                   4
+ALME               62987AL  1C   1H   3     G  0200.00   1500.00  0600.00      1
+ 0.04662737E+02 0.07097939E-01 0.02520013E-05-0.02114863E-07 0.06097489E-11    2
+ 0.08203228E+05 0.01769245E+02 0.02664176E+02 0.01324914E+00 0.02525848E-04    3
+-0.02394396E-06 0.01761855E-09 0.08574173E+05 0.01147449E+03                   4
+ALME2              62987AL  1C   2H   6     G  0200.00   1500.00  0600.00      1
+ 0.06481282E+02 0.01474605E+00 0.05816529E-05-0.04621347E-07 0.01396041E-10    2
+ 0.03745072E+05-0.02603326E+02 0.09494573E+01 0.03206354E+00 0.06134021E-04    3
+-0.06500042E-06 0.04911485E-09 0.04761408E+05 0.02419465E+03                   4
+ALME3              62987AL  1C   3H   9     G  0200.00   1500.00  0600.00      1
+ 0.06654948E+02 0.02455144E+00 0.01176575E-04-0.07815023E-07 0.02255622E-10    2
+-0.01340952E+06-0.03454481E+02-0.07027567E+01 0.04682764E+00 0.01149903E-03    3
+-0.09160441E-06 0.06687294E-09-0.01203799E+06 0.03232771E+03                   4
+AR                120186AR  1               G  0200.00   5000.00  1000.00      1
+ 0.02500000E+02 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00    2
+-0.07453750E+04 0.04366001E+02 0.02500000E+02 0.00000000E+00 0.00000000E+00    3
+ 0.00000000E+00 0.00000000E+00-0.07453750E+04 0.04366001E+02                   4
+AR+               121286AR  1E  -1          G  0200.00   5000.00  1000.00      1
+ 0.02864864E+02-0.01203573E-02-0.01065199E-06 0.09074839E-10-0.09623876E-14    2
+ 0.01827230E+07 0.03543585E+02 0.02301341E+02 0.08035529E-02-0.01758806E-05    3
+-0.01781093E-08-0.08937268E-13 0.01829281E+07 0.06659358E+02                   4
+AS                 62987AS  1               G  0200.00   1500.00  0600.00      1
+ 0.02617011E+02 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00    2
+ 0.03720455E+06 0.06995524E+02 0.02617011E+02 0.00000000E+00 0.00000000E+00    3
+ 0.00000000E+00 0.00000000E+00 0.03720455E+06 0.06995524E+02                   4
+AS2                62987AS  2               G  0200.00   1500.00  0600.00      1
+ 0.04394201E+02 0.05389968E-02-0.02379401E-05-0.06541924E-09 0.05184186E-12    2
+ 0.02235094E+06 0.04897919E+02 0.03682892E+02 0.03121811E-01-0.01074052E-04    3
+-0.05629472E-07 0.05178811E-10 0.02247356E+06 0.08283423E+02                   4
+AS3                62987AS  3               G  0200.00   1500.00  0600.00      1
+ 0.07404036E+02 0.07818426E-02-0.03918297E-05-0.05203629E-09 0.06291907E-12    2
+ 0.03063825E+06-0.03417324E+02 0.06403142E+02 0.04477099E-01-0.01866642E-04    3
+-0.07394750E-07 0.07012753E-10 0.03080965E+06 0.01337136E+02                   4
+AS4                62987AS  4               G  0200.00   1500.00  0600.00      1
+ 0.09695766E+02 0.01306258E-01-0.05519564E-05-0.02150874E-08 0.01457935E-11    2
+ 0.01571732E+06-0.01618870E+03 0.07853761E+02 0.07916509E-01-0.02329820E-04    3
+-0.01526312E-06 0.01377435E-09 0.01603629E+06-0.07409755E+02                   4
+ASALME             62987AS  1AL  1C   1H   3G  0200.00   1500.00  0600.00      1
+ 0.07127107E+02 0.07357864E-01 0.02300796E-06-0.02226399E-07 0.06927227E-11    2
+ 0.03273438E+06-0.01847179E+02 0.04053423E+02 0.01726125E+00 0.01833498E-04    3
+-0.03386953E-06 0.02626981E-09 0.03329309E+06 0.01299665E+03                   4
+ASALME2            62987AS  1AL  1C   2H   6G  0200.00   1500.00  0600.00      1
+ 0.09909938E+02 0.01463850E+00 0.04118731E-05-0.04444658E-07 0.01329501E-10    2
+ 0.02815111E+06-0.01523531E+03 0.04808530E+02 0.03067687E+00 0.05048001E-04    3
+-0.05908099E-06 0.04462290E-09 0.02908817E+06 0.09471621E+02                   4
+ASGAET             62987AS  1GA  1C   2H   5G  0200.00   1500.00  0600.00      1
+ 0.09081073E+02 0.01674632E+00 0.01283130E-05-0.05590436E-07 0.01781315E-10    2
+ 0.03807443E+06-0.09142782E+02 0.06364698E+01 0.04382467E+00 0.06144686E-04    3
+-0.09491641E-06 0.07374198E-09 0.03960893E+06 0.03164673E+03                   4
+ASGAET2            62987AS  1GA  1C   4H  10G  0200.00   1500.00  0600.00      1
+ 0.01032429E+03 0.03073571E+00 0.01086335E-04-0.09971949E-07 0.02945979E-10    2
+ 0.03039490E+06-0.01316402E+03-0.03539248E+01 0.06369772E+00 0.01359742E-03    3
+-0.01286142E-05 0.09572181E-09 0.03236903E+06 0.03865086E+03                   4
+ASGAME             62987AS  1GA  1C   1H   3G  0200.00   1500.00  0600.00      1
+ 0.07322183E+02 0.06995479E-01 0.01069351E-05-0.01995283E-07 0.06040446E-11    2
+ 0.03949449E+06-0.07416680E+01 0.04877266E+02 0.01482559E+00 0.01652124E-04    3
+-0.02712058E-06 0.02080196E-09 0.03994071E+06 0.01107670E+03                   4
+ASGAME2            62987AS  1GA  1C   2H   6G  0200.00   1500.00  0600.00      1
+ 0.09352436E+02 0.01504820E+00 0.05157975E-05-0.04553518E-07 0.01348763E-10    2
+ 0.03735856E+06-0.01218114E+03 0.04382076E+02 0.03056345E+00 0.05477067E-04    3
+-0.05834108E-06 0.04373509E-09 0.03827434E+06 0.01191111E+03                   4
+ASGAMEH            62987AS  1GA  1C   1H   4G  0200.00   1500.00  0600.00      1
+ 0.07842794E+02 0.09682097E-01 0.01060306E-05-0.02991402E-07 0.09382673E-11    2
+ 0.04435297E+06-0.05093455E+02 0.03585119E+02 0.02336317E+00 0.02873356E-04    3
+-0.04737895E-06 0.03674461E-09 0.04512703E+06 0.01547160E+03                   4
+ASH                62987AS  1H   1          G  0200.00   1500.00  0600.00      1
+ 0.03219848E+02 0.01001250E-01-0.04874997E-08-0.01107653E-08-0.09254321E-13    2
+ 0.03008176E+06 0.06647311E+02 0.03865843E+02-0.01157571E-01-0.03494372E-05    3
+ 0.07079686E-07-0.06014028E-10 0.02996829E+06 0.03549869E+02                   4
+ASH2               62987AS  1H   2          G  0200.00   1500.00  0600.00      1
+ 0.03428307E+02 0.03181140E-01 0.01460484E-05-0.07937145E-08 0.01694414E-11    2
+ 0.02010282E+06 0.02904703E+02 0.03778945E+02 0.01759233E-01 0.08070807E-05    3
+ 0.02358763E-07-0.03043521E-10 0.02004862E+06 0.01272974E+02                   4
+ASH3               62987AS  1H   3          G  0200.00   1500.00  0600.00      1
+ 0.04172022E+02 0.04371323E-01 0.02177574E-05-0.01183264E-07 0.04536374E-11    2
+ 0.06882916E+05 0.02803477E+02 0.09446356E+01 0.01508469E+00 0.01201696E-04    3
+-0.03397465E-06 0.02767656E-09 0.07459168E+05 0.01832268E+03                   4
+ASME               62987AS  1C   1H   3     G  0200.00   1500.00  0600.00      1
+ 0.04657260E+02 0.06976298E-01 0.02147557E-05-0.02101159E-07 0.06082150E-11    2
+ 0.02806423E+06 0.03409835E+02 0.02625270E+02 0.01325242E+00 0.02441628E-04    3
+-0.02419567E-06 0.01786944E-09 0.02844080E+06 0.01327336E+03                   4
+ASME2              62987AS  1C   2H   6     G  0200.00   1500.00  0600.00      1
+ 0.05981395E+02 0.01521284E+00 0.06993355E-05-0.04721619E-07 0.01369912E-10    2
+ 0.01467985E+06 0.01192741E+02 0.01390400E+02 0.02923331E+00 0.06598871E-04    3
+-0.05620560E-06 0.04130368E-09 0.01553302E+06 0.02349981E+03                   4
+ASME3              62987AS  1C   3H   9     G  0200.00   1500.00  0600.00      1
+ 0.06347764E+02 0.02466454E+00 0.01154629E-04-0.07877436E-07 0.02202225E-10    2
+-0.01617323E+05-0.06316786E+01 0.02667388E+01 0.04253171E+00 0.01165106E-03    3
+-0.07914706E-06 0.05603127E-09-0.04685540E+04 0.02904591E+03                   4
+BE                 81392BE  1               G  0200.00   5000.00  1000.00      1
+ 0.02380618E+02 0.02339856E-02-0.01453949E-05 0.03111727E-09-0.01072959E-13    2
+ 0.03868083E+06 0.02787792E+02 0.02403493E+02 0.06166087E-02-0.01321925E-04    3
+ 0.01144806E-07-0.03437304E-11 0.03864894E+06 0.02549853E+02                   4
+BE(S)              81392BE  1               S  0200.00   3000.00  1000.00      1
+ 0.01898768E+02 0.01629382E-01-0.03547406E-05 0.01247349E-08-0.01578507E-12    2
+-0.06527011E+04-0.01020412E+03-0.09092963E+01 0.01585668E+00-0.02624182E-03    3
+ 0.02044924E-06-0.05872448E-10-0.02390556E+04 0.02598871E+02                   4
+BE2SIO4(S)         81392BE  2O   4SI  1     S  0200.00   3000.00  1000.00      1
+ 0.01695617E+03 0.06266472E-01-0.02841325E-04 0.06379149E-08-0.04780890E-12    2
+-0.02614324E+07-0.09398438E+03-0.06380159E+02 0.09333352E+00-0.01415477E-02    3
+ 0.01101948E-05-0.03462902E-09-0.02558671E+07 0.02162977E+03                   4
+BE3B2O6(S)         81392B   2BE  3O   6     S  0200.00   3000.00  1000.00      1
+ 0.02640267E+03 0.01142674E+00-0.03773479E-04 0.04332047E-08 0.02356543E-12    2
+-0.03849576E+07-0.01487137E+04-0.05230657E+02 0.01105769E+01-0.01614054E-02    3
+ 0.01447797E-05-0.05420786E-09-0.03755957E+07 0.01490974E+03                   4
+BE3N2(A)           81392BE  3N   2          S  0200.00   3000.00  1000.00      1
+ 0.01097008E+03 0.06416846E-01-0.02938928E-04 0.04564651E-08-0.05509703E-13    2
+-0.07519767E+06-0.06231286E+03-0.08167547E+02 0.08515091E+00-0.01355569E-02    3
+ 0.01060406E-05-0.03256815E-09-0.07110460E+06 0.03040606E+03                   4
+BE3N2(L)           81392BE  3N   2          L  0200.00   4000.00  1000.00      1
+ 0.01610468E+03 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00    2
+-0.06338252E+06-0.08701469E+03 0.01610468E+03 0.00000000E+00 0.00000000E+00    3
+ 0.00000000E+00 0.00000000E+00-0.06338252E+06-0.08701468E+03                   4
+BEAL2O4(S)         81392AL  2BE  1O   4     S  0200.00   2400.00  1000.00      1
+ 0.01118219E+03 0.01677777E+00-0.06692989E-04-0.01497360E-07 0.01203700E-10    2
+-0.02810337E+07-0.06116527E+03-0.07257604E+02 0.01074554E+01-0.01713422E-02    3
+ 0.01295274E-05-0.03740965E-09-0.02780832E+07 0.02383770E+03                   4
+BEB2O4             81392B   2BE  1O   4     G  0200.00   5000.00  1000.00      1
+ 0.01266018E+03 0.06883210E-01-0.02963169E-04 0.05694789E-08-0.04050458E-12    2
+-0.01672990E+07-0.03636876E+03 0.04012008E+02 0.03052847E+00-0.02571938E-03    3
+ 0.09738810E-07-0.01450712E-10-0.01648983E+07 0.08399628E+02                   4
+BEBO2              81392B   1BE  1O   2     G  0200.00   5000.00  1000.00      1
+ 0.06831273E+02 0.03424464E-01-0.01471236E-04 0.02825118E-08-0.02008790E-12    2
+-0.06047559E+06-0.08730609E+02 0.02426203E+02 0.01572415E+00-0.01309160E-03    3
+ 0.04244447E-07-0.02562806E-11-0.05929016E+06 0.01394744E+03                   4
+BEBR               81392BE  1BR  1          G  0200.00   5000.00  1000.00      1
+ 0.04166357E+02 0.04424462E-02-0.01713095E-05 0.03185381E-09-0.01964221E-13    2
+ 0.01313080E+06 0.03473875E+02 0.03178756E+02 0.03144181E-01-0.01989189E-04    3
+-0.04871910E-08 0.06208255E-11 0.01337870E+06 0.08520506E+02                   4
+BEBR2              81392BE  1BR  2          G  0200.00   5000.00  1000.00      1
+ 0.06814040E+02 0.07848450E-02-0.03497501E-05 0.06885841E-09-0.04984129E-13    2
+-0.02974764E+06-0.06362110E+02 0.05216331E+02 0.05128972E-01-0.03678726E-04    3
+ 0.08525872E-09 0.05611721E-11-0.02932967E+06 0.01847829E+02                   4
+BEBR2(S)           81392BE  1BR  2          S  0200.00   1500.00  1000.00      1
+ 0.07680161E+02 0.03193456E-01-0.02439097E-05-0.09487536E-08 0.03902210E-11    2
+-0.04528092E+06-0.03282152E+03 0.05659917E+02 0.08805599E-01-0.02790316E-04    3
+-0.04611400E-07 0.03007373E-10-0.04482571E+06-0.02263852E+03                   4
+BECL               81392BE  1CL  1          G  0200.00   5000.00  1000.00      1
+ 0.04072243E+02 0.05328307E-02-0.02146892E-05 0.04097687E-09-0.02774848E-13    2
+ 0.05990792E+05 0.02639872E+02 0.03006275E+02 0.03385550E-01-0.02274674E-04    3
+-0.01333438E-08 0.04447782E-11 0.06271131E+05 0.08126810E+02                   4
+BECL2              81392BE  1CL  2          G  0200.00   5000.00  1000.00      1
+ 0.06656109E+02 0.09583935E-02-0.04248637E-05 0.08333911E-09-0.06016211E-13    2
+-0.04547842E+06-0.08159565E+02 0.04835084E+02 0.05899051E-01-0.04307799E-04    3
+ 0.03113267E-08 0.05292957E-11-0.04499748E+06 0.01210616E+02                   4
+BECL2(A)           81392BE  1CL  2          S  0200.00   1500.00  1000.00      1
+ 0.08380054E+02 0.02572312E-01-0.07554892E-05-0.02368242E-08 0.01042547E-11    2
+-0.06177281E+06-0.03886076E+03 0.08074927E+01 0.03830225E+00-0.06255340E-03    3
+ 0.04645940E-06-0.01295143E-09-0.06052883E+06-0.03683825E+02                   4
+BECL2(B)           81392BE  1CL  2          S  0200.00   1500.00  1000.00      1
+ 0.07791771E+02 0.02945389E-01-0.04237093E-05-0.05339604E-08 0.01505044E-11    2
+-0.06231958E+06-0.03656698E+03 0.03004424E+02 0.02353211E+00-0.03553037E-03    3
+ 0.02706855E-06-0.08144728E-10-0.06136495E+06-0.01365758E+03                   4
+BECLF              81392BE  1CL  1F   1     G  0200.00   5000.00  1000.00      1
+ 0.06393787E+02 0.01234948E-01-0.05412476E-05 0.01053150E-08-0.07557553E-13    2
+-0.07104831E+06-0.07478512E+02 0.04405415E+02 0.06642228E-01-0.05154354E-04    3
+ 0.01063175E-07 0.02287810E-11-0.07051262E+06 0.02777586E+02                   4
+BEF                81392BE  1F   1          G  0200.00   5000.00  1000.00      1
+ 0.03741370E+02 0.08524818E-02-0.03436428E-05 0.06466099E-09-0.04475089E-13    2
+-0.02167667E+06 0.02968223E+02 0.02905108E+02 0.02952099E-01-0.02747617E-04    3
+ 0.01918800E-07-0.07179964E-11-0.02140972E+06 0.07407617E+02                   4
+BEF2               81392BE  1F   2          G  0200.00   5000.00  1000.00      1
+ 0.06008875E+02 0.01636431E-01-0.07094651E-05 0.01370220E-08-0.09780462E-13    2
+-0.09777056E+06-0.07723693E+02 0.03801759E+02 0.07737988E-01-0.06427724E-04    3
+ 0.02097328E-07-0.01462695E-11-0.09717092E+06 0.03660784E+02                   4
+BEF2(L)            81392BE  1F   2          L  0200.00   2000.00  1000.00      1
+ 0.05976585E+02 0.04777009E-01-0.05064131E-05 0.05012404E-09 0.08570416E-13    2
+-0.01251277E+07-0.02873833E+03-0.05587355E+01 0.03423905E+00-0.05210078E-03    3
+ 0.04099400E-06-0.01226767E-09-0.01239060E+07 0.02162308E+02                   4
+BEH                81392BE  1H   1          G  0200.00   5000.00  1000.00      1
+ 0.03103757E+02 0.01443026E-01-0.05486383E-05 0.09992518E-09-0.06823073E-13    2
+ 0.03762032E+06 0.03113887E+02 0.03220220E+02 0.01660638E-01-0.03759811E-04    3
+ 0.05403578E-07-0.02433378E-10 0.03762484E+06 0.02536116E+02                   4
+BEH+               81392BE  1H   1E  -1     G  0200.00   5000.00  1000.00      1
+ 0.02935026E+02 0.01642881E-01-0.06606950E-05 0.01253854E-08-0.08322438E-13    2
+ 0.01381605E+07 0.03342443E+02 0.03203174E+02 0.01918095E-01-0.04743515E-04    3
+ 0.06392785E-07-0.02736265E-10 0.01380944E+07 0.01849186E+02                   4
+BEH2               81392BE  1H   2          G  0200.00   5000.00  1000.00      1
+ 0.03274395E+02 0.04312822E-01-0.01774785E-04 0.03298131E-08-0.02286391E-12    2
+ 0.01367913E+06 0.03758700E+01 0.01761472E+02 0.08827701E-01-0.01241923E-03    3
+ 0.01412574E-06-0.06176309E-10 0.01426447E+06 0.08573833E+02                   4
+BEH2O2             81392BE  1H   2O   2     G  0200.00   5000.00  1000.00      1
+ 0.07694718E+02 0.04893975E-01-0.01780895E-04 0.03055611E-08-0.02009121E-12    2
+-0.08403520E+06-0.01751820E+03 0.03118833E+02 0.01997183E+00-0.01673101E-03    3
+ 0.03275766E-07 0.01457848E-10-0.08305301E+06 0.05128545E+02                   4
+BEH2O2(A)          81392BE  1H   2O   2     S  0200.00   1000.00  1000.00      1
+ 0.01357669E+03 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00    2
+-0.01138925E+07-0.07369071E+03-0.07121292E+02 0.08378375E+00-0.01435144E-02    3
+ 0.01164084E-05-0.03597983E-09-0.01091544E+07 0.02745148E+03                   4
+BEH2O2(B)          81392BE  1H   2O   2     S  0200.00   1000.00  1000.00      1
+ 0.01357669E+03 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00    2
+-0.01142447E+07-0.07409333E+03-0.07121292E+02 0.08378375E+00-0.01435144E-02    3
+ 0.01164084E-05-0.03597983E-09-0.01095066E+07 0.02704887E+03                   4
+BEI                81392BE  1I   1          G  0200.00   5000.00  1000.00      1
+ 0.04226574E+02 0.03948427E-02-0.01549696E-05 0.03023851E-09-0.01932301E-13    2
+ 0.01912832E+06 0.04229493E+02 0.03358791E+02 0.02864276E-01-0.01889889E-04    3
+-0.04370942E-08 0.05986692E-11 0.01933641E+06 0.08627578E+02                   4
+BEI2               81392BE  1I   2          G  0200.00   5000.00  1000.00      1
+ 0.06974217E+02 0.06094573E-02-0.02739783E-05 0.05428767E-09-0.03948833E-13    2
+-0.09890086E+05-0.05063732E+02 0.05564008E+02 0.04472664E-01-0.03090745E-04    3
+-0.02609722E-08 0.06750777E-11-0.09529549E+05 0.02158152E+02                   4
+BEI2(S)            81392BE  1I   2          S  0200.00   1500.00  1000.00      1
+ 0.08868316E+02 0.02591978E-01-0.07796846E-05-0.02236952E-08 0.01016032E-11    2
+-0.02556556E+06-0.03709859E+03 0.01301872E+02 0.03830115E+00-0.06255080E-03    3
+ 0.04645675E-06-0.01295046E-09-0.02432303E+06-0.01952190E+02                   4
+BEN                81392BE  1N   1          G  0200.00   5000.00  1000.00      1
+ 0.03799137E+02 0.08135072E-02-0.03271826E-05 0.06267597E-09-0.04443547E-13    2
+ 0.05006582E+06 0.03013958E+02 0.02880282E+02 0.03157848E-01-0.02749300E-04    3
+ 0.01549304E-07-0.04944407E-11 0.05034622E+06 0.07854857E+02                   4
+BEO(A)             81392BE  1O   1          S  0200.00   3500.00  1000.00      1
+ 0.04606101E+02 0.01465013E-01-0.09316989E-06-0.08839902E-09 0.01840163E-12    2
+-0.07492927E+06-0.02579358E+03-0.01187545E+01 0.01231168E+00-0.02298405E-04    3
+-0.09318502E-07 0.05331928E-10-0.07364786E+06-0.01151163E+02                   4
+BEO(B)             81392BE  1O   1          S  0200.00   3500.00  1000.00      1
+ 0.04606101E+02 0.01465013E-01-0.09316989E-06-0.08839902E-09 0.01840163E-12    2
+-0.07412403E+06-0.02545418E+03-0.01187545E+01 0.01231168E+00-0.02298405E-04    3
+-0.09318502E-07 0.05331928E-10-0.07284262E+06-0.08117651E+01                   4
+BEOH               81392BE  1H   1O   1     G  0200.00   5000.00  1000.00      1
+ 0.04580703E+02 0.02444079E-01-0.08794693E-05 0.01484750E-08-0.09530468E-13    2
+-0.01534682E+06-0.01819725E+02 0.02577868E+02 0.08977628E-01-0.07867956E-04    3
+ 0.02536139E-07 0.06057864E-12-0.01489220E+06 0.08162645E+02                   4
+BES(S)             81392BE  1S   1          S  0200.00   3000.00  1000.00      1
+ 0.04944107E+02 0.03098929E-01-0.01308985E-04 0.02564670E-08-0.01377673E-12    2
+-0.03004408E+06-0.02521191E+03-0.03045166E+02 0.03934537E+00-0.06572406E-03    3
+ 0.05230436E-06-0.01590377E-09-0.02854032E+06 0.01256033E+03                   4
+BESO4(A)           81392BE  1O   4S   1     S  0200.00   2200.00  1000.00      1
+ 0.02081235E+01 0.03035540E+00-0.07769396E-04-0.02942517E-07 0.01112249E-10    2
+-0.01455278E+07 0.02609183E+01-0.08960041E+02 0.01179726E+01-0.02438390E-02    3
+ 0.02430177E-05-0.08722741E-09-0.01453005E+07 0.03410812E+03                   4
+BESO4(B)           81392BE  1O   4S   1     S  0200.00   2200.00  1000.00      1
+ 0.02081235E+01 0.03035540E+00-0.07769396E-04-0.02942517E-07 0.01112249E-10    2
+-0.01453939E+07 0.04157230E+01-0.08960041E+02 0.01179726E+01-0.02438390E-02    3
+ 0.02430177E-05-0.08722741E-09-0.01451667E+07 0.03426292E+03                   4
+BESO4(GAM)         81392BE  1O   4S   1     S  0200.00   2200.00  1000.00      1
+ 0.02081235E+01 0.03035540E+00-0.07769396E-04-0.02942517E-07 0.01112249E-10    2
+-0.01430422E+07 0.03005051E+02-0.08960041E+02 0.01179726E+01-0.02438390E-02    3
+ 0.02430177E-05-0.08722741E-09-0.01428148E+07 0.03685225E+03                   4
+C                 121086C   1               G  0200.00   5000.00  1000.00      1
+ 0.02602087E+02-0.01787081E-02 0.09087041E-06-0.01149933E-09 0.03310844E-14    2
+ 0.08542154E+06 0.04195177E+02 0.02498585E+02 0.08085777E-03-0.02697697E-05    3
+ 0.03040729E-08-0.01106652E-11 0.08545878E+06 0.04753459E+02                   4
+C(S)              121286C   1               S  0200.00   5000.00  1000.00      1
+ 0.01490166E+02 0.01662126E-01-0.06687204E-05 0.01290880E-08-0.09205334E-13    2
+-0.07074019E+04-0.08717785E+02-0.06705661E+01 0.07181500E-01-0.05632921E-04    3
+ 0.02142299E-07-0.04168562E-11-0.07339498E+03 0.02601596E+02                   4
+C+                120186C   1E  -1          G  0200.00   5000.00  1000.00      1
+ 0.02511827E+02-0.01735978E-03 0.09504268E-07-0.02218852E-10 0.01862189E-14    2
+ 0.02166772E+07 0.04286130E+02 0.02595384E+02-0.04068665E-02 0.06892367E-05    3
+-0.05266488E-08 0.01508338E-11 0.02166628E+07 0.03895730E+02                   4
+C-                121686C   1E   1          G  0200.00   5000.00  1000.00      1
+ 0.02990221E+02-0.09184596E-02 0.05055560E-05-0.07703410E-09 0.03163271E-13    2
+ 0.06983931E+06 0.01259453E+02 0.02783903E+02-0.01774288E-01 0.03696761E-04    3
+-0.03066693E-07 0.08637622E-11 0.06998511E+06 0.02726281E+02                   4
+C2                121286C   2               G  0200.00   5000.00  1000.00      1
+ 0.04135979E+02 0.06531618E-03 0.01837099E-05-0.05295085E-09 0.04712137E-13    2
+ 0.09967272E+06 0.07472923E+01 0.06996045E+02-0.07400602E-01 0.03234704E-04    3
+ 0.04802535E-07-0.03295918E-10 0.09897487E+06-0.01386227E+03                   4
+C2-               121286C   2E   1          G  0200.00   5000.00  1000.00      1
+ 0.03796891E+02 0.02530050E-02 0.09709118E-06-0.01614804E-09-0.03212893E-15    2
+ 0.05207981E+06 0.01658147E+02 0.03468012E+02-0.02352875E-02 0.01243912E-04    3
+ 0.04705961E-08-0.08164274E-11 0.05231215E+06 0.03886699E+02                   4
+C2CL3              40992C   2CL  3          G  0200.00   4000.00  1500.00      1
+ 0.01183853E+03 0.09460851E-02-0.02920870E-05 0.03847024E-09-0.01539560E-13    2
+ 0.02313143E+06-0.02891445E+03 0.04808647E+02 0.02212948E+00-0.02548847E-03    3
+ 0.01372083E-06-0.02812663E-10 0.02514353E+06 0.07232629E+02                   4
+C2CL5              40992C   2CL  5          G  0200.00   4000.00  1500.00      1
+ 0.01775107E+03 0.09220800E-02-0.04852694E-05 0.01190373E-08-0.01100446E-12    2
+-0.02402768E+05-0.05545676E+03 0.06414346E+02 0.03867367E+00-0.04857935E-03    3
+ 0.02734513E-06-0.05732891E-10 0.04697039E+04 0.01542036E+02                   4
+C2CL6              40992C   2CL  6          G  0200.00   4000.00  1500.00      1
+ 0.02021422E+03 0.01757648E-01-0.05881040E-05 0.08029739E-09-0.03958238E-13    2
+-0.02340156E+06-0.07096011E+03 0.07492710E+02 0.04318468E+00-0.05275048E-03    3
+ 0.02947143E-06-0.06176554E-10-0.02006555E+06-0.06635582E+02                   4
+C2F6               82489C   2F   6          G  0200.00   5000.00  1000.00      1
+ 0.01602057E+03 0.06273007E-01-0.02797778E-04 0.05517547E-08-0.04004651E-12    2
+-0.01675654E+07-0.05519459E+03 0.03577448E+02 0.03913670E+00-0.02714862E-03    3
+ 0.04348459E-08 0.04007135E-10-0.01642174E+07 0.09098384E+02                   4
+C2H                81193C   2H   1          G  0200.00   4000.00  1000.00      1
+ 0.03986367E+02 0.03143123E-01-0.01267243E-04 0.02924363E-08-0.02716320E-12    2
+ 0.06655884E+06 0.01191063E+02 0.02737704E+02 0.08048446E-01-0.09244310E-04    3
+ 0.06525259E-07-0.01939580E-10 0.06683813E+06 0.07300220E+02                   4
+C2H2              121386C   2H   2          G  0200.00   5000.00  1000.00      1
+ 0.04436770E+02 0.05376039E-01-0.01912817E-04 0.03286379E-08-0.02156710E-12    2
+ 0.02566766E+06-0.02800338E+02 0.02013562E+02 0.01519045E+00-0.01616319E-03    3
+ 0.09078992E-07-0.01912746E-10 0.02612444E+06 0.08805378E+02                   4
+C2H3               12787C   2H   3          G  0200.00   5000.00  1000.00      1
+ 0.05933468E+02 0.04017746E-01-0.03966740E-05-0.01441267E-08 0.02378644E-12    2
+ 0.03185435E+06-0.08530313E+02 0.02459276E+02 0.07371476E-01 0.02109873E-04    3
+-0.01321642E-07-0.01184784E-10 0.03335225E+06 0.01155620E+03                   4
+C2H4              121286C   2H   4          G  0200.00   5000.00  1000.00      1
+ 0.03528419E+02 0.01148518E+00-0.04418385E-04 0.07844601E-08-0.05266848E-12    2
+ 0.04428289E+05 0.02230389E+02-0.08614880E+01 0.02796163E+00-0.03388677E-03    3
+ 0.02785152E-06-0.09737879E-10 0.05573046E+05 0.02421149E+03                   4
+C2H5               12387C   2H   5          G  0200.00   5000.00  1000.00      1
+ 0.07190480E+02 0.06484077E-01-0.06428065E-05-0.02347879E-08 0.03880877E-12    2
+ 0.01067455E+06-0.01478089E+03 0.02690702E+02 0.08719133E-01 0.04419839E-04    3
+ 0.09338703E-08-0.03927773E-10 0.01287040E+06 0.01213820E+03                   4
+C2H6              121686C   2H   6          G  0200.00   4000.00  1000.00      1
+ 0.04825938E+02 0.01384043E+00-0.04557259E-04 0.06724967E-08-0.03598161E-12    2
+-0.01271779E+06-0.05239507E+02 0.01462539E+02 0.01549467E+00 0.05780507E-04    3
+-0.01257832E-06 0.04586267E-10-0.01123918E+06 0.01443229E+03                   4
+C2HCL             112989C   2H   1CL  1     G  0200.00   5000.00  1000.00      1
+ 0.06295372E+02 0.03883113E-01-0.01506049E-04 0.02700003E-08-0.01830213E-12    2
+ 0.02357279E+06-0.08137063E+02 0.03618443E+02 0.01331979E+00-0.01321822E-03    3
+ 0.06092024E-07-0.08879026E-11 0.02415385E+06 0.05050645E+02                   4
+C2HCL5             40992H   1C   2CL  5     G  0200.00   4000.00  1500.00      1
+ 0.01897802E+03 0.02244275E-01-0.05864788E-05 0.02733950E-09 0.04934135E-13    2
+-0.02494887E+06-0.06578714E+03 0.05356044E+02 0.04176390E+00-0.04710787E-03    3
+ 0.02550758E-06-0.05324478E-10-0.02079330E+06 0.04970258E+02                   4
+C2N               121286C   2N   1          G  0200.00   5000.00  1000.00      1
+ 0.06151561E+02 0.01511650E-01-0.06629362E-05 0.01286148E-08-0.09160830E-13    2
+ 0.06484318E+06-0.08177850E+02 0.03498544E+02 0.08554433E-01-0.06288697E-04    3
+ 0.08638478E-08 0.04915996E-11 0.06556611E+06 0.05548374E+02                   4
+C2N2              121286C   2N   2          G  0200.00   5000.00  1000.00      1
+ 0.06548003E+02 0.03984707E-01-0.01634216E-04 0.03038597E-08-0.02111069E-12    2
+ 0.03490716E+06-0.09735790E+02 0.04265459E+02 0.01192257E+00-0.01342014E-03    3
+ 0.09192297E-07-0.02778942E-10 0.03547888E+06 0.01713212E+02                   4
+C2O               121286C   2O   1          G  0200.00   5000.00  1000.00      1
+ 0.04849809E+02 0.02947585E-01-0.01090729E-04 0.01792562E-08-0.01115758E-12    2
+ 0.03282055E+06-0.06453226E+01 0.03368851E+02 0.08241803E-01-0.08765145E-04    3
+ 0.05569262E-07-0.01540009E-10 0.03317081E+06 0.06713314E+02                   4
+C3                121286C   3               G  0200.00   5000.00  1000.00      1
+ 0.03803710E+02 0.02253567E-01-0.07704535E-05 0.01316294E-08-0.08694264E-13    2
+ 0.09736135E+06 0.06128063E+02 0.04345528E+02 0.01264466E-01-0.04652557E-04    3
+ 0.08695856E-07-0.04243536E-10 0.09731403E+06 0.03519437E+02                   4
+C3H2              102193H   2C   3          G  0150.00   4000.00  1000.00      1
+ 0.07670981E+02 0.02748749E-01-0.04370943E-05-0.06455599E-09 0.01663887E-12    2
+ 0.06259722E+06-0.01236890E+03 0.03166714E+02 0.02482572E+00-0.04591637E-03    3
+ 0.04268019E-06-0.01482152E-09 0.06350421E+06 0.08869446E+02                   4
+C3H2(S)           101993H   2C   3          G  0200.00   4000.00  1400.00      1
+ 0.08351312E+02 0.02672278E-01-0.02129404E-05-0.01478218E-08 0.02583689E-12    2
+ 0.06800690E+06-0.01950884E+03 0.04749475E+02 0.08520229E-01-0.01160268E-04    3
+-0.02494954E-07 0.09921004E-11 0.06939979E+06 0.05437792E+01                   4
+C3H4              101993H   4C   3          G  0200.00   4000.00  1400.00      1
+ 0.09776256E+02 0.05302138E-01-0.03701118E-05-0.03026386E-08 0.05089581E-12    2
+ 0.01954972E+06-0.03077061E+03 0.02539831E+02 0.01633437E+00-0.01764950E-04    3
+-0.04647365E-07 0.01729131E-10 0.02251243E+06 0.09935702E+02                   4
+C3H4C             101993H   4C   3          G  0200.00   4000.00  1400.00      1
+ 0.09708652E+02 0.05344939E-01-0.03953553E-05-0.03111764E-08 0.05369406E-12    2
+ 0.02967722E+06-0.03073273E+03 0.01056162E+02 0.01905236E+00-0.02317048E-04    3
+-0.05933690E-07 0.02307128E-10 0.03309110E+06 0.01761927E+03                   4
+C3H4P             101993H   4C   3          G  0200.00   4000.00  1400.00      1
+ 0.09768102E+02 0.05219151E-01-0.03753140E-05-0.02992191E-08 0.05107878E-12    2
+ 0.01860277E+06-0.03020678E+03 0.03029730E+02 0.01498961E+00-0.01398500E-04    3
+-0.03969619E-07 0.01388217E-10 0.02148408E+06 0.08004594E+02                   4
+C3H6              120186C   3H   6          G  0200.00   5000.00  1000.00      1
+ 0.06732257E+02 0.01490834E+00-0.04949899E-04 0.07212022E-08-0.03766204E-12    2
+-0.09235703E+04-0.01331335E+03 0.01493307E+02 0.02092518E+00 0.04486794E-04    3
+-0.01668912E-06 0.07158146E-10 0.01074826E+05 0.01614534E+03                   4
+C3H8              120186C   3H   8          G  0200.00   5000.00  1000.00      1
+ 0.07525217E+02 0.01889034E+00-0.06283924E-04 0.09179373E-08-0.04812410E-12    2
+-0.01646455E+06-0.01784390E+03 0.08969208E+01 0.02668986E+00 0.05431425E-04    3
+-0.02126001E-06 0.09243330E-10-0.01395492E+06 0.01935533E+03                   4
+C3O2              121286C   3O   2          G  0200.00   5000.00  1000.00      1
+ 0.08098897E+02 0.05560040E-01-0.02312265E-04 0.04340709E-08-0.03036387E-12    2
+-0.01421435E+06-0.01521974E+03 0.04018127E+02 0.01836661E+00-0.01907148E-03    3
+ 0.01185587E-06-0.03418748E-10-0.01312824E+06 0.05582084E+02                   4
+C4                121286C   4               G  0200.00   5000.00  1000.00      1
+ 0.06500180E+02 0.04228632E-01-0.01790718E-04 0.03404813E-08-0.02403978E-12    2
+ 0.01143401E+07-0.01148889E+03 0.02343028E+02 0.01642981E+00-0.01527986E-03    3
+ 0.07343826E-07-0.01582274E-10 0.01154538E+07 0.09826204E+02                   4
+C4H               121686C   4H   1          G  0200.00   5000.00  1000.00      1
+ 0.06242882E+02 0.06193683E-01-0.02085932E-04 0.03082203E-08-0.01636483E-12    2
+ 0.07568019E+06-0.07210806E+02 0.05023247E+02 0.07092375E-01-0.06073762E-07    3
+-0.02275752E-07 0.08086994E-11 0.07623813E+06-0.06942594E+00                   4
+C4H10              62090C   4H  10          G  0200.00   4000.00  1500.00      1
+ 0.01998785E+03 0.01037281E+00-0.09610818E-05-0.04623018E-08 0.08202828E-12    2
+-0.02625571E+06-0.08837907E+03-0.02256618E+02 0.05881732E+00-0.04525783E-03    3
+ 0.02037115E-06-0.04079458E-10-0.01760233E+06 0.03329595E+03                   4
+C4H2              121686C   4H   2          G  0200.00   5000.00  1000.00      1
+ 0.09031407E+02 0.06047253E-01-0.01948789E-04 0.02754863E-08-0.01385608E-12    2
+ 0.05294736E+06-0.02385068E+03 0.04005192E+02 0.01981000E+00-0.09865877E-04    3
+-0.06635158E-07 0.06077413E-10 0.05424065E+06 0.01845737E+02                   4
+C4H6              120186C   4H   6          G  0200.00   5000.00  1000.00      1
+ 0.08046583E+02 0.01648525E+00-0.05522227E-04 0.08123593E-08-0.04295078E-12    2
+ 0.01370130E+06-0.01800458E+03 0.03197108E+02 0.02025592E+00 0.06510192E-04    3
+-0.01658442E-06 0.06400282E-10 0.01571520E+06 0.09895660E+02                   4
+C4H8              120386C   4H   8          G  0200.00   5000.00  1000.00      1
+ 0.02053584E+02 0.03435051E+00-0.01588320E-03 0.03308966E-07-0.02536104E-11    2
+-0.02139723E+05 0.01554320E+03 0.01181138E+02 0.03085338E+00 0.05086525E-04    3
+-0.02465489E-06 0.01111019E-09-0.01790400E+05 0.02106247E+03                   4
+C5                121286C   5               G  0200.00   5000.00  1000.00      1
+ 0.08078081E+02 0.05743464E-01-0.02436405E-04 0.04638916E-08-0.03278910E-12    2
+ 0.01147022E+07-0.01953024E+03 0.02115274E+02 0.02326332E+00-0.02109499E-03    3
+ 0.09072734E-07-0.01540093E-10 0.01162738E+07 0.01097603E+03                   4
+C5H                20387C   5H   1          G  0200.00   5000.00  1000.00      1
+ 0.08695749E+02 0.06054301E-01-0.02016011E-04 0.02892893E-08-0.01470100E-12    2
+ 0.09031069E+06-0.02101595E+03 0.01634825E+02 0.02509538E+00-0.01206636E-03    3
+-0.01046511E-06 0.08809988E-10 0.09212488E+06 0.01512194E+03                   4
+C5H12              20387C   5H  12          G  0200.00   4000.00  1000.00      1
+ 0.01667798E+03 0.02114483E+00-0.03533321E-04-0.05742202E-08 0.01515948E-11    2
+-0.02553670E+06-0.06372940E+03 0.01877908E+02 0.04121646E+00 0.01253234E-03    3
+-0.03701537E-06 0.01525569E-09-0.02003816E+06 0.01877257E+03                   4
+C5H2               20587C   5H   2          G  0200.00   5000.00  1000.00      1
+ 0.01132917E+03 0.07424057E-01-0.02628189E-04 0.04082541E-08-0.02301333E-12    2
+ 0.07878706E+06-0.03617117E+03 0.03062322E+02 0.02709998E+00-0.01009170E-03    3
+-0.01272745E-06 0.09167219E-10 0.08114969E+06 0.07071078E+02                   4
+C5H5              101993H   5C   5          G  0200.00   4000.00  1400.00      1
+ 0.01531094E+03 0.07473806E-01-0.05837458E-05-0.04386651E-08 0.07696839E-12    2
+ 0.02525890E+06-0.05951593E+03 0.01007316E+02 0.03189880E+00-0.04748189E-04    3
+-0.01102390E-06 0.04584681E-10 0.03047390E+06 0.01934168E+03                   4
+C5H6               20387C   5H   6          G  0200.00   5000.00  1000.00      1
+ 0.09689815E+02 0.01838262E+00-0.06264884E-04 0.09393377E-08-0.05087708E-12    2
+ 0.01102124E+06-0.03122908E+03-0.03196739E+02 0.04081361E+00 0.06816505E-05    3
+-0.03137459E-06 0.01577223E-09 0.01529068E+06 0.03869939E+03                   4
+C6H               121686C   6H   1          G  0200.00   5000.00  1000.00      1
+ 0.01158735E+03 0.07295363E-01-0.02466008E-04 0.03407046E-08-0.01498185E-12    2
+ 0.01031448E+07-0.03172578E+03 0.04769848E+02 0.02457279E+00-0.07561252E-04    3
+-0.01480691E-06 0.09768054E-10 0.01048523E+07 0.03241530E+02                   4
+C6H10              20387C   6H  10          G  0200.00   5000.00  1000.00      1
+ 0.01592777E+03 0.02374413E+00-0.06908672E-04 0.08109777E-08-0.02683123E-12    2
+-0.08642656E+05-0.06525186E+03-0.01394228E+02 0.04720693E+00 0.01196042E-03    3
+-0.04162896E-06 0.01740336E-09-0.02217790E+05 0.03129604E+03                   4
+C6H14              20387C   6H  14          G  0200.00   4000.00  1000.00      1
+ 0.02280472E+03 0.02097989E+00-0.03530674E-04-0.05466245E-08 0.01478950E-11    2
+-0.03073757E+06-0.09583162E+03 0.01836174E+02 0.05098461E+00 0.01259586E-03    3
+-0.04428362E-06 0.01872237E-09-0.02292750E+06 0.02088145E+03                   4
+C6H2              121686C   6H   2          G  0200.00   5000.00  1000.00      1
+ 0.01275652E+03 0.08034381E-01-0.02618215E-04 0.03725060E-08-0.01878851E-12    2
+ 0.08075469E+06-0.04041263E+03 0.05751085E+02 0.02636720E+00-0.01166760E-03    3
+-0.01071450E-06 0.08790297E-10 0.08262013E+06-0.04335532E+02                   4
+C6H3               20387C   6H   3          G  0200.00   5000.00  1000.00      1
+ 0.01276118E+03 0.01038557E+00-0.03479193E-04 0.05109733E-08-0.02690965E-12    2
+ 0.07477706E+06-0.03891745E+03 0.05007090E+02 0.02692852E+00-0.05919866E-04    3
+-0.01527233E-06 0.09408310E-10 0.07713200E+06 0.02225621E+02                   4
+C6H4              111293H   4C   6          G  0200.00   4000.00  1000.00      1
+ 0.01401625E+03 0.08242769E-01-0.08099664E-05-0.04654132E-08 0.08748122E-12    2
+ 0.04410396E+06-0.05139376E+03 0.01520024E+02 0.02876611E+00 0.01417725E-04    3
+-0.01650589E-06 0.05873157E-10 0.04844894E+06 0.01719034E+03                   4
+C6H5               82489C   6H   5          G  0200.00   4000.00  1000.00      1
+ 0.01577589E+03 0.09651109E-01-0.09429416E-05-0.05469111E-08 0.01026522E-11    2
+ 0.03302698E+06-0.06176280E+03 0.01143557E+01 0.03627325E+00 0.01158286E-04    3
+-0.02196965E-06 0.08463556E-10 0.03836054E+06 0.02380117E+03                   4
+C6H5(L)            82489C   6H   5          G  0200.00   4000.00  1000.00      1
+ 0.01721540E+03 0.08621068E-01-0.08221340E-05-0.04752164E-08 0.08844086E-12    2
+ 0.06385819E+06-0.06139128E+03 0.04854269E+02 0.03031659E+00 0.01742893E-05    3
+-0.01811010E-06 0.07392511E-10 0.06798734E+06 0.05854935E+02                   4
+C6H5O              82489C   6H   5O   1     G  0200.00   4000.00  1000.00      1
+ 0.01822639E+03 0.01003985E+00-0.09915668E-05-0.05672804E-08 0.01068372E-11    2
+-0.02620846E+05-0.07361391E+03 0.01107497E+02 0.03956946E+00 0.08497295E-05    3
+-0.02436311E-06 0.09650660E-10 0.03159672E+05 0.01973496E+03                   4
+C6H5OH             82489C   6H   6O   1     G  0200.00   4000.00  1000.00      1
+ 0.01821633E+03 0.01142427E+00-0.01096684E-04-0.06427442E-08 0.01198893E-11    2
+-0.02053664E+06-0.07304234E+03 0.01391456E+02 0.03931958E+00 0.01777096E-04    3
+-0.02277673E-06 0.08309659E-10-0.01472181E+06 0.01917813E+03                   4
+C6H6               20387C   6H   6          G  0200.00   5000.00  1000.00      1
+ 0.01291074E+03 0.01723297E+00-0.05024211E-04 0.05893497E-08-0.01947521E-12    2
+ 0.03664512E+05-0.05002699E+03-0.03138012E+02 0.04723103E+00-0.02962208E-04    3
+-0.03262819E-06 0.01718692E-09 0.08890031E+05 0.03657573E+03                   4
+C6H7               82489C   6H   7          G  0200.00   4000.00  1000.00      1
+ 0.01755221E+03 0.01227080E+00-0.01185742E-04-0.06959661E-08 0.01301326E-11    2
+ 0.01624581E+06-0.07166589E+03 0.04639166E+01 0.03975928E+00 0.02529095E-04    3
+-0.02223792E-06 0.07557053E-10 0.02225169E+06 0.02235387E+03                   4
+C8H               121686C   8H   1          G  0200.00   5000.00  1000.00      1
+ 0.01474991E+03 0.09931501E-01-0.03374841E-04 0.04687593E-08-0.02073536E-12    2
+ 0.01399448E+07-0.04892690E+03 0.04489508E+02 0.03521521E+00-0.01019390E-03    3
+-0.02197025E-06 0.01421416E-09 0.01425992E+07 0.03996225E+02                   4
+C8H2              121686C   8H   2          G  0200.00   5000.00  1000.00      1
+ 0.01568021E+03 0.01115461E+00-0.03724373E-04 0.05197891E-08-0.02375550E-12    2
+ 0.01081123E+07-0.05571437E+03 0.04630427E+02 0.03937080E+00-0.01148035E-03    3
+-0.02562214E-06 0.01670791E-09 0.01108285E+07 0.08077425E+01                   4
+CA                 80792CA  1               G  0200.00   5000.00  1000.00      1
+ 0.01636990E+02 0.01938281E-01-0.01464011E-04 0.04278257E-08-0.03581686E-12    2
+ 0.02109799E+06 0.08990615E+02 0.01563120E+02 0.06228361E-01-0.01415732E-03    3
+ 0.01323968E-06-0.04370569E-10 0.02092191E+06 0.08370537E+02                   4
+CA(A)              81092CA  1               S  0200.00   1500.00  1000.00      1
+ 0.03344424E+02-0.06129555E-04-0.02048549E-05 0.02199575E-08-0.06498067E-12    2
+-0.01020624E+05-0.01410880E+03 0.02492826E+02 0.03921280E-01-0.07242436E-04    3
+ 0.05919276E-07-0.01802531E-10-0.08641901E+04-0.01010018E+03                   4
+CA(B)              81092CA  1               S  0200.00   2000.00  1000.00      1
+ 0.02149662E+02 0.02293734E-01 0.03948384E-05-0.01813978E-08 0.03060995E-12    2
+-0.06970589E+04-0.07862350E+02 0.02013343E+02 0.02718935E-01-0.01374494E-05    3
+ 0.01528553E-08-0.06023681E-12-0.06613041E+04-0.07168449E+02                   4
+CA(L)              81092CA  1               L  0200.00   3000.00  1000.00      1
+ 0.03623553E+02 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00    2
+ 0.02310016E+04-0.01455354E+03 0.03623553E+02 0.00000000E+00 0.00000000E+00    3
+ 0.00000000E+00 0.00000000E+00 0.02310016E+04-0.01455354E+03                   4
+CA+                80792CA  1E  -1          G  0200.00   5000.00  1000.00      1
+ 0.02415423E+02 0.03140053E-02-0.03458031E-05 0.01350163E-08-0.01342160E-12    2
+ 0.09252434E+06 0.05468189E+02 0.02276338E+02 0.01581988E-01-0.03878953E-04    3
+ 0.03953701E-07-0.01427856E-10 0.09253536E+06 0.06008258E+02                   4
+CA2                80792CA  2               G  0200.00   5000.00  1000.00      1
+ 0.04174798E+02-0.07401838E-02 0.03131196E-05-0.05885577E-09 0.04296578E-13    2
+ 0.04052221E+06 0.07582380E+02 0.05604867E+02-0.04044408E-01 0.02454638E-04    3
+-0.01495064E-08-0.01724184E-11 0.04008842E+06 0.01167234E+00                   4
+CABR               80792BR  1CA  1          G  0200.00   5000.00  1000.00      1
+ 0.04312008E+02 0.04246804E-02-0.02536360E-05 0.07082421E-09-0.05508239E-13    2
+-0.07242509E+05 0.05721414E+02 0.04004020E+02 0.01927770E-01-0.02749388E-04    3
+ 0.01785012E-07-0.04190442E-11-0.07199987E+05 0.07125700E+02                   4
+CABR2              80792BR  2CA  1          G  0200.00   5000.00  1000.00      1
+ 0.07388434E+02 0.01393017E-02-0.06561619E-06 0.01342748E-09-0.09993272E-14    2
+-0.04852787E+06-0.04337760E+02 0.06902053E+02 0.01599316E-01-0.01154723E-04    3
+-0.02428795E-08 0.03707822E-11-0.04841873E+06-0.01900929E+02                   4
+CABR2(S)           81292BR  2CA  1          S  0200.00   1500.00  1000.00      1
+ 0.01076200E+03-0.02979247E-01 0.06950511E-05 0.03569778E-07-0.01382224E-10    2
+-0.08542235E+06-0.04524895E+03 0.05478536E+02 0.02209325E+00-0.04544460E-03    3
+ 0.04176543E-06-0.01322726E-09-0.08447516E+06-0.02052538E+03                   4
+CACL               80792CA  1CL  1          G  0200.00   5000.00  1000.00      1
+ 0.04272197E+02 0.04612770E-02-0.02684554E-05 0.07233022E-09-0.05565813E-13    2
+-0.01387933E+06 0.04556153E+02 0.03810549E+02 0.02372144E-01-0.02939380E-04    3
+ 0.01528166E-07-0.02396962E-11-0.01379994E+06 0.06742955E+02                   4
+CACL2              80792CA  1CL  2          G  0200.00   5000.00  1000.00      1
+ 0.07322969E+02 0.02201546E-02-0.01035664E-05 0.02117574E-09-0.01575201E-13    2
+-0.05893953E+06-0.06959426E+02 0.06595983E+02 0.02364235E-01-0.01611807E-04    3
+-0.04866457E-08 0.05973912E-11-0.05877467E+06-0.03308009E+02                   4
+CACL2(S)           81092CA  1CL  2          S  0200.00   2000.00  1000.00      1
+ 0.06749013E+02 0.03694542E-01-0.02199980E-05 0.01165549E-08-0.02193898E-12    2
+-0.09759255E+06-0.02629777E+03 0.05722155E+02 0.01836100E+00-0.03597296E-03    3
+ 0.03173054E-06-0.09522563E-10-0.09798464E+06-0.02415730E+03                   4
+CAF                80792CA  1F   1          G  0200.00   5000.00  1000.00      1
+ 0.04150489E+02 0.05746086E-02-0.03081448E-05 0.07585468E-09-0.05641270E-13    2
+-0.03400290E+06 0.03725193E+02 0.03309446E+02 0.03419155E-01-0.03357208E-04    3
+ 0.01004510E-07 0.01112627E-11-0.03382332E+06 0.07876121E+02                   4
+CAF2               80792CA  1F   2          G  0200.00   5000.00  1000.00      1
+ 0.06575083E+02 0.05172194E-02-0.02403804E-05 0.04876347E-09-0.03608526E-13    2
+-0.09641588E+06-0.04868362E+02 0.05023320E+02 0.04921285E-01-0.03129418E-04    3
+-0.01178313E-07 0.01260201E-10-0.09604913E+06 0.02984363E+02                   4
+CAH2O2             81292CA  1H   2O   2     G  0200.00   5000.00  1000.00      1
+ 0.08627170E+02 0.03353668E-01-0.01123553E-04 0.01801642E-08-0.01122696E-12    2
+-0.07617877E+06-0.01582838E+03 0.05634984E+02 0.01431225E+00-0.01160774E-03    3
+ 0.02415328E-08 0.02445194E-10-0.07567777E+06-0.01510141E+02                   4
+CAH2O2(S)          81292CA  1H   2O   2     S  0200.00   1000.00  1000.00      1
+ 0.01418556E+03 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00    2
+-0.01237066E+07-0.07268995E+03-0.07906910E+01 0.06795647E+00-0.01329918E-02    3
+ 0.01211862E-05-0.04117456E-09-0.01204396E+07-0.07999789E+01                   4
+CAI                80792CA  1I   1          G  0200.00   5000.00  1000.00      1
+ 0.04316128E+02 0.04138589E-02-0.02776385E-05 0.08074141E-09-0.06592826E-13    2
+-0.01903879E+05 0.06725163E+02 0.04078205E+02 0.01812968E-01-0.02972846E-04    3
+ 0.02225520E-07-0.06173497E-11-0.01881151E+05 0.07754936E+02                   4
+CAI2               80792CA  1I   2          G  0200.00   5000.00  1000.00      1
+ 0.07403366E+02 0.01208762E-02-0.05698306E-06 0.01167152E-09-0.08696049E-14    2
+-0.03328039E+06-0.02870204E+02 0.06975307E+02 0.01413683E-01-0.01046359E-04    3
+-0.01757655E-08 0.03111958E-11-0.03318450E+06-0.07269292E+01                   4
+CAO                80792CA  1O   1          G  0200.00   5000.00  1000.00      1
+ 0.08665723E+02-0.09857255E-01 0.07277137E-04-0.01813874E-07 0.01477538E-11    2
+ 0.02566423E+05-0.02151985E+03 0.07277069E+02-0.02477194E+00 0.06313166E-03    3
+-0.06322423E-06 0.02200693E-09 0.03774998E+05-0.09934620E+02                   4
+CAO(S)             81092CA  1O   1          S  0200.00   3600.00  1000.00      1
+ 0.05184497E+02 0.01938337E-01-0.08932525E-05 0.02410689E-08-0.02389613E-12    2
+-0.07806390E+06-0.02562669E+03 0.02964466E+02 0.09464719E-01-0.07948131E-04    3
+ 0.06517958E-08 0.01313902E-10-0.07762567E+06-0.01476156E+03                   4
+CAOH               80792CA  1H   1O   1     G  0200.00   5000.00  1000.00      1
+ 0.05164977E+02 0.01974644E-01-0.07757403E-05 0.01507385E-08-0.01048831E-12    2
+-0.02493597E+06-0.01690344E+02 0.03596803E+02 0.08182874E-01-0.07863515E-04    3
+ 0.01974293E-07 0.06136755E-11-0.02469004E+06 0.05713983E+02                   4
+CAOH+              80792CA  1H   1O   1E  -1G  0200.00   5000.00  1000.00      1
+ 0.05293390E+02 0.01697953E-01-0.05704847E-05 0.09169199E-09-0.05724155E-13    2
+ 0.04274157E+06-0.03041255E+02 0.03766022E+02 0.07251869E-01-0.05903957E-04    3
+ 0.02063514E-08 0.01186538E-10 0.04300269E+06 0.04285959E+02                   4
+CAS                80792CA  1S   1          G  0200.00   5000.00  1000.00      1
+ 0.04077726E+02-0.02148896E-01 0.03595164E-04-0.01167272E-07 0.01101218E-11    2
+ 0.01401038E+06 0.05797750E+02 0.05045918E+02-0.09248234E-01 0.03176027E-03    3
+-0.04007223E-06 0.01698112E-09 0.01355553E+06 0.08770679E+01                   4
+CCL                40992C   1CL  1          G  0200.00   4000.00  1500.00      1
+ 0.04306010E+02 0.01816861E-02-0.07184326E-06 0.01354479E-09-0.01002479E-13    2
+ 0.05198808E+06 0.01558593E+02 0.02871441E+02 0.04709268E-01-0.05629052E-04    3
+ 0.03086609E-07-0.06379756E-11 0.05237631E+06 0.08859373E+02                   4
+CCL2               40992C   1CL  2          G  0200.00   4000.00  1500.00      1
+ 0.06632435E+02 0.03558831E-02-0.01507592E-05 0.03116243E-09-0.02546496E-13    2
+ 0.02443636E+06-0.06590137E+02 0.03329579E+02 0.01112853E+00-0.01375891E-03    3
+ 0.07726329E-07-0.01624070E-10 0.02530408E+06 0.01010975E+03                   4
+CCL2CCLO           40992C   2 O  1CL  3     G  0200.00   4000.00  1500.00      1
+ 0.01497380E+03 0.09004180E-02-0.03714287E-05 0.05602716E-09-0.02392170E-13    2
+-0.01781718E+06-0.04510704E+03 0.05066114E+02 0.02846673E+00-0.03113001E-03    3
+ 0.01605483E-06-0.03208502E-10-0.01474354E+06 0.06663101E+02                   4
+CCL2CCLOH          53090C   2H   1O   1CL  3G  0200.00   5000.00  1500.00      1
+ 0.01567259E+03 0.02218766E-01-0.04425239E-05 0.06261725E-10 0.03673507E-13    2
+-0.02855361E+06-0.05085224E+03 0.04602117E+02 0.03408842E+00-0.03836909E-03    3
+ 0.02120271E-06-0.04527143E-10-0.02507945E+06 0.06859776E+02                   4
+CCL2CH             40992H   1C   2CL  2     G  0200.00   4000.00  1500.00      1
+ 0.01101223E+03 0.01364477E-01-0.03497001E-05 0.01107466E-09 0.03844298E-13    2
+ 0.02706218E+06-0.02886258E+03 0.02961736E+02 0.02429423E+00-0.02731403E-03    3
+ 0.01493184E-06-0.03162966E-10 0.02960233E+06 0.01317486E+03                   4
+CCL2HOO            53090C   1H   1O   2CL  2G  0200.00   5000.00  1500.00      1
+ 0.01273967E+03 0.01671789E-01-0.03280073E-05 0.09239024E-10 0.02183938E-13    2
+-0.05665041E+05-0.03552584E+03 0.03425417E+02 0.02745544E+00-0.02973832E-03    3
+ 0.01588391E-06-0.03309428E-10-0.02675529E+05 0.01333474E+03                   4
+CCL2OHCH2          53090C   2H   3O   1CL  2G  0200.00   5000.00  1500.00      1
+ 0.01606355E+03 0.02856412E-01-0.05564238E-05 0.02056416E-09 0.02871365E-13    2
+-0.01756115E+06-0.05438455E+03 0.02870959E+02 0.04462273E+00-0.05377946E-03    3
+ 0.03093185E-06-0.06719238E-10-0.01379636E+06 0.01305466E+03                   4
+CCL2OHCHCL         53090C   2H   2O   1CL  3G  0200.00   5000.00  1500.00      1
+ 0.01681474E+03 0.02433421E-01-0.04717311E-05 0.01595327E-09 0.02647197E-13    2
+-0.02217115E+06-0.05406904E+03 0.05487264E+02 0.03719540E+00-0.04391386E-03    3
+ 0.02501465E-06-0.05417859E-10-0.01882134E+06 0.04237537E+02                   4
+CCL3               40992C   1CL  3          G  0200.00   4000.00  1500.00      1
+ 0.09375859E+02 0.05723237E-02-0.02242398E-05 0.04238666E-09-0.03174834E-13    2
+ 0.05113147E+05-0.01813304E+03 0.04292822E+02 0.01682379E+00-0.02044420E-03    3
+ 0.01135805E-06-0.02371493E-10 0.06477756E+05 0.07677874E+02                   4
+CCL3CCLH2          53090C   2H   2CL  4     G  0200.00   5000.00  1500.00      1
+ 0.01788619E+03 0.02281235E-01-0.04746598E-05 0.01962667E-09 0.02451768E-13    2
+-0.02496335E+06-0.06312883E+03 0.03463508E+02 0.04144805E+00-0.04421053E-03    3
+ 0.02320525E-06-0.04772525E-10-0.02028144E+06 0.01275956E+03                   4
+CCL3CCLO           40992C   2 O  1CL  4     G  0200.00   4000.00  1500.00      1
+ 0.01687401E+03 0.01341876E-01-0.04555006E-05 0.07178333E-09-0.04348641E-13    2
+-0.03442278E+06-0.05295025E+03 0.06334167E+02 0.03461171E+00-0.04173791E-03    3
+ 0.02324686E-06-0.04882451E-10-0.03152121E+06 0.07697654E+01                   4
+CCL3CH2            53090C   2H   2CL  3     G  0200.00   5000.00  1500.00      1
+ 0.01468243E+03 0.02202649E-01-0.03960690E-05 0.02319280E-10 0.03655521E-13    2
+ 0.03875531E+05-0.04495230E+03 0.05008132E+02 0.03031103E+00-0.03453620E-03    3
+ 0.01951049E-06-0.04245840E-10 0.06936588E+05 0.05474640E+02                   4
+CCL3CHCL           53090C   2H   1CL  4     G  0200.00   5000.00  1500.00      1
+ 0.01610198E+03 0.01597223E-01-0.04069892E-05 0.04158083E-09-0.01105635E-13    2
+-0.02318814E+04-0.04936573E+03 0.05761929E+02 0.03433482E+00-0.04163980E-03    3
+ 0.02362341E-06-0.05054182E-10 0.02663920E+05 0.03399588E+02                   4
+CCL3CHO            53090C   2H   1O   1CL  3G  0200.00   5000.00  1500.00      1
+ 0.01532135E+03 0.01914228E-01-0.03622777E-05 0.05526564E-10 0.03016202E-13    2
+-0.02886499E+06-0.04774516E+03 0.05016867E+02 0.02961902E+00-0.03140321E-03    3
+ 0.01666643E-06-0.03481662E-10-0.02544921E+06 0.06644422E+02                   4
+CCL3OO             53090C   1O   2CL  3     G  0200.00   5000.00  1500.00      1
+ 0.01473249E+03 0.08345102E-02-0.03627944E-05 0.07101159E-09-0.05165897E-13    2
+-0.05526644E+05-0.04381961E+03 0.04317420E+02 0.03486414E+00-0.04287094E-03    3
+ 0.02371950E-06-0.04903871E-10-0.02855912E+05 0.08720693E+02                   4
+CCL4               40992C   1CL  4          G  0200.00   4000.00  1500.00      1
+ 0.01222570E+03 0.07440275E-02-0.03141658E-05 0.06499383E-09-0.05330319E-13    2
+-0.01439931E+06-0.03133566E+03 0.05107111E+02 0.02402469E+00-0.02980593E-03    3
+ 0.01678331E-06-0.03535253E-10-0.01253198E+06 0.04640845E+02                   4
+CCLH2OO            53090C   1H   2O   2CL  1G  0200.00   5000.00  1500.00      1
+ 0.01131351E+03 0.02330645E-01-0.03546376E-05-0.02064087E-09 0.06154082E-13    2
+-0.04225590E+05-0.03183829E+03 0.01583541E+02 0.02745395E+00-0.02803155E-03    3
+ 0.01491598E-06-0.03172720E-10-0.08340802E+04 0.01999023E+03                   4
+CH                121286C   1H   1          G  0200.00   5000.00  1000.00      1
+ 0.02196223E+02 0.02340381E-01-0.07058201E-05 0.09007582E-09-0.03855040E-13    2
+ 0.07086723E+06 0.09178373E+02 0.03200202E+02 0.02072876E-01-0.05134431E-04    3
+ 0.05733890E-07-0.01955533E-10 0.07045259E+06 0.03331588E+02                   4
+CH+               121286C   1H   1E  -1     G  0200.00   5000.00  1000.00      1
+ 0.02753358E+02 0.01552900E-01-0.05368453E-05 0.08921772E-09-0.05416801E-13    2
+ 0.01948467E+07 0.04654892E+02 0.03327207E+02 0.01347051E-01-0.03895861E-04    3
+ 0.05129390E-07-0.02054576E-10 0.01946452E+07 0.01408474E+02                   4
+CH2               120186C   1H   2          G  0250.00   4000.00  1000.00      1
+ 0.03636408E+02 0.01933057E-01-0.01687016E-05-0.01009899E-08 0.01808256E-12    2
+ 0.04534134E+06 0.02156561E+02 0.03762237E+02 0.01159819E-01 0.02489585E-05    3
+ 0.08800836E-08-0.07332435E-11 0.04536791E+06 0.01712578E+02                   4
+CH2(S)             31287C   1H   2          G  0200.00   4000.00  1000.00      1
+ 0.03552889E+02 0.02066788E-01-0.01914116E-05-0.01104673E-08 0.02021350E-12    2
+ 0.04984975E+06 0.01686570E+02 0.03971265E+02-0.01699089E-02 0.01025369E-04    3
+ 0.02492551E-07-0.01981266E-10 0.04989368E+06 0.05753207E+00                   4
+CH2CCL             53090C   2H   2CL  1     G  0200.00   5000.00  1500.00      1
+ 0.09117805E+02 0.02336015E-01-0.03466390E-05-0.03584809E-09 0.08154328E-13    2
+ 0.02697366E+06-0.02251742E+03 0.01553177E+02 0.02243159E+00-0.02366950E-03    3
+ 0.01323270E-06-0.02931823E-10 0.02962339E+06 0.01769303E+03                   4
+CH2CCL2            53090C   2H   2CL  2     G  0200.00   5000.00  1500.00      1
+ 0.01169451E+03 0.02435982E-01-0.03733045E-05-0.01419412E-09 0.05199337E-13    2
+-0.04601975E+05-0.03547415E+03 0.01527166E+02 0.02983780E+00-0.03171097E-03    3
+ 0.01728380E-06-0.03709638E-10-0.01173986E+05 0.01827540E+03                   4
+CH2CCLOH           53090C   2H   3O   1CL  1G  0200.00   5000.00  1500.00      1
+ 0.01267601E+03 0.03201392E-01-0.04788878E-05-0.02136104E-09 0.07030796E-13    2
+-0.02402379E+06-0.04128498E+03 0.06647840E+01 0.03723168E+00-0.04115206E-03    3
+ 0.02307135E-06-0.05021609E-10-0.02012318E+06 0.02165270E+03                   4
+CH2CHCCH           82489C   4H   4          G  0200.00   4000.00  1000.00      1
+ 0.01069777E+03 0.06982014E-01-0.06567747E-05-0.03884517E-08 0.07200946E-12    2
+ 0.03034803E+06-0.03128430E+03 0.03233893E+02 0.01865634E+00 0.01270320E-04    3
+-0.09410096E-07 0.02956111E-10 0.03301097E+06 0.09922676E+02                   4
+CH2CHCCH2          82489C   4H   5          G  0200.00   4000.00  1000.00      1
+ 0.01199776E+03 0.07990580E-01-0.08098173E-05-0.04568733E-08 0.08636910E-12    2
+ 0.03228493E+06-0.03528495E+03 0.03879443E+02 0.01997664E+00 0.01872777E-04    3
+-0.09306953E-07 0.02386116E-10 0.03526859E+06 0.09842152E+02                   4
+CH2CHCH2           82489C   3H   5          G  0200.00   4000.00  1000.00      1
+ 0.09651539E+02 0.08075596E-01-0.07965424E-05-0.04650696E-08 0.08603280E-12    2
+ 0.01530096E+06-0.02686774E+03 0.02276486E+02 0.01985564E+00 0.01123842E-04    3
+-0.01014576E-06 0.03441342E-10 0.01789497E+06 0.01372515E+03                   4
+CH2CHCHCH          82489C   4H   5          G  0200.00   4000.00  1000.00      1
+ 0.01286597E+03 0.07943369E-01-0.08626466E-05-0.04655635E-08 0.08951131E-12    2
+ 0.03783552E+06-0.04182502E+03 0.02995240E+02 0.02288456E+00 0.01975471E-04    3
+-0.01148245E-06 0.03197824E-10 0.04142218E+06 0.01289454E+03                   4
+CH2CHCHCH2        120189C   4H   6          G  0200.00   4000.00  1000.00      1
+ 0.01254437E+03 0.09596525E-01-0.09187012E-05-0.05429640E-08 0.01005364E-11    2
+ 0.08597330E+05-0.04217451E+03 0.01931624E+02 0.02479030E+00 0.03018071E-04    3
+-0.01154686E-06 0.02586623E-10 0.01255468E+06 0.01701999E+03                   4
+CH2CHCL            53090C   2H   3CL  1     G  0200.00   5000.00  1500.00      1
+ 0.01029820E+03 0.03042926E-01-0.03881390E-05-0.04925565E-09 0.01005072E-12    2
+-0.02492899E+05-0.03108614E+03 0.01118026E+01 0.02796358E+00-0.02726559E-03    3
+ 0.01463257E-06-0.03204075E-10 0.01287844E+05 0.02381617E+03                   4
+CH2CL              53090C   1H   2CL  1     G  0200.00   5000.00  1500.00      1
+ 0.06822515E+02 0.01659744E-01-0.02075515E-05-0.02793518E-09 0.05509087E-13    2
+ 0.01080454E+06-0.01090504E+03 0.02419924E+02 0.01303317E+00-0.01356559E-03    3
+ 0.07836108E-07-0.01800535E-10 0.01243112E+06 0.01269845E+03                   4
+CH2CL2            112989C   1H   2CL  2     G  0200.00   5000.00  1000.00      1
+ 0.05917327E+02 0.06762395E-01-0.02676163E-04 0.04856687E-08-0.03316974E-12    2
+-0.01385926E+06-0.03877739E+02 0.01423284E+02 0.02116658E+00-0.02178088E-03    3
+ 0.01345873E-06-0.03811649E-10-0.01268664E+06 0.01893445E+03                   4
+CH2CLCCL2          53090C   2H   2CL  3     G  0200.00   5000.00  1500.00      1
+ 0.01438156E+03 0.02379635E-01-0.04167426E-05-0.02445116E-10 0.04499574E-13    2
+-0.02746720E+05-0.04351762E+03 0.03351194E+02 0.03297633E+00-0.03604139E-03    3
+ 0.01977453E-06-0.04233823E-10 0.08620011E+04 0.01444760E+03                   4
+CH2CLCCLO          53090C   2H   2O   1CL  2G  0200.00   5000.00  1500.00      1
+ 0.01392027E+03 0.02589602E-01-0.04141892E-05-0.01643169E-09 0.06237174E-13    2
+-0.03517257E+06-0.04389503E+03 0.02705995E+02 0.03210128E+00-0.03357727E-03    3
+ 0.01814310E-06-0.03890009E-10-0.03130905E+06 0.01566013E+03                   4
+CH2CLCH2           53090C   2H   4CL  1     G  0200.00   5000.00  1500.00      1
+ 0.01167011E+03 0.03554722E-01-0.04124241E-05-0.07276110E-09 0.01316756E-12    2
+ 0.06201629E+05-0.03604549E+03 0.01635864E+02 0.02680201E+00-0.02491421E-03    3
+ 0.01349235E-06-0.03046571E-10 0.01014294E+06 0.01864248E+03                   4
+CH2CLCH2CL         53090C   2H   4CL  2     G  0200.00   5000.00  1500.00      1
+ 0.01443143E+03 0.03836770E-01-0.05299122E-05-0.05165412E-09 0.01177636E-12    2
+-0.02296285E+06-0.05130124E+03-0.02436500E+01 0.04032574E+00-0.03956993E-03    3
+ 0.02074245E-06-0.04412604E-10-0.01767830E+06 0.02741366E+03                   4
+CH2CLCHCL          53090C   2H   3CL  2     G  0200.00   5000.00  1500.00      1
+ 0.01295593E+03 0.03001689E-01-0.04165162E-05-0.03909055E-09 0.09041090E-13    2
+ 0.09932077E+04-0.03925387E+03 0.02276185E+02 0.03011401E+00-0.03047664E-03    3
+ 0.01654880E-06-0.03613198E-10 0.04836340E+05 0.01792166E+03                   4
+CH2CLCHCL2         53090C   2H   3CL  3     G  0200.00   5000.00  1500.00      1
+ 0.01618739E+03 0.03047681E-01-0.05011496E-05-0.01596701E-09 0.07107547E-13    2
+-0.02474417E+06-0.05695454E+03 0.01239011E+02 0.04148444E+00-0.04188654E-03    3
+ 0.02163214E-06-0.04467364E-10-0.01960717E+06 0.02257856E+03                   4
+CH2CLCHO           53090C   2H   3O   1CL  1G  0200.00   5000.00  1500.00      1
+ 0.01227955E+03 0.03320979E-01-0.04106710E-05-0.06199826E-09 0.01190594E-12    2
+-0.02678416E+06-0.03762356E+03 0.06553003E+01 0.02959046E+00-0.02635056E-03    3
+ 0.01327545E-06-0.02838288E-10-0.02227005E+06 0.02576797E+03                   4
+CH2CO             121686C   2H   2O   1     G  0200.00   5000.00  1000.00      1
+ 0.06038817E+02 0.05804840E-01-0.01920954E-04 0.02794485E-08-0.01458868E-12    2
+-0.08583402E+05-0.07657581E+02 0.02974971E+02 0.01211871E+00-0.02345046E-04    3
+-0.06466685E-07 0.03905649E-10-0.07632637E+05 0.08673553E+02                   4
+CH2F2              82489C   1H   2F   2     G  0200.00   5000.00  1000.00      1
+ 0.04730052E+02 0.07997300E-01-0.03186045E-04 0.05801160E-08-0.03967925E-12    2
+-0.05637288E+06-0.04954843E+01 0.03669434E+01 0.02168917E+00-0.02441913E-03    3
+ 0.01942310E-06-0.06978343E-10-0.05510103E+06 0.02202215E+03                   4
+CH2HCO            110393O   1H   3C   2     G  0200.00   5000.00  1000.00      1
+ 0.05975670E+02 0.08130591E-01-0.02743624E-04 0.04070304E-08-0.02176017E-12    2
+ 0.04903218E+04-0.05045251E+02 0.03409062E+02 0.01073857E+00 0.01891492E-04    3
+-0.07158583E-07 0.02867385E-10 0.01521477E+05 0.09558290E+02                   4
+CH2O              121286C   1H   2O   1     G  0200.00   5000.00  1000.00      1
+ 0.02995606E+02 0.06681321E-01-0.02628955E-04 0.04737153E-08-0.03212517E-12    2
+-0.01532037E+06 0.06912572E+02 0.01652731E+02 0.01263144E+00-0.01888168E-03    3
+ 0.02050031E-06-0.08413237E-10-0.01486540E+06 0.01378482E+03                   4
+CH2OH             120186H   3C   1O   1     G  0250.00   4000.00  1000.00      1
+ 0.06327520E+02 0.03608271E-01-0.03201547E-05-0.01938750E-08 0.03509705E-12    2
+-0.04474509E+05-0.08329366E+02 0.02862628E+02 0.01001527E+00-0.05285436E-05    3
+-0.05138540E-07 0.02246041E-10-0.03349679E+05 0.01039794E+03                   4
+CH2OHCCL2          53090C   2H   3O   1CL  2G  0200.00   5000.00  1500.00      1
+ 0.01602181E+03 0.02846352E-01-0.04974218E-05-0.02167450E-10 0.05246046E-13    2
+-0.01829579E+06-0.05402134E+03 0.01922940E+02 0.04158207E+00-0.04427505E-03    3
+ 0.02343015E-06-0.04851868E-10-0.01375512E+06 0.02001902E+03                   4
+CH2OHCHCL          53090C   2H   4O   1CL  1G  0200.00   5000.00  1500.00      1
+ 0.01446298E+03 0.03569514E-01-0.05419118E-05-0.02862176E-09 0.08920560E-13    2
+-0.01475559E+06-0.04942815E+03 0.03505696E+01 0.04212749E+00-0.04493839E-03    3
+ 0.02448187E-06-0.05236589E-10-0.01007314E+06 0.02495261E+03                   4
+CH2SICL            40992H   2C   1SI  1CL  1G  0200.00   4000.00  1500.00      1
+ 0.09915966E+02 0.01896319E-01-0.03304238E-05-0.03882353E-09 0.01089169E-12    2
+ 0.01906587E+06-0.02389137E+03 0.03514077E+02 0.01959495E+00-0.02147274E-03    3
+ 0.01214017E-06-0.02691323E-10 0.02123280E+06 0.09882836E+02                   4
+CH2SICL3           40992H   2C   1SI  1CL  3G  0200.00   4000.00  1500.00      1
+ 0.01476240E+03 0.02289499E-01-0.04148337E-05-0.01526182E-09 0.07724698E-13    2
+-0.04947703E+06-0.04020475E+03 0.06718170E+02 0.02712662E+00-0.03168529E-03    3
+ 0.01809641E-06-0.03938906E-10-0.04710183E+06 0.01167360E+02                   4
+CH2SIH2CL          40992H   4C   1SI  1CL  1G  0200.00   4000.00  1500.00      1
+ 0.01260561E+03 0.03468476E-01-0.04606434E-05-0.09748147E-09 0.02077681E-12    2
+-0.05748538E+05-0.03743183E+03 0.02426229E+02 0.03028056E+00-0.03039200E-03    3
+ 0.01612599E-06-0.03425629E-10-0.02268891E+05 0.01657736E+03                   4
+CH2SIHCL2          40992H   3C   1SI  1CL  2G  0200.00   4000.00  1500.00      1
+ 0.01365092E+03 0.02909029E-01-0.04521180E-05-0.05274788E-09 0.01389320E-12    2
+-0.02781262E+06-0.03810353E+03 0.04180967E+02 0.03005761E+00-0.03288772E-03    3
+ 0.01822025E-06-0.03925700E-10-0.02480330E+06 0.01134845E+03                   4
+CH3               121286C   1H   3          G  0200.00   5000.00  1000.00      1
+ 0.02844052E+02 0.06137974E-01-0.02230345E-04 0.03785161E-08-0.02452159E-12    2
+ 0.01643781E+06 0.05452697E+02 0.02430443E+02 0.01112410E+00-0.01680220E-03    3
+ 0.01621829E-06-0.05864953E-10 0.01642378E+06 0.06789794E+02                   4
+CH3C(O)CL          53090C   2H   3O   1CL  1G  0200.00   5000.00  1500.00      1
+ 0.01240568E+03 0.03210496E-01-0.03737157E-05-0.06739592E-09 0.01219122E-12    2
+-0.03432420E+06-0.03909195E+03 0.02275117E+02 0.02518533E+00-0.02152420E-03    3
+ 0.01084005E-06-0.02369191E-10-0.03024376E+06 0.01657016E+03                   4
+CH3CC              82489C   3H   3          G  0200.00   4000.00  1000.00      1
+ 0.07640221E+02 0.05233556E-01-0.05053635E-05-0.02919772E-08 0.05445700E-12    2
+ 0.05909763E+06-0.01629573E+03 0.03798751E+02 0.08749062E-01 0.02523014E-04    3
+-0.01529373E-07-0.01410562E-10 0.06077425E+06 0.05989223E+02                   4
+CH3CCCH2           82489C   4H   5          G  0200.00   4000.00  1000.00      1
+ 0.01156506E+03 0.08030297E-01-0.07649450E-05-0.04476534E-08 0.08313260E-12    2
+ 0.03256813E+06-0.03014066E+03 0.05068450E+02 0.01571747E+00 0.02968975E-04    3
+-0.04990587E-07-0.02984224E-11 0.03518855E+06 0.06791893E+02                   4
+CH3CCCH3          120189C   4H   6          G  0200.00   4000.00  1000.00      1
+ 0.01133658E+03 0.01005764E+00-0.09511323E-05-0.05660497E-08 0.01049451E-11    2
+ 0.01547659E+06-0.03350867E+03 0.04077105E+02 0.01703159E+00 0.04707490E-04    3
+-0.03767240E-07-0.02066963E-10 0.01859757E+06 0.08444801E+02                   4
+CH3CCH2            82489C   3H   5          G  0200.00   4000.00  1000.00      1
+ 0.09101018E+02 0.07964168E-01-0.07884945E-05-0.04562036E-08 0.08529212E-12    2
+ 0.02670680E+06-0.02150559E+03 0.03385811E+02 0.01404534E+00 0.03204127E-04    3
+-0.03824120E-07-0.09053742E-11 0.02909066E+06 0.01126649E+03                   4
+CH3CCL             53090C   2H   3CL  1     G  0200.00   5000.00  1500.00      1
+ 0.01023962E+03 0.02767116E-01-0.03228853E-05-0.05752548E-09 0.01043430E-12    2
+ 0.02633607E+06-0.02806184E+03 0.01687397E+02 0.02164347E+00-0.01891466E-03    3
+ 0.09699015E-07-0.02134580E-10 0.02975387E+06 0.01882236E+03                   4
+CH3CCL2            53090C   2H   3CL  2     G  0200.00   5000.00  1500.00      1
+ 0.01300035E+03 0.02940485E-01-0.03746456E-05-0.05040644E-09 0.01006332E-12    2
+-0.04228816E+04-0.03979863E+03 0.03213473E+02 0.02587378E+00-0.02419993E-03    3
+ 0.01273817E-06-0.02788481E-10 0.03325663E+05 0.01333320E+03                   4
+CH3CCL3            53090C   2H   3CL  3     G  0200.00   5000.00  1500.00      1
+ 0.01637160E+03 0.02935021E-01-0.04836108E-05-0.01454723E-09 0.06731691E-13    2
+-0.02378095E+06-0.05941864E+03 0.02484363E+02 0.03909474E+00-0.04013637E-03    3
+ 0.02110179E-06-0.04418213E-10-0.01902540E+06 0.01435603E+03                   4
+CH3CCLO            53090C   2H   3O   1CL  1G  0200.00   5000.00  1500.00      1
+ 0.01240595E+03 0.03210266E-01-0.03736397E-05-0.06740236E-09 0.01219081E-12    2
+-0.03432283E+06-0.03909605E+03 0.02277402E+02 0.02517912E+00-0.02151632E-03    3
+ 0.01083524E-06-0.02368079E-10-0.03024308E+06 0.01655556E+03                   4
+CH3CH2CCH         120189C   4H   6          G  0200.00   4000.00  1000.00      1
+ 0.01200695E+03 0.09576069E-01-0.08995018E-05-0.05369808E-08 0.09934174E-12    2
+ 0.01729420E+06-0.03802692E+03 0.03726043E+02 0.02053493E+00 0.03021439E-04    3
+-0.08131813E-07 0.01095280E-10 0.02048821E+06 0.08538826E+02                   4
+CH3CH2CH2C         62090C   4H  10          G  0200.00   4000.00  1500.00      1
+ 0.02032597E+03 0.01025189E+00-0.09348665E-05-0.04706743E-08 0.08327283E-12    2
+-0.02590868E+06-0.08998431E+03-0.02544545E+02 0.05770712E+00-0.04104933E-03    3
+ 0.01684742E-06-0.03176653E-10-0.01682847E+06 0.03586176E+03                   4
+CH3CH2CL           53090C   2H   5CL  1     G  0200.00   5000.00  1500.00      1
+ 0.01301118E+03 0.04448941E-01-0.05200473E-05-0.09119710E-09 0.01658842E-12    2
+-0.02013503E+06-0.04677847E+03-0.06981899E+01 0.03567705E+00-0.03230260E-03    3
+ 0.01689622E-06-0.03727523E-10-0.01476054E+06 0.02802219E+03                   4
+CH3CH2O           103190C   2H   5O   1     G  0200.00   4000.00  1500.00      1
+ 0.01187115E+03 0.05390415E-01-0.04990159E-05-0.02399585E-08 0.04255456E-12    2
+-0.05950457E+05-0.03996585E+03 0.06904570E+01 0.02951398E+00-0.02245116E-03    3
+ 0.01011600E-06-0.02044101E-10-0.01559918E+05 0.02130230E+03                   4
+CH3CHCH            82489C   3H   5          G  0200.00   4000.00  1000.00      1
+ 0.09209764E+02 0.07871413E-01-0.07724523E-05-0.04497357E-08 0.08377272E-12    2
+ 0.02853967E+06-0.02232370E+03 0.03161863E+02 0.01518100E+00 0.02722659E-04    3
+-0.05177112E-07 0.05435286E-12 0.03095548E+06 0.01197973E+03                   4
+CH3CHCL            53090C   2H   4CL  1     G  0200.00   5000.00  1500.00      1
+ 0.01166291E+03 0.03539284E-01-0.03858423E-05-0.08186871E-09 0.01407549E-12    2
+ 0.03696642E+05-0.03616108E+03 0.01903574E+02 0.02438193E+00-0.02062779E-03    3
+ 0.01068382E-06-0.02414461E-10 0.07722870E+05 0.01768152E+03                   4
+CH3CHCL2           53090C   2H   4CL  2     G  0200.00   5000.00  1500.00      1
+ 0.01454311E+03 0.03772378E-01-0.05189301E-05-0.05141063E-09 0.01163076E-12    2
+-0.02277045E+06-0.05147426E+03 0.04510764E+01 0.03884901E+00-0.03832912E-03    3
+ 0.02029502E-06-0.04357591E-10-0.01767234E+06 0.02414546E+03                   4
+CH3CHOH           103190C   2H   5O   1     G  0200.00   4000.00  1500.00      1
+ 0.01161148E+03 0.05173117E-01-0.04856685E-05-0.02202895E-08 0.03913721E-12    2
+-0.01248811E+06-0.03688213E+03 0.01415940E+02 0.02870648E+00-0.02373820E-03    3
+ 0.01148886E-06-0.02391420E-10-0.08638718E+05 0.01844256E+03                   4
+CH3CL             112989C   1H   3CL  1     G  0200.00   5000.00  1000.00      1
+ 0.03633876E+02 0.08664625E-01-0.03343871E-04 0.05950130E-08-0.04001401E-12    2
+-0.01177659E+06 0.04430651E+02 0.04621901E+01 0.02068247E+00-0.02553133E-03    3
+ 0.02160311E-06-0.07706816E-10-0.01093667E+06 0.02032977E+03                   4
+CH3CO             120186C   2H   3O   1     G  0200.00   5000.00  1000.00      1
+ 0.05612279E+02 0.08449886E-01-0.02854147E-04 0.04238376E-08-0.02268404E-12    2
+-0.05187863E+05-0.03274949E+02 0.03125278E+02 0.09778220E-01 0.04521448E-04    3
+-0.09009462E-07 0.03193718E-10-0.04108508E+05 0.01122885E+03                   4
+CH3F               82489C   1H   3F   1     G  0200.00   5000.00  1000.00      1
+ 0.03014978E+02 0.09314397E-01-0.03611697E-04 0.06443728E-08-0.04339594E-12    2
+-0.02977838E+06 0.06323815E+02 0.02600911E+01 0.02000788E+00-0.02662585E-03    3
+ 0.02561177E-06-0.09935237E-10-0.02896233E+06 0.02031799E+03                   4
+CH3HCO            120186C   2O   1H   4     G  0200.00   5000.00  1000.00      1
+ 0.05868650E+02 0.01079424E+00-0.03645530E-04 0.05412912E-08-0.02896844E-12    2
+-0.02264569E+06-0.06012946E+02 0.02505695E+02 0.01336991E+00 0.04671953E-04    3
+-0.01128140E-06 0.04263566E-10-0.02124589E+06 0.01335089E+03                   4
+CH3NO             103190C   1H   3N   1O   1G  0200.00   4000.00  1500.00      1
+ 0.08820547E+02 0.03706233E-01-0.02894741E-05-0.01897910E-08 0.03237544E-12    2
+ 0.05362862E+05-0.02213220E+03 0.02109955E+02 0.01517822E+00-0.07071789E-04    3
+ 0.01510611E-07-0.01604204E-11 0.08293612E+05 0.01569702E+03                   4
+CH3NO2            103190C   1H   3N   1O   2G  0200.00   4000.00  1500.00      1
+ 0.01090158E+03 0.04326381E-01-0.04203548E-05-0.01893071E-08 0.03417444E-12    2
+-0.01370862E+06-0.03073183E+03 0.03224717E+01 0.02665147E+00-0.01930574E-03    3
+ 0.07762620E-07-0.01398746E-10-0.09597527E+05 0.02726156E+03                   4
+CH3O              121686C   1H   3O   1     G  0200.00   3000.00  1000.00      1
+ 0.03770800E+02 0.07871497E-01-0.02656384E-04 0.03944431E-08-0.02112616E-12    2
+ 0.01278325E+04 0.02929575E+02 0.02106204E+02 0.07216595E-01 0.05338472E-04    3
+-0.07377636E-07 0.02075611E-10 0.09786011E+04 0.01315218E+03                   4
+CH3OCH3           103190C   2H   6O   1     G  0200.00   4000.00  1500.00      1
+ 0.01228100E+03 0.06711031E-01-0.04726871E-05-0.03636409E-08 0.06084545E-12    2
+-0.02839743E+06-0.04434692E+03 0.01245246E+02 0.02381198E+00-0.08266949E-04    3
+ 0.03068452E-08 0.01909248E-11-0.02335996E+06 0.01855817E+03                   4
+CH3OCL             53090C   1H   3O   1CL  1G  0200.00   5000.00  1500.00      1
+ 0.01022518E+03 0.02780047E-01-0.03331582E-05-0.05437858E-09 0.01012799E-12    2
+-0.01172886E+06-0.02912014E+03 0.01575392E+02 0.02255642E+00-0.02052644E-03    3
+ 0.01075312E-06-0.02371140E-10-0.08346834E+05 0.01804593E+03                   4
+CH3OH             121686C   1H   4O   1     G  0200.00   5000.00  1000.00      1
+ 0.04029061E+02 0.09376593E-01-0.03050254E-04 0.04358793E-08-0.02224723E-12    2
+-0.02615791E+06 0.02378196E+02 0.02660115E+02 0.07341508E-01 0.07170051E-04    3
+-0.08793194E-07 0.02390570E-10-0.02535348E+06 0.01123263E+03                   4
+CH3ONO            103190C   1H   3N   1O   2G  0200.00   4000.00  1500.00      1
+ 0.01136129E+03 0.04159349E-01-0.04145670E-05-0.01695140E-08 0.03028732E-12    2
+-0.01281482E+06-0.03545435E+03 0.01490345E+02 0.02645433E+00-0.02112332E-03    3
+ 0.09414399E-07-0.01811205E-10-0.09125782E+05 0.01813766E+03                   4
+CH3ONO2           103190C   1H   3N   1O   3G  0200.00   4000.00  1500.00      1
+ 0.01436189E+03 0.04112243E-01-0.05113052E-05-0.01496436E-08 0.03012156E-12    2
+-0.01972440E+06-0.05131842E+03 0.07803354E+01 0.03454204E+00-0.02822328E-03    3
+ 0.01232324E-06-0.02302164E-10-0.01465346E+06 0.02245752E+03                   4
+CH3SICL            10891C   1H   3CL  1SI  1G  0200.00   4000.00  1500.00      1
+ 0.01001981E+03 0.03098227E-01-0.03223524E-05-0.01222654E-08 0.02254960E-12    2
+-0.05427416E+05-0.02357211E+03 0.03485139E+02 0.01833182E+00-0.01573128E-03    3
+ 0.07856310E-07-0.01670946E-10-0.02954042E+05 0.01186948E+03                   4
+CH3SIH2SIH         10891C   2H  10SI  2     G  0200.00   4000.00  1500.00      1
+ 0.02302241E+03 0.08819047E-01-0.08859755E-05-0.03700889E-08 0.06746256E-12    2
+-0.01577058E+06-0.09458104E+03 0.02492915E+02 0.05396367E+00-0.04281663E-03    3
+ 0.01967585E-06-0.03981630E-10-0.07813141E+05 0.01758364E+03                   4
+CH3SIH2SIH2CH3     61991H  10C   2SI  2     G  0200.00   2500.00  1500.00      1
+ 0.01948332E+03 0.01195163E+00-0.02653155E-05-0.01489522E-07 0.03049901E-11    2
+-0.01405639E+06-0.07368209E+03 0.03129493E+02 0.05016930E+00-0.03522061E-03    3
+ 0.01354295E-06-0.02274339E-10-0.08303932E+05 0.01426819E+03                   4
+CH3SIHCL2          10891C   1CL  2H   4SI  1G  0200.00   4000.00  1500.00      1
+ 0.01459367E+03 0.04005638E-01-0.04816391E-05-0.01336359E-08 0.02648177E-12    2
+-0.05325682E+06-0.04689839E+03 0.04156949E+02 0.02994072E+00-0.02797859E-03    3
+ 0.01431829E-06-0.03010165E-10-0.04952345E+06 0.09043929E+02                   4
+CH4               121286C   1H   4          G  0200.00   5000.00  1000.00      1
+ 0.01683479E+02 0.01023724E+00-0.03875129E-04 0.06785585E-08-0.04503423E-12    2
+-0.01008079E+06 0.09623395E+02 0.07787415E+01 0.01747668E+00-0.02783409E-03    3
+ 0.03049708E-06-0.01223931E-09-0.09825229E+05 0.01372219E+03                   4
+CHCL              112989C   1H   1CL  1     G  0200.00   5000.00  1200.00      1
+ 0.03216518E+02 0.05976969E-01-0.02918238E-04 0.05912801E-08-0.04297945E-12    2
+ 0.03879839E+06 0.07793842E+02 0.02781263E+02 0.07805384E-01-0.01063711E-03    3
+ 0.01065441E-06-0.03916797E-10 0.03916144E+06 0.01045515E+03                   4
+CHCL2              40992H   1C   1CL  2     G  0200.00   4000.00  1500.00      1
+ 0.06912875E+02 0.01251733E-01-0.01973086E-05-0.02153722E-09 0.05853635E-13    2
+ 0.07229632E+05-0.07968135E+02 0.02809820E+02 0.01295936E+00-0.01392392E-03    3
+ 0.07533319E-07-0.01588448E-10 0.08515305E+05 0.01343798E+03                   4
+CHCL2CCL2          40992H   1C   2CL  4     G  0200.00   4000.00  1500.00      1
+ 0.01530640E+03 0.02140772E-01-0.04619954E-05 0.08299157E-10 0.05236928E-13    2
+-0.01524306E+05-0.04358303E+03 0.04207169E+02 0.03437580E+00-0.03802411E-03    3
+ 0.02026572E-06-0.04164115E-10 0.01811422E+05 0.01398021E+03                   4
+CHCL2CCLO          40992H   1C   2 O  1CL  3G  0200.00   4000.00  1500.00      1
+ 0.01488775E+03 0.02323698E-01-0.04365744E-05-0.01680889E-09 0.08613253E-13    2
+-0.03483792E+06-0.04504932E+03 0.04593886E+02 0.03118954E+00-0.03338775E-03    3
+ 0.01763042E-06-0.03630728E-10-0.03160866E+06 0.08756166E+02                   4
+CHCL2CH2           53090C   2H   3CL  2     G  0200.00   5000.00  1500.00      1
+ 0.01306632E+03 0.02964322E-01-0.04303601E-05-0.03173131E-09 0.08244908E-13    2
+ 0.04594697E+05-0.03814765E+03 0.02234889E+02 0.03152885E+00-0.03307990E-03    3
+ 0.01825221E-06-0.03994163E-10 0.08375531E+05 0.01944506E+03                   4
+CHCL2CHCL          53090C   2H   2CL  3     G  0200.00   5000.00  1500.00      1
+ 0.01445051E+03 0.02336553E-01-0.04132107E-05-0.05243785E-11 0.04204775E-13    2
+-0.05183250E+04-0.04362699E+03 0.03789098E+02 0.03243338E+00-0.03598339E-03    3
+ 0.01993302E-06-0.04287482E-10 0.02920910E+05 0.01221991E+03                   4
+CHCL2CHCL2         53090C   2H   2CL  4     G  0200.00   5000.00  1500.00      1
+ 0.01745859E+03 0.02484178E-01-0.05127803E-05 0.02266909E-09 0.02371932E-13    2
+-0.02510699E+06-0.06065213E+03 0.02711746E+02 0.04441279E+00-0.04905962E-03    3
+ 0.02632472E-06-0.05466293E-10-0.02052421E+06 0.01624857E+03                   4
+CHCL3              40992H   1C   1CL  3     G  0200.00   4000.00  1500.00      1
+ 0.01034980E+03 0.01690302E-01-0.03209168E-05-0.09502160E-10 0.05845725E-13    2
+-0.01567029E+06-0.02558805E+03 0.02905633E+02 0.02315061E+00-0.02534675E-03    3
+ 0.01356724E-06-0.02810882E-10-0.01339798E+06 0.01310749E+03                   4
+CHCLCCL            40992H   1C   2CL  2     G  0200.00   4000.00  1500.00      1
+ 0.01027647E+03 0.01733039E-01-0.03161161E-05-0.08153494E-10 0.05443014E-13    2
+ 0.02418877E+06-0.02436862E+03 0.02625129E+02 0.02366908E+00-0.02583240E-03    3
+ 0.01383374E-06-0.02870111E-10 0.02654214E+06 0.01545629E+03                   4
+CHCLCCLOH          53090C   2H   2O   1CL  2G  0200.00   5000.00  1500.00      1
+ 0.01412206E+03 0.02583764E-01-0.04576900E-05 0.05215675E-10 0.03521300E-13    2
+-0.02752482E+06-0.04544297E+03 0.02020547E+02 0.03810981E+00-0.04280147E-03    3
+ 0.02343806E-06-0.04934735E-10-0.02385982E+06 0.01729375E+03                   4
+CHCLCH             53090C   2H   2CL  1     G  0200.00   5000.00  1500.00      1
+ 0.09924881E+02 0.01618108E-01-0.02995768E-05-0.09718417E-11 0.03296695E-13    2
+ 0.02834312E+06-0.02704593E+03 0.01190122E+02 0.02432800E+00-0.02555965E-03    3
+ 0.01375158E-06-0.02941848E-10 0.03138157E+06 0.01944186E+03                   4
+CHCLCHCL           53090C   2H   2CL  2     G  0200.00   5000.00  1500.00      1
+ 0.01163648E+03 0.02461981E-01-0.03900520E-05-0.01521677E-09 0.05853766E-13    2
+-0.05593248E+05-0.03507354E+03 0.01054340E+02 0.03076645E+00-0.03252549E-03    3
+ 0.01763454E-06-0.03774444E-10-0.02006846E+05 0.02094011E+03                   4
+CHCLCHOH           53090C   2H   3O   1CL  1G  0200.00   5000.00  1500.00      1
+ 0.01285464E+03 0.03107712E-01-0.04837735E-05-0.02088657E-09 0.07393125E-13    2
+-0.02505588E+06-0.04274804E+03-0.02073397E+01 0.03868022E+00-0.04104567E-03    3
+ 0.02211252E-06-0.04680556E-10-0.02074261E+06 0.02608356E+03                   4
+CHCLOH             53090C   1H   2O   1CL  1G  0200.00   5000.00  1500.00      1
+ 0.09427376E+02 0.01722643E-01-0.02912707E-05-0.03765845E-10 0.03354461E-13    2
+-0.01224575E+06-0.02330123E+03 0.01319372E+02 0.02406119E+00-0.02560105E-03    3
+ 0.01356738E-06-0.02812530E-10-0.09640457E+05 0.01925640E+03                   4
+CHCLOHCH2          53090C   2H   4O   1CL  1G  0200.00   5000.00  1500.00      1
+ 0.01438435E+03 0.03552541E-01-0.05033147E-05-0.04051247E-09 0.01001172E-12    2
+-0.01383899E+06-0.04819745E+03 0.01473757E+02 0.03764188E+00-0.03898776E-03    3
+ 0.02112109E-06-0.04543830E-10-0.09395106E+05 0.02033823E+03                   4
+CHCLOHCHCL         53090C   2H   3O   1CL  2G  0200.00   5000.00  1500.00      1
+ 0.01567240E+03 0.02970040E-01-0.04827588E-05-0.01366600E-09 0.06500296E-13    2
+-0.01896002E+06-0.05132923E+03 0.02626025E+02 0.03856175E+00-0.04091474E-03    3
+ 0.02190241E-06-0.04603080E-10-0.01468188E+06 0.01735864E+03                   4
+CHF                82489C   1H   1F   1     G  0200.00   5000.00  1000.00      1
+ 0.04242812E+02 0.02066316E-01-0.06527951E-05 0.01388700E-08-0.01213336E-12    2
+ 0.01355982E+06 0.01680197E+02 0.03029061E+02 0.04850873E-01-0.04971679E-04    3
+ 0.05277968E-07-0.02403154E-10 0.01401435E+06 0.08324101E+02                   4
+CHF3               82489C   1H   1F   3     G  0200.00   5000.00  1000.00      1
+ 0.06834333E+02 0.06248731E-01-0.02575750E-04 0.04809112E-08-0.03352074E-12    2
+-0.08663771E+06-0.01062741E+03 0.08725142E+01 0.02308432E+00-0.02123718E-03    3
+ 0.01114428E-06-0.02909229E-10-0.08496391E+06 0.02021499E+03                   4
+CHOHCLCCL2         53090C   2H   2O   1CL  3G  0200.00   5000.00  1500.00      1
+ 0.01681824E+03 0.02450153E-01-0.04706624E-05 0.01313263E-09 0.03046283E-13    2
+-0.02253368E+06-0.05396958E+03 0.04216444E+02 0.03898554E+00-0.04360467E-03    3
+ 0.02374677E-06-0.04984764E-10-0.01867017E+06 0.01152520E+03                   4
+CHSICL             40992H   1C   1SI  1CL  1G  0200.00   4000.00  1500.00      1
+ 0.08205361E+02 0.01092172E-01-0.02021812E-05-0.04611367E-10 0.03306854E-13    2
+ 0.04201323E+06-0.01240589E+03 0.04575767E+02 0.01266147E+00-0.01507699E-03    3
+ 0.08704482E-07-0.01902710E-10 0.04304864E+06 0.06132926E+02                   4
+CHSICL2            40992H   1C   1SI  1CL  2G  0200.00   4000.00  1500.00      1
+ 0.01071823E+03 0.01148355E-01-0.02625783E-05 0.01567972E-09 0.01085455E-13    2
+ 0.01124882E+06-0.02053734E+03 0.05945817E+02 0.01709681E+00-0.02135360E-03    3
+ 0.01252863E-06-0.02749860E-10 0.01253413E+06 0.03573691E+02                   4
+CHSICL3            40992H   1C   1SI  1CL  3G  0200.00   4000.00  1500.00      1
+ 0.01359698E+03 0.01283679E-01-0.03320724E-05 0.03292615E-09-0.05463635E-14    2
+-0.02236189E+06-0.03349768E+03 0.07368467E+02 0.02227384E+00-0.02809218E-03    3
+ 0.01644147E-06-0.03590729E-10-0.02071740E+06-0.02118077E+02                   4
+CHSIH2CL           40992H   3C   1SI  1CL  1G  0200.00   4000.00  1500.00      1
+ 0.01142815E+03 0.02475732E-01-0.03864817E-05-0.04667547E-09 0.01222497E-12    2
+ 0.02085332E+06-0.03033129E+03 0.02869509E+02 0.02622702E+00-0.02794178E-03    3
+ 0.01516891E-06-0.03231519E-10 0.02364000E+06 0.01462055E+03                   4
+CHSIHCL            40992H   2C   1SI  1CL  1G  0200.00   4000.00  1500.00      1
+ 0.09716450E+02 0.01691882E-01-0.02846288E-05-0.02130090E-09 0.06948758E-13    2
+ 0.03056780E+06-0.02079822E+03 0.04045980E+02 0.01850072E+00-0.02095734E-03    3
+ 0.01185107E-06-0.02580401E-10 0.03232392E+06 0.08632908E+02                   4
+CHSIHCL2           40992H   2C   1SI  1CL  2G  0200.00   4000.00  1500.00      1
+ 0.01246646E+03 0.01911555E-01-0.03687550E-05-0.05466318E-10 0.05749803E-13    2
+-0.09679288E+04-0.03163481E+03 0.04853917E+02 0.02509790E+00-0.02916486E-03    3
+ 0.01649649E-06-0.03563598E-10 0.01297543E+05 0.07606296E+02                   4
+CL                 42189CL  1               G  0200.00   5000.00  1000.00      1
+ 0.02920237E+02-0.03597985E-02 0.01294294E-05-0.02162776E-09 0.01376517E-13    2
+ 0.01371338E+06 0.03262690E+02 0.02381577E+02 0.08891079E-02 0.04070476E-05    3
+-0.02168943E-07 0.01160827E-10 0.01383999E+06 0.06021818E+02                   4
+CL(CH3)SICH2       40992H   5C   2SI  1CL  1G  0200.00   4000.00  1500.00      1
+ 0.01496923E+03 0.05605854E-01-0.06191278E-05-0.02134591E-08 0.03977673E-12    2
+-0.01304066E+06-0.05036296E+03 0.02980753E+02 0.03627511E+00-0.03428566E-03    3
+ 0.01799146E-06-0.03853029E-10-0.08814405E+05 0.01362870E+03                   4
+CL2                42189CL  2               G  0200.00   5000.00  1000.00      1
+ 0.04274587E+02 0.03717337E-02-0.01893490E-05 0.05337465E-09-0.05057602E-13    2
+-0.01331149E+05 0.02256947E+02 0.03439587E+02 0.02870774E-01-0.02385871E-04    3
+ 0.02892918E-08 0.02915057E-11-0.01131787E+05 0.06471359E+02                   4
+CL2CCCL2           40992C   2CL  4          G  0200.00   4000.00  1500.00      1
+ 0.01440000E+03 0.01269397E-01-0.03525286E-05 0.04493620E-09-0.02348053E-13    2
+-0.08039017E+05-0.04321878E+03 0.05557831E+02 0.02778255E+00-0.03176769E-03    3
+ 0.01706054E-06-0.03492940E-10-0.05495042E+05 0.02293508E+02                   4
+CL2CCHCL           40992H   1C   2CL  3     G  0200.00   4000.00  1500.00      1
+ 0.01278204E+03 0.02068630E-01-0.03764411E-05-0.09077792E-10 0.06116574E-13    2
+-0.06934337E+05-0.03655991E+03 0.03457684E+02 0.02848717E+00-0.03070062E-03    3
+ 0.01624951E-06-0.03341401E-10-0.04047205E+05 0.01206381E+03                   4
+CL2CCHO            40992H   1C   2 O  1CL  2G  0200.00   4000.00  1500.00      1
+ 0.01294627E+03 0.02168144E-01-0.04244587E-05-0.03590986E-09 0.01220303E-12    2
+-0.01144361E+06-0.03783814E+03 0.03400952E+02 0.02760695E+00-0.02843245E-03    3
+ 0.01470263E-06-0.03017427E-10-0.08287517E+05 0.01257321E+03                   4
+CL2CHOH            53090C   1H   2O   1CL  2G  0200.00   5000.00  1500.00      1
+ 0.01129114E+03 0.02286704E-01-0.03461513E-05-0.01814480E-09 0.05661342E-13    2
+-0.03803060E+06-0.03079831E+03 0.02619078E+02 0.02601286E+00-0.02784252E-03    3
+ 0.01528682E-06-0.03294008E-10-0.03513998E+06 0.01492462E+03                   4
+CL2CO              40992C   1 O  1CL  2     G  0200.00   4000.00  1500.00      1
+ 0.08764773E+02 0.08919938E-02-0.02237590E-05 0.01486621E-09 0.09630870E-14    2
+-0.02973390E+06-0.01732025E+03 0.03460242E+02 0.01632331E+00-0.01828304E-03    3
+ 0.09805656E-07-0.02024319E-10-0.02813622E+06 0.01019127E+03                   4
+CL2COH             53090C   1O   1H   1CL  2G  0200.00   5000.00  1500.00      1
+ 0.01026215E+03 0.01316796E-01-0.02754008E-05 0.01630771E-09 0.06472563E-14    2
+-0.01511655E+06-0.02298315E+03 0.03800719E+02 0.02204678E+00-0.02673857E-03    3
+ 0.01531854E-06-0.03305323E-10-0.01332053E+06 0.09915879E+02                   4
+CL2HCO             53090C   1H   1O   1CL  2G  0200.00   5000.00  1500.00      1
+ 0.01051838E+03 0.01499316E-01-0.02927670E-05 0.07898750E-10 0.01988433E-13    2
+-0.06272394E+05-0.02634097E+03 0.02241202E+02 0.02456990E+00-0.02682371E-03    3
+ 0.01443170E-06-0.03023080E-10-0.03624526E+05 0.01703508E+03                   4
+CL2SI(CH3)2        40992H   6C   2SI  1CL  2G  0200.00   4000.00  1500.00      1
+ 0.01890988E+03 0.06245385E-01-0.06370532E-05-0.02508388E-08 0.04589637E-12    2
+-0.06523166E+06-0.06829627E+03 0.05958770E+02 0.03632045E+00-0.03098078E-03    3
+ 0.01545683E-06-0.03292671E-10-0.06031232E+06 0.01996401E+02                   4
+CL2SI(CH3)CH2      40992H   5C   2SI  1CL  2G  0200.00   4000.00  1500.00      1
+ 0.01795078E+03 0.05155757E-01-0.06049094E-05-0.01717793E-08 0.03355529E-12    2
+-0.03961749E+06-0.05949218E+03 0.05993815E+02 0.03621806E+00-0.03546358E-03    3
+ 0.01906128E-06-0.04137511E-10-0.03541814E+06 0.04216162E+02                   4
+CL2SICH2           40992H   2C   1SI  1CL  2G  0200.00   4000.00  1500.00      1
+ 0.01186709E+03 0.02689241E-01-0.04231139E-05-0.05555102E-09 0.01367174E-12    2
+-0.02169965E+06-0.03225026E+03 0.04111900E+02 0.02637445E+00-0.02985130E-03    3
+ 0.01679309E-06-0.03625511E-10-0.01940307E+06 0.07695176E+02                   4
+CL2SICH3           40992H   3C   1SI  1CL  2G  0200.00   4000.00  1500.00      1
+ 0.01285090E+03 0.03239360E-01-0.03774509E-05-0.01111777E-08 0.02163712E-12    2
+-0.03164727E+06-0.03531424E+03 0.05273286E+02 0.02205797E+00-0.02049425E-03    3
+ 0.01060061E-06-0.02257829E-10-0.02891555E+06 0.05340218E+02                   4
+CL2SISI            40992SI  2CL  2          G  0200.00   4000.00  1500.00      1
+ 0.09706403E+02 0.03323652E-02-0.01679851E-05 0.04061274E-09-0.03746093E-13    2
+ 0.01334060E+06-0.01565614E+03 0.06576632E+02 0.01105568E+00-0.01422816E-03    3
+ 0.08199114E-07-0.01752833E-10 0.01412004E+06 0.06538601E-02                   4
+CL2SISICL          40992SI  2CL  3          G  0200.00   4000.00  1500.00      1
+ 0.01304318E+03-0.01847658E-03-0.02187635E-05 0.08817012E-09-0.01004063E-12    2
+-0.01640770E+06-0.02832289E+03 0.08389457E+02 0.01629172E+00-0.02138192E-03    3
+ 0.01207431E-06-0.02508349E-10-0.01534318E+06-0.05268396E+02                   4
+CL2SISICL2         40992SI  2CL  4          G  0200.00   4000.00  1500.00      1
+ 0.01620538E+03 0.08400587E-04-0.02457560E-05 0.08992196E-09-0.09639101E-13    2
+-0.05343016E+06-0.04193027E+03 0.01077595E+03 0.01717615E+00-0.02131386E-03    3
+ 0.01172528E-06-0.02417202E-10-0.05196762E+06-0.01431634E+03                   4
+CL3CCO             81092C   2O   1CL  3     G  0200.00   5000.00  1400.00      1
+ 0.01383246E+03 0.01240141E-01-0.03510210E-05 0.04103960E-09-0.01475220E-13    2
+ 0.07499342E+07-0.03691505E+03 0.05016825E+02 0.02899350E+00-0.03563990E-03    3
+ 0.02082488E-06-0.04661957E-10 0.07524076E+07 0.08141487E+02                   4
+CL3CO              53090C   1O   1CL  3     G  0200.00   5000.00  1500.00      1
+ 0.01208526E+03 0.07759038E-02-0.02700075E-05 0.04346263E-09-0.02671642E-13    2
+-0.06464079E+05-0.03099432E+03 0.04548646E+02 0.02463303E+00-0.02974898E-03    3
+ 0.01647154E-06-0.03433021E-10-0.04416522E+05 0.07360693E+02                   4
+CL3COH             53090C   1O   1H   1CL  3G  0200.00   5000.00  1500.00      1
+ 0.01285985E+03 0.01588083E-01-0.03377500E-05 0.02031362E-09 0.08017922E-14    2
+-0.03807818E+06-0.03561945E+03 0.04269172E+02 0.02791723E+00-0.03272753E-03    3
+ 0.01828272E-06-0.03882978E-10-0.03558880E+06 0.08521096E+02                   4
+CL3SICH3           40992H   3C   1SI  1CL  3G  0200.00   4000.00  1500.00      1
+ 0.01572988E+03 0.03373817E-01-0.04472970E-05-0.09359551E-09 0.01995442E-12    2
+-0.07539927E+06-0.05017697E+03 0.06708039E+02 0.02724465E+00-0.02730290E-03    3
+ 0.01457864E-06-0.03116460E-10-0.07231476E+06-0.02328694E+02                   4
+CL3SISI            40992SI  2CL  3          G  0200.00   4000.00  1500.00      1
+ 0.01263015E+03 0.04310339E-02-0.02248369E-05 0.05573034E-09-0.05229996E-13    2
+-0.01723335E+06-0.02767933E+03 0.08429942E+02 0.01496243E+00-0.01942087E-03    3
+ 0.01125326E-06-0.02414611E-10-0.01619796E+06-0.06711706E+02                   4
+CL3SISICL          40992SI  2CL  4          G  0200.00   4000.00  1500.00      1
+ 0.01503498E+03 0.05376136E-02-0.02788507E-05 0.06889626E-09-0.06454867E-13    2
+-0.05496076E+06-0.03460735E+03 0.09721335E+02 0.01889709E+00-0.02451039E-03    3
+ 0.01419597E-06-0.03045164E-10-0.05364875E+06-0.08073287E+02                   4
+CLCCCL             40992C   2CL  2          G  0200.00   4000.00  1500.00      1
+ 0.09105373E+02 0.09281996E-02-0.01948371E-05 0.01590377E-10 0.02472937E-13    2
+ 0.02507216E+06-0.02072870E+03 0.05118707E+02 0.01243668E+00-0.01386540E-03    3
+ 0.07609302E-07-0.01615959E-10 0.02631398E+06 0.03298777E+00                   4
+CLCCO              53090C   2O   1CL  1     G  0200.00   5000.00  1500.00      1
+ 0.09368609E+02 0.03733935E-02-0.01286981E-05 0.01206469E-09 0.09220283E-15    2
+ 0.01762808E+06-0.02046752E+03 0.04417443E+02 0.01129365E+00-0.01013488E-03    3
+ 0.04661357E-07-0.09098661E-11 0.01952423E+06 0.06539246E+02                   4
+CLCH2OH            53090C   1H   3O   1CL  1G  0200.00   5000.00  1500.00      1
+ 0.09750194E+02 0.02974385E-01-0.03450482E-05-0.06010047E-09 0.01089784E-12    2
+-0.03248678E+06-0.02345467E+03 0.08330910E+01 0.02358999E+00-0.02137297E-03    3
+ 0.01105808E-06-0.02402402E-10-0.02905351E+06 0.02503745E+03                   4
+CLCO               40992C   1 O  1CL  1     G  0200.00   4000.00  1500.00      1
+ 0.06134827E+02 0.05369294E-02-0.07583742E-06-0.01514557E-09 0.03376080E-13    2
+-0.05363338E+05-0.03198172E+02 0.04790425E+02 0.03165209E-01-0.02098201E-04    3
+ 0.07703306E-08-0.01346351E-11-0.04812905E+05 0.04257480E+02                   4
+CLCOH              53090C   1H   1O   1CL  1G  0200.00   5000.00  1500.00      1
+ 0.07642908E+02 0.01507814E-01-0.02651581E-05-0.01466785E-09 0.04797316E-13    2
+-0.02511908E+05-0.01405046E+03 0.02037663E+02 0.01733328E+00-0.01936443E-03    3
+ 0.01099366E-06-0.02427341E-10-0.06596141E+04 0.01538422E+03                   4
+CLH2CO             53090C   1H   2O   1CL  1G  0200.00   5000.00  1500.00      1
+ 0.09104530E+02 0.02130629E-01-0.02994563E-05-0.02733652E-09 0.06437597E-13    2
+-0.05255641E+05-0.02258799E+03 0.08437505E+01 0.02258903E+00-0.02217447E-03    3
+ 0.01165204E-06-0.02487574E-10-0.02264707E+05 0.02176388E+03                   4
+CLHCO              40992H   1C   1 O  1CL  1G  0200.00   4000.00  1500.00      1
+ 0.07132409E+02 0.01686027E-01-0.02034320E-05-0.05804520E-09 0.01152902E-12    2
+-0.02522232E+06-0.01150137E+03 0.02378612E+02 0.01278870E+00-0.01094130E-03    3
+ 0.05089666E-07-0.09985544E-11-0.02348305E+06 0.01417749E+03                   4
+CLO                40992 O  1CL  1          G  0200.00   4000.00  1500.00      1
+ 0.04320627E+02 0.01730970E-02-0.07157875E-06 0.01424639E-09-0.01115543E-13    2
+ 0.01328601E+06 0.01764362E+02 0.02918696E+02 0.04664857E-01-0.05654826E-04    3
+ 0.03131108E-07-0.06515478E-11 0.01365989E+06 0.08877238E+02                   4
+CLOCL              53090O   1CL  2          G  0200.00   5000.00  1500.00      1
+ 0.06635186E+02 0.03284434E-02-0.01225328E-05 0.02123621E-09-0.01404377E-13    2
+ 0.07672352E+05-0.06410996E+02 0.03397880E+02 0.01080127E+00-0.01324655E-03    3
+ 0.07392960E-07-0.01546583E-10 0.08527797E+05 0.09981834E+02                   4
+CLOO               40992 O  2CL  1          G  0200.00   4000.00  1500.00      1
+ 0.06500858E+02 0.04259430E-02-0.01471496E-05 0.02312042E-09-0.01357033E-13    2
+ 0.01465068E+06-0.05831007E+02 0.03097113E+02 0.01088530E+00-0.01274586E-03    3
+ 0.06909658E-07-0.01419679E-10 0.01560137E+06 0.01159355E+03                   4
+CLSI(CH3)2         40992H   6C   2SI  1CL  1G  0200.00   4000.00  1500.00      1
+ 0.01602072E+03 0.06121766E-01-0.05697358E-05-0.02685516E-08 0.04764446E-12    2
+-0.02023771E+06-0.05448286E+03 0.04366292E+02 0.03146501E+00-0.02442313E-03    3
+ 0.01155763E-06-0.02441972E-10-0.01561856E+06 0.09415220E+02                   4
+CLSI(CH3)2CH2      40992H   8C   3SI  1CL  1G  0200.00   4000.00  1500.00      1
+ 0.02115100E+03 0.08018265E-01-0.07924248E-05-0.03295050E-08 0.05955233E-12    2
+-0.02795355E+06-0.07954995E+03 0.05283182E+02 0.04510586E+00-0.03881938E-03    3
+ 0.01972924E-06-0.04266615E-10-0.02191153E+06 0.06553031E+02                   4
+CLSI(CH3)3         40992H   9C   3SI  1CL  1G  0200.00   4000.00  1500.00      1
+ 0.02209311E+03 0.09120019E-01-0.08258094E-05-0.04093090E-08 0.07203542E-12    2
+-0.05338834E+06-0.08746922E+03 0.05151450E+02 0.04536455E+00-0.03440035E-03    3
+ 0.01610968E-06-0.03411234E-10-0.04659624E+06 0.05658041E+02                   4
+CLSICH3            40992H   3C   1SI  1CL  1G  0200.00   4000.00  1500.00      1
+ 0.01002062E+03 0.03097435E-01-0.03221687E-05-0.01222123E-08 0.02253457E-12    2
+-0.05623578E+05-0.02357626E+03 0.03485850E+02 0.01832800E+00-0.01572477E-03    3
+ 0.07852071E-07-0.01669997E-10-0.03149803E+05 0.01186709E+03                   4
+CLSISI             40992SI  2CL  1          G  0200.00   4000.00  1500.00      1
+ 0.06847303E+02 0.01844250E-02-0.09793979E-06 0.02440659E-09-0.02287823E-13    2
+ 0.04772443E+06-0.03339368E+02 0.05234557E+02 0.05788035E-01-0.07516996E-04    3
+ 0.04356402E-07-0.09346885E-11 0.04811932E+06 0.04702599E+02                   4
+CLSISICL           40992SI  2CL  2          G  0200.00   4000.00  1500.00      1
+ 0.01008343E+03-0.01216815E-02-0.01555866E-05 0.07247150E-09-0.08633006E-13    2
+ 0.01376083E+06-0.01644862E+03 0.07022588E+02 0.01136420E+00-0.01558778E-03    3
+ 0.08961882E-07-0.01874769E-10 0.01437523E+06-0.01570360E+02                   4
+CN                121286C   1N   1          G  0200.00   5000.00  1000.00      1
+ 0.03720120E+02 0.01518351E-02 0.01987381E-05-0.03798371E-09 0.01328230E-13    2
+ 0.05111626E+06 0.02888597E+02 0.03663204E+02-0.01156529E-01 0.02163409E-04    3
+ 0.01854208E-08-0.08214695E-11 0.05128118E+06 0.03739016E+02                   4
+CN+               121286C   1N   1E  -1     G  0200.00   5000.00  1000.00      1
+ 0.03701463E+02 0.07482931E-02-0.01790173E-05 0.02366368E-09-0.01437037E-13    2
+ 0.02155966E+07 0.04108678E+02 0.03118657E+02 0.01553258E-01-0.09487764E-05    3
+ 0.01479501E-07-0.09096763E-11 0.02158512E+07 0.07456254E+02                   4
+CN-               121286C   1N   1E   1     G  0200.00   5000.00  1000.00      1
+ 0.02981277E+02 0.01464773E-01-0.05672737E-05 0.01017623E-08-0.06870931E-13    2
+ 0.06346098E+05 0.06171693E+02 0.03278995E+02 0.01464192E-01-0.03925899E-04    3
+ 0.05629875E-07-0.02473497E-10 0.06279509E+05 0.04568972E+02                   4
+CN2               121686C   1N   2          G  0200.00   5000.00  1000.00      1
+ 0.05567064E+02 0.02100501E-01-0.09010517E-05 0.01718572E-08-0.01206255E-12    2
+ 0.05489968E+06-0.05630054E+02 0.03039964E+02 0.08812105E-01-0.07605508E-04    3
+ 0.03554357E-07-0.08746100E-11 0.05563268E+06 0.07555298E+02                   4
+CNN               121286C   1N   2          G  0200.00   5000.00  1000.00      1
+ 0.04785930E+02 0.02559554E-01-0.01003133E-04 0.01807149E-08-0.01227383E-12    2
+ 0.06870411E+06-0.02953957E+01 0.03524436E+02 0.07271923E-01-0.08272698E-04    3
+ 0.05628705E-07-0.01641576E-10 0.06899647E+06 0.05932445E+02                   4
+CNO               103190C   1N   1O   1     G  0200.00   4000.00  1500.00      1
+ 0.06328598E+02 0.07390401E-02-0.01110761E-05-0.01846498E-09 0.04400816E-13    2
+ 0.04683387E+06-0.09091839E+02 0.03819863E+02 0.06416255E-01-0.05303312E-04    3
+ 0.02308211E-07-0.04256414E-11 0.04775979E+06 0.04507300E+02                   4
+CO                121286C   1O   1          G  0200.00   5000.00  1000.00      1
+ 0.03025078E+02 0.01442689E-01-0.05630828E-05 0.01018581E-08-0.06910952E-13    2
+-0.01426835E+06 0.06108218E+02 0.03262452E+02 0.01511941E-01-0.03881755E-04    3
+ 0.05581944E-07-0.02474951E-10-0.01431054E+06 0.04848897E+02                   4
+CO2               121286C   1O   2          G  0200.00   5000.00  1000.00      1
+ 0.04453623E+02 0.03140169E-01-0.01278411E-04 0.02393997E-08-0.01669033E-12    2
+-0.04896696E+06-0.09553959E+01 0.02275725E+02 0.09922072E-01-0.01040911E-03    3
+ 0.06866687E-07-0.02117280E-10-0.04837314E+06 0.01018849E+03                   4
+CO2-              121286C   1O   2E   1     G  0200.00   5000.00  1000.00      1
+ 0.04610574E+02 0.02532962E-01-0.01070165E-04 0.02026771E-08-0.01424958E-12    2
+-0.05479882E+06 0.01449630E+02 0.02637077E+02 0.07803230E-01-0.08196187E-04    3
+ 0.06537897E-07-0.02520220E-10-0.05416773E+06 0.01188955E+03                   4
+COS               121286C   1O   1S   1     G  0200.00   5000.00  1000.00      1
+ 0.05191925E+02 0.02506123E-01-0.01024396E-04 0.01943914E-08-0.01370800E-12    2
+-0.01846210E+06-0.02825755E+02 0.02858531E+02 0.09515458E-01-0.08884915E-04    3
+ 0.04220994E-07-0.08557340E-11-0.01785145E+06 0.09081989E+02                   4
+CS                121686C   1S   1          G  0200.00   5000.00  1000.00      1
+ 0.03737431E+02 0.08180451E-02-0.03178918E-05 0.05356801E-09-0.02886195E-13    2
+ 0.03247725E+06 0.03576557E+02 0.02938623E+02 0.02724352E-01-0.02397707E-04    3
+ 0.01689501E-07-0.06665050E-11 0.03273992E+06 0.07848720E+02                   4
+CS2               121286C   1S   2          G  0200.00   5000.00  1000.00      1
+ 0.05930515E+02 0.01813645E-01-0.07492172E-05 0.01445892E-08-0.01032638E-12    2
+ 0.01205117E+06-0.06093910E+02 0.03566139E+02 0.08374928E-01-0.06835704E-04    3
+ 0.02091214E-07-0.06737193E-12 0.01268848E+06 0.06085967E+02                   4
+CSICL              40992C   1SI  1CL  1     G  0200.00   4000.00  1500.00      1
+ 0.06817655E+02 0.02139344E-02-0.01117811E-05 0.02768133E-09-0.02593011E-13    2
+ 0.07133105E+06-0.04934821E+02 0.04809756E+02 0.07155653E-01-0.09274105E-04    3
+ 0.05368218E-07-0.01150991E-10 0.07182609E+06 0.05089754E+02                   4
+CSICL2             40992C   1SI  1CL  2     G  0200.00   4000.00  1500.00      1
+ 0.09603536E+02 0.04212005E-02-0.02008617E-05 0.04653654E-09-0.04174779E-13    2
+ 0.04167197E+06-0.01686119E+03 0.05482765E+02 0.01432904E+00-0.01824531E-03    3
+ 0.01044588E-06-0.02224179E-10 0.04271677E+06 0.03823593E+02                   4
+CSICL3             40992C   1SI  1CL  3     G  0200.00   4000.00  1500.00      1
+ 0.01250544E+03 0.05339218E-02-0.02588613E-05 0.06075307E-09-0.05497769E-13    2
+ 0.04346089E+04-0.02851950E+03 0.07246579E+02 0.01837148E+00-0.02348583E-03    3
+ 0.01347935E-06-0.02874547E-10 0.01760441E+05-0.02151092E+02                   4
+CSIH2CL            40992H   2C   1SI  1CL  1G  0200.00   4000.00  1500.00      1
+ 0.01027485E+03 0.01774759E-01-0.03308189E-05-0.01554251E-09 0.07008815E-13    2
+ 0.04915449E+06-0.02589174E+03 0.02180376E+02 0.02405210E+00-0.02551666E-03    3
+ 0.01345591E-06-0.02782039E-10 0.05175432E+06 0.01659754E+03                   4
+CSIHCL             40992H   1C   1SI  1CL  1G  0200.00   4000.00  1500.00      1
+ 0.08584251E+02 0.09503299E-02-0.01990512E-05 0.07276089E-11 0.02697011E-13    2
+ 0.05701632E+06-0.01616263E+03 0.04195792E+02 0.01336658E+00-0.01458110E-03    3
+ 0.07822924E-07-0.01632113E-10 0.05839343E+06 0.06755654E+02                   4
+CSIHCL2            40992H   1C   1SI  1CL  2G  0200.00   4000.00  1500.00      1
+ 0.01133022E+03 0.01200867E-01-0.03112842E-05 0.02565133E-09 0.05146234E-14    2
+ 0.02764986E+06-0.02737920E+03 0.04205701E+02 0.02278870E+00-0.02653546E-03    3
+ 0.01465130E-06-0.03083816E-10 0.02972624E+06 0.09294144E+02                   4
+DIOXANE           103190C   4H   8O   2     G  0200.00   4000.00  1500.00      1
+ 0.02168170E+03 0.01049644E+00-0.01053878E-04-0.04473945E-08 0.08168288E-12    2
+-0.04922005E+06-0.09955139E+03-0.05862900E+02 0.07081444E+00-0.05458695E-03    3
+ 0.02315148E-06-0.04289514E-10-0.03876477E+06 0.05061959E+03                   4
+E                 120186E   1               G  0200.00   5000.00  1000.00      1
+ 0.02500000E+02 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00    2
+-0.07453749E+04-0.01173403E+03 0.02500000E+02 0.00000000E+00 0.00000000E+00    3
+ 0.00000000E+00 0.00000000E+00-0.07453750E+04-0.01173403E+03                   4
+F                 121286F   1               G  0200.00   5000.00  1000.00      1
+ 0.02687459E+02-0.02010358E-02 0.08597957E-06-0.01644974E-09 0.01166160E-13    2
+ 0.08722883E+05 0.03882212E+02 0.02913905E+02-0.07336339E-02 0.05571015E-05    3
+-0.02666871E-08 0.08643255E-12 0.08651201E+05 0.02677115E+02                   4
+F2                121286F   2               G  0200.00   5000.00  1000.00      1
+ 0.04018308E+02 0.06221479E-02-0.02420845E-05 0.04742076E-09-0.03418141E-13    2
+-0.01300713E+05 0.01126327E+02 0.02940287E+02 0.03491492E-01-0.02458208E-04    3
+ 0.01837073E-08 0.02850917E-11-0.01010430E+05 0.06694194E+02                   4
+F2SINH             42489SI  1N   1F   2H   1G  0200.00   3000.00  1000.00      1
+ 0.01004830E+03 0.01983144E-01-0.02703169E-05-0.01767853E-08 0.04444368E-12    2
+-0.07739741E+06-0.02303889E+03 0.04951547E+02 0.01329636E+00-0.02098648E-04    3
+-0.01007276E-06 0.05552286E-10-0.07597541E+06 0.03690891E+02                   4
+F3SIN              22790F   3SI  1N   1     G  0200.00   4000.00  1000.00      1
+ 0.01151242E+03 0.01115029E-01-0.01605465E-05-0.05271933E-09 0.01160900E-12    2
+-0.01045919E+07-0.02981224E+03 0.06028419E+02 0.01278681E+00-0.01878856E-04    3
+-0.09695426E-07 0.05184848E-10-0.01029950E+07-0.08217831E+01                   4
+FNNF               42489F   2N   2          G  0200.00   3000.00  1000.00      1
+ 0.07255211E+02 0.02274410E-01-0.02793346E-05-0.02203844E-08 0.05359234E-12    2
+ 0.06360353E+05-0.01094248E+03 0.03127143E+02 0.01057134E+00-0.09746112E-05    3
+-0.07208357E-07 0.03567978E-10 0.07615831E+05 0.01107465E+03                   4
+FNO3              121286F   1N   1O   3     G  0200.00   5000.00  1000.00      1
+ 0.09176275E+02 0.04219072E-01-0.01835576E-04 0.03553718E-08-0.02541078E-12    2
+-0.02118639E+05-0.01934397E+03 0.02985786E+02 0.02094642E+00-0.01652733E-03    3
+ 0.04318770E-07 0.01660784E-11-0.04237215E+04 0.01266793E+03                   4
+FO                121286F   1O   1          G  0200.00   5000.00  1000.00      1
+ 0.03913735E+02 0.07210714E-02-0.02796614E-05 0.05337821E-09-0.03720184E-13    2
+ 0.01180141E+06 0.03346368E+02 0.02879578E+02 0.03399121E-01-0.02572855E-04    3
+ 0.07422381E-08-0.04328053E-12 0.01209663E+06 0.08738887E+02                   4
+FO2               121286F   1O   2          G  0200.00   5000.00  1000.00      1
+ 0.05678971E+02 0.01442455E-01-0.06229546E-05 0.01199612E-08-0.08543416E-13    2
+-0.03861836E+04-0.01941812E+02 0.03872542E+02 0.06409974E-01-0.05517785E-04    3
+ 0.02232771E-07-0.03876157E-11 0.01157076E+04 0.07406950E+02                   4
+FSIN               42489SI  1N   1F   1     G  0200.00   3000.00  1000.00      1
+ 0.06269572E+02 0.06747867E-02-0.01241976E-05-0.04970158E-09 0.01424452E-12    2
+ 0.02533350E+06-0.04201141E+02 0.04269969E+02 0.05298358E-01-0.01103802E-04    3
+-0.03962805E-07 0.02282982E-10 0.02587238E+06 0.06215038E+02                   4
+GA                 62987GA  1               G  0200.00   1500.00  0600.00      1
+ 0.02679919E+02 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00    2
+ 0.03368804E+06 0.06788109E+02 0.02679919E+02 0.00000000E+00 0.00000000E+00    3
+ 0.00000000E+00 0.00000000E+00 0.03368804E+06 0.06788109E+02                   4
+GA2H6              62987GA  2H   6          G  0200.00   1500.00  0600.00      1
+ 0.06016247E+02 0.01788370E+00-0.01204229E-05-0.06487881E-07 0.02075367E-10    2
+ 0.01312548E+06-0.05228030E+02-0.03914561E+02 0.04965434E+00 0.07401904E-04    3
+-0.01124137E-05 0.08726339E-09 0.01493079E+06 0.04274883E+03                   4
+GAAS               62987GA  1AS  1          G  0200.00   1500.00  0600.00      1
+ 0.04471149E+02 0.04238449E-02-0.02279405E-05-0.04441172E-10 0.02618952E-12    2
+ 0.04313359E+06 0.06212471E+02 0.03967474E+02 0.02318966E-01-0.01145452E-04    3
+-0.03411431E-07 0.03365821E-10 0.04321919E+06 0.08599628E+02                   4
+GAAS(3,C)          62987GA  3AS  3          G  0200.00   1500.00  0600.00      1
+ 0.01485247E+03 0.02959435E-01-0.07124246E-05-0.05316048E-08 0.01287321E-11    2
+ 0.01191262E+07-0.03514144E+03 0.01470189E+03 0.03827728E-01-0.02945747E-04    3
+ 0.02465370E-07-0.01520598E-10 0.01191496E+07-0.03445955E+03                   4
+GAAS(3,L)          62987GA  3AS  3          G  0200.00   1500.00  0600.00      1
+ 0.01356850E+03 0.02802435E-01-0.07969918E-05-0.06437098E-08 0.01560255E-11    2
+ 0.01248005E+07-0.01381063E+03 0.01341276E+03 0.03617689E-01-0.02726209E-04    3
+ 0.01877183E-07-0.01259178E-10 0.01248265E+07-0.01309195E+03                   4
+GAAS(5,C)          62987GA  5AS  5          G  0200.00   1500.00  0600.00      1
+ 0.02573672E+03 0.05523956E-01-0.01203468E-04-0.01043743E-07 0.02528931E-11    2
+ 0.01721381E+07-0.08254488E+03 0.02546512E+03 0.07014337E-01-0.04881356E-04    3
+ 0.03825484E-07-0.02450420E-10 0.01721819E+07-0.08130267E+03                   4
+GAAS(5,L)          62987GA  5AS  5          G  0200.00   1500.00  0600.00      1
+ 0.03045793E+03 0.05403152E-01-0.01649477E-04-0.09968842E-08 0.02413154E-11    2
+ 0.02020691E+07-0.07768010E+03 0.03015255E+03 0.07234394E-01-0.06497994E-04    3
+ 0.05559585E-07-0.03339653E-10 0.02021151E+07-0.07630866E+03                   4
+GAET               62987GA  1C   2H   5     G  0200.00   1500.00  0600.00      1
+ 0.05932970E+02 0.01342454E+00 0.04110518E-05-0.04286069E-07 0.01238710E-10    2
+ 0.06504863E+05 0.03090838E+02 0.01846399E+02 0.02592050E+00 0.05522394E-04    3
+-0.04977960E-06 0.03654362E-09 0.07264445E+05 0.02294639E+03                   4
+GAET2              62987GA  1C   4H  10     G  0200.00   1500.00  0600.00      1
+ 0.07213832E+02 0.03055228E+00 0.01249451E-04-0.09990274E-07 0.02881966E-10    2
+-0.01392119E+05-0.07795098E+00-0.02162930E+02 0.05892512E+00 0.01447145E-03    3
+-0.01168602E-05 0.08526654E-09 0.03561841E+04 0.04552626E+03                   4
+GAET3              62987GA  1C   6H  15     G  0200.00   1500.00  0600.00      1
+ 0.08436453E+02 0.04804950E+00 0.02119157E-04-0.01581685E-06 0.04571178E-10    2
+-0.01346996E+06-0.06196490E+02-0.06544289E+02 0.09332246E+00 0.02364121E-03    3
+-0.01874104E-05 0.01367721E-08-0.01067659E+06 0.06666796E+03                   4
+GAH                62987GA  1H   1          G  0200.00   1500.00  0600.00      1
+ 0.03232142E+02 0.01343247E-01-0.04325499E-06-0.02791841E-08 0.04973590E-12    2
+ 0.02656060E+06 0.05947896E+02 0.03524579E+02 0.03386213E-02-0.02064014E-05    3
+ 0.03220999E-07-0.02936132E-10 0.02651074E+06 0.04554067E+02                   4
+GAH2               62987GA  1H   2          G  0200.00   1500.00  0600.00      1
+ 0.03762385E+02 0.03210792E-01 0.02180096E-06-0.08908393E-08 0.02219063E-11    2
+ 0.01936647E+06 0.05783398E+02 0.03559710E+02 0.03676742E-01 0.06484499E-05    3
+-0.03109349E-07 0.01585414E-10 0.01940976E+06 0.06803082E+02                   4
+GAH3               62987GA  1H   3          G  0200.00   1500.00  0600.00      1
+ 0.03345476E+02 0.06399313E-01 0.01122996E-05-0.02065900E-07 0.05780202E-11    2
+ 0.01228185E+06 0.06394842E+02 0.01726154E+02 0.01124739E+00 0.02447527E-04    3
+-0.02026314E-06 0.01447000E-09 0.01258620E+06 0.01428445E+03                   4
+GAME               62987GA  1C   1H   3     G  0200.00   1500.00  0600.00      1
+ 0.04809857E+02 0.06824207E-01 0.02258235E-05-0.02018341E-07 0.05736453E-11    2
+ 0.07558677E+05 0.02595904E+02 0.03054537E+02 0.01218640E+00 0.02332213E-04    3
+-0.02121866E-06 0.01544226E-09 0.07885869E+05 0.01112878E+03                   4
+GAME2              62987GA  1C   2H   6     G  0200.00   1500.00  0600.00      1
+ 0.07068373E+02 0.01421602E+00 0.05120694E-05-0.04421986E-07 0.01309641E-10    2
+ 0.05453790E+05-0.04173960E+02 0.02257655E+02 0.02916446E+00 0.05669861E-04    3
+-0.05709755E-06 0.04268905E-09 0.06341297E+05 0.01915435E+03                   4
+GAME3              62987GA  1C   3H   9     G  0200.00   1500.00  0600.00      1
+ 0.08410636E+02 0.02262803E+00 0.01043019E-04-0.07049611E-07 0.02015308E-10    2
+-0.09087271E+05-0.01072250E+03 0.02120239E+02 0.04161029E+00 0.09959505E-04    3
+-0.07846792E-06 0.05693396E-09-0.07911968E+05 0.01988516E+03                   4
+H                 120186H   1               G  0200.00   5000.00  1000.00      1
+ 0.02500000E+02 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00    2
+ 0.02547163E+06-0.04601176E+01 0.02500000E+02 0.00000000E+00 0.00000000E+00    3
+ 0.00000000E+00 0.00000000E+00 0.02547163E+06-0.04601176E+01                   4
+H(CH3)SICH2        61991H   6C   2SI  1     G  0200.00   2500.00  1500.00      1
+ 0.01254527E+03 0.07143719E-01-0.01146987E-05-0.08100963E-08 0.01568740E-11    2
+ 0.07723628E+05-0.04075435E+03 0.01206249E+02 0.03587271E+00-0.02971970E-03    3
+ 0.01379675E-06-0.02695736E-10 0.01156328E+06 0.01956017E+03                   4
+H+                120186H   1E  -1          G  0200.00   5000.00  1000.00      1
+ 0.02500000E+02 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00    2
+ 0.01840334E+07-0.01153862E+02 0.02500000E+02 0.00000000E+00 0.00000000E+00    3
+ 0.00000000E+00 0.00000000E+00 0.01840334E+07-0.01153862E+02                   4
+H-                120186H   1E   1          G  0200.00   5000.00  1000.00      1
+ 0.02500000E+02 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00    2
+ 0.01596104E+06-0.01152449E+02 0.02500000E+02 0.00000000E+00 0.00000000E+00    3
+ 0.00000000E+00 0.00000000E+00 0.01596104E+06-0.01152449E+02                   4
+H2                121286H   2               G  0200.00   5000.00  1000.00      1
+ 0.02991423E+02 0.07000644E-02-0.05633829E-06-0.09231578E-10 0.01582752E-13    2
+-0.08350340E+04-0.01355110E+02 0.03298124E+02 0.08249442E-02-0.08143015E-05    3
+-0.09475434E-09 0.04134872E-11-0.01012521E+05-0.03294094E+02                   4
+H2ALME             62987AL  1C   1H   5     G  0200.00   1500.00  0600.00      1
+ 0.04898410E+02 0.01358223E+00 0.02611459E-05-0.04575170E-07 0.01384802E-10    2
+ 0.08743072E+04-0.01113117E+02-0.06283259E+01 0.03089531E+00 0.05774090E-04    3
+-0.06488033E-06 0.04907111E-09 0.01889334E+05 0.02565779E+03                   4
+H2ASME             62987AS  1C   1H   5     G  0200.00   1500.00  0600.00      1
+ 0.05686213E+02 0.02154422E+00 0.08185248E-05-0.07069951E-07 0.02101522E-10    2
+ 0.09331084E+05-0.06513957E+02-0.02113506E+02 0.04564229E+00 0.09983227E-04    3
+-0.09399697E-06 0.07014021E-09 0.01077170E+06 0.03132611E+03                   4
+H2C4O             120189H   2C   4O   1     G  0200.00   4000.00  1000.00      1
+ 0.01026888E+03 0.04896164E-01-0.04885081E-05-0.02708566E-08 0.05107013E-12    2
+ 0.02346903E+06-0.02815985E+03 0.04810971E+02 0.01313999E+00 0.09865073E-05    3
+-0.06120720E-07 0.01640003E-10 0.02545803E+06 0.02113424E+02                   4
+H2CCC             102093H   2C   3          G  0200.00   4000.00  1400.00      1
+ 0.08266525E+02 0.02728619E-01-0.02160829E-05-0.01515161E-08 0.02641695E-12    2
+ 0.07757192E+06-0.01864937E+03 0.04212193E+02 0.08954521E-01-0.01050721E-04    3
+-0.02578513E-07 0.09722836E-11 0.07922349E+06 0.04134299E+02                   4
+H2CCC(S)          102093H   2C   3          G  0200.00   4000.00  1400.00      1
+ 0.07904213E+02 0.02907464E-01-0.02219731E-05-0.01620844E-08 0.02796013E-12    2
+ 0.06385167E+06-0.01810882E+03 0.03794178E+02 0.08761049E-01-0.07975878E-05    3
+-0.02308045E-07 0.07911151E-11 0.06563580E+06 0.05264196E+02                   4
+H2CCCCCH          101993H   3C   5          G  0200.00   4000.00  1400.00      1
+ 0.01440736E+03 0.04424058E-01-0.03618245E-05-0.02456408E-08 0.04327859E-12    2
+ 0.05896103E+06-0.04775145E+03 0.07441421E+02 0.01585165E+00-0.02219895E-04    3
+-0.04928038E-07 0.01984559E-10 0.06162266E+06-0.09047891E+02                   4
+H2CCCCH            82489C   4H   3          G  0200.00   4000.00  1000.00      1
+ 0.01131409E+03 0.05014414E-01-0.05350445E-05-0.02825309E-08 0.05403279E-12    2
+ 0.05181211E+06-0.03062434E+03 0.06545799E+02 0.01242477E+00 0.05603226E-05    3
+-0.05631141E-07 0.01665218E-10 0.05352503E+06-0.04264082E+02                   4
+H2CCCCH2           82489C   4H   4          G  0200.00   4000.00  1000.00      1
+ 0.01062083E+03 0.07199370E-01-0.06806234E-05-0.04021185E-08 0.07378498E-12    2
+ 0.03358798E+06-0.03193583E+03 0.03849007E+02 0.01713169E+00 0.01644270E-04    3
+-0.07761590E-07 0.01947860E-10 0.03608372E+06 0.05732121E+02                   4
+H2CCCH             82489C   3H   3          G  0200.00   4000.00  1000.00      1
+ 0.08831047E+02 0.04357195E-01-0.04109067E-05-0.02368723E-08 0.04376520E-12    2
+ 0.03847420E+06-0.02177919E+03 0.04754200E+02 0.01108028E+00 0.02793323E-05    3
+-0.05479212E-07 0.01949629E-10 0.03988883E+06 0.05854549E+01                   4
+H2CCCLO            53090C   2H   2O   1CL  1G  0200.00   5000.00  1500.00      1
+ 0.01240462E+03 0.02067658E-01-0.03889952E-05-0.03138121E-10 0.04625008E-13    2
+-0.01114503E+06-0.03928723E+03 0.01680422E+02 0.03020642E+00-0.03234256E-03    3
+ 0.01779343E-06-0.03877221E-10-0.07395297E+05 0.01777265E+03                   4
+H2CCH(SICL2H)      40992H   4C   2SI  1CL  2G  0200.00   4000.00  1500.00      1
+ 0.01680247E+03 0.04516342E-01-0.05794312E-05-0.01367868E-08 0.02833862E-12    2
+-0.04037858E+06-0.05763375E+03 0.03640801E+02 0.03803764E+00-0.03641732E-03    3
+ 0.01855101E-06-0.03834642E-10-0.03581475E+06 0.01252145E+03                   4
+H2CCH2OH          103190C   2H   5O   1     G  0200.00   4000.00  1500.00      1
+ 0.01144956E+03 0.05249185E-01-0.04887850E-05-0.02243250E-08 0.03973360E-12    2
+-0.07554972E+05-0.03426083E+03 0.01304406E+02 0.02873214E+00-0.02387448E-03    3
+ 0.01166988E-06-0.02450027E-10-0.03718933E+05 0.02078756E+03                   4
+H2CCHO            103190C   2H   3O   1     G  0200.00   4000.00  1500.00      1
+ 0.09710060E+02 0.03854966E-01-0.04677825E-05-0.01505179E-08 0.02941428E-12    2
+-0.02692492E+05-0.02810566E+03 0.02802205E+01 0.02740311E+00-0.02554683E-03    3
+ 0.01306679E-06-0.02750425E-10 0.06682648E+04 0.02239731E+03                   4
+H2CCHSI            61991H   3C   2SI  1     G  0200.00   2500.00  1500.00      1
+ 0.09386889E+02 0.03941784E-01-0.01316150E-05-0.04081553E-08 0.07971026E-12    2
+ 0.04528924E+06-0.02340680E+03 0.01645904E+02 0.02461474E+00-0.02252401E-03    3
+ 0.01105892E-06-0.02209069E-10 0.04779814E+06 0.01738303E+03                   4
+H2CCHSIH           61991H   4C   2SI  1     G  0200.00   2500.00  1500.00      1
+ 0.01039415E+03 0.04987864E-01-0.01480904E-05-0.05650110E-08 0.01139073E-11    2
+ 0.03263919E+06-0.02930385E+03 0.01989225E+02 0.02637566E+00-0.02197547E-03    3
+ 0.09982490E-07-0.01893595E-10 0.03544082E+06 0.01531216E+03                   4
+H2CCHSIH2          61991H   5C   2SI  1     G  0200.00   2500.00  1500.00      1
+ 0.01289871E+03 0.05366252E-01-0.02345064E-05-0.05622057E-08 0.01143224E-11    2
+ 0.02373919E+06-0.04346106E+03 0.04606628E+01 0.03824847E+00-0.03490747E-03    3
+ 0.01656684E-06-0.03180820E-10 0.02773639E+06 0.02208512E+03                   4
+H2CCHSIH3          61991H   6C   2SI  1     G  0200.00   2500.00  1500.00      1
+ 0.01249653E+03 0.07666553E-01-0.02075339E-05-0.09569749E-08 0.01987112E-11    2
+ 0.04799029E+05-0.04174850E+03 0.07686183E+01 0.03576322E+00-0.02634364E-03    3
+ 0.01032868E-06-0.01717329E-10 0.08811836E+05 0.02100703E+03                   4
+H2CLSICH3          40992H   5C   1SI  1CL  1G  0200.00   4000.00  1500.00      1
+ 0.01354344E+03 0.04577293E-01-0.04988032E-05-0.01758807E-08 0.03311232E-12    2
+-0.03126783E+06-0.04541432E+03 0.02142669E+02 0.03103477E+00-0.02660368E-03    3
+ 0.01286599E-06-0.02646554E-10-0.02699973E+06 0.01636317E+03                   4
+H2CLSISICL3        40992H   2SI  2CL  4     G  0200.00   4000.00  1500.00      1
+ 0.01871701E+03 0.01924360E-01-0.04472779E-05 0.02003132E-09 0.03268818E-13    2
+-0.08047111E+06-0.05817685E+03 0.08945602E+02 0.03068227E+00-0.03483212E-03    3
+ 0.01910354E-06-0.04027623E-10-0.07751434E+06-0.07537633E+02                   4
+H2CN               41687H   2C   1N   1     G  0200.00   4000.00  1000.00      1
+ 0.05209703E+02 0.02969291E-01-0.02855589E-05-0.01635550E-08 0.03043259E-12    2
+ 0.02767711E+06-0.04444478E+02 0.02851661E+02 0.05695233E-01 0.01071140E-04    3
+-0.01622612E-07-0.02351108E-11 0.02863782E+06 0.08992751E+02                   4
+H2CNCH2           103190C   2H   4N   1     G  0200.00   4000.00  1500.00      1
+ 0.01065385E+03 0.05191287E-01-0.05816522E-05-0.02206912E-08 0.04101341E-12    2
+ 0.02345063E+06-0.03469895E+03-0.01203076E+01 0.03225369E+00-0.02968723E-03    3
+ 0.01527290E-06-0.03242500E-10 0.02728820E+06 0.02297042E+03                   4
+H2CNCH2O          103190C   2H   4N   1O   1G  0200.00   4000.00  1500.00      1
+ 0.01327652E+03 0.04830938E-01-0.04858949E-05-0.02009495E-08 0.03640181E-12    2
+ 0.01624962E+06-0.04713094E+03-0.01978522E+01 0.03341279E+00-0.02432022E-03    3
+ 0.09438643E-07-0.01604050E-10 0.02141154E+06 0.02658265E+03                   4
+H2CNCHO           103190C   2H   3N   1O   1G  0200.00   4000.00  1500.00      1
+ 0.01196792E+03 0.03915428E-01-0.03860933E-05-0.01696877E-08 0.03041050E-12    2
+-0.05902236E+05-0.03958545E+03 0.01096066E+02 0.02577215E+00-0.01711630E-03    3
+ 0.05880104E-07-0.08956774E-11-0.01612063E+05 0.02032528E+03                   4
+H2CNH              41687C   1H   3N   1     G  0200.00   4000.00  1000.00      1
+ 0.05221589E+02 0.04748526E-01-0.04179159E-05-0.02606612E-08 0.04703140E-12    2
+ 0.08657219E+05-0.04500776E+02 0.02365879E+02 0.06780570E-01 0.02423000E-04    3
+-0.06157824E-08-0.01615097E-10 0.09971141E+05 0.01230718E+03                   4
+H2CNNHO           103190C   1H   3N   2O   1G  0200.00   4000.00  1500.00      1
+ 0.01157754E+03 0.04489180E-01-0.05033233E-05-0.01651066E-08 0.03069139E-12    2
+ 0.01986783E+06-0.03656958E+03 0.05954945E+01 0.03239559E+00-0.02993966E-03    3
+ 0.01489054E-06-0.03022863E-10 0.02364485E+06 0.02192790E+03                   4
+H2CNNO            103190C   1H   2N   2O   1G  0200.00   4000.00  1500.00      1
+ 0.01016234E+03 0.03065936E-01-0.03082820E-05-0.01194424E-08 0.02169867E-12    2
+ 0.02494088E+06-0.02762275E+03 0.02498334E+02 0.01993009E+00-0.01557879E-03    3
+ 0.06838956E-07-0.01313250E-10 0.02786476E+06 0.01417025E+03                   4
+H2CNNO2            41687H   2C   1N   2O   2G  0200.00   4000.00  1000.00      1
+ 0.01140794E+03 0.04564542E-01-0.04600304E-05-0.02513539E-08 0.04782211E-12    2
+ 0.01242142E+06-0.03165238E+03 0.03534317E+02 0.01811272E+00 0.02394018E-05    3
+-0.01080024E-06 0.04222725E-10 0.01509006E+06 0.01131138E+03                   4
+H2CNO             103190C   1H   2N   1O   1G  0200.00   4000.00  1500.00      1
+ 0.08485639E+02 0.02633277E-01-0.03017498E-05-0.08341916E-09 0.01593977E-12    2
+ 0.01716434E+06-0.02052156E+03 0.01045856E+02 0.02126494E+00-0.01962754E-03    3
+ 0.09659592E-07-0.01941069E-10 0.01974611E+06 0.01919718E+03                   4
+H2CNO2            103190C   1H   2N   1O   2G  0200.00   4000.00  1500.00      1
+ 0.01127481E+03 0.02584711E-01-0.03934331E-05-0.05614969E-09 0.01392400E-12    2
+ 0.01360470E+06-0.03461951E+03 0.01165696E+02 0.02890490E+00-0.02817663E-03    3
+ 0.01387569E-06-0.02727595E-10 0.01694546E+06 0.01888293E+03                   4
+H2CONO            103190C   1H   2N   1O   2G  0200.00   4000.00  1500.00      1
+ 0.01075754E+03 0.02983288E-01-0.04123564E-05-0.08096724E-09 0.01720195E-12    2
+ 0.01230253E+06-0.02976009E+03 0.02120026E+02 0.02709056E+00-0.02799616E-03    3
+ 0.01479145E-06-0.03074997E-10 0.01504327E+06 0.01546092E+03                   4
+H2GAET             62987GA  1C   2H   7     G  0200.00   1500.00  0600.00      1
+ 0.07187273E+02 0.01867211E+00 0.06156157E-05-0.06027764E-07 0.01797524E-10    2
+-0.04232757E+05-0.04686699E+02 0.04124020E+01 0.03972972E+00 0.07979140E-04    3
+-0.08059234E-06 0.06040387E-09-0.02983932E+05 0.02816148E+03                   4
+H2GAME             62987GA  1C   1H   5     G  0200.00   1500.00  0600.00      1
+ 0.05831604E+02 0.01222872E+00 0.03033669E-05-0.03956941E-07 0.01225452E-10    2
+ 0.05189255E+05-0.04446614E+02 0.05251130E+01 0.02904695E+00 0.04844148E-04    3
+-0.06097646E-06 0.04672763E-09 0.06158712E+05 0.02122149E+03                   4
+H2NF               42489H   2N   1F   1     G  0200.00   3000.00  1000.00      1
+ 0.04143658E+02 0.03805135E-01-0.02771153E-05-0.03589717E-08 0.07589549E-12    2
+-0.04891486E+05 0.02309362E+02 0.02597863E+02 0.05882104E-01 0.04938351E-05    3
+-0.01948600E-07 0.03634003E-11-0.04301253E+05 0.01098289E+03                   4
+H2NNO             103190H   2N   2O   1     G  0200.00   4000.00  1500.00      1
+ 0.07759737E+02 0.03025701E-01-0.02888916E-05-0.01262990E-08 0.02195026E-12    2
+ 0.05894193E+05-0.01647713E+03 0.02088916E+02 0.01684997E+00-0.01428977E-03    3
+ 0.06830147E-07-0.01368985E-10 0.07907340E+05 0.01394381E+03                   4
+H2NO              102290H   2N   1O   1     G  0200.00   4000.00  1500.00      1
+ 0.05673346E+02 0.02298837E-01-0.01774446E-05-0.01103482E-08 0.01859762E-12    2
+ 0.05569325E+05-0.06153540E+02 0.02530590E+02 0.08596035E-01-0.05471030E-04    3
+ 0.02276249E-07-0.04648073E-11 0.06868030E+05 0.01126651E+03                   4
+H2NOH             103190H   3N   1O   1     G  0200.00   4000.00  1500.00      1
+ 0.06764633E+02 0.03047036E-01-0.02777798E-05-0.01250487E-08 0.02191094E-12    2
+-0.09026701E+05-0.01269845E+03 0.01407003E+02 0.01658498E+00-0.01463594E-03    3
+ 0.07318354E-07-0.01511897E-10-0.07158596E+05 0.01589649E+03                   4
+H2O                20387H   2O   1          G  0200.00   5000.00  1000.00      1
+ 0.02672146E+02 0.03056293E-01-0.08730260E-05 0.01200996E-08-0.06391618E-13    2
+-0.02989921E+06 0.06862817E+02 0.03386842E+02 0.03474982E-01-0.06354696E-04    3
+ 0.06968581E-07-0.02506588E-10-0.03020811E+06 0.02590233E+02                   4
+H2O(L)            120186H   2O   1          L  0273.15   1000.00  1000.00      1
+ 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00    2
+ 0.00000000E+00 0.00000000E+00 0.01271278E+03-0.01766279E+00-0.02255666E-03    3
+ 0.02082091E-05-0.02407861E-08-0.03748320E+06-0.05911535E+03                   4
+H2O(S)            120186H   2O   1          S  0200.00   0273.15  0273.15      1
+ 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00    2
+ 0.00000000E+00 0.00000000E+00-0.03926933E+00 0.01692042E+00 0.00000000E+00    3
+ 0.00000000E+00 0.00000000E+00-0.03594958E+06 0.05693378E+01                   4
+H2O2              120186H   2O   2          G  0200.00   5000.00  1000.00      1
+ 0.04573167E+02 0.04336136E-01-0.01474689E-04 0.02348904E-08-0.01431654E-12    2
+-0.01800696E+06 0.05011370E+01 0.03388754E+02 0.06569226E-01-0.01485013E-05    3
+-0.04625806E-07 0.02471515E-10-0.01766315E+06 0.06785363E+02                   4
+H2S               121286H   2S   1          G  0200.00   5000.00  1000.00      1
+ 0.02883147E+02 0.03827835E-01-0.01423398E-04 0.02497999E-08-0.01660273E-12    2
+-0.03480743E+05 0.07258162E+02 0.03071029E+02 0.05578261E-01-0.01030967E-03    3
+ 0.01201953E-06-0.04838370E-10-0.03559826E+05 0.05935226E+02                   4
+H2SI(CH3)2         61991H   8C   2SI  1     G  0200.00   2500.00  1500.00      1
+ 0.01362000E+03 0.01024457E+00-0.01528107E-05-0.01329179E-07 0.02717974E-11    2
+-0.01781386E+06-0.04695844E+03 0.02005893E+02 0.03638380E+00-0.02273374E-03    3
+ 0.07691266E-07-0.01156681E-10-0.01364280E+06 0.01583265E+03                   4
+H2SI(CH3)CH2       61991H   7C   2SI  1     G  0200.00   2500.00  1500.00      1
+ 0.01388829E+03 0.07937538E-01-0.01559644E-05-0.09324826E-08 0.01847251E-11    2
+ 0.06767195E+05-0.04464997E+03 0.01980449E+02 0.03727036E+00-0.02944759E-03    3
+ 0.01312558E-06-0.02507859E-10 0.01087973E+06 0.01898102E+03                   4
+H2SI(NH2)2         22790SI  1H   6N   2     G  0200.00   4000.00  1000.00      1
+ 0.01302179E+03 0.06465444E-01-0.05816746E-05-0.03484493E-08 0.06340675E-12    2
+-0.02357071E+06-0.04132570E+03 0.05615307E+02 0.02079854E+00-0.09999530E-05    3
+-0.01288525E-06 0.06091866E-10-0.02126283E+06-0.01615658E+02                   4
+H2SIC              61991H   2C   1SI  1     G  0200.00   2500.00  1500.00      1
+ 0.07319671E+02 0.01729952E-01-0.01346466E-05-0.01450487E-08 0.03000643E-12    2
+ 0.08125478E+06-0.01320432E+03 0.02408167E+02 0.01437372E+00-0.01331203E-03    3
+ 0.06387472E-07-0.01244523E-10 0.08289031E+06 0.01283748E+03                   4
+H2SICCH            61991H   3C   2SI  1     G  0200.00   2500.00  1500.00      1
+ 0.01091422E+03 0.03001577E-01-0.01622344E-05-0.02466767E-08 0.04595260E-12    2
+ 0.04137118E+06-0.03153165E+03 0.02952641E+02 0.02407857E+00-0.02313898E-03    3
+ 0.01172227E-06-0.02393835E-10 0.04400800E+06 0.01054929E+03                   4
+H2SICH             61991H   3C   1SI  1     G  0200.00   2500.00  1500.00      1
+ 0.08489276E+02 0.02348812E-01-0.01091163E-05-0.02027972E-08 0.03759264E-12    2
+ 0.04973382E+06-0.01845097E+03 0.03442743E+02 0.01542521E+00-0.01429096E-03    3
+ 0.07252204E-07-0.01507009E-10 0.05145786E+06 0.08363421E+02                   4
+H2SICH2            61991H   4C   1SI  1     G  0200.00   2500.00  1500.00      1
+ 0.09303939E+02 0.04006038E-01-0.09702324E-06-0.03997739E-08 0.07350215E-12    2
+ 0.01649066E+06-0.02623845E+03 0.01049782E+02 0.02562277E+00-0.02324392E-03    3
+ 0.01142315E-06-0.02295441E-10 0.01922778E+06 0.01743860E+03                   4
+H2SICH3            61991H   5C   1SI  1     G  0200.00   2500.00  1500.00      1
+ 0.08991115E+02 0.06006339E-01-0.01118591E-05-0.07745983E-08 0.01594429E-11    2
+ 0.01270233E+06-0.02218700E+03 0.02094419E+02 0.02127010E+00-0.01294390E-03    3
+ 0.04156964E-07-0.05854213E-11 0.01520143E+06 0.01518517E+03                   4
+H2SIN              22790H   2SI  1N   1     G  0200.00   4000.00  1000.00      1
+ 0.06826533E+02 0.02125460E-01-0.02343132E-05-0.01166339E-08 0.02277273E-12    2
+ 0.07253673E+06-0.01052162E+03 0.03549344E+02 0.07311005E-01 0.03249026E-05    3
+-0.03682945E-07 0.01121511E-10 0.07370656E+06 0.07565329E+02                   4
+H2SINH             42489SI  1N   1H   3     G  0200.00   3000.00  1000.00      1
+ 0.06588295E+02 0.04903194E-01-0.04944720E-05-0.05014630E-08 0.01139470E-11    2
+ 0.01809794E+06-0.09522970E+02 0.02822196E+02 0.01245518E+00-0.08350819E-05    3
+-0.07411814E-07 0.03579019E-10 0.01923616E+06 0.01054783E+03                   4
+H2SINH2            42489SI  1N   1H   4     G  0200.00   3000.00  1000.00      1
+ 0.07392047E+02 0.05476841E-01-0.04453276E-05-0.05236661E-08 0.01138390E-11    2
+ 0.01136858E+06-0.01138050E+03 0.04053223E+02 0.01182231E+00-0.04348128E-05    3
+-0.06225818E-07 0.02798829E-10 0.01241971E+06 0.06562033E+02                   4
+H2SINH3           121386SI  1H   5N   1     G  0200.00   4000.00  1000.00      1
+ 0.08711392E+02 0.05909106E-01-0.05436615E-05-0.03248350E-08 0.05960257E-12    2
+ 0.08441694E+05-0.01933470E+03 0.04269730E+02 0.01125224E+00 0.01951722E-04    3
+-0.03578373E-07-0.08372202E-12 0.01022204E+06 0.05876736E+02                   4
+H2SISIH2           42489SI  2H   4          G  0200.00   3000.00  1000.00      1
+ 0.08986817E+02 0.05405047E-01-0.05214022E-05-0.05313742E-08 0.01188727E-11    2
+ 0.02832748E+06-0.02004478E+03 0.05133186E+02 0.01252855E+00-0.04620421E-05    3
+-0.06606075E-07 0.02864345E-10 0.02956915E+06 0.07605133E+01                   4
+H3ASGAET3          62987AS  1GA  1C   6H  18G  0200.00   1500.00  0600.00      1
+ 0.08508501E+02 0.05632369E+00 0.02524140E-04-0.01861451E-06 0.05372403E-10    2
+-0.01085517E+06-0.03399858E+02-0.08974745E+02 0.01090516E+01 0.02811457E-03    3
+-0.02195513E-05 0.01599734E-08-0.07592761E+05 0.08165459E+03                   4
+H3ASGAME3          62987AS  1GA  1C   3H  12G  0200.00   1500.00  0600.00      1
+ 0.01125499E+03 0.03159753E+00 0.01177904E-04-0.01013352E-06 0.02947356E-10    2
+-0.07280344E+05-0.02238730E+03 0.01267161E+02 0.06214586E+00 0.01385631E-03    3
+-0.01220044E-05 0.08982019E-09-0.05425619E+05 0.02613306E+03                   4
+H3CONHO           103190C   1H   4N   1O   2G  0200.00   4000.00  1500.00      1
+ 0.01249270E+03 0.04773900E-01-0.04717255E-05-0.01987935E-08 0.03599460E-12    2
+-0.02354754E+05-0.03945442E+03 0.01930733E+02 0.02865910E+00-0.02313063E-03    3
+ 0.01068402E-06-0.02139376E-10 0.01638891E+05 0.01796108E+03                   4
+H3SIC              61991H   3C   1SI  1     G  0200.00   2500.00  1500.00      1
+ 0.08536022E+02 0.02944748E-01-0.01752614E-05-0.03061316E-08 0.06463710E-12    2
+ 0.07066730E+06-0.02041360E+03 0.01037017E+02 0.02192253E+00-0.01926062E-03    3
+ 0.08725014E-07-0.01615505E-10 0.07315849E+06 0.01939904E+03                   4
+H3SICCH            61991H   4C   2SI  1     G  0200.00   2500.00  1500.00      1
+ 0.01193845E+03 0.04298239E-01-0.01882154E-05-0.04212272E-08 0.08245783E-12    2
+ 0.02161639E+06-0.03978125E+03 0.01692389E+02 0.03078862E+00-0.02808630E-03    3
+ 0.01359918E-06-0.02690423E-10 0.02503587E+06 0.01453670E+03                   4
+H3SICH             61991H   4C   1SI  1     G  0200.00   2500.00  1500.00      1
+ 0.09747808E+02 0.03532863E-01-0.01540271E-05-0.03539077E-08 0.06992248E-12    2
+ 0.04253036E+06-0.02504347E+03 0.01710027E+02 0.02413212E+00-0.02164005E-03    3
+ 0.01035470E-06-0.02035579E-10 0.04522928E+06 0.01762908E+03                   4
+H3SICH2            61991H   5C   1SI  1     G  0200.00   2500.00  1500.00      1
+ 0.01050164E+03 0.04907525E-01-0.01523178E-05-0.05436598E-08 0.01082455E-11    2
+ 0.01632252E+06-0.02911264E+03 0.01199673E+02 0.02828259E+00-0.02394311E-03    3
+ 0.01103518E-06-0.02125819E-10 0.01948167E+06 0.02041804E+03                   4
+H3SICH3            61991H   6C   1SI  1     G  0200.00   2500.00  1500.00      1
+ 0.01022214E+03 0.07221275E-01-0.01482544E-05-0.09419140E-08 0.01956175E-11    2
+-0.08301660E+05-0.03163487E+03 0.01240228E+02 0.02729962E+00-0.01707597E-03    3
+ 0.05502474E-07-0.07521465E-11-0.05090007E+05 0.01692759E+03                   4
+H3SIN              22790H   3SI  1N   1     G  0200.00   4000.00  1000.00      1
+ 0.07964213E+02 0.03355633E-01-0.03579695E-05-0.01889818E-08 0.03650912E-12    2
+ 0.01148697E+07-0.01924110E+03 0.02790629E+02 0.01134566E+00 0.08321879E-05    3
+-0.05845045E-07 0.01685969E-10 0.01167357E+07 0.09384630E+02                   4
+H3SINH             42489SI  1N   1H   4     G  0200.00   3000.00  1000.00      1
+ 0.07697340E+02 0.05657943E-01-0.05209306E-05-0.05617966E-08 0.01263502E-11    2
+ 0.02282005E+06-0.01330379E+03 0.02778390E+02 0.01510711E+00-0.06734261E-05    3
+-0.08928515E-07 0.04115347E-10 0.02435913E+06 0.01309386E+03                   4
+H3SISIH           111191H   4SI  2          G  0200.00   4000.00  1500.00      1
+ 0.01127202E+03 0.02538145E-01-0.02998472E-05-0.09465367E-09 0.01855053E-12    2
+ 0.03297169E+06-0.03264598E+03 0.03698707E+02 0.01870180E+00-0.01430704E-03    3
+ 0.06005836E-07-0.01116293E-10 0.03590825E+06 0.08825191E+02                   4
+H3SISIH3           42489SI  2H   6          G  0200.00   3000.00  1000.00      1
+ 0.01068273E+03 0.08221416E-01-0.08096035E-05-0.08337975E-08 0.01908205E-11    2
+ 0.05316920E+05-0.03082188E+03 0.03898290E+02 0.01977415E+00 0.01791014E-05    3
+-0.01033168E-06 0.03931699E-10 0.07621719E+05 0.06227022E+02                   4
+HALME              62987AL  1C   1H   4     G  0200.00   1500.00  0600.00      1
+ 0.04812273E+02 0.01029645E+00 0.02582808E-05-0.03323597E-07 0.09884584E-11    2
+ 0.01176673E+06 0.09557062E+01 0.01118789E+02 0.02180038E+00 0.04120785E-04    3
+-0.04366690E-06 0.03273825E-09 0.01244736E+06 0.01886107E+03                   4
+HALME2             62987AL  1C   2H   7     G  0200.00   1500.00  0600.00      1
+ 0.05705172E+02 0.01924317E+00 0.06377855E-05-0.06346800E-07 0.01896800E-10    2
+-0.06049865E+05-0.06331378E+01-0.01494261E+02 0.04158568E+00 0.08686772E-04    3
+-0.08604142E-06 0.06447653E-09-0.04722517E+05 0.03427725E+03                   4
+HASALME            62987AS  1AL  1C   1H   4G  0200.00   1500.00  0600.00      1
+ 0.06956539E+02 0.01061278E+00 0.02440154E-05-0.03297737E-07 0.01020004E-10    2
+ 0.02582506E+06-0.08625792E+01 0.02544859E+02 0.02465795E+00 0.03677808E-04    3
+-0.05008894E-06 0.03848384E-09 0.02663010E+06 0.02046859E+03                   4
+HASGAET            62987AS  1GA  1C   2H   6G  0200.00   1500.00  0600.00      1
+ 0.06336445E+02 0.02340603E+00 0.09066638E-05-0.07519059E-07 0.01828115E-10    2
+ 0.03184605E+06 0.05812180E+02 0.05642724E+02 0.02296739E+00 0.01094867E-03    3
+-0.02449038E-06 0.09602701E-10 0.03204718E+06 0.09675533E+02                   4
+HASGAME            62987AS  1GA  1C   1H   4G  0200.00   1500.00  0600.00      1
+ 0.07507970E+02 0.09277900E-01 0.01891932E-05-0.02769887E-07 0.07996070E-11    2
+ 0.03253908E+06-0.01422608E+02 0.04859127E+02 0.01750423E+00 0.02831996E-04    3
+-0.03107937E-06 0.02299468E-09 0.03302941E+06 0.01142952E+03                   4
+HASME              62987AS  1C   1H   4     G  0200.00   1500.00  0600.00      1
+ 0.05753261E+02 0.01841813E+00 0.07493313E-05-0.05919917E-07 0.01726247E-10    2
+ 0.01880057E+06-0.05360325E+02-0.01575095E+01 0.03649094E+00 0.08332940E-04    3
+-0.07234666E-06 0.05330928E-09 0.01989792E+06 0.02335316E+03                   4
+HASME2             62987AS  1C   2H   7     G  0200.00   1500.00  0600.00      1
+ 0.05850437E+02 0.01841766E+00 0.08066845E-05-0.05868715E-07 0.01726428E-10    2
+ 0.06450535E+05 0.03909152E+01-0.02908405E+01 0.03729577E+00 0.08335855E-04    3
+-0.07455611E-06 0.05527881E-09 0.07587766E+05 0.03020451E+03                   4
+HCCCHCCH          101993H   3C   5          G  0200.00   4000.00  1400.00      1
+ 0.01412247E+03 0.04593411E-01-0.03738175E-05-0.02574329E-08 0.04539160E-12    2
+ 0.06249257E+06-0.04722335E+03 0.06854796E+02 0.01699404E+00-0.02582284E-04    3
+-0.05488765E-07 0.02281481E-10 0.06515364E+06-0.07133854E+02                   4
+HCCCL              40992H   1C   2CL  1     G  0200.00   4000.00  1500.00      1
+ 0.07743241E+02 0.01618655E-01-0.02465935E-05-0.02909336E-09 0.07522752E-13    2
+ 0.02472494E+06-0.01686593E+03 0.02969338E+02 0.01583152E+00-0.01787078E-03    3
+ 0.01017728E-06-0.02231985E-10 0.02620733E+06 0.07906791E+02                   4
+HCCHCCH            82489C   4H   3          G  0200.00   4000.00  1000.00      1
+ 0.01075274E+03 0.05381153E-01-0.05549638E-05-0.03052266E-08 0.05761740E-12    2
+ 0.06121419E+06-0.02973025E+03 0.04153882E+02 0.01726287E+00-0.02389374E-05    3
+-0.01018700E-06 0.04340505E-10 0.06338071E+06 0.06036507E+02                   4
+HCCO               32387H   1C   2O   1     G  0200.00   4000.00  1000.00      1
+ 0.06758073E+02 0.02000400E-01-0.02027607E-05-0.01041132E-08 0.01965165E-12    2
+ 0.01901513E+06-0.09071262E+02 0.05047965E+02 0.04453478E-01 0.02268283E-05    3
+-0.01482095E-07 0.02250742E-11 0.01965892E+06 0.04818439E+01                   4
+HCCOH              32387H   2C   2O   1     G  0200.00   4000.00  1000.00      1
+ 0.07328324E+02 0.03336416E-01-0.03024705E-05-0.01781106E-08 0.03245168E-12    2
+ 0.07598258E+05-0.01401214E+03 0.03899465E+02 0.09701075E-01-0.03119309E-05    3
+-0.05537732E-07 0.02465732E-10 0.08701190E+05 0.04491875E+02                   4
+HCCSICL2H          40992H   2C   2SI  1CL  2G  0200.00   4000.00  1500.00      1
+ 0.01480501E+03 0.02600965E-01-0.04631204E-05-0.02401379E-09 0.09812397E-13    2
+-0.02163059E+06-0.04610236E+03 0.04846840E+02 0.03181717E+00-0.03572068E-03    3
+ 0.01983339E-06-0.04248036E-10-0.01856223E+06 0.05613645E+02                   4
+HCL                42189CL  1H   1          G  0200.00   5000.00  1000.00      1
+ 0.02755335E+02 0.01473581E-01-0.04971254E-05 0.08108658E-09-0.05072063E-13    2
+-0.01191806E+06 0.06515116E+02 0.03338534E+02 0.01268207E-01-0.03666917E-04    3
+ 0.04703992E-07-0.01836011E-10-0.01213151E+06 0.03193555E+02                   4
+HCL2SICH3          40992H   4C   1SI  1CL  2G  0200.00   4000.00  1500.00      1
+ 0.01459366E+03 0.04006211E-01-0.04818700E-05-0.01336338E-08 0.02648821E-12    2
+-0.05346984E+06-0.04689795E+03 0.04155299E+02 0.02995026E+00-0.02799546E-03    3
+ 0.01433046E-06-0.03013208E-10-0.04973616E+06 0.09051815E+02                   4
+HCL2SISICL2H       40992H   2SI  2CL  4     G  0200.00   4000.00  1500.00      1
+ 0.01863092E+03 0.01991871E-01-0.04703153E-05 0.02393378E-09 0.02997096E-13    2
+-0.07983306E+06-0.05812192E+03 0.08215700E+02 0.03290751E+00-0.03764294E-03    3
+ 0.02071053E-06-0.04369767E-10-0.07671145E+06-0.04245506E+02                   4
+HCLCCCLO           40992H   1C   2 O  1CL  2G  0200.00   4000.00  1500.00      1
+ 0.01282877E+03 0.02295631E-01-0.04601887E-05-0.02941710E-09 0.01148412E-12    2
+-0.01481358E+06-0.03708152E+03 0.03082763E+02 0.03013466E+00-0.03298082E-03    3
+ 0.01776354E-06-0.03720337E-10-0.01177928E+06 0.01372635E+03                   4
+HCLCCHO            53090C   2H   2O   1CL  1G  0200.00   5000.00  1500.00      1
+ 0.01228193E+03 0.02136310E-01-0.03756942E-05-0.01347374E-09 0.05834907E-13    2
+-0.08447210E+05-0.03860056E+03 0.01544662E+02 0.02882431E+00-0.02921314E-03    3
+ 0.01557811E-06-0.03358528E-10-0.04546644E+05 0.01905110E+03                   4
+HCLSI(CH3)2        40992H   7C   2SI  1CL  1G  0200.00   4000.00  1500.00      1
+ 0.01779932E+03 0.06864497E-01-0.06677913E-05-0.02916791E-08 0.05251096E-12    2
+-0.04235416E+06-0.06627844E+03 0.03428693E+02 0.03880542E+00-0.03118298E-03    3
+ 0.01483918E-06-0.03097758E-10-0.03676770E+06 0.01220014E+03                   4
+HCLSI(CH3)CH2      40992H   6C   2SI  1CL  1G  0200.00   4000.00  1500.00      1
+ 0.01684996E+03 0.05769153E-01-0.06362653E-05-0.02117805E-08 0.04004912E-12    2
+-0.01692029E+06-0.05821970E+03 0.03518672E+02 0.03868692E+00-0.03578989E-03    3
+ 0.01856940E-06-0.03976975E-10-0.01207708E+06 0.01340137E+03                   4
+HCLSICH2           40992H   3C   1SI  1CL  1G  0200.00   4000.00  1500.00      1
+ 0.01094639E+03 0.03063482E-01-0.04057563E-05-0.07933510E-09 0.01649546E-12    2
+-0.03161099E+05-0.03101113E+03 0.02331473E+02 0.02712338E+00-0.02843577E-03    3
+ 0.01542443E-06-0.03288710E-10-0.03745104E+04 0.01417701E+03                   4
+HCLSICH3           40992H   4C   1SI  1CL  1G  0200.00   4000.00  1500.00      1
+ 0.01183446E+03 0.03802168E-01-0.04054360E-05-0.01478932E-08 0.02756845E-12    2
+-0.09669808E+05-0.03413556E+03 0.03061496E+02 0.02418432E+00-0.02072566E-03    3
+ 0.01016711E-06-0.02124115E-10-0.06367089E+05 0.01342892E+03                   4
+HCLSISI            40992H   1SI  2CL  1     G  0200.00   4000.00  1500.00      1
+ 0.08766356E+02 0.08352699E-02-0.01828719E-05 0.04227080E-10 0.01924493E-13    2
+ 0.03066829E+06-0.01515527E+03 0.05006777E+02 0.01170423E+00-0.01308663E-03    3
+ 0.07173085E-07-0.01520111E-10 0.03183531E+06 0.04414009E+02                   4
+HCN               110193H   1C   1N   1     G  0200.00   4000.00  1000.00      1
+ 0.03426457E+02 0.03924190E-01-0.01601138E-04 0.03161966E-08-0.02432850E-12    2
+ 0.01485552E+06 0.03607795E+02 0.02417787E+02 0.09031856E-01-0.01107727E-03    3
+ 0.07980141E-07-0.02311141E-10 0.01501044E+06 0.08222891E+02                   4
+HCNH               41687C   1H   2N   1     G  0200.00   4000.00  1000.00      1
+ 0.04923293E+02 0.03332897E-01-0.03370897E-05-0.01901619E-08 0.03531825E-12    2
+ 0.03132669E+06-0.01632509E+02 0.02759456E+02 0.06103387E-01 0.07713149E-05    3
+-0.02063094E-07 0.01931920E-11 0.03217247E+06 0.01057489E+03                   4
+HCNO              120186H   1C   1N   1O   1G  0250.00   4000.00  1000.00      1
+ 0.06692412E+02 0.02368360E-01-0.02371510E-05-0.01275503E-08 0.02407137E-12    2
+ 0.01694737E+06-0.01245434E+03 0.03184859E+02 0.09752316E-01-0.01280203E-04    3
+-0.06163104E-07 0.03226275E-10 0.01797907E+06 0.06123844E+02                   4
+HCO               121286H   1C   1O   1     G  0200.00   5000.00  1000.00      1
+ 0.03557271E+02 0.03345573E-01-0.01335006E-04 0.02470573E-08-0.01713851E-12    2
+ 0.03916324E+05 0.05552299E+02 0.02898330E+02 0.06199147E-01-0.09623084E-04    3
+ 0.01089825E-06-0.04574885E-10 0.04159922E+05 0.08983614E+02                   4
+HCO+              121286H   1C   1O   1E  -1G  0200.00   5000.00  1000.00      1
+ 0.03692074E+02 0.03454732E-01-0.01316524E-04 0.02323551E-08-0.01554132E-12    2
+ 0.09890941E+06 0.02330722E+02 0.02496483E+02 0.08690658E-01-0.01060445E-03    3
+ 0.07882791E-07-0.02418385E-10 0.09915097E+06 0.08048178E+02                   4
+HCOOH             103190C   1H   2O   2     G  0200.00   4000.00  1500.00      1
+ 0.07959698E+02 0.03024532E-01-0.03434242E-05-0.01326767E-08 0.02520240E-12    2
+-0.05027445E+06-0.01872208E+03 0.09326031E+01 0.01891002E+00-0.01554964E-03    3
+ 0.07290031E-07-0.01483695E-10-0.04760071E+06 0.01950653E+03                   4
+HE                120186HE  1               G  0200.00   5000.00  1000.00      1
+ 0.02500000E+02 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00    2
+-0.07453750E+04 0.09153489E+01 0.02500000E+02 0.00000000E+00 0.00000000E+00    3
+ 0.00000000E+00 0.00000000E+00-0.07453750E+04 0.09153488E+01                   4
+HE+               120186HE  1E  -1          G  0200.00   5000.00  1000.00      1
+ 0.02500000E+02 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00    2
+ 0.02853427E+07 0.01608405E+02 0.02500000E+02 0.00000000E+00 0.00000000E+00    3
+ 0.00000000E+00 0.00000000E+00 0.02853427E+07 0.01608405E+02                   4
+HF                121286H   1F   1          G  0200.00   5000.00  1000.00      1
+ 0.02956767E+02 0.07721015E-02-0.09899833E-06-0.04993521E-10 0.01429331E-13    2
+-0.03361061E+06 0.04011673E+02 0.03431841E+02 0.04404166E-02-0.08828452E-05    3
+ 0.06574516E-08-0.02055910E-12-0.03381977E+06 0.01238270E+02                   4
+HG2BR2(S)          81292BR  2HG  2          S  0200.00   1500.00  1000.00      1
+ 0.01131527E+03 0.05176237E-01-0.09149018E-05-0.01774353E-07 0.08208311E-11    2
+-0.02812664E+06-0.03960847E+03 0.09176256E+02 0.01716637E+00-0.02379101E-03    3
+ 0.01656353E-06-0.04492058E-10-0.02787921E+06-0.03016915E+03                   4
+HG2CL2(S)          81292CL  2HG  2          S  0200.00   1500.00  1000.00      1
+ 0.01170237E+03 0.03242224E-01-0.01018772E-05-0.03745899E-08 0.04682208E-12    2
+-0.03555571E+06-0.04461773E+03 0.01002375E+03 0.01031694E+00-0.01160577E-03    3
+ 0.08123549E-07-0.02343515E-10-0.03522627E+06-0.03658009E+03                   4
+HG2F2(S)           81292F   2HG  2          S  0200.00   1500.00  1000.00      1
+ 0.01156086E+03 0.03513290E-01-0.04228193E-06-0.06265655E-08 0.01191005E-11    2
+-0.06207291E+06-0.04780613E+03 0.01035013E+03 0.06139501E-01-0.03674693E-05    3
+-0.03011902E-07 0.01414143E-10-0.06172955E+06-0.04143495E+03                   4
+HG2I2(S)           81292HG  2I   2          S  0200.00   1500.00  1000.00      1
+ 0.01104021E+03 0.05724188E-01-0.09515335E-05-0.02149612E-07 0.09793057E-11    2
+-0.01777374E+06-0.03535439E+03 0.09788829E+02 0.01440390E+00-0.01844748E-03    3
+ 0.01180869E-06-0.02911372E-10-0.01774167E+06-0.03032197E+03                   4
+HGAET              62987GA  1C   2H   6     G  0200.00   1500.00  0600.00      1
+ 0.06580152E+02 0.01610132E+00 0.05009546E-05-0.05185148E-07 0.01524085E-10    2
+ 0.08765131E+05-0.04046067E+01 0.01163284E+02 0.03282213E+00 0.06765717E-04    3
+-0.06509541E-06 0.04835807E-09 0.09767174E+05 0.02588269E+03                   4
+HGAET2             62987GA  1C   4H  11     G  0200.00   1500.00  0600.00      1
+ 0.06511306E+02 0.02819754E+00 0.01418751E-04-0.09000947E-07 0.02572894E-10    2
+-0.04482180E+05 0.04709022E+02-0.01486576E+02 0.05217640E+00 0.01356342E-03    3
+-0.01011982E-05 0.07319854E-09-0.02985242E+05 0.04364749E+03                   4
+HGAME              62987GA  1C   1H   4     G  0200.00   1500.00  0600.00      1
+ 0.05318279E+02 0.09490931E-01 0.02277164E-05-0.03005070E-07 0.09037830E-11    2
+ 0.01253534E+06-0.01065710E+01 0.01784750E+02 0.02058861E+00 0.03548509E-04    3
+-0.04111927E-06 0.03108978E-09 0.01318422E+06 0.01700702E+03                   4
+HGAME2             62987GA  1C   2H   7     G  0200.00   1500.00  0600.00      1
+ 0.06759398E+02 0.01426103E+00-0.01174024E-05-0.05001401E-07 0.01502785E-10    2
+-0.01473265E+05-0.02967135E+02 0.09039155E+01 0.03264779E+00 0.05389244E-04    3
+-0.06814504E-06 0.05150323E-09-0.03978242E+04 0.02539305E+03                   4
+HGBR               81292BR  1HG  1          G  0200.00   5000.00  1000.00      1
+ 0.04470182E+02 0.01740022E-02-0.01782286E-06 0.03639776E-10-0.02699461E-14    2
+ 0.01118634E+06 0.07116504E+02 0.04325519E+02 0.06429246E-02-0.04527797E-05    3
+ 0.04543436E-09 0.06863204E-12 0.01121730E+06 0.07833202E+02                   4
+HGCL2              81292CL  2HG  1          G  0200.00   5000.00  1000.00      1
+ 0.07251462E+02 0.03082143E-02-0.01447555E-05 0.02958294E-09-0.02201214E-13    2
+-0.01981231E+06-0.06061846E+02 0.06249130E+02 0.03221573E-01-0.02109668E-04    3
+-0.07713536E-08 0.08526178E-11-0.01958242E+06-0.01015613E+02                   4
+HGCL2(S)           81292CL  2HG  1          S  0200.00   1500.00  1000.00      1
+ 0.07750329E+02 0.03529253E-01 0.03886646E-06-0.08307839E-08 0.02781535E-11    2
+-0.03009787E+06-0.02772331E+03 0.07611778E+02 0.05084911E-01-0.02887606E-04    3
+ 0.09093899E-08 0.04734468E-12-0.03015054E+06-0.02738100E+03                   4
+HGF2               81292F   2HG  1          G  0200.00   5000.00  1000.00      1
+ 0.06970407E+02 0.06373497E-02-0.02938029E-05 0.05925826E-09-0.04366956E-13    2
+-0.03751535E+06-0.08137829E+02 0.05155538E+02 0.05733727E-01-0.03667157E-04    3
+-0.01223692E-07 0.01370429E-10-0.03707844E+06 0.01073098E+02                   4
+HGF2(S)            81292F   2HG  1          S  0200.00   2000.00  1000.00      1
+ 0.08322627E+02 0.02317361E-01 0.02103511E-05-0.09665973E-09 0.01631405E-12    2
+-0.05342179E+06-0.03414006E+03 0.08250103E+02 0.02543387E-01-0.07218619E-06    3
+ 0.08044224E-09-0.03175138E-12-0.05340276E+06-0.03377085E+03                   4
+HGH                81292H   1HG  1          G  0200.00   5000.00  1000.00      1
+ 0.03674353E+02 0.01116618E-01-0.03728888E-05 0.07077644E-09-0.04984356E-13    2
+ 0.02745200E+06 0.04954799E+02 0.02859969E+02 0.03217363E-01-0.02993410E-04    3
+ 0.02267118E-07-0.08671660E-11 0.02771287E+06 0.09273314E+02                   4
+HGI                81292HG  1I   1          G  0200.00   5000.00  1000.00      1
+ 0.04487935E+02 0.03041356E-02-0.07219846E-07 0.01468881E-10-0.01089820E-14    2
+ 0.01470042E+06 0.08086309E+02 0.04411734E+02 0.05799910E-02-0.03475217E-05    3
+ 0.01593090E-08-0.01730073E-12 0.01471610E+06 0.08458668E+02                   4
+HGO                81292HG  1O   1          G  0200.00   5000.00  1000.00      1
+ 0.04192036E+02 0.04176084E-02-0.01658976E-05 0.03318185E-09-0.02429647E-13    2
+ 0.03713110E+05 0.04621457E+02 0.03235991E+02 0.03067171E-01-0.01992628E-04    3
+-0.04378690E-08 0.06018341E-11 0.03950193E+05 0.09495331E+02                   4
+HGO(S)             81292HG  1O   1          S  0200.00   1000.00  1000.00      1
+ 0.07146808E+02 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00    2
+-0.01350616E+06-0.03327734E+03 0.02854835E+02 0.01115052E+00-0.01160794E-03    3
+ 0.06126729E-07-0.01377341E-10-0.01217635E+06-0.01067390E+03                   4
+HMEGAET            62987GA  1C   3H   9     G  0200.00   1500.00  0600.00      1
+ 0.07025463E+02 0.02564787E+00 0.09619100E-05-0.08403699E-07 0.02488960E-10    2
+-0.01361377E+05-0.03319484E+02-0.02079143E+02 0.05373076E+00 0.01181036E-03    3
+-0.01099855E-05 0.08189554E-09 0.03216961E+04 0.04086070E+03                   4
+HN(OH)2           103190H   3N   1O   2     G  0200.00   4000.00  1500.00      1
+ 0.09963640E+02 0.02864737E-01-0.03812930E-05-0.07443356E-09 0.01610124E-12    2
+-0.01662184E+06-0.02871770E+03 0.03244199E+01 0.02850544E+00-0.02753934E-03    3
+ 0.01337294E-06-0.02571777E-10-0.01354499E+06 0.02201480E+03                   4
+HN3                82687H   1N   3          G  0200.00   4000.00  1000.00      1
+ 0.06023015E+02 0.02454362E-01-0.02404279E-05-0.01322973E-08 0.02474146E-12    2
+ 0.03394051E+06-0.07015537E+02 0.03621003E+02 0.06030785E-01 0.04054460E-05    3
+-0.02545271E-07 0.06174280E-11 0.03482373E+06 0.06333769E+02                   4
+HNC                92392H   1C   1N   1     G  0200.00   5000.00  1500.00      1
+ 0.05283464E+02 0.01092476E-01-0.01170865E-05-0.02308672E-09 0.03950673E-13    2
+ 0.02012958E+06-0.06388218E+02 0.03592377E+02 0.05561340E-01-0.05936823E-04    3
+ 0.03782329E-07-0.09365092E-11 0.02079803E+06 0.02732160E+02                   4
+HNCN               62790C   1H   1N   2     G  0200.00   4000.00  1500.00      1
+ 0.07251951E+02 0.01587363E-01-0.01995579E-05-0.04841944E-09 0.09908280E-13    2
+ 0.03563666E+06-0.01312080E+03 0.02951908E+02 0.01245028E+00-0.01161611E-03    3
+ 0.05786108E-07-0.01175004E-10 0.03712483E+06 0.09811426E+02                   4
+HNCNH              62790C   1H   2N   2     G  0200.00   4000.00  1500.00      1
+ 0.08374143E+02 0.02366143E-01-0.03502324E-05-0.04391102E-09 0.01096859E-12    2
+ 0.01461088E+06-0.02107393E+03 0.01001985E+02 0.02464016E+00-0.02759770E-03    3
+ 0.01532472E-06-0.03268280E-10 0.01679368E+06 0.01694325E+03                   4
+HNCO              110193H   1C   1N   1O   1G  0200.00   4000.00  1400.00      1
+ 0.06545307E+02 0.01965760E-01-0.01562664E-05-0.01074318E-08 0.01874680E-12    2
+-0.01664773E+06-0.01003880E+03 0.03858467E+02 0.06390342E-01-0.09016628E-05    3
+-0.01898224E-07 0.07651380E-11-0.01562343E+06 0.04882493E+02                   4
+HNF                42489H   1N   1F   1     G  0200.00   3000.00  1000.00      1
+ 0.04133219E+02 0.01912057E-01-0.01625330E-05-0.01726461E-08 0.03743691E-12    2
+ 0.01467052E+06 0.03292122E+02 0.03249761E+02 0.03261818E-01 0.04355642E-06    3
+-0.01100277E-07 0.02926757E-11 0.01499126E+06 0.08187434E+02                   4
+HNF2               42489H   1N   1F   2     G  0200.00   3000.00  1000.00      1
+ 0.05704866E+02 0.03049897E-01-0.02826803E-05-0.02923185E-08 0.06551055E-12    2
+-0.09107488E+05-0.03941332E+02 0.02572812E+02 0.08762144E-01-0.02326921E-05    3
+-0.05000826E-07 0.02143838E-10-0.08086760E+05 0.01300681E+03                   4
+HNNHO             103190H   2N   2O   1     G  0200.00   4000.00  1500.00      1
+ 0.07462348E+02 0.03113521E-01-0.02614534E-05-0.01394601E-08 0.02363352E-12    2
+ 0.07517607E+05-0.01619293E+03 0.07974964E+01 0.01693171E+00-0.01141086E-03    3
+ 0.04201242E-07-0.06926417E-11 0.01010665E+06 0.02038765E+03                   4
+HNNO              103190H   1N   2O   1     G  0200.00   4000.00  1500.00      1
+ 0.06991217E+02 0.01875970E-01-0.02124584E-05-0.06710472E-09 0.01230508E-12    2
+ 0.02497566E+06-0.01123523E+03 0.02238298E+02 0.01359200E+00-0.01179873E-03    3
+ 0.05392971E-07-0.01010859E-10 0.02660259E+06 0.01413679E+03                   4
+HNNONO             10891H   1N   3O   2     G  0200.00   4000.00  1500.00      1
+ 0.01246747E+03 0.02018438E-01-0.03674474E-05-0.03459117E-09 0.01090810E-12    2
+ 0.02452278E+06-0.03868309E+03 0.02642670E+02 0.02625418E+00-0.02477878E-03    3
+ 0.01184374E-06-0.02298757E-10 0.02793182E+06 0.01383705E+03                   4
+HNO               121286H   1N   1O   1     G  0200.00   5000.00  1000.00      1
+ 0.03615144E+02 0.03212486E-01-0.01260337E-04 0.02267298E-08-0.01536236E-12    2
+ 0.01066191E+06 0.04810264E+02 0.02784403E+02 0.06609646E-01-0.09300223E-04    3
+ 0.09437980E-07-0.03753146E-10 0.01091878E+06 0.09035629E+02                   4
+HNO2              103190H   1N   1O   2     G  0200.00   4000.00  1500.00      1
+ 0.06479630E+02 0.01995274E-01-0.01740387E-05-0.09695872E-09 0.01701480E-12    2
+-0.09999271E+05-0.01067286E+03 0.01934838E+02 0.01010036E+00-0.04964616E-04    3
+ 0.08701120E-08-0.02324135E-13-0.08105484E+05 0.01473250E+03                   4
+HNO3              121286H   1N   1O   3     G  0200.00   5000.00  1000.00      1
+ 0.07003845E+02 0.05811493E-01-0.02333789E-04 0.04288814E-08-0.02959385E-12    2
+-0.01889952E+06-0.01047863E+03 0.01353185E+02 0.02220025E+00-0.01978812E-03    3
+ 0.08773908E-07-0.01658384E-10-0.01738563E+06 0.01851868E+03                   4
+HNOH              102290H   2N   1O   1     G  0200.00   4000.00  1500.00      1
+ 0.06396134E+02 0.01821067E-01-0.01870892E-05-0.07844472E-09 0.01444855E-12    2
+ 0.07859615E+05-0.01040479E+03 0.02125274E+02 0.01066282E+00-0.07602589E-04    3
+ 0.03081642E-07-0.05726498E-11 0.09553544E+05 0.01309672E+03                   4
+HO2                20387H   1O   2          G  0200.00   5000.00  1000.00      1
+ 0.04072191E+02 0.02131296E-01-0.05308145E-05 0.06112269E-09-0.02841165E-13    2
+-0.01579727E+04 0.03476029E+02 0.02979963E+02 0.04996697E-01-0.03790997E-04    3
+ 0.02354192E-07-0.08089024E-11 0.01762274E+04 0.09222724E+02                   4
+HOCH2OH           103190C   1H   4O   2     G  0200.00   4000.00  1500.00      1
+ 0.01089048E+03 0.04000443E-01-0.04729597E-05-0.01295970E-08 0.02552658E-12    2
+-0.05347440E+06-0.03540623E+03-0.06548874E+01 0.03377715E+00-0.03157595E-03    3
+ 0.01532216E-06-0.02994259E-10-0.04963411E+06 0.02579207E+03                   4
+HOCL               40992H   1 O  1CL  1     G  0200.00   4000.00  1500.00      1
+ 0.04953150E+02 0.01100053E-01-0.01256296E-05-0.03349951E-09 0.06464506E-13    2
+-0.01114737E+06-0.06838384E+01 0.02861399E+02 0.07134484E-01-0.07311028E-04    3
+ 0.03980236E-07-0.08506421E-11-0.01049306E+06 0.01021485E+03                   4
+HOCN              110193H   1C   1N   1O   1G  0200.00   4000.00  1400.00      1
+ 0.06022112E+02 0.01929530E-01-0.01455029E-05-0.01045811E-08 0.01794814E-12    2
+-0.04040321E+05-0.05866433E+02 0.03789424E+02 0.05387981E-01-0.06518270E-05    3
+-0.01420164E-07 0.05367969E-11-0.03135335E+05 0.06667052E+02                   4
+HOCO              103190C   1H   1O   2     G  0200.00   4000.00  1500.00      1
+ 0.07517634E+02 0.01259029E-01-0.01910901E-05-0.03136391E-09 0.07547673E-13    2
+-0.02634121E+06-0.01448392E+03 0.02285122E+02 0.01351435E+00-0.01160407E-03    3
+ 0.05047011E-07-0.09032231E-11-0.02448416E+06 0.01367874E+03                   4
+HONO               31787H   1N   1O   2     G  0200.00   5000.00  1000.00      1
+ 0.05486893E+02 0.04218065E-01-0.01649143E-04 0.02971877E-08-0.02021148E-12    2
+-0.01126865E+06-0.02997002E+02 0.02290413E+02 0.01409922E+00-0.01367872E-03    3
+ 0.07498780E-07-0.01876905E-10-0.01043195E+06 0.01328077E+03                   4
+HONO2             103190H   1N   1O   3     G  0200.00   4000.00  1500.00      1
+ 0.09756148E+02 0.01900948E-01-0.03240020E-05-0.03976639E-09 0.01100334E-12    2
+-0.01942244E+06-0.02690023E+03 0.07877668E+01 0.02382329E+00-0.02205964E-03    3
+ 0.01034048E-06-0.01972857E-10-0.01630442E+06 0.02108964E+03                   4
+HSI(CH3)2          61991H   7C   2SI  1     G  0200.00   2500.00  1500.00      1
+ 0.01220942E+03 0.09173338E-01-0.01186653E-05-0.01188590E-07 0.02418110E-11    2
+ 0.03781464E+05-0.03668250E+03 0.02568267E+02 0.03071446E+00-0.01863911E-03    3
+ 0.06210373E-07-0.09376544E-11 0.07271919E+05 0.01551808E+03                   4
+HSI(CH3)2CH2       61991H   9C   3SI  1     G  0200.00   2500.00  1500.00      1
+ 0.01723999E+03 0.01101475E+00-0.01546410E-05-0.01338650E-07 0.02653453E-11    2
+-0.02842083E+05-0.06077749E+03 0.03367732E+02 0.04430759E+00-0.03246598E-03    3
+ 0.01379387E-06-0.02586752E-10 0.02041653E+05 0.01367000E+03                   4
+HSI(CH3)3          61991H  10C   3SI  1     G  0200.00   2500.00  1500.00      1
+ 0.01689903E+03 0.01338224E+00-0.01538243E-05-0.01746233E-07 0.03550375E-11    2
+-0.02740327E+06-0.06121112E+03 0.03224459E+02 0.04373614E+00-0.02597404E-03    3
+ 0.08415742E-07-0.01236561E-10-0.02243583E+06 0.01289306E+03                   4
+HSI(NH2)2          22790SI  1H   5N   2     G  0200.00   4000.00  1000.00      1
+ 0.01171677E+03 0.05339021E-01-0.04667824E-05-0.02824087E-08 0.05080916E-12    2
+-0.01264169E+05-0.03245118E+03 0.06289699E+02 0.01675060E+00-0.01520878E-04    3
+-0.01070065E-06 0.05538641E-10 0.03154771E+04-0.03746008E+02                   4
+HSI(NH2)3          22790SI  1H   7N   3     G  0200.00   4000.00  1000.00      1
+ 0.01661406E+03 0.07395874E-01-0.06440010E-05-0.03918887E-08 0.07045959E-12    2
+-0.03859547E+06-0.05865318E+03 0.07070983E+02 0.02754435E+00-0.02603669E-04    3
+-0.01874567E-06 0.09778511E-10-0.03582658E+06-0.08209675E+02                   4
+HSIC               61991H   1C   1SI  1     G  0200.00   2500.00  1500.00      1
+ 0.05849544E+02 0.07628346E-02-0.09974130E-06-0.03811586E-09 0.08581471E-13    2
+ 0.09097438E+06-0.04862062E+02 0.03761288E+02 0.06108070E-01-0.05721172E-04    3
+ 0.02805116E-07-0.05597709E-11 0.09168219E+06 0.06236756E+02                   4
+HSICCH             61991H   2C   2SI  1     G  0200.00   2500.00  1500.00      1
+ 0.09098096E+02 0.02292999E-01-0.01278589E-05-0.01869017E-08 0.03514532E-12    2
+ 0.04933532E+06-0.02153271E+03 0.03799881E+02 0.01633703E+00-0.01551299E-03    3
+ 0.07880591E-07-0.01619982E-10 0.05109468E+06 0.06475363E+02                   4
+HSICH2             61991H   3C   1SI  1     G  0200.00   2500.00  1500.00      1
+ 0.08641686E+02 0.02535259E-01-0.01532829E-05-0.02418416E-08 0.04870000E-12    2
+ 0.03962671E+06-0.02128790E+03 0.02376883E+02 0.01822864E+00-0.01641260E-03    3
+ 0.07937691E-07-0.01590356E-10 0.04179768E+06 0.01215211E+03                   4
+HSICH3             61991H   4C   1SI  1     G  0200.00   2500.00  1500.00      1
+ 0.07578257E+02 0.05000398E-01-0.08706991E-06-0.06516750E-08 0.01344446E-11    2
+ 0.02138075E+06-0.01438961E+03 0.02658293E+02 0.01547950E+00-0.08319889E-04    3
+ 0.02184355E-07-0.02302844E-11 0.02319822E+06 0.01240552E+03                   4
+HSICL             121986SI  1H   1CL  1     G  0200.00   2000.00  1000.00      1
+ 0.04900628E+02 0.01981752E-01-0.03634647E-05-0.02285211E-08 0.07633527E-12    2
+ 0.06914634E+05 0.01377004E+02 0.03072748E+02 0.09057843E-01-0.01159134E-03    3
+ 0.08310477E-07-0.02483000E-10 0.07324210E+05 0.01033490E+03                   4
+HSIN               22790H   1SI  1N   1     G  0200.00   4000.00  1000.00      1
+ 0.05746590E+02 0.01167119E-01-0.01360742E-05-0.05908617E-09 0.01174696E-12    2
+ 0.04484671E+06-0.05931788E+02 0.04865176E+02 0.01775119E-01 0.04890870E-05    3
+ 0.03922383E-08-0.07913276E-11 0.04526353E+06-0.07134509E+01                   4
+HSINH              42489SI  1H   2N   1     G  0200.00   3000.00  1000.00      1
+ 0.06493435E+02 0.02567980E-01-0.03126526E-05-0.02577467E-08 0.06216479E-12    2
+ 0.04035934E+06-0.07830112E+02 0.03566343E+02 0.08446736E-01-0.07699952E-05    3
+-0.05270970E-07 0.02581065E-10 0.04124904E+06 0.07780791E+02                   4
+HSINH2             42489SI  1N   1H   3     G  0200.00   3000.00  1000.00      1
+ 0.06177894E+02 0.04689964E-01-0.03583294E-05-0.04457980E-08 0.09379187E-12    2
+ 0.01091277E+06-0.07006672E+02 0.02716144E+02 0.01204278E+00-0.09827195E-05    3
+-0.07408477E-07 0.03789792E-10 0.01190771E+06 0.01126252E+03                   4
+HSISICL            40992H   1SI  2CL  1     G  0200.00   4000.00  1500.00      1
+ 0.09242357E+02 0.07265211E-02-0.02039730E-05-0.03559737E-10 0.04236577E-13    2
+ 0.03651789E+06-0.01714597E+03 0.05753464E+02 0.01000321E+00-0.01097056E-03    3
+ 0.06117942E-07-0.01351102E-10 0.03773825E+06 0.01395110E+02                   4
+I*C3H7            120186C   3H   7          G  0200.00   5000.00  1000.00      1
+ 0.08063369E+02 0.01574488E+00-0.05182392E-04 0.07477245E-08-0.03854422E-12    2
+ 0.05313871E+05-0.02192647E+03 0.01713300E+02 0.02542616E+00 0.01580808E-04    3
+-0.01821286E-06 0.08827710E-10 0.07535809E+05 0.01297901E+03                   4
+K                  81092K   1               G  0200.00   5000.00  1000.00      1
+ 0.02563720E+02-0.01453656E-02 0.01223794E-05-0.05337797E-09 0.01196251E-12    2
+ 0.09958933E+05 0.04689090E+02 0.02599395E+02-0.06665192E-02 0.01537419E-04    3
+-0.01462701E-07 0.04917226E-11 0.09968534E+05 0.04606125E+02                   4
+K(L)               81092K   1               L  0200.00   2000.00  1000.00      1
+ 0.03274152E+02-0.08858241E-03 0.03862458E-05 0.01524701E-08-0.07158116E-12    2
+-0.05365253E+04-0.09686786E+02 0.04883188E+02-0.05109876E-01 0.08368289E-04    3
+-0.07183867E-07 0.02694974E-10-0.01014822E+05-0.01801753E+03                   4
+K+                 81092K   1E  -1          G  0200.00   5000.00  1000.00      1
+ 0.02500252E+02 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00    2
+ 0.06110476E+06 0.04335097E+02 0.02500252E+02 0.00000000E+00 0.00000000E+00    3
+ 0.00000000E+00 0.00000000E+00 0.06110476E+06 0.04335097E+02                   4
+K2                 81092K   2               G  0200.00   5000.00  1000.00      1
+ 0.04493744E+02 0.02561175E-02-0.03738461E-07 0.07392168E-11-0.05314252E-15    2
+ 0.01393386E+06 0.04344696E+02 0.04445378E+02 0.04507960E-02-0.02923572E-05    3
+ 0.01874060E-08-0.04441270E-12 0.01394330E+06 0.04577300E+02                   4
+K2B4O7(S)          81292B   4K   2O   7     S  0200.00   2000.00  1000.00      1
+ 0.02241821E+03 0.01632758E+00-0.03423961E-04-0.01996427E-07 0.07329643E-11    2
+-0.04092750E+07-0.01095459E+04-0.02998519E+02 0.01131803E+01-0.01363625E-02    3
+ 0.07498933E-06-0.01475027E-09-0.04041216E+07 0.01385206E+03                   4
+K2B6O10(S)         81292B   6K   2O  10     S  0200.00   2000.00  1000.00      1
+ 0.03118760E+03 0.02605101E+00-0.07109914E-04-0.01524101E-07 0.08605891E-11    2
+-0.05702715E+07-0.01601394E+04 0.08964822E+02 0.01355307E+01-0.02844741E-02    3
+ 0.03136564E-05-0.01242126E-08-0.05641143E+07-0.05121922E+03                   4
+K2B8O13(S)         81292B   8K   2O  13     S  0200.00   2000.00  1000.00      1
+ 0.04112535E+03 0.02714051E+00 0.01343626E-04-0.04965544E-07 0.09664300E-11    2
+-0.07315279E+07-0.02135898E+04 0.02800687E+03 0.02363518E+00 0.05436592E-03    3
+-0.04802017E-06 0.07622581E-10-0.07248984E+07-0.01332889E+04                   4
+K2CO3(S)           81292C   1K   2O   3     S  0200.00   2000.00  1000.00      1
+ 0.01170935E+03 0.01041619E+00 0.01020812E-04-0.05155670E-08 0.09388472E-12    2
+-0.01424670E+07-0.05154899E+03 0.06680495E+02 0.03154875E+00-0.03258348E-03    3
+ 0.02341080E-06-0.06331882E-10-0.01414994E+07-0.02751031E+03                   4
+K2H2O2             81292H   2K   2O   2     G  0200.00   5000.00  1000.00      1
+ 0.09476007E+02 0.05520012E-01-0.02003512E-04 0.03416984E-08-0.02230089E-12    2
+-0.08204786E+06-0.01665546E+03 0.06069657E+02 0.01657159E+00-0.01641134E-03    3
+ 0.09628012E-07-0.02546013E-10-0.08118152E+06 0.05625929E+01                   4
+K2O(S)             81092K   2O   1          S  0200.00   2000.00  1000.00      1
+ 0.09200109E+02 0.04813529E-01-0.01018656E-04 0.08972973E-08-0.02121417E-11    2
+-0.04671154E+06-0.04264142E+03 0.02640315E+02 0.04577225E+00-0.09349357E-03    3
+ 0.08921012E-06-0.03044898E-09-0.04583697E+06-0.01392763E+03                   4
+K2O2(S)            81092K   2O   2          S  0200.00   2000.00  1000.00      1
+ 0.01094138E+03 0.06102309E-01 0.08639951E-05-0.02383978E-08 0.01021959E-12    2
+-0.06335114E+06-0.05099447E+03 0.08940024E+02 0.01225014E+00-0.08065365E-04    3
+ 0.07182271E-07-0.02627561E-10-0.06277485E+06-0.04066683E+03                   4
+K2SO4              81092K   2O   4S   1     G  0200.00   5000.00  1000.00      1
+ 0.01526056E+03 0.04272701E-01-0.01902870E-04 0.03745009E-08-0.02710228E-12    2
+-0.01368994E+07-0.04548655E+03 0.06620770E+02 0.02753542E+00-0.01909671E-03    3
+-0.04668391E-08 0.03385142E-10-0.01346318E+07-0.01043411E+02                   4
+K2SO4(A)           81092K   2O   4S   1     S  0200.00   1200.00  1000.00      1
+ 0.01112054E+03 0.01688473E+00 0.02694884E-04-0.06810694E-07 0.03326950E-10    2
+-0.01771853E+07-0.04766545E+03 0.05610137E+02 0.05334319E+00-0.08680538E-03    3
+ 0.08485600E-06-0.02978756E-09-0.01763645E+07-0.02358624E+03                   4
+K2SO4(B)           81092K   2O   4S   1     S  0200.00   1500.00  1000.00      1
+ 0.01400625E+03 0.08639256E-01 0.01734839E-04-0.01101018E-07 0.02493181E-11    2
+-0.01758863E+07-0.05931899E+03 0.01384030E+03 0.09154258E-01 0.01580722E-04    3
+-0.01673984E-07 0.06273504E-11-0.01758589E+07-0.05851410E+03                   4
+K3CL6AL(S)         81292AL  1CL  6K   3     S  0200.00   2000.00  1000.00      1
+ 0.02692199E+03 0.01202448E+00 0.05058586E-06-0.02459252E-07 0.06112274E-11    2
+-0.02602720E+07-0.01118533E+04 0.02756025E+03 0.01980910E-01 0.02914285E-03    3
+-0.03306608E-06 0.01153111E-09-0.02601182E+07-0.01132925E+04                   4
+K3CL9AL2(S)        81292AL  2CL  9K   3     S  0200.00   1500.00  1000.00      1
+ 0.04789960E+03-0.03698524E-01 0.01208277E-04 0.06439299E-07-0.01714364E-10    2
+-0.03594776E+07-0.02186357E+04 0.03685728E+03 0.02754220E-01 0.05087779E-03    3
+-0.06808868E-06 0.02773367E-09-0.03554758E+07-0.01561649E+04                   4
+K3F6AL(S)          81292AL  1F   6K   3     S  0200.00   2000.00  1000.00      1
+ 0.02557611E+03 0.01452585E+00-0.02005301E-04-0.01843642E-07 0.05259736E-11    2
+-0.04090259E+07-0.01172057E+04 0.01633462E+03 0.05150368E+00-0.07128115E-03    3
+ 0.06274052E-06-0.02251868E-09-0.04067185E+07-0.07147460E+03                   4
+KBF4               81292B   1F   4K   1     G  0200.00   5000.00  1000.00      1
+ 0.01230182E+03 0.04142506E-01-0.01820830E-04 0.03550730E-08-0.02552394E-12    2
+-0.01910389E+07-0.03449073E+03 0.05358002E+02 0.02295803E+00-0.01721231E-03    3
+ 0.02466718E-07 0.01382599E-10-0.01891819E+07 0.01299769E+02                   4
+KBO2               81292B   1K   1O   2     G  0200.00   5000.00  1000.00      1
+ 0.07506115E+02 0.02663024E-01-0.01134505E-04 0.02165299E-08-0.01532624E-12    2
+-0.08364206E+06-0.08262075E+02 0.04636629E+02 0.01088843E+00-0.09865937E-04    3
+ 0.04481115E-07-0.09043993E-11-0.08286314E+06 0.06500684E+02                   4
+KBO2(S)            81292B   1K   1O   2     S  0200.00   2000.00  1000.00      1
+ 0.07971486E+02 0.06730890E-01-0.01544574E-04-0.09972352E-08 0.04052630E-11    2
+-0.01227148E+07-0.03858371E+03 0.01603821E+02 0.03275175E+00-0.04757948E-03    3
+ 0.03848067E-06-0.01269093E-09-0.01212629E+07-0.07486101E+02                   4
+KBR                81292BR  1K   1          G  0200.00   5000.00  1000.00      1
+ 0.04458711E+02 0.01473836E-02-0.02499466E-06 0.05161851E-10-0.03875234E-14    2
+-0.02300303E+06 0.04657488E+02 0.04270624E+02 0.07398923E-02-0.05320569E-05    3
+-0.05894879E-10 0.01133094E-11-0.02296215E+06 0.05593031E+02                   4
+KBR(L)             81292BR  1K   1          L  0200.00   2500.00  1000.00      1
+ 0.08404630E+02 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00    2
+-0.04779214E+06-0.03519115E+03 0.08404630E+02 0.00000000E+00 0.00000000E+00    3
+ 0.00000000E+00 0.00000000E+00-0.04779214E+06-0.03519115E+03                   4
+KBR(S)             81292BR  1K   1          S  0200.00   1500.00  1000.00      1
+-0.05170830E+02 0.01746852E+00 0.01013392E-04-0.07494241E-07 0.02378879E-10    2
+-0.04495981E+06 0.03946532E+03 0.05431605E+02 0.03845234E-01-0.03455247E-04    3
+-0.09685064E-09 0.02470977E-10-0.04912882E+06-0.02040493E+03                   4
+KCL                81092CL  1K   1          G  0200.00   5000.00  1000.00      1
+ 0.04434967E+02 0.01726721E-02-0.03865868E-06 0.07943251E-10-0.05932801E-14    2
+-0.02716306E+06 0.03398542E+02 0.04149517E+02 0.01039142E-01-0.07034589E-05    3
+-0.01200715E-08 0.02112008E-11-0.02709960E+06 0.04826011E+02                   4
+KCL(L)             81092CL  1K   1          L  0200.00   2000.00  1000.00      1
+ 0.08852542E+02 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00    2
+-0.05337392E+06-0.04001344E+03 0.08852542E+02 0.00000000E+00 0.00000000E+00    3
+ 0.00000000E+00 0.00000000E+00-0.05337392E+06-0.04001344E+03                   4
+KCL(S)             81092CL  1K   1          S  0200.00   1500.00  1000.00      1
+ 0.01391136E+01 0.07749002E-01 0.02100056E-04-0.01960861E-07 0.03813962E-12    2
+-0.05188544E+06 0.09020889E+02 0.05818812E+02-0.05778791E-02 0.09593293E-04    3
+-0.01468548E-06 0.07916702E-10-0.05429399E+06-0.02336092E+03                   4
+KCL4AL(S)          81292AL  1CL  4K   1     S  0200.00   2000.00  1000.00      1
+ 0.02311946E+03 0.01525936E-01-0.06380630E-06-0.04176163E-08 0.01306884E-11    2
+-0.01521618E+07-0.01113391E+04 0.01753111E+03-0.03647218E-01 0.03673018E-03    3
+-0.03613268E-06 0.09813280E-10-0.01492592E+07-0.07647553E+03                   4
+KCLO4(S)           81092CL  1K   1O   4     S  0200.00   1500.00  1000.00      1
+ 0.01704025E+03 0.06660737E-01-0.06016704E-05 0.09785776E-08-0.05059647E-11    2
+-0.05676480E+06-0.08085843E+03-0.08468085E+02 0.01228758E+01-0.02129487E-02    3
+ 0.01790606E-05-0.05694776E-09-0.05181381E+06 0.04005509E+03                   4
+KCN                81092C   1K   1N   1     G  0200.00   5000.00  1000.00      1
+ 0.05842749E+02 0.01653475E-01-0.06722096E-05 0.01241081E-08-0.08573718E-13    2
+ 0.07711161E+05-0.03406482E+02 0.05315387E+02 0.03936776E-01-0.05387426E-04    3
+ 0.04814072E-07-0.01739264E-10 0.07842257E+05-0.08199391E+01                   4
+KCN(L)             81092C   1K   1N   1     L  0200.00   3000.00  1000.00      1
+ 0.09058883E+02 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00    2
+-0.01522798E+06-0.03545687E+03 0.09058883E+02 0.00000000E+00 0.00000000E+00    3
+ 0.00000000E+00 0.00000000E+00-0.01522798E+06-0.03545687E+03                   4
+KCN(S)             81092C   1K   1N   1     S  0200.00   2000.00  1000.00      1
+ 0.07894013E+02 0.02150449E-02-0.01621315E-05 0.06831993E-09-0.01060712E-12    2
+-0.01600422E+06-0.02964975E+03 0.08115453E+02-0.08847082E-02 0.01981085E-04    3
+-0.01804607E-07 0.05974163E-11-0.01604356E+06-0.03067895E+03                   4
+KF                 81292F   1K   1          G  0200.00   5000.00  1000.00      1
+ 0.04357120E+02 0.02586241E-02-0.08236973E-06 0.01676907E-09-0.01243132E-13    2
+-0.04063861E+06 0.02285054E+02 0.03798984E+02 0.01885430E-01-0.01210870E-04    3
+-0.03741075E-08 0.04494632E-11-0.04051013E+06 0.05095577E+02                   4
+KF(L)              81292F   1K   1          L  0200.00   3000.00  1000.00      1
+ 0.08656265E+02 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00    2
+-0.06927377E+06-0.04118344E+03 0.08656265E+02 0.00000000E+00 0.00000000E+00    3
+ 0.00000000E+00 0.00000000E+00-0.06927377E+06-0.04118343E+03                   4
+KF(S)              81292F   1K   1          S  0200.00   2000.00  1000.00      1
+ 0.03272299E+01 0.08993195E-01-0.03094381E-06-0.02624963E-07 0.07101532E-11    2
+-0.06804909E+06 0.05309298E+02 0.06190467E+02-0.05622034E-01 0.02294401E-03    3
+-0.02818213E-06 0.01204436E-09-0.07014057E+06-0.02637925E+03                   4
+KH                 81092H   1K   1          G  0200.00   5000.00  1000.00      1
+ 0.03968138E+02 0.07086924E-02-0.02618517E-05 0.05096044E-09-0.03655452E-13    2
+ 0.01350120E+06 0.08027413E+01 0.02900121E+02 0.03518317E-01-0.02544774E-04    3
+ 0.04599961E-08 0.01286229E-11 0.01379667E+06 0.06342766E+02                   4
+KH(S)              81092H   1K   1          S  0200.00   1500.00  1000.00      1
+ 0.05864564E+02 0.01204909E-01 0.02825877E-06 0.03559937E-08-0.02515747E-11    2
+-0.09079129E+05-0.02848776E+03 0.05248775E+01 0.02016870E+00-0.02768125E-03    3
+ 0.02024240E-06-0.06052568E-10-0.07796234E+05-0.01890097E+02                   4
+KI                 81092I   1K   1          G  0200.00   5000.00  1000.00      1
+ 0.04470767E+02 0.01359027E-02-0.01768799E-06 0.03648327E-10-0.02733674E-14    2
+-0.01644198E+06 0.05528315E+02 0.04327901E+02 0.05945793E-02-0.04409470E-05    3
+ 0.04559572E-09 0.06522621E-12-0.01641095E+06 0.06237795E+02                   4
+KI(L)              81092I   1K   1          L  0200.00   2500.00  1000.00      1
+ 0.08706593E+02 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00    2
+-0.04022598E+06-0.03588112E+03 0.08706593E+02 0.00000000E+00 0.00000000E+00    3
+ 0.00000000E+00 0.00000000E+00-0.04022598E+06-0.03588112E+03                   4
+KI(S)              81092I   1K   1          S  0200.00   2000.00  1000.00      1
+ 0.01442913E+02 0.09802845E-01-0.01380615E-04-0.02325573E-07 0.07600708E-11    2
+-0.03988335E+06 0.02717618E+02 0.05114120E+02 0.08508960E-01-0.02212545E-03    3
+ 0.02836093E-06-0.01155892E-09-0.04120049E+06-0.01812497E+03                   4
+KO                 81092K   1O   1          G  0200.00   5000.00  1000.00      1
+ 0.04400291E+02 0.02386787E-02-0.05880047E-06 0.01206713E-09-0.09006961E-14    2
+ 0.07217110E+05 0.03434775E+02 0.03985333E+02 0.01469353E-01-0.09479054E-05    3
+-0.02419141E-08 0.03264700E-11 0.07311120E+05 0.05517902E+02                   4
+KO-                81092K   1O   1E   1     G  0200.00   5000.00  1000.00      1
+ 0.04394805E+02 0.02418371E-02-0.06146423E-06 0.01255348E-09-0.09326869E-14    2
+-0.01794565E+06 0.02053687E+02 0.03961007E+02 0.01526099E-01-0.09806386E-05    3
+-0.02666917E-08 0.03470232E-11-0.01784737E+06 0.04231682E+02                   4
+KO2(S)             81092K   1O   2          S  0200.00   1500.00  1000.00      1
+ 0.01049310E+03 0.01397618E-01-0.06976643E-05 0.03477427E-08-0.01222708E-11    2
+-0.03767516E+06-0.04607321E+03 0.04023244E+02 0.02903561E+00-0.04812416E-03    3
+ 0.03816613E-06-0.01168231E-09-0.03635805E+06-0.01502191E+03                   4
+KOH                81092H   1K   1O   1     G  0200.00   2000.00  1000.00      1
+ 0.09996477E+02 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00    2
+-0.05262511E+06-0.04533806E+03 0.09996477E+02 0.00000000E+00 0.00000000E+00    3
+ 0.00000000E+00 0.00000000E+00-0.05262511E+06-0.04533805E+03                   4
+KOH+               81092H   1K   1O   1E  -1G  0200.00   5000.00  1000.00      1
+ 0.05583889E+02 0.01372118E-01-0.04239710E-05 0.06231942E-09-0.03548772E-13    2
+ 0.05821436E+06-0.02017959E+02 0.05036081E+02 0.04278173E-01-0.04213406E-04    3
+ 0.01114253E-07 0.03757057E-11 0.05823345E+06 0.03093667E+01                   4
+ME2GAET            62987GA  1C   4H  11     G  0200.00   1500.00  0600.00      1
+ 0.07174541E+02 0.03235532E+00 0.01495199E-04-0.01048226E-06 0.03053962E-10    2
+-0.06383914E+05-0.02026765E+02-0.03218207E+02 0.06398884E+00 0.01554552E-03    3
+-0.01284710E-05 0.09441259E-09-0.04451897E+05 0.04848091E+03                   4
+MEGAET             62987GA  1C   3H   8     G  0200.00   1500.00  0600.00      1
+ 0.06600990E+02 0.02284791E+00 0.01013375E-04-0.07318046E-07 0.02140197E-10    2
+ 0.04071593E+05 0.05239052E+01-0.08169937E+01 0.04554296E+00 0.01053133E-03    3
+-0.09079987E-06 0.06700564E-09 0.05448005E+05 0.03655502E+03                   4
+MEGAET2            62987GA  1C   5H  13     G  0200.00   1500.00  0600.00      1
+ 0.08123156E+02 0.03978908E+00 0.01690979E-04-0.01308415E-06 0.03852599E-10    2
+-0.08091057E+05-0.05039992E+02-0.05607499E+02 0.08187357E+00 0.01920530E-03    3
+-0.01678979E-05 0.01243354E-08-0.05546688E+05 0.06163371E+03                   4
+MG                 81292MG  1               G  0200.00   5000.00  1000.00      1
+ 0.02392633E+02 0.02085925E-02-0.01269898E-05 0.02553204E-09-0.04502495E-14    2
+ 0.01704914E+06 0.04211876E+02 0.02416375E+02 0.05325518E-02-0.01135514E-04    3
+ 0.09757325E-08-0.02898280E-11 0.01701992E+06 0.03983786E+02                   4
+MG(L)              81292MG  1               L  0200.00   2500.00  1000.00      1
+ 0.02664314E+02 0.01304526E-01-0.07547418E-07 0.06776047E-10-0.01436523E-13    2
+ 0.02234430E+04-0.01047801E+03 0.02161491E+02 0.04242991E-01-0.06464607E-04    3
+ 0.06116790E-07-0.02090033E-10 0.02996028E+04-0.08229090E+02                   4
+MG(S)              81292MG  1               S  0200.00   2000.00  1000.00      1
+ 0.02318547E+02 0.01929427E-01-0.01682130E-05 0.04131403E-09-0.01669293E-13    2
+-0.07634172E+04-0.09802473E+02 0.01505637E+02 0.09217769E-01-0.01955590E-03    3
+ 0.02020331E-06-0.07251403E-10-0.07226661E+04-0.06689818E+02                   4
+MG+                81292MG  1E  -1          G  0200.00   5000.00  1000.00      1
+ 0.02504405E+02-0.08920014E-04 0.06671727E-07-0.02081615E-10 0.02311490E-14    2
+ 0.01064936E+07 0.04292208E+02 0.02498282E+02 0.01465863E-03-0.03808341E-06    3
+ 0.04118195E-09-0.01573362E-12 0.01064953E+07 0.04322873E+02                   4
+MG2                81292MG  2               G  0200.00   5000.00  1000.00      1
+ 0.03671278E+02-0.02125120E-02 0.01013096E-05-0.02144628E-09 0.01719351E-13    2
+ 0.03362331E+06 0.08548934E+02 0.04345606E+02-0.02080614E-01 0.01110301E-04    3
+ 0.08675645E-08-0.07025087E-11 0.03346530E+06 0.05134171E+02                   4
+MG2BR4             81292BR  4MG  2          G  0200.00   5000.00  1000.00      1
+ 0.01577579E+03 0.02832096E-02-0.01343784E-05 0.02764443E-09-0.02066139E-13    2
+-0.09710095E+06-0.03457961E+03 0.01476089E+03 0.03361559E-01-0.02433120E-04    3
+-0.05502974E-08 0.08111758E-11-0.09687714E+06-0.02950851E+03                   4
+MG2C3(S)           81292C   3MG  2          S  0200.00   2500.00  1000.00      1
+ 0.01239169E+03 0.04624400E-01-0.02484800E-04 0.08656213E-08-0.01151950E-11    2
+ 0.05393315E+05-0.06051988E+03-0.01026610E+02 0.07016433E+00-0.01240220E-02    3
+ 0.01009934E-05-0.03082738E-09 0.07664551E+05 0.01701243E+02                   4
+MG2F4              81292F   4MG  2          G  0200.00   5000.00  1000.00      1
+ 0.01441927E+03 0.01917749E-01-0.08894670E-05 0.01801607E-08-0.01331627E-12    2
+-0.02113316E+07-0.04283410E+03 0.08770948E+02 0.01784847E+00-0.01109718E-03    3
+-0.04603306E-07 0.04695460E-10-0.02099919E+07-0.01422645E+03                   4
+MGAL2O4(S)         81292AL  2MG  1O   4     S  0200.00   2800.00  1000.00      1
+ 0.01495895E+03 0.08818509E-01-0.03160711E-04 0.01013391E-07-0.01228526E-11    2
+-0.02817956E+07-0.07811436E+03-0.04868005E+02 0.01055641E+01-0.01821902E-02    3
+ 0.01481432E-05-0.04514191E-09-0.02784436E+07 0.01382603E+03                   4
+MGB2(S)            81292B   2MG  1          S  0200.00   2000.00  1000.00      1
+ 0.06619755E+02 0.01322195E-01 0.04697857E-05 0.03681802E-08-0.01739753E-11    2
+-0.01346401E+06-0.03460640E+03 0.04176086E+02 0.06396544E-01-0.05616456E-04    3
+ 0.07092297E-07-0.03442529E-10-0.01255609E+06-0.02118159E+03                   4
+MGBR               81292BR  1MG  1          G  0200.00   5000.00  1000.00      1
+ 0.04385933E+02 0.01975075E-02-0.06117347E-06 0.01027103E-09-0.03876260E-14    2
+-0.05584836E+05 0.04357095E+02 0.03932960E+02 0.01518559E-01-0.09413456E-05    3
+-0.03806534E-08 0.04026288E-11-0.05481871E+05 0.06634707E+02                   4
+MGBR2              81292BR  2MG  1          G  0200.00   5000.00  1000.00      1
+ 0.07282371E+02 0.02671005E-02-0.01246470E-05 0.02534839E-09-0.01878437E-13    2
+-0.03865522E+06-0.05463838E+02 0.06436183E+02 0.02723204E-01-0.01828290E-04    3
+-0.05509276E-08 0.06681264E-11-0.03845914E+06-0.01198273E+02                   4
+MGBR2+             81292BR  2MG  1E  -1     G  0200.00   5000.00  1000.00      1
+ 0.07317323E+02 0.02252288E-02-0.01039562E-05 0.02025280E-09-0.01333602E-13    2
+ 0.08575141E+06-0.03144653E+02 0.06600891E+02 0.02322271E-01-0.01575443E-04    3
+-0.04621806E-08 0.05719750E-11 0.08591576E+06 0.04604670E+01                   4
+MGC2(S)            81292C   2MG  1          S  0200.00   2500.00  1000.00      1
+ 0.07427011E+02 0.02786444E-01-0.01500518E-04 0.05235992E-08-0.06981197E-12    2
+ 0.08069270E+05-0.03697419E+03-0.06510206E+01 0.04230993E+00-0.07491559E-03    3
+ 0.06109534E-06-0.01867195E-09 0.09434739E+05 0.04708862E+01                   4
+MGCL               81292CL  1MG  1          G  0200.00   5000.00  1000.00      1
+ 0.04335941E+02 0.02574531E-02-0.09346352E-06 0.01898185E-09-0.01405830E-13    2
+-0.06564693E+05 0.03214818E+02 0.03708081E+02 0.02069048E-01-0.01328293E-04    3
+-0.04347061E-08 0.05033764E-11-0.06418555E+05 0.06382778E+02                   4
+MGCL2              81292CL  2MG  1          G  0200.00   5000.00  1000.00      1
+ 0.07176871E+02 0.03917414E-02-0.01814155E-05 0.03670114E-09-0.02710187E-13    2
+-0.04941693E+06-0.07830507E+02 0.06000831E+02 0.03745347E-01-0.02447708E-04    3
+-0.07873749E-08 0.09100925E-11-0.04913880E+06-0.01880677E+02                   4
+MGCL2(S)           81292CL  2MG  1          S  0200.00   2000.00  1000.00      1
+ 0.08460549E+02 0.02204761E-01-0.06316590E-05 0.02617815E-08-0.05082748E-12    2
+-0.07983216E+06-0.03816537E+03 0.04852236E+02 0.02102714E+00-0.03667994E-03    3
+ 0.03032449E-06-0.09279303E-10-0.07928891E+06-0.02175204E+03                   4
+MGCO3(S)           81292C   1MG  1O   3     S  0200.00   1000.00  1000.00      1
+ 0.01585340E+03 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00    2
+-0.01402924E+07-0.08639698E+03 0.01344667E+02 0.03695912E+00-0.04452165E-03    3
+ 0.03181716E-06-0.09745892E-10-0.01354278E+07-0.09041713E+02                   4
+MGF                81292F   1MG  1          G  0200.00   5000.00  1000.00      1
+ 0.04166004E+02 0.04434929E-02-0.01720072E-05 0.03280565E-09-0.02190876E-13    2
+-0.02980270E+06 0.02577443E+02 0.03172942E+02 0.03157075E-01-0.02008009E-04    3
+-0.04636928E-08 0.06097890E-11-0.02955269E+06 0.07654193E+02                   4
+MGF2               81292F   2MG  1          G  0200.00   5000.00  1000.00      1
+ 0.06314408E+02 0.08013760E-02-0.03622602E-05 0.07202929E-09-0.05250556E-13    2
+-0.08944590E+06-0.05637362E+02 0.04365511E+02 0.06150098E-01-0.04077014E-04    3
+-0.07490467E-08 0.01130754E-10-0.08895505E+06 0.04323487E+02                   4
+MGF2(S)            81292F   2MG  1          S  0200.00   2000.00  1000.00      1
+ 0.08170168E+02 0.02353222E-01-0.01060785E-04 0.02392788E-08-0.01594861E-12    2
+-0.01379692E+07-0.04083052E+03 0.01762995E+02 0.03056669E+00-0.04933989E-03    3
+ 0.03778577E-06-0.01108964E-09-0.01367476E+07-0.01039233E+03                   4
+MGF2+              81292F   2MG  1E  -1     G  0200.00   5000.00  1000.00      1
+ 0.06819974E+02 0.08267521E-02-0.03871799E-05 0.07864547E-09-0.05589085E-13    2
+ 0.06903427E+06-0.08313943E+02 0.04782002E+02 0.06580736E-01-0.04470059E-04    3
+-0.08656625E-08 0.01305586E-10 0.06953005E+06 0.02038302E+02                   4
+MGH                81292H   1MG  1          G  0200.00   5000.00  1000.00      1
+ 0.03501857E+02 0.01196289E-01-0.04870483E-05 0.09616032E-09-0.06566165E-13    2
+ 0.01915847E+06 0.02762077E+02 0.02929127E+02 0.02881565E-01-0.03702138E-04    3
+ 0.03761425E-07-0.01569289E-10 0.01935649E+06 0.05809553E+02                   4
+MGH2(S)            81292H   2MG  1          S  0200.00   2000.00  1000.00      1
+ 0.04503751E+02 0.05009365E-01-0.07076169E-05-0.09321345E-08 0.03016174E-11    2
+-0.01106837E+06-0.02418625E+03-0.09052193E+00 0.01938007E+00-0.01936573E-03    3
+ 0.01164904E-06-0.03397887E-10-0.09845471E+05-0.07606392E+01                   4
+MGH2O2             81292H   2MG  1O   2     G  0200.00   5000.00  1000.00      1
+ 0.08302454E+02 0.03712996E-01-0.01279645E-04 0.02102831E-08-0.01337217E-12    2
+-0.07153173E+06-0.01640682E+03 0.04724303E+02 0.01611746E+00-0.01291007E-03    3
+ 0.05703660E-08 0.02430663E-10-0.07085783E+06 0.09898885E+01                   4
+MGH2O2(S)          81292H   2MG  1O   2     S  0200.00   1000.00  1000.00      1
+ 0.01381001E+03 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00    2
+-0.01162998E+07-0.07323205E+03-0.04220693E+02 0.07726916E+00-0.01383568E-02    3
+ 0.01155986E-05-0.03648025E-09-0.01123883E+07 0.01381610E+03                   4
+MGN                81292MG  1N   1          G  0200.00   5000.00  1000.00      1
+ 0.04177825E+02 0.04387980E-02-0.01726040E-05 0.03444124E-09-0.02516521E-13    2
+ 0.03340716E+06 0.02969357E+02 0.03200092E+02 0.03139739E-01-0.02045035E-04    3
+-0.04125930E-08 0.05937391E-11 0.03365107E+06 0.07958522E+02                   4
+MGO(S)             81292MG  1O   1          S  0200.00   4000.00  1000.00      1
+ 0.04857470E+02 0.01952289E-01-0.08605956E-05 0.02101340E-08-0.01886027E-12    2
+-0.07394488E+06-0.02524503E+03 0.01971740E+02 0.01095483E+00-0.08169910E-04    3
+-0.06359402E-08 0.02019714E-10-0.07332016E+06-0.01088662E+03                   4
+MGOH               81292H   1MG  1O   1     G  0200.00   5000.00  1000.00      1
+ 0.05156858E+02 0.01849251E-01-0.06339213E-05 0.01026031E-08-0.06282974E-13    2
+-0.02145938E+06-0.02774689E+02 0.03347871E+02 0.08101305E-01-0.06443066E-04    3
+ 0.02006805E-08 0.01261718E-10-0.02111816E+06 0.06024177E+02                   4
+MGOH+              81292H   1MG  1O   1E  -1G  0200.00   5000.00  1000.00      1
+ 0.05171484E+02 0.01835998E-01-0.06314934E-05 0.01036229E-08-0.06583402E-13    2
+ 0.06865354E+06-0.03526109E+02 0.03383351E+02 0.08055572E-01-0.06452790E-04    3
+ 0.02400212E-08 0.01246873E-10 0.06898753E+06 0.05158118E+02                   4
+MGS                81292MG  1S   1          G  0200.00   5000.00  1000.00      1
+ 0.01071331E+03-0.06086042E-01 0.02390833E-04-0.04174042E-08 0.02737530E-12    2
+ 0.01317442E+06-0.03521998E+03 0.03789723E+02-0.03985028E-01 0.02217192E-03    3
+-0.01858825E-06 0.03239714E-10 0.01635406E+06 0.05868810E+02                   4
+MGS(S)             81292MG  1S   1          S  0200.00   3000.00  1000.00      1
+ 0.05581918E+02 0.08031267E-02-0.01812239E-05 0.04113088E-09-0.02798069E-13    2
+-0.04331716E+06-0.02607368E+03 0.04076152E+02 0.07088011E-01-0.09604458E-04    3
+ 0.06056009E-07-0.01373560E-10-0.04304232E+06-0.01890776E+03                   4
+MGSO4(S)           81292MG  1O   4S   1     S  0200.00   2500.00  1000.00      1
+ 0.08845820E+02 0.01221900E+00-0.02141897E-04-0.09580988E-08 0.02954552E-11    2
+-0.01549512E+07-0.04302983E+03 0.02258418E+02 0.04788929E+00-0.07110586E-03    3
+ 0.05630850E-06-0.01709008E-09-0.01540505E+07-0.01345647E+03                   4
+N                 120186N   1               G  0200.00   5000.00  1000.00      1
+ 0.02450268E+02 0.01066146E-02-0.07465337E-06 0.01879652E-09-0.01025984E-13    2
+ 0.05611604E+06 0.04448758E+02 0.02503071E+02-0.02180018E-03 0.05420529E-06    3
+-0.05647560E-09 0.02099904E-12 0.05609890E+06 0.04167566E+02                   4
+N*C3H7            120186C   3H   7          G  0200.00   5000.00  1000.00      1
+ 0.07978291E+02 0.01576113E+00-0.05173243E-04 0.07443892E-08-0.03824978E-12    2
+ 0.07579402E+05-0.01935611E+03 0.01922537E+02 0.02478927E+00 0.01810249E-04    3
+-0.01783266E-06 0.08582996E-10 0.09713281E+05 0.01399271E+03                   4
+N2                121286N   2               G  0200.00   5000.00  1000.00      1
+ 0.02926640E+02 0.01487977E-01-0.05684761E-05 0.01009704E-08-0.06753351E-13    2
+-0.09227977E+04 0.05980528E+02 0.03298677E+02 0.01408240E-01-0.03963222E-04    3
+ 0.05641515E-07-0.02444855E-10-0.01020900E+05 0.03950372E+02                   4
+N2H2              121286N   2H   2          G  0200.00   5000.00  1000.00      1
+ 0.03371185E+02 0.06039968E-01-0.02303854E-04 0.04062789E-08-0.02713144E-12    2
+ 0.02418172E+06 0.04980585E+02 0.01617999E+02 0.01306312E+00-0.01715712E-03    3
+ 0.01605608E-06-0.06093639E-10 0.02467526E+06 0.01379467E+03                   4
+N2H3              120186N   2H   3          G  0200.00   5000.00  1000.00      1
+ 0.04441846E+02 0.07214271E-01-0.02495684E-04 0.03920565E-08-0.02298950E-12    2
+ 0.01664221E+06-0.04275205E+01 0.03174204E+02 0.04715907E-01 0.01334867E-03    3
+-0.01919685E-06 0.07487564E-10 0.01727270E+06 0.07557224E+02                   4
+N2H4              121286N   2H   4          G  0200.00   5000.00  1000.00      1
+ 0.04977317E+02 0.09595519E-01-0.03547639E-04 0.06124299E-08-0.04029795E-12    2
+ 0.09341219E+05-0.02962990E+02 0.06442606E+00 0.02749730E+00-0.02899451E-03    3
+ 0.01745240E-06-0.04422282E-10 0.01045192E+06 0.02127789E+03                   4
+N2H4(L)            90589H   4N   2          L  0200.00   0600.00  0450.00      1
+ 0.08890683E+02 0.08330343E-01 0.04945549E-04-0.04909251E-08-0.03355824E-10    2
+ 0.03032250E+05-0.03871433E+03 0.09047444E+02 0.09241592E-01 0.02263547E-04    3
+-0.08952247E-07 0.01486863E-09 0.02970393E+05-0.03974034E+03                   4
+N2O               121286N   2O   1          G  0200.00   5000.00  1000.00      1
+ 0.04718977E+02 0.02873714E-01-0.01197496E-04 0.02250552E-08-0.01575337E-12    2
+ 0.08165811E+05-0.01657250E+02 0.02543058E+02 0.09492193E-01-0.09792775E-04    3
+ 0.06263845E-07-0.01901826E-10 0.08765100E+05 0.09511222E+02                   4
+N2O+              121286N   2O   1E  -1     G  0200.00   5000.00  1000.00      1
+ 0.05398516E+02 0.02249478E-01-0.09577057E-05 0.01823193E-08-0.01284422E-12    2
+ 0.01584851E+07-0.03733146E+02 0.03187228E+02 0.08350714E-01-0.07894549E-04    3
+ 0.04597445E-07-0.01381075E-10 0.01591279E+07 0.07779426E+02                   4
+N2O4              121286N   2O   4          G  0200.00   5000.00  1000.00      1
+ 0.01048220E+03 0.05972272E-01-0.02564044E-04 0.04916885E-08-0.03490969E-12    2
+-0.02849989E+05-0.02612289E+03 0.03624593E+02 0.02474708E+00-0.02172875E-03    3
+ 0.09927104E-07-0.02222817E-10-0.09128241E+04 0.09457174E+02                   4
+N3                121286N   3               G  0200.00   5000.00  1000.00      1
+ 0.05208505E+02 0.02444507E-01-0.01038941E-04 0.01977417E-08-0.01395644E-12    2
+ 0.04796178E+06-0.03612756E+02 0.02882219E+02 0.08930338E-01-0.08539038E-04    3
+ 0.05045585E-07-0.01521248E-10 0.04863468E+06 0.08481757E+02                   4
+NA                 80792NA  1               G  0200.00   5000.00  1000.00      1
+ 0.02574480E+02-0.01605880E-02 0.01250641E-05-0.04516576E-09 0.06941745E-13    2
+ 0.01219129E+06 0.03830900E+02 0.02591348E+02-0.05961520E-02 0.01327651E-04    3
+-0.01211123E-07 0.03890067E-11 0.01220642E+06 0.03841789E+02                   4
+NA(L)              81092NA  1               L  0200.00   2000.00  1000.00      1
+ 0.04030581E+02-0.01320419E-01 0.04136604E-05 0.05486936E-08-0.01916626E-11    2
+-0.07899189E+04-0.01548589E+03 0.04682137E+02-0.03624112E-01 0.04776195E-04    3
+-0.03871514E-07 0.01518150E-10-0.09807172E+04-0.01881830E+03                   4
+NA+                80792NA  1E  -1          G  0200.00   5000.00  1000.00      1
+ 0.02500252E+02 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00    2
+ 0.07260903E+06 0.03538490E+02 0.02500252E+02 0.00000000E+00 0.00000000E+00    3
+ 0.00000000E+00 0.00000000E+00 0.07260904E+06 0.03538490E+02                   4
+NA2                80792NA  2               G  0200.00   5000.00  1000.00      1
+ 0.04480669E+02 0.02178011E-02-0.01102830E-06 0.02208498E-10-0.01614866E-14    2
+ 0.01519313E+06 0.02073203E+02 0.04369675E+02 0.05850265E-02-0.03825359E-05    3
+ 0.08752245E-09 0.02980178E-12 0.01521703E+06 0.02622521E+02                   4
+NA2B4O7(S)         81292B   4NA  2O   7     S  0200.00   2000.00  1000.00      1
+ 0.02061542E+03 0.01728323E+00-0.04016503E-04-0.07600982E-08 0.05580242E-11    2
+-0.04014288E+07-0.01006093E+04 0.01430907E+02 0.01167214E+01-0.02000861E-02    3
+ 0.01698028E-05-0.05418888E-09-0.03982982E+07-0.01265829E+03                   4
+NA2B6O10(S)        81292B   6NA  2O  10     S  0200.00   2000.00  1000.00      1
+ 0.02989617E+03 0.03053411E+00-0.02146684E-04-0.04458443E-07 0.09406424E-11    2
+-0.05638429E+07-0.01571271E+04 0.09347958E+02 0.08948274E+00-0.01024848E-02    3
+ 0.01015647E-05-0.04314482E-09-0.05570116E+07-0.04828430E+03                   4
+NA2C2N2            81292C   2N   2NA  2     G  0200.00   5000.00  1000.00      1
+ 0.01253426E+03 0.03485206E-01-0.01426483E-04 0.02648455E-08-0.01838071E-12    2
+-0.05033986E+05-0.03087649E+03 0.01092445E+03 0.09724206E-01-0.01190420E-03    3
+ 0.08942515E-07-0.02847524E-10-0.04654688E+05-0.02294170E+03                   4
+NA2F2              80792F   2NA  2          G  0200.00   5000.00  1000.00      1
+ 0.09265403E+02 0.09044011E-02-0.04233919E-05 0.08630666E-09-0.06408558E-13    2
+-0.01047310E+07-0.01880290E+03 0.06422050E+02 0.09031559E-01-0.05593408E-04    3
+-0.02581729E-07 0.02547837E-10-0.01040718E+07-0.04453081E+02                   4
+NA2H2O2            80792H   2NA  2O   2     G  0200.00   5000.00  1000.00      1
+ 0.09347846E+02 0.05678318E-01-0.02077824E-04 0.03568716E-08-0.02342868E-12    2
+-0.07634945E+06-0.01850110E+03 0.05441492E+02 0.01814821E+00-0.01733029E-03    3
+ 0.09077551E-07-0.02055174E-10-0.07536770E+06 0.01240430E+02                   4
+NA2O(L)            81092NA  2O   1          L  0200.00   3000.00  1000.00      1
+ 0.01258178E+03 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00    2
+-0.04859891E+06-0.06066678E+03 0.01258178E+03 0.00000000E+00 0.00000000E+00    3
+ 0.00000000E+00 0.00000000E+00-0.04859891E+06-0.06066677E+03                   4
+NA2O(S)            81092NA  2O   1          S  0200.00   2000.00  1000.00      1
+ 0.08804423E+02 0.03253428E-01-0.03530522E-05-0.04324117E-08 0.01394574E-11    2
+-0.05257507E+06-0.04209654E+03 0.04776964E+02 0.01483269E+00-0.01052247E-03    3
+ 0.01278469E-07 0.01046187E-10-0.05155651E+06-0.02156737E+03                   4
+NA2O2              81092NA  2O   2          S  0200.00   2500.00  1000.00      1
+ 0.01382402E+03-0.03556455E-02 0.02837263E-05-0.09701692E-09 0.01205762E-12    2
+-0.06583802E+06-0.06789536E+03 0.08035418E+02 0.05983777E-01 0.01935571E-03    3
+-0.03410482E-06 0.01439706E-09-0.06395152E+06-0.03604480E+03                   4
+NA2SO4             80792NA  2O   4S   1     G  0200.00   5000.00  1000.00      1
+ 0.01506456E+03 0.04508233E-01-0.02011474E-04 0.03963989E-08-0.02871466E-12    2
+-0.01296053E+07-0.04683857E+03 0.05752581E+02 0.02964118E+00-0.02035211E-03    3
+-0.01073243E-07 0.03960597E-10-0.01271767E+07 0.01016246E+02                   4
+NA2SO4(D)          81092NA  2O   4S   1     S  0200.00   1500.00  1000.00      1
+ 0.01062092E+03 0.01179912E+00 0.03608537E-04-0.03424054E-09-0.09650399E-11    2
+-0.01684493E+07-0.04191208E+03 0.01187237E+03 0.04287018E+00-0.09072926E-03    3
+ 0.09042235E-06-0.02940634E-09-0.01707163E+07-0.05750085E+03                   4
+NA2SO4(i)          81092NA  2O   4S   1     S  0200.00   1500.00  1000.00      1
+ 0.01711668E+03 0.05878399E-01 0.01196697E-04 0.01676018E-08-0.02640822E-11    2
+-0.01714447E+07-0.07997372E+03 0.01674756E+03 0.01133662E+00-0.01526634E-03    3
+ 0.01819548E-06-0.06918027E-10-0.01714932E+07-0.07899648E+03                   4
+NA2SO4(iii)        81092NA  2O   4S   1     S  0200.00   1000.00  1000.00      1
+ 0.03701786E+03 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00    2
+-0.01854858E+07-0.02084472E+04 0.01413394E+03-0.01694491E+00 0.09403022E-03    3
+-0.07815722E-06 0.02395583E-09-0.01707247E+07-0.06037737E+03                   4
+NA2SO4(iv)         81092NA  2O   4S   1     S  0200.00   1000.00  1000.00      1
+ 0.02590382E+03 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00    2
+-0.01779857E+07-0.01365608E+04 0.05917499E+02 0.04507074E+00-0.05672574E-03    3
+ 0.04596655E-06-0.01432523E-09-0.01702527E+07-0.02694892E+03                   4
+NA2SO4(v)          81092NA  2O   4S   1     S  0200.00   1000.00  1000.00      1
+ 0.02590382E+03 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00    2
+-0.01780169E+07-0.01366284E+04 0.05917499E+02 0.04507074E+00-0.05672574E-03    3
+ 0.04596655E-06-0.01432523E-09-0.01702840E+07-0.02701654E+03                   4
+NA3CL6AL(S)        81292AL  1CL  6NA  3     S  0200.00   2000.00  1000.00      1
+ 0.02863182E+03 0.08169580E-01 0.01787040E-05-0.09984084E-08 0.01787581E-11    2
+-0.02473307E+07-0.01246570E+04 0.02610594E+03 0.09148861E-01 0.09743193E-04    3
+-0.01296166E-06 0.04124132E-10-0.02462808E+07-0.01099689E+04                   4
+NA3F6AL(S)         81292AL  1F   6NA  3     S  0200.00   1200.00  1000.00      1
+ 0.01867366E+03 0.02426805E+00 0.01311169E-04-0.01223061E-06 0.06326451E-10    2
+-0.04056682E+07-0.08492075E+03 0.01182130E+03 0.07831376E+00-0.01387551E-02    3
+ 0.01331742E-05-0.04620547E-09-0.04049948E+07-0.05693419E+03                   4
+NABH4(S)           81292B   1H   4NA  1     S  0200.00   2000.00  1000.00      1
+ 0.08204329E+02 0.01008304E+00-0.01032261E-04-0.02815504E-07 0.09005147E-11    2
+-0.02614390E+06-0.03790153E+03 0.08076391E+02 0.05407829E-01 0.01208139E-03    3
+-0.01450540E-06 0.04279918E-10-0.02580298E+06-0.03584760E+03                   4
+NABO2              81092B   1NA  1O   2     G  0200.00   5000.00  1000.00      1
+ 0.07449052E+02 0.02730088E-01-0.01165145E-04 0.02226924E-08-0.01578063E-12    2
+-0.08056425E+06-0.09194809E+02 0.04413702E+02 0.01144045E+00-0.01021892E-03    3
+ 0.04340556E-07-0.07548787E-11-0.07974780E+06 0.06401325E+02                   4
+NABO2(S)           81292B   1NA  1O   2     S  0200.00   2000.00  1000.00      1
+ 0.07820448E+02 0.06702746E-01-0.01488126E-04-0.01033983E-07 0.04130615E-11    2
+-0.01203511E+07-0.03848530E+03 0.01695994E+02 0.03131723E+00-0.04453876E-03    3
+ 0.03572163E-06-0.01178195E-09-0.01189335E+07-0.08471359E+02                   4
+NABR               81092BR  1NA  1          G  0200.00   5000.00  1000.00      1
+ 0.04424304E+02 0.01887477E-02-0.04500799E-06 0.09226701E-10-0.06871650E-14    2
+-0.01865205E+06 0.03707466E+02 0.04097639E+02 0.01170972E-01-0.07798224E-05    3
+-0.01611608E-08 0.02489549E-11-0.01857889E+06 0.05343556E+02                   4
+NABR(L)            81292BR  1NA  1          L  0200.00   2500.00  1000.00      1
+ 0.07498742E+02 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00    2
+-0.04305332E+06-0.03017306E+03 0.07498742E+02 0.00000000E+00 0.00000000E+00    3
+ 0.00000000E+00 0.00000000E+00-0.04305333E+06-0.03017306E+03                   4
+NABR(S)            81292BR  1NA  1          S  0200.00   2000.00  1000.00      1
+ 0.05741811E+02 0.01766697E-01-0.01899553E-05 0.01473021E-09 0.01715605E-12    2
+-0.04526151E+06-0.02279248E+03 0.04706446E+02 0.08010188E-01-0.01346175E-03    3
+ 0.01196933E-06-0.03873765E-10-0.04513442E+06-0.01826015E+03                   4
+NACH               80792C   1N   1NA  1     G  0200.00   5000.00  1000.00      1
+ 0.05791865E+02 0.01708993E-01-0.06965832E-05 0.01288980E-08-0.08921502E-13    2
+ 0.09496355E+05-0.04320624E+02 0.05123989E+02 0.04411283E-01-0.05682223E-04    3
+ 0.04664804E-07-0.01593603E-10 0.09657925E+05-0.01032367E+02                   4
+NACL               81092CL  1NA  1          G  0200.00   5000.00  1000.00      1
+ 0.04393820E+02 0.02153336E-02-0.06198756E-06 0.01266879E-09-0.09427806E-14    2
+-0.02315864E+06 0.02486064E+02 0.03953003E+02 0.01514187E-01-0.09819465E-05    3
+-0.02807090E-08 0.03543574E-11-0.02305831E+06 0.04701214E+02                   4
+NACL(S)            81092CL  1NA  1          S  0200.00   1500.00  1000.00      1
+ 0.07639640E+02-0.03933726E-01 0.02071020E-04 0.04233998E-07-0.02204761E-10    2
+-0.05163684E+06-0.03397957E+03 0.04982695E+02 0.05432908E-01-0.07698454E-04    3
+ 0.06300821E-07-0.01211800E-10-0.05112201E+06-0.02104512E+03                   4
+NACL4AL(S)         81292AL  1CL  4NA  1     S  0200.00   2000.00  1000.00      1
+ 0.02138498E+03 0.03252454E-01-0.01769716E-05-0.07072990E-08 0.01928080E-11    2
+-0.01447874E+07-0.01021539E+04 0.01588411E+03 0.04527768E-01 0.02409928E-03    3
+-0.03108224E-06 0.01051706E-09-0.01424874E+07-0.07002475E+03                   4
+NACN               81092C   1N   1NA  1     G  0200.00   5000.00  1000.00      1
+ 0.05791865E+02 0.01708993E-01-0.06965832E-05 0.01288980E-08-0.08921502E-13    2
+ 0.09496355E+05-0.04320624E+02 0.05123989E+02 0.04411283E-01-0.05682223E-04    3
+ 0.04664804E-07-0.01593603E-10 0.09657925E+05-0.01032367E+02                   4
+NACN(S)            81292C   1N   1NA  1     S  0200.00   2000.00  1000.00      1
+ 0.08137501E+02 0.03044670E-02-0.01811052E-05 0.08281245E-09-0.01435891E-12    2
+-0.01334049E+06-0.03217693E+03 0.08239171E+02-0.05281579E-03 0.03829305E-05    3
+-0.03800801E-08 0.01401136E-11-0.01336670E+06-0.03268830E+03                   4
+NAF                80792F   1NA  1          G  0200.00   5000.00  1000.00      1
+ 0.04289078E+02 0.03377828E-02-0.01184403E-05 0.02398348E-09-0.01772778E-13    2
+-0.03626513E+06 0.01538309E+02 0.03532346E+02 0.02495132E-01-0.01587195E-04    3
+-0.04836335E-08 0.05739804E-11-0.03608573E+06 0.05367920E+02                   4
+NAF2-              81092F   2NA  1E   1     G  0200.00   5000.00  1000.00      1
+ 0.07032279E+02 0.05655084E-02-0.02615340E-05 0.05285863E-09-0.03900402E-13    2
+-0.08272088E+06-0.01028459E+03 0.05382830E+02 0.05231638E-01-0.03350411E-04    3
+-0.01169983E-07 0.01291137E-10-0.08232816E+06-0.01928436E+02                   4
+NAF4AL             81092AL  1F   4NA  1     G  0200.00   5000.00  1000.00      1
+ 0.01407161E+03 0.02285303E-01-0.01043457E-04 0.02090484E-08-0.01532874E-12    2
+-0.02260449E+07-0.04013149E+03 0.08103421E+02 0.01881143E+00-0.01205279E-03    3
+-0.03477927E-07 0.04123038E-10-0.02245760E+07-0.09731781E+02                   4
+NAH                80792H   1NA  1          G  0200.00   5000.00  1000.00      1
+ 0.03818649E+02 0.08597439E-02-0.03202059E-05 0.06146711E-09-0.04364567E-13    2
+ 0.01368120E+06 0.04367959E+01 0.02864363E+02 0.03308582E-01-0.02753919E-04    3
+ 0.01399522E-07-0.04032581E-11 0.01396756E+06 0.05450493E+02                   4
+NAI(S)             81292I   1NA  1          S  0200.00   2000.00  1000.00      1
+ 0.05987605E+02 0.01342139E-01-0.03807255E-06 0.01660138E-09-0.06066889E-13    2
+-0.03648630E+06-0.02270427E+03 0.05407032E+02 0.04235908E-01-0.05679955E-04    3
+ 0.04941357E-07-0.01602135E-10-0.03638396E+06-0.02000921E+03                   4
+NAO                80792NA  1O   1          G  0200.00   5000.00  1000.00      1
+ 0.04349803E+02 0.02849959E-02-0.08615992E-06 0.01754054E-09-0.01301677E-13    2
+ 0.08731694E+05 0.02618339E+02 0.03765728E+02 0.01980031E-01-0.01256303E-04    3
+-0.03909831E-08 0.04664039E-11 0.08866889E+05 0.05562273E+02                   4
+NAO-               80792NA  1O   1E   1     G  0200.00   5000.00  1000.00      1
+ 0.04343846E+02 0.02955424E-02-0.08923111E-06 0.01813572E-09-0.01343290E-13    2
+-0.01592823E+06 0.01245911E+02 0.03740064E+02 0.02044313E-01-0.01291719E-04    3
+-0.04080754E-08 0.04823669E-11-0.01578820E+06 0.04290303E+02                   4
+NAO2(S)            81092NA  1O   2          S  0200.00   2000.00  1000.00      1
+ 0.07379480E+02 0.04377048E-01 0.06355202E-05-0.03238946E-08 0.06014399E-12    2
+-0.03376432E+06-0.02946090E+03 0.07236605E+02 0.04751740E-01 0.03458707E-05    3
+-0.02971627E-08 0.09124652E-12-0.03372514E+06-0.02872050E+03                   4
+NAO2AL(S)          81292AL  1NA  1O   2     S  0200.00   3000.00  1000.00      1
+ 0.09963634E+02 0.02329677E-01-0.08188510E-07 0.02070425E-09-0.02306699E-12    2
+-0.01394255E+07-0.04932653E+03 0.03669741E+02 0.02226343E+00-0.01558734E-03    3
+-0.03446683E-07 0.05383614E-10-0.01381199E+07-0.01818990E+03                   4
+NAOH               80792H   1NA  1O   1     G  0200.00   5000.00  1000.00      1
+ 0.05527852E+02 0.01420623E-01-0.04439615E-05 0.06635639E-09-0.03866820E-13    2
+-0.02545869E+06-0.04374785E+02 0.04727895E+02 0.05001262E-01-0.04534391E-04    3
+ 0.07051240E-08 0.06671123E-11-0.02537947E+06-0.07649678E+01                   4
+NAOH(L)            81092H   1NA  1O   1     L  0200.00   2500.00  1000.00      1
+ 0.01061400E+03-0.03116447E-02-0.02964198E-05 0.05475463E-09 0.01021178E-12    2
+-0.05327943E+06-0.05120959E+03 0.01079389E+03-0.08545728E-02 0.03780039E-05    3
+-0.03848777E-08 0.01384542E-11-0.05332840E+06-0.05213201E+03                   4
+NAOH+              80792H   1NA  1O   1E  -1G  0200.00   5000.00  1000.00      1
+ 0.05570452E+02 0.01387979E-01-0.04311444E-05 0.06372652E-09-0.03648954E-13    2
+ 0.07985595E+06-0.02878876E+02 0.04974624E+02 0.04424591E-01-0.04296418E-04    3
+ 0.01067747E-07 0.04168198E-11 0.07988680E+06-0.03068088E+01                   4
+NCN               103190C   1N   2          G  0200.00   4000.00  1500.00      1
+ 0.06652121E+02 0.06108034E-02-0.01389727E-05 0.02695549E-10 0.01669944E-13    2
+ 0.05172403E+06-0.01138517E+03 0.03101270E+02 0.09981674E-01-0.09920701E-04    3
+ 0.04758919E-07-0.08968626E-11 0.05285757E+06 0.07317579E+02                   4
+NCO               110193C   1N   1O   1     G  0200.00   4000.00  1400.00      1
+ 0.06072346E+02 0.09227829E-02-0.09845574E-06-0.04764123E-09 0.09090445E-13    2
+ 0.01359820E+06-0.08507293E+02 0.03359593E+02 0.05393239E-01-0.08144585E-05    3
+-0.01912868E-07 0.07836794E-11 0.01462809E+06 0.06549694E+02                   4
+NF                121286N   1F   1          G  0200.00   5000.00  1000.00      1
+ 0.03862177E+02 0.07551806E-02-0.03044943E-05 0.05874447E-09-0.04187479E-13    2
+ 0.02867243E+06 0.03457233E+02 0.02871947E+02 0.03312193E-01-0.02691159E-04    3
+ 0.01121951E-07-0.02475131E-11 0.02896257E+06 0.08640247E+02                   4
+NFO               121286N   1F   1O   1     G  0200.00   5000.00  1000.00      1
+ 0.05174520E+02 0.01938472E-01-0.08222701E-05 0.01564291E-08-0.01104497E-12    2
+-0.09670935E+05-0.05352461E+01 0.03352307E+02 0.07229966E-01-0.06951137E-04    3
+ 0.03828526E-07-0.01023558E-10-0.09167035E+05 0.08854189E+02                   4
+NFO2              121286N   1F   1O   2     G  0200.00   5000.00  1000.00      1
+ 0.06816857E+02 0.03462640E-01-0.01492216E-04 0.02869665E-08-0.02041857E-12    2
+-0.01560262E+06-0.09320129E+02 0.02447529E+02 0.01544110E+00-0.01300595E-03    3
+ 0.04856383E-07-0.06852266E-11-0.01439400E+06 0.01328360E+03                   4
+NH                 31387H   1N   1          G  0200.00   5000.00  1000.00      1
+ 0.02760249E+02 0.01375346E-01-0.04451914E-05 0.07692792E-09-0.05017592E-13    2
+ 0.04207828E+06 0.05857199E+02 0.03339758E+02 0.01253009E-01-0.03491646E-04    3
+ 0.04218812E-07-0.01557618E-10 0.04185047E+06 0.02507181E+02                   4
+NH2               121686N   1H   2          G  0200.00   5000.00  1000.00      1
+ 0.02961311E+02 0.02932699E-01-0.09063600E-05 0.01617257E-08-0.01204200E-12    2
+ 0.02191977E+06 0.05777878E+02 0.03432493E+02 0.03299540E-01-0.06613600E-04    3
+ 0.08590947E-07-0.03572047E-10 0.02177228E+06 0.03090111E+02                   4
+NH3               121386N   1H   3          G  0200.00   5000.00  1000.00      1
+ 0.02461904E+02 0.06059166E-01-0.02004977E-04 0.03136003E-08-0.01938317E-12    2
+-0.06493270E+05 0.07472097E+02 0.02204352E+02 0.01011476E+00-0.01465265E-03    3
+ 0.01447235E-06-0.05328509E-10-0.06525488E+05 0.08127138E+02                   4
+NNH               120186N   2H   1          G  0250.00   4000.00  1000.00      1
+ 0.04415342E+02 0.01614388E-01-0.01632894E-05-0.08559846E-09 0.01614791E-12    2
+ 0.02788029E+06 0.09042888E+01 0.03501344E+02 0.02053587E-01 0.07170410E-05    3
+ 0.04921348E-08-0.09671170E-11 0.02833347E+06 0.06391837E+02                   4
+NO                121286N   1O   1          G  0200.00   5000.00  1000.00      1
+ 0.03245435E+02 0.01269138E-01-0.05015890E-05 0.09169283E-09-0.06275419E-13    2
+ 0.09800840E+05 0.06417294E+02 0.03376542E+02 0.01253063E-01-0.03302751E-04    3
+ 0.05217810E-07-0.02446263E-10 0.09817961E+05 0.05829590E+02                   4
+NO+               121286N   1O   1E  -1     G  0200.00   5000.00  1000.00      1
+ 0.02914889E+02 0.01499335E-01-0.05727972E-05 0.01017777E-08-0.06825390E-13    2
+ 0.01181869E+07 0.06844346E+02 0.03297349E+02 0.01422890E-01-0.04007441E-04    3
+ 0.05670551E-07-0.02446972E-10 0.01180834E+07 0.04749948E+02                   4
+NO2               121286N   1O   2          G  0200.00   5000.00  1000.00      1
+ 0.04682859E+02 0.02462429E-01-0.01042259E-04 0.01976902E-08-0.01391717E-12    2
+ 0.02261292E+05 0.09885985E+01 0.02670600E+02 0.07838501E-01-0.08063865E-04    3
+ 0.06161715E-07-0.02320150E-10 0.02896291E+05 0.01161207E+03                   4
+NO2-              121286N   1O   2E   1     G  0200.00   5000.00  1000.00      1
+ 0.05043114E+02 0.02166428E-01-0.09455454E-05 0.01816314E-08-0.01238394E-12    2
+-0.02621554E+06-0.01445905E+02 0.02448586E+02 0.08982507E-01-0.07853431E-04    3
+ 0.03927277E-07-0.01071694E-10-0.02545097E+06 0.01213060E+03                   4
+NO3               121286N   1O   3          G  0200.00   5000.00  1000.00      1
+ 0.07120307E+02 0.03246228E-01-0.01431613E-04 0.02797053E-08-0.02013008E-12    2
+ 0.05864479E+05-0.01213730E+03 0.01221076E+02 0.01878797E+00-0.01344321E-03    3
+ 0.01274601E-07 0.01354060E-10 0.07473144E+05 0.01840203E+03                   4
+O                 120186O   1               G  0200.00   5000.00  1000.00      1
+ 0.02542060E+02-0.02755062E-03-0.03102803E-07 0.04551067E-10-0.04368052E-14    2
+ 0.02923080E+06 0.04920308E+02 0.02946429E+02-0.01638166E-01 0.02421032E-04    3
+-0.01602843E-07 0.03890696E-11 0.02914764E+06 0.02963995E+02                   4
+O+                121286O   1E  -1          G  0200.00   5000.00  1000.00      1
+ 0.02501869E+02-0.06107262E-04 0.07324307E-07-0.03438353E-10 0.05506408E-14    2
+ 0.01879553E+07 0.04372827E+02 0.02499273E+02 0.05820598E-04-0.01120922E-06    3
+ 0.08232109E-10-0.01916378E-13 0.01879557E+07 0.04384826E+02                   4
+O-                 90589O   1E   1          G  0200.00   5000.00  1000.00      1
+ 0.02559581E+02-0.07147888E-03 0.03301804E-06-0.06660944E-10 0.04900727E-14    2
+ 0.01148935E+06 0.04426187E+02 0.02747263E+02-0.05724860E-02 0.02712548E-05    3
+ 0.02691512E-08-0.02002357E-11 0.01144395E+06 0.03469852E+02                   4
+O2                121386O   2               G  0200.00   5000.00  1000.00      1
+ 0.03697578E+02 0.06135197E-02-0.01258842E-05 0.01775281E-09-0.01136435E-13    2
+-0.01233930E+05 0.03189166E+02 0.03212936E+02 0.01127486E-01-0.05756150E-05    3
+ 0.01313877E-07-0.08768554E-11-0.01005249E+05 0.06034738E+02                   4
+O2-               121286O   2E   1          G  0200.00   5000.00  1000.00      1
+ 0.03883013E+02 0.07407872E-02-0.02961776E-05 0.05724305E-09-0.04086548E-13    2
+-0.07121644E+05 0.02658212E+02 0.02872292E+02 0.03359716E-01-0.02664886E-04    3
+ 0.09807524E-08-0.01670957E-11-0.06829094E+05 0.07938373E+02                   4
+O3                121286O   3               G  0200.00   5000.00  1000.00      1
+ 0.05429371E+02 0.01820380E-01-0.07705607E-05 0.01499293E-08-0.01075563E-12    2
+ 0.01523527E+06-0.03266387E+02 0.02462609E+02 0.09582781E-01-0.07087359E-04    3
+ 0.01363368E-07 0.02969647E-11 0.01606152E+06 0.01214187E+03                   4
+OC(OH)2           103190C   1H   2O   3     G  0200.00   4000.00  1500.00      1
+ 0.01143196E+03 0.02555103E-01-0.04326538E-05-0.05781341E-09 0.01545461E-12    2
+-0.07904865E+06-0.03657201E+03 0.03540332E+01 0.03042528E+00-0.02939616E-03    3
+ 0.01452934E-06-0.02906245E-10-0.07522630E+06 0.02250923E+03                   4
+OCHCHO            103190C   2H   2O   2     G  0200.00   4000.00  1500.00      1
+ 0.01056843E+03 0.02907353E-01-0.03452401E-05-0.01037593E-08 0.02042135E-12    2
+-0.02952623E+06-0.03104084E+03 0.01863564E+02 0.02298297E+00-0.01917997E-03    3
+ 0.08558604E-07-0.01612346E-10-0.02634847E+06 0.01601674E+03                   4
+OCHNNHO           103190C   1H   2N   2O   2G  0200.00   4000.00  1500.00      1
+ 0.01241397E+03 0.04091551E-01-0.04547841E-05-0.01752324E-08 0.03271472E-12    2
+-0.06754774E+05-0.04078722E+03 0.01405275E+02 0.02776281E+00-0.02088466E-03    3
+ 0.08550259E-07-0.01543486E-10-0.02537631E+05 0.01937723E+03                   4
+OH                121286O   1H   1          G  0200.00   5000.00  1000.00      1
+ 0.02882730E+02 0.01013974E-01-0.02276877E-05 0.02174684E-09-0.05126305E-14    2
+ 0.03886888E+05 0.05595712E+02 0.03637266E+02 0.01850910E-02-0.01676165E-04    3
+ 0.02387203E-07-0.08431442E-11 0.03606782E+05 0.01358860E+02                   4
+OH+               121286O   1H   1E  -1     G  0200.00   5000.00  1000.00      1
+ 0.02719059E+02 0.01508571E-01-0.05029369E-05 0.08261952E-09-0.04947453E-13    2
+ 0.01576341E+07 0.06234536E+02 0.03326979E+02 0.01345786E-01-0.03777168E-04    3
+ 0.04687750E-07-0.01780982E-10 0.01574029E+07 0.02744042E+02                   4
+OH-               121286O   1H   1E   1     G  0200.00   5000.00  1000.00      1
+ 0.02846205E+02 0.01041835E-01-0.02416851E-05 0.02483215E-09-0.07775605E-14    2
+-0.01807280E+06 0.04422712E+02 0.03390038E+02 0.07922381E-02-0.01943430E-04    3
+ 0.02001770E-07-0.05702087E-11-0.01830494E+06 0.01249892E+02                   4
+ONHNHO            103190H   2N   2O   2     G  0200.00   4000.00  1500.00      1
+ 0.01005510E+03 0.03525461E-01-0.03868362E-05-0.01298654E-08 0.02398500E-12    2
+ 0.07381692E+05-0.02950581E+03 0.07815142E+01 0.02605711E+00-0.02264714E-03    3
+ 0.01049925E-06-0.02012847E-10 0.01062778E+06 0.02017946E+03                   4
+ONHNOH            103190H   2N   2O   2     G  0200.00   4000.00  1500.00      1
+ 0.01120874E+03 0.02650303E-01-0.03760644E-05-0.06355768E-09 0.01466251E-12    2
+-0.05721250E+05-0.03476475E+03 0.01053271E+02 0.02809676E+00-0.02637380E-03    3
+ 0.01270757E-06-0.02478550E-10-0.02244769E+05 0.01937011E+03                   4
+S                 121286S   1               G  0200.00   5000.00  1000.00      1
+ 0.02902148E+02-0.05484546E-02 0.02764576E-05-0.05017115E-09 0.03150685E-13    2
+ 0.03249423E+06 0.03838471E+02 0.03187329E+02-0.01595776E-01 0.02005531E-04    3
+-0.01507081E-07 0.04931282E-11 0.03242259E+06 0.02414441E+02                   4
+S(L)              120186S   1               L  0388.36   2000.00  1000.00      1
+ 0.03603667E+02 0.09903341E-02-0.01011441E-04 0.04053633E-08-0.05667914E-12    2
+-0.08453839E+04-0.01634471E+03-0.01270631E+03 0.09072521E+00-0.01695179E-02    3
+ 0.01307064E-05-0.03527615E-09 0.01234607E+05 0.05621016E+03                   4
+S(S)              120186S   1               S  0200.00   0388.36  0388.36      1
+ 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00    2
+ 0.00000000E+00 0.00000000E+00-0.05063703E+02 0.02881935E-01-0.02133020E-03    3
+ 0.08478786E-05-0.01734497E-07 0.07148263E+04 0.02871407E+03                   4
+S+                121286S   1E  -1          G  0200.00   5000.00  1000.00      1
+ 0.02404600E+02 0.02410909E-02-0.02041780E-05 0.06592945E-09-0.05756939E-13    2
+ 0.01535223E+07 0.05924256E+02 0.02366101E+02 0.09130767E-02-0.02140284E-04    3
+ 0.02076178E-07-0.07133859E-11 0.01535091E+07 0.05993094E+02                   4
+S-TRIAZINE         41687C   3N   3H   3     G  0200.00   4000.00  1000.00      1
+ 0.01303617E+03 0.07711820E-01-0.07724374E-05-0.04385191E-08 0.08298992E-12    2
+ 0.02251663E+06-0.04777676E+03 0.04493492E+01 0.02728306E+00 0.02309305E-04    3
+-0.01496844E-06 0.04546753E-10 0.02703032E+06 0.02178518E+03                   4
+S2                121386S   2               G  0200.00   5000.00  1000.00      1
+ 0.03904443E+02 0.06925733E-02-0.01233097E-05 0.08783809E-11 0.01374662E-13    2
+ 0.01425693E+06 0.04956834E+02 0.03157673E+02 0.03099480E-01-0.01560746E-04    3
+-0.01357891E-07 0.01137444E-10 0.01439187E+06 0.08596062E+02                   4
+SH                121286S   1H   1          G  0200.00   5000.00  1000.00      1
+ 0.03053810E+02 0.01258884E-01-0.04249169E-05 0.06929591E-09-0.04281691E-13    2
+ 0.01588225E+06 0.05973551E+02 0.04133327E+02-0.03787893E-02-0.02777854E-04    3
+ 0.05370112E-07-0.02394006E-10 0.01555862E+06 0.01611535E+01                   4
+SI                 32989SI  1               G  0200.00   4000.00  1000.00      1
+ 0.02775846E+02-0.06213257E-02 0.04843696E-05-0.01275615E-08 0.01134482E-12    2
+ 0.05339791E+06 0.04543298E+02 0.03113515E+02-0.02330991E-01 0.03518531E-04    3
+-0.02417573E-07 0.06391902E-11 0.05335062E+06 0.03009719E+02                   4
+SI(CH3)2           61991H   6C   2SI  1     G  0200.00   2500.00  1500.00      1
+ 0.01092572E+03 0.07986807E-01-0.09096208E-06-0.01014552E-07 0.02037989E-11    2
+ 0.01132561E+06-0.02834187E+03 0.02308663E+02 0.02773810E+00-0.01799333E-03    3
+ 0.06733023E-07-0.01154743E-10 0.01442892E+06 0.01819319E+03                   4
+SI(CH3)3           61991H   9C   3SI  1     G  0200.00   2500.00  1500.00      1
+ 0.01536389E+03 0.01242119E+00-0.01189769E-05-0.01630302E-07 0.03308576E-11    2
+-0.05218398E+05-0.05088962E+03 0.03907073E+02 0.03734813E+00-0.02072025E-03    3
+ 0.06180575E-07-0.08429605E-11-0.01002462E+05 0.01138100E+03                   4
+SI(CH3)3CH2        61991H  11C   4SI  1     G  0200.00   2500.00  1500.00      1
+ 0.02061565E+03 0.01408136E+00-0.01497876E-05-0.01748111E-07 0.03468780E-11    2
+-0.01240235E+06-0.07596671E+03 0.05258771E+02 0.04995369E+00-0.03393958E-03    3
+ 0.01367592E-06-0.02513506E-10-0.06886708E+05 0.06814728E+02                   4
+SI(CH3)4           61991H  12C   4SI  1     G  0200.00   2500.00  1500.00      1
+ 0.02023461E+03 0.01648004E+00-0.01486572E-05-0.02161245E-07 0.04377236E-11    2
+-0.03702410E+06-0.07661021E+03 0.05009315E+02 0.04952953E+00-0.02745875E-03    3
+ 0.08231031E-07-0.01137614E-10-0.03140314E+06 0.06187860E+02                   4
+SI(L)              90589SI  1               L  0200.00   4500.00  1000.00      1
+ 0.03271263E+02 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00    2
+ 0.04855058E+05-0.01329054E+03 0.03271263E+02 0.00000000E+00 0.00000000E+00    3
+ 0.00000000E+00 0.00000000E+00 0.04855059E+05-0.01329054E+03                   4
+SI(NH2)3           42489SI  1N   3H   6     G  0200.00   3000.00  1000.00      1
+ 0.01406550E+03 0.07581744E-01-0.05168510E-05-0.06743626E-08 0.01397926E-11    2
+-0.01414403E+06-0.04063874E+03 0.07598413E+02 0.02435266E+00-0.04296202E-04    3
+-0.01756007E-06 0.01050102E-09-0.01265343E+06-0.07808647E+02                   4
+SI(NH2)4           22790SI  1N   4H   8     G  0200.00   4000.00  1000.00      1
+ 0.02032107E+03 0.08289798E-01-0.07077612E-05-0.04340724E-08 0.07747068E-12    2
+-0.05389855E+06-0.07730464E+03 0.08454529E+02 0.03465772E+00-0.04266782E-04    3
+-0.02495363E-06 0.01365466E-09-0.05061518E+06-0.01514301E+03                   4
+SI(S)              90589SI  1               S  0200.00   2500.00  1000.00      1
+ 0.02530275E+02 0.08522433E-02-0.03223469E-05 0.01280821E-08-0.01850849E-12    2
+-0.08395197E+04-0.01251478E+03 0.05746418E+01 0.01026485E+00-0.01775346E-03    3
+ 0.01457500E-06-0.04491292E-10-0.04969951E+04-0.03400243E+02                   4
+SI2               111191SI  2               G  0200.00   4000.00  1500.00      1
+ 0.04402888E+02 0.01154530E-02-0.06005177E-06 0.01469072E-09-0.01357408E-13    2
+ 0.07199220E+06 0.02340066E+02 0.03439839E+02 0.03440171E-01-0.04437681E-04    3
+ 0.02559961E-07-0.05474618E-11 0.07222934E+06 0.07148545E+02                   4
+SI2C              112989C   1SI  2          G  0200.00   5000.00  1000.00      1
+ 0.06334110E+02 0.01210252E-01-0.06798289E-05 0.02244433E-08-0.02280178E-12    2
+ 0.06227189E+06-0.07770097E+02 0.04157246E+02 0.07031825E-01-0.07263033E-04    3
+ 0.04633583E-07-0.01493448E-10 0.06292421E+06 0.03635126E+02                   4
+SI2CL5             40992SI  2CL  5          G  0200.00   4000.00  1500.00      1
+ 0.01800427E+03 0.05920529E-02-0.03159743E-05 0.07962538E-09-0.07553642E-13    2
+-0.08208587E+06-0.04815622E+03 0.01218195E+03 0.02086930E+00-0.02723261E-03    3
+ 0.01583266E-06-0.03404617E-10-0.08066122E+06-0.01913372E+03                   4
+SI2CL5H            40992H   1SI  2CL  5     G  0200.00   4000.00  1500.00      1
+ 0.01977366E+03 0.01346980E-01-0.04241463E-05 0.05994784E-09-0.03079337E-13    2
+-0.01018307E+07-0.05982624E+03 0.01104810E+03 0.02909474E+00-0.03536307E-03    3
+ 0.01998957E-06-0.04259074E-10-0.09941194E+06-0.01536396E+03                   4
+SI2CL6             40992SI  2CL  6          G  0200.00   4000.00  1500.00      1
+ 0.02095456E+03 0.06904584E-02-0.03881968E-05 0.01014163E-08-0.09844696E-13    2
+-0.01238540E+07-0.06426893E+03 0.01372380E+03 0.02622361E+00-0.03460508E-03    3
+ 0.02024950E-06-0.04371480E-10-0.01221143E+07-0.02834094E+03                   4
+SI2F6              42489SI  2F   6          G  0200.00   3000.00  1000.00      1
+ 0.01830048E+03 0.02868753E-01-0.04545577E-05-0.02497900E-08 0.06630658E-12    2
+-0.02928185E+07-0.05760425E+03 0.09998134E+02 0.02170314E+00-0.03875092E-04    3
+-0.01670252E-06 0.09407529E-10-0.02905483E+07-0.01422886E+03                   4
+SI2H2             111191H   2SI  2          G  0200.00   4000.00  1500.00      1
+ 0.08099063E+02 0.01294220E-01-0.02447198E-05-0.01449512E-09 0.05867240E-13    2
+ 0.04476428E+06-0.01877323E+03 0.09668390E+01 0.01932959E+00-0.01825422E-03    3
+ 0.08404012E-07-0.01537228E-10 0.04712241E+06 0.01907609E+03                   4
+SI2H3              90589SI  2H   3          G  0200.00   2000.00  1000.00      1
+ 0.07257627E+02 0.05123860E-01-0.07633465E-05-0.06662471E-08 0.02053053E-11    2
+ 0.05062055E+06-0.01031413E+03 0.03335404E+02 0.02155615E+00-0.02933937E-03    3
+ 0.02287785E-06-0.07272827E-10 0.05146157E+06 0.08656853E+02                   4
+SI2H5              90589SI  2H   5          G  0200.00   2000.00  1000.00      1
+ 0.08451010E+02 0.09286371E-01-0.01091183E-04-0.01442367E-07 0.04250825E-11    2
+ 0.02472719E+06-0.01710331E+03 0.01578848E+02 0.03549383E+00-0.04267511E-03    3
+ 0.03059177E-06-0.09360425E-10 0.02630550E+06 0.01672073E+03                   4
+SI2H6              90589SI  2H   6          G  0200.00   2000.00  1000.00      1
+ 0.08882090E+02 0.01151395E+00-0.01216216E-04-0.01905086E-07 0.05542379E-11    2
+ 0.05967242E+05-0.02265611E+03 0.05301921E+01 0.04184056E+00-0.04685249E-03    3
+ 0.03179525E-06-0.09484526E-10 0.07950598E+05 0.01880453E+03                   4
+SI3                32989SI  3               G  0200.00   4000.00  1000.00      1
+ 0.07021585E+02 0.06981538E-02-0.04818729E-05 0.01720754E-08-0.01927025E-12    2
+ 0.07429956E+06-0.08179233E+02 0.05312161E+02 0.05920181E-01-0.05075225E-04    3
+ 0.05303866E-08 0.07031630E-11 0.07469502E+06 0.04036452E+01                   4
+SI3H8              90589SI  3H   8          G  0200.00   2000.00  1000.00      1
+ 0.01342277E+03 0.01563632E+00-0.01936565E-04-0.02388330E-07 0.07120030E-11    2
+ 0.09165887E+05-0.04163000E+03 0.06319791E+01 0.06412995E+00-0.07772444E-03    3
+ 0.05486969E-06-0.01646097E-09 0.01209258E+06 0.02133318E+03                   4
+SI3N4(A)           42589N   4SI  3          S  0200.00   3000.00  1000.00      1
+ 0.09667453E+02 0.01192721E+00-0.01709282E-04-0.01084607E-07 0.02713018E-11    2
+-0.09324734E+06-0.04556492E+03 0.06631384E+02 0.02293929E+00-0.02152876E-03    3
+ 0.01766237E-06-0.06632215E-10-0.09241684E+06-0.03021795E+03                   4
+SIC               112989C   1SI  1          G  0200.00   5000.00  1000.00      1
+ 0.05024270E+02-0.04920894E-02 0.03109315E-05-0.06901344E-09 0.05215735E-13    2
+ 0.08531026E+06-0.02478798E+02 0.02427812E+02 0.09551934E-01-0.02796633E-04    3
+-0.01360012E-06 0.09196323E-10 0.08546512E+06 0.09179253E+02                   4
+SIC(B)            112989C   1SI  1          S  0200.00   4000.00  1000.00      1
+ 0.03548057E+02 0.03636817E-01-0.01734873E-04 0.03912869E-08-0.03337953E-12    2
+-0.01018858E+06-0.01967253E+03-0.03551396E+01 0.01599881E+00-0.01393327E-03    3
+ 0.03314914E-07 0.07825957E-11-0.09294352E+05-0.01515388E+01                   4
+SIC2              112989C   2SI  1          G  0200.00   5000.00  1000.00      1
+ 0.05753726E+02 0.02067546E-01-0.01132535E-04 0.03106456E-08-0.02799937E-12    2
+ 0.07200461E+06-0.05294927E+02 0.03647725E+02 0.08765100E-01-0.01079869E-03    3
+ 0.07974287E-07-0.02617042E-10 0.07258578E+06 0.05481050E+02                   4
+SICCH              61991H   1C   2SI  1     G  0200.00   2500.00  1500.00      1
+ 0.08229114E+02 0.01220783E-01-0.01179375E-05-0.03293923E-09 0.02957217E-13    2
+ 0.06029046E+06-0.01793033E+03 0.03946147E+02 0.01353938E+00-0.01476061E-03    3
+ 0.08141935E-07-0.01743041E-10 0.06163490E+06 0.04400106E+02                   4
+SICH               61991H   1C   1SI  1     G  0200.00   2500.00  1500.00      1
+ 0.06212049E+02 0.05590981E-02-0.07015929E-06 0.03497540E-09-0.01203199E-12    2
+ 0.06044180E+06-0.08520574E+02 0.03822068E+02 0.07938745E-01-0.09707239E-04    3
+ 0.05877454E-07-0.01338338E-10 0.06118631E+06 0.03835953E+02                   4
+SICH2              61991H   2C   1SI  1     G  0200.00   2500.00  1500.00      1
+ 0.06246250E+02 0.02147775E-01-0.06406396E-06-0.02067218E-08 0.03841890E-12    2
+ 0.03490992E+06-0.08995611E+02 0.02794283E+02 0.01138805E+00-0.01041700E-03    3
+ 0.05368052E-07-0.01132779E-10 0.03606279E+06 0.09246714E+02                   4
+SICH3              61991H   3C   1SI  1     G  0200.00   2500.00  1500.00      1
+ 0.06681751E+02 0.03837387E-01-0.06162348E-06-0.04678285E-08 0.09346313E-12    2
+ 0.03472013E+06-0.01022379E+03 0.02444652E+02 0.01367883E+00-0.09266249E-04    3
+ 0.03704818E-07-0.06763833E-11 0.03624755E+06 0.01263619E+03                   4
+SICL              121986SI  1CL  1          G  0200.00   2000.00  1000.00      1
+ 0.04258460E+02 0.04020317E-02-0.02888145E-05 0.01009777E-08-0.01411012E-12    2
+ 0.01775614E+06 0.04134521E+02 0.03096406E+02 0.05738623E-01-0.09740903E-04    3
+ 0.07643597E-07-0.02279179E-10 0.01796795E+06 0.09603212E+02                   4
+SICL2             121986SI  1CL  2          G  0200.00   2000.00  1000.00      1
+ 0.06491205E+02 0.08242384E-02-0.05767737E-05 0.01972405E-08-0.02713757E-12    2
+-0.02232408E+06-0.03570531E+02 0.03826666E+02 0.01308296E+00-0.02234087E-03    3
+ 0.01760742E-06-0.05267404E-10-0.02183869E+06 0.08965448E+02                   4
+SICL2H2           121986SI  1H   2CL  2     G  0200.00   2000.00  1000.00      1
+ 0.07727079E+02 0.05034189E-01-0.01095746E-04-0.04419587E-08 0.01631124E-11    2
+-0.04028605E+06-0.01170816E+03 0.01100209E+02 0.03262362E+00-0.04691995E-03    3
+ 0.03494565E-06-0.01036285E-09-0.03892087E+06 0.02022693E+03                   4
+SICL3             121986SI  1CL  3          G  0200.00   2000.00  1000.00      1
+ 0.09098097E+02 0.01405353E-01-0.09317005E-05 0.02982296E-08-0.03822011E-12    2
+-0.04140193E+06-0.01455012E+03 0.04485691E+02 0.02241754E+00-0.03794196E-03    3
+ 0.02973183E-06-0.08861335E-10-0.04055264E+06 0.07198771E+02                   4
+SICL3CH2CH         10891C   2CL  3H   5SI  1G  0200.00   4000.00  1500.00      1
+ 0.02087242E+03 0.05492755E-01-0.06829558E-05-0.01876697E-08 0.03787112E-12    2
+-0.07972510E+06-0.07741949E+03 0.04624781E+02 0.04378379E+00-0.03850522E-03    3
+ 0.01844376E-06-0.03709272E-10-0.07377043E+06 0.01029869E+03                   4
+SICL3H            121986SI  1H   1CL  3     G  0200.00   2000.00  1000.00      1
+ 0.09663121E+02 0.03563368E-01-0.01214911E-04-0.01609009E-09 0.05641710E-12    2
+-0.06295557E+06-0.01894777E+03 0.02883770E+02 0.03308241E+00-0.05169241E-03    3
+ 0.03949918E-06-0.01172104E-09-0.06163323E+06 0.01337466E+03                   4
+SICL4             121986SI  1CL  4          G  0200.00   2000.00  1000.00      1
+ 0.01170938E+03 0.01972092E-01-0.01269077E-04 0.03900188E-08-0.04756468E-12    2
+-0.08347808E+06-0.02791153E+03 0.05252110E+02 0.03122067E+00-0.05254593E-03    3
+ 0.04102707E-06-0.01219907E-09-0.08228177E+06 0.02575727E+02                   4
+SICLH3            121986SI  1H   3CL  1     G  0200.00   2000.00  1000.00      1
+ 0.05964238E+02 0.06278087E-01-0.08205635E-05-0.09280558E-08 0.02796643E-11    2
+-0.01854309E+06-0.06395305E+02 0.05057173E+01 0.02703378E+00-0.03301474E-03    3
+ 0.02302732E-06-0.06778703E-10-0.01730819E+06 0.02043167E+03                   4
+SIF                42489SI  1F   1          G  0200.00   3000.00  1000.00      1
+ 0.04120067E+02 0.03548821E-02-0.07200222E-06-0.02190434E-09 0.06764591E-13    2
+-0.07561378E+05 0.02784246E+02 0.03144948E+02 0.02588557E-01-0.05795912E-05    3
+-0.01807279E-07 0.01041172E-10-0.07294439E+05 0.07876774E+02                   4
+SIF(NH2)2          22790SI  1F   1N   2H   4G  0200.00   4000.00  1000.00      1
+ 0.01287944E+03 0.04598535E-01-0.04004441E-05-0.02374189E-08 0.04255211E-12    2
+-0.05238279E+06-0.03653418E+03 0.07210094E+02 0.01764698E+00-0.02542060E-04    3
+-0.01242214E-06 0.06989787E-10-0.05086706E+06-0.07024622E+02                   4
+SIF(NH2)3          42489SI  1N   3H   6F   1G  0200.00   3000.00  1000.00      1
+ 0.01611180E+03 0.08329222E-01-0.06023787E-05-0.07470125E-08 0.01570731E-11    2
+-0.09137007E+06-0.05098123E+03 0.08388268E+02 0.02746622E+00-0.04455675E-04    3
+-0.01955733E-06 0.01140721E-09-0.08947806E+06-0.01138178E+03                   4
+SIF2               42489SI  1F   2          G  0200.00   3000.00  1000.00      1
+ 0.06142470E+02 0.07807974E-02-0.01339312E-05-0.06264839E-09 0.01725138E-12    2
+-0.07744042E+06-0.04712327E+02 0.03845345E+02 0.06038465E-01-0.01167732E-04    3
+-0.04579554E-07 0.02607414E-10-0.07681634E+06 0.07272984E+02                   4
+SIF2(NH2)2         42489SI  1N   2H   4F   2G  0200.00   3000.00  1000.00      1
+ 0.01441477E+03 0.06110646E-01-0.04871145E-05-0.05455935E-08 0.01172714E-11    2
+-0.01292757E+07-0.04308682E+03 0.07634268E+02 0.02315843E+00-0.04193827E-04    3
+-0.01715351E-06 0.01016462E-09-0.01276410E+07-0.08419031E+02                   4
+SIF2N              42489SI  1N   1F   2     G  0200.00   3000.00  1000.00      1
+ 0.08687337E+02 0.01193488E-01-0.01992661E-05-0.09951334E-09 0.02704383E-12    2
+-0.03463832E+06-0.01494053E+03 0.05102583E+02 0.09456606E-01-0.01819383E-04    3
+-0.07309616E-07 0.04178902E-10-0.03367294E+06 0.03734424E+02                   4
+SIF2NH2            42489SI  1N   1F   2H   2G  0200.00   3000.00  1000.00      1
+ 0.09872415E+02 0.03722112E-01-0.03271338E-05-0.03321674E-08 0.07293692E-12    2
+-0.08751628E+06-0.01899096E+03 0.05890444E+02 0.01285128E+00-0.01863556E-04    3
+-0.08718963E-07 0.04848951E-10-0.08644527E+06 0.01756163E+02                   4
+SIF3               42489SI  1F   3          G  0200.00   3000.00  1000.00      1
+ 0.08524790E+02 0.01323792E-01-0.02104279E-05-0.01149504E-08 0.03055301E-12    2
+-0.01223522E+07-0.01550234E+03 0.04662868E+02 0.01008788E+00-0.01805544E-04    3
+-0.07769299E-07 0.04377852E-10-0.01212965E+07 0.04672966E+02                   4
+SIF3NH             42489SI  1N   1F   3H   1G  0200.00   3000.00  1000.00      1
+ 0.01163766E+03 0.02880769E-01-0.03357310E-05-0.02584594E-08 0.06162371E-12    2
+-0.01295891E+07-0.02590718E+03 0.06013822E+02 0.01597729E+00-0.02791466E-04    3
+-0.01214120E-06 0.06927415E-10-0.01280974E+07 0.03316771E+02                   4
+SIF3NH2            42489SI  1N   1F   3H   2G  0200.00   3000.00  1000.00      1
+ 0.01210964E+03 0.04383282E-01-0.04142245E-05-0.03989090E-08 0.08958954E-12    2
+-0.01641768E+07-0.03046928E+03 0.06229403E+02 0.01778015E+00-0.02612304E-04    3
+-0.01267243E-06 0.07044556E-10-0.01625849E+07 0.02045441E+01                   4
+SIF3NHSIH3         42489SI  2N   1H   4F   3G  0200.00   3000.00  1000.00      1
+ 0.01669941E+03 0.07789785E-01-0.08110570E-05-0.07650199E-08 0.01773956E-11    2
+-0.01673412E+07-0.05080007E+03 0.06216046E+02 0.02939330E+00-0.02717745E-04    3
+-0.01982878E-06 0.01002768E-09-0.01642282E+07 0.04858261E+02                   4
+SIF3NSIH3          42489SI  2N   1H   3F   3G  0200.00   3000.00  1000.00      1
+ 0.01599146E+03 0.06371086E-01-0.07256824E-05-0.06292690E-08 0.01495157E-11    2
+-0.01331158E+07-0.04495265E+03 0.06404372E+02 0.02601982E+00-0.02491543E-04    3
+-0.01769542E-06 0.08919883E-10-0.01302520E+07 0.06002945E+02                   4
+SIF4               41389F   4SI  1          G  0200.00   2000.00  1000.00      1
+ 0.09985301E+02 0.03532637E-01-0.01197378E-04-0.01036549E-08 0.08661585E-12    2
+-0.01977200E+07-0.02472644E+03 0.02147416E+02 0.03402219E+00-0.04756874E-03    3
+ 0.03252196E-06-0.08819304E-10-0.01960449E+07 0.01346315E+03                   4
+SIFH3              42489SI  1F   1H   3     G  0200.00   3000.00  1000.00      1
+ 0.06799678E+02 0.04747086E-01-0.04767067E-05-0.04814665E-08 0.01107761E-11    2
+-0.04577024E+06-0.01261433E+03 0.02032190E+02 0.01341363E+00-0.02806381E-05    3
+-0.07803291E-07 0.03337474E-10-0.04421627E+06 0.01318768E+03                   4
+SIFNH              42489SI  1N   1F   1H   1G  0200.00   3000.00  1000.00      1
+ 0.07163299E+02 0.01521325E-01-0.01536337E-05-0.01195933E-08 0.02684100E-12    2
+-0.09065496E+05-0.06764144E+02 0.05390691E+02 0.06071319E-01-0.01359490E-04    3
+-0.04267435E-07 0.02603154E-10-0.08644237E+05 0.02272065E+02                   4
+SIFNH2             22790F   1SI  1N   1H   2G  0200.00   4000.00  1000.00      1
+ 0.08017582E+02 0.03209103E-01-0.03361364E-05-0.01796537E-08 0.03385552E-12    2
+-0.04313426E+06-0.01487024E+03 0.04214050E+02 0.01105423E+00-0.01014725E-04    3
+-0.07143728E-07 0.03634923E-10-0.04200629E+06 0.05318890E+02                   4
+SIH               121986SI  1H   1          G  0200.00   2000.00  1000.00      1
+ 0.03110430E+02 0.01094946E-01 0.02898629E-06-0.02745104E-08 0.07051799E-12    2
+ 0.04516898E+06 0.04193487E+02 0.03836010E+02-0.02702657E-01 0.06849070E-04    3
+-0.05424184E-07 0.01472131E-10 0.04507593E+06 0.09350778E+01                   4
+SIH2               42489SI  1H   2          G  0200.00   3000.00  1000.00      1
+ 0.04142390E+02 0.02150191E-01-0.02190730E-05-0.02073725E-08 0.04741018E-12    2
+ 0.03110484E+06 0.02930745E+01 0.03475092E+02 0.02139338E-01 0.07672306E-05    3
+ 0.05217668E-08-0.09898824E-11 0.03147397E+06 0.04436585E+02                   4
+SIH2CL            121986SI  1H   2CL  1     G  0200.00   2000.00  1000.00      1
+ 0.05555902E+02 0.04046479E-01-0.06581751E-05-0.05027548E-08 0.01599110E-11    2
+ 0.01912428E+05-0.01906890E+02 0.01699256E+02 0.01961407E+00-0.02622973E-03    3
+ 0.01936417E-06-0.05846399E-10 0.02743662E+05 0.01683133E+03                   4
+SIH2F              42489SI  1F   1H   2     G  0200.00   3000.00  1000.00      1
+ 0.06020399E+02 0.03074040E-01-0.03248887E-05-0.03052243E-08 0.07098090E-12    2
+-0.02347670E+06-0.05919595E+02 0.02782566E+02 0.09148257E-01-0.04186788E-05    3
+-0.05388971E-07 0.02412133E-10-0.02244201E+06 0.01152854E+03                   4
+SIH2F2             42489SI  1H   2F   2     G  0200.00   3000.00  1000.00      1
+ 0.07997762E+02 0.03911538E-01-0.04222679E-05-0.03913812E-08 0.09171569E-12    2
+-0.09682880E+06-0.01622400E+03 0.02701455E+02 0.01456545E+00-0.01163300E-04    3
+-0.09685830E-07 0.04769591E-10-0.09522440E+06 0.01200689E+03                   4
+SIH3               42489SI  1H   3          G  0200.00   3000.00  1000.00      1
+ 0.05015906E+02 0.03732750E-01-0.03609053E-05-0.03729193E-08 0.08468490E-12    2
+ 0.02190233E+06-0.04291368E+02 0.02946733E+02 0.06466764E-01 0.05991653E-05    3
+-0.02218413E-07 0.03052670E-11 0.02270173E+06 0.07347948E+02                   4
+SIH3NH2            42489SI  1N   1H   5     G  0200.00   3000.00  1000.00      1
+ 0.08109945E+02 0.07215753E-01-0.06052251E-05-0.07086088E-08 0.01557864E-11    2
+-0.08999782E+05-0.01651650E+03 0.02936348E+02 0.01674704E+00-0.03232859E-05    3
+-0.09171970E-07 0.03979516E-10-0.07334716E+05 0.01141437E+03                   4
+SIH3NHSIH3         42489SI  2N   1H   7     G  0200.00   3000.00  1000.00      1
+ 0.01265296E+03 0.01066748E+00-0.01007336E-04-0.01081222E-07 0.02452364E-11    2
+-0.01249721E+06-0.03441428E+03 0.02468750E+02 0.02940255E+00-0.06248179E-05    3
+-0.01731462E-06 0.07545261E-10-0.09209690E+05 0.02059560E+03                   4
+SIH3NSIH3          42489SI  2N   1H   6     G  0200.00   3000.00  1000.00      1
+ 0.01201462E+03 0.09187517E-01-0.09159516E-05-0.09380967E-08 0.02156435E-11    2
+ 0.01965066E+06-0.02978186E+03 0.02827574E+02 0.02580647E+00-0.04200478E-05    3
+-0.01503859E-06 0.06388325E-10 0.02265351E+06 0.01997012E+03                   4
+SIH3SIH2CH3       111391H   8C   1SI  2     G  0200.00   4000.00  1500.00      1
+ 0.01886736E+03 0.06449996E-01-0.06896411E-05-0.02584789E-08 0.04830521E-12    2
+-0.06620909E+05-0.07374424E+03 0.02132164E+02 0.04348657E+00-0.03495608E-03    3
+ 0.01588231E-06-0.03150773E-10-0.02040937E+04 0.01752930E+03                   4
+SIH4              121386SI  1H   4          G  0200.00   4000.00  1000.00      1
+ 0.06893874E+02 0.04030501E-01-0.04183314E-05-0.02291395E-08 0.04384766E-12    2
+ 0.01107037E+05-0.01749117E+03 0.02475167E+02 0.09003721E-01 0.02185394E-04    3
+-0.02681423E-07-0.06621081E-11 0.02925488E+05 0.07751015E+02                   4
+SIHCL2            121986SI  1H   1CL  2     G  0200.00   2000.00  1000.00      1
+ 0.07229734E+02 0.02869206E-01-0.08849876E-05-0.07495866E-09 0.05752338E-12    2
+-0.01971399E+06-0.07052663E+02 0.02368353E+02 0.02401088E+00-0.03717220E-03    3
+ 0.02851998E-06-0.08530494E-10-0.01875884E+06 0.01614587E+03                   4
+SIHF               42489SI  1F   1H   1     G  0200.00   3000.00  1000.00      1
+ 0.05073509E+02 0.01533279E-01-0.01840659E-05-0.01440038E-08 0.03452517E-12    2
+-0.01973880E+06-0.01079507E+02 0.03223728E+02 0.04981221E-01-0.03173051E-05    3
+-0.02822231E-07 0.01247832E-10-0.01914168E+06 0.08906423E+02                   4
+SIHF2              42489SI  1H   1F   2     G  0200.00   3000.00  1000.00      1
+ 0.07216536E+02 0.02253240E-01-0.02737472E-05-0.02173460E-08 0.05255331E-12    2
+-0.07280241E+06-0.09783487E+02 0.03377237E+02 0.01036607E+00-0.01239082E-04    3
+-0.07267982E-07 0.03794989E-10-0.07168358E+06 0.01052189E+03                   4
+SIHF3              42489SI  1H   1F   3     G  0200.00   3000.00  1000.00      1
+ 0.09363567E+02 0.02947556E-01-0.03577633E-05-0.02858224E-08 0.06915729E-12    2
+-0.01486074E+07-0.02169453E+03 0.03918053E+02 0.01463917E+00-0.01856070E-04    3
+-0.01058200E-06 0.05617543E-10-0.01470439E+07 0.07024261E+02                   4
+SIN                42489SI  1N   1          G  0200.00   3000.00  1000.00      1
+ 0.04122909E+02 0.03521458E-02-0.07161081E-06-0.02154956E-09 0.06667571E-13    2
+ 0.05683927E+06 0.02389838E+02 0.03149182E+02 0.02584376E-01-0.05804625E-05    3
+-0.01805627E-07 0.01041095E-10 0.05710564E+06 0.07474389E+02                   4
+SINH               42489SI  1N   1H   1     G  0200.00   3000.00  1000.00      1
+ 0.04928801E+02 0.01628624E-01-0.01367197E-05-0.01390460E-08 0.02998969E-12    2
+ 0.01767790E+06-0.02823472E+02 0.03166975E+02 0.05805823E-01-0.09524443E-05    3
+-0.03991893E-07 0.02283188E-10 0.01813561E+06 0.06298440E+02                   4
+SINH2              42489SI  1N   1H   2     G  0200.00   3000.00  1000.00      1
+ 0.05186436E+02 0.03016656E-01-0.02165476E-05-0.02722658E-08 0.05706182E-12    2
+ 0.02270508E+06-0.01242140E+02 0.03362770E+02 0.07261176E-01-0.08721233E-05    3
+-0.04400014E-07 0.02419532E-10 0.02318446E+06 0.08223867E+02                   4
+SN                121286S   1N   1          G  0200.00   5000.00  1000.00      1
+ 0.03888287E+02 0.06778427E-02-0.02725309E-05 0.05135927E-09-0.03593836E-13    2
+ 0.03044496E+06 0.04194291E+02 0.03407346E+02 0.01797887E-01-0.02018970E-04    3
+ 0.02107857E-07-0.09527592E-11 0.03062373E+06 0.06821481E+02                   4
+SO                121286S   1O   1          G  0200.00   5000.00  1000.00      1
+ 0.04021078E+02 0.02584856E-02 0.08948142E-06-0.03580145E-09 0.03228430E-13    2
+-0.07119620E+04 0.03452523E+02 0.03080401E+02 0.01803106E-01 0.06705022E-05    3
+-0.02069005E-07 0.08514657E-11-0.03986163E+04 0.08581028E+02                   4
+SO2               121286S   1O   2          G  0200.00   5000.00  1000.00      1
+ 0.05254498E+02 0.01978545E-01-0.08204226E-05 0.01576383E-08-0.01120451E-12    2
+-0.03756886E+06-0.01146056E+02 0.02911439E+02 0.08103022E-01-0.06906710E-04    3
+ 0.03329016E-07-0.08777121E-11-0.03687882E+06 0.01111740E+03                   4
+SO3               121286S   1O   3          G  0200.00   5000.00  1000.00      1
+ 0.07050668E+02 0.03246560E-01-0.01408897E-04 0.02721535E-08-0.01942365E-12    2
+-0.05020668E+06-0.01106443E+03 0.02575283E+02 0.01515092E+00-0.01229872E-03    3
+ 0.04240257E-07-0.05266812E-11-0.04894411E+06 0.01219512E+03                   4
+CH2*              L S/93C   1H   2   00   00G   200.000  3500.000  1000.000    1
+ 2.29203842E+00 4.65588637E-03-2.01191947E-06 4.17906000E-10-3.39716365E-14    2
+ 5.09259997E+04 8.62650169E+00 4.19860411E+00-2.36661419E-03 8.23296220E-06    3
+-6.68815981E-09 1.94314737E-12 5.04968163E+04-7.69118967E-01 9.93967200E+03    4
+C2H3O             T04/83O   1H   3C   2    0G   200.000  5000.000              1
+ 0.59756699E+01 0.81305914E-02-0.27436245E-05 0.40703041E-09-0.21760171E-13    2
+ 0.49032178E+03-0.50320879E+01 0.34090624E+01 0.10738574E-01 0.18914925E-05    3
+ 0.71585831E-08 0.28673851E-11 0.15214766E+04 0.95714535E+01 0.30474436E+04    4
+PC3H4              40687C   3H   4          G  0200.00   5000.00  1000.00      1
+ 0.05511034E+02 0.01246956E+00-0.04814165E-04 0.08573769E-08-0.05771561E-12    2
+ 0.01961967E+06-0.01079475E+03 0.06271447E+01 0.03116179E+00-0.03747664E-03    3
+ 0.02964118E-06-0.09987382E-10 0.02083493E+06 0.01346880E+03                   4
+n-C4H3            HW /94C   4H   3    0    0G   200.000  3000.000              1
+ 0.54328279E+01 0.16860981E-01-0.94313109E-05 0.25703895E-08-0.27456309E-12    2
+ 0.61600680E+05-0.15673981E+01-0.31684113E+00 0.46912100E-01-0.68093810E-04    3
+ 0.53179921E-07-0.16523005E-10 0.62476199E+05 0.24622559E+02                   4
+i-C4H3            AB1/93C   4H   3    0    0G   200.000  3000.000              1
+ 0.90978165E+01 0.92207119E-02-0.33878441E-05 0.49160498E-09-0.14529780E-13    2
+ 0.56600574E+05-0.19802597E+02 0.20830412E+01 0.40834274E-01-0.62159685E-04    3
+ 0.51679358E-07-0.17029184E-10 0.58005129E+05 0.13617462E+02                   4
+n-C4H5            HW /94C   4H   5    0    0G   200.000  3000.000              1
+ 0.98501978E+01 0.10779008E-01-0.13672125E-05-0.77200535E-09 0.18366314E-12    2
+ 0.38840301E+05-0.26001846E+02 0.16305321E+00 0.39830137E-01-0.34000128E-04    3
+ 0.15147233E-07-0.24665825E-11 0.41429766E+05 0.23536163E+02                   4
+i-C4H5            HW /94C   4H   5    0    0G   200.000  3000.000              1
+ 0.10229092E+02 0.94850138E-02-0.90406445E-07-0.12596100E-08 0.24781468E-12    2
+ 0.34642812E+05-0.28564529E+02-0.19932900E-01 0.38005672E-01-0.27559450E-04    3
+ 0.77835551E-08 0.40209383E-12 0.37496223E+05 0.24394241E+02                   4
+C4H612            A 8/83C   4H   6    0    0G   200.     3000.     1000.0      1
+  0.1781557E 02 -0.4257502E-02  0.1051185E-04 -0.4473844E-08  0.5848138E-12    2
+  0.1267342E 05 -0.6982662E 02  0.1023467E 01  0.3495919E-01 -0.2200905E-04    3
+  0.6942272E-08 -0.7879187E-12  0.1811799E 05  0.1975066E 02  0.1950807E+05    4
+A1                HW /94C   6H   6    0    0G   200.000  3000.000              1
+ 0.17246994E+02 0.38420164E-02 0.82776232E-05-0.48961120E-08 0.76064545E-12    2
+ 0.26646055E+04-0.71945175E+02-0.48998680E+01 0.59806932E-01-0.36710087E-04    3
+ 0.32740399E-08 0.37600886E-11 0.91824570E+04 0.44095642E+02                   4
+C5H3               20387C   5H   3          G  0200.00   5000.00  1000.00      1
+ 0.01078762E+03 0.09539619E-01-0.03206745E-04 0.04733323E-08-0.02512135E-12    2
+ 0.06392904E+06-0.03005444E+03 0.04328720E+02 0.02352480E+00-0.05856723E-04    3
+-0.01215449E-06 0.07726478E-10 0.06588531E+06 0.04173259E+02                   4
+l-C6H4            HW /94C   6H   4    0    0G   200.000  3000.000              1
+ 0.12715182E+02 0.13839662E-01-0.43765440E-05 0.31541636E-09 0.46619026E-13    2
+ 0.57031148E+05-0.39464600E+02 0.29590225E+00 0.58053318E-01-0.67766756E-04    3
+ 0.43376762E-07-0.11418864E-10 0.60001371E+05 0.22318970E+02                   4
+n-C6H5            HW /94C   6H   5    0    0G   200.000  3000.000              1
+ 0.16070068E+02 0.81899539E-02 0.17325165E-05-0.20624185E-08 0.36292345E-12    2
+ 0.64616867E+05-0.56163742E+02-0.61135769E+00 0.65082610E-01-0.78262397E-04    3
+ 0.53030828E-07-0.14946683E-10 0.68805375E+05 0.27635468E+02                   4
+A1-               HW /94C   6H   5    0    0G   200.000  3000.000              1
+ 0.14493439E+02 0.75712688E-02 0.37894542E-05-0.30769500E-08 0.51347820E-12    2
+ 0.33189977E+05-0.54288940E+02-0.49076147E+01 0.59790771E-01-0.45639827E-04    3
+ 0.14964993E-07-0.91767826E-12 0.38733410E+05 0.46567780E+02                   4
+c-C6H4            HW /94C   6H   4    0    0G   200.000  3000.000              1
+ 0.13849209E+02 0.78807920E-02 0.18243836E-05-0.21169166E-08 0.37459977E-12    2
+ 0.47446340E+05-0.50404953E+02-0.30991268E+01 0.54030564E-01-0.40839004E-04    3
+ 0.10738837E-07 0.98078490E-12 0.52205711E+05 0.37415207E+02                   4
+l-C6H6            HW /94C   6H   6    0    0G   200.000  3000.000              1
+ 0.10874918E+02 0.23293324E-01-0.94495535E-05 0.16255329E-08-0.84771200E-13    2
+ 0.36224055E+05-0.30326756E+02 0.59114441E-01 0.55723339E-01-0.43485274E-04    3
+ 0.14487391E-07-0.52512541E-12 0.39042688E+05 0.24796795E+02                   4
+n-C6H7            HW /94C   6H   7    0    0G   200.000  3000.000              1
+ 0.22577469E+02-0.30737517E-02 0.14225234E-04-0.69880848E-08 0.10232874E-11    2
+ 0.41228980E+05-0.91568619E+02 0.13248032E+00 0.57103366E-01-0.43712644E-04    3
+ 0.15538603E-07-0.12976356E-11 0.47730512E+05 0.25339081E+02                   4
+c-C6H7            HW /94C   6H   7    0    0G   200.000  3000.000              1
+ 0.19996841E+02 0.11189543E-02 0.11649756E-04-0.62779471E-08 0.94939508E-12    2
+ 0.16730059E+05-0.83746933E+02-0.30328493E+01 0.50804518E-01-0.69150292E-05    3
+-0.29715974E-07 0.16296353E-10 0.23895383E+05 0.38909180E+02                   4
+C6H8              HW /94C   6H   8    0    0G   200.000  3000.000              1
+ 0.28481979E+02-0.15702948E-01 0.26771697E-04-0.11780109E-07 0.16573427E-11    2
+ 0.93346445E+04-0.12500226E+03 0.15850439E+01 0.40215142E-01 0.78439543E-05    3
+-0.38761325E-07 0.18545207E-10 0.17949613E+05 0.19112625E+02                   4
+i-C6H5            HW /94C   6H   5    0    0G   200.000  3000.000              1
+ 0.22501663E+02-0.81009977E-02 0.15955695E-04-0.72310371E-08 0.10310424E-11    2
+ 0.58473410E+05-0.91224777E+02-0.78585434E+00 0.60221825E-01-0.62890264E-04    3
+ 0.36310730E-07-0.87000259E-11 0.64942270E+05 0.28658905E+02                   4
+i-C6H7            HW /94C   6H   7    0    0G   200.000  3000.000              1
+ 0.20481506E+02 0.79439697E-03 0.11450761E-04-0.60991177E-08 0.91756724E-12    2
+ 0.37728426E+05-0.81812073E+02-0.17099094E+01 0.62486034E-01-0.54290707E-04    3
+ 0.26959682E-07-0.58999090E-11 0.44086621E+05 0.33344772E+02                   4
+A1C2H             HW /94C   8H   6    0    0G   200.000  3000.000              1
+ 0.24090759E+02 0.78232400E-03 0.11453964E-04-0.61620504E-08 0.93346685E-12    2
+ 0.27429445E+05-0.10499631E+03-0.52645016E+01 0.84511042E-01-0.76597848E-04    3
+ 0.33216978E-07-0.47673063E-11 0.35566242E+05 0.46378815E+02                   4
+A1C2H-            HW /94C   8H   5    0    0G   200.000  3000.000              1
+ 0.12359501E+02 0.25453357E-01-0.10606554E-04 0.18914603E-08-0.10630622E-12    2
+ 0.60930461E+05-0.40900208E+02-0.44495859E+01 0.76995067E-01-0.66617038E-04    3
+ 0.25038682E-07-0.19756601E-11 0.65225926E+05 0.44427948E+02                   4
+n-A1C2H2          HW /94C   8H   7    0    0G   200.000  3000.000              1
+ 0.30433151E+02-0.13965182E-01 0.25416972E-04-0.11354174E-07 0.16092050E-11    2
+ 0.35738719E+05-0.13416492E+03-0.44899931E+01 0.78750789E-01-0.62376959E-04    3
+ 0.21952140E-07-0.16960955E-11 0.45902949E+05 0.47980759E+02                   4
+i-A1C2H2          HW /94C   8H   7    0    0G   200.000  3000.000              1
+ 0.24365524E+02 0.11262144E-02 0.12931670E-04-0.69641146E-08 0.10540145E-11    2
+ 0.33549121E+05-0.10462067E+03-0.25971584E+01 0.63454390E-01-0.20852312E-04    3
+-0.22604624E-07 0.15112869E-10 0.41707375E+05 0.37893417E+02                   4
+A1C2H*            HW /94C   8H   5    0    0G   200.000  3000.000              1
+ 0.28686157E+02-0.13869863E-01 0.22721186E-04-0.99882271E-08 0.14085851E-11    2
+ 0.56047309E+05-0.12750334E+03-0.29324217E+01 0.66043675E-01-0.39500475E-04    3
+-0.31830381E-08 0.85300387E-11 0.65324043E+05 0.38058685E+02                   4
+A1C2H3            HW /94C   8H   8    0    0G   200.000  3000.000              1
+ 0.11303213E+02 0.33709887E-01-0.13208885E-04 0.21140962E-08-0.87311377E-13    2
+ 0.11725388E+05-0.34737919E+02-0.38678493E+01 0.67947865E-01-0.25230333E-04    3
+-0.18017145E-07 0.12998470E-10 0.16200269E+05 0.45271770E+02                   4
+A1C2H3*           HW /94C   8H   7    0    0G   200.000  3000.000              1
+ 0.11563599E+02 0.30210810E-01-0.11545593E-04 0.17302320E-08-0.52379765E-13    2
+ 0.40498492E+05-0.34882965E+02-0.38868685E+01 0.68168961E-01-0.34805875E-04    3
+-0.56410254E-08 0.80714758E-11 0.44941359E+05 0.45943188E+02                   4
+A1C2HC2H2         HW /94C  10H   7    0    0G   200.000  3000.000              1
+ 0.37523422E+02-0.17028838E-01 0.28777416E-04-0.12719674E-07 0.17976818E-11    2
+ 0.61041488E+05-0.17188731E+03-0.63184557E+01 0.11657917E+00-0.13638573E-03    3
+ 0.88823526E-07-0.24348468E-10 0.72977062E+05 0.52624207E+02                   4
+A1C2H)2           HW /94C  10H   6    0    0G   200.000  3000.000              1
+ 0.39766785E+02-0.24939798E-01 0.34210185E-04-0.14473258E-07 0.20104023E-11    2
+ 0.50136750E+05-0.18657632E+03-0.75570364E+01 0.12159592E+00-0.15138849E-03    3
+ 0.10287488E-06-0.28950911E-10 0.62914168E+05 0.55213287E+02                   4
+A2-1              HW /94C  10H   7    0    0G   200.000  3000.000              1
+ 0.38380905E+02-0.23157451E-01 0.35479272E-04-0.15395457E-07 0.21609069E-11    2
+ 0.32698469E+05-0.18106512E+03-0.85287294E+01 0.10334599E+00-0.91922702E-04    3
+ 0.43147448E-07-0.85738135E-11 0.46335004E+05 0.63342224E+02                   4
+A2-2              HW /94C  10H   7    0    0G   200.000  3000.000              1
+ 0.37326401E+02-0.20478070E-01 0.33183067E-04-0.14576987E-07 0.20569137E-11    2
+ 0.32840301E+05-0.17537704E+03-0.38448524E+01 0.70514679E-01-0.93748040E-05    3
+-0.44051607E-07 0.24267865E-10 0.45627656E+05 0.43582001E+02                   4
+A2                HW /94C  10H   8    0    0G   200.000  3000.000              1
+ 0.36468643E+02-0.15419513E-01 0.30160038E-04-0.13700120E-07 0.19582730E-11    2
+ 0.35091445E+04-0.17329489E+03-0.94505043E+01 0.11137849E+00-0.10345667E-03    3
+ 0.52800392E-07-0.11804439E-10 0.16695594E+05 0.65187668E+02                   4
+naphthyne         HW /94C  10H   6    0    0G   200.000  3000.000              1
+ 0.37680222E+02-0.23843173E-01 0.34590019E-04-0.14841252E-07 0.20744023E-11    2
+ 0.45771934E+05-0.17676088E+03-0.68131294E+01 0.96868336E-01-0.87982247E-04    3
+ 0.41858918E-07-0.82716637E-11 0.58661090E+05 0.54849548E+02                   4
+A2C2H2            HW /94C  12H   9    0    0G   200.000  3000.000              1
+ 0.38449295E+02-0.62794946E-02 0.24404828E-04-0.11968822E-07 0.17586878E-11    2
+ 0.41090176E+05-0.17668623E+03-0.78516331E+01 0.12104863E+00-0.10531662E-03    3
+ 0.46280483E-07-0.77963885E-11 0.54316234E+05 0.63654388E+02                   4
+A2C2HA            HW /94C  12H   8    0    0G   200.000  3000.000              1
+ 0.49453674E+02-0.33857111E-01 0.46505607E-04-0.19681195E-07 0.27340769E-11    2
+ 0.26851051E+05-0.23933099E+03-0.11530450E+02 0.14741433E+00-0.17302344E-03    3
+ 0.11500390E-06-0.32709183E-10 0.43793129E+05 0.74391754E+02                   4
+A2C2HB            HW /94C  12H   8    0    0G   200.000  3000.000              1
+ 0.18184774E+02 0.41343965E-01-0.17302822E-04 0.31004770E-08-0.17580817E-12    2
+ 0.36171543E+05-0.73466003E+02-0.68233256E+01 0.11382083E+00-0.88584900E-04    3
+ 0.25930856E-07 0.80712824E-12 0.42797719E+05 0.54592098E+02                   4
+A2C2HA*           HW /94C  12H   7    0    0G   200.000  3000.000              1
+ 0.36614349E+02-0.60314685E-02 0.21614964E-04-0.10579910E-07 0.15563124E-11    2
+ 0.60723898E+05-0.17026691E+03-0.84175968E+01 0.12391680E+00-0.12250672E-03    3
+ 0.64071344E-07-0.13889583E-10 0.73248562E+05 0.61893204E+02                   4
+A2C2HB*           HW /94C  12H   7    0    0G   200.000  3000.000              1
+ 0.44933517E+02-0.26026871E-01 0.38589074E-04-0.16646357E-07 0.23321310E-11    2
+ 0.57926637E+05-0.21417279E+03-0.11824737E+02 0.14904183E+00-0.18618468E-03    3
+ 0.13129460E-06-0.39145326E-10 0.73385375E+05 0.76273834E+02                   4
+A2C2H)2           HW /94C  14H   8    0    0G   200.000  3000.000              1
+ 0.23671062E+02 0.42137049E-01-0.17596645E-04 0.31081251E-08-0.16805216E-12    2
+ 0.77926273E+05-0.99615448E+02-0.63029008E+01 0.13745695E+00-0.13055481E-03    3
+ 0.60730663E-07-0.10178345E-10 0.85489430E+05 0.51891548E+02                   4
+A2HR5             HW /94C  12H   9    0    0G   200.000  3000.000              1
+ 0.51227890E+02-0.36250230E-01 0.50296483E-04-0.21346413E-07 0.29698119E-11    2
+ 0.32111648E+05-0.25061665E+03-0.92796507E+01 0.11707741E+00-0.78334211E-04    3
+ 0.10778407E-07 0.66555260E-11 0.50063973E+05 0.66712509E+02                   4
+A2R5              HW /94C  12H   8    0    0G   200.000  3000.000              1
+ 0.45883698E+02-0.27226903E-01 0.41569336E-04-0.18047093E-07 0.25351396E-11    2
+ 0.13394574E+05-0.22304584E+03-0.97011614E+01 0.12019449E+00-0.98907694E-04    3
+ 0.37240884E-07-0.41124578E-11 0.29601926E+05 0.66970596E+02                   4
+A3-4              HW /94C  14H   9    0    0G   200.000  3000.000              1
+ 0.55788879E+02-0.37930615E-01 0.53528085E-04-0.22830790E-07 0.31841231E-11    2
+ 0.32605633E+05-0.27378882E+03-0.11266616E+02 0.14216852E+00-0.12632679E-03    3
+ 0.58348800E-07-0.11184283E-10 0.52141961E+05 0.75774780E+02                   4
+A3-1              HW /94C  14H   9    0    0G   200.000  3000.000              1
+ 0.51812469E+02-0.28380312E-01 0.45409150E-04-0.19924162E-07 0.28118107E-11    2
+ 0.34357359E+05-0.25257889E+03-0.73971558E+01 0.11464679E+00-0.57456185E-04    3
+-0.14070547E-07 0.16005933E-10 0.52239715E+05 0.59582397E+02                   4
+A3                HW /94C  14H  10    0    0G   200.000  3000.000              1
+ 0.55916473E+02-0.35253201E-01 0.52522926E-04-0.22672634E-07 0.31770584E-11    2
+ 0.32654609E+04-0.27604980E+03-0.12275226E+02 0.15032256E+00-0.13862801E-03    3
+ 0.69376767E-07-0.15105445E-10 0.23030492E+05 0.78889145E+02                   4
+A3C2H2            HW /94C  16H  11    0    0G   200.000  3000.000              1
+ 0.47582428E+02-0.12822752E-02 0.25647692E-04-0.13378838E-07 0.20086545E-11    2
+ 0.46191215E+05-0.22653258E+03-0.95893555E+01 0.15080631E+00-0.11617327E-03    3
+ 0.36814228E-07-0.12802901E-11 0.62701906E+05 0.71309311E+02                   4
+A3C2H             HW /94C  16H  10    0    0G   200.000  3000.000              1
+ 0.52165146E+02-0.13197318E-01 0.34353056E-04-0.16283892E-07 0.23677362E-11    2
+ 0.34235055E+05-0.25406651E+03-0.11602674E+02 0.16824394E+00-0.16432030E-03    3
+ 0.86394380E-07-0.19310567E-10 0.52172836E+05 0.75515366E+02                   4
+A4H               HW /94C  16H  11    0    0G   200.000  3000.000              1
+ 0.53775238E+02-0.15681151E-01 0.38488797E-04-0.18134241E-07 0.26325071E-11    2
+ 0.24154484E+05-0.26532764E+03-0.12209255E+02 0.15599608E+00-0.11474930E-03    3
+ 0.30214796E-07 0.18287498E-11 0.43453211E+05 0.79503540E+02                   4
+A4                HW /94C  16H  10    0    0G   200.000  3000.000              1
+ 0.58017273E+02-0.29164989E-01 0.48728383E-04-0.21593682E-07 0.30609786E-11    2
+ 0.43451016E+04-0.29017163E+03-0.13759249E+02 0.16772294E+00-0.15500121E-03    3
+ 0.75759544E-07-0.15674045E-10 0.24996187E+05 0.82853027E+02                   4
+A4-               HW /94C  16H   9    0    0G   200.000  3000.000              1
+ 0.22088816E+02 0.53355407E-01-0.22329932E-04 0.39479620E-08-0.21313176E-12    2
+ 0.45200934E+05-0.96724930E+02-0.96258593E+01 0.13385314E+00-0.77600773E-04    3
+-0.36330547E-08 0.13855670E-10 0.54171852E+05 0.68499725E+02                   4
+P2                HW /94C  12H  10    0    0G   200.000  3000.000              1
+ 0.50761871E+02-0.34501564E-01 0.50293413E-04-0.21559579E-07 0.30097192E-11    2
+ 0.21538867E+04-0.24670712E+03-0.10283234E+02 0.12428707E+00-0.95990268E-04    3
+ 0.32294793E-07-0.23045229E-11 0.20165258E+05 0.72707947E+02                   4
+P2-               HW /94C  12H   9    0    0G   200.000  3000.000              1
+ 0.44711853E+02-0.22851825E-01 0.39102117E-04-0.17352100E-07 0.24579375E-11    2
+ 0.33714000E+05-0.21220692E+03-0.11851097E+02 0.13545156E+00-0.13310938E-03    3
+ 0.73769911E-07-0.18193003E-10 0.49878781E+05 0.81107361E+02                   4
+P2-H              HW /94C  12H  11    0    0G   200.000  3000.000              1
+ 0.41542511E+02-0.83502531E-02 0.29097937E-04-0.14148299E-07 0.20728341E-11    2
+ 0.22772937E+05-0.19578616E+03-0.99978790E+01 0.12279570E+00-0.80112615E-04    3
+ 0.11102152E-07 0.64273890E-11 0.37960410E+05 0.74195984E+02                   4
+C5H4OH            L 8/89C   5H   5O   1    0G   200.000  6000.000              1
+ 0.13367912d+02 0.15205785d-01-0.54592258d-05 0.88134866d-09-0.52774454d-13    2
+ 0.38411506d+04-0.45920839d+02-0.12822236d+01 0.49041160d-01-0.13688997d-04    3
+-0.29133858d-07 0.19006964d-10 0.80087098d+04 0.30798358d+02 0.96365992d+04    4
+C5H5O             L 7/89C   5O   1H   5    0G   200.000  6000.000              1
+ 0.12606422d+02 0.16747260d-01-0.61098574d-05 0.99676557d-09-0.60113201d-13    2
+ 0.39313455d+04-0.42604277d+02 0.23042835d+00 0.32322691d-01 0.28900443d-04    3
+-0.70679977d-07 0.33406891d-10 0.80753082d+04 0.25330974d+02                   4
+C5H4O             P 1/93C   5H   4O   1    0G   200.000  3000.000              1
+ 0.47927242E+01 0.29221680E-01-0.15997486E-04 0.42069049E-08-0.42815179E-12    2
+ 0.22849286E+04-0.30131893E+01-0.23915355E+01 0.47363680E-01-0.30728171E-04    3
+ 0.78031552E-08-0.25145729E-12 0.43740152E+04 0.34594337E+02                   4
+C7H16             P10/95C   7H  16    0    0G   200.000  5000.000  1391.000    1
+ 2.22148969e+01 3.47675750e-02-1.18407129e-05 1.83298478e-09-1.06130266e-13    2
+-3.42760081e+04-9.23040196e+01-1.26836187e+00 8.54355820e-02-5.25346786e-05    3
+ 1.62945721e-08-2.02394925e-12-2.56586565e+04 3.53732912e+01                   4
+C7H15-1    2/10/95      C   7H  15    0    0G   200.000  5000.000  1391.000    1
+ 2.17940709e+01 3.26280243e-02-1.11138244e-05 1.72067148e-09-9.96366999e-14    2
+-9.20938221e+03-8.64954311e+01-4.99570406e-01 8.08826467e-02-5.00532754e-05    3
+ 1.56549308e-08-1.96616227e-12-1.04590223e+03 3.46564011e+01                   4
+C7H15-2    2/10/95      C   7H  15    0    0G   200.000  5000.000  1391.000    1
+ 2.16368842e+01 3.23324804e-02-1.09273807e-05 1.68357060e-09-9.71774091e-14    2
+-1.05873616e+04-8.52209653e+01-3.79155767e-02 7.56726570e-02-4.07473634e-05    3
+ 9.32678943e-09-4.92360745e-13-2.35605303e+03 3.37321506e+01                   4
+C4H9              P10/84C  4.H  9.   0.   0.G   200.000  6000.000              1
+ 9.43040607E+00 2.34271349E-02-8.53599182E-06 1.39748355E-09-8.44057456E-14    2
+ 2.14214862E+03-2.42207994E+01 3.54885235E+00 1.78747638E-02 5.00782825E-05    3
+-7.94475071E-08 3.35802354E-11 4.74011588E+03 1.11849382E+01 6.89397210E+03    4
+C3H7            N-L 9/84C   3H   7    0    0G   200.000  5000.000              1
+ 0.77026987E 01 0.16044203E-01-0.52833220E-05 0.76298590E-09-0.39392284E-13    2
+ 0.82984336E 04-0.15480180E 02 0.10515518E 01 0.25991980E-01 0.23800540E-05    3
+-0.19609569E-07 0.93732470E-11 0.10631863E 05 0.21122559E 02 0.12087447E 05    4
+C7H15O2    7/23/98      C  7.H 15.O  2.   0.G   200.000  5000.000              1
+ 2.49023689e+01 3.50716920e-02-1.20440306e-05 1.87464822e-09-1.08947791e-13    2
+-2.82976050e+04-9.73923542e+01 2.37499334e+00 8.34651906e-02-5.13897320e-05    3
+ 1.64217662e-08-2.19505216e-12-1.99237961e+04 2.53067342e+01                   4
+C7H14O2H   7/23/98      C  7.H 15.O  2.   0.G   200.000  5000.000              1
+ 2.70028807e+01 3.22272216e-02-1.09366516e-05 1.68977918e-09-9.77321946e-14    2
+-2.27229231e+04-1.06332170e+02 2.49875186e+00 8.32443344e-02-4.85933986e-05    3
+ 1.28927950e-08-1.09878385e-12-1.36530733e+04 2.73754005e+01                   4
+C7H14O2HO2   7/23/98    C  7.H 15.O  4.   0.G   200.000  5000.000              1
+ 3.23937788e+01 3.33911097e-02-1.15672104e-05 1.81146023e-09-1.05739941e-13    2
+-4.36321048e+04-1.32597311e+02 3.84933185e+00 9.45955097e-02-5.94934121e-05    3
+ 1.78836457e-08-2.00618696e-12-3.32051631e+04 2.25912030e+01                   4
+C7KET12    7/23/98      C  7.H 14.O  3.   0.G   200.000  5000.000              1
+ 2.97472906e+01 3.06622294e-02-1.05563590e-05 1.64627343e-09-9.58171675e-14    2
+-5.66856828e+04-1.22432490e+02 5.82433697e-01 1.01207869e-01-7.65855996e-05    3
+ 3.00738606e-08-4.82902792e-12-4.68054419e+04 3.33331449e+01                   4
+C7KET21    2/10/95      C  7.H 14.O  3.   0.G   200.000  5000.000 1382.000     1
+ 2.80512936e+01 3.27356029e-02-1.14107044e-05 1.79404506e-09-1.05002142e-13    2
+-5.89640173e+04-1.11392338e+02 4.19023030e+00 8.43118237e-02-5.44315814e-05    3
+ 1.85837721e-08-2.72768938e-12-5.00570382e+04 1.85783455e+01                   4
+C5H11CHO   2/29/96      C   6H  12O   1    0G   200.000  5000.000              1
+ 1.98891043e+01 2.71869340e-02-9.27391515e-06 1.43744158e-09-8.33090761e-14    2
+-3.97523444e+04-7.60741671e+01 1.37517192e+00 6.65669689e-02-4.04423050e-05    3
+ 1.23836270e-08-1.52905857e-12-3.28740986e+04 2.48343934e+01                   4
+C5H11CO    2/29/96      C  6.H 11.O  1.   0.G   200.000  5000.000              1
+ 1.94783812e+01 2.50466029e-02-8.54861346e-06 1.32557944e-09-7.68503296e-14    2
+-2.07923937e+04-7.21995578e+01 2.14479069e+00 6.17863563e-02-3.74134690e-05    3
+ 1.13283795e-08-1.36917698e-12-1.43451172e+04 2.23128045e+01                   4
+C5H11             T03/97C  5.H 11.   0.   0.G   200.000  5000.000              1
+ 1.13324106E+01 3.03659897E-02-1.13934480E-05 1.99539733E-09-1.32825012E-13    2
+-5.95299959E+03-3.13564905E+01 3.57867617E+00 3.04236365E-02 3.27768270E-05    3
+-5.86453147E-08 2.39315107E-11-2.60420265E+03 1.42591121E+01 6.68760000E+03    4
+CH3O2             L 1/84C   1H   3O   2N   0G   200.000  5000.00               1
+ 0.66812963E 01 0.80057271E-02-0.27188507E-05 0.40631365E-09-0.21927725E-13    2
+ 0.52621851E 03-0.99423847E 01 0.20986490E 01 0.15786357E-01 0.75683261E-07    3
+-0.11274587E-07 0.56665133E-11 0.20695879E 04 0.15007068E 02                   4
+CH4O2             T11/96C   1H   4O   2    0G   200.000  6000.000              1
+ 6.86907934E+00 1.00840883E-02-3.66515947E-06 5.96302681E-10-3.58894156E-14    2
+-1.98402231E+04-1.24951986E+01 3.72654981E+00 7.51851847E-03 2.35970425E-05    3
+-3.52694507E-08 1.42757614E-11-1.83982011E+04 6.52443362E+00-1.68074366E+04    4
+C6H12      2/14/95      C  6.H 12.O  0.   0.G   200.000  5000.000              1
+ 1.78337529e+01 2.67377658e-02-9.10036773e-06 1.40819768e-09-8.15124244e-14    2
+-1.42062860e+04-6.83818851e+01-1.35275205e+00 6.98655426e-02-4.59408022e-05    3
+ 1.56967343e-08-2.21296175e-12-7.34368617e+03 3.53120691e+01                   4
+C3H5              BUR 92C   3H   5O   0N   0G   200.000  6000.000              1
+ 6.54761132E+00 1.33152246E-02-4.78333100E-06 7.71949814E-10-4.61930808E-14    2
+ 1.72714707E+04-9.27486841E+00 3.78794693E+00 9.48414335E-03 2.42343368E-05    3
+-3.65604010E-08 1.48592356E-11 1.86261218E+04 7.82822499E+00 2.03259122E+04    4
+CH3CHO            L 8/88C   2H   4O   1     G   200.000  6000.000  1000.000    1
+ 0.54041108E+01 0.11723059E-01-0.42263137E-05 0.68372451E-09-0.40984863E-13    2
+-0.22593122E+05-0.34807917E+01 0.47294595E+01-0.31932858E-02 0.47534921E-04    3
+-0.57458611E-07 0.21931112E-10-0.21572878E+05 0.41030159E+01                   4
+C3H3              BUR 92C   3H   3O   0N   0G   200.000  6000.000              1
+ 6.64175821E+00 8.08587428E-03-2.84787887E-06 4.53525977E-10-2.68879815E-14    2
+ 3.89793699E+04-1.04004255E+01 1.82840766E+00 2.37839036E-02-2.19228176E-05    3
+ 1.00067444E-08-1.38984644E-12 4.01863058E+04 1.38447957E+01 4.16139977E+04    4
+C4H3              L 9/89C   4H   3O   0N   0G   200.000  6000.000              1
+ 0.84762079E+01 0.88782327E-02-0.30328412E-05 0.47358302E-09-0.27716627E-13    2
+ 0.54756540E+05-0.17170551E+02 0.24173247E+01 0.24104782E-01-0.12813470E-04    3
+-0.28606237E-08 0.39194527E-11 0.56506476E+05 0.14471107E+02 0.58181574E+05    4
+CH2CHO            SAND86O   1H   3C   2     G   200.000  5000.000  1000.000    1
+ 0.05975670E+02 0.08130591E-01-0.02743624E-04 0.04070304E-08-0.02176017E-12    2
+ 0.04903218E+04-0.05045251E+02 0.03409062E+02 0.10738574E-01 0.01891492E-04    3
+-0.07158583E-07 0.02867385E-10 0.15214766E+04 0.09558290E+02                   4
+END
diff --git a/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/RASProperties b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/RASProperties
new file mode 100644
index 0000000000000000000000000000000000000000..907214c9f88bfcbb7588a24963aa40f42a944036
--- /dev/null
+++ b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/RASProperties
@@ -0,0 +1,60 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      RASProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+RASModel        kEpsilon;
+
+turbulence      on;
+
+laminarCoeffs
+{
+}
+
+kEpsilonCoeffs
+{
+    Cmu             0.09;
+    C1              1.44;
+    C2              1.92;
+    C3              -0.33;
+    alphah          1;
+    alphak          1;
+    alphaEps        0.76923;
+}
+
+RNGkEpsilonCoeffs
+{
+}
+
+LaunderSharmaKECoeffs
+{
+}
+
+LRRCoeffs
+{
+}
+
+LaunderGibsonRSTMCoeffs
+{
+}
+
+wallFunctionCoeffs
+{
+    kappa           0.4187;
+    E               9;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/chemistryProperties b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/chemistryProperties
new file mode 100644
index 0000000000000000000000000000000000000000..e2b9a595b5ba44d4910abfc165727a737243a2f1
--- /dev/null
+++ b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/chemistryProperties
@@ -0,0 +1,50 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      chemistryProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+psiChemistryModel ODEChemistryModel<gasThermoPhysics>;
+
+chemistry       on;
+
+turbulentReaction on;
+
+chemistrySolver ode;
+
+initialChemicalTimeStep 1e-07;
+
+sequentialCoeffs
+{
+    cTauChem        0.001;
+    equilibriumRateLimiter off;
+}
+
+EulerImplicitCoeffs
+{
+    cTauChem        0.05;
+    equilibriumRateLimiter off;
+}
+
+odeCoeffs
+{
+    ODESolver       SIBS;
+    eps             0.05;
+    scale           1;
+}
+
+Cmix            Cmix [ 0 0 0 0 0 0 0 ] 1;
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/coalCloud1Positions b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/coalCloud1Positions
new file mode 100644
index 0000000000000000000000000000000000000000..a5cc78c32e2afdc616102f8f61788b2aeed5407c
--- /dev/null
+++ b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/coalCloud1Positions
@@ -0,0 +1,48 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      http://www.openfoam.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    location    "";
+    class       vectorField;
+    object      coalCloudPositions;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+(
+(0.005 0.5 0.05)
+(0.010 0.5 0.05)
+(0.015 0.5 0.05)
+(0.020 0.5 0.05)
+(0.025 0.5 0.05)
+(0.030 0.5 0.05)
+(0.035 0.5 0.05)
+(0.040 0.5 0.05)
+(0.045 0.5 0.05)
+(0.005 0.6 0.05)
+(0.010 0.6 0.05)
+(0.015 0.6 0.05)
+(0.020 0.6 0.05)
+(0.025 0.6 0.05)
+(0.030 0.6 0.05)
+(0.035 0.6 0.05)
+(0.040 0.6 0.05)
+(0.045 0.6 0.05)
+(0.005 0.7 0.05)
+(0.010 0.7 0.05)
+(0.015 0.7 0.05)
+(0.020 0.7 0.05)
+(0.025 0.7 0.05)
+(0.030 0.7 0.05)
+(0.035 0.7 0.05)
+(0.040 0.7 0.05)
+(0.045 0.7 0.05)
+)
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/coalCloud1Properties b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/coalCloud1Properties
new file mode 100644
index 0000000000000000000000000000000000000000..7fcb35b37cdbb0c9869e1f8609128292b10628be
--- /dev/null
+++ b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/coalCloud1Properties
@@ -0,0 +1,163 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      coalCloud1Properties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+InjectionModel  ManualInjection;
+
+DragModel       SphereDrag;
+
+DispersionModel StochasticDispersionRAS;
+
+PatchInteractionModel StandardWallInteraction;
+
+HeatTransferModel RanzMarshall;
+
+CompositionModel SingleMixtureFraction;
+
+PhaseChangeModel LiquidEvaporation;
+
+DevolatilisationModel ConstantRateDevolatilisation;
+
+SurfaceReactionModel COxidationDiffusionLimitedRate;
+
+PostProcessingModel none;
+
+radiation       on;
+
+coupled         true;
+
+cellValueSourceCorrection on;
+
+parcelTypeId    1;
+
+constantProperties
+{
+    rhoMin          rhoMin [ 1 -3 0 0 0 ] 1e-15;
+    TMin            TMin [ 0 0 0 1 0 ] 200;
+    pMin            pMin [ 1 -1 2 0 0 ] 1000;
+    minParticleMass minParticleMass [ 1 0 0 0 0 ] 1e-15;
+    rho0            rho0 [ 1 -3 0 0 0 ] 1000;
+    T0              T0 [ 0 0 0 1 0 ] 300;
+    cp0             cp0 [ 0 2 -2 -1 0 ] 4187;
+    epsilon0        epsilon0 [ 0 0 0 0 0 ] 1;
+    f0              f0 [ 0 0 0 0 0 ] 0.5;
+    Tvap            Tvap [ 0 0 0 1 0 ] 400;
+    LDevol          LDevol [ 0 0 0 0 0 ] 0;
+    hRetentionCoeff hRetentionCoeff [ 0 0 0 0 0 ] 1;
+    constantVolume  true;
+}
+
+interpolationSchemes
+{
+    rho             cell;
+    U               cellPointFace;
+    mu              cell;
+    T               cell;
+    Cp              cell;
+    p               cell;
+}
+
+integrationSchemes
+{
+    U               Euler;
+    T               Analytical;
+}
+
+particleForces
+{
+    gravity         on;
+    virtualMass     off;
+    pressureGradient off;
+}
+
+ManualInjectionCoeffs
+{
+    massTotal       massTotal [ 1 0 0 0 0 ] 0.0001;
+    parcelBasisType mass;
+    SOI             0;
+    positionsFile   "coalCloud1Positions";
+    U0              ( 0 -10 0 );
+    parcelPDF
+    {
+        pdfType         RosinRammler;
+        RosinRammlerPDF
+        {
+            minValue        5e-06;
+            maxValue        0.0005;
+            d               ( 5e-05 );
+            n               ( 0.5 );
+        }
+    }
+}
+
+StandardWallInteractionCoeffs
+{
+    e               e [ 0 0 0 0 0 ] 1;
+    mu              mu [ 0 0 0 0 0 ] 0;
+}
+
+RanzMarshallCoeffs
+{
+    Pr              Pr [ 0 0 0 0 0 ] 0.7;
+}
+
+SingleMixtureFractionCoeffs
+{
+    phases
+    (
+        gas
+        {
+            CH4 0.604;
+            H2 0.099;
+            CO2 0.297;
+        }
+        liquid
+        {
+            H2O 1;
+        }
+        solid
+        {
+            ash 0.136304;
+            C 0.863696;
+        }
+    );
+    YGasTot0        0.211;
+    YLiquidTot0     0.026;
+    YSolidTot0      0.763;
+}
+
+LiquidEvaporationCoeffs
+{
+    activeLiquids
+    (
+        H2O
+    );
+}
+
+ConstantRateDevolatilisationCoeffs
+{
+    A0              A0 [ 0 0 -1 0 0 ] 12;
+    volatileResidualCoeff 0.001;
+}
+
+COxidationDiffusionLimitedRateCoeffs
+{
+    Sb              Sb [ 0 0 0 0 0 ] 1;
+    D               D [ 0 2 -1 0 0 ] 1.5e-05;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/enthalpySourceProperties b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/enthalpySourceProperties
new file mode 100644
index 0000000000000000000000000000000000000000..9c1295cc93c7296b01b2e4f6a974827096d94134
--- /dev/null
+++ b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/enthalpySourceProperties
@@ -0,0 +1,39 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      enthalpySourceProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+active          yes;
+
+cellSource      sphereToCell;
+
+volumeType      absolute;
+
+timeStart       0.15;
+
+duration        0.1;
+
+onValue         10000;
+
+offValue        0;
+
+sphereToCellCoeffs
+{
+    centre          ( 0.125 0.375 0.05 );
+    radius          0.005;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/environmentalProperties b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/environmentalProperties
new file mode 100644
index 0000000000000000000000000000000000000000..4baaea2a25ae33b74c1a57066d6bb1db10704eea
--- /dev/null
+++ b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/environmentalProperties
@@ -0,0 +1,21 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      environmentalProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+g               g [ 0 1 -2 0 0 0 0 ] ( 0 -9.81 0 );
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/limestoneCloud1Properties b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/limestoneCloud1Properties
new file mode 100644
index 0000000000000000000000000000000000000000..a76ed5115f88135a593f6a2cfa45a9ffe1e740a5
--- /dev/null
+++ b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/limestoneCloud1Properties
@@ -0,0 +1,104 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      limestoneCloud1Properties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+InjectionModel  ManualInjection;
+
+DragModel       SphereDrag;
+
+DispersionModel StochasticDispersionRAS;
+
+PatchInteractionModel StandardWallInteraction;
+
+HeatTransferModel RanzMarshall;
+
+PostProcessingModel none;
+
+radiation       on;
+
+coupled         true;
+
+cellValueSourceCorrection on;
+
+parcelTypeId    2;
+
+constantProperties
+{
+    rhoMin          rhoMin [ 1 -3 0 0 0 ] 1e-15;
+    TMin            TMin [ 0 0 0 1 0 ] 200;
+    minParticleMass minParticleMass [ 1 0 0 0 0 ] 1e-15;
+    rho0            rho0 [ 1 -3 0 0 0 ] 2500;
+    T0              T0 [ 0 0 0 1 0 ] 300;
+    cp0             cp0 [ 0 2 -2 -1 0 ] 900;
+    epsilon0        epsilon0 [ 0 0 0 0 0 ] 1;
+    f0              f0 [ 0 0 0 0 0 ] 0.5;
+}
+
+interpolationSchemes
+{
+    rho             cell;
+    mu              cell;
+    U               cellPoint;
+    Cp              cell;
+    T               cell;
+}
+
+integrationSchemes
+{
+    U               Euler;
+    T               Analytical;
+}
+
+particleForces
+{
+    gravity         on;
+    virtualMass     off;
+    pressureGradient off;
+}
+
+ManualInjectionCoeffs
+{
+    massTotal       massTotal [ 1 0 0 0 0 ] 0.0001;
+    parcelBasisType mass;
+    SOI             0;
+    positionsFile   "limestonePositions";
+    U0              ( 0 0 0 );
+    parcelPDF
+    {
+        pdfType         RosinRammler;
+        RosinRammlerPDF
+        {
+            minValue        5e-06;
+            maxValue        0.000565;
+            d               ( 4.8e-05 );
+            n               ( 0.5 );
+        }
+    }
+}
+
+StandardWallInteractionCoeffs
+{
+    e               e [ 0 0 0 0 0 ] 1;
+    mu              mu [ 0 0 0 0 0 ] 0;
+}
+
+RanzMarshallCoeffs
+{
+    Pr              Pr [ 0 0 0 0 0 ] 0.7;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/limestonePositions b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/limestonePositions
new file mode 100644
index 0000000000000000000000000000000000000000..e94ef685103857f451b00d39634f4f78df18509e
--- /dev/null
+++ b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/limestonePositions
@@ -0,0 +1,37 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      http://www.openfoam.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    location    "";
+    class       vectorField;
+    object      limestonePositions;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+(
+(0.0075 0.55 0.05)
+(0.0125 0.55 0.05)
+(0.0175 0.55 0.05)
+(0.0225 0.55 0.05)
+(0.0275 0.55 0.05)
+(0.0325 0.55 0.05)
+(0.0375 0.55 0.05)
+(0.0425 0.55 0.05)
+(0.0475 0.55 0.05)
+(0.0075 0.45 0.05)
+(0.0125 0.45 0.05)
+(0.0175 0.45 0.05)
+(0.0225 0.45 0.05)
+(0.0275 0.45 0.05)
+(0.0325 0.45 0.05)
+(0.0375 0.45 0.05)
+(0.0425 0.45 0.05)
+(0.0475 0.45 0.05)
+)
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/polyMesh/blockMeshDict b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/polyMesh/blockMeshDict
new file mode 100644
index 0000000000000000000000000000000000000000..fd9096e9524642d771a3cdc3d21957a9c13a55fc
--- /dev/null
+++ b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/polyMesh/blockMeshDict
@@ -0,0 +1,88 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant/polyMesh";
+    object      blockMeshDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+convertToMeters 1.0;
+
+vertices
+(
+    (0     0     0)
+    (0.05  0     0)
+    (0.05  0.5   0)
+    (0     0.5   0)
+    (0     0     0.1)
+    (0.05  0     0.1)
+    (0.05  0.5   0.1)
+    (0     0.5   0.1)
+    (0.5   0     0)
+    (0.5   0.5   0)
+    (0.5   0     0.1)
+    (0.5   0.5   0.1)
+    (0.05  1     0)
+    (0     1     0)
+    (0.05  1     0.1)
+    (0     1     0.1)
+);
+
+blocks
+(
+    hex (0 1 2 3 4 5 6 7)     (5 50 1) simpleGrading (1 1 1)
+    hex (1 8 9 2 5 10 11 6)   (40 50 1) simpleGrading (1 1 1)
+    hex (3 2 12 13 7 6 14 15) (5 50 1) simpleGrading (1 1 1)
+);
+
+edges
+(
+);
+
+patches
+(
+    wall top
+    (
+        (13 15 14 12)
+    )
+    wall bottom
+    (
+        (0 1 5 4)
+        (1 8 10 5)
+    )
+    wall walls
+    (
+        (8 9 11 10)
+        (9 2 6 11)
+        (2 12 14 6)
+    )
+    symmetryPlane symmetry
+    (
+        (4 7 3 0)
+        (7 15 13 3)
+    )
+    empty frontAndBack
+    (
+        (0 3 2 1)
+        (3 13 12 2)
+        (1 2 9 8)
+        (5 6 7 4)
+        (6 14 15 7)
+        (10 11 6 5)
+    )
+);
+
+mergePatchPairs
+(
+);
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/radiationProperties b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/radiationProperties
new file mode 100644
index 0000000000000000000000000000000000000000..8fbbdfa7202105d49a104735d2501e55b0c25f4d
--- /dev/null
+++ b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/radiationProperties
@@ -0,0 +1,73 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      radiationProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+radiation       on;
+
+solverFreq      1;
+
+radiationModel  P1;
+
+noRadiation
+{
+}
+
+P1Coeffs
+{
+    C               C [ 0 0 0 0 0 0 0 ] 0;
+}
+
+absorptionEmissionModel binaryAbsorptionEmission;
+
+binaryAbsorptionEmissionCoeffs
+{
+    model1
+    {
+        absorptionEmissionModel constantAbsorptionEmission;
+        constantAbsorptionEmissionCoeffs
+        {
+            a               a [ 0 -1 0 0 0 0 0 ] 0.5;
+            e               e [ 0 -1 0 0 0 0 0 ] 0.5;
+            E               E [ 1 -1 -3 0 0 0 0 ] 0;
+        }
+    }
+    model2
+    {
+        absorptionEmissionModel cloudAbsorptionEmission;
+        cloudAbsorptionEmissionCoeffs
+        {
+            cloudNames
+            (
+                coalCloud1
+                limestoneCloud1
+            );
+        }
+    }
+}
+
+scatterModel    cloudScatter;
+
+cloudScatterCoeffs
+{
+    cloudNames
+    (
+        coalCloud1
+        limestoneCloud1
+    );
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/thermophysicalProperties b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/thermophysicalProperties
new file mode 100644
index 0000000000000000000000000000000000000000..9a18bc51f13e8d8bfe6116c2e54507bf20ceffa0
--- /dev/null
+++ b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/thermophysicalProperties
@@ -0,0 +1,46 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      thermophysicalProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+thermoType      hPsiMixtureThermo<reactingMixture<gasThermoPhysics>>;
+
+chemistryReader foamChemistryReader;
+
+foamChemistryThermoFile "$FOAM_CASE/chemkin/foam.dat";
+
+foamChemistryFile "$FOAM_CASE/chemkin/foam.inp";
+
+inertSpecie     N2;
+
+liquidComponents
+(
+    H2O
+);
+
+H2O             H2O defaultCoeffs;
+
+solidComponents
+(
+    C
+    ash
+);
+
+C               C defaultCoeffs;
+
+ash             ash defaultCoeffs;
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/turbulenceProperties b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/turbulenceProperties
new file mode 100644
index 0000000000000000000000000000000000000000..78f28eca604be4d8fc94d38d23ae0cbb679b18fb
--- /dev/null
+++ b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/turbulenceProperties
@@ -0,0 +1,21 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      turbulenceProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+simulationType  RASModel;
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/system/controlDict b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/system/controlDict
new file mode 100644
index 0000000000000000000000000000000000000000..50cd97415e2827afb6d1ef6cca3d46ef50788b72
--- /dev/null
+++ b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/system/controlDict
@@ -0,0 +1,55 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      controlDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+application     coalChemistryFoam;
+
+startFrom       latestTime;
+
+startTime       0;
+
+stopAt          endTime;
+
+endTime         0.5;
+
+deltaT          0.0001;
+
+writeControl    adjustableRunTime;
+
+writeInterval   0.0025;
+
+purgeWrite      0;
+
+writeFormat     ascii;
+
+writePrecision  10;
+
+writeCompression uncompressed;
+
+timeFormat      general;
+
+timePrecision   6;
+
+runTimeModifiable yes;
+
+adjustTimeStep  yes;
+
+maxCo           1.0;
+
+maxDeltaT       1;
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/system/decomposeParDict b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/system/decomposeParDict
new file mode 100644
index 0000000000000000000000000000000000000000..e9784a98d78f4c2d7f0435a759a78ad3f30a0226
--- /dev/null
+++ b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/system/decomposeParDict
@@ -0,0 +1,50 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      decomposeParDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+numberOfSubdomains 4;
+
+method          metis;
+
+simpleCoeffs
+{
+    n               ( 2 2 1 );
+    delta           0.001;
+}
+
+hierarchicalCoeffs
+{
+    n               ( 1 1 1 );
+    delta           0.001;
+    order           xyz;
+}
+
+metisCoeffs
+{
+    processorWeights ( 1 1 1 1 );
+}
+
+manualCoeffs
+{
+    dataFile        "";
+}
+
+distributed     no;
+
+roots           ( );
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/system/fvSchemes b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/system/fvSchemes
new file mode 100644
index 0000000000000000000000000000000000000000..99267208eae1f5130781bee35206d73e203fc64a
--- /dev/null
+++ b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/system/fvSchemes
@@ -0,0 +1,72 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      fvSchemes;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ddtSchemes
+{
+    default         Euler;
+}
+
+gradSchemes
+{
+    default         Gauss linear;
+    grad(p)         Gauss linear;
+}
+
+divSchemes
+{
+    default         none;
+    div(phi,U)      Gauss upwind;
+    div(phid,p)     Gauss upwind;
+    div(phiU,p)     Gauss linear;
+    div(phi,h)      Gauss upwind;
+    div(phi,k)      Gauss upwind;
+    div(phi,epsilon) Gauss upwind;
+    div(U)          Gauss linear;
+    div((muEff*dev2(grad(U).T()))) Gauss linear;
+    div(phi,Yi_h)   Gauss upwind;
+}
+
+laplacianSchemes
+{
+    default         Gauss linear corrected;
+    laplacian(muEff,U) Gauss linear corrected;
+    laplacian(mut,U) Gauss linear corrected;
+    laplacian(DkEff,k) Gauss linear corrected;
+    laplacian(DepsilonEff,epsilon) Gauss linear corrected;
+    laplacian(DREff,R) Gauss linear corrected;
+    laplacian((rho*(1|A(U))),p) Gauss linear corrected;
+    laplacian(alphaEff,h) Gauss linear corrected;
+}
+
+interpolationSchemes
+{
+    default         linear;
+}
+
+snGradSchemes
+{
+    default         corrected;
+}
+
+fluxRequired
+{
+    default         no;
+    p               ;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/system/fvSolution b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/system/fvSolution
new file mode 100644
index 0000000000000000000000000000000000000000..08e0c7a037ab36453b3c30cae21fa61bef32c837
--- /dev/null
+++ b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/system/fvSolution
@@ -0,0 +1,143 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      fvSolution;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+solvers
+{
+    rho
+    {
+        solver          PCG;
+        preconditioner  DIC;
+        tolerance       1e-05;
+        relTol          0;
+    };
+    U
+    {
+        solver          PBiCG;
+        preconditioner  DILU;
+        tolerance       1e-05;
+        relTol          0;
+    };
+    p
+    {
+        solver          PBiCG;
+        preconditioner  DILU;
+        tolerance       1e-06;
+        relTol          0;
+    };
+    G
+    {
+        solver          PCG;
+        preconditioner  DIC;
+        tolerance       1e-05;
+        relTol          0;
+    };
+    Yi
+    {
+        solver          PBiCG;
+        preconditioner  DILU;
+        tolerance       1e-06;
+        relTol          0;
+    };
+    CO2
+    {
+        solver          PBiCG;
+        preconditioner  DILU;
+        tolerance       1e-06;
+        relTol          0;
+    };
+    O2
+    {
+        solver          PBiCG;
+        preconditioner  DILU;
+        tolerance       1e-06;
+        relTol          0;
+    };
+    N2
+    {
+        solver          PBiCG;
+        preconditioner  DILU;
+        tolerance       1e-06;
+        relTol          0;
+    };
+    CH4
+    {
+        solver          PBiCG;
+        preconditioner  DILU;
+        tolerance       1e-06;
+        relTol          0;
+    };
+    H2
+    {
+        solver          PBiCG;
+        preconditioner  DILU;
+        tolerance       1e-06;
+        relTol          0;
+    };
+    H2O
+    {
+        solver          PBiCG;
+        preconditioner  DILU;
+        tolerance       1e-06;
+        relTol          0;
+    };
+    CO
+    {
+        solver          PBiCG;
+        preconditioner  DILU;
+        tolerance       1e-06;
+        relTol          0;
+    };
+    h
+    {
+        solver          PBiCG;
+        preconditioner  DILU;
+        tolerance       1e-05;
+        relTol          0;
+    };
+    R
+    {
+        solver          PBiCG;
+        preconditioner  DILU;
+        tolerance       1e-05;
+        relTol          0;
+    };
+    k
+    {
+        solver          PBiCG;
+        preconditioner  DILU;
+        tolerance       1e-05;
+        relTol          0;
+    };
+    epsilon
+    {
+        solver          PBiCG;
+        preconditioner  DILU;
+        tolerance       1e-05;
+        relTol          0;
+    };
+}
+
+PISO
+{
+    transonic       yes;
+    nCorrectors     2;
+    nNonOrthogonalCorrectors 0;
+    momentumPredictor yes;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/0.org/G b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/0.org/G
new file mode 100644
index 0000000000000000000000000000000000000000..67b9372a4c833e5cb37a1784aa59daa2fd9ffb0e
--- /dev/null
+++ b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/0.org/G
@@ -0,0 +1,59 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      G;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 0 -3 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    walls
+    {
+        type            MarshakRadiation;
+        T               T;
+        emissivity      1;
+        value           uniform 0;
+    }
+    inlet
+    {
+        type            MarshakRadiation;
+        T               T;
+        emissivity      1;
+        value           uniform 0;
+    }
+    outlet
+    {
+        type            zeroGradient;
+    }
+    cycLeft
+    {
+        type            cyclic;
+        value           uniform 0;
+    }
+    cycRight
+    {
+        type            cyclic;
+        value           uniform 0;
+    }
+    frontAndBack
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/0/pd b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/0.org/H2O
similarity index 73%
rename from tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/0/pd
rename to tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/0.org/H2O
index dbfc6661058517618c784bf060911ebe265b98c9..6ab71d183d314c4c8382de0b8163a07698a0e468 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/0/pd
+++ b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/0.org/H2O
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.5                                   |
+|  \\    /   O peration     | Version:  1.5.x                                 |
 |   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
@@ -10,47 +10,45 @@ FoamFile
     version     2.0;
     format      ascii;
     class       volScalarField;
-    object      p;
+    location    "0";
+    object      H2O;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-dimensions      [1 -1 -2 0 0 0 0];
+dimensions      [0 0 0 0 0 0 0];
 
 internalField   uniform 0;
 
 boundaryField
 {
-    minX
+    walls
     {
         type            zeroGradient;
-        value           uniform 0;
     }
-    maxX
+    inlet
     {
         type            fixedValue;
         value           uniform 0;
     }
-
-    minY
+    outlet
     {
         type            zeroGradient;
-        value           uniform 0;
     }
-    maxY
+    cycLeft
     {
-        type            zeroGradient;
+        type            cyclic;
         value           uniform 0;
     }
-    minZ
+    cycRight
     {
-        type            zeroGradient;
+        type            cyclic;
         value           uniform 0;
     }
-    maxZ
+    frontAndBack
     {
-        type            zeroGradient;
-        value           uniform 0;
+        type            empty;
     }
 }
 
+
 // ************************************************************************* //
diff --git a/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/0.org/N2 b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/0.org/N2
new file mode 100644
index 0000000000000000000000000000000000000000..67821f8aba70a97b41c4bd07f990c5c478eb721e
--- /dev/null
+++ b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/0.org/N2
@@ -0,0 +1,54 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      N2;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 0.79;
+
+boundaryField
+{
+    walls
+    {
+        type            zeroGradient;
+    }
+    inlet
+    {
+        type            fixedValue;
+        value           uniform 0.79;
+    }
+    outlet
+    {
+        type            zeroGradient;
+    }
+    cycLeft
+    {
+        type            cyclic;
+        value           uniform 0.79;
+    }
+    cycRight
+    {
+        type            cyclic;
+        value           uniform 0.79;
+    }
+    frontAndBack
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/0.org/O2 b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/0.org/O2
new file mode 100644
index 0000000000000000000000000000000000000000..af16fd7a8f19fa4773d71180162a5d4f770b7a95
--- /dev/null
+++ b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/0.org/O2
@@ -0,0 +1,54 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      O2;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 0.21;
+
+boundaryField
+{
+    walls
+    {
+        type            zeroGradient;
+    }
+    inlet
+    {
+        type            fixedValue;
+        value           uniform 0.21;
+    }
+    outlet
+    {
+        type            zeroGradient;
+    }
+    cycLeft
+    {
+        type            cyclic;
+        value           uniform 0.21;
+    }
+    cycRight
+    {
+        type            cyclic;
+        value           uniform 0.21;
+    }
+    frontAndBack
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/0.org/T b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/0.org/T
new file mode 100644
index 0000000000000000000000000000000000000000..b03d0dbaa27890d0e183110582183068747425b3
--- /dev/null
+++ b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/0.org/T
@@ -0,0 +1,53 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      T;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 1 0 0 0];
+
+internalField   uniform 350;
+
+boundaryField
+{
+    walls
+    {
+        type            fixedValue;
+        value           uniform 400;
+    }
+    inlet
+    {
+        type            fixedValue;
+        value           uniform 350;
+    }
+    outlet
+    {
+        type            zeroGradient;
+    }
+    cycLeft
+    {
+        type            cyclic;
+    }
+    cycRight
+    {
+        type            cyclic;
+    }
+    frontAndBack
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/0.org/U b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/0.org/U
new file mode 100644
index 0000000000000000000000000000000000000000..58adc402f91bb3c19cfcf119b40ec2bb3798f1a2
--- /dev/null
+++ b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/0.org/U
@@ -0,0 +1,53 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volVectorField;
+    location    "0";
+    object      U;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -1 0 0 0 0];
+
+internalField   uniform (0 0 0);
+
+boundaryField
+{
+    walls
+    {
+        type            fixedValue;
+        value           uniform (0 0 0);
+    }
+    inlet
+    {
+        type            fixedValue;
+        value           uniform (5 0 0);
+    }
+    outlet
+    {
+        type            zeroGradient;
+    }
+    cycLeft
+    {
+        type            cyclic;
+    }
+    cycRight
+    {
+        type            cyclic;
+    }
+    frontAndBack
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/0.org/alphat b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/0.org/alphat
new file mode 100644
index 0000000000000000000000000000000000000000..f298ca2ef79c4a4bf795c89ed7b22a9783eddd1e
--- /dev/null
+++ b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/0.org/alphat
@@ -0,0 +1,56 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      alphat;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -1 -1 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    walls
+    {
+        type            compressible::alphatWallFunction;
+        value           uniform 0;
+    }
+    inlet
+    {
+        type            calculated;
+        value           uniform 0;
+    }
+    outlet
+    {
+        type            calculated;
+        value           uniform 0;
+    }
+    cycLeft
+    {
+        type            cyclic;
+        value           uniform 0;
+    }
+    cycRight
+    {
+        type            cyclic;
+        value           uniform 0;
+    }
+    frontAndBack
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/0.org/epsilon b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/0.org/epsilon
new file mode 100644
index 0000000000000000000000000000000000000000..529618d2afbba64ffaa99f8f4c6963eaf77895f9
--- /dev/null
+++ b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/0.org/epsilon
@@ -0,0 +1,55 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      epsilon;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 2 -3 0 0 0 0];
+
+internalField   uniform 0.0449;
+
+boundaryField
+{
+    walls
+    {
+        type            compressible::epsilonWallFunction;
+        value           uniform 0.0449;
+    }
+    inlet
+    {
+        type            fixedValue;
+        value           uniform 0.0449;
+    }
+    outlet
+    {
+        type            zeroGradient;
+    }
+    cycLeft
+    {
+        type            cyclic;
+        value           uniform 0.0449;
+    }
+    cycRight
+    {
+        type            cyclic;
+        value           uniform 0.0449;
+    }
+    frontAndBack
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/0.org/k b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/0.org/k
new file mode 100644
index 0000000000000000000000000000000000000000..eed0dcdd366eab874e4fb2dc3ba7e5c542e35b76
--- /dev/null
+++ b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/0.org/k
@@ -0,0 +1,55 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      k;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 2 -2 0 0 0 0];
+
+internalField   uniform 0.0938;
+
+boundaryField
+{
+    walls
+    {
+        type            compressible::kQRWallFunction;
+        value           uniform 0.0938;
+    }
+    inlet
+    {
+        type            fixedValue;
+        value           uniform 0.0938;
+    }
+    outlet
+    {
+        type            zeroGradient;
+    }
+    cycLeft
+    {
+        type            cyclic;
+        value           uniform 0.0938;
+    }
+    cycRight
+    {
+        type            cyclic;
+        value           uniform 0.0938;
+    }
+    frontAndBack
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/0.org/mut b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/0.org/mut
new file mode 100644
index 0000000000000000000000000000000000000000..0ad81e27201c3bcec3bbf206d5abfa4617fc6e28
--- /dev/null
+++ b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/0.org/mut
@@ -0,0 +1,56 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      mut;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -1 -1 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    walls
+    {
+        type            mutWallFunction;
+        value           uniform 0;
+    }
+    inlet
+    {
+        type            calculated;
+        value           uniform 0;
+    }
+    outlet
+    {
+        type            calculated;
+        value           uniform 0;
+    }
+    cycLeft
+    {
+        type            cyclic;
+        value           uniform 0;
+    }
+    cycRight
+    {
+        type            cyclic;
+        value           uniform 0;
+    }
+    frontAndBack
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/0.org/p b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/0.org/p
new file mode 100644
index 0000000000000000000000000000000000000000..55f9cd7aee3de50282b8c4417d9ba21173ddcbe9
--- /dev/null
+++ b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/0.org/p
@@ -0,0 +1,54 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      p;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -1 -2 0 0 0 0];
+
+internalField   uniform 100000;
+
+boundaryField
+{
+    walls
+    {
+        type            zeroGradient;
+    }
+    inlet
+    {
+        type            zeroGradient;
+    }
+    outlet
+    {
+        type            fixedValue;
+        value           uniform 100000;
+    }
+    cycLeft
+    {
+        type            cyclic;
+        value           uniform 100000;
+    }
+    cycRight
+    {
+        type            cyclic;
+        value           uniform 100000;
+    }
+    frontAndBack
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/0/G b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/0/G
new file mode 100644
index 0000000000000000000000000000000000000000..67b9372a4c833e5cb37a1784aa59daa2fd9ffb0e
--- /dev/null
+++ b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/0/G
@@ -0,0 +1,59 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      G;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 0 -3 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    walls
+    {
+        type            MarshakRadiation;
+        T               T;
+        emissivity      1;
+        value           uniform 0;
+    }
+    inlet
+    {
+        type            MarshakRadiation;
+        T               T;
+        emissivity      1;
+        value           uniform 0;
+    }
+    outlet
+    {
+        type            zeroGradient;
+    }
+    cycLeft
+    {
+        type            cyclic;
+        value           uniform 0;
+    }
+    cycRight
+    {
+        type            cyclic;
+        value           uniform 0;
+    }
+    frontAndBack
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/0/H2O b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/0/H2O
new file mode 100644
index 0000000000000000000000000000000000000000..6ab71d183d314c4c8382de0b8163a07698a0e468
--- /dev/null
+++ b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/0/H2O
@@ -0,0 +1,54 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      H2O;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    walls
+    {
+        type            zeroGradient;
+    }
+    inlet
+    {
+        type            fixedValue;
+        value           uniform 0;
+    }
+    outlet
+    {
+        type            zeroGradient;
+    }
+    cycLeft
+    {
+        type            cyclic;
+        value           uniform 0;
+    }
+    cycRight
+    {
+        type            cyclic;
+        value           uniform 0;
+    }
+    frontAndBack
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/0/N2 b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/0/N2
new file mode 100644
index 0000000000000000000000000000000000000000..67821f8aba70a97b41c4bd07f990c5c478eb721e
--- /dev/null
+++ b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/0/N2
@@ -0,0 +1,54 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      N2;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 0.79;
+
+boundaryField
+{
+    walls
+    {
+        type            zeroGradient;
+    }
+    inlet
+    {
+        type            fixedValue;
+        value           uniform 0.79;
+    }
+    outlet
+    {
+        type            zeroGradient;
+    }
+    cycLeft
+    {
+        type            cyclic;
+        value           uniform 0.79;
+    }
+    cycRight
+    {
+        type            cyclic;
+        value           uniform 0.79;
+    }
+    frontAndBack
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/0/O2 b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/0/O2
new file mode 100644
index 0000000000000000000000000000000000000000..af16fd7a8f19fa4773d71180162a5d4f770b7a95
--- /dev/null
+++ b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/0/O2
@@ -0,0 +1,54 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      O2;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 0.21;
+
+boundaryField
+{
+    walls
+    {
+        type            zeroGradient;
+    }
+    inlet
+    {
+        type            fixedValue;
+        value           uniform 0.21;
+    }
+    outlet
+    {
+        type            zeroGradient;
+    }
+    cycLeft
+    {
+        type            cyclic;
+        value           uniform 0.21;
+    }
+    cycRight
+    {
+        type            cyclic;
+        value           uniform 0.21;
+    }
+    frontAndBack
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/0/T b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/0/T
new file mode 100644
index 0000000000000000000000000000000000000000..b03d0dbaa27890d0e183110582183068747425b3
--- /dev/null
+++ b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/0/T
@@ -0,0 +1,53 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      T;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 1 0 0 0];
+
+internalField   uniform 350;
+
+boundaryField
+{
+    walls
+    {
+        type            fixedValue;
+        value           uniform 400;
+    }
+    inlet
+    {
+        type            fixedValue;
+        value           uniform 350;
+    }
+    outlet
+    {
+        type            zeroGradient;
+    }
+    cycLeft
+    {
+        type            cyclic;
+    }
+    cycRight
+    {
+        type            cyclic;
+    }
+    frontAndBack
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/0/U b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/0/U
new file mode 100644
index 0000000000000000000000000000000000000000..58adc402f91bb3c19cfcf119b40ec2bb3798f1a2
--- /dev/null
+++ b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/0/U
@@ -0,0 +1,53 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volVectorField;
+    location    "0";
+    object      U;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -1 0 0 0 0];
+
+internalField   uniform (0 0 0);
+
+boundaryField
+{
+    walls
+    {
+        type            fixedValue;
+        value           uniform (0 0 0);
+    }
+    inlet
+    {
+        type            fixedValue;
+        value           uniform (5 0 0);
+    }
+    outlet
+    {
+        type            zeroGradient;
+    }
+    cycLeft
+    {
+        type            cyclic;
+    }
+    cycRight
+    {
+        type            cyclic;
+    }
+    frontAndBack
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/0/alphat b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/0/alphat
new file mode 100644
index 0000000000000000000000000000000000000000..f298ca2ef79c4a4bf795c89ed7b22a9783eddd1e
--- /dev/null
+++ b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/0/alphat
@@ -0,0 +1,56 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      alphat;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -1 -1 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    walls
+    {
+        type            compressible::alphatWallFunction;
+        value           uniform 0;
+    }
+    inlet
+    {
+        type            calculated;
+        value           uniform 0;
+    }
+    outlet
+    {
+        type            calculated;
+        value           uniform 0;
+    }
+    cycLeft
+    {
+        type            cyclic;
+        value           uniform 0;
+    }
+    cycRight
+    {
+        type            cyclic;
+        value           uniform 0;
+    }
+    frontAndBack
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/0/epsilon b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/0/epsilon
new file mode 100644
index 0000000000000000000000000000000000000000..529618d2afbba64ffaa99f8f4c6963eaf77895f9
--- /dev/null
+++ b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/0/epsilon
@@ -0,0 +1,55 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      epsilon;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 2 -3 0 0 0 0];
+
+internalField   uniform 0.0449;
+
+boundaryField
+{
+    walls
+    {
+        type            compressible::epsilonWallFunction;
+        value           uniform 0.0449;
+    }
+    inlet
+    {
+        type            fixedValue;
+        value           uniform 0.0449;
+    }
+    outlet
+    {
+        type            zeroGradient;
+    }
+    cycLeft
+    {
+        type            cyclic;
+        value           uniform 0.0449;
+    }
+    cycRight
+    {
+        type            cyclic;
+        value           uniform 0.0449;
+    }
+    frontAndBack
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/0/k b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/0/k
new file mode 100644
index 0000000000000000000000000000000000000000..eed0dcdd366eab874e4fb2dc3ba7e5c542e35b76
--- /dev/null
+++ b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/0/k
@@ -0,0 +1,55 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      k;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 2 -2 0 0 0 0];
+
+internalField   uniform 0.0938;
+
+boundaryField
+{
+    walls
+    {
+        type            compressible::kQRWallFunction;
+        value           uniform 0.0938;
+    }
+    inlet
+    {
+        type            fixedValue;
+        value           uniform 0.0938;
+    }
+    outlet
+    {
+        type            zeroGradient;
+    }
+    cycLeft
+    {
+        type            cyclic;
+        value           uniform 0.0938;
+    }
+    cycRight
+    {
+        type            cyclic;
+        value           uniform 0.0938;
+    }
+    frontAndBack
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/0/mut b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/0/mut
new file mode 100644
index 0000000000000000000000000000000000000000..0ad81e27201c3bcec3bbf206d5abfa4617fc6e28
--- /dev/null
+++ b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/0/mut
@@ -0,0 +1,56 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      mut;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -1 -1 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    walls
+    {
+        type            mutWallFunction;
+        value           uniform 0;
+    }
+    inlet
+    {
+        type            calculated;
+        value           uniform 0;
+    }
+    outlet
+    {
+        type            calculated;
+        value           uniform 0;
+    }
+    cycLeft
+    {
+        type            cyclic;
+        value           uniform 0;
+    }
+    cycRight
+    {
+        type            cyclic;
+        value           uniform 0;
+    }
+    frontAndBack
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/0/p b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/0/p
new file mode 100644
index 0000000000000000000000000000000000000000..55f9cd7aee3de50282b8c4417d9ba21173ddcbe9
--- /dev/null
+++ b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/0/p
@@ -0,0 +1,54 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      p;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -1 -2 0 0 0 0];
+
+internalField   uniform 100000;
+
+boundaryField
+{
+    walls
+    {
+        type            zeroGradient;
+    }
+    inlet
+    {
+        type            zeroGradient;
+    }
+    outlet
+    {
+        type            fixedValue;
+        value           uniform 100000;
+    }
+    cycLeft
+    {
+        type            cyclic;
+        value           uniform 100000;
+    }
+    cycRight
+    {
+        type            cyclic;
+        value           uniform 100000;
+    }
+    frontAndBack
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/Allclean b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/Allclean
new file mode 100755
index 0000000000000000000000000000000000000000..9ded4bdec6e16903b476bd71ca332bf8af748d0e
--- /dev/null
+++ b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/Allclean
@@ -0,0 +1,16 @@
+#!/bin/sh
+set -x
+
+# remove old cell sets
+rm -rf constant/polyMesh/sets
+foamClearPolyMesh
+
+# remove old time folders
+rm -rf 0 *[1-9]*
+
+# remove old log files
+rm -f log*
+
+# copy 0.org to 0
+cp -r 0.org 0
+
diff --git a/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/Allrun b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/Allrun
new file mode 100755
index 0000000000000000000000000000000000000000..701d55dc28c462b8cc7a2743861adff59feafc64
--- /dev/null
+++ b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/Allrun
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+# Source tutorial run functions
+. $WM_PROJECT_DIR/bin/tools/RunFunctions
+
+application="porousExplicitSourceReactingParcelFoam"
+
+# create mesh
+runApplication blockMesh
+
+# create sets
+setSet -batch system/sets.setSet >& log.setSet1
+
+# convert sets to zones
+setsToZones -noFlipMap >& log.setsToZones
+
+# create the first cyclic - lhs of porous zone
+unset FOAM_SETNAN
+createBaffles cycLeft cycLeft -overwrite >& log.createBaffles1
+
+# create the second cyclic - rhs of porous zone
+createBaffles cycRight cycRight -overwrite >& log.createBaffles2
+
+runApplication $application
diff --git a/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/constant/RASProperties b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/constant/RASProperties
new file mode 100644
index 0000000000000000000000000000000000000000..71270c8d7cdd49831a45d2e34e2020fb49265ed1
--- /dev/null
+++ b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/constant/RASProperties
@@ -0,0 +1,169 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      RASProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+RASModel            kEpsilon;
+
+turbulence          on;
+
+printCoeffs         on;
+
+laminarCoeffs
+{
+}
+
+kEpsilonCoeffs
+{
+    // Cmu
+    Cmu              0.09;
+    // C1
+    C1               1.44;
+    // C2
+    C2               1.92;
+    // C3
+    C3               -0.33;
+    // alphah
+    alphah           1;
+    // alphak
+    alphak           1;
+    // alphaEps
+    alphaEps         0.76923;
+}
+
+// RNG k-epsilon model coefficients
+RNGkEpsilonCoeffs
+{
+    // Cmu
+    Cmu              0.0845;
+    // C1
+    C1               1.42;
+    // C2
+    C2               1.68;
+    // C3
+    C3               -0.33;
+    // alphah
+    alphah           1;
+    // alphak
+    alphak           1.39;
+    // alphaEps
+    alphaEps         1.39;
+    // eta0
+    eta0             4.38;
+    // beta
+    beta             0.012;
+}
+
+LaunderSharmaKECoeffs
+{
+    // Cmu
+    Cmu              0.09;
+    // C1
+    C1               1.44;
+    // C2
+    C2               1.92;
+    // C3
+    C3               -0.33;
+    // alphah
+    alphah           1;
+    // alphak
+    alphak           1;
+    // alphaEps
+    alphaEps         0.76923;
+}
+
+// Launder-Reece-Rodi RSTM with wall functions model coefficients
+LRRCoeffs
+{
+    // Cmu
+    Cmu              0.09;
+    // Clrr1
+    Clrr1            1.8;
+    // Clrr2
+    Clrr2            0.6;
+    // C1
+    C1               1.44;
+    // C2
+    C2               1.92;
+    // Cs
+    Cs               0.25;
+    // Ceps
+    Ceps             0.15;
+    // alphah
+    alphah           1;
+    // alphaEps
+    alphaEps         0.76923;
+    // alphaR
+    alphaR           1.22;
+}
+
+LaunderGibsonRSTMCoeffs
+{
+    // Cmu
+    Cmu              0.09;
+    // Clg1
+    Clg1             1.8;
+    // Clg2
+    Clg2             0.6;
+    // C1
+    C1               1.44;
+    // C2
+    C2               1.92;
+    // C1Ref
+    C1Ref            0.5;
+    // C2Ref
+    C2Ref            0.3;
+    // Cs
+    Cs               0.25;
+    // Ceps
+    Ceps             0.15;
+    // alphah
+    alphah           1;
+    // alphaEps
+    alphaEps         0.76923;
+    // alphaR
+    alphaR           1.22;
+}
+
+kOmegaSSTCoeffs
+{
+    alphaK1          0.85034;
+    alphaK2          1.0;
+    alphaOmega1      0.5;
+    alphaOmega2      0.85616;
+    gamma1           0.5532;
+    gamma2           0.4403;
+    beta1            0.0750;
+    beta2            0.0828;
+    betaStar         0.09;
+    a1               0.31;
+    c1               10;
+
+    Cmu              0.09;
+
+    alphah           1;
+}
+
+wallFunctionCoeffs
+{
+    // kappa
+    kappa            0.4187;
+    // E
+    E                9;
+    // Prt
+    Prt              1;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/constant/chemistryProperties b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/constant/chemistryProperties
new file mode 100644
index 0000000000000000000000000000000000000000..9123a87ab7d2aad3c5f07fc31d6ce381b056d0f8
--- /dev/null
+++ b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/constant/chemistryProperties
@@ -0,0 +1,50 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      chemistryProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+rhoChemistryModel  ODEChemistryModel<icoPoly8ThermoPhysics>;
+
+chemistry       off;
+
+turbulentReaction off;
+
+chemistrySolver ode;
+
+initialChemicalTimeStep 1e-07;
+
+sequentialCoeffs
+{
+    cTauChem        0.001;
+    equilibriumRateLimiter off;
+}
+
+EulerImplicitCoeffs
+{
+    cTauChem        0.05;
+    equilibriumRateLimiter off;
+}
+
+odeCoeffs
+{
+    ODESolver       RK;
+    eps             0.05;
+    scale           1;
+}
+
+Cmix            Cmix [ 0 0 0 0 0 0 0 ] 1;
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/constant/environmentalProperties b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/constant/environmentalProperties
new file mode 100644
index 0000000000000000000000000000000000000000..e5124f24528a9aefc741713cd06a11917107de2a
--- /dev/null
+++ b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/constant/environmentalProperties
@@ -0,0 +1,21 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      environmentalProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+g               g [ 0 1 -2 0 0 0 0 ] ( 0 0 0 );
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/constant/parcelInjectionProperties b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/constant/parcelInjectionProperties
new file mode 100644
index 0000000000000000000000000000000000000000..529c8f0749c2c38e599d0dca625759435cf48f72
--- /dev/null
+++ b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/constant/parcelInjectionProperties
@@ -0,0 +1,26 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      scalarListList;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// x y z u v w d rho mDot T cp Y0..YN
+(
+    (0.1 0.32 0.0 0.5 0.25 0.0 0.001 1000 0.2 300 4200 1.0)
+    (0.1 0.44 0.0 0.5 0.1 0.0 0.001 1000 0.2 300 4200 1.0)
+    (0.1 0.56 0.0 0.5 -0.1.0 0.0 0.001 1000 0.2 300 4200 1.0)
+    (0.1 0.68 0.0 0.5 -0.25 0.0 0.001 1000 0.2 300 4200 1.0)
+);
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/constant/particleTrackProperties b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/constant/particleTrackProperties
new file mode 100644
index 0000000000000000000000000000000000000000..1dcc0258d537ffe209e6ce5ea19a7a6a31a6536c
--- /dev/null
+++ b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/constant/particleTrackProperties
@@ -0,0 +1,25 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      particleTrackProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+cloudName       reactingCloud1;
+
+sampleFrequency 1;
+
+maxPositions    1000000;
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/constant/pointMassSourcesProperties b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/constant/pointMassSourcesProperties
new file mode 100644
index 0000000000000000000000000000000000000000..063399d211d5ed531385d746779244fe2a970c8f
--- /dev/null
+++ b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/constant/pointMassSourcesProperties
@@ -0,0 +1,34 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      pointMassSourcesProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+active          false;
+
+pointSources
+(
+    source1
+    {
+        timeStart   0.2;
+        duration    2.0;
+        location    (2.75 0.5 0);
+        fieldData
+        (
+            (H2O     0.01)
+        );
+    }
+);
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/constant/polyMesh/blockMeshDict b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/constant/polyMesh/blockMeshDict
new file mode 100644
index 0000000000000000000000000000000000000000..99b6b4f9111a08de5ed52c51e4ea6908a0dfbfde
--- /dev/null
+++ b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/constant/polyMesh/blockMeshDict
@@ -0,0 +1,113 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant/polyMesh";
+    object      blockMeshDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+convertToMeters 1;
+
+vertices
+(
+    (0.00  0.25  0)    //  0
+    (1.00  0.25  0)    //  1
+    (1.25  0.00  0)    //  2
+    (2.25  0.00  0)    //  3
+    (2.50  0.25  0)    //  4
+    (4.00  0.25  0)    //  5
+
+    (4.00  0.75  0)    //  6
+    (2.50  0.75  0)    //  7
+    (2.25  1.00  0)    //  8
+    (1.25  1.00  0)    //  9
+    (1.00  0.75  0)    // 10
+    (0.00  0.75  0)    // 11
+
+
+    (0.00  0.25  0.1)  // 12
+    (1.00  0.25  0.1)  // 13
+    (1.25  0.00  0.1)  // 14
+    (2.25  0.00  0.1)  // 15
+    (2.50  0.25  0.1)  // 16
+    (4.00  0.25  0.1)  // 17
+
+    (4.00  0.75  0.1)  // 18
+    (2.50  0.75  0.1)  // 19
+    (2.25  1.00  0.1)  // 20
+    (1.25  1.00  0.1)  // 21
+    (1.00  0.75  0.1)  // 22
+    (0.00  0.75  0.1)  // 23
+);
+
+blocks
+(
+    hex ( 0  1 10 11 12 13 22 23) (20 20 1) simpleGrading (1 1 1)
+    hex ( 1  2  9 10 13 14 21 22) ( 8 20 1) simpleGrading (1 1 1)
+    hex ( 2  3  8  9 14 15 20 21) (20 20 1) simpleGrading (1 1 1)
+    hex ( 3  4  7  8 15 16 19 20) ( 8 20 1) simpleGrading (1 1 1)
+    hex ( 4  5  6  7 16 17 18 19) (30 20 1) simpleGrading (1 1 1)
+);
+
+edges
+(
+);
+
+patches
+(
+    wall walls
+    (
+        ( 0  1 13 12)
+        ( 1  2 14 13)
+        ( 2  3 15 14)
+        ( 3  4 16 15)
+        ( 4  5 17 16)
+        ( 6  7 19 18)
+        ( 7  8 20 19)
+        ( 8  9 21 20)
+        ( 9 10 22 21)
+        (10 11 23 22)
+    )
+
+    patch inlet
+    (
+        (11  0 12 23)
+    )
+
+    patch outlet
+    (
+        ( 5  6 18 17)
+    )
+
+    cyclic cycLeft
+    ()
+
+    cyclic cycRight
+    ()
+
+    empty frontAndBack
+    (
+        ( 0 11 10  1)
+        ( 1 10  9  2)
+        ( 2  9  8  3)
+        ( 3  8  7  4)
+        ( 4  7  6  5)
+        (12 13 22 23)
+        (13 14 21 22)
+        (14 15 20 21)
+        (15 16 19 20)
+        (16 17 18 19)
+    )
+);
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/constant/porousZones b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/constant/porousZones
new file mode 100644
index 0000000000000000000000000000000000000000..d4881e37faef085bf267cf142da01aff1055a12f
--- /dev/null
+++ b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/constant/porousZones
@@ -0,0 +1,36 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      porousZones;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+(
+    filter // name of cell zone
+    {
+        coordinateSystem
+        {
+            e1  (1 0 0);
+            e2  (0 1 0);
+        }
+
+        Darcy
+        {
+            d   d [0 -2 0 0 0 0 0] (500000 -1000 -1000);
+            f   f [0 -1 0 0 0 0 0] (0 0 0);
+        }
+    }
+)
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/constant/radiationProperties b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/constant/radiationProperties
new file mode 100644
index 0000000000000000000000000000000000000000..19c0ae1defc736d068c0f5f29ac120c4d50efb48
--- /dev/null
+++ b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/constant/radiationProperties
@@ -0,0 +1,65 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      radiationProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+radiation       off;
+
+radiationModel  none;
+
+solverFreq      10;
+
+noRadiationCoeffs
+{
+}
+
+P1Coeffs
+{
+    C               C [ 0 0 0 0 0 0 0 ] 0;
+}
+
+absorptionEmissionModel binaryAbsorptionEmission;
+
+binaryAbsorptionEmissionCoeffs
+{
+    model1
+    {
+        absorptionEmissionModel constantAbsorptionEmission;
+        constantAbsorptionEmissionCoeffs
+        {
+            a               a [ 0 -1 0 0 0 0 0 ] 0.5;
+            e               e [ 0 -1 0 0 0 0 0 ] 0.5;
+            E               E [ 1 -1 -3 0 0 0 0 ] 0;
+        }
+    }
+    model2
+    {
+        absorptionEmissionModel cloudAbsorptionEmission;
+        cloudAbsorptionEmissionCoeffs
+        {
+            cloudNames      ( coalCloud1 limestoneCloud1 );
+        }
+    }
+}
+
+scatterModel    cloudScatter;
+
+cloudScatterCoeffs
+{
+    cloudNames      ( coalCloud1 limestoneCloud1 );
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/constant/reactingCloud1Positions b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/constant/reactingCloud1Positions
new file mode 100644
index 0000000000000000000000000000000000000000..6d19cbc19bad9ca1c5c8ba0b7c51cd24b0778b37
--- /dev/null
+++ b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/constant/reactingCloud1Positions
@@ -0,0 +1,44 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       vectorField;
+    location    "constant";
+    object      reactingCloud1Positions;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+(
+(0.002 0.002 0.00005)
+(0.004 0.002 0.00005)
+(0.006 0.002 0.00005)
+(0.008 0.002 0.00005)
+(0.010 0.002 0.00005)
+(0.002 0.004 0.00005)
+(0.004 0.004 0.00005)
+(0.006 0.004 0.00005)
+(0.008 0.004 0.00005)
+(0.010 0.004 0.00005)
+(0.002 0.006 0.00005)
+(0.004 0.006 0.00005)
+(0.006 0.006 0.00005)
+(0.008 0.006 0.00005)
+(0.010 0.006 0.00005)
+(0.002 0.008 0.00005)
+(0.004 0.008 0.00005)
+(0.006 0.008 0.00005)
+(0.008 0.008 0.00005)
+(0.010 0.008 0.00005)
+(0.002 0.010 0.00005)
+(0.004 0.010 0.00005)
+(0.006 0.010 0.00005)
+(0.008 0.010 0.00005)
+(0.010 0.010 0.00005)
+)
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/constant/reactingCloud1Properties b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/constant/reactingCloud1Properties
new file mode 100644
index 0000000000000000000000000000000000000000..76e55a95ea9d854c439e0880f8f9548284ad34d6
--- /dev/null
+++ b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/constant/reactingCloud1Properties
@@ -0,0 +1,167 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      reactingCloud1Properties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+InjectionModel  ReactingLookupTableInjection;
+
+DragModel       SphereDrag;
+
+DispersionModel none;
+
+PatchInteractionModel LocalInteraction;
+
+HeatTransferModel RanzMarshall;
+
+CompositionModel SinglePhaseMixture;
+
+PhaseChangeModel LiquidEvaporation;
+
+PostProcessingModel PatchPostProcessing;
+
+radiation       off;
+
+coupled         true;
+
+cellValueSourceCorrection on;
+
+parcelTypeId    1;
+
+constantProperties
+{
+    rhoMin          rhoMin [ 1 -3 0 0 0 ] 1e-15;
+    TMin            TMin [ 0 0 0 1 0 ] 200;
+    pMin            pMin [ 1 -1 2 0 0 ] 1000;
+    rho0            rho0 [ 1 -3 0 0 0 ] 1000;
+    minParticleMass minParticleMass [ 1 0 0 0 0 ] 1e-15;
+    T0              T0 [ 0 0 0 1 0 ] 300;
+    cp0             cp0 [ 0 2 -2 -1 0 ] 4100;
+    epsilon0        epsilon0 [ 0 0 0 0 0 ] 1;
+    f0              f0 [ 0 0 0 0 0 ] 0.5;
+    Tvap            Tvap [ 0 0 0 1 0 ] 273;
+    constantVolume  false;
+}
+
+interpolationSchemes
+{
+    rho             cell;
+    U               cellPointFace;
+    mu              cell;
+    T               cell;
+    Cp              cell;
+    p               cell;
+}
+
+integrationSchemes
+{
+    U               Euler;
+    T               Analytical;
+}
+
+particleForces
+{
+    gravity         on;
+    virtualMass     off;
+    pressureGradient off;
+}
+
+ManualInjectionCoeffs
+{
+    massTotal       massTotal [ 1 0 0 0 0 ] 1e-2;
+    parcelBasisType mass;
+    SOI             0;
+    positionsFile   "reactingCloud1Positions";
+    U0              ( 0 0 0 );
+    parcelPDF
+    {
+        pdfType         uniform;
+        uniformPDF
+        {
+            minValue        1e-04;
+            maxValue        1e-04;
+        }
+    }
+}
+
+ReactingLookupTableInjectionCoeffs
+{
+    massTotal       massTotal [ 1 0 0 0 0 ] 1e-2;
+    parcelBasisType mass;
+    SOI             0.5;
+    inputFile       "parcelInjectionProperties";
+    duration        1.0;
+    parcelsPerSecond 250;
+}
+
+
+StandardWallInteractionCoeffs
+{
+    e               e [ 0 0 0 0 0 ] 1;
+    mu              mu [ 0 0 0 0 0 ] 0;
+}
+
+LocalInteractionCoeffs
+{
+    patches
+    (
+        walls
+        {
+            e       1;
+            mu      0;
+        }
+        cycLeft
+        {
+            e       1;
+            mu      0;
+        }
+    );
+}
+
+RanzMarshallCoeffs
+{
+    Pr              Pr [ 0 0 0 0 0 ] 0.7;
+}
+
+SinglePhaseMixtureCoeffs
+{
+    phases
+    (
+        liquid
+        {
+            H2O     1;
+        }
+    );
+}
+
+LiquidEvaporationCoeffs
+{
+    activeLiquids
+    (
+        H2O
+    );
+}
+
+PatchPostProcessingCoeffs
+{
+    maxStoredParcels 20;
+
+    patches
+    (
+        cycLeft
+    );
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/constant/reactions b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/constant/reactions
new file mode 100644
index 0000000000000000000000000000000000000000..45f51fa38f951d4b102156822f97ba53ee005efb
--- /dev/null
+++ b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/constant/reactions
@@ -0,0 +1,10 @@
+species
+(
+    N2
+    O2
+    H2O
+);
+
+reactions
+(
+);
diff --git a/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/constant/thermo.incompressiblePoly b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/constant/thermo.incompressiblePoly
new file mode 100644
index 0000000000000000000000000000000000000000..4ca40c05fb3aacf603b749e1f3630ca8cb5bc778
--- /dev/null
+++ b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/constant/thermo.incompressiblePoly
@@ -0,0 +1,143 @@
+(
+N2 N2   1   28.0134
+    rhoPolynomial
+    (
+        3.88E+000
+       -1.64E-002
+        3.18E-005
+       -2.89E-008
+        9.90E-012
+        0
+        0
+        0
+    )
+    0.0                                 // Heat of formation
+    0.0                                 // Standard entropy
+    cpPolynomial
+    (
+        2.75E+004
+        1.12E+001
+       -3.12E-002
+        4.45E-005
+       -1.92E-008
+        0
+        0
+        0
+    )
+    muPolynomial
+    (
+        1.54E-006
+        6.15E-008
+       -1.81E-011
+        0
+        0
+        0
+        0
+        0
+    )
+    kappaPolynomial
+    (
+        3.15E-003
+        8.49E-005
+       -1.25E-008
+        0
+        0
+        0
+        0
+        0
+    )
+O2 O2   1   31.9988
+    rhoPolynomial
+    (
+        4.43E+000
+       -1.87E-002
+        3.64E-005
+       -3.30E-008
+        1.13E-011
+        0
+        0
+        0
+    )
+    0.0                                 // Heat of formation
+    0.0                                 // Standard entropy
+    cpPolynomial
+    (
+        2.67E+004
+        9.93E+000
+       -7.09E-003
+        1.45E-005
+       -9.13E-009
+        0
+        0
+        0
+    )
+    muPolynomial
+    (
+        1.54E-006
+        6.15E-008
+       -1.81E-011
+        0
+        0
+        0
+        0
+        0
+    )
+    kappaPolynomial
+    (
+        2.09E-004
+        8.52E-005
+       -1.49E-008
+        0
+        0
+        0
+        0
+        0
+    )
+H2O H2O 1   18.0153
+    rhoPolynomial
+    (
+        2.49E+000
+       -1.05E-002
+        2.03E-005
+       -1.84E-008
+        6.28E-012
+        0
+        0
+        0
+    )
+    -241.8                                 // Heat of formation
+    0.0                                    // Standard entropy
+    cpPolynomial
+    (
+        2.85E+004
+        2.63E+001
+       -4.63E-002
+        5.11E-005
+       -1.83E-008
+        0
+        0
+        0
+    )
+    muPolynomial
+    (
+        1.54E-006
+        6.15E-008
+       -1.81E-011
+        0
+        0
+        0
+        0
+        0
+    )
+    kappaPolynomial
+    (
+        3.79E-003
+        1.53E-004
+       -1.22E-008
+        0
+        0
+        0
+        0
+        0
+    )
+)
diff --git a/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/constant/thermophysicalProperties b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/constant/thermophysicalProperties
new file mode 100644
index 0000000000000000000000000000000000000000..5946130cbb6911e7d29b6e602c4baa5419711155
--- /dev/null
+++ b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/constant/thermophysicalProperties
@@ -0,0 +1,40 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      thermophysicalProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+thermoType      hRhoMixtureThermo<reactingMixture<icoPoly8ThermoPhysics>>;
+
+chemistryReader foamChemistryReader;
+
+foamChemistryFile "$FOAM_CASE/constant/reactions";
+
+foamChemistryThermoFile "$FOAM_CASE/constant/thermo.incompressiblePoly";
+
+liquidComponents
+(
+    H2O
+);
+H2O             H2O defaultCoeffs;
+
+solidComponents
+(
+);
+
+inertSpecie     N2;
+
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/constant/turbulenceProperties b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/constant/turbulenceProperties
new file mode 100644
index 0000000000000000000000000000000000000000..47c046d714367bdde68f84c32fdf37498961915b
--- /dev/null
+++ b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/constant/turbulenceProperties
@@ -0,0 +1,20 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      turbulenceProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+simulationType  RASModel;
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/system/cellSetDict b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/system/cellSetDict
new file mode 100644
index 0000000000000000000000000000000000000000..42393046f74652f8a8f671aac5d75b5b0504df03
--- /dev/null
+++ b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/system/cellSetDict
@@ -0,0 +1,32 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      cellSetDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+name filter;
+
+action new;
+
+topoSetSources
+(
+    // Cells with cell centre within box
+    boxToCell
+    {
+       box   (1.5 -1 -1) (2 1 1);
+    }
+);
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/system/controlDict b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/system/controlDict
new file mode 100644
index 0000000000000000000000000000000000000000..a1aa89cd091f1ff7050767fd9afc25fdabc216b7
--- /dev/null
+++ b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/system/controlDict
@@ -0,0 +1,53 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      controlDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+startFrom       startTime;
+
+startTime       0;
+
+stopAt          endTime;
+
+endTime         5;
+
+deltaT          0.001;
+
+writeControl    adjustableRunTime;
+
+writeInterval   0.1;
+
+purgeWrite      0;
+
+writeFormat     ascii;
+
+writePrecision  10;
+
+writeCompression uncompressed;
+
+timeFormat      general;
+
+timePrecision   6;
+
+runTimeModifiable yes;
+
+adjustTimeStep  yes;
+
+maxCo           1.0;
+
+maxDeltaT       1;
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/system/decomposeParDict b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/system/decomposeParDict
new file mode 100644
index 0000000000000000000000000000000000000000..c8ec7396879b1092049262bdd17752ccecf8f8bf
--- /dev/null
+++ b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/system/decomposeParDict
@@ -0,0 +1,50 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      decomposeParDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+numberOfSubdomains 4;
+
+method          metis;
+
+preserveFaceZones
+(
+    cycLeft
+    cycRight
+);
+
+simpleCoeffs
+{
+    n               ( 2 2 1 );
+    delta           0.001;
+}
+
+hierarchicalCoeffs
+{
+    n               ( 1 1 1 );
+    delta           0.001;
+    order           xyz;
+}
+
+metisCoeffs
+{}
+
+manualCoeffs
+{
+    dataFile        "";
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/system/fvSchemes b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/system/fvSchemes
new file mode 100644
index 0000000000000000000000000000000000000000..99267208eae1f5130781bee35206d73e203fc64a
--- /dev/null
+++ b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/system/fvSchemes
@@ -0,0 +1,72 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      fvSchemes;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ddtSchemes
+{
+    default         Euler;
+}
+
+gradSchemes
+{
+    default         Gauss linear;
+    grad(p)         Gauss linear;
+}
+
+divSchemes
+{
+    default         none;
+    div(phi,U)      Gauss upwind;
+    div(phid,p)     Gauss upwind;
+    div(phiU,p)     Gauss linear;
+    div(phi,h)      Gauss upwind;
+    div(phi,k)      Gauss upwind;
+    div(phi,epsilon) Gauss upwind;
+    div(U)          Gauss linear;
+    div((muEff*dev2(grad(U).T()))) Gauss linear;
+    div(phi,Yi_h)   Gauss upwind;
+}
+
+laplacianSchemes
+{
+    default         Gauss linear corrected;
+    laplacian(muEff,U) Gauss linear corrected;
+    laplacian(mut,U) Gauss linear corrected;
+    laplacian(DkEff,k) Gauss linear corrected;
+    laplacian(DepsilonEff,epsilon) Gauss linear corrected;
+    laplacian(DREff,R) Gauss linear corrected;
+    laplacian((rho*(1|A(U))),p) Gauss linear corrected;
+    laplacian(alphaEff,h) Gauss linear corrected;
+}
+
+interpolationSchemes
+{
+    default         linear;
+}
+
+snGradSchemes
+{
+    default         corrected;
+}
+
+fluxRequired
+{
+    default         no;
+    p               ;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/system/fvSolution b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/system/fvSolution
new file mode 100644
index 0000000000000000000000000000000000000000..e01611490e05bff98b886adef03b424b5e8f8569
--- /dev/null
+++ b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/system/fvSolution
@@ -0,0 +1,153 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      fvSolution;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+solvers
+{
+    rho
+    {
+        solver          PCG;
+        preconditioner  DIC;
+        tolerance       1e-05;
+        relTol          0;
+    };
+    U
+    {
+        solver          PBiCG;
+        preconditioner  DILU;
+        tolerance       1e-05;
+        relTol          0;
+    };
+    p
+    {
+	solver           GAMG;
+        tolerance        0;
+        relTol           0.1;
+
+        smoother         GaussSeidel;
+        nPreSweeps       0;
+        nPostSweeps      2;
+
+        cacheAgglomeration true;
+
+        nCellsInCoarsestLevel 10;
+        agglomerator     faceAreaPair;
+        mergeLevels      1;
+    };
+    pFinal
+    {
+        solver           GAMG;
+        tolerance        1e-6;
+        relTol           0;
+
+        smoother         GaussSeidel;
+        nPreSweeps       0;
+        nPostSweeps      2;
+
+        cacheAgglomeration true;
+
+        nCellsInCoarsestLevel 10;
+        agglomerator     faceAreaPair;
+        mergeLevels      1;
+    };
+    G
+    {
+        solver          PCG;
+        preconditioner  DIC;
+        tolerance       1e-05;
+        relTol          0;
+    };
+    Yi
+    {
+        solver          PBiCG;
+        preconditioner  DILU;
+        tolerance       1e-06;
+        relTol          0;
+    };
+    O2
+    {
+        solver          PBiCG;
+        preconditioner  DILU;
+        tolerance       1e-06;
+        relTol          0;
+    };
+    N2
+    {
+        solver          PBiCG;
+        preconditioner  DILU;
+        tolerance       1e-06;
+        relTol          0;
+    };
+    H2O
+    {
+        solver          PBiCG;
+        preconditioner  DILU;
+        tolerance       1e-06;
+        relTol          0;
+    };
+    h
+    {
+        solver          PBiCG;
+        preconditioner  DILU;
+        tolerance       1e-05;
+        relTol          0;
+    };
+    k
+    {
+        solver          PBiCG;
+        preconditioner  DILU;
+        tolerance       1e-05;
+        relTol          0;
+    };
+    epsilon
+    {
+        solver          PBiCG;
+        preconditioner  DILU;
+        tolerance       1e-05;
+        relTol          0;
+    };
+}
+
+PISO
+{
+    transonic       no;
+    nOuterCorrectors 1;
+    nCorrectors     2;
+    nNonOrthogonalCorrectors 0;
+    momentumPredictor yes;
+//    nUCorrectors    2;
+}
+
+additional
+{
+    dpdt            true;
+    hWork           true;
+    eWork           true;
+}
+
+relaxationFactors
+{
+/*
+    U               1;
+    k               1;
+    kepsilon        1;
+    h               1;
+    rho             1;
+    p               1;
+*/
+}
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/system/sets.setSet b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/system/sets.setSet
new file mode 100644
index 0000000000000000000000000000000000000000..b6137ed52b04b0259a4cc4c5617c95a634d14e12
--- /dev/null
+++ b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/system/sets.setSet
@@ -0,0 +1,10 @@
+cellSet filter new boxToCell (1.5 -10 -10) (2 10 10)
+cellSet leftFluid new boxToCell (-10 -10 -10) (1.5 10 10)
+cellSet rightFluid new boxToCell (2 -1 -1) (10 10 10)
+
+faceSet cycLeft new cellToFace filter all
+faceSet cycLeft subset cellToFace leftFluid all
+
+faceSet cycRight new cellToFace filter all
+faceSet cycRight subset cellToFace rightFluid all
+
diff --git a/tutorials/lagrangian/reactingParcelFoam/evaporationTest/0/G b/tutorials/lagrangian/reactingParcelFoam/evaporationTest/0/G
new file mode 100644
index 0000000000000000000000000000000000000000..fa160e6bb38aee4a10d101cb0dfe2a75b7f5693a
--- /dev/null
+++ b/tutorials/lagrangian/reactingParcelFoam/evaporationTest/0/G
@@ -0,0 +1,37 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      G;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 0 -3 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    walls
+    {
+        type            MarshakRadiation;
+        T               T;
+        emissivity      1.0;
+        value           uniform 0;
+    }
+    frontAndBack
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/reactingParcelFoam/evaporationTest/0/H2O b/tutorials/lagrangian/reactingParcelFoam/evaporationTest/0/H2O
new file mode 100644
index 0000000000000000000000000000000000000000..a5001202eaca379918e2ebd0908ea999240d9948
--- /dev/null
+++ b/tutorials/lagrangian/reactingParcelFoam/evaporationTest/0/H2O
@@ -0,0 +1,36 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      H2O;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 0.0;
+
+boundaryField
+{
+    walls
+    {
+        type            zeroGradient;
+    }
+    frontAndBack
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/reactingParcelFoam/evaporationTest/0/N2 b/tutorials/lagrangian/reactingParcelFoam/evaporationTest/0/N2
new file mode 100644
index 0000000000000000000000000000000000000000..61a0a0cd9dbcc3734588bd1bc951f94d506d2c13
--- /dev/null
+++ b/tutorials/lagrangian/reactingParcelFoam/evaporationTest/0/N2
@@ -0,0 +1,36 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      N2;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 0.79;
+
+boundaryField
+{
+    walls
+    {
+        type            zeroGradient;
+    }
+    frontAndBack
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/reactingParcelFoam/evaporationTest/0/O2 b/tutorials/lagrangian/reactingParcelFoam/evaporationTest/0/O2
new file mode 100644
index 0000000000000000000000000000000000000000..3927d8183c89e4e1d0f46210e2f16249c2a27f33
--- /dev/null
+++ b/tutorials/lagrangian/reactingParcelFoam/evaporationTest/0/O2
@@ -0,0 +1,36 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      O2;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 0.21;
+
+boundaryField
+{
+    walls
+    {
+        type            zeroGradient;
+    }
+    frontAndBack
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/reactingParcelFoam/evaporationTest/0/T b/tutorials/lagrangian/reactingParcelFoam/evaporationTest/0/T
new file mode 100644
index 0000000000000000000000000000000000000000..4a49016ccd8379e5d47f5178f6a15f918e9b816f
--- /dev/null
+++ b/tutorials/lagrangian/reactingParcelFoam/evaporationTest/0/T
@@ -0,0 +1,35 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    location    "0";
+    class       volScalarField;
+    object      T;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 1 0 0 0];
+
+internalField   uniform 400;
+
+boundaryField
+{
+    walls
+    {
+        type            fixedValue;
+        value           uniform 400;
+    }
+    frontAndBack
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/reactingParcelFoam/evaporationTest/0/U b/tutorials/lagrangian/reactingParcelFoam/evaporationTest/0/U
new file mode 100644
index 0000000000000000000000000000000000000000..2b02dd199a657910b74a6c5b6368595cfe4103f9
--- /dev/null
+++ b/tutorials/lagrangian/reactingParcelFoam/evaporationTest/0/U
@@ -0,0 +1,35 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    location    "0";
+    class       volVectorField;
+    object      U;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -1 0 0 0 0];
+
+internalField   uniform (0 0 0);
+
+boundaryField
+{
+    walls
+    {
+        type            fixedValue;
+        value           uniform (0 0 0);
+    }
+    frontAndBack
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/reactingParcelFoam/evaporationTest/0/p b/tutorials/lagrangian/reactingParcelFoam/evaporationTest/0/p
new file mode 100644
index 0000000000000000000000000000000000000000..9563def1f1e547eb01ecf34203eeea0580b46f2e
--- /dev/null
+++ b/tutorials/lagrangian/reactingParcelFoam/evaporationTest/0/p
@@ -0,0 +1,34 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      p;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -1 -2 0 0 0 0];
+
+internalField   uniform 100000;
+
+boundaryField
+{
+    walls
+    {
+        type            zeroGradient;
+    }
+    frontAndBack
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/reactingParcelFoam/evaporationTest/chemkin/chem.inp b/tutorials/lagrangian/reactingParcelFoam/evaporationTest/chemkin/chem.inp
new file mode 100644
index 0000000000000000000000000000000000000000..e1c66808259097c7678e10a52072760041181bec
--- /dev/null
+++ b/tutorials/lagrangian/reactingParcelFoam/evaporationTest/chemkin/chem.inp
@@ -0,0 +1,6 @@
+ELEMENTS
+O  H  N
+END
+SPECIES
+N2  O2 H2O
+END
diff --git a/tutorials/lagrangian/reactingParcelFoam/evaporationTest/chemkin/foam.dat b/tutorials/lagrangian/reactingParcelFoam/evaporationTest/chemkin/foam.dat
new file mode 100644
index 0000000000000000000000000000000000000000..36ef32431218784d9c10aa1609870debbbbb5924
--- /dev/null
+++ b/tutorials/lagrangian/reactingParcelFoam/evaporationTest/chemkin/foam.dat
@@ -0,0 +1,17 @@
+(
+O2 O2   1   31.9988
+    200 5000    1000
+    3.69758 0.00061352 -1.25884e-07 1.77528e-11 -1.13644e-15 -1233.93 3.18917
+    3.21294 0.00112749 -5.75615e-07 1.31388e-09 -8.76855e-13 -1005.25 6.03474
+    1.67212e-06 170.672
+H2O H2O 1   18.0153
+    200 5000    1000
+    2.67215 0.00305629 -8.73026e-07 1.201e-10 -6.39162e-15 -29899.2 6.86282
+    3.38684 0.00347498 -6.3547e-06 6.96858e-09 -2.50659e-12 -30208.1 2.59023
+    1.67212e-06 170.672
+N2 N2   1   28.0134
+    200 5000    1000
+    2.92664 0.00148798 -5.68476e-07 1.0097e-10 -6.75335e-15 -922.798 5.98053
+    3.29868 0.00140824 -3.96322e-06 5.64152e-09 -2.44486e-12 -1020.9 3.95037
+    1.67212e-06 170.672
+)
diff --git a/tutorials/lagrangian/reactingParcelFoam/evaporationTest/chemkin/foam.inp b/tutorials/lagrangian/reactingParcelFoam/evaporationTest/chemkin/foam.inp
new file mode 100644
index 0000000000000000000000000000000000000000..80d66f62c04dbc0e5638ad8912f02619e526e7be
--- /dev/null
+++ b/tutorials/lagrangian/reactingParcelFoam/evaporationTest/chemkin/foam.inp
@@ -0,0 +1,11 @@
+species
+(
+    O2
+    H2O
+    N2
+)
+;
+
+reactions
+(
+);
diff --git a/tutorials/lagrangian/reactingParcelFoam/evaporationTest/chemkin/therm.dat b/tutorials/lagrangian/reactingParcelFoam/evaporationTest/chemkin/therm.dat
new file mode 100644
index 0000000000000000000000000000000000000000..2a896be3987daf9b20db6bff6b4f7c67b8c6e4c8
--- /dev/null
+++ b/tutorials/lagrangian/reactingParcelFoam/evaporationTest/chemkin/therm.dat
@@ -0,0 +1,15 @@
+THERMO ALL
+   200.000  1000.000  5000.000
+H2O                20387H   2O   1          G  0200.00   5000.00  1000.00      1
+ 0.02672146E+02 0.03056293E-01-0.08730260E-05 0.01200996E-08-0.06391618E-13    2
+-0.02989921E+06 0.06862817E+02 0.03386842E+02 0.03474982E-01-0.06354696E-04    3
+ 0.06968581E-07-0.02506588E-10-0.03020811E+06 0.02590233E+02                   4
+N2                121286N   2               G  0200.00   5000.00  1000.00      1
+ 0.02926640E+02 0.01487977E-01-0.05684761E-05 0.01009704E-08-0.06753351E-13    2
+-0.09227977E+04 0.05980528E+02 0.03298677E+02 0.01408240E-01-0.03963222E-04    3
+ 0.05641515E-07-0.02444855E-10-0.01020900E+05 0.03950372E+02                   4
+O2                121386O   2               G  0200.00   5000.00  1000.00      1
+ 0.03697578E+02 0.06135197E-02-0.01258842E-05 0.01775281E-09-0.01136435E-13    2
+-0.01233930E+05 0.03189166E+02 0.03212936E+02 0.01127486E-01-0.05756150E-05    3
+ 0.01313877E-07-0.08768554E-11-0.01005249E+05 0.06034738E+02                   4
+END
diff --git a/tutorials/lagrangian/reactingParcelFoam/evaporationTest/constant/chemistryProperties b/tutorials/lagrangian/reactingParcelFoam/evaporationTest/constant/chemistryProperties
new file mode 100644
index 0000000000000000000000000000000000000000..cbffc12e84975d2b2e7be95277458e5042f53ea7
--- /dev/null
+++ b/tutorials/lagrangian/reactingParcelFoam/evaporationTest/constant/chemistryProperties
@@ -0,0 +1,49 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      chemistryProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+psiChemistryModel ODEChemistryModel<gasThermoPhysics>;
+
+chemistry       off;
+
+turbulentReaction off;
+
+chemistrySolver ode;
+
+initialChemicalTimeStep 1e-07;
+
+sequentialCoeffs
+{
+    cTauChem        0.001;
+}
+
+EulerImplicitCoeffs
+{
+    cTauChem        0.05;
+    equilibriumRateLimiter off;
+}
+
+odeCoeffs
+{
+    ODESolver       RK;
+    eps             0.05;
+    scale           1;
+}
+
+Cmix            Cmix [ 0 0 0 0 0 0 0 ] 1;
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/reactingParcelFoam/evaporationTest/constant/environmentalProperties b/tutorials/lagrangian/reactingParcelFoam/evaporationTest/constant/environmentalProperties
new file mode 100644
index 0000000000000000000000000000000000000000..e5124f24528a9aefc741713cd06a11917107de2a
--- /dev/null
+++ b/tutorials/lagrangian/reactingParcelFoam/evaporationTest/constant/environmentalProperties
@@ -0,0 +1,21 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      environmentalProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+g               g [ 0 1 -2 0 0 0 0 ] ( 0 0 0 );
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/reactingParcelFoam/evaporationTest/constant/polyMesh/blockMeshDict b/tutorials/lagrangian/reactingParcelFoam/evaporationTest/constant/polyMesh/blockMeshDict
new file mode 100644
index 0000000000000000000000000000000000000000..68e44fead41bca4eccc385d092ad5a424c0b37f9
--- /dev/null
+++ b/tutorials/lagrangian/reactingParcelFoam/evaporationTest/constant/polyMesh/blockMeshDict
@@ -0,0 +1,61 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant/polyMesh";
+    object      blockMeshDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+convertToMeters 0.001;
+
+vertices
+(
+    ( 0  0  0)
+    (12  0  0)
+    (12 12  0)
+    ( 0 12  0)
+    ( 0  0  1)
+    (12  0  1)
+    (12 12  1)
+    ( 0 12  1)
+);
+
+blocks
+(
+    hex (0 1 2 3 4 5 6 7) (20 20 1) simpleGrading (1 1 1)
+);
+
+edges
+(
+);
+
+patches
+(
+    wall walls
+    (
+        (3 7 6 2)
+        (0 4 7 3)
+        (2 6 5 1)
+        (1 5 4 0)
+    )
+    empty frontAndBack
+    (
+        (0 3 2 1)
+        (4 5 6 7)
+    )
+);
+
+mergePatchPairs
+(
+);
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/reactingParcelFoam/evaporationTest/constant/radiationProperties b/tutorials/lagrangian/reactingParcelFoam/evaporationTest/constant/radiationProperties
new file mode 100644
index 0000000000000000000000000000000000000000..ca03722b1cc634848a57607c2583bbf86f60461a
--- /dev/null
+++ b/tutorials/lagrangian/reactingParcelFoam/evaporationTest/constant/radiationProperties
@@ -0,0 +1,65 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      radiationProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+radiation       off;
+
+radiationModel  none;
+
+solverFreq      10;
+
+noRadiation
+{
+}
+
+P1Coeffs
+{
+    C               C [ 0 0 0 0 0 0 0 ] 0;
+}
+
+absorptionEmissionModel binaryAbsorptionEmission;
+
+binaryAbsorptionEmissionCoeffs
+{
+    model1
+    {
+        absorptionEmissionModel constantAbsorptionEmission;
+        constantAbsorptionEmissionCoeffs
+        {
+            a               a [ 0 -1 0 0 0 0 0 ] 0.5;
+            e               e [ 0 -1 0 0 0 0 0 ] 0.5;
+            E               E [ 1 -1 -3 0 0 0 0 ] 0;
+        }
+    }
+    model2
+    {
+        absorptionEmissionModel cloudAbsorptionEmission;
+        cloudAbsorptionEmissionCoeffs
+        {
+            cloudNames      ( coalCloud1 limestoneCloud1 );
+        }
+    }
+}
+
+scatterModel    cloudScatter;
+
+cloudScatterCoeffs
+{
+    cloudNames      ( coalCloud1 limestoneCloud1 );
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/reactingParcelFoam/evaporationTest/constant/reactingCloud1Positions b/tutorials/lagrangian/reactingParcelFoam/evaporationTest/constant/reactingCloud1Positions
new file mode 100644
index 0000000000000000000000000000000000000000..6d19cbc19bad9ca1c5c8ba0b7c51cd24b0778b37
--- /dev/null
+++ b/tutorials/lagrangian/reactingParcelFoam/evaporationTest/constant/reactingCloud1Positions
@@ -0,0 +1,44 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       vectorField;
+    location    "constant";
+    object      reactingCloud1Positions;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+(
+(0.002 0.002 0.00005)
+(0.004 0.002 0.00005)
+(0.006 0.002 0.00005)
+(0.008 0.002 0.00005)
+(0.010 0.002 0.00005)
+(0.002 0.004 0.00005)
+(0.004 0.004 0.00005)
+(0.006 0.004 0.00005)
+(0.008 0.004 0.00005)
+(0.010 0.004 0.00005)
+(0.002 0.006 0.00005)
+(0.004 0.006 0.00005)
+(0.006 0.006 0.00005)
+(0.008 0.006 0.00005)
+(0.010 0.006 0.00005)
+(0.002 0.008 0.00005)
+(0.004 0.008 0.00005)
+(0.006 0.008 0.00005)
+(0.008 0.008 0.00005)
+(0.010 0.008 0.00005)
+(0.002 0.010 0.00005)
+(0.004 0.010 0.00005)
+(0.006 0.010 0.00005)
+(0.008 0.010 0.00005)
+(0.010 0.010 0.00005)
+)
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/reactingParcelFoam/evaporationTest/constant/reactingCloud1Properties b/tutorials/lagrangian/reactingParcelFoam/evaporationTest/constant/reactingCloud1Properties
new file mode 100644
index 0000000000000000000000000000000000000000..6a53da3143fdf612841edcd3042fd4a4f2b68737
--- /dev/null
+++ b/tutorials/lagrangian/reactingParcelFoam/evaporationTest/constant/reactingCloud1Properties
@@ -0,0 +1,128 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      reactingCloud1Properties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+InjectionModel  ManualInjection;
+
+DragModel       SphereDrag;
+
+DispersionModel none;
+
+PatchInteractionModel StandardWallInteraction;
+
+HeatTransferModel RanzMarshall;
+
+CompositionModel SinglePhaseMixture;
+
+PhaseChangeModel LiquidEvaporation;
+
+PostProcessingModel none;
+
+radiation       off;
+
+coupled         true;
+
+cellValueSourceCorrection on;
+
+parcelTypeId    1;
+
+constantProperties
+{
+    rhoMin          rhoMin [ 1 -3 0 0 0 ] 1e-15;
+    TMin            TMin [ 0 0 0 1 0 ] 200;
+    pMin            pMin [ 1 -1 2 0 0 ] 1000;
+    rho0            rho0 [ 1 -3 0 0 0 ] 1000;
+    minParticleMass minParticleMass [ 1 0 0 0 0 ] 1e-15;
+    T0              T0 [ 0 0 0 1 0 ] 300;
+    cp0             cp0 [ 0 2 -2 -1 0 ] 4187;
+    epsilon0        epsilon0 [ 0 0 0 0 0 ] 1;
+    f0              f0 [ 0 0 0 0 0 ] 0.5;
+    Tvap            Tvap [ 0 0 0 1 0 ] 273;
+    constantVolume  false;
+}
+
+interpolationSchemes
+{
+    rho             cell;
+    U               cellPointFace;
+    mu              cell;
+    T               cell;
+    Cp              cell;
+    p               cell;
+}
+
+integrationSchemes
+{
+    U               Euler;
+    T               Analytical;
+}
+
+particleForces
+{
+    gravity         on;
+    virtualMass     off;
+    pressureGradient off;
+}
+
+ManualInjectionCoeffs
+{
+    massTotal       massTotal [ 1 0 0 0 0 ] 1e-8;
+    parcelBasisType mass;
+    SOI             0;
+    positionsFile   "reactingCloud1Positions";
+    U0              ( 0 0 0 );
+    parcelPDF
+    {
+        pdfType         uniform;
+        uniformPDF
+        {
+            minValue        1e-04;
+            maxValue        1e-04;
+        }
+    }
+}
+
+StandardWallInteractionCoeffs
+{
+    e               e [ 0 0 0 0 0 ] 1;
+    mu              mu [ 0 0 0 0 0 ] 0;
+}
+
+RanzMarshallCoeffs
+{
+    Pr              Pr [ 0 0 0 0 0 ] 0.7;
+}
+
+SinglePhaseMixtureCoeffs
+{
+    phases
+    (
+        liquid
+        {
+            H2O 1;
+        }
+    );
+}
+
+LiquidEvaporationCoeffs
+{
+    activeLiquids
+    (
+        H2O
+    );
+}
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/reactingParcelFoam/evaporationTest/constant/thermophysicalProperties b/tutorials/lagrangian/reactingParcelFoam/evaporationTest/constant/thermophysicalProperties
new file mode 100644
index 0000000000000000000000000000000000000000..6e80104f13cf28f82be1e2f96f7bde1019e2039c
--- /dev/null
+++ b/tutorials/lagrangian/reactingParcelFoam/evaporationTest/constant/thermophysicalProperties
@@ -0,0 +1,39 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      thermophysicalProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+thermoType      hPsiMixtureThermo<reactingMixture<gasThermoPhysics>>;
+
+chemistryReader foamChemistryReader;
+
+foamChemistryFile "$FOAM_CASE/chemkin/foam.inp";
+
+foamChemistryThermoFile "$FOAM_CASE/chemkin/foam.dat";
+
+liquidComponents
+(
+    H2O
+);
+
+solidComponents
+();
+
+inertSpecie     N2;
+
+H2O             H2O defaultCoeffs;
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/reactingParcelFoam/evaporationTest/constant/turbulenceProperties b/tutorials/lagrangian/reactingParcelFoam/evaporationTest/constant/turbulenceProperties
new file mode 100644
index 0000000000000000000000000000000000000000..974e568fa84afa295d535b90a50fdb79826892b7
--- /dev/null
+++ b/tutorials/lagrangian/reactingParcelFoam/evaporationTest/constant/turbulenceProperties
@@ -0,0 +1,21 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      turbulenceProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+simulationType  laminar;
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/reactingParcelFoam/evaporationTest/system/controlDict b/tutorials/lagrangian/reactingParcelFoam/evaporationTest/system/controlDict
new file mode 100644
index 0000000000000000000000000000000000000000..fb4a4c45a761f802494c7437a226768a67cce452
--- /dev/null
+++ b/tutorials/lagrangian/reactingParcelFoam/evaporationTest/system/controlDict
@@ -0,0 +1,53 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      controlDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+startFrom       startTime;
+
+startTime       0;
+
+stopAt          endTime;
+
+endTime         1;
+
+deltaT          0.001;
+
+writeControl    adjustableRunTime;
+
+writeInterval   0.1;
+
+purgeWrite      0;
+
+writeFormat     ascii;
+
+writePrecision  10;
+
+writeCompression uncompressed;
+
+timeFormat      general;
+
+timePrecision   6;
+
+runTimeModifiable yes;
+
+adjustTimeStep  yes;
+
+maxCo           0.3;
+
+maxDeltaT       1e-3;
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/reactingParcelFoam/evaporationTest/system/decomposeParDict b/tutorials/lagrangian/reactingParcelFoam/evaporationTest/system/decomposeParDict
new file mode 100644
index 0000000000000000000000000000000000000000..e9784a98d78f4c2d7f0435a759a78ad3f30a0226
--- /dev/null
+++ b/tutorials/lagrangian/reactingParcelFoam/evaporationTest/system/decomposeParDict
@@ -0,0 +1,50 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      decomposeParDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+numberOfSubdomains 4;
+
+method          metis;
+
+simpleCoeffs
+{
+    n               ( 2 2 1 );
+    delta           0.001;
+}
+
+hierarchicalCoeffs
+{
+    n               ( 1 1 1 );
+    delta           0.001;
+    order           xyz;
+}
+
+metisCoeffs
+{
+    processorWeights ( 1 1 1 1 );
+}
+
+manualCoeffs
+{
+    dataFile        "";
+}
+
+distributed     no;
+
+roots           ( );
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/reactingParcelFoam/evaporationTest/system/fvSchemes b/tutorials/lagrangian/reactingParcelFoam/evaporationTest/system/fvSchemes
new file mode 100644
index 0000000000000000000000000000000000000000..99267208eae1f5130781bee35206d73e203fc64a
--- /dev/null
+++ b/tutorials/lagrangian/reactingParcelFoam/evaporationTest/system/fvSchemes
@@ -0,0 +1,72 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      fvSchemes;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ddtSchemes
+{
+    default         Euler;
+}
+
+gradSchemes
+{
+    default         Gauss linear;
+    grad(p)         Gauss linear;
+}
+
+divSchemes
+{
+    default         none;
+    div(phi,U)      Gauss upwind;
+    div(phid,p)     Gauss upwind;
+    div(phiU,p)     Gauss linear;
+    div(phi,h)      Gauss upwind;
+    div(phi,k)      Gauss upwind;
+    div(phi,epsilon) Gauss upwind;
+    div(U)          Gauss linear;
+    div((muEff*dev2(grad(U).T()))) Gauss linear;
+    div(phi,Yi_h)   Gauss upwind;
+}
+
+laplacianSchemes
+{
+    default         Gauss linear corrected;
+    laplacian(muEff,U) Gauss linear corrected;
+    laplacian(mut,U) Gauss linear corrected;
+    laplacian(DkEff,k) Gauss linear corrected;
+    laplacian(DepsilonEff,epsilon) Gauss linear corrected;
+    laplacian(DREff,R) Gauss linear corrected;
+    laplacian((rho*(1|A(U))),p) Gauss linear corrected;
+    laplacian(alphaEff,h) Gauss linear corrected;
+}
+
+interpolationSchemes
+{
+    default         linear;
+}
+
+snGradSchemes
+{
+    default         corrected;
+}
+
+fluxRequired
+{
+    default         no;
+    p               ;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/reactingParcelFoam/evaporationTest/system/fvSolution b/tutorials/lagrangian/reactingParcelFoam/evaporationTest/system/fvSolution
new file mode 100644
index 0000000000000000000000000000000000000000..294428ed7bf29edbbb1b08f5ae8ceba909903285
--- /dev/null
+++ b/tutorials/lagrangian/reactingParcelFoam/evaporationTest/system/fvSolution
@@ -0,0 +1,143 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      fvSolution;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+solvers
+{
+    rho
+    {
+        solver          PCG;
+        preconditioner  DIC;
+        tolerance       1e-05;
+        relTol          0;
+    }
+    U
+    {
+        solver          PBiCG;
+        preconditioner  DILU;
+        tolerance       1e-05;
+        relTol          0;
+    }
+    p
+    {
+        solver          PBiCG;
+        preconditioner  DILU;
+        tolerance       1e-06;
+        relTol          0;
+    }
+    G
+    {
+        solver          PCG;
+        preconditioner  DIC;
+        tolerance       1e-05;
+        relTol          0;
+    }
+    Yi
+    {
+        solver          PBiCG;
+        preconditioner  DILU;
+        tolerance       1e-06;
+        relTol          0;
+    }
+    CO2
+    {
+        solver          PBiCG;
+        preconditioner  DILU;
+        tolerance       1e-06;
+        relTol          0;
+    }
+    O2
+    {
+        solver          PBiCG;
+        preconditioner  DILU;
+        tolerance       1e-06;
+        relTol          0;
+    }
+    N2
+    {
+        solver          PBiCG;
+        preconditioner  DILU;
+        tolerance       1e-06;
+        relTol          0;
+    }
+    CH4
+    {
+        solver          PBiCG;
+        preconditioner  DILU;
+        tolerance       1e-06;
+        relTol          0;
+    }
+    H2
+    {
+        solver          PBiCG;
+        preconditioner  DILU;
+        tolerance       1e-06;
+        relTol          0;
+    }
+    H2O
+    {
+        solver          PBiCG;
+        preconditioner  DILU;
+        tolerance       1e-06;
+        relTol          0;
+    }
+    CO
+    {
+        solver          PBiCG;
+        preconditioner  DILU;
+        tolerance       1e-06;
+        relTol          0;
+    }
+    h
+    {
+        solver          PBiCG;
+        preconditioner  DILU;
+        tolerance       1e-05;
+        relTol          0;
+    }
+    R
+    {
+        solver          PBiCG;
+        preconditioner  DILU;
+        tolerance       1e-05;
+        relTol          0;
+    }
+    k
+    {
+        solver          PBiCG;
+        preconditioner  DILU;
+        tolerance       1e-05;
+        relTol          0;
+    }
+    epsilon
+    {
+        solver          PBiCG;
+        preconditioner  DILU;
+        tolerance       1e-05;
+        relTol          0;
+    }
+}
+
+PISO
+{
+    transonic       yes;
+    nCorrectors     2;
+    nNonOrthogonalCorrectors 0;
+    momentumPredictor yes;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/Lagrangian/rhoPisoTwinParcelFoam/rhoPisoTwinParcelFoam/Make/files b/tutorials/lagrangian/rhoPisoTwinParcelFoam/rhoPisoTwinParcelFoam/Make/files
similarity index 100%
rename from tutorials/Lagrangian/rhoPisoTwinParcelFoam/rhoPisoTwinParcelFoam/Make/files
rename to tutorials/lagrangian/rhoPisoTwinParcelFoam/rhoPisoTwinParcelFoam/Make/files
diff --git a/tutorials/Lagrangian/rhoPisoTwinParcelFoam/rhoPisoTwinParcelFoam/Make/options b/tutorials/lagrangian/rhoPisoTwinParcelFoam/rhoPisoTwinParcelFoam/Make/options
similarity index 82%
rename from tutorials/Lagrangian/rhoPisoTwinParcelFoam/rhoPisoTwinParcelFoam/Make/options
rename to tutorials/lagrangian/rhoPisoTwinParcelFoam/rhoPisoTwinParcelFoam/Make/options
index cffe6f344a148d8b60b35ccb42990542b8c1cfcc..2f17d01ffb408994955aba9bdbc6836635eec207 100644
--- a/tutorials/Lagrangian/rhoPisoTwinParcelFoam/rhoPisoTwinParcelFoam/Make/options
+++ b/tutorials/lagrangian/rhoPisoTwinParcelFoam/rhoPisoTwinParcelFoam/Make/options
@@ -4,9 +4,10 @@ EXE_INC = \
     -I$(LIB_SRC)/finiteVolume/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
-    -I$(LIB_SRC)/thermophysicalModels/combustion/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/radiation/lnInclude \
     -I$(LIB_SRC)/turbulenceModels/compressible/turbulenceModel \
+    -I$(LIB_SRC)/meshTools/lnInclude
 
 EXE_LIBS = \
     -llagrangian \
@@ -15,7 +16,7 @@ EXE_LIBS = \
     -lmeshTools \
     -lthermophysicalFunctions \
     -lbasicThermophysicalModels \
-    -lcombustionThermophysicalModels \
+    -lreactionThermophysicalModels \
     -lspecie \
     -lradiation \
     -lcompressibleRASModels \
diff --git a/tutorials/Lagrangian/rhoPisoTwinParcelFoam/rhoPisoTwinParcelFoam/UEqn.H b/tutorials/lagrangian/rhoPisoTwinParcelFoam/rhoPisoTwinParcelFoam/UEqn.H
similarity index 82%
rename from tutorials/Lagrangian/rhoPisoTwinParcelFoam/rhoPisoTwinParcelFoam/UEqn.H
rename to tutorials/lagrangian/rhoPisoTwinParcelFoam/rhoPisoTwinParcelFoam/UEqn.H
index 4d58a14da89574c12d4162e343f98eba5cf7085f..5f2e597a152ef5c08f811d1f374326db15a7ed2a 100644
--- a/tutorials/Lagrangian/rhoPisoTwinParcelFoam/rhoPisoTwinParcelFoam/UEqn.H
+++ b/tutorials/lagrangian/rhoPisoTwinParcelFoam/rhoPisoTwinParcelFoam/UEqn.H
@@ -4,8 +4,8 @@
       + fvm::div(phi, U)
       + turbulence->divDevRhoReff(U)
      ==
-        thermoCloud1.SU1()
-      + kinematicCloud1.SU1()
+        thermoCloud1.SU()
+      + kinematicCloud1.SU()
       + rho.dimensionedInternalField()*g
     );
 
diff --git a/tutorials/Lagrangian/rhoPisoTwinParcelFoam/rhoPisoTwinParcelFoam/createClouds.H b/tutorials/lagrangian/rhoPisoTwinParcelFoam/rhoPisoTwinParcelFoam/createClouds.H
similarity index 88%
rename from tutorials/Lagrangian/rhoPisoTwinParcelFoam/rhoPisoTwinParcelFoam/createClouds.H
rename to tutorials/lagrangian/rhoPisoTwinParcelFoam/rhoPisoTwinParcelFoam/createClouds.H
index bdf17e19efcdb715b5f7da5c01e96052ae41645f..ff41634a4ef48e45c45841861a35d08dd35a0f9e 100644
--- a/tutorials/Lagrangian/rhoPisoTwinParcelFoam/rhoPisoTwinParcelFoam/createClouds.H
+++ b/tutorials/lagrangian/rhoPisoTwinParcelFoam/rhoPisoTwinParcelFoam/createClouds.H
@@ -5,7 +5,7 @@
         rho,
         U,
         g,
-        thermo()
+        thermo
     );
 
     Info<< "Constructing kinematicCloud1" << endl;
@@ -14,7 +14,7 @@
         "kinematicCloud1",
         rho,
         U,
-        thermo().mu(),
+        thermo.mu(),
         g
     );
 
diff --git a/tutorials/Lagrangian/rhoPisoTwinParcelFoam/rhoPisoTwinParcelFoam/createFields.H b/tutorials/lagrangian/rhoPisoTwinParcelFoam/rhoPisoTwinParcelFoam/createFields.H
similarity index 78%
rename from tutorials/Lagrangian/rhoPisoTwinParcelFoam/rhoPisoTwinParcelFoam/createFields.H
rename to tutorials/lagrangian/rhoPisoTwinParcelFoam/rhoPisoTwinParcelFoam/createFields.H
index b07398a0314073ca5d677d4e7fc25362463dc03b..cebd44cfd4041042584f6706484083b3a4dad9b0 100644
--- a/tutorials/Lagrangian/rhoPisoTwinParcelFoam/rhoPisoTwinParcelFoam/createFields.H
+++ b/tutorials/lagrangian/rhoPisoTwinParcelFoam/rhoPisoTwinParcelFoam/createFields.H
@@ -1,13 +1,14 @@
     Info<< "Reading thermophysical properties\n" << endl;
 
-    autoPtr<basicThermo> thermo
+    autoPtr<basicPsiThermo> pThermo
     (
-        basicThermo::New(mesh)
+        basicPsiThermo::New(mesh)
     );
+    basicPsiThermo& thermo = pThermo();
 
-    volScalarField& p = thermo->p();
-    volScalarField& h = thermo->h();
-    const volScalarField& psi = thermo->psi();
+    volScalarField& p = thermo.p();
+    volScalarField& h = thermo.h();
+    const volScalarField& psi = thermo.psi();
 
     volScalarField rho
     (
@@ -19,7 +20,7 @@
             IOobject::NO_READ,
             IOobject::AUTO_WRITE
         ),
-        thermo->rho()
+        thermo.rho()
     );
 
     Info<< "\nReading field U\n" << endl;
@@ -48,7 +49,7 @@
             rho,
             U,
             phi,
-            thermo()
+            thermo
         )
     );
 
diff --git a/tutorials/Lagrangian/rhoPisoTwinParcelFoam/rhoPisoTwinParcelFoam/hEqn.H b/tutorials/lagrangian/rhoPisoTwinParcelFoam/rhoPisoTwinParcelFoam/hEqn.H
similarity index 80%
rename from tutorials/Lagrangian/rhoPisoTwinParcelFoam/rhoPisoTwinParcelFoam/hEqn.H
rename to tutorials/lagrangian/rhoPisoTwinParcelFoam/rhoPisoTwinParcelFoam/hEqn.H
index 5359c9c2cecae01b52923ff14943cc4a1373d598..2b3b60ce980cd23324343c7647de47caba0658cf 100644
--- a/tutorials/Lagrangian/rhoPisoTwinParcelFoam/rhoPisoTwinParcelFoam/hEqn.H
+++ b/tutorials/lagrangian/rhoPisoTwinParcelFoam/rhoPisoTwinParcelFoam/hEqn.H
@@ -6,12 +6,12 @@
       - fvm::laplacian(turbulence->alphaEff(), h)
      ==
         DpDt
-      + thermoCloud1.Sh1()
+      + thermoCloud1.Sh()
     );
 
     hEqn.relax();
 
     hEqn.solve();
 
-    thermo->correct();
+    thermo.correct();
 }
diff --git a/tutorials/Lagrangian/rhoPisoTwinParcelFoam/rhoPisoTwinParcelFoam/pEqn.H b/tutorials/lagrangian/rhoPisoTwinParcelFoam/rhoPisoTwinParcelFoam/pEqn.H
similarity index 92%
rename from tutorials/Lagrangian/rhoPisoTwinParcelFoam/rhoPisoTwinParcelFoam/pEqn.H
rename to tutorials/lagrangian/rhoPisoTwinParcelFoam/rhoPisoTwinParcelFoam/pEqn.H
index b506245034010d76f0ad0fb87dd22c8b559f5597..9443f909a356699185bfbc8497cf46e26fd1ed3b 100644
--- a/tutorials/Lagrangian/rhoPisoTwinParcelFoam/rhoPisoTwinParcelFoam/pEqn.H
+++ b/tutorials/lagrangian/rhoPisoTwinParcelFoam/rhoPisoTwinParcelFoam/pEqn.H
@@ -1,4 +1,4 @@
-rho = thermo->rho();
+rho = thermo.rho();
 
 volScalarField rUA = 1.0/UEqn.A();
 U = rUA*UEqn.H();
@@ -8,7 +8,7 @@ if (transonic)
     surfaceScalarField phid
     (
         "phid",
-        fvc::interpolate(thermo->psi())
+        fvc::interpolate(psi)
        *(
             (fvc::interpolate(U) & mesh.Sf())
           + fvc::ddtPhiCorr(rUA, rho, U, phi)
@@ -35,8 +35,8 @@ if (transonic)
 else
 {
     phi =
-        fvc::interpolate(rho)*
-        (
+        fvc::interpolate(rho)
+       *(
             (fvc::interpolate(U) & mesh.Sf())
           + fvc::ddtPhiCorr(rUA, rho, U, phi)
         );
diff --git a/tutorials/Lagrangian/rhoPisoTwinParcelFoam/rhoPisoTwinParcelFoam/rhoPisoTwinParcelFoam.C b/tutorials/lagrangian/rhoPisoTwinParcelFoam/rhoPisoTwinParcelFoam/rhoPisoTwinParcelFoam.C
similarity index 74%
rename from tutorials/Lagrangian/rhoPisoTwinParcelFoam/rhoPisoTwinParcelFoam/rhoPisoTwinParcelFoam.C
rename to tutorials/lagrangian/rhoPisoTwinParcelFoam/rhoPisoTwinParcelFoam/rhoPisoTwinParcelFoam.C
index 1082636303c6891d00c76806b9d085de7b097980..77715fd48c1905eb01642ddefb02aaac1338e0db 100644
--- a/tutorials/Lagrangian/rhoPisoTwinParcelFoam/rhoPisoTwinParcelFoam/rhoPisoTwinParcelFoam.C
+++ b/tutorials/lagrangian/rhoPisoTwinParcelFoam/rhoPisoTwinParcelFoam/rhoPisoTwinParcelFoam.C
@@ -31,7 +31,7 @@ Description
 \*---------------------------------------------------------------------------*/
 
 #include "fvCFD.H"
-#include "basicThermo.H"
+#include "basicPsiThermo.H"
 #include "turbulenceModel.H"
 
 #include "basicThermoCloud.H"
@@ -41,62 +41,59 @@ Description
 
 int main(int argc, char *argv[])
 {
+    #include "setRootCase.H"
 
-#   include "setRootCase.H"
+    #include "createTime.H"
+    #include "createMesh.H"
+    #include "readEnvironmentalProperties.H"
+    #include "createFields.H"
+    #include "createClouds.H"
+    #include "readPISOControls.H"
+    #include "initContinuityErrs.H"
+    #include "readTimeControls.H"
+    #include "compressibleCourantNo.H"
+    #include "setInitialDeltaT.H"
 
-#   include "createTime.H"
-#   include "createMesh.H"
-#   include "readEnvironmentalProperties.H"
-#   include "createFields.H"
-#   include "createClouds.H"
-#   include "readPISOControls.H"
-#   include "initContinuityErrs.H"
-#   include "readTimeControls.H"
-#   include "compressibleCourantNo.H"
-#   include "setInitialDeltaT.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
     Info<< "\nStarting time loop\n" << endl;
 
     while (runTime.run())
     {
-#       include "readTimeControls.H"
-#       include "readPISOControls.H"
-#       include "compressibleCourantNo.H"
-#       include "setDeltaT.H"
+        #include "readTimeControls.H"
+        #include "readPISOControls.H"
+        #include "compressibleCourantNo.H"
+        #include "setDeltaT.H"
 
         runTime++;
 
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
-        Info<< "Evolving thermoCloud1" << endl;
         thermoCloud1.evolve();
         thermoCloud1.info();
 
-        Info<< "Evolving kinematicCloud1" << endl;
         kinematicCloud1.evolve();
         kinematicCloud1.info();
 
 
-#       include "rhoEqn.H"
+        #include "rhoEqn.H"
 
         // --- PIMPLE loop
         for (int ocorr=1; ocorr<=nOuterCorr; ocorr++)
         {
-#           include "UEqn.H"
+            #include "UEqn.H"
 
             // --- PISO loop
             for (int corr=1; corr<=nCorr; corr++)
             {
-#               include "hEqn.H"
-#               include "pEqn.H"
+                #include "hEqn.H"
+                #include "pEqn.H"
             }
         }
 
         turbulence->correct();
 
-        rho = thermo->rho();
+        rho = thermo.rho();
 
         runTime.write();
 
diff --git a/tutorials/Lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/0/G b/tutorials/lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/0/G
similarity index 100%
rename from tutorials/Lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/0/G
rename to tutorials/lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/0/G
diff --git a/tutorials/Lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/0/T b/tutorials/lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/0/T
similarity index 100%
rename from tutorials/Lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/0/T
rename to tutorials/lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/0/T
diff --git a/tutorials/Lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/0/U b/tutorials/lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/0/U
similarity index 100%
rename from tutorials/Lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/0/U
rename to tutorials/lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/0/U
diff --git a/tutorials/lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/0/epsilon b/tutorials/lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/0/epsilon
new file mode 100644
index 0000000000000000000000000000000000000000..9fcf588c0c292537815ea7ef2c72563a85a14851
--- /dev/null
+++ b/tutorials/lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/0/epsilon
@@ -0,0 +1,50 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      epsilon;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 2 -3 0 0 0 0];
+
+internalField   uniform 5390.5;
+
+boundaryField
+{
+    top
+    {
+        type            compressible::epsilonWallFunction;
+        value           uniform 5390.5;
+    }
+    bottom
+    {
+        type            compressible::epsilonWallFunction;
+        value           uniform 5390.5;
+    }
+    walls
+    {
+        type            compressible::epsilonWallFunction;
+        value           uniform 5390.5;
+    }
+    symmetry
+    {
+        type            symmetryPlane;
+    }
+    frontAndBack
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/0/k b/tutorials/lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/0/k
new file mode 100644
index 0000000000000000000000000000000000000000..9abb57fdb013a1d9dd1ac7859f9554dc0c642b71
--- /dev/null
+++ b/tutorials/lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/0/k
@@ -0,0 +1,50 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      k;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 2 -2 0 0 0 0];
+
+internalField   uniform 37.5;
+
+boundaryField
+{
+    top
+    {
+        type            compressible::kQRWallFunction;
+        value           uniform 37.5;
+    }
+    bottom
+    {
+        type            compressible::kQRWallFunction;
+        value           uniform 37.5;
+    }
+    walls
+    {
+        type            compressible::kQRWallFunction;
+        value           uniform 37.5;
+    }
+    symmetry
+    {
+        type            symmetryPlane;
+    }
+    frontAndBack
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/Lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/0/p b/tutorials/lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/0/p
similarity index 100%
rename from tutorials/Lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/0/p
rename to tutorials/lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/0/p
diff --git a/tutorials/Lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/constant/RASProperties b/tutorials/lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/constant/RASProperties
similarity index 100%
rename from tutorials/Lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/constant/RASProperties
rename to tutorials/lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/constant/RASProperties
diff --git a/tutorials/lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/constant/environmentalProperties b/tutorials/lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/constant/environmentalProperties
new file mode 100644
index 0000000000000000000000000000000000000000..a866ff549fd799e63d2d6946a66cf3da14d092bd
--- /dev/null
+++ b/tutorials/lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/constant/environmentalProperties
@@ -0,0 +1,21 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      environmentalProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+g               g [ 0 1 -2 0 0 0 0 ] ( 0 -9.81 0 );
+
+
+// ************************************************************************* //
diff --git a/tutorials/Lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/constant/kinematicCloud1Positions b/tutorials/lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/constant/kinematicCloud1Positions
similarity index 100%
rename from tutorials/Lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/constant/kinematicCloud1Positions
rename to tutorials/lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/constant/kinematicCloud1Positions
diff --git a/tutorials/Lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/constant/kinematicCloud1Properties b/tutorials/lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/constant/kinematicCloud1Properties
similarity index 78%
rename from tutorials/Lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/constant/kinematicCloud1Properties
rename to tutorials/lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/constant/kinematicCloud1Properties
index 4a7f8b7b2b5d0f5f7c8e979a07185eb634c9a8c5..93a7d43a9deb93b410aec659c9c4672a2ac54c4f 100644
--- a/tutorials/Lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/constant/kinematicCloud1Properties
+++ b/tutorials/lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/constant/kinematicCloud1Properties
@@ -21,20 +21,27 @@ DragModel       SphereDrag;
 
 DispersionModel StochasticDispersionRAS;
 
-WallInteractionModel StandardWallInteraction;
+PatchInteractionModel StandardWallInteraction;
 
-minParticleMass minParticleMass [ 1 0 0 0 0 ] 1e-15;
-
-rho0            rho0 [ 1 -3 0 0 0 ] 5000;
+PostProcessingModel none;
 
 coupled         true;
 
+cellValueSourceCorrection on;
+
 parcelTypeId    2;
 
+constantProperties
+{
+    rhoMin          rhoMin [ 1 -3 0 0 0 ] 1e-15;
+    minParticleMass minParticleMass [ 1 0 0 0 0 ] 1e-15;
+    rho0            rho0 [ 1 -3 0 0 0 ] 5000;
+}
+
 interpolationSchemes
 {
     rho             cell;
-    U               cellPointFace;
+    U               cellPoint;
     mu              cell;
 }
 
@@ -43,12 +50,19 @@ integrationSchemes
     U               Euler;
 }
 
+particleForces
+{
+    gravity         on;
+    virtualMass     off;
+    pressureGradient off;
+}
+
 ManualInjectionCoeffs
 {
-    parcelBasisType mass;
     massTotal       massTotal [ 1 0 0 0 0 ] 0.0002;
+    parcelBasisType mass;
     SOI             0;
-    positionsFile   kinematicCloud1Positions;
+    positionsFile   "kinematicCloud1Positions";
     U0              ( 0 0 0 );
     parcelPDF
     {
@@ -70,29 +84,10 @@ ConeInjectionCoeffs
     position        ( 0.25 0.25 0.05 );
     direction       ( 0 -1 0 );
     parcelsPerSecond 10000;
-    volumeFlowRate  Constant;
-    volumeFlowRateCoeffs
-    {
-        value           0.01;
-    }
-
-    Umag            Constant;
-    UmagCoeffs
-    {
-        value           50;
-    }
-
-    thetaInner      Constant;
-    thetaInnerCoeffs
-    {
-        value           0;
-    }
-
-    thetaOuter      Constant;
-    thetaOuterCoeffs
-    {
-        value           30;
-    }
+    volumeFlowRate  Constant 0.01;
+    Umag            Constant 50;
+    thetaInner      Constant 0;
+    thetaOuter      Constant 30;
 
     parcelPDF
     {
diff --git a/tutorials/Lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/constant/polyMesh/blockMeshDict b/tutorials/lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/constant/polyMesh/blockMeshDict
similarity index 100%
rename from tutorials/Lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/constant/polyMesh/blockMeshDict
rename to tutorials/lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/constant/polyMesh/blockMeshDict
diff --git a/tutorials/Lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/constant/polyMesh/boundary b/tutorials/lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/constant/polyMesh/boundary
similarity index 88%
rename from tutorials/Lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/constant/polyMesh/boundary
rename to tutorials/lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/constant/polyMesh/boundary
index b8848e2d9cd3e1dbe2fa2a9aabe159a7108753f7..b130d7bc0aa5e48e9a785745d71564a71ac9a626 100644
--- a/tutorials/Lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/constant/polyMesh/boundary
+++ b/tutorials/lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/constant/polyMesh/boundary
@@ -1,8 +1,8 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.5                                   |
-|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
 FoamFile
@@ -10,6 +10,7 @@ FoamFile
     version     2.0;
     format      ascii;
     class       polyBoundaryMesh;
+    location    "constant/polyMesh";
     object      boundary;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/Lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/constant/thermoCloud1Positions b/tutorials/lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/constant/thermoCloud1Positions
similarity index 100%
rename from tutorials/Lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/constant/thermoCloud1Positions
rename to tutorials/lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/constant/thermoCloud1Positions
diff --git a/tutorials/Lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/constant/thermoCloud1Properties b/tutorials/lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/constant/thermoCloud1Properties
similarity index 73%
rename from tutorials/Lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/constant/thermoCloud1Properties
rename to tutorials/lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/constant/thermoCloud1Properties
index fd752a082c9d60ef27277908ec50e7bf425a3970..ea9f237fb590ab5d94a7fecdfbff7d631037b782 100644
--- a/tutorials/Lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/constant/thermoCloud1Properties
+++ b/tutorials/lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/constant/thermoCloud1Properties
@@ -21,33 +21,37 @@ DragModel       SphereDrag;
 
 DispersionModel StochasticDispersionRAS;
 
-WallInteractionModel StandardWallInteraction;
+PatchInteractionModel StandardWallInteraction;
 
 HeatTransferModel RanzMarshall;
 
-radiation       off;
-
-minParticleMass minParticleMass [ 1 0 0 0 0 ] 1e-15;
-
-rho0            rho0 [ 1 -3 0 0 0 ] 2500;
-
-T0              T0 [ 0 0 0 1 0 ] 300;
+PostProcessingModel none;
 
-cp0             cp0 [ 0 2 -2 -1 0 ] 900;
-
-epsilon0        epsilon0 [ 0 0 0 0 0 ] 1;
-
-f0              f0 [ 0 0 0 0 0 ] 0.5;
+radiation       off;
 
 coupled         true;
 
+cellValueSourceCorrection on;
+
 parcelTypeId    1;
 
+constantProperties
+{
+    rhoMin          rhoMin [ 1 -3 0 0 0 ] 1e-15;
+    TMin            TMin [ 0 0 0 1 0 ] 200;
+    minParticleMass minParticleMass [ 1 0 0 0 0 ] 1e-15;
+    rho0            rho0 [ 1 -3 0 0 0 ] 2500;
+    T0              T0 [ 0 0 0 1 0 ] 300;
+    cp0             cp0 [ 0 2 -2 -1 0 ] 900;
+    epsilon0        epsilon0 [ 0 0 0 0 0 ] 1;
+    f0              f0 [ 0 0 0 0 0 ] 0.5;
+}
+
 interpolationSchemes
 {
     rho             cell;
-    U               cellPointFace;
     mu              cell;
+    U               cellPoint;
     T               cell;
     Cp              cell;
 }
@@ -58,12 +62,19 @@ integrationSchemes
     T               Analytical;
 }
 
+particleForces
+{
+    gravity         on;
+    virtualMass     off;
+    pressureGradient off;
+}
+
 ManualInjectionCoeffs
 {
     massTotal       massTotal [ 1 0 0 0 0 ] 0.0001;
     parcelBasisType mass;
     SOI             0;
-    positionsFile   thermoCloud1Positions;
+    positionsFile   "thermoCloud1Positions";
     U0              ( 0 0 0 );
     parcelPDF
     {
diff --git a/tutorials/Lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/constant/thermophysicalProperties b/tutorials/lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/constant/thermophysicalProperties
similarity index 90%
rename from tutorials/Lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/constant/thermophysicalProperties
rename to tutorials/lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/constant/thermophysicalProperties
index d02b85fec4397d8da50129dd6d2374b56619abe6..f7638810ff7a4d465637cea0b9f7caca2680d98f 100644
--- a/tutorials/Lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/constant/thermophysicalProperties
+++ b/tutorials/lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/constant/thermophysicalProperties
@@ -15,7 +15,7 @@ FoamFile
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-thermoType      hThermo<pureMixture<constTransport<specieThermo<hConstThermo<perfectGas>>>>>;
+thermoType      hPsiThermo<pureMixture<constTransport<specieThermo<hConstThermo<perfectGas>>>>>;
 
 mixture         air 1 28.9 1007 0 1.84e-05 0.7;
 
diff --git a/tutorials/lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/constant/turbulenceProperties b/tutorials/lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/constant/turbulenceProperties
new file mode 100644
index 0000000000000000000000000000000000000000..78f28eca604be4d8fc94d38d23ae0cbb679b18fb
--- /dev/null
+++ b/tutorials/lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/constant/turbulenceProperties
@@ -0,0 +1,21 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      turbulenceProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+simulationType  RASModel;
+
+
+// ************************************************************************* //
diff --git a/tutorials/Lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/system/controlDict b/tutorials/lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/system/controlDict
similarity index 100%
rename from tutorials/Lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/system/controlDict
rename to tutorials/lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/system/controlDict
diff --git a/tutorials/Lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/system/decomposeParDict b/tutorials/lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/system/decomposeParDict
similarity index 100%
rename from tutorials/Lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/system/decomposeParDict
rename to tutorials/lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/system/decomposeParDict
diff --git a/tutorials/Lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/system/fvSchemes b/tutorials/lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/system/fvSchemes
similarity index 100%
rename from tutorials/Lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/system/fvSchemes
rename to tutorials/lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/system/fvSchemes
diff --git a/tutorials/Lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/system/fvSolution b/tutorials/lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/system/fvSolution
similarity index 100%
rename from tutorials/Lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/system/fvSolution
rename to tutorials/lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/system/fvSolution
diff --git a/tutorials/mesh/moveDynamicMesh/SnakeRiverCanyon/0/pointDisplacement b/tutorials/mesh/moveDynamicMesh/SnakeRiverCanyon/0/pointDisplacement
new file mode 100644
index 0000000000000000000000000000000000000000..5ffe633e920154cef1f96201e351f496c7a5d85b
--- /dev/null
+++ b/tutorials/mesh/moveDynamicMesh/SnakeRiverCanyon/0/pointDisplacement
@@ -0,0 +1,114 @@
+/*---------------------------------------------------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.4                                   |
+|   \\  /    A nd           | Web:      http://www.openfoam.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+FoamFile
+{
+    version 2.0;
+    format ascii;
+
+    root "/home/hunt2/mattijs/OpenFOAM/mattijs-1.4/run/testLoop1.4/moveMesh";
+    case "cone";
+    instance "0";
+    local "";
+
+    class pointVectorField;
+    object pointMotionU;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 0 0 0 0 0];
+
+internalField   uniform (0 0 0);
+
+boundaryField
+{
+    maxZ
+    {
+        type            fixedValue;
+        value           uniform (0 0 0);
+    }
+
+    minZ
+    {
+        type            surfaceDisplacement;
+        value           uniform (0 0 0);
+
+        // Clip displacement to surface by max deltaT*velocity.
+        velocity            (10 10 10);
+
+        geometry
+        {
+            AcrossRiver.stl
+            {
+                type triSurfaceMesh;
+            }
+        };
+
+        // Find projection with surface:
+        //     fixedNormal : intersections along prespecified direction
+        //     pointNormal : intersections along current pointNormal of patch
+        //     nearest     : nearest point on surface
+        // Other
+        projectMode fixedNormal;
+
+        // if fixedNormal : normal
+        projectDirection (0 0 1);
+
+        //- -1 or component to knock out before doing projection
+        wedgePlane      -1;
+
+        //- Points that should remain fixed
+        //frozenPointsZone fixedPointsZone;
+    }
+
+//    minZ
+//    {
+//        type            surfaceSlipDisplacement;
+//        geometry
+//        {
+//            hellskull.stl
+//            {
+//                type triSurfaceMesh;
+//            }
+//        };
+//
+//        followMode fixedNormal;
+//
+//        projectDirection (0 0 1);
+//
+//        //- -1 or component to knock out before doing projection
+//        wedgePlane      -1;
+//
+//        //- Points that should remain fixed
+//        //frozenPointsZone fixedPointsZone;
+//    }
+
+    maxX
+    {
+        type            slip;
+    }
+
+    minX
+    {
+        type            slip;
+    }
+
+    minY
+    {
+        type            slip;
+    }
+
+    maxY
+    {
+        type            slip;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/mesh/moveDynamicMesh/SnakeRiverCanyon/constant/dynamicMeshDict b/tutorials/mesh/moveDynamicMesh/SnakeRiverCanyon/constant/dynamicMeshDict
new file mode 100644
index 0000000000000000000000000000000000000000..65894a796caaf1962610c6b42de10f9558625237
--- /dev/null
+++ b/tutorials/mesh/moveDynamicMesh/SnakeRiverCanyon/constant/dynamicMeshDict
@@ -0,0 +1,40 @@
+/*---------------------------------------------------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.4                                   |
+|   \\  /    A nd           | Web:      http://www.openfoam.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+FoamFile
+{
+    version         2.0;
+    format          ascii;
+
+    root            "";
+    case            "";
+    instance        "";
+    local           "";
+
+    class           dictionary;
+    object          motionProperties;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dynamicFvMesh dynamicMotionSolverFvMesh;
+
+motionSolverLibs ("libfvMotionSolvers.so");
+
+solver displacementSBRStress;   //displacementLaplacian;   //displacementSBRStress;
+diffusivity quadratic quadratic inverseDistance 1(minZ);
+
+//solver velocityComponentLaplacian z;
+//diffusivity  uniform;
+//diffusivity  directional (1 200 0);
+// diffusivity  motionDirectional (1 1000 0);
+// diffusivity  file motionDiffusivity;
+diffusivity  quadratic inverseDistance 1(minZ);
+// diffusivity  exponential 2000 inverseDistance 1(movingWall);
+
+// ************************************************************************* //
diff --git a/tutorials/mesh/moveDynamicMesh/SnakeRiverCanyon/constant/polyMesh/blockMeshDict b/tutorials/mesh/moveDynamicMesh/SnakeRiverCanyon/constant/polyMesh/blockMeshDict
new file mode 100644
index 0000000000000000000000000000000000000000..9f348cb6e7ca3be15559a5b0b8fc75040342c787
--- /dev/null
+++ b/tutorials/mesh/moveDynamicMesh/SnakeRiverCanyon/constant/polyMesh/blockMeshDict
@@ -0,0 +1,82 @@
+/*---------------------------------------------------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.0                                   |
+|   \\  /    A nd           | Web:      http://www.openfoam.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+FoamFile
+{
+    version         2.0;
+    format          ascii;
+
+    root            "";
+    case            "";
+    instance        "";
+    local           "";
+
+    class           dictionary;
+    object          blockMeshDict;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+
+convertToMeters 1;
+
+vertices        
+(
+    ( 659531  4.7513e+06   1028)
+    ( 659531  4.7513e+06   2100)
+    ( 662381  4.7513e+06   2100)
+    ( 662381  4.7513e+06   1028)
+    ( 659531  4.75454e+06  1028)
+    ( 659531  4.75454e+06  2100)
+    ( 662381  4.75454e+06  2100)
+    ( 662381  4.75454e+06  1028)
+);
+blocks          
+(
+    hex (0 1 2 3 4 5 6 7) (20 60 60) simpleGrading (10.0 1 1)
+);
+
+
+edges           
+(
+);
+
+patches         
+(
+    wall maxX 
+    (
+        (3 7 6 2)
+    )
+    wall minZ
+    (
+        (0 4 7 3)
+    )
+    wall maxZ
+    (
+        (2 6 5 1)
+    )
+    wall minX
+    (
+        (1 5 4 0)
+    )
+    wall minY
+    (
+        (0 3 2 1)
+    )
+    wall maxY
+    (
+        (4 5 6 7)
+    )
+);
+
+mergePatchPairs 
+(
+);
+
+
+// ************************************************************************* //
diff --git a/tutorials/mesh/moveDynamicMesh/SnakeRiverCanyon/constant/polyMesh/boundary b/tutorials/mesh/moveDynamicMesh/SnakeRiverCanyon/constant/polyMesh/boundary
new file mode 100644
index 0000000000000000000000000000000000000000..9afeb87c10f1682e87741c684a769070dc28dddb
--- /dev/null
+++ b/tutorials/mesh/moveDynamicMesh/SnakeRiverCanyon/constant/polyMesh/boundary
@@ -0,0 +1,58 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       polyBoundaryMesh;
+    location    "constant/polyMesh";
+    object      boundary;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+6
+(
+    maxX
+    {
+        type            wall;
+        nFaces          1200;
+        startFace       210000;
+    }
+    minZ
+    {
+        type            wall;
+        nFaces          3600;
+        startFace       211200;
+    }
+    maxZ
+    {
+        type            wall;
+        nFaces          3600;
+        startFace       214800;
+    }
+    minX
+    {
+        type            wall;
+        nFaces          1200;
+        startFace       218400;
+    }
+    minY
+    {
+        type            wall;
+        nFaces          1200;
+        startFace       219600;
+    }
+    maxY
+    {
+        type            wall;
+        nFaces          1200;
+        startFace       220800;
+    }
+)
+
+// ************************************************************************* //
diff --git a/tutorials/mesh/moveDynamicMesh/SnakeRiverCanyon/constant/transportProperties b/tutorials/mesh/moveDynamicMesh/SnakeRiverCanyon/constant/transportProperties
new file mode 100644
index 0000000000000000000000000000000000000000..7aed29e935555a12f3b45025d985ca1888dea38a
--- /dev/null
+++ b/tutorials/mesh/moveDynamicMesh/SnakeRiverCanyon/constant/transportProperties
@@ -0,0 +1,28 @@
+/*---------------------------------------------------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.4                                   |
+|   \\  /    A nd           | Web:      http://www.openfoam.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+FoamFile
+{
+    version         2.0;
+    format          ascii;
+
+    root            "";
+    case            "";
+    instance        "";
+    local           "";
+
+    class           dictionary;
+    object          transportProperties;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+nu              nu [0 2 -1 0 0 0 0] 0.01;
+
+
+// ************************************************************************* //
diff --git a/tutorials/mesh/moveDynamicMesh/SnakeRiverCanyon/constant/triSurface/ACROSSCYN.JPG b/tutorials/mesh/moveDynamicMesh/SnakeRiverCanyon/constant/triSurface/ACROSSCYN.JPG
new file mode 100644
index 0000000000000000000000000000000000000000..259c021d0b422dd5846c9d8c365afe4ca74682b9
Binary files /dev/null and b/tutorials/mesh/moveDynamicMesh/SnakeRiverCanyon/constant/triSurface/ACROSSCYN.JPG differ
diff --git a/tutorials/mesh/moveDynamicMesh/SnakeRiverCanyon/constant/triSurface/AcrossCyn.XYZ b/tutorials/mesh/moveDynamicMesh/SnakeRiverCanyon/constant/triSurface/AcrossCyn.XYZ
new file mode 100644
index 0000000000000000000000000000000000000000..9a23da569b73ee8ecccc63d23ff7ace9a1939c84
--- /dev/null
+++ b/tutorials/mesh/moveDynamicMesh/SnakeRiverCanyon/constant/triSurface/AcrossCyn.XYZ
@@ -0,0 +1,10573 @@
+ 659501  4751301    955
+ 659501  4751331    957
+ 659501  4751361    960
+ 659501  4751391    963
+ 659501  4751421    968
+ 659501  4751451    973
+ 659501  4751481    977
+ 659501  4751511    982
+ 659501  4751541    987
+ 659501  4751571    991
+ 659501  4751601    992
+ 659501  4751631    992
+ 659501  4751661    993
+ 659501  4751691    993
+ 659501  4751721    993
+ 659501  4751751    993
+ 659501  4751781    993
+ 659501  4751811    992
+ 659501  4751841    991
+ 659501  4751871    989
+ 659501  4751901    987
+ 659501  4751931    985
+ 659501  4751961    984
+ 659501  4751991    981
+ 659501  4752021    979
+ 659501  4752051    978
+ 659501  4752081    976
+ 659501  4752111    964
+ 659501  4752141    947
+ 659501  4752171    928
+ 659501  4752201    909
+ 659501  4752231    896
+ 659501  4752261    889
+ 659501  4752291    883
+ 659501  4752321    878
+ 659501  4752351    875
+ 659501  4752381    872
+ 659501  4752411    870
+ 659501  4752441    869
+ 659501  4752471    868
+ 659501  4752501    867
+ 659501  4752531    866
+ 659501  4752561    866
+ 659501  4752591    865
+ 659501  4752621    864
+ 659501  4752651    863
+ 659501  4752681    863
+ 659501  4752711    862
+ 659501  4752741    862
+ 659501  4752771    862
+ 659501  4752801    861
+ 659501  4752831    860
+ 659501  4752861    858
+ 659501  4752891    856
+ 659501  4752921    855
+ 659501  4752951    854
+ 659501  4752981    854
+ 659501  4753011    853
+ 659501  4753041    851
+ 659501  4753071    851
+ 659501  4753101    850
+ 659501  4753131    850
+ 659501  4753161    849
+ 659501  4753191    847
+ 659501  4753221    842
+ 659501  4753251    825
+ 659501  4753281    809
+ 659501  4753311    809
+ 659501  4753341    809
+ 659501  4753371    809
+ 659501  4753401    809
+ 659501  4753431    809
+ 659501  4753461    809
+ 659501  4753491    827
+ 659501  4753521    845
+ 659501  4753551    847
+ 659501  4753581    848
+ 659501  4753611    848
+ 659501  4753641    848
+ 659501  4753671    849
+ 659501  4753701    850
+ 659501  4753731    850
+ 659501  4753761    851
+ 659501  4753791    852
+ 659501  4753821    853
+ 659501  4753851    863
+ 659501  4753881    875
+ 659501  4753911    878
+ 659501  4753941    879
+ 659501  4753971    881
+ 659501  4754001    882
+ 659501  4754031    887
+ 659501  4754061    898
+ 659501  4754091    917
+ 659501  4754121    938
+ 659501  4754151    953
+ 659501  4754181    953
+ 659501  4754211    953
+ 659501  4754241    953
+ 659501  4754271    953
+ 659501  4754301    953
+ 659501  4754331    955
+ 659501  4754361    954
+ 659501  4754391    954
+ 659501  4754421    953
+ 659501  4754451    953
+ 659501  4754481    953
+ 659501  4754511    953
+ 659501  4754541    953
+ 659531  4751301    955
+ 659531  4751331    958
+ 659531  4751361    961
+ 659531  4751391    966
+ 659531  4751421    969
+ 659531  4751451    973
+ 659531  4751481    976
+ 659531  4751511    981
+ 659531  4751541    986
+ 659531  4751571    991
+ 659531  4751601    992
+ 659531  4751631    992
+ 659531  4751661    994
+ 659531  4751691    994
+ 659531  4751721    994
+ 659531  4751751    994
+ 659531  4751781    994
+ 659531  4751811    993
+ 659531  4751841    991
+ 659531  4751871    990
+ 659531  4751901    987
+ 659531  4751931    986
+ 659531  4751961    984
+ 659531  4751991    982
+ 659531  4752021    981
+ 659531  4752051    979
+ 659531  4752081    976
+ 659531  4752111    962
+ 659531  4752141    944
+ 659531  4752171    928
+ 659531  4752201    911
+ 659531  4752231    897
+ 659531  4752261    888
+ 659531  4752291    882
+ 659531  4752321    877
+ 659531  4752351    875
+ 659531  4752381    872
+ 659531  4752411    870
+ 659531  4752441    869
+ 659531  4752471    868
+ 659531  4752501    867
+ 659531  4752531    866
+ 659531  4752561    865
+ 659531  4752591    864
+ 659531  4752621    863
+ 659531  4752651    863
+ 659531  4752681    862
+ 659531  4752711    861
+ 659531  4752741    861
+ 659531  4752771    861
+ 659531  4752801    860
+ 659531  4752831    859
+ 659531  4752861    858
+ 659531  4752891    856
+ 659531  4752921    855
+ 659531  4752951    854
+ 659531  4752981    853
+ 659531  4753011    852
+ 659531  4753041    852
+ 659531  4753071    852
+ 659531  4753101    851
+ 659531  4753131    850
+ 659531  4753161    849
+ 659531  4753191    847
+ 659531  4753221    835
+ 659531  4753251    809
+ 659531  4753281    809
+ 659531  4753311    809
+ 659531  4753341    809
+ 659531  4753371    809
+ 659531  4753401    809
+ 659531  4753431    809
+ 659531  4753461    809
+ 659531  4753491    833
+ 659531  4753521    850
+ 659531  4753551    850
+ 659531  4753581    849
+ 659531  4753611    849
+ 659531  4753641    848
+ 659531  4753671    849
+ 659531  4753701    849
+ 659531  4753731    850
+ 659531  4753761    851
+ 659531  4753791    852
+ 659531  4753821    853
+ 659531  4753851    865
+ 659531  4753881    878
+ 659531  4753911    883
+ 659531  4753941    881
+ 659531  4753971    883
+ 659531  4754001    884
+ 659531  4754031    890
+ 659531  4754061    896
+ 659531  4754091    913
+ 659531  4754121    934
+ 659531  4754151    953
+ 659531  4754181    953
+ 659531  4754211    953
+ 659531  4754241    953
+ 659531  4754271    954
+ 659531  4754301    955
+ 659531  4754331    953
+ 659531  4754361    954
+ 659531  4754391    954
+ 659531  4754421    954
+ 659531  4754451    953
+ 659531  4754481    953
+ 659531  4754511    953
+ 659531  4754541    953
+ 659561  4751301    956
+ 659561  4751331    959
+ 659561  4751361    962
+ 659561  4751391    967
+ 659561  4751421    970
+ 659561  4751451    973
+ 659561  4751481    976
+ 659561  4751511    981
+ 659561  4751541    986
+ 659561  4751571    991
+ 659561  4751601    992
+ 659561  4751631    993
+ 659561  4751661    994
+ 659561  4751691    995
+ 659561  4751721    995
+ 659561  4751751    996
+ 659561  4751781    995
+ 659561  4751811    994
+ 659561  4751841    993
+ 659561  4751871    991
+ 659561  4751901    991
+ 659561  4751931    989
+ 659561  4751961    986
+ 659561  4751991    984
+ 659561  4752021    982
+ 659561  4752051    979
+ 659561  4752081    974
+ 659561  4752111    959
+ 659561  4752141    942
+ 659561  4752171    926
+ 659561  4752201    911
+ 659561  4752231    897
+ 659561  4752261    887
+ 659561  4752291    882
+ 659561  4752321    877
+ 659561  4752351    875
+ 659561  4752381    872
+ 659561  4752411    870
+ 659561  4752441    868
+ 659561  4752471    868
+ 659561  4752501    867
+ 659561  4752531    866
+ 659561  4752561    865
+ 659561  4752591    864
+ 659561  4752621    863
+ 659561  4752651    862
+ 659561  4752681    862
+ 659561  4752711    861
+ 659561  4752741    860
+ 659561  4752771    860
+ 659561  4752801    859
+ 659561  4752831    859
+ 659561  4752861    857
+ 659561  4752891    856
+ 659561  4752921    855
+ 659561  4752951    854
+ 659561  4752981    853
+ 659561  4753011    852
+ 659561  4753041    852
+ 659561  4753071    853
+ 659561  4753101    853
+ 659561  4753131    852
+ 659561  4753161    850
+ 659561  4753191    847
+ 659561  4753221    831
+ 659561  4753251    809
+ 659561  4753281    809
+ 659561  4753311    809
+ 659561  4753341    809
+ 659561  4753371    809
+ 659561  4753401    809
+ 659561  4753431    809
+ 659561  4753461    825
+ 659561  4753491    841
+ 659561  4753521    855
+ 659561  4753551    852
+ 659561  4753581    848
+ 659561  4753611    848
+ 659561  4753641    848
+ 659561  4753671    848
+ 659561  4753701    849
+ 659561  4753731    850
+ 659561  4753761    851
+ 659561  4753791    852
+ 659561  4753821    854
+ 659561  4753851    865
+ 659561  4753881    878
+ 659561  4753911    884
+ 659561  4753941    881
+ 659561  4753971    885
+ 659561  4754001    888
+ 659561  4754031    889
+ 659561  4754061    894
+ 659561  4754091    911
+ 659561  4754121    931
+ 659561  4754151    953
+ 659561  4754181    953
+ 659561  4754211    953
+ 659561  4754241    953
+ 659561  4754271    954
+ 659561  4754301    955
+ 659561  4754331    954
+ 659561  4754361    955
+ 659561  4754391    954
+ 659561  4754421    954
+ 659561  4754451    953
+ 659561  4754481    953
+ 659561  4754511    953
+ 659561  4754541    953
+ 659591  4751301    958
+ 659591  4751331    959
+ 659591  4751361    963
+ 659591  4751391    967
+ 659591  4751421    970
+ 659591  4751451    974
+ 659591  4751481    977
+ 659591  4751511    982
+ 659591  4751541    987
+ 659591  4751571    991
+ 659591  4751601    993
+ 659591  4751631    995
+ 659591  4751661    996
+ 659591  4751691    997
+ 659591  4751721    997
+ 659591  4751751    997
+ 659591  4751781    997
+ 659591  4751811    996
+ 659591  4751841    994
+ 659591  4751871    993
+ 659591  4751901    992
+ 659591  4751931    990
+ 659591  4751961    988
+ 659591  4751991    986
+ 659591  4752021    984
+ 659591  4752051    980
+ 659591  4752081    970
+ 659591  4752111    957
+ 659591  4752141    941
+ 659591  4752171    925
+ 659591  4752201    909
+ 659591  4752231    893
+ 659591  4752261    887
+ 659591  4752291    882
+ 659591  4752321    878
+ 659591  4752351    875
+ 659591  4752381    872
+ 659591  4752411    869
+ 659591  4752441    868
+ 659591  4752471    868
+ 659591  4752501    867
+ 659591  4752531    866
+ 659591  4752561    865
+ 659591  4752591    864
+ 659591  4752621    863
+ 659591  4752651    862
+ 659591  4752681    861
+ 659591  4752711    861
+ 659591  4752741    860
+ 659591  4752771    859
+ 659591  4752801    859
+ 659591  4752831    857
+ 659591  4752861    856
+ 659591  4752891    855
+ 659591  4752921    854
+ 659591  4752951    853
+ 659591  4752981    852
+ 659591  4753011    852
+ 659591  4753041    853
+ 659591  4753071    854
+ 659591  4753101    854
+ 659591  4753131    854
+ 659591  4753161    853
+ 659591  4753191    844
+ 659591  4753221    826
+ 659591  4753251    809
+ 659591  4753281    809
+ 659591  4753311    809
+ 659591  4753341    809
+ 659591  4753371    809
+ 659591  4753401    809
+ 659591  4753431    815
+ 659591  4753461    832
+ 659591  4753491    848
+ 659591  4753521    855
+ 659591  4753551    852
+ 659591  4753581    848
+ 659591  4753611    848
+ 659591  4753641    848
+ 659591  4753671    848
+ 659591  4753701    849
+ 659591  4753731    850
+ 659591  4753761    851
+ 659591  4753791    852
+ 659591  4753821    854
+ 659591  4753851    864
+ 659591  4753881    876
+ 659591  4753911    879
+ 659591  4753941    881
+ 659591  4753971    885
+ 659591  4754001    891
+ 659591  4754031    892
+ 659591  4754061    891
+ 659591  4754091    909
+ 659591  4754121    930
+ 659591  4754151    953
+ 659591  4754181    953
+ 659591  4754211    953
+ 659591  4754241    953
+ 659591  4754271    954
+ 659591  4754301    955
+ 659591  4754331    955
+ 659591  4754361    954
+ 659591  4754391    954
+ 659591  4754421    954
+ 659591  4754451    954
+ 659591  4754481    954
+ 659591  4754511    953
+ 659591  4754541    953
+ 659621  4751301    961
+ 659621  4751331    962
+ 659621  4751361    965
+ 659621  4751391    968
+ 659621  4751421    971
+ 659621  4751451    974
+ 659621  4751481    978
+ 659621  4751511    982
+ 659621  4751541    987
+ 659621  4751571    991
+ 659621  4751601    994
+ 659621  4751631    997
+ 659621  4751661    998
+ 659621  4751691    998
+ 659621  4751721    997
+ 659621  4751751    998
+ 659621  4751781    998
+ 659621  4751811    997
+ 659621  4751841    995
+ 659621  4751871    994
+ 659621  4751901    993
+ 659621  4751931    991
+ 659621  4751961    989
+ 659621  4751991    986
+ 659621  4752021    984
+ 659621  4752051    978
+ 659621  4752081    966
+ 659621  4752111    950
+ 659621  4752141    937
+ 659621  4752171    915
+ 659621  4752201    906
+ 659621  4752231    895
+ 659621  4752261    888
+ 659621  4752291    882
+ 659621  4752321    878
+ 659621  4752351    874
+ 659621  4752381    871
+ 659621  4752411    869
+ 659621  4752441    868
+ 659621  4752471    867
+ 659621  4752501    867
+ 659621  4752531    866
+ 659621  4752561    865
+ 659621  4752591    863
+ 659621  4752621    862
+ 659621  4752651    861
+ 659621  4752681    861
+ 659621  4752711    860
+ 659621  4752741    860
+ 659621  4752771    859
+ 659621  4752801    858
+ 659621  4752831    857
+ 659621  4752861    856
+ 659621  4752891    855
+ 659621  4752921    854
+ 659621  4752951    853
+ 659621  4752981    852
+ 659621  4753011    853
+ 659621  4753041    854
+ 659621  4753071    854
+ 659621  4753101    855
+ 659621  4753131    854
+ 659621  4753161    852
+ 659621  4753191    836
+ 659621  4753221    809
+ 659621  4753251    809
+ 659621  4753281    809
+ 659621  4753311    809
+ 659621  4753341    809
+ 659621  4753371    809
+ 659621  4753401    809
+ 659621  4753431    822
+ 659621  4753461    839
+ 659621  4753491    853
+ 659621  4753521    855
+ 659621  4753551    852
+ 659621  4753581    848
+ 659621  4753611    848
+ 659621  4753641    848
+ 659621  4753671    848
+ 659621  4753701    849
+ 659621  4753731    850
+ 659621  4753761    851
+ 659621  4753791    852
+ 659621  4753821    853
+ 659621  4753851    862
+ 659621  4753881    872
+ 659621  4753911    878
+ 659621  4753941    881
+ 659621  4753971    884
+ 659621  4754001    891
+ 659621  4754031    894
+ 659621  4754061    891
+ 659621  4754091    908
+ 659621  4754121    930
+ 659621  4754151    953
+ 659621  4754181    953
+ 659621  4754211    953
+ 659621  4754241    953
+ 659621  4754271    953
+ 659621  4754301    954
+ 659621  4754331    955
+ 659621  4754361    954
+ 659621  4754391    954
+ 659621  4754421    954
+ 659621  4754451    954
+ 659621  4754481    954
+ 659621  4754511    953
+ 659621  4754541    953
+ 659651  4751301    961
+ 659651  4751331    963
+ 659651  4751361    967
+ 659651  4751391    969
+ 659651  4751421    972
+ 659651  4751451    975
+ 659651  4751481    978
+ 659651  4751511    982
+ 659651  4751541    987
+ 659651  4751571    991
+ 659651  4751601    994
+ 659651  4751631    998
+ 659651  4751661    999
+ 659651  4751691    999
+ 659651  4751721    998
+ 659651  4751751    999
+ 659651  4751781    999
+ 659651  4751811    998
+ 659651  4751841    996
+ 659651  4751871    995
+ 659651  4751901    993
+ 659651  4751931    992
+ 659651  4751961    989
+ 659651  4751991    986
+ 659651  4752021    981
+ 659651  4752051    971
+ 659651  4752081    957
+ 659651  4752111    945
+ 659651  4752141    931
+ 659651  4752171    914
+ 659651  4752201    900
+ 659651  4752231    894
+ 659651  4752261    888
+ 659651  4752291    882
+ 659651  4752321    878
+ 659651  4752351    874
+ 659651  4752381    871
+ 659651  4752411    869
+ 659651  4752441    868
+ 659651  4752471    867
+ 659651  4752501    866
+ 659651  4752531    866
+ 659651  4752561    865
+ 659651  4752591    864
+ 659651  4752621    862
+ 659651  4752651    861
+ 659651  4752681    860
+ 659651  4752711    860
+ 659651  4752741    859
+ 659651  4752771    859
+ 659651  4752801    858
+ 659651  4752831    857
+ 659651  4752861    856
+ 659651  4752891    855
+ 659651  4752921    854
+ 659651  4752951    853
+ 659651  4752981    853
+ 659651  4753011    853
+ 659651  4753041    854
+ 659651  4753071    854
+ 659651  4753101    854
+ 659651  4753131    854
+ 659651  4753161    843
+ 659651  4753191    827
+ 659651  4753221    809
+ 659651  4753251    809
+ 659651  4753281    809
+ 659651  4753311    809
+ 659651  4753341    809
+ 659651  4753371    809
+ 659651  4753401    816
+ 659651  4753431    831
+ 659651  4753461    848
+ 659651  4753491    857
+ 659651  4753521    855
+ 659651  4753551    852
+ 659651  4753581    848
+ 659651  4753611    848
+ 659651  4753641    848
+ 659651  4753671    849
+ 659651  4753701    850
+ 659651  4753731    850
+ 659651  4753761    850
+ 659651  4753791    851
+ 659651  4753821    852
+ 659651  4753851    857
+ 659651  4753881    867
+ 659651  4753911    876
+ 659651  4753941    880
+ 659651  4753971    885
+ 659651  4754001    892
+ 659651  4754031    894
+ 659651  4754061    897
+ 659651  4754091    907
+ 659651  4754121    933
+ 659651  4754151    953
+ 659651  4754181    953
+ 659651  4754211    953
+ 659651  4754241    953
+ 659651  4754271    953
+ 659651  4754301    954
+ 659651  4754331    955
+ 659651  4754361    955
+ 659651  4754391    954
+ 659651  4754421    954
+ 659651  4754451    954
+ 659651  4754481    954
+ 659651  4754511    954
+ 659651  4754541    954
+ 659681  4751301    960
+ 659681  4751331    963
+ 659681  4751361    968
+ 659681  4751391    970
+ 659681  4751421    972
+ 659681  4751451    975
+ 659681  4751481    978
+ 659681  4751511    982
+ 659681  4751541    987
+ 659681  4751571    991
+ 659681  4751601    995
+ 659681  4751631    998
+ 659681  4751661   1000
+ 659681  4751691   1000
+ 659681  4751721    999
+ 659681  4751751   1000
+ 659681  4751781    999
+ 659681  4751811    998
+ 659681  4751841    997
+ 659681  4751871    995
+ 659681  4751901    994
+ 659681  4751931    992
+ 659681  4751961    989
+ 659681  4751991    986
+ 659681  4752021    983
+ 659681  4752051    965
+ 659681  4752081    945
+ 659681  4752111    934
+ 659681  4752141    918
+ 659681  4752171    910
+ 659681  4752201    900
+ 659681  4752231    892
+ 659681  4752261    887
+ 659681  4752291    882
+ 659681  4752321    878
+ 659681  4752351    874
+ 659681  4752381    871
+ 659681  4752411    869
+ 659681  4752441    868
+ 659681  4752471    867
+ 659681  4752501    867
+ 659681  4752531    866
+ 659681  4752561    865
+ 659681  4752591    863
+ 659681  4752621    862
+ 659681  4752651    861
+ 659681  4752681    861
+ 659681  4752711    860
+ 659681  4752741    859
+ 659681  4752771    859
+ 659681  4752801    858
+ 659681  4752831    857
+ 659681  4752861    856
+ 659681  4752891    855
+ 659681  4752921    854
+ 659681  4752951    853
+ 659681  4752981    853
+ 659681  4753011    853
+ 659681  4753041    854
+ 659681  4753071    854
+ 659681  4753101    854
+ 659681  4753131    847
+ 659681  4753161    831
+ 659681  4753191    809
+ 659681  4753221    809
+ 659681  4753251    809
+ 659681  4753281    809
+ 659681  4753311    809
+ 659681  4753341    809
+ 659681  4753371    809
+ 659681  4753401    822
+ 659681  4753431    837
+ 659681  4753461    852
+ 659681  4753491    856
+ 659681  4753521    855
+ 659681  4753551    851
+ 659681  4753581    848
+ 659681  4753611    848
+ 659681  4753641    850
+ 659681  4753671    852
+ 659681  4753701    851
+ 659681  4753731    851
+ 659681  4753761    850
+ 659681  4753791    851
+ 659681  4753821    852
+ 659681  4753851    853
+ 659681  4753881    863
+ 659681  4753911    872
+ 659681  4753941    879
+ 659681  4753971    885
+ 659681  4754001    899
+ 659681  4754031    895
+ 659681  4754061    898
+ 659681  4754091    907
+ 659681  4754121    936
+ 659681  4754151    953
+ 659681  4754181    953
+ 659681  4754211    953
+ 659681  4754241    954
+ 659681  4754271    953
+ 659681  4754301    954
+ 659681  4754331    955
+ 659681  4754361    955
+ 659681  4754391    954
+ 659681  4754421    955
+ 659681  4754451    954
+ 659681  4754481    954
+ 659681  4754511    954
+ 659681  4754541    954
+ 659711  4751301    959
+ 659711  4751331    963
+ 659711  4751361    968
+ 659711  4751391    970
+ 659711  4751421    972
+ 659711  4751451    975
+ 659711  4751481    978
+ 659711  4751511    982
+ 659711  4751541    986
+ 659711  4751571    991
+ 659711  4751601    994
+ 659711  4751631    998
+ 659711  4751661   1000
+ 659711  4751691   1001
+ 659711  4751721   1001
+ 659711  4751751   1000
+ 659711  4751781    999
+ 659711  4751811    998
+ 659711  4751841    997
+ 659711  4751871    995
+ 659711  4751901    994
+ 659711  4751931    991
+ 659711  4751961    989
+ 659711  4751991    987
+ 659711  4752021    980
+ 659711  4752051    959
+ 659711  4752081    939
+ 659711  4752111    923
+ 659711  4752141    911
+ 659711  4752171    903
+ 659711  4752201    896
+ 659711  4752231    891
+ 659711  4752261    887
+ 659711  4752291    883
+ 659711  4752321    877
+ 659711  4752351    874
+ 659711  4752381    871
+ 659711  4752411    869
+ 659711  4752441    868
+ 659711  4752471    867
+ 659711  4752501    867
+ 659711  4752531    866
+ 659711  4752561    865
+ 659711  4752591    864
+ 659711  4752621    863
+ 659711  4752651    862
+ 659711  4752681    861
+ 659711  4752711    860
+ 659711  4752741    859
+ 659711  4752771    858
+ 659711  4752801    858
+ 659711  4752831    857
+ 659711  4752861    856
+ 659711  4752891    855
+ 659711  4752921    854
+ 659711  4752951    853
+ 659711  4752981    854
+ 659711  4753011    853
+ 659711  4753041    854
+ 659711  4753071    854
+ 659711  4753101    849
+ 659711  4753131    833
+ 659711  4753161    818
+ 659711  4753191    809
+ 659711  4753221    809
+ 659711  4753251    809
+ 659711  4753281    809
+ 659711  4753311    809
+ 659711  4753341    809
+ 659711  4753371    809
+ 659711  4753401    828
+ 659711  4753431    843
+ 659711  4753461    853
+ 659711  4753491    857
+ 659711  4753521    855
+ 659711  4753551    851
+ 659711  4753581    848
+ 659711  4753611    850
+ 659711  4753641    854
+ 659711  4753671    853
+ 659711  4753701    853
+ 659711  4753731    852
+ 659711  4753761    852
+ 659711  4753791    852
+ 659711  4753821    852
+ 659711  4753851    853
+ 659711  4753881    856
+ 659711  4753911    868
+ 659711  4753941    876
+ 659711  4753971    881
+ 659711  4754001    893
+ 659711  4754031    893
+ 659711  4754061    897
+ 659711  4754091    907
+ 659711  4754121    937
+ 659711  4754151    953
+ 659711  4754181    953
+ 659711  4754211    953
+ 659711  4754241    953
+ 659711  4754271    954
+ 659711  4754301    954
+ 659711  4754331    955
+ 659711  4754361    955
+ 659711  4754391    955
+ 659711  4754421    954
+ 659711  4754451    954
+ 659711  4754481    954
+ 659711  4754511    954
+ 659711  4754541    954
+ 659741  4751301    961
+ 659741  4751331    964
+ 659741  4751361    968
+ 659741  4751391    970
+ 659741  4751421    972
+ 659741  4751451    974
+ 659741  4751481    977
+ 659741  4751511    981
+ 659741  4751541    985
+ 659741  4751571    989
+ 659741  4751601    993
+ 659741  4751631    998
+ 659741  4751661   1000
+ 659741  4751691   1001
+ 659741  4751721   1001
+ 659741  4751751   1001
+ 659741  4751781   1000
+ 659741  4751811    999
+ 659741  4751841    997
+ 659741  4751871    996
+ 659741  4751901    994
+ 659741  4751931    993
+ 659741  4751961    991
+ 659741  4751991    987
+ 659741  4752021    978
+ 659741  4752051    958
+ 659741  4752081    937
+ 659741  4752111    915
+ 659741  4752141    906
+ 659741  4752171    899
+ 659741  4752201    892
+ 659741  4752231    889
+ 659741  4752261    886
+ 659741  4752291    883
+ 659741  4752321    877
+ 659741  4752351    874
+ 659741  4752381    872
+ 659741  4752411    870
+ 659741  4752441    869
+ 659741  4752471    868
+ 659741  4752501    867
+ 659741  4752531    866
+ 659741  4752561    865
+ 659741  4752591    864
+ 659741  4752621    863
+ 659741  4752651    862
+ 659741  4752681    861
+ 659741  4752711    860
+ 659741  4752741    859
+ 659741  4752771    858
+ 659741  4752801    858
+ 659741  4752831    857
+ 659741  4752861    856
+ 659741  4752891    856
+ 659741  4752921    855
+ 659741  4752951    855
+ 659741  4752981    855
+ 659741  4753011    854
+ 659741  4753041    855
+ 659741  4753071    854
+ 659741  4753101    842
+ 659741  4753131    822
+ 659741  4753161    809
+ 659741  4753191    809
+ 659741  4753221    809
+ 659741  4753251    809
+ 659741  4753281    809
+ 659741  4753311    809
+ 659741  4753341    809
+ 659741  4753371    817
+ 659741  4753401    832
+ 659741  4753431    846
+ 659741  4753461    854
+ 659741  4753491    855
+ 659741  4753521    855
+ 659741  4753551    852
+ 659741  4753581    848
+ 659741  4753611    852
+ 659741  4753641    854
+ 659741  4753671    854
+ 659741  4753701    853
+ 659741  4753731    853
+ 659741  4753761    852
+ 659741  4753791    852
+ 659741  4753821    853
+ 659741  4753851    853
+ 659741  4753881    853
+ 659741  4753911    861
+ 659741  4753941    869
+ 659741  4753971    875
+ 659741  4754001    879
+ 659741  4754031    885
+ 659741  4754061    892
+ 659741  4754091    906
+ 659741  4754121    937
+ 659741  4754151    953
+ 659741  4754181    953
+ 659741  4754211    953
+ 659741  4754241    953
+ 659741  4754271    954
+ 659741  4754301    954
+ 659741  4754331    955
+ 659741  4754361    955
+ 659741  4754391    955
+ 659741  4754421    954
+ 659741  4754451    954
+ 659741  4754481    954
+ 659741  4754511    954
+ 659741  4754541    954
+ 659771  4751301    968
+ 659771  4751331    966
+ 659771  4751361    969
+ 659771  4751391    970
+ 659771  4751421    972
+ 659771  4751451    974
+ 659771  4751481    977
+ 659771  4751511    980
+ 659771  4751541    984
+ 659771  4751571    988
+ 659771  4751601    993
+ 659771  4751631    998
+ 659771  4751661   1000
+ 659771  4751691   1002
+ 659771  4751721   1002
+ 659771  4751751   1001
+ 659771  4751781   1000
+ 659771  4751811    999
+ 659771  4751841    998
+ 659771  4751871    997
+ 659771  4751901    995
+ 659771  4751931    993
+ 659771  4751961    991
+ 659771  4751991    986
+ 659771  4752021    975
+ 659771  4752051    953
+ 659771  4752081    933
+ 659771  4752111    915
+ 659771  4752141    904
+ 659771  4752171    897
+ 659771  4752201    891
+ 659771  4752231    888
+ 659771  4752261    885
+ 659771  4752291    882
+ 659771  4752321    878
+ 659771  4752351    875
+ 659771  4752381    873
+ 659771  4752411    871
+ 659771  4752441    869
+ 659771  4752471    868
+ 659771  4752501    867
+ 659771  4752531    866
+ 659771  4752561    865
+ 659771  4752591    864
+ 659771  4752621    863
+ 659771  4752651    862
+ 659771  4752681    861
+ 659771  4752711    860
+ 659771  4752741    859
+ 659771  4752771    857
+ 659771  4752801    857
+ 659771  4752831    857
+ 659771  4752861    857
+ 659771  4752891    856
+ 659771  4752921    856
+ 659771  4752951    856
+ 659771  4752981    855
+ 659771  4753011    855
+ 659771  4753041    854
+ 659771  4753071    852
+ 659771  4753101    839
+ 659771  4753131    821
+ 659771  4753161    809
+ 659771  4753191    809
+ 659771  4753221    809
+ 659771  4753251    809
+ 659771  4753281    809
+ 659771  4753311    809
+ 659771  4753341    809
+ 659771  4753371    819
+ 659771  4753401    834
+ 659771  4753431    849
+ 659771  4753461    856
+ 659771  4753491    854
+ 659771  4753521    854
+ 659771  4753551    853
+ 659771  4753581    852
+ 659771  4753611    853
+ 659771  4753641    854
+ 659771  4753671    854
+ 659771  4753701    854
+ 659771  4753731    853
+ 659771  4753761    853
+ 659771  4753791    853
+ 659771  4753821    853
+ 659771  4753851    854
+ 659771  4753881    854
+ 659771  4753911    854
+ 659771  4753941    859
+ 659771  4753971    867
+ 659771  4754001    873
+ 659771  4754031    880
+ 659771  4754061    890
+ 659771  4754091    905
+ 659771  4754121    928
+ 659771  4754151    953
+ 659771  4754181    953
+ 659771  4754211    953
+ 659771  4754241    954
+ 659771  4754271    954
+ 659771  4754301    955
+ 659771  4754331    955
+ 659771  4754361    955
+ 659771  4754391    955
+ 659771  4754421    955
+ 659771  4754451    954
+ 659771  4754481    954
+ 659771  4754511    954
+ 659771  4754541    954
+ 659801  4751301    968
+ 659801  4751331    967
+ 659801  4751361    968
+ 659801  4751391    970
+ 659801  4751421    973
+ 659801  4751451    975
+ 659801  4751481    978
+ 659801  4751511    981
+ 659801  4751541    984
+ 659801  4751571    989
+ 659801  4751601    994
+ 659801  4751631    998
+ 659801  4751661   1000
+ 659801  4751691   1002
+ 659801  4751721   1002
+ 659801  4751751   1002
+ 659801  4751781   1001
+ 659801  4751811   1000
+ 659801  4751841    999
+ 659801  4751871    997
+ 659801  4751901    996
+ 659801  4751931    994
+ 659801  4751961    991
+ 659801  4751991    985
+ 659801  4752021    970
+ 659801  4752051    947
+ 659801  4752081    927
+ 659801  4752111    909
+ 659801  4752141    899
+ 659801  4752171    895
+ 659801  4752201    890
+ 659801  4752231    887
+ 659801  4752261    885
+ 659801  4752291    882
+ 659801  4752321    878
+ 659801  4752351    876
+ 659801  4752381    873
+ 659801  4752411    871
+ 659801  4752441    870
+ 659801  4752471    868
+ 659801  4752501    867
+ 659801  4752531    866
+ 659801  4752561    865
+ 659801  4752591    864
+ 659801  4752621    863
+ 659801  4752651    862
+ 659801  4752681    861
+ 659801  4752711    860
+ 659801  4752741    858
+ 659801  4752771    856
+ 659801  4752801    857
+ 659801  4752831    856
+ 659801  4752861    856
+ 659801  4752891    856
+ 659801  4752921    855
+ 659801  4752951    855
+ 659801  4752981    855
+ 659801  4753011    854
+ 659801  4753041    853
+ 659801  4753071    847
+ 659801  4753101    839
+ 659801  4753131    820
+ 659801  4753161    809
+ 659801  4753191    809
+ 659801  4753221    809
+ 659801  4753251    809
+ 659801  4753281    809
+ 659801  4753311    809
+ 659801  4753341    809
+ 659801  4753371    822
+ 659801  4753401    837
+ 659801  4753431    852
+ 659801  4753461    854
+ 659801  4753491    854
+ 659801  4753521    854
+ 659801  4753551    854
+ 659801  4753581    854
+ 659801  4753611    854
+ 659801  4753641    854
+ 659801  4753671    855
+ 659801  4753701    854
+ 659801  4753731    854
+ 659801  4753761    853
+ 659801  4753791    854
+ 659801  4753821    854
+ 659801  4753851    854
+ 659801  4753881    854
+ 659801  4753911    854
+ 659801  4753941    854
+ 659801  4753971    860
+ 659801  4754001    868
+ 659801  4754031    878
+ 659801  4754061    892
+ 659801  4754091    902
+ 659801  4754121    928
+ 659801  4754151    953
+ 659801  4754181    953
+ 659801  4754211    953
+ 659801  4754241    953
+ 659801  4754271    954
+ 659801  4754301    955
+ 659801  4754331    955
+ 659801  4754361    955
+ 659801  4754391    955
+ 659801  4754421    955
+ 659801  4754451    954
+ 659801  4754481    955
+ 659801  4754511    954
+ 659801  4754541    955
+ 659831  4751301    969
+ 659831  4751331    968
+ 659831  4751361    967
+ 659831  4751391    970
+ 659831  4751421    973
+ 659831  4751451    976
+ 659831  4751481    979
+ 659831  4751511    982
+ 659831  4751541    986
+ 659831  4751571    990
+ 659831  4751601    995
+ 659831  4751631    999
+ 659831  4751661   1001
+ 659831  4751691   1002
+ 659831  4751721   1002
+ 659831  4751751   1002
+ 659831  4751781   1001
+ 659831  4751811   1001
+ 659831  4751841    999
+ 659831  4751871    998
+ 659831  4751901    998
+ 659831  4751931    996
+ 659831  4751961    991
+ 659831  4751991    982
+ 659831  4752021    966
+ 659831  4752051    942
+ 659831  4752081    921
+ 659831  4752111    909
+ 659831  4752141    900
+ 659831  4752171    894
+ 659831  4752201    890
+ 659831  4752231    886
+ 659831  4752261    883
+ 659831  4752291    880
+ 659831  4752321    878
+ 659831  4752351    875
+ 659831  4752381    873
+ 659831  4752411    871
+ 659831  4752441    870
+ 659831  4752471    868
+ 659831  4752501    867
+ 659831  4752531    866
+ 659831  4752561    865
+ 659831  4752591    864
+ 659831  4752621    863
+ 659831  4752651    862
+ 659831  4752681    861
+ 659831  4752711    859
+ 659831  4752741    856
+ 659831  4752771    854
+ 659831  4752801    855
+ 659831  4752831    855
+ 659831  4752861    855
+ 659831  4752891    855
+ 659831  4752921    855
+ 659831  4752951    854
+ 659831  4752981    854
+ 659831  4753011    850
+ 659831  4753041    840
+ 659831  4753071    833
+ 659831  4753101    829
+ 659831  4753131    820
+ 659831  4753161    809
+ 659831  4753191    809
+ 659831  4753221    809
+ 659831  4753251    809
+ 659831  4753281    809
+ 659831  4753311    809
+ 659831  4753341    809
+ 659831  4753371    827
+ 659831  4753401    838
+ 659831  4753431    853
+ 659831  4753461    854
+ 659831  4753491    854
+ 659831  4753521    854
+ 659831  4753551    854
+ 659831  4753581    854
+ 659831  4753611    855
+ 659831  4753641    855
+ 659831  4753671    855
+ 659831  4753701    855
+ 659831  4753731    854
+ 659831  4753761    854
+ 659831  4753791    854
+ 659831  4753821    854
+ 659831  4753851    855
+ 659831  4753881    855
+ 659831  4753911    854
+ 659831  4753941    854
+ 659831  4753971    854
+ 659831  4754001    861
+ 659831  4754031    872
+ 659831  4754061    886
+ 659831  4754091    898
+ 659831  4754121    923
+ 659831  4754151    953
+ 659831  4754181    953
+ 659831  4754211    953
+ 659831  4754241    953
+ 659831  4754271    954
+ 659831  4754301    954
+ 659831  4754331    955
+ 659831  4754361    955
+ 659831  4754391    955
+ 659831  4754421    955
+ 659831  4754451    955
+ 659831  4754481    954
+ 659831  4754511    955
+ 659831  4754541    955
+ 659861  4751301    969
+ 659861  4751331    968
+ 659861  4751361    967
+ 659861  4751391    969
+ 659861  4751421    974
+ 659861  4751451    977
+ 659861  4751481    980
+ 659861  4751511    983
+ 659861  4751541    988
+ 659861  4751571    992
+ 659861  4751601    997
+ 659861  4751631    999
+ 659861  4751661   1001
+ 659861  4751691   1002
+ 659861  4751721   1003
+ 659861  4751751   1003
+ 659861  4751781   1002
+ 659861  4751811   1002
+ 659861  4751841   1001
+ 659861  4751871   1000
+ 659861  4751901    999
+ 659861  4751931    997
+ 659861  4751961    988
+ 659861  4751991    975
+ 659861  4752021    954
+ 659861  4752051    934
+ 659861  4752081    916
+ 659861  4752111    906
+ 659861  4752141    899
+ 659861  4752171    891
+ 659861  4752201    888
+ 659861  4752231    885
+ 659861  4752261    881
+ 659861  4752291    878
+ 659861  4752321    876
+ 659861  4752351    874
+ 659861  4752381    872
+ 659861  4752411    871
+ 659861  4752441    869
+ 659861  4752471    868
+ 659861  4752501    867
+ 659861  4752531    866
+ 659861  4752561    865
+ 659861  4752591    864
+ 659861  4752621    863
+ 659861  4752651    862
+ 659861  4752681    861
+ 659861  4752711    859
+ 659861  4752741    855
+ 659861  4752771    853
+ 659861  4752801    854
+ 659861  4752831    854
+ 659861  4752861    854
+ 659861  4752891    854
+ 659861  4752921    853
+ 659861  4752951    849
+ 659861  4752981    842
+ 659861  4753011    834
+ 659861  4753041    824
+ 659861  4753071    816
+ 659861  4753101    809
+ 659861  4753131    809
+ 659861  4753161    809
+ 659861  4753191    809
+ 659861  4753221    809
+ 659861  4753251    809
+ 659861  4753281    809
+ 659861  4753311    809
+ 659861  4753341    816
+ 659861  4753371    828
+ 659861  4753401    839
+ 659861  4753431    853
+ 659861  4753461    854
+ 659861  4753491    854
+ 659861  4753521    854
+ 659861  4753551    855
+ 659861  4753581    855
+ 659861  4753611    855
+ 659861  4753641    856
+ 659861  4753671    855
+ 659861  4753701    855
+ 659861  4753731    855
+ 659861  4753761    855
+ 659861  4753791    855
+ 659861  4753821    855
+ 659861  4753851    855
+ 659861  4753881    855
+ 659861  4753911    855
+ 659861  4753941    854
+ 659861  4753971    854
+ 659861  4754001    858
+ 659861  4754031    866
+ 659861  4754061    879
+ 659861  4754091    894
+ 659861  4754121    908
+ 659861  4754151    950
+ 659861  4754181    951
+ 659861  4754211    953
+ 659861  4754241    953
+ 659861  4754271    954
+ 659861  4754301    954
+ 659861  4754331    955
+ 659861  4754361    955
+ 659861  4754391    955
+ 659861  4754421    955
+ 659861  4754451    955
+ 659861  4754481    955
+ 659861  4754511    955
+ 659861  4754541    955
+ 659891  4751301    970
+ 659891  4751331    969
+ 659891  4751361    967
+ 659891  4751391    969
+ 659891  4751421    975
+ 659891  4751451    978
+ 659891  4751481    981
+ 659891  4751511    985
+ 659891  4751541    989
+ 659891  4751571    994
+ 659891  4751601    998
+ 659891  4751631   1000
+ 659891  4751661   1002
+ 659891  4751691   1002
+ 659891  4751721   1003
+ 659891  4751751   1002
+ 659891  4751781   1003
+ 659891  4751811   1003
+ 659891  4751841   1002
+ 659891  4751871   1001
+ 659891  4751901    999
+ 659891  4751931    994
+ 659891  4751961    983
+ 659891  4751991    965
+ 659891  4752021    945
+ 659891  4752051    924
+ 659891  4752081    911
+ 659891  4752111    903
+ 659891  4752141    895
+ 659891  4752171    890
+ 659891  4752201    887
+ 659891  4752231    883
+ 659891  4752261    880
+ 659891  4752291    877
+ 659891  4752321    875
+ 659891  4752351    873
+ 659891  4752381    871
+ 659891  4752411    870
+ 659891  4752441    869
+ 659891  4752471    868
+ 659891  4752501    867
+ 659891  4752531    866
+ 659891  4752561    864
+ 659891  4752591    864
+ 659891  4752621    863
+ 659891  4752651    862
+ 659891  4752681    861
+ 659891  4752711    858
+ 659891  4752741    854
+ 659891  4752771    852
+ 659891  4752801    847
+ 659891  4752831    847
+ 659891  4752861    846
+ 659891  4752891    844
+ 659891  4752921    841
+ 659891  4752951    832
+ 659891  4752981    826
+ 659891  4753011    819
+ 659891  4753041    809
+ 659891  4753071    809
+ 659891  4753101    809
+ 659891  4753131    809
+ 659891  4753161    809
+ 659891  4753191    809
+ 659891  4753221    809
+ 659891  4753251    809
+ 659891  4753281    809
+ 659891  4753311    809
+ 659891  4753341    817
+ 659891  4753371    830
+ 659891  4753401    845
+ 659891  4753431    854
+ 659891  4753461    854
+ 659891  4753491    855
+ 659891  4753521    855
+ 659891  4753551    855
+ 659891  4753581    856
+ 659891  4753611    856
+ 659891  4753641    856
+ 659891  4753671    856
+ 659891  4753701    856
+ 659891  4753731    856
+ 659891  4753761    856
+ 659891  4753791    856
+ 659891  4753821    855
+ 659891  4753851    856
+ 659891  4753881    856
+ 659891  4753911    856
+ 659891  4753941    856
+ 659891  4753971    856
+ 659891  4754001    858
+ 659891  4754031    860
+ 659891  4754061    872
+ 659891  4754091    884
+ 659891  4754121    900
+ 659891  4754151    933
+ 659891  4754181    953
+ 659891  4754211    953
+ 659891  4754241    953
+ 659891  4754271    953
+ 659891  4754301    954
+ 659891  4754331    955
+ 659891  4754361    955
+ 659891  4754391    955
+ 659891  4754421    956
+ 659891  4754451    955
+ 659891  4754481    955
+ 659891  4754511    955
+ 659891  4754541    955
+ 659921  4751301    970
+ 659921  4751331    969
+ 659921  4751361    967
+ 659921  4751391    970
+ 659921  4751421    975
+ 659921  4751451    979
+ 659921  4751481    982
+ 659921  4751511    986
+ 659921  4751541    990
+ 659921  4751571    995
+ 659921  4751601    999
+ 659921  4751631   1001
+ 659921  4751661   1002
+ 659921  4751691   1002
+ 659921  4751721   1003
+ 659921  4751751   1003
+ 659921  4751781   1004
+ 659921  4751811   1003
+ 659921  4751841   1002
+ 659921  4751871   1001
+ 659921  4751901    998
+ 659921  4751931    992
+ 659921  4751961    972
+ 659921  4751991    956
+ 659921  4752021    934
+ 659921  4752051    919
+ 659921  4752081    908
+ 659921  4752111    899
+ 659921  4752141    893
+ 659921  4752171    889
+ 659921  4752201    885
+ 659921  4752231    882
+ 659921  4752261    879
+ 659921  4752291    876
+ 659921  4752321    875
+ 659921  4752351    873
+ 659921  4752381    871
+ 659921  4752411    869
+ 659921  4752441    868
+ 659921  4752471    867
+ 659921  4752501    866
+ 659921  4752531    865
+ 659921  4752561    864
+ 659921  4752591    863
+ 659921  4752621    862
+ 659921  4752651    862
+ 659921  4752681    861
+ 659921  4752711    858
+ 659921  4752741    855
+ 659921  4752771    854
+ 659921  4752801    847
+ 659921  4752831    839
+ 659921  4752861    828
+ 659921  4752891    828
+ 659921  4752921    824
+ 659921  4752951    819
+ 659921  4752981    814
+ 659921  4753011    809
+ 659921  4753041    809
+ 659921  4753071    809
+ 659921  4753101    809
+ 659921  4753131    809
+ 659921  4753161    809
+ 659921  4753191    809
+ 659921  4753221    809
+ 659921  4753251    809
+ 659921  4753281    809
+ 659921  4753311    809
+ 659921  4753341    823
+ 659921  4753371    840
+ 659921  4753401    851
+ 659921  4753431    854
+ 659921  4753461    855
+ 659921  4753491    855
+ 659921  4753521    856
+ 659921  4753551    856
+ 659921  4753581    856
+ 659921  4753611    857
+ 659921  4753641    857
+ 659921  4753671    857
+ 659921  4753701    857
+ 659921  4753731    857
+ 659921  4753761    857
+ 659921  4753791    857
+ 659921  4753821    857
+ 659921  4753851    857
+ 659921  4753881    857
+ 659921  4753911    857
+ 659921  4753941    857
+ 659921  4753971    857
+ 659921  4754001    859
+ 659921  4754031    859
+ 659921  4754061    864
+ 659921  4754091    877
+ 659921  4754121    894
+ 659921  4754151    922
+ 659921  4754181    951
+ 659921  4754211    953
+ 659921  4754241    953
+ 659921  4754271    953
+ 659921  4754301    954
+ 659921  4754331    955
+ 659921  4754361    955
+ 659921  4754391    955
+ 659921  4754421    955
+ 659921  4754451    955
+ 659921  4754481    955
+ 659921  4754511    955
+ 659921  4754541    955
+ 659951  4751301    971
+ 659951  4751331    969
+ 659951  4751361    967
+ 659951  4751391    971
+ 659951  4751421    976
+ 659951  4751451    979
+ 659951  4751481    983
+ 659951  4751511    986
+ 659951  4751541    990
+ 659951  4751571    995
+ 659951  4751601    999
+ 659951  4751631   1001
+ 659951  4751661   1002
+ 659951  4751691   1003
+ 659951  4751721   1003
+ 659951  4751751   1003
+ 659951  4751781   1003
+ 659951  4751811   1004
+ 659951  4751841   1002
+ 659951  4751871   1000
+ 659951  4751901    996
+ 659951  4751931    988
+ 659951  4751961    963
+ 659951  4751991    945
+ 659951  4752021    927
+ 659951  4752051    913
+ 659951  4752081    907
+ 659951  4752111    898
+ 659951  4752141    891
+ 659951  4752171    887
+ 659951  4752201    883
+ 659951  4752231    880
+ 659951  4752261    877
+ 659951  4752291    876
+ 659951  4752321    874
+ 659951  4752351    872
+ 659951  4752381    870
+ 659951  4752411    868
+ 659951  4752441    868
+ 659951  4752471    867
+ 659951  4752501    866
+ 659951  4752531    865
+ 659951  4752561    864
+ 659951  4752591    863
+ 659951  4752621    861
+ 659951  4752651    861
+ 659951  4752681    859
+ 659951  4752711    857
+ 659951  4752741    855
+ 659951  4752771    854
+ 659951  4752801    845
+ 659951  4752831    838
+ 659951  4752861    822
+ 659951  4752891    814
+ 659951  4752921    813
+ 659951  4752951    809
+ 659951  4752981    809
+ 659951  4753011    809
+ 659951  4753041    809
+ 659951  4753071    809
+ 659951  4753101    809
+ 659951  4753131    809
+ 659951  4753161    809
+ 659951  4753191    809
+ 659951  4753221    809
+ 659951  4753251    809
+ 659951  4753281    809
+ 659951  4753311    809
+ 659951  4753341    836
+ 659951  4753371    851
+ 659951  4753401    854
+ 659951  4753431    855
+ 659951  4753461    856
+ 659951  4753491    856
+ 659951  4753521    857
+ 659951  4753551    857
+ 659951  4753581    857
+ 659951  4753611    857
+ 659951  4753641    858
+ 659951  4753671    858
+ 659951  4753701    858
+ 659951  4753731    858
+ 659951  4753761    858
+ 659951  4753791    858
+ 659951  4753821    858
+ 659951  4753851    858
+ 659951  4753881    858
+ 659951  4753911    858
+ 659951  4753941    858
+ 659951  4753971    858
+ 659951  4754001    859
+ 659951  4754031    859
+ 659951  4754061    860
+ 659951  4754091    872
+ 659951  4754121    888
+ 659951  4754151    903
+ 659951  4754181    923
+ 659951  4754211    953
+ 659951  4754241    952
+ 659951  4754271    953
+ 659951  4754301    954
+ 659951  4754331    954
+ 659951  4754361    955
+ 659951  4754391    956
+ 659951  4754421    955
+ 659951  4754451    955
+ 659951  4754481    955
+ 659951  4754511    955
+ 659951  4754541    956
+ 659981  4751301    972
+ 659981  4751331    969
+ 659981  4751361    967
+ 659981  4751391    972
+ 659981  4751421    977
+ 659981  4751451    980
+ 659981  4751481    983
+ 659981  4751511    987
+ 659981  4751541    990
+ 659981  4751571    995
+ 659981  4751601    998
+ 659981  4751631   1000
+ 659981  4751661   1002
+ 659981  4751691   1003
+ 659981  4751721   1003
+ 659981  4751751   1003
+ 659981  4751781   1003
+ 659981  4751811   1003
+ 659981  4751841   1002
+ 659981  4751871   1000
+ 659981  4751901    995
+ 659981  4751931    982
+ 659981  4751961    958
+ 659981  4751991    938
+ 659981  4752021    921
+ 659981  4752051    911
+ 659981  4752081    901
+ 659981  4752111    896
+ 659981  4752141    890
+ 659981  4752171    884
+ 659981  4752201    882
+ 659981  4752231    879
+ 659981  4752261    876
+ 659981  4752291    875
+ 659981  4752321    874
+ 659981  4752351    872
+ 659981  4752381    870
+ 659981  4752411    869
+ 659981  4752441    868
+ 659981  4752471    867
+ 659981  4752501    866
+ 659981  4752531    864
+ 659981  4752561    863
+ 659981  4752591    862
+ 659981  4752621    861
+ 659981  4752651    860
+ 659981  4752681    858
+ 659981  4752711    855
+ 659981  4752741    853
+ 659981  4752771    853
+ 659981  4752801    854
+ 659981  4752831    841
+ 659981  4752861    823
+ 659981  4752891    813
+ 659981  4752921    809
+ 659981  4752951    809
+ 659981  4752981    809
+ 659981  4753011    809
+ 659981  4753041    809
+ 659981  4753071    809
+ 659981  4753101    809
+ 659981  4753131    809
+ 659981  4753161    809
+ 659981  4753191    809
+ 659981  4753221    815
+ 659981  4753251    820
+ 659981  4753281    822
+ 659981  4753311    832
+ 659981  4753341    846
+ 659981  4753371    854
+ 659981  4753401    856
+ 659981  4753431    856
+ 659981  4753461    857
+ 659981  4753491    857
+ 659981  4753521    857
+ 659981  4753551    857
+ 659981  4753581    858
+ 659981  4753611    858
+ 659981  4753641    858
+ 659981  4753671    858
+ 659981  4753701    859
+ 659981  4753731    859
+ 659981  4753761    859
+ 659981  4753791    859
+ 659981  4753821    859
+ 659981  4753851    859
+ 659981  4753881    859
+ 659981  4753911    859
+ 659981  4753941    859
+ 659981  4753971    859
+ 659981  4754001    859
+ 659981  4754031    859
+ 659981  4754061    860
+ 659981  4754091    865
+ 659981  4754121    877
+ 659981  4754151    891
+ 659981  4754181    912
+ 659981  4754211    938
+ 659981  4754241    953
+ 659981  4754271    953
+ 659981  4754301    954
+ 659981  4754331    954
+ 659981  4754361    955
+ 659981  4754391    956
+ 659981  4754421    955
+ 659981  4754451    955
+ 659981  4754481    955
+ 659981  4754511    956
+ 659981  4754541    956
+ 660011  4751301    972
+ 660011  4751331    970
+ 660011  4751361    967
+ 660011  4751391    973
+ 660011  4751421    977
+ 660011  4751451    981
+ 660011  4751481    984
+ 660011  4751511    987
+ 660011  4751541    990
+ 660011  4751571    995
+ 660011  4751601    998
+ 660011  4751631   1000
+ 660011  4751661   1002
+ 660011  4751691   1003
+ 660011  4751721   1003
+ 660011  4751751   1004
+ 660011  4751781   1003
+ 660011  4751811   1003
+ 660011  4751841   1001
+ 660011  4751871    998
+ 660011  4751901    991
+ 660011  4751931    975
+ 660011  4751961    951
+ 660011  4751991    937
+ 660011  4752021    920
+ 660011  4752051    910
+ 660011  4752081    900
+ 660011  4752111    894
+ 660011  4752141    890
+ 660011  4752171    883
+ 660011  4752201    880
+ 660011  4752231    878
+ 660011  4752261    876
+ 660011  4752291    875
+ 660011  4752321    873
+ 660011  4752351    872
+ 660011  4752381    871
+ 660011  4752411    869
+ 660011  4752441    868
+ 660011  4752471    867
+ 660011  4752501    865
+ 660011  4752531    864
+ 660011  4752561    862
+ 660011  4752591    861
+ 660011  4752621    861
+ 660011  4752651    859
+ 660011  4752681    857
+ 660011  4752711    854
+ 660011  4752741    854
+ 660011  4752771    856
+ 660011  4752801    847
+ 660011  4752831    831
+ 660011  4752861    815
+ 660011  4752891    809
+ 660011  4752921    809
+ 660011  4752951    809
+ 660011  4752981    809
+ 660011  4753011    809
+ 660011  4753041    809
+ 660011  4753071    809
+ 660011  4753101    809
+ 660011  4753131    809
+ 660011  4753161    809
+ 660011  4753191    822
+ 660011  4753221    825
+ 660011  4753251    834
+ 660011  4753281    843
+ 660011  4753311    848
+ 660011  4753341    854
+ 660011  4753371    861
+ 660011  4753401    860
+ 660011  4753431    858
+ 660011  4753461    858
+ 660011  4753491    858
+ 660011  4753521    858
+ 660011  4753551    858
+ 660011  4753581    858
+ 660011  4753611    859
+ 660011  4753641    859
+ 660011  4753671    859
+ 660011  4753701    860
+ 660011  4753731    860
+ 660011  4753761    860
+ 660011  4753791    860
+ 660011  4753821    860
+ 660011  4753851    860
+ 660011  4753881    860
+ 660011  4753911    860
+ 660011  4753941    859
+ 660011  4753971    859
+ 660011  4754001    860
+ 660011  4754031    860
+ 660011  4754061    860
+ 660011  4754091    861
+ 660011  4754121    871
+ 660011  4754151    884
+ 660011  4754181    902
+ 660011  4754211    924
+ 660011  4754241    953
+ 660011  4754271    953
+ 660011  4754301    954
+ 660011  4754331    954
+ 660011  4754361    955
+ 660011  4754391    955
+ 660011  4754421    956
+ 660011  4754451    955
+ 660011  4754481    956
+ 660011  4754511    957
+ 660011  4754541    956
+ 660041  4751301    974
+ 660041  4751331    971
+ 660041  4751361    971
+ 660041  4751391    975
+ 660041  4751421    978
+ 660041  4751451    981
+ 660041  4751481    984
+ 660041  4751511    987
+ 660041  4751541    990
+ 660041  4751571    994
+ 660041  4751601    998
+ 660041  4751631   1000
+ 660041  4751661   1002
+ 660041  4751691   1003
+ 660041  4751721   1003
+ 660041  4751751   1004
+ 660041  4751781   1004
+ 660041  4751811   1002
+ 660041  4751841   1000
+ 660041  4751871    996
+ 660041  4751901    984
+ 660041  4751931    964
+ 660041  4751961    943
+ 660041  4751991    930
+ 660041  4752021    916
+ 660041  4752051    909
+ 660041  4752081    899
+ 660041  4752111    891
+ 660041  4752141    883
+ 660041  4752171    881
+ 660041  4752201    879
+ 660041  4752231    877
+ 660041  4752261    876
+ 660041  4752291    874
+ 660041  4752321    873
+ 660041  4752351    872
+ 660041  4752381    871
+ 660041  4752411    869
+ 660041  4752441    868
+ 660041  4752471    866
+ 660041  4752501    864
+ 660041  4752531    863
+ 660041  4752561    862
+ 660041  4752591    861
+ 660041  4752621    861
+ 660041  4752651    859
+ 660041  4752681    858
+ 660041  4752711    856
+ 660041  4752741    856
+ 660041  4752771    854
+ 660041  4752801    840
+ 660041  4752831    821
+ 660041  4752861    809
+ 660041  4752891    809
+ 660041  4752921    809
+ 660041  4752951    809
+ 660041  4752981    809
+ 660041  4753011    809
+ 660041  4753041    809
+ 660041  4753071    809
+ 660041  4753101    809
+ 660041  4753131    820
+ 660041  4753161    828
+ 660041  4753191    833
+ 660041  4753221    840
+ 660041  4753251    844
+ 660041  4753281    852
+ 660041  4753311    856
+ 660041  4753341    860
+ 660041  4753371    861
+ 660041  4753401    861
+ 660041  4753431    860
+ 660041  4753461    859
+ 660041  4753491    859
+ 660041  4753521    859
+ 660041  4753551    859
+ 660041  4753581    860
+ 660041  4753611    860
+ 660041  4753641    860
+ 660041  4753671    860
+ 660041  4753701    860
+ 660041  4753731    861
+ 660041  4753761    861
+ 660041  4753791    861
+ 660041  4753821    861
+ 660041  4753851    861
+ 660041  4753881    861
+ 660041  4753911    860
+ 660041  4753941    860
+ 660041  4753971    860
+ 660041  4754001    860
+ 660041  4754031    861
+ 660041  4754061    862
+ 660041  4754091    861
+ 660041  4754121    866
+ 660041  4754151    877
+ 660041  4754181    894
+ 660041  4754211    913
+ 660041  4754241    950
+ 660041  4754271    953
+ 660041  4754301    953
+ 660041  4754331    954
+ 660041  4754361    955
+ 660041  4754391    955
+ 660041  4754421    955
+ 660041  4754451    955
+ 660041  4754481    956
+ 660041  4754511    957
+ 660041  4754541    956
+ 660071  4751301    976
+ 660071  4751331    973
+ 660071  4751361    973
+ 660071  4751391    975
+ 660071  4751421    978
+ 660071  4751451    981
+ 660071  4751481    984
+ 660071  4751511    987
+ 660071  4751541    990
+ 660071  4751571    994
+ 660071  4751601    998
+ 660071  4751631   1000
+ 660071  4751661   1002
+ 660071  4751691   1003
+ 660071  4751721   1004
+ 660071  4751751   1003
+ 660071  4751781   1004
+ 660071  4751811   1002
+ 660071  4751841   1000
+ 660071  4751871    994
+ 660071  4751901    979
+ 660071  4751931    959
+ 660071  4751961    946
+ 660071  4751991    926
+ 660071  4752021    912
+ 660071  4752051    905
+ 660071  4752081    900
+ 660071  4752111    893
+ 660071  4752141    884
+ 660071  4752171    880
+ 660071  4752201    878
+ 660071  4752231    876
+ 660071  4752261    875
+ 660071  4752291    874
+ 660071  4752321    873
+ 660071  4752351    871
+ 660071  4752381    870
+ 660071  4752411    870
+ 660071  4752441    868
+ 660071  4752471    867
+ 660071  4752501    863
+ 660071  4752531    861
+ 660071  4752561    861
+ 660071  4752591    861
+ 660071  4752621    861
+ 660071  4752651    860
+ 660071  4752681    859
+ 660071  4752711    859
+ 660071  4752741    859
+ 660071  4752771    854
+ 660071  4752801    834
+ 660071  4752831    816
+ 660071  4752861    809
+ 660071  4752891    809
+ 660071  4752921    809
+ 660071  4752951    809
+ 660071  4752981    809
+ 660071  4753011    809
+ 660071  4753041    809
+ 660071  4753071    809
+ 660071  4753101    822
+ 660071  4753131    834
+ 660071  4753161    842
+ 660071  4753191    851
+ 660071  4753221    854
+ 660071  4753251    854
+ 660071  4753281    856
+ 660071  4753311    859
+ 660071  4753341    861
+ 660071  4753371    862
+ 660071  4753401    861
+ 660071  4753431    861
+ 660071  4753461    860
+ 660071  4753491    859
+ 660071  4753521    859
+ 660071  4753551    860
+ 660071  4753581    860
+ 660071  4753611    861
+ 660071  4753641    861
+ 660071  4753671    860
+ 660071  4753701    861
+ 660071  4753731    862
+ 660071  4753761    862
+ 660071  4753791    862
+ 660071  4753821    863
+ 660071  4753851    863
+ 660071  4753881    862
+ 660071  4753911    861
+ 660071  4753941    860
+ 660071  4753971    861
+ 660071  4754001    861
+ 660071  4754031    861
+ 660071  4754061    862
+ 660071  4754091    863
+ 660071  4754121    866
+ 660071  4754151    872
+ 660071  4754181    890
+ 660071  4754211    908
+ 660071  4754241    945
+ 660071  4754271    953
+ 660071  4754301    953
+ 660071  4754331    954
+ 660071  4754361    956
+ 660071  4754391    955
+ 660071  4754421    955
+ 660071  4754451    956
+ 660071  4754481    956
+ 660071  4754511    957
+ 660071  4754541    957
+ 660101  4751301    977
+ 660101  4751331    975
+ 660101  4751361    974
+ 660101  4751391    975
+ 660101  4751421    978
+ 660101  4751451    981
+ 660101  4751481    984
+ 660101  4751511    987
+ 660101  4751541    990
+ 660101  4751571    994
+ 660101  4751601    998
+ 660101  4751631   1000
+ 660101  4751661   1002
+ 660101  4751691   1003
+ 660101  4751721   1003
+ 660101  4751751   1004
+ 660101  4751781   1003
+ 660101  4751811   1001
+ 660101  4751841    999
+ 660101  4751871    992
+ 660101  4751901    975
+ 660101  4751931    956
+ 660101  4751961    940
+ 660101  4751991    925
+ 660101  4752021    912
+ 660101  4752051    905
+ 660101  4752081    895
+ 660101  4752111    888
+ 660101  4752141    883
+ 660101  4752171    878
+ 660101  4752201    876
+ 660101  4752231    876
+ 660101  4752261    875
+ 660101  4752291    874
+ 660101  4752321    873
+ 660101  4752351    871
+ 660101  4752381    869
+ 660101  4752411    869
+ 660101  4752441    868
+ 660101  4752471    867
+ 660101  4752501    864
+ 660101  4752531    861
+ 660101  4752561    861
+ 660101  4752591    861
+ 660101  4752621    860
+ 660101  4752651    860
+ 660101  4752681    861
+ 660101  4752711    861
+ 660101  4752741    862
+ 660101  4752771    852
+ 660101  4752801    829
+ 660101  4752831    809
+ 660101  4752861    809
+ 660101  4752891    809
+ 660101  4752921    809
+ 660101  4752951    809
+ 660101  4752981    809
+ 660101  4753011    809
+ 660101  4753041    809
+ 660101  4753071    819
+ 660101  4753101    837
+ 660101  4753131    850
+ 660101  4753161    854
+ 660101  4753191    856
+ 660101  4753221    858
+ 660101  4753251    858
+ 660101  4753281    858
+ 660101  4753311    860
+ 660101  4753341    861
+ 660101  4753371    862
+ 660101  4753401    862
+ 660101  4753431    861
+ 660101  4753461    860
+ 660101  4753491    859
+ 660101  4753521    859
+ 660101  4753551    860
+ 660101  4753581    861
+ 660101  4753611    862
+ 660101  4753641    861
+ 660101  4753671    861
+ 660101  4753701    861
+ 660101  4753731    862
+ 660101  4753761    863
+ 660101  4753791    864
+ 660101  4753821    865
+ 660101  4753851    866
+ 660101  4753881    864
+ 660101  4753911    861
+ 660101  4753941    860
+ 660101  4753971    861
+ 660101  4754001    861
+ 660101  4754031    861
+ 660101  4754061    862
+ 660101  4754091    864
+ 660101  4754121    867
+ 660101  4754151    872
+ 660101  4754181    888
+ 660101  4754211    907
+ 660101  4754241    943
+ 660101  4754271    953
+ 660101  4754301    953
+ 660101  4754331    954
+ 660101  4754361    955
+ 660101  4754391    955
+ 660101  4754421    955
+ 660101  4754451    957
+ 660101  4754481    957
+ 660101  4754511    957
+ 660101  4754541    957
+ 660131  4751301    978
+ 660131  4751331    976
+ 660131  4751361    975
+ 660131  4751391    975
+ 660131  4751421    977
+ 660131  4751451    980
+ 660131  4751481    984
+ 660131  4751511    986
+ 660131  4751541    990
+ 660131  4751571    995
+ 660131  4751601    999
+ 660131  4751631   1001
+ 660131  4751661   1002
+ 660131  4751691   1003
+ 660131  4751721   1003
+ 660131  4751751   1003
+ 660131  4751781   1002
+ 660131  4751811    999
+ 660131  4751841    995
+ 660131  4751871    986
+ 660131  4751901    964
+ 660131  4751931    952
+ 660131  4751961    935
+ 660131  4751991    923
+ 660131  4752021    910
+ 660131  4752051    904
+ 660131  4752081    893
+ 660131  4752111    884
+ 660131  4752141    881
+ 660131  4752171    877
+ 660131  4752201    876
+ 660131  4752231    875
+ 660131  4752261    874
+ 660131  4752291    873
+ 660131  4752321    872
+ 660131  4752351    871
+ 660131  4752381    869
+ 660131  4752411    869
+ 660131  4752441    868
+ 660131  4752471    867
+ 660131  4752501    864
+ 660131  4752531    863
+ 660131  4752561    862
+ 660131  4752591    862
+ 660131  4752621    861
+ 660131  4752651    861
+ 660131  4752681    861
+ 660131  4752711    861
+ 660131  4752741    856
+ 660131  4752771    838
+ 660131  4752801    825
+ 660131  4752831    809
+ 660131  4752861    809
+ 660131  4752891    809
+ 660131  4752921    809
+ 660131  4752951    809
+ 660131  4752981    809
+ 660131  4753011    809
+ 660131  4753041    821
+ 660131  4753071    837
+ 660131  4753101    853
+ 660131  4753131    861
+ 660131  4753161    857
+ 660131  4753191    859
+ 660131  4753221    861
+ 660131  4753251    860
+ 660131  4753281    860
+ 660131  4753311    861
+ 660131  4753341    861
+ 660131  4753371    863
+ 660131  4753401    863
+ 660131  4753431    861
+ 660131  4753461    860
+ 660131  4753491    860
+ 660131  4753521    860
+ 660131  4753551    861
+ 660131  4753581    861
+ 660131  4753611    862
+ 660131  4753641    862
+ 660131  4753671    862
+ 660131  4753701    862
+ 660131  4753731    863
+ 660131  4753761    864
+ 660131  4753791    866
+ 660131  4753821    867
+ 660131  4753851    869
+ 660131  4753881    865
+ 660131  4753911    861
+ 660131  4753941    860
+ 660131  4753971    860
+ 660131  4754001    860
+ 660131  4754031    861
+ 660131  4754061    863
+ 660131  4754091    864
+ 660131  4754121    867
+ 660131  4754151    872
+ 660131  4754181    887
+ 660131  4754211    907
+ 660131  4754241    940
+ 660131  4754271    953
+ 660131  4754301    953
+ 660131  4754331    954
+ 660131  4754361    955
+ 660131  4754391    956
+ 660131  4754421    956
+ 660131  4754451    957
+ 660131  4754481    957
+ 660131  4754511    957
+ 660131  4754541    957
+ 660161  4751301    981
+ 660161  4751331    978
+ 660161  4751361    977
+ 660161  4751391    978
+ 660161  4751421    978
+ 660161  4751451    981
+ 660161  4751481    983
+ 660161  4751511    986
+ 660161  4751541    989
+ 660161  4751571    994
+ 660161  4751601    998
+ 660161  4751631   1000
+ 660161  4751661   1002
+ 660161  4751691   1003
+ 660161  4751721   1003
+ 660161  4751751   1004
+ 660161  4751781   1001
+ 660161  4751811    998
+ 660161  4751841    991
+ 660161  4751871    976
+ 660161  4751901    957
+ 660161  4751931    942
+ 660161  4751961    931
+ 660161  4751991    919
+ 660161  4752021    908
+ 660161  4752051    900
+ 660161  4752081    891
+ 660161  4752111    883
+ 660161  4752141    880
+ 660161  4752171    877
+ 660161  4752201    875
+ 660161  4752231    875
+ 660161  4752261    874
+ 660161  4752291    873
+ 660161  4752321    872
+ 660161  4752351    870
+ 660161  4752381    869
+ 660161  4752411    869
+ 660161  4752441    869
+ 660161  4752471    867
+ 660161  4752501    865
+ 660161  4752531    864
+ 660161  4752561    863
+ 660161  4752591    862
+ 660161  4752621    861
+ 660161  4752651    859
+ 660161  4752681    860
+ 660161  4752711    855
+ 660161  4752741    845
+ 660161  4752771    829
+ 660161  4752801    817
+ 660161  4752831    809
+ 660161  4752861    809
+ 660161  4752891    809
+ 660161  4752921    809
+ 660161  4752951    809
+ 660161  4752981    809
+ 660161  4753011    830
+ 660161  4753041    839
+ 660161  4753071    851
+ 660161  4753101    861
+ 660161  4753131    860
+ 660161  4753161    859
+ 660161  4753191    861
+ 660161  4753221    862
+ 660161  4753251    861
+ 660161  4753281    861
+ 660161  4753311    862
+ 660161  4753341    863
+ 660161  4753371    863
+ 660161  4753401    863
+ 660161  4753431    861
+ 660161  4753461    861
+ 660161  4753491    860
+ 660161  4753521    860
+ 660161  4753551    861
+ 660161  4753581    862
+ 660161  4753611    863
+ 660161  4753641    863
+ 660161  4753671    863
+ 660161  4753701    863
+ 660161  4753731    864
+ 660161  4753761    865
+ 660161  4753791    867
+ 660161  4753821    869
+ 660161  4753851    867
+ 660161  4753881    861
+ 660161  4753911    860
+ 660161  4753941    860
+ 660161  4753971    860
+ 660161  4754001    860
+ 660161  4754031    861
+ 660161  4754061    863
+ 660161  4754091    864
+ 660161  4754121    866
+ 660161  4754151    870
+ 660161  4754181    885
+ 660161  4754211    908
+ 660161  4754241    942
+ 660161  4754271    953
+ 660161  4754301    954
+ 660161  4754331    955
+ 660161  4754361    956
+ 660161  4754391    956
+ 660161  4754421    957
+ 660161  4754451    958
+ 660161  4754481    957
+ 660161  4754511    958
+ 660161  4754541    957
+ 660191  4751301    983
+ 660191  4751331    982
+ 660191  4751361    981
+ 660191  4751391    981
+ 660191  4751421    981
+ 660191  4751451    981
+ 660191  4751481    983
+ 660191  4751511    985
+ 660191  4751541    989
+ 660191  4751571    992
+ 660191  4751601    997
+ 660191  4751631    999
+ 660191  4751661   1001
+ 660191  4751691   1002
+ 660191  4751721   1003
+ 660191  4751751   1003
+ 660191  4751781   1001
+ 660191  4751811    997
+ 660191  4751841    986
+ 660191  4751871    966
+ 660191  4751901    946
+ 660191  4751931    935
+ 660191  4751961    926
+ 660191  4751991    915
+ 660191  4752021    910
+ 660191  4752051    901
+ 660191  4752081    890
+ 660191  4752111    882
+ 660191  4752141    879
+ 660191  4752171    876
+ 660191  4752201    875
+ 660191  4752231    875
+ 660191  4752261    874
+ 660191  4752291    873
+ 660191  4752321    872
+ 660191  4752351    871
+ 660191  4752381    870
+ 660191  4752411    870
+ 660191  4752441    869
+ 660191  4752471    868
+ 660191  4752501    866
+ 660191  4752531    864
+ 660191  4752561    862
+ 660191  4752591    861
+ 660191  4752621    860
+ 660191  4752651    859
+ 660191  4752681    857
+ 660191  4752711    855
+ 660191  4752741    851
+ 660191  4752771    835
+ 660191  4752801    809
+ 660191  4752831    809
+ 660191  4752861    809
+ 660191  4752891    809
+ 660191  4752921    809
+ 660191  4752951    809
+ 660191  4752981    828
+ 660191  4753011    847
+ 660191  4753041    854
+ 660191  4753071    856
+ 660191  4753101    858
+ 660191  4753131    859
+ 660191  4753161    860
+ 660191  4753191    861
+ 660191  4753221    862
+ 660191  4753251    863
+ 660191  4753281    863
+ 660191  4753311    863
+ 660191  4753341    864
+ 660191  4753371    864
+ 660191  4753401    864
+ 660191  4753431    862
+ 660191  4753461    861
+ 660191  4753491    860
+ 660191  4753521    861
+ 660191  4753551    862
+ 660191  4753581    863
+ 660191  4753611    863
+ 660191  4753641    863
+ 660191  4753671    864
+ 660191  4753701    864
+ 660191  4753731    864
+ 660191  4753761    864
+ 660191  4753791    865
+ 660191  4753821    868
+ 660191  4753851    865
+ 660191  4753881    861
+ 660191  4753911    860
+ 660191  4753941    860
+ 660191  4753971    860
+ 660191  4754001    860
+ 660191  4754031    862
+ 660191  4754061    863
+ 660191  4754091    864
+ 660191  4754121    866
+ 660191  4754151    869
+ 660191  4754181    884
+ 660191  4754211    911
+ 660191  4754241    949
+ 660191  4754271    954
+ 660191  4754301    954
+ 660191  4754331    955
+ 660191  4754361    957
+ 660191  4754391    957
+ 660191  4754421    958
+ 660191  4754451    958
+ 660191  4754481    958
+ 660191  4754511    957
+ 660191  4754541    957
+ 660221  4751301    985
+ 660221  4751331    983
+ 660221  4751361    983
+ 660221  4751391    983
+ 660221  4751421    982
+ 660221  4751451    982
+ 660221  4751481    982
+ 660221  4751511    984
+ 660221  4751541    987
+ 660221  4751571    990
+ 660221  4751601    994
+ 660221  4751631    997
+ 660221  4751661    999
+ 660221  4751691   1001
+ 660221  4751721   1003
+ 660221  4751751   1002
+ 660221  4751781   1001
+ 660221  4751811    996
+ 660221  4751841    983
+ 660221  4751871    966
+ 660221  4751901    948
+ 660221  4751931    934
+ 660221  4751961    925
+ 660221  4751991    909
+ 660221  4752021    900
+ 660221  4752051    893
+ 660221  4752081    884
+ 660221  4752111    882
+ 660221  4752141    879
+ 660221  4752171    877
+ 660221  4752201    876
+ 660221  4752231    875
+ 660221  4752261    874
+ 660221  4752291    873
+ 660221  4752321    872
+ 660221  4752351    871
+ 660221  4752381    870
+ 660221  4752411    870
+ 660221  4752441    869
+ 660221  4752471    868
+ 660221  4752501    866
+ 660221  4752531    864
+ 660221  4752561    862
+ 660221  4752591    861
+ 660221  4752621    861
+ 660221  4752651    861
+ 660221  4752681    861
+ 660221  4752711    862
+ 660221  4752741    859
+ 660221  4752771    835
+ 660221  4752801    809
+ 660221  4752831    809
+ 660221  4752861    809
+ 660221  4752891    809
+ 660221  4752921    809
+ 660221  4752951    809
+ 660221  4752981    827
+ 660221  4753011    844
+ 660221  4753041    855
+ 660221  4753071    859
+ 660221  4753101    860
+ 660221  4753131    861
+ 660221  4753161    861
+ 660221  4753191    862
+ 660221  4753221    862
+ 660221  4753251    863
+ 660221  4753281    864
+ 660221  4753311    865
+ 660221  4753341    865
+ 660221  4753371    866
+ 660221  4753401    865
+ 660221  4753431    863
+ 660221  4753461    861
+ 660221  4753491    861
+ 660221  4753521    861
+ 660221  4753551    862
+ 660221  4753581    863
+ 660221  4753611    864
+ 660221  4753641    865
+ 660221  4753671    865
+ 660221  4753701    865
+ 660221  4753731    865
+ 660221  4753761    865
+ 660221  4753791    864
+ 660221  4753821    863
+ 660221  4753851    862
+ 660221  4753881    861
+ 660221  4753911    861
+ 660221  4753941    860
+ 660221  4753971    860
+ 660221  4754001    860
+ 660221  4754031    862
+ 660221  4754061    863
+ 660221  4754091    864
+ 660221  4754121    866
+ 660221  4754151    868
+ 660221  4754181    883
+ 660221  4754211    906
+ 660221  4754241    940
+ 660221  4754271    954
+ 660221  4754301    956
+ 660221  4754331    957
+ 660221  4754361    957
+ 660221  4754391    959
+ 660221  4754421    958
+ 660221  4754451    959
+ 660221  4754481    958
+ 660221  4754511    958
+ 660221  4754541    957
+ 660251  4751301    987
+ 660251  4751331    984
+ 660251  4751361    984
+ 660251  4751391    985
+ 660251  4751421    984
+ 660251  4751451    983
+ 660251  4751481    983
+ 660251  4751511    983
+ 660251  4751541    985
+ 660251  4751571    989
+ 660251  4751601    991
+ 660251  4751631    995
+ 660251  4751661    997
+ 660251  4751691    999
+ 660251  4751721   1001
+ 660251  4751751   1001
+ 660251  4751781   1000
+ 660251  4751811    995
+ 660251  4751841    981
+ 660251  4751871    963
+ 660251  4751901    944
+ 660251  4751931    930
+ 660251  4751961    918
+ 660251  4751991    907
+ 660251  4752021    899
+ 660251  4752051    893
+ 660251  4752081    886
+ 660251  4752111    882
+ 660251  4752141    879
+ 660251  4752171    877
+ 660251  4752201    876
+ 660251  4752231    875
+ 660251  4752261    874
+ 660251  4752291    873
+ 660251  4752321    871
+ 660251  4752351    870
+ 660251  4752381    870
+ 660251  4752411    869
+ 660251  4752441    869
+ 660251  4752471    868
+ 660251  4752501    866
+ 660251  4752531    864
+ 660251  4752561    862
+ 660251  4752591    861
+ 660251  4752621    862
+ 660251  4752651    862
+ 660251  4752681    863
+ 660251  4752711    863
+ 660251  4752741    855
+ 660251  4752771    832
+ 660251  4752801    809
+ 660251  4752831    809
+ 660251  4752861    809
+ 660251  4752891    809
+ 660251  4752921    809
+ 660251  4752951    809
+ 660251  4752981    824
+ 660251  4753011    842
+ 660251  4753041    855
+ 660251  4753071    861
+ 660251  4753101    861
+ 660251  4753131    861
+ 660251  4753161    862
+ 660251  4753191    862
+ 660251  4753221    863
+ 660251  4753251    864
+ 660251  4753281    866
+ 660251  4753311    866
+ 660251  4753341    867
+ 660251  4753371    867
+ 660251  4753401    866
+ 660251  4753431    864
+ 660251  4753461    862
+ 660251  4753491    862
+ 660251  4753521    863
+ 660251  4753551    864
+ 660251  4753581    865
+ 660251  4753611    865
+ 660251  4753641    865
+ 660251  4753671    866
+ 660251  4753701    866
+ 660251  4753731    866
+ 660251  4753761    866
+ 660251  4753791    865
+ 660251  4753821    864
+ 660251  4753851    863
+ 660251  4753881    862
+ 660251  4753911    861
+ 660251  4753941    860
+ 660251  4753971    860
+ 660251  4754001    860
+ 660251  4754031    861
+ 660251  4754061    863
+ 660251  4754091    864
+ 660251  4754121    866
+ 660251  4754151    868
+ 660251  4754181    881
+ 660251  4754211    902
+ 660251  4754241    936
+ 660251  4754271    953
+ 660251  4754301    956
+ 660251  4754331    958
+ 660251  4754361    959
+ 660251  4754391    959
+ 660251  4754421    959
+ 660251  4754451    959
+ 660251  4754481    958
+ 660251  4754511    958
+ 660251  4754541    957
+ 660281  4751301    988
+ 660281  4751331    987
+ 660281  4751361    987
+ 660281  4751391    987
+ 660281  4751421    987
+ 660281  4751451    987
+ 660281  4751481    986
+ 660281  4751511    986
+ 660281  4751541    988
+ 660281  4751571    989
+ 660281  4751601    990
+ 660281  4751631    992
+ 660281  4751661    996
+ 660281  4751691    998
+ 660281  4751721    999
+ 660281  4751751    999
+ 660281  4751781    997
+ 660281  4751811    992
+ 660281  4751841    975
+ 660281  4751871    960
+ 660281  4751901    942
+ 660281  4751931    930
+ 660281  4751961    916
+ 660281  4751991    907
+ 660281  4752021    901
+ 660281  4752051    893
+ 660281  4752081    886
+ 660281  4752111    882
+ 660281  4752141    879
+ 660281  4752171    877
+ 660281  4752201    876
+ 660281  4752231    875
+ 660281  4752261    874
+ 660281  4752291    873
+ 660281  4752321    871
+ 660281  4752351    870
+ 660281  4752381    869
+ 660281  4752411    869
+ 660281  4752441    868
+ 660281  4752471    867
+ 660281  4752501    866
+ 660281  4752531    865
+ 660281  4752561    865
+ 660281  4752591    864
+ 660281  4752621    864
+ 660281  4752651    863
+ 660281  4752681    862
+ 660281  4752711    856
+ 660281  4752741    847
+ 660281  4752771    828
+ 660281  4752801    809
+ 660281  4752831    809
+ 660281  4752861    809
+ 660281  4752891    809
+ 660281  4752921    809
+ 660281  4752951    809
+ 660281  4752981    821
+ 660281  4753011    841
+ 660281  4753041    857
+ 660281  4753071    862
+ 660281  4753101    861
+ 660281  4753131    862
+ 660281  4753161    863
+ 660281  4753191    863
+ 660281  4753221    863
+ 660281  4753251    864
+ 660281  4753281    866
+ 660281  4753311    868
+ 660281  4753341    868
+ 660281  4753371    869
+ 660281  4753401    867
+ 660281  4753431    866
+ 660281  4753461    865
+ 660281  4753491    865
+ 660281  4753521    866
+ 660281  4753551    867
+ 660281  4753581    867
+ 660281  4753611    866
+ 660281  4753641    866
+ 660281  4753671    866
+ 660281  4753701    867
+ 660281  4753731    867
+ 660281  4753761    866
+ 660281  4753791    866
+ 660281  4753821    865
+ 660281  4753851    864
+ 660281  4753881    863
+ 660281  4753911    862
+ 660281  4753941    861
+ 660281  4753971    860
+ 660281  4754001    860
+ 660281  4754031    861
+ 660281  4754061    862
+ 660281  4754091    863
+ 660281  4754121    865
+ 660281  4754151    868
+ 660281  4754181    880
+ 660281  4754211    902
+ 660281  4754241    937
+ 660281  4754271    953
+ 660281  4754301    956
+ 660281  4754331    958
+ 660281  4754361    960
+ 660281  4754391    960
+ 660281  4754421    959
+ 660281  4754451    959
+ 660281  4754481    958
+ 660281  4754511    958
+ 660281  4754541    957
+ 660311  4751301    990
+ 660311  4751331    989
+ 660311  4751361    989
+ 660311  4751391    990
+ 660311  4751421    990
+ 660311  4751451    990
+ 660311  4751481    989
+ 660311  4751511    989
+ 660311  4751541    990
+ 660311  4751571    990
+ 660311  4751601    990
+ 660311  4751631    991
+ 660311  4751661    994
+ 660311  4751691    996
+ 660311  4751721    998
+ 660311  4751751    997
+ 660311  4751781    995
+ 660311  4751811    991
+ 660311  4751841    972
+ 660311  4751871    957
+ 660311  4751901    938
+ 660311  4751931    924
+ 660311  4751961    913
+ 660311  4751991    905
+ 660311  4752021    899
+ 660311  4752051    891
+ 660311  4752081    886
+ 660311  4752111    883
+ 660311  4752141    879
+ 660311  4752171    877
+ 660311  4752201    876
+ 660311  4752231    875
+ 660311  4752261    874
+ 660311  4752291    873
+ 660311  4752321    871
+ 660311  4752351    870
+ 660311  4752381    869
+ 660311  4752411    869
+ 660311  4752441    869
+ 660311  4752471    868
+ 660311  4752501    867
+ 660311  4752531    866
+ 660311  4752561    865
+ 660311  4752591    864
+ 660311  4752621    864
+ 660311  4752651    862
+ 660311  4752681    861
+ 660311  4752711    845
+ 660311  4752741    836
+ 660311  4752771    825
+ 660311  4752801    809
+ 660311  4752831    809
+ 660311  4752861    809
+ 660311  4752891    809
+ 660311  4752921    809
+ 660311  4752951    809
+ 660311  4752981    817
+ 660311  4753011    832
+ 660311  4753041    855
+ 660311  4753071    862
+ 660311  4753101    861
+ 660311  4753131    862
+ 660311  4753161    863
+ 660311  4753191    863
+ 660311  4753221    864
+ 660311  4753251    865
+ 660311  4753281    866
+ 660311  4753311    868
+ 660311  4753341    869
+ 660311  4753371    869
+ 660311  4753401    869
+ 660311  4753431    868
+ 660311  4753461    867
+ 660311  4753491    868
+ 660311  4753521    868
+ 660311  4753551    869
+ 660311  4753581    868
+ 660311  4753611    867
+ 660311  4753641    867
+ 660311  4753671    867
+ 660311  4753701    867
+ 660311  4753731    868
+ 660311  4753761    867
+ 660311  4753791    867
+ 660311  4753821    866
+ 660311  4753851    865
+ 660311  4753881    864
+ 660311  4753911    863
+ 660311  4753941    861
+ 660311  4753971    861
+ 660311  4754001    860
+ 660311  4754031    860
+ 660311  4754061    861
+ 660311  4754091    863
+ 660311  4754121    865
+ 660311  4754151    868
+ 660311  4754181    878
+ 660311  4754211    902
+ 660311  4754241    938
+ 660311  4754271    953
+ 660311  4754301    956
+ 660311  4754331    958
+ 660311  4754361    960
+ 660311  4754391    960
+ 660311  4754421    959
+ 660311  4754451    959
+ 660311  4754481    958
+ 660311  4754511    958
+ 660311  4754541    957
+ 660341  4751301    992
+ 660341  4751331    991
+ 660341  4751361    990
+ 660341  4751391    991
+ 660341  4751421    992
+ 660341  4751451    991
+ 660341  4751481    991
+ 660341  4751511    991
+ 660341  4751541    991
+ 660341  4751571    991
+ 660341  4751601    991
+ 660341  4751631    990
+ 660341  4751661    992
+ 660341  4751691    995
+ 660341  4751721    997
+ 660341  4751751    996
+ 660341  4751781    994
+ 660341  4751811    989
+ 660341  4751841    967
+ 660341  4751871    952
+ 660341  4751901    935
+ 660341  4751931    922
+ 660341  4751961    912
+ 660341  4751991    904
+ 660341  4752021    899
+ 660341  4752051    893
+ 660341  4752081    888
+ 660341  4752111    883
+ 660341  4752141    880
+ 660341  4752171    877
+ 660341  4752201    876
+ 660341  4752231    875
+ 660341  4752261    874
+ 660341  4752291    873
+ 660341  4752321    872
+ 660341  4752351    870
+ 660341  4752381    870
+ 660341  4752411    870
+ 660341  4752441    869
+ 660341  4752471    868
+ 660341  4752501    867
+ 660341  4752531    866
+ 660341  4752561    865
+ 660341  4752591    864
+ 660341  4752621    863
+ 660341  4752651    862
+ 660341  4752681    854
+ 660341  4752711    838
+ 660341  4752741    828
+ 660341  4752771    818
+ 660341  4752801    809
+ 660341  4752831    809
+ 660341  4752861    809
+ 660341  4752891    809
+ 660341  4752921    809
+ 660341  4752951    809
+ 660341  4752981    809
+ 660341  4753011    826
+ 660341  4753041    845
+ 660341  4753071    857
+ 660341  4753101    859
+ 660341  4753131    861
+ 660341  4753161    862
+ 660341  4753191    863
+ 660341  4753221    863
+ 660341  4753251    865
+ 660341  4753281    866
+ 660341  4753311    866
+ 660341  4753341    868
+ 660341  4753371    868
+ 660341  4753401    869
+ 660341  4753431    869
+ 660341  4753461    868
+ 660341  4753491    868
+ 660341  4753521    869
+ 660341  4753551    869
+ 660341  4753581    868
+ 660341  4753611    868
+ 660341  4753641    868
+ 660341  4753671    868
+ 660341  4753701    868
+ 660341  4753731    868
+ 660341  4753761    868
+ 660341  4753791    868
+ 660341  4753821    867
+ 660341  4753851    867
+ 660341  4753881    867
+ 660341  4753911    865
+ 660341  4753941    864
+ 660341  4753971    862
+ 660341  4754001    861
+ 660341  4754031    861
+ 660341  4754061    861
+ 660341  4754091    863
+ 660341  4754121    865
+ 660341  4754151    867
+ 660341  4754181    876
+ 660341  4754211    899
+ 660341  4754241    937
+ 660341  4754271    953
+ 660341  4754301    956
+ 660341  4754331    958
+ 660341  4754361    960
+ 660341  4754391    960
+ 660341  4754421    959
+ 660341  4754451    959
+ 660341  4754481    958
+ 660341  4754511    958
+ 660341  4754541    957
+ 660371  4751301    993
+ 660371  4751331    992
+ 660371  4751361    992
+ 660371  4751391    993
+ 660371  4751421    993
+ 660371  4751451    993
+ 660371  4751481    992
+ 660371  4751511    992
+ 660371  4751541    992
+ 660371  4751571    992
+ 660371  4751601    992
+ 660371  4751631    991
+ 660371  4751661    992
+ 660371  4751691    994
+ 660371  4751721    996
+ 660371  4751751    995
+ 660371  4751781    994
+ 660371  4751811    986
+ 660371  4751841    968
+ 660371  4751871    953
+ 660371  4751901    938
+ 660371  4751931    925
+ 660371  4751961    914
+ 660371  4751991    907
+ 660371  4752021    901
+ 660371  4752051    895
+ 660371  4752081    890
+ 660371  4752111    883
+ 660371  4752141    880
+ 660371  4752171    877
+ 660371  4752201    876
+ 660371  4752231    875
+ 660371  4752261    874
+ 660371  4752291    873
+ 660371  4752321    872
+ 660371  4752351    871
+ 660371  4752381    870
+ 660371  4752411    869
+ 660371  4752441    868
+ 660371  4752471    867
+ 660371  4752501    866
+ 660371  4752531    866
+ 660371  4752561    865
+ 660371  4752591    864
+ 660371  4752621    862
+ 660371  4752651    859
+ 660371  4752681    844
+ 660371  4752711    835
+ 660371  4752741    825
+ 660371  4752771    809
+ 660371  4752801    809
+ 660371  4752831    809
+ 660371  4752861    809
+ 660371  4752891    809
+ 660371  4752921    809
+ 660371  4752951    809
+ 660371  4752981    809
+ 660371  4753011    823
+ 660371  4753041    840
+ 660371  4753071    853
+ 660371  4753101    856
+ 660371  4753131    860
+ 660371  4753161    863
+ 660371  4753191    863
+ 660371  4753221    863
+ 660371  4753251    862
+ 660371  4753281    864
+ 660371  4753311    865
+ 660371  4753341    866
+ 660371  4753371    867
+ 660371  4753401    867
+ 660371  4753431    868
+ 660371  4753461    868
+ 660371  4753491    869
+ 660371  4753521    869
+ 660371  4753551    869
+ 660371  4753581    868
+ 660371  4753611    868
+ 660371  4753641    869
+ 660371  4753671    869
+ 660371  4753701    869
+ 660371  4753731    869
+ 660371  4753761    869
+ 660371  4753791    869
+ 660371  4753821    868
+ 660371  4753851    868
+ 660371  4753881    869
+ 660371  4753911    868
+ 660371  4753941    866
+ 660371  4753971    864
+ 660371  4754001    863
+ 660371  4754031    863
+ 660371  4754061    862
+ 660371  4754091    863
+ 660371  4754121    865
+ 660371  4754151    867
+ 660371  4754181    875
+ 660371  4754211    899
+ 660371  4754241    937
+ 660371  4754271    953
+ 660371  4754301    956
+ 660371  4754331    958
+ 660371  4754361    960
+ 660371  4754391    960
+ 660371  4754421    959
+ 660371  4754451    959
+ 660371  4754481    958
+ 660371  4754511    958
+ 660371  4754541    957
+ 660401  4751301    994
+ 660401  4751331    994
+ 660401  4751361    994
+ 660401  4751391    994
+ 660401  4751421    994
+ 660401  4751451    994
+ 660401  4751481    994
+ 660401  4751511    994
+ 660401  4751541    993
+ 660401  4751571    994
+ 660401  4751601    993
+ 660401  4751631    992
+ 660401  4751661    994
+ 660401  4751691    994
+ 660401  4751721    995
+ 660401  4751751    994
+ 660401  4751781    993
+ 660401  4751811    984
+ 660401  4751841    965
+ 660401  4751871    951
+ 660401  4751901    935
+ 660401  4751931    924
+ 660401  4751961    913
+ 660401  4751991    906
+ 660401  4752021    899
+ 660401  4752051    893
+ 660401  4752081    888
+ 660401  4752111    884
+ 660401  4752141    880
+ 660401  4752171    877
+ 660401  4752201    876
+ 660401  4752231    875
+ 660401  4752261    874
+ 660401  4752291    873
+ 660401  4752321    872
+ 660401  4752351    871
+ 660401  4752381    870
+ 660401  4752411    869
+ 660401  4752441    867
+ 660401  4752471    867
+ 660401  4752501    866
+ 660401  4752531    866
+ 660401  4752561    865
+ 660401  4752591    864
+ 660401  4752621    862
+ 660401  4752651    857
+ 660401  4752681    840
+ 660401  4752711    830
+ 660401  4752741    823
+ 660401  4752771    809
+ 660401  4752801    809
+ 660401  4752831    809
+ 660401  4752861    809
+ 660401  4752891    809
+ 660401  4752921    809
+ 660401  4752951    809
+ 660401  4752981    809
+ 660401  4753011    818
+ 660401  4753041    829
+ 660401  4753071    843
+ 660401  4753101    851
+ 660401  4753131    856
+ 660401  4753161    862
+ 660401  4753191    862
+ 660401  4753221    862
+ 660401  4753251    861
+ 660401  4753281    862
+ 660401  4753311    863
+ 660401  4753341    864
+ 660401  4753371    866
+ 660401  4753401    866
+ 660401  4753431    868
+ 660401  4753461    868
+ 660401  4753491    868
+ 660401  4753521    869
+ 660401  4753551    869
+ 660401  4753581    869
+ 660401  4753611    869
+ 660401  4753641    869
+ 660401  4753671    869
+ 660401  4753701    869
+ 660401  4753731    869
+ 660401  4753761    870
+ 660401  4753791    869
+ 660401  4753821    869
+ 660401  4753851    869
+ 660401  4753881    869
+ 660401  4753911    869
+ 660401  4753941    868
+ 660401  4753971    866
+ 660401  4754001    865
+ 660401  4754031    864
+ 660401  4754061    863
+ 660401  4754091    864
+ 660401  4754121    866
+ 660401  4754151    867
+ 660401  4754181    875
+ 660401  4754211    899
+ 660401  4754241    936
+ 660401  4754271    953
+ 660401  4754301    956
+ 660401  4754331    958
+ 660401  4754361    960
+ 660401  4754391    960
+ 660401  4754421    960
+ 660401  4754451    959
+ 660401  4754481    959
+ 660401  4754511    958
+ 660401  4754541    958
+ 660431  4751301    996
+ 660431  4751331    996
+ 660431  4751361    995
+ 660431  4751391    996
+ 660431  4751421    996
+ 660431  4751451    996
+ 660431  4751481    995
+ 660431  4751511    995
+ 660431  4751541    995
+ 660431  4751571    995
+ 660431  4751601    994
+ 660431  4751631    994
+ 660431  4751661    995
+ 660431  4751691    995
+ 660431  4751721    995
+ 660431  4751751    994
+ 660431  4751781    993
+ 660431  4751811    980
+ 660431  4751841    961
+ 660431  4751871    947
+ 660431  4751901    931
+ 660431  4751931    921
+ 660431  4751961    913
+ 660431  4751991    905
+ 660431  4752021    897
+ 660431  4752051    891
+ 660431  4752081    886
+ 660431  4752111    883
+ 660431  4752141    880
+ 660431  4752171    878
+ 660431  4752201    876
+ 660431  4752231    875
+ 660431  4752261    874
+ 660431  4752291    873
+ 660431  4752321    871
+ 660431  4752351    871
+ 660431  4752381    870
+ 660431  4752411    869
+ 660431  4752441    866
+ 660431  4752471    864
+ 660431  4752501    864
+ 660431  4752531    865
+ 660431  4752561    865
+ 660431  4752591    863
+ 660431  4752621    862
+ 660431  4752651    856
+ 660431  4752681    838
+ 660431  4752711    825
+ 660431  4752741    809
+ 660431  4752771    809
+ 660431  4752801    809
+ 660431  4752831    809
+ 660431  4752861    809
+ 660431  4752891    809
+ 660431  4752921    809
+ 660431  4752951    809
+ 660431  4752981    809
+ 660431  4753011    809
+ 660431  4753041    823
+ 660431  4753071    833
+ 660431  4753101    839
+ 660431  4753131    846
+ 660431  4753161    857
+ 660431  4753191    863
+ 660431  4753221    862
+ 660431  4753251    861
+ 660431  4753281    861
+ 660431  4753311    862
+ 660431  4753341    863
+ 660431  4753371    865
+ 660431  4753401    865
+ 660431  4753431    866
+ 660431  4753461    868
+ 660431  4753491    868
+ 660431  4753521    869
+ 660431  4753551    869
+ 660431  4753581    869
+ 660431  4753611    869
+ 660431  4753641    869
+ 660431  4753671    870
+ 660431  4753701    870
+ 660431  4753731    870
+ 660431  4753761    870
+ 660431  4753791    870
+ 660431  4753821    869
+ 660431  4753851    869
+ 660431  4753881    869
+ 660431  4753911    869
+ 660431  4753941    869
+ 660431  4753971    868
+ 660431  4754001    867
+ 660431  4754031    865
+ 660431  4754061    864
+ 660431  4754091    865
+ 660431  4754121    866
+ 660431  4754151    868
+ 660431  4754181    875
+ 660431  4754211    895
+ 660431  4754241    935
+ 660431  4754271    953
+ 660431  4754301    956
+ 660431  4754331    958
+ 660431  4754361    960
+ 660431  4754391    960
+ 660431  4754421    960
+ 660431  4754451    959
+ 660431  4754481    959
+ 660431  4754511    958
+ 660431  4754541    958
+ 660461  4751301    997
+ 660461  4751331    997
+ 660461  4751361    997
+ 660461  4751391    997
+ 660461  4751421    997
+ 660461  4751451    997
+ 660461  4751481    997
+ 660461  4751511    997
+ 660461  4751541    996
+ 660461  4751571    996
+ 660461  4751601    996
+ 660461  4751631    995
+ 660461  4751661    995
+ 660461  4751691    994
+ 660461  4751721    994
+ 660461  4751751    993
+ 660461  4751781    992
+ 660461  4751811    977
+ 660461  4751841    962
+ 660461  4751871    948
+ 660461  4751901    931
+ 660461  4751931    918
+ 660461  4751961    908
+ 660461  4751991    900
+ 660461  4752021    894
+ 660461  4752051    890
+ 660461  4752081    886
+ 660461  4752111    883
+ 660461  4752141    881
+ 660461  4752171    878
+ 660461  4752201    876
+ 660461  4752231    875
+ 660461  4752261    874
+ 660461  4752291    873
+ 660461  4752321    871
+ 660461  4752351    870
+ 660461  4752381    869
+ 660461  4752411    867
+ 660461  4752441    862
+ 660461  4752471    862
+ 660461  4752501    861
+ 660461  4752531    862
+ 660461  4752561    864
+ 660461  4752591    864
+ 660461  4752621    862
+ 660461  4752651    853
+ 660461  4752681    836
+ 660461  4752711    822
+ 660461  4752741    809
+ 660461  4752771    809
+ 660461  4752801    809
+ 660461  4752831    809
+ 660461  4752861    809
+ 660461  4752891    809
+ 660461  4752921    809
+ 660461  4752951    809
+ 660461  4752981    809
+ 660461  4753011    809
+ 660461  4753041    809
+ 660461  4753071    818
+ 660461  4753101    824
+ 660461  4753131    832
+ 660461  4753161    846
+ 660461  4753191    857
+ 660461  4753221    861
+ 660461  4753251    861
+ 660461  4753281    858
+ 660461  4753311    861
+ 660461  4753341    862
+ 660461  4753371    865
+ 660461  4753401    866
+ 660461  4753431    869
+ 660461  4753461    868
+ 660461  4753491    870
+ 660461  4753521    869
+ 660461  4753551    869
+ 660461  4753581    870
+ 660461  4753611    869
+ 660461  4753641    870
+ 660461  4753671    870
+ 660461  4753701    870
+ 660461  4753731    870
+ 660461  4753761    870
+ 660461  4753791    870
+ 660461  4753821    870
+ 660461  4753851    870
+ 660461  4753881    869
+ 660461  4753911    869
+ 660461  4753941    869
+ 660461  4753971    869
+ 660461  4754001    868
+ 660461  4754031    867
+ 660461  4754061    865
+ 660461  4754091    866
+ 660461  4754121    866
+ 660461  4754151    868
+ 660461  4754181    875
+ 660461  4754211    897
+ 660461  4754241    933
+ 660461  4754271    953
+ 660461  4754301    955
+ 660461  4754331    958
+ 660461  4754361    960
+ 660461  4754391    960
+ 660461  4754421    960
+ 660461  4754451    959
+ 660461  4754481    959
+ 660461  4754511    958
+ 660461  4754541    958
+ 660491  4751301    998
+ 660491  4751331    998
+ 660491  4751361    998
+ 660491  4751391    998
+ 660491  4751421    998
+ 660491  4751451    998
+ 660491  4751481    998
+ 660491  4751511    998
+ 660491  4751541    997
+ 660491  4751571    997
+ 660491  4751601    997
+ 660491  4751631    996
+ 660491  4751661    996
+ 660491  4751691    995
+ 660491  4751721    994
+ 660491  4751751    993
+ 660491  4751781    992
+ 660491  4751811    983
+ 660491  4751841    967
+ 660491  4751871    948
+ 660491  4751901    932
+ 660491  4751931    919
+ 660491  4751961    910
+ 660491  4751991    902
+ 660491  4752021    893
+ 660491  4752051    889
+ 660491  4752081    886
+ 660491  4752111    884
+ 660491  4752141    881
+ 660491  4752171    878
+ 660491  4752201    876
+ 660491  4752231    875
+ 660491  4752261    874
+ 660491  4752291    873
+ 660491  4752321    871
+ 660491  4752351    870
+ 660491  4752381    869
+ 660491  4752411    866
+ 660491  4752441    862
+ 660491  4752471    860
+ 660491  4752501    859
+ 660491  4752531    861
+ 660491  4752561    863
+ 660491  4752591    863
+ 660491  4752621    863
+ 660491  4752651    854
+ 660491  4752681    835
+ 660491  4752711    820
+ 660491  4752741    813
+ 660491  4752771    817
+ 660491  4752801    809
+ 660491  4752831    809
+ 660491  4752861    809
+ 660491  4752891    809
+ 660491  4752921    809
+ 660491  4752951    809
+ 660491  4752981    809
+ 660491  4753011    809
+ 660491  4753041    809
+ 660491  4753071    809
+ 660491  4753101    809
+ 660491  4753131    820
+ 660491  4753161    829
+ 660491  4753191    844
+ 660491  4753221    854
+ 660491  4753251    856
+ 660491  4753281    855
+ 660491  4753311    860
+ 660491  4753341    863
+ 660491  4753371    866
+ 660491  4753401    869
+ 660491  4753431    869
+ 660491  4753461    869
+ 660491  4753491    869
+ 660491  4753521    870
+ 660491  4753551    870
+ 660491  4753581    870
+ 660491  4753611    871
+ 660491  4753641    870
+ 660491  4753671    871
+ 660491  4753701    871
+ 660491  4753731    871
+ 660491  4753761    871
+ 660491  4753791    871
+ 660491  4753821    871
+ 660491  4753851    871
+ 660491  4753881    871
+ 660491  4753911    871
+ 660491  4753941    870
+ 660491  4753971    870
+ 660491  4754001    869
+ 660491  4754031    868
+ 660491  4754061    866
+ 660491  4754091    866
+ 660491  4754121    866
+ 660491  4754151    868
+ 660491  4754181    875
+ 660491  4754211    898
+ 660491  4754241    930
+ 660491  4754271    953
+ 660491  4754301    955
+ 660491  4754331    958
+ 660491  4754361    960
+ 660491  4754391    960
+ 660491  4754421    960
+ 660491  4754451    959
+ 660491  4754481    959
+ 660491  4754511    958
+ 660491  4754541    958
+ 660521  4751301    999
+ 660521  4751331    999
+ 660521  4751361    999
+ 660521  4751391    999
+ 660521  4751421    999
+ 660521  4751451    999
+ 660521  4751481    999
+ 660521  4751511    999
+ 660521  4751541    998
+ 660521  4751571    997
+ 660521  4751601    997
+ 660521  4751631    996
+ 660521  4751661    996
+ 660521  4751691    995
+ 660521  4751721    994
+ 660521  4751751    993
+ 660521  4751781    993
+ 660521  4751811    978
+ 660521  4751841    963
+ 660521  4751871    946
+ 660521  4751901    930
+ 660521  4751931    919
+ 660521  4751961    910
+ 660521  4751991    902
+ 660521  4752021    894
+ 660521  4752051    889
+ 660521  4752081    885
+ 660521  4752111    883
+ 660521  4752141    880
+ 660521  4752171    878
+ 660521  4752201    876
+ 660521  4752231    875
+ 660521  4752261    874
+ 660521  4752291    872
+ 660521  4752321    871
+ 660521  4752351    870
+ 660521  4752381    869
+ 660521  4752411    866
+ 660521  4752441    864
+ 660521  4752471    862
+ 660521  4752501    856
+ 660521  4752531    859
+ 660521  4752561    861
+ 660521  4752591    861
+ 660521  4752621    863
+ 660521  4752651    854
+ 660521  4752681    836
+ 660521  4752711    819
+ 660521  4752741    820
+ 660521  4752771    828
+ 660521  4752801    821
+ 660521  4752831    809
+ 660521  4752861    809
+ 660521  4752891    809
+ 660521  4752921    809
+ 660521  4752951    809
+ 660521  4752981    809
+ 660521  4753011    809
+ 660521  4753041    809
+ 660521  4753071    809
+ 660521  4753101    809
+ 660521  4753131    809
+ 660521  4753161    809
+ 660521  4753191    826
+ 660521  4753221    838
+ 660521  4753251    843
+ 660521  4753281    849
+ 660521  4753311    860
+ 660521  4753341    862
+ 660521  4753371    865
+ 660521  4753401    867
+ 660521  4753431    869
+ 660521  4753461    868
+ 660521  4753491    869
+ 660521  4753521    869
+ 660521  4753551    870
+ 660521  4753581    870
+ 660521  4753611    871
+ 660521  4753641    870
+ 660521  4753671    871
+ 660521  4753701    871
+ 660521  4753731    871
+ 660521  4753761    872
+ 660521  4753791    872
+ 660521  4753821    872
+ 660521  4753851    871
+ 660521  4753881    871
+ 660521  4753911    871
+ 660521  4753941    871
+ 660521  4753971    870
+ 660521  4754001    869
+ 660521  4754031    868
+ 660521  4754061    867
+ 660521  4754091    866
+ 660521  4754121    867
+ 660521  4754151    868
+ 660521  4754181    873
+ 660521  4754211    894
+ 660521  4754241    926
+ 660521  4754271    953
+ 660521  4754301    955
+ 660521  4754331    957
+ 660521  4754361    960
+ 660521  4754391    960
+ 660521  4754421    960
+ 660521  4754451    959
+ 660521  4754481    959
+ 660521  4754511    958
+ 660521  4754541    958
+ 660551  4751301   1001
+ 660551  4751331   1000
+ 660551  4751361   1000
+ 660551  4751391   1000
+ 660551  4751421   1000
+ 660551  4751451   1000
+ 660551  4751481   1000
+ 660551  4751511   1000
+ 660551  4751541    999
+ 660551  4751571    998
+ 660551  4751601    997
+ 660551  4751631    997
+ 660551  4751661    996
+ 660551  4751691    996
+ 660551  4751721    995
+ 660551  4751751    993
+ 660551  4751781    992
+ 660551  4751811    977
+ 660551  4751841    959
+ 660551  4751871    945
+ 660551  4751901    930
+ 660551  4751931    915
+ 660551  4751961    907
+ 660551  4751991    900
+ 660551  4752021    891
+ 660551  4752051    887
+ 660551  4752081    884
+ 660551  4752111    882
+ 660551  4752141    880
+ 660551  4752171    877
+ 660551  4752201    876
+ 660551  4752231    875
+ 660551  4752261    874
+ 660551  4752291    872
+ 660551  4752321    870
+ 660551  4752351    869
+ 660551  4752381    868
+ 660551  4752411    866
+ 660551  4752441    864
+ 660551  4752471    862
+ 660551  4752501    855
+ 660551  4752531    854
+ 660551  4752561    855
+ 660551  4752591    852
+ 660551  4752621    851
+ 660551  4752651    847
+ 660551  4752681    835
+ 660551  4752711    821
+ 660551  4752741    830
+ 660551  4752771    837
+ 660551  4752801    825
+ 660551  4752831    814
+ 660551  4752861    809
+ 660551  4752891    809
+ 660551  4752921    809
+ 660551  4752951    809
+ 660551  4752981    809
+ 660551  4753011    809
+ 660551  4753041    809
+ 660551  4753071    809
+ 660551  4753101    809
+ 660551  4753131    809
+ 660551  4753161    809
+ 660551  4753191    817
+ 660551  4753221    824
+ 660551  4753251    831
+ 660551  4753281    838
+ 660551  4753311    854
+ 660551  4753341    862
+ 660551  4753371    864
+ 660551  4753401    865
+ 660551  4753431    867
+ 660551  4753461    867
+ 660551  4753491    868
+ 660551  4753521    869
+ 660551  4753551    870
+ 660551  4753581    870
+ 660551  4753611    871
+ 660551  4753641    871
+ 660551  4753671    871
+ 660551  4753701    871
+ 660551  4753731    871
+ 660551  4753761    871
+ 660551  4753791    871
+ 660551  4753821    872
+ 660551  4753851    872
+ 660551  4753881    872
+ 660551  4753911    872
+ 660551  4753941    871
+ 660551  4753971    871
+ 660551  4754001    870
+ 660551  4754031    869
+ 660551  4754061    867
+ 660551  4754091    866
+ 660551  4754121    867
+ 660551  4754151    867
+ 660551  4754181    872
+ 660551  4754211    889
+ 660551  4754241    918
+ 660551  4754271    951
+ 660551  4754301    955
+ 660551  4754331    957
+ 660551  4754361    959
+ 660551  4754391    960
+ 660551  4754421    960
+ 660551  4754451    959
+ 660551  4754481    959
+ 660551  4754511    958
+ 660551  4754541    958
+ 660581  4751301   1002
+ 660581  4751331   1001
+ 660581  4751361   1001
+ 660581  4751391   1001
+ 660581  4751421   1001
+ 660581  4751451   1001
+ 660581  4751481   1001
+ 660581  4751511   1000
+ 660581  4751541    999
+ 660581  4751571    999
+ 660581  4751601    998
+ 660581  4751631    997
+ 660581  4751661    997
+ 660581  4751691    996
+ 660581  4751721    995
+ 660581  4751751    993
+ 660581  4751781    991
+ 660581  4751811    974
+ 660581  4751841    957
+ 660581  4751871    941
+ 660581  4751901    926
+ 660581  4751931    913
+ 660581  4751961    905
+ 660581  4751991    896
+ 660581  4752021    890
+ 660581  4752051    886
+ 660581  4752081    884
+ 660581  4752111    882
+ 660581  4752141    880
+ 660581  4752171    878
+ 660581  4752201    877
+ 660581  4752231    876
+ 660581  4752261    874
+ 660581  4752291    871
+ 660581  4752321    870
+ 660581  4752351    868
+ 660581  4752381    866
+ 660581  4752411    864
+ 660581  4752441    862
+ 660581  4752471    858
+ 660581  4752501    852
+ 660581  4752531    844
+ 660581  4752561    843
+ 660581  4752591    838
+ 660581  4752621    837
+ 660581  4752651    836
+ 660581  4752681    830
+ 660581  4752711    827
+ 660581  4752741    843
+ 660581  4752771    845
+ 660581  4752801    829
+ 660581  4752831    816
+ 660581  4752861    809
+ 660581  4752891    809
+ 660581  4752921    809
+ 660581  4752951    809
+ 660581  4752981    809
+ 660581  4753011    809
+ 660581  4753041    809
+ 660581  4753071    809
+ 660581  4753101    809
+ 660581  4753131    809
+ 660581  4753161    809
+ 660581  4753191    809
+ 660581  4753221    813
+ 660581  4753251    820
+ 660581  4753281    832
+ 660581  4753311    846
+ 660581  4753341    861
+ 660581  4753371    863
+ 660581  4753401    864
+ 660581  4753431    866
+ 660581  4753461    867
+ 660581  4753491    868
+ 660581  4753521    869
+ 660581  4753551    870
+ 660581  4753581    870
+ 660581  4753611    872
+ 660581  4753641    871
+ 660581  4753671    871
+ 660581  4753701    872
+ 660581  4753731    871
+ 660581  4753761    871
+ 660581  4753791    871
+ 660581  4753821    871
+ 660581  4753851    871
+ 660581  4753881    871
+ 660581  4753911    872
+ 660581  4753941    872
+ 660581  4753971    871
+ 660581  4754001    869
+ 660581  4754031    869
+ 660581  4754061    867
+ 660581  4754091    867
+ 660581  4754121    867
+ 660581  4754151    867
+ 660581  4754181    871
+ 660581  4754211    887
+ 660581  4754241    925
+ 660581  4754271    949
+ 660581  4754301    955
+ 660581  4754331    958
+ 660581  4754361    959
+ 660581  4754391    960
+ 660581  4754421    960
+ 660581  4754451    959
+ 660581  4754481    959
+ 660581  4754511    959
+ 660581  4754541    958
+ 660611  4751301   1002
+ 660611  4751331   1002
+ 660611  4751361   1003
+ 660611  4751391   1002
+ 660611  4751421   1003
+ 660611  4751451   1002
+ 660611  4751481   1002
+ 660611  4751511   1001
+ 660611  4751541   1000
+ 660611  4751571    999
+ 660611  4751601    999
+ 660611  4751631    998
+ 660611  4751661    997
+ 660611  4751691    996
+ 660611  4751721    994
+ 660611  4751751    993
+ 660611  4751781    986
+ 660611  4751811    968
+ 660611  4751841    948
+ 660611  4751871    939
+ 660611  4751901    924
+ 660611  4751931    912
+ 660611  4751961    903
+ 660611  4751991    892
+ 660611  4752021    889
+ 660611  4752051    887
+ 660611  4752081    884
+ 660611  4752111    882
+ 660611  4752141    881
+ 660611  4752171    879
+ 660611  4752201    878
+ 660611  4752231    876
+ 660611  4752261    874
+ 660611  4752291    871
+ 660611  4752321    869
+ 660611  4752351    866
+ 660611  4752381    863
+ 660611  4752411    861
+ 660611  4752441    856
+ 660611  4752471    849
+ 660611  4752501    844
+ 660611  4752531    839
+ 660611  4752561    838
+ 660611  4752591    838
+ 660611  4752621    837
+ 660611  4752651    830
+ 660611  4752681    828
+ 660611  4752711    835
+ 660611  4752741    850
+ 660611  4752771    850
+ 660611  4752801    831
+ 660611  4752831    820
+ 660611  4752861    818
+ 660611  4752891    809
+ 660611  4752921    809
+ 660611  4752951    809
+ 660611  4752981    809
+ 660611  4753011    809
+ 660611  4753041    809
+ 660611  4753071    809
+ 660611  4753101    809
+ 660611  4753131    809
+ 660611  4753161    809
+ 660611  4753191    809
+ 660611  4753221    809
+ 660611  4753251    809
+ 660611  4753281    825
+ 660611  4753311    839
+ 660611  4753341    854
+ 660611  4753371    860
+ 660611  4753401    862
+ 660611  4753431    867
+ 660611  4753461    869
+ 660611  4753491    869
+ 660611  4753521    869
+ 660611  4753551    870
+ 660611  4753581    870
+ 660611  4753611    871
+ 660611  4753641    871
+ 660611  4753671    872
+ 660611  4753701    872
+ 660611  4753731    872
+ 660611  4753761    872
+ 660611  4753791    871
+ 660611  4753821    871
+ 660611  4753851    871
+ 660611  4753881    871
+ 660611  4753911    871
+ 660611  4753941    871
+ 660611  4753971    871
+ 660611  4754001    869
+ 660611  4754031    869
+ 660611  4754061    867
+ 660611  4754091    867
+ 660611  4754121    867
+ 660611  4754151    867
+ 660611  4754181    872
+ 660611  4754211    886
+ 660611  4754241    912
+ 660611  4754271    941
+ 660611  4754301    954
+ 660611  4754331    959
+ 660611  4754361    960
+ 660611  4754391    960
+ 660611  4754421    960
+ 660611  4754451    960
+ 660611  4754481    959
+ 660611  4754511    959
+ 660611  4754541    958
+ 660641  4751301   1002
+ 660641  4751331   1003
+ 660641  4751361   1003
+ 660641  4751391   1004
+ 660641  4751421   1004
+ 660641  4751451   1004
+ 660641  4751481   1003
+ 660641  4751511   1002
+ 660641  4751541   1001
+ 660641  4751571   1000
+ 660641  4751601   1000
+ 660641  4751631    998
+ 660641  4751661    997
+ 660641  4751691    996
+ 660641  4751721    994
+ 660641  4751751    992
+ 660641  4751781    978
+ 660641  4751811    965
+ 660641  4751841    949
+ 660641  4751871    939
+ 660641  4751901    926
+ 660641  4751931    914
+ 660641  4751961    904
+ 660641  4751991    893
+ 660641  4752021    890
+ 660641  4752051    887
+ 660641  4752081    884
+ 660641  4752111    882
+ 660641  4752141    881
+ 660641  4752171    880
+ 660641  4752201    878
+ 660641  4752231    876
+ 660641  4752261    874
+ 660641  4752291    871
+ 660641  4752321    868
+ 660641  4752351    863
+ 660641  4752381    861
+ 660641  4752411    854
+ 660641  4752441    851
+ 660641  4752471    846
+ 660641  4752501    842
+ 660641  4752531    846
+ 660641  4752561    852
+ 660641  4752591    851
+ 660641  4752621    843
+ 660641  4752651    832
+ 660641  4752681    836
+ 660641  4752711    846
+ 660641  4752741    855
+ 660641  4752771    852
+ 660641  4752801    832
+ 660641  4752831    828
+ 660641  4752861    825
+ 660641  4752891    818
+ 660641  4752921    809
+ 660641  4752951    809
+ 660641  4752981    809
+ 660641  4753011    809
+ 660641  4753041    809
+ 660641  4753071    809
+ 660641  4753101    809
+ 660641  4753131    809
+ 660641  4753161    809
+ 660641  4753191    809
+ 660641  4753221    809
+ 660641  4753251    809
+ 660641  4753281    815
+ 660641  4753311    831
+ 660641  4753341    840
+ 660641  4753371    850
+ 660641  4753401    859
+ 660641  4753431    865
+ 660641  4753461    869
+ 660641  4753491    871
+ 660641  4753521    870
+ 660641  4753551    871
+ 660641  4753581    871
+ 660641  4753611    871
+ 660641  4753641    871
+ 660641  4753671    872
+ 660641  4753701    872
+ 660641  4753731    872
+ 660641  4753761    873
+ 660641  4753791    873
+ 660641  4753821    873
+ 660641  4753851    872
+ 660641  4753881    871
+ 660641  4753911    871
+ 660641  4753941    870
+ 660641  4753971    870
+ 660641  4754001    870
+ 660641  4754031    869
+ 660641  4754061    867
+ 660641  4754091    867
+ 660641  4754121    867
+ 660641  4754151    867
+ 660641  4754181    872
+ 660641  4754211    885
+ 660641  4754241    907
+ 660641  4754271    943
+ 660641  4754301    958
+ 660641  4754331    960
+ 660641  4754361    960
+ 660641  4754391    960
+ 660641  4754421    960
+ 660641  4754451    960
+ 660641  4754481    959
+ 660641  4754511    959
+ 660641  4754541    958
+ 660671  4751301   1002
+ 660671  4751331   1004
+ 660671  4751361   1004
+ 660671  4751391   1004
+ 660671  4751421   1005
+ 660671  4751451   1005
+ 660671  4751481   1005
+ 660671  4751511   1004
+ 660671  4751541   1003
+ 660671  4751571   1001
+ 660671  4751601   1000
+ 660671  4751631    999
+ 660671  4751661    998
+ 660671  4751691    996
+ 660671  4751721    995
+ 660671  4751751    992
+ 660671  4751781    981
+ 660671  4751811    967
+ 660671  4751841    955
+ 660671  4751871    945
+ 660671  4751901    930
+ 660671  4751931    915
+ 660671  4751961    905
+ 660671  4751991    897
+ 660671  4752021    891
+ 660671  4752051    888
+ 660671  4752081    885
+ 660671  4752111    883
+ 660671  4752141    881
+ 660671  4752171    880
+ 660671  4752201    878
+ 660671  4752231    877
+ 660671  4752261    874
+ 660671  4752291    870
+ 660671  4752321    867
+ 660671  4752351    863
+ 660671  4752381    860
+ 660671  4752411    862
+ 660671  4752441    853
+ 660671  4752471    844
+ 660671  4752501    852
+ 660671  4752531    859
+ 660671  4752561    863
+ 660671  4752591    856
+ 660671  4752621    845
+ 660671  4752651    838
+ 660671  4752681    844
+ 660671  4752711    854
+ 660671  4752741    858
+ 660671  4752771    850
+ 660671  4752801    836
+ 660671  4752831    840
+ 660671  4752861    834
+ 660671  4752891    828
+ 660671  4752921    809
+ 660671  4752951    809
+ 660671  4752981    809
+ 660671  4753011    809
+ 660671  4753041    809
+ 660671  4753071    809
+ 660671  4753101    809
+ 660671  4753131    809
+ 660671  4753161    809
+ 660671  4753191    809
+ 660671  4753221    809
+ 660671  4753251    809
+ 660671  4753281    809
+ 660671  4753311    818
+ 660671  4753341    829
+ 660671  4753371    840
+ 660671  4753401    853
+ 660671  4753431    862
+ 660671  4753461    868
+ 660671  4753491    869
+ 660671  4753521    871
+ 660671  4753551    871
+ 660671  4753581    871
+ 660671  4753611    871
+ 660671  4753641    872
+ 660671  4753671    872
+ 660671  4753701    873
+ 660671  4753731    873
+ 660671  4753761    874
+ 660671  4753791    874
+ 660671  4753821    873
+ 660671  4753851    873
+ 660671  4753881    873
+ 660671  4753911    872
+ 660671  4753941    871
+ 660671  4753971    870
+ 660671  4754001    869
+ 660671  4754031    869
+ 660671  4754061    867
+ 660671  4754091    867
+ 660671  4754121    867
+ 660671  4754151    867
+ 660671  4754181    871
+ 660671  4754211    886
+ 660671  4754241    910
+ 660671  4754271    944
+ 660671  4754301    961
+ 660671  4754331    960
+ 660671  4754361    960
+ 660671  4754391    960
+ 660671  4754421    960
+ 660671  4754451    960
+ 660671  4754481    959
+ 660671  4754511    958
+ 660671  4754541    958
+ 660701  4751301   1000
+ 660701  4751331   1003
+ 660701  4751361   1005
+ 660701  4751391   1005
+ 660701  4751421   1006
+ 660701  4751451   1006
+ 660701  4751481   1006
+ 660701  4751511   1005
+ 660701  4751541   1004
+ 660701  4751571   1002
+ 660701  4751601   1001
+ 660701  4751631   1000
+ 660701  4751661    998
+ 660701  4751691    997
+ 660701  4751721    996
+ 660701  4751751    993
+ 660701  4751781    981
+ 660701  4751811    967
+ 660701  4751841    955
+ 660701  4751871    943
+ 660701  4751901    927
+ 660701  4751931    915
+ 660701  4751961    904
+ 660701  4751991    897
+ 660701  4752021    892
+ 660701  4752051    889
+ 660701  4752081    886
+ 660701  4752111    884
+ 660701  4752141    882
+ 660701  4752171    880
+ 660701  4752201    878
+ 660701  4752231    877
+ 660701  4752261    874
+ 660701  4752291    870
+ 660701  4752321    867
+ 660701  4752351    865
+ 660701  4752381    863
+ 660701  4752411    859
+ 660701  4752441    847
+ 660701  4752471    852
+ 660701  4752501    861
+ 660701  4752531    864
+ 660701  4752561    865
+ 660701  4752591    856
+ 660701  4752621    843
+ 660701  4752651    841
+ 660701  4752681    847
+ 660701  4752711    861
+ 660701  4752741    859
+ 660701  4752771    850
+ 660701  4752801    846
+ 660701  4752831    849
+ 660701  4752861    849
+ 660701  4752891    832
+ 660701  4752921    809
+ 660701  4752951    809
+ 660701  4752981    809
+ 660701  4753011    809
+ 660701  4753041    809
+ 660701  4753071    820
+ 660701  4753101    818
+ 660701  4753131    809
+ 660701  4753161    809
+ 660701  4753191    809
+ 660701  4753221    809
+ 660701  4753251    809
+ 660701  4753281    809
+ 660701  4753311    809
+ 660701  4753341    819
+ 660701  4753371    832
+ 660701  4753401    844
+ 660701  4753431    853
+ 660701  4753461    861
+ 660701  4753491    865
+ 660701  4753521    869
+ 660701  4753551    869
+ 660701  4753581    870
+ 660701  4753611    870
+ 660701  4753641    872
+ 660701  4753671    872
+ 660701  4753701    873
+ 660701  4753731    874
+ 660701  4753761    874
+ 660701  4753791    874
+ 660701  4753821    874
+ 660701  4753851    874
+ 660701  4753881    874
+ 660701  4753911    874
+ 660701  4753941    873
+ 660701  4753971    870
+ 660701  4754001    869
+ 660701  4754031    868
+ 660701  4754061    867
+ 660701  4754091    867
+ 660701  4754121    868
+ 660701  4754151    867
+ 660701  4754181    871
+ 660701  4754211    888
+ 660701  4754241    907
+ 660701  4754271    940
+ 660701  4754301    955
+ 660701  4754331    957
+ 660701  4754361    959
+ 660701  4754391    960
+ 660701  4754421    960
+ 660701  4754451    959
+ 660701  4754481    959
+ 660701  4754511    958
+ 660701  4754541    958
+ 660731  4751301    998
+ 660731  4751331   1003
+ 660731  4751361   1005
+ 660731  4751391   1006
+ 660731  4751421   1006
+ 660731  4751451   1006
+ 660731  4751481   1006
+ 660731  4751511   1006
+ 660731  4751541   1004
+ 660731  4751571   1002
+ 660731  4751601   1001
+ 660731  4751631   1000
+ 660731  4751661    998
+ 660731  4751691    999
+ 660731  4751721    997
+ 660731  4751751    993
+ 660731  4751781    978
+ 660731  4751811    964
+ 660731  4751841    953
+ 660731  4751871    941
+ 660731  4751901    928
+ 660731  4751931    913
+ 660731  4751961    903
+ 660731  4751991    897
+ 660731  4752021    892
+ 660731  4752051    889
+ 660731  4752081    886
+ 660731  4752111    884
+ 660731  4752141    882
+ 660731  4752171    880
+ 660731  4752201    878
+ 660731  4752231    876
+ 660731  4752261    874
+ 660731  4752291    871
+ 660731  4752321    869
+ 660731  4752351    866
+ 660731  4752381    862
+ 660731  4752411    853
+ 660731  4752441    852
+ 660731  4752471    860
+ 660731  4752501    864
+ 660731  4752531    867
+ 660731  4752561    863
+ 660731  4752591    852
+ 660731  4752621    842
+ 660731  4752651    843
+ 660731  4752681    850
+ 660731  4752711    863
+ 660731  4752741    859
+ 660731  4752771    853
+ 660731  4752801    859
+ 660731  4752831    862
+ 660731  4752861    848
+ 660731  4752891    825
+ 660731  4752921    809
+ 660731  4752951    809
+ 660731  4752981    809
+ 660731  4753011    809
+ 660731  4753041    831
+ 660731  4753071    839
+ 660731  4753101    835
+ 660731  4753131    831
+ 660731  4753161    809
+ 660731  4753191    809
+ 660731  4753221    809
+ 660731  4753251    809
+ 660731  4753281    809
+ 660731  4753311    809
+ 660731  4753341    809
+ 660731  4753371    826
+ 660731  4753401    833
+ 660731  4753431    845
+ 660731  4753461    855
+ 660731  4753491    861
+ 660731  4753521    865
+ 660731  4753551    867
+ 660731  4753581    868
+ 660731  4753611    871
+ 660731  4753641    873
+ 660731  4753671    873
+ 660731  4753701    873
+ 660731  4753731    874
+ 660731  4753761    874
+ 660731  4753791    875
+ 660731  4753821    875
+ 660731  4753851    875
+ 660731  4753881    875
+ 660731  4753911    875
+ 660731  4753941    875
+ 660731  4753971    873
+ 660731  4754001    870
+ 660731  4754031    869
+ 660731  4754061    868
+ 660731  4754091    867
+ 660731  4754121    868
+ 660731  4754151    868
+ 660731  4754181    874
+ 660731  4754211    889
+ 660731  4754241    904
+ 660731  4754271    937
+ 660731  4754301    954
+ 660731  4754331    956
+ 660731  4754361    959
+ 660731  4754391    960
+ 660731  4754421    960
+ 660731  4754451    959
+ 660731  4754481    959
+ 660731  4754511    958
+ 660731  4754541    958
+ 660761  4751301   1002
+ 660761  4751331   1004
+ 660761  4751361   1006
+ 660761  4751391   1006
+ 660761  4751421   1006
+ 660761  4751451   1006
+ 660761  4751481   1007
+ 660761  4751511   1006
+ 660761  4751541   1004
+ 660761  4751571   1003
+ 660761  4751601   1002
+ 660761  4751631   1001
+ 660761  4751661   1000
+ 660761  4751691   1000
+ 660761  4751721    997
+ 660761  4751751    989
+ 660761  4751781    972
+ 660761  4751811    960
+ 660761  4751841    949
+ 660761  4751871    939
+ 660761  4751901    924
+ 660761  4751931    912
+ 660761  4751961    901
+ 660761  4751991    897
+ 660761  4752021    892
+ 660761  4752051    891
+ 660761  4752081    886
+ 660761  4752111    884
+ 660761  4752141    882
+ 660761  4752171    881
+ 660761  4752201    879
+ 660761  4752231    877
+ 660761  4752261    877
+ 660761  4752291    873
+ 660761  4752321    869
+ 660761  4752351    866
+ 660761  4752381    862
+ 660761  4752411    852
+ 660761  4752441    855
+ 660761  4752471    863
+ 660761  4752501    866
+ 660761  4752531    864
+ 660761  4752561    856
+ 660761  4752591    846
+ 660761  4752621    842
+ 660761  4752651    847
+ 660761  4752681    854
+ 660761  4752711    860
+ 660761  4752741    859
+ 660761  4752771    860
+ 660761  4752801    863
+ 660761  4752831    862
+ 660761  4752861    845
+ 660761  4752891    823
+ 660761  4752921    809
+ 660761  4752951    809
+ 660761  4752981    809
+ 660761  4753011    809
+ 660761  4753041    835
+ 660761  4753071    854
+ 660761  4753101    847
+ 660761  4753131    839
+ 660761  4753161    809
+ 660761  4753191    809
+ 660761  4753221    809
+ 660761  4753251    809
+ 660761  4753281    809
+ 660761  4753311    809
+ 660761  4753341    809
+ 660761  4753371    818
+ 660761  4753401    826
+ 660761  4753431    835
+ 660761  4753461    848
+ 660761  4753491    857
+ 660761  4753521    861
+ 660761  4753551    865
+ 660761  4753581    869
+ 660761  4753611    870
+ 660761  4753641    871
+ 660761  4753671    873
+ 660761  4753701    873
+ 660761  4753731    874
+ 660761  4753761    874
+ 660761  4753791    875
+ 660761  4753821    875
+ 660761  4753851    875
+ 660761  4753881    875
+ 660761  4753911    875
+ 660761  4753941    875
+ 660761  4753971    875
+ 660761  4754001    873
+ 660761  4754031    871
+ 660761  4754061    869
+ 660761  4754091    868
+ 660761  4754121    868
+ 660761  4754151    870
+ 660761  4754181    876
+ 660761  4754211    890
+ 660761  4754241    905
+ 660761  4754271    936
+ 660761  4754301    953
+ 660761  4754331    956
+ 660761  4754361    959
+ 660761  4754391    960
+ 660761  4754421    960
+ 660761  4754451    959
+ 660761  4754481    959
+ 660761  4754511    959
+ 660761  4754541    959
+ 660791  4751301   1004
+ 660791  4751331   1005
+ 660791  4751361   1006
+ 660791  4751391   1006
+ 660791  4751421   1007
+ 660791  4751451   1006
+ 660791  4751481   1006
+ 660791  4751511   1005
+ 660791  4751541   1003
+ 660791  4751571   1003
+ 660791  4751601   1002
+ 660791  4751631   1001
+ 660791  4751661   1001
+ 660791  4751691    999
+ 660791  4751721    993
+ 660791  4751751    980
+ 660791  4751781    966
+ 660791  4751811    956
+ 660791  4751841    943
+ 660791  4751871    935
+ 660791  4751901    923
+ 660791  4751931    908
+ 660791  4751961    903
+ 660791  4751991    901
+ 660791  4752021    895
+ 660791  4752051    890
+ 660791  4752081    888
+ 660791  4752111    885
+ 660791  4752141    883
+ 660791  4752171    881
+ 660791  4752201    879
+ 660791  4752231    878
+ 660791  4752261    877
+ 660791  4752291    874
+ 660791  4752321    870
+ 660791  4752351    866
+ 660791  4752381    862
+ 660791  4752411    853
+ 660791  4752441    861
+ 660791  4752471    865
+ 660791  4752501    867
+ 660791  4752531    863
+ 660791  4752561    854
+ 660791  4752591    844
+ 660791  4752621    843
+ 660791  4752651    849
+ 660791  4752681    861
+ 660791  4752711    861
+ 660791  4752741    859
+ 660791  4752771    861
+ 660791  4752801    864
+ 660791  4752831    863
+ 660791  4752861    849
+ 660791  4752891    828
+ 660791  4752921    809
+ 660791  4752951    809
+ 660791  4752981    809
+ 660791  4753011    821
+ 660791  4753041    835
+ 660791  4753071    852
+ 660791  4753101    846
+ 660791  4753131    836
+ 660791  4753161    823
+ 660791  4753191    809
+ 660791  4753221    809
+ 660791  4753251    809
+ 660791  4753281    809
+ 660791  4753311    809
+ 660791  4753341    809
+ 660791  4753371    809
+ 660791  4753401    819
+ 660791  4753431    830
+ 660791  4753461    840
+ 660791  4753491    854
+ 660791  4753521    855
+ 660791  4753551    862
+ 660791  4753581    869
+ 660791  4753611    870
+ 660791  4753641    870
+ 660791  4753671    871
+ 660791  4753701    872
+ 660791  4753731    873
+ 660791  4753761    874
+ 660791  4753791    875
+ 660791  4753821    875
+ 660791  4753851    876
+ 660791  4753881    876
+ 660791  4753911    876
+ 660791  4753941    876
+ 660791  4753971    876
+ 660791  4754001    876
+ 660791  4754031    873
+ 660791  4754061    870
+ 660791  4754091    869
+ 660791  4754121    868
+ 660791  4754151    868
+ 660791  4754181    877
+ 660791  4754211    891
+ 660791  4754241    907
+ 660791  4754271    937
+ 660791  4754301    955
+ 660791  4754331    957
+ 660791  4754361    959
+ 660791  4754391    960
+ 660791  4754421    960
+ 660791  4754451    959
+ 660791  4754481    959
+ 660791  4754511    959
+ 660791  4754541    959
+ 660821  4751301   1005
+ 660821  4751331   1006
+ 660821  4751361   1007
+ 660821  4751391   1007
+ 660821  4751421   1008
+ 660821  4751451   1007
+ 660821  4751481   1007
+ 660821  4751511   1006
+ 660821  4751541   1003
+ 660821  4751571   1003
+ 660821  4751601   1002
+ 660821  4751631   1001
+ 660821  4751661   1000
+ 660821  4751691    995
+ 660821  4751721    983
+ 660821  4751751    969
+ 660821  4751781    960
+ 660821  4751811    950
+ 660821  4751841    941
+ 660821  4751871    933
+ 660821  4751901    922
+ 660821  4751931    914
+ 660821  4751961    909
+ 660821  4751991    900
+ 660821  4752021    896
+ 660821  4752051    893
+ 660821  4752081    890
+ 660821  4752111    886
+ 660821  4752141    883
+ 660821  4752171    882
+ 660821  4752201    880
+ 660821  4752231    878
+ 660821  4752261    876
+ 660821  4752291    874
+ 660821  4752321    870
+ 660821  4752351    865
+ 660821  4752381    861
+ 660821  4752411    858
+ 660821  4752441    866
+ 660821  4752471    868
+ 660821  4752501    866
+ 660821  4752531    863
+ 660821  4752561    853
+ 660821  4752591    843
+ 660821  4752621    844
+ 660821  4752651    851
+ 660821  4752681    861
+ 660821  4752711    861
+ 660821  4752741    861
+ 660821  4752771    861
+ 660821  4752801    863
+ 660821  4752831    863
+ 660821  4752861    853
+ 660821  4752891    832
+ 660821  4752921    809
+ 660821  4752951    809
+ 660821  4752981    809
+ 660821  4753011    820
+ 660821  4753041    839
+ 660821  4753071    850
+ 660821  4753101    845
+ 660821  4753131    835
+ 660821  4753161    824
+ 660821  4753191    819
+ 660821  4753221    809
+ 660821  4753251    809
+ 660821  4753281    809
+ 660821  4753311    809
+ 660821  4753341    809
+ 660821  4753371    809
+ 660821  4753401    809
+ 660821  4753431    823
+ 660821  4753461    832
+ 660821  4753491    839
+ 660821  4753521    846
+ 660821  4753551    859
+ 660821  4753581    868
+ 660821  4753611    870
+ 660821  4753641    871
+ 660821  4753671    871
+ 660821  4753701    872
+ 660821  4753731    873
+ 660821  4753761    874
+ 660821  4753791    875
+ 660821  4753821    876
+ 660821  4753851    876
+ 660821  4753881    876
+ 660821  4753911    877
+ 660821  4753941    877
+ 660821  4753971    878
+ 660821  4754001    877
+ 660821  4754031    874
+ 660821  4754061    872
+ 660821  4754091    870
+ 660821  4754121    868
+ 660821  4754151    868
+ 660821  4754181    879
+ 660821  4754211    894
+ 660821  4754241    910
+ 660821  4754271    938
+ 660821  4754301    960
+ 660821  4754331    960
+ 660821  4754361    958
+ 660821  4754391    960
+ 660821  4754421    960
+ 660821  4754451    960
+ 660821  4754481    959
+ 660821  4754511    959
+ 660821  4754541    959
+ 660851  4751301   1006
+ 660851  4751331   1006
+ 660851  4751361   1008
+ 660851  4751391   1010
+ 660851  4751421   1011
+ 660851  4751451   1010
+ 660851  4751481   1008
+ 660851  4751511   1007
+ 660851  4751541   1004
+ 660851  4751571   1002
+ 660851  4751601   1001
+ 660851  4751631   1000
+ 660851  4751661    998
+ 660851  4751691    983
+ 660851  4751721    971
+ 660851  4751751    958
+ 660851  4751781    951
+ 660851  4751811    944
+ 660851  4751841    938
+ 660851  4751871    929
+ 660851  4751901    922
+ 660851  4751931    917
+ 660851  4751961    911
+ 660851  4751991    905
+ 660851  4752021    898
+ 660851  4752051    895
+ 660851  4752081    891
+ 660851  4752111    886
+ 660851  4752141    883
+ 660851  4752171    881
+ 660851  4752201    880
+ 660851  4752231    878
+ 660851  4752261    876
+ 660851  4752291    873
+ 660851  4752321    870
+ 660851  4752351    865
+ 660851  4752381    861
+ 660851  4752411    861
+ 660851  4752441    870
+ 660851  4752471    869
+ 660851  4752501    866
+ 660851  4752531    861
+ 660851  4752561    848
+ 660851  4752591    843
+ 660851  4752621    846
+ 660851  4752651    859
+ 660851  4752681    861
+ 660851  4752711    861
+ 660851  4752741    861
+ 660851  4752771    861
+ 660851  4752801    863
+ 660851  4752831    858
+ 660851  4752861    845
+ 660851  4752891    829
+ 660851  4752921    809
+ 660851  4752951    809
+ 660851  4752981    809
+ 660851  4753011    822
+ 660851  4753041    844
+ 660851  4753071    855
+ 660851  4753101    848
+ 660851  4753131    839
+ 660851  4753161    829
+ 660851  4753191    834
+ 660851  4753221    821
+ 660851  4753251    809
+ 660851  4753281    809
+ 660851  4753311    809
+ 660851  4753341    809
+ 660851  4753371    809
+ 660851  4753401    809
+ 660851  4753431    809
+ 660851  4753461    820
+ 660851  4753491    828
+ 660851  4753521    843
+ 660851  4753551    855
+ 660851  4753581    864
+ 660851  4753611    869
+ 660851  4753641    870
+ 660851  4753671    871
+ 660851  4753701    872
+ 660851  4753731    873
+ 660851  4753761    874
+ 660851  4753791    875
+ 660851  4753821    876
+ 660851  4753851    877
+ 660851  4753881    877
+ 660851  4753911    877
+ 660851  4753941    877
+ 660851  4753971    877
+ 660851  4754001    876
+ 660851  4754031    874
+ 660851  4754061    872
+ 660851  4754091    870
+ 660851  4754121    868
+ 660851  4754151    871
+ 660851  4754181    882
+ 660851  4754211    898
+ 660851  4754241    914
+ 660851  4754271    946
+ 660851  4754301    956
+ 660851  4754331    957
+ 660851  4754361    958
+ 660851  4754391    960
+ 660851  4754421    960
+ 660851  4754451    960
+ 660851  4754481    959
+ 660851  4754511    959
+ 660851  4754541    960
+ 660881  4751301   1007
+ 660881  4751331   1008
+ 660881  4751361   1010
+ 660881  4751391   1012
+ 660881  4751421   1013
+ 660881  4751451   1012
+ 660881  4751481   1010
+ 660881  4751511   1007
+ 660881  4751541   1005
+ 660881  4751571   1004
+ 660881  4751601   1000
+ 660881  4751631    999
+ 660881  4751661    988
+ 660881  4751691    973
+ 660881  4751721    966
+ 660881  4751751    967
+ 660881  4751781    967
+ 660881  4751811    964
+ 660881  4751841    954
+ 660881  4751871    942
+ 660881  4751901    930
+ 660881  4751931    924
+ 660881  4751961    917
+ 660881  4751991    910
+ 660881  4752021    907
+ 660881  4752051    898
+ 660881  4752081    892
+ 660881  4752111    886
+ 660881  4752141    883
+ 660881  4752171    882
+ 660881  4752201    879
+ 660881  4752231    877
+ 660881  4752261    876
+ 660881  4752291    872
+ 660881  4752321    869
+ 660881  4752351    864
+ 660881  4752381    861
+ 660881  4752411    865
+ 660881  4752441    871
+ 660881  4752471    868
+ 660881  4752501    867
+ 660881  4752531    859
+ 660881  4752561    846
+ 660881  4752591    843
+ 660881  4752621    853
+ 660881  4752651    861
+ 660881  4752681    861
+ 660881  4752711    861
+ 660881  4752741    861
+ 660881  4752771    862
+ 660881  4752801    859
+ 660881  4752831    844
+ 660881  4752861    830
+ 660881  4752891    817
+ 660881  4752921    809
+ 660881  4752951    809
+ 660881  4752981    809
+ 660881  4753011    830
+ 660881  4753041    851
+ 660881  4753071    860
+ 660881  4753101    855
+ 660881  4753131    843
+ 660881  4753161    839
+ 660881  4753191    845
+ 660881  4753221    826
+ 660881  4753251    809
+ 660881  4753281    809
+ 660881  4753311    809
+ 660881  4753341    809
+ 660881  4753371    809
+ 660881  4753401    809
+ 660881  4753431    809
+ 660881  4753461    809
+ 660881  4753491    822
+ 660881  4753521    836
+ 660881  4753551    849
+ 660881  4753581    859
+ 660881  4753611    868
+ 660881  4753641    870
+ 660881  4753671    871
+ 660881  4753701    872
+ 660881  4753731    872
+ 660881  4753761    873
+ 660881  4753791    875
+ 660881  4753821    876
+ 660881  4753851    876
+ 660881  4753881    876
+ 660881  4753911    877
+ 660881  4753941    878
+ 660881  4753971    877
+ 660881  4754001    876
+ 660881  4754031    875
+ 660881  4754061    873
+ 660881  4754091    870
+ 660881  4754121    868
+ 660881  4754151    873
+ 660881  4754181    885
+ 660881  4754211    901
+ 660881  4754241    926
+ 660881  4754271    952
+ 660881  4754301    956
+ 660881  4754331    959
+ 660881  4754361    959
+ 660881  4754391    960
+ 660881  4754421    960
+ 660881  4754451    960
+ 660881  4754481    959
+ 660881  4754511    959
+ 660881  4754541    960
+ 660911  4751301   1010
+ 660911  4751331   1011
+ 660911  4751361   1012
+ 660911  4751391   1013
+ 660911  4751421   1014
+ 660911  4751451   1013
+ 660911  4751481   1011
+ 660911  4751511   1008
+ 660911  4751541   1006
+ 660911  4751571   1004
+ 660911  4751601   1001
+ 660911  4751631    997
+ 660911  4751661    985
+ 660911  4751691    974
+ 660911  4751721    974
+ 660911  4751751    979
+ 660911  4751781    982
+ 660911  4751811    979
+ 660911  4751841    964
+ 660911  4751871    948
+ 660911  4751901    937
+ 660911  4751931    929
+ 660911  4751961    922
+ 660911  4751991    915
+ 660911  4752021    907
+ 660911  4752051    900
+ 660911  4752081    894
+ 660911  4752111    889
+ 660911  4752141    884
+ 660911  4752171    882
+ 660911  4752201    879
+ 660911  4752231    876
+ 660911  4752261    874
+ 660911  4752291    871
+ 660911  4752321    869
+ 660911  4752351    863
+ 660911  4752381    862
+ 660911  4752411    868
+ 660911  4752441    872
+ 660911  4752471    872
+ 660911  4752501    869
+ 660911  4752531    857
+ 660911  4752561    844
+ 660911  4752591    843
+ 660911  4752621    854
+ 660911  4752651    861
+ 660911  4752681    861
+ 660911  4752711    861
+ 660911  4752741    861
+ 660911  4752771    868
+ 660911  4752801    853
+ 660911  4752831    837
+ 660911  4752861    821
+ 660911  4752891    811
+ 660911  4752921    809
+ 660911  4752951    809
+ 660911  4752981    822
+ 660911  4753011    837
+ 660911  4753041    857
+ 660911  4753071    864
+ 660911  4753101    862
+ 660911  4753131    849
+ 660911  4753161    849
+ 660911  4753191    853
+ 660911  4753221    830
+ 660911  4753251    809
+ 660911  4753281    809
+ 660911  4753311    809
+ 660911  4753341    809
+ 660911  4753371    809
+ 660911  4753401    809
+ 660911  4753431    809
+ 660911  4753461    809
+ 660911  4753491    815
+ 660911  4753521    826
+ 660911  4753551    837
+ 660911  4753581    851
+ 660911  4753611    862
+ 660911  4753641    869
+ 660911  4753671    871
+ 660911  4753701    871
+ 660911  4753731    872
+ 660911  4753761    873
+ 660911  4753791    874
+ 660911  4753821    875
+ 660911  4753851    875
+ 660911  4753881    876
+ 660911  4753911    877
+ 660911  4753941    877
+ 660911  4753971    878
+ 660911  4754001    878
+ 660911  4754031    877
+ 660911  4754061    873
+ 660911  4754091    869
+ 660911  4754121    870
+ 660911  4754151    875
+ 660911  4754181    887
+ 660911  4754211    903
+ 660911  4754241    934
+ 660911  4754271    958
+ 660911  4754301    960
+ 660911  4754331    960
+ 660911  4754361    960
+ 660911  4754391    960
+ 660911  4754421    960
+ 660911  4754451    960
+ 660911  4754481    960
+ 660911  4754511    960
+ 660911  4754541    960
+ 660941  4751301   1012
+ 660941  4751331   1013
+ 660941  4751361   1013
+ 660941  4751391   1014
+ 660941  4751421   1014
+ 660941  4751451   1013
+ 660941  4751481   1011
+ 660941  4751511   1008
+ 660941  4751541   1006
+ 660941  4751571   1004
+ 660941  4751601   1002
+ 660941  4751631    999
+ 660941  4751661    993
+ 660941  4751691    982
+ 660941  4751721    984
+ 660941  4751751    990
+ 660941  4751781    992
+ 660941  4751811    991
+ 660941  4751841    971
+ 660941  4751871    954
+ 660941  4751901    940
+ 660941  4751931    929
+ 660941  4751961    920
+ 660941  4751991    911
+ 660941  4752021    901
+ 660941  4752051    897
+ 660941  4752081    891
+ 660941  4752111    889
+ 660941  4752141    885
+ 660941  4752171    882
+ 660941  4752201    880
+ 660941  4752231    878
+ 660941  4752261    875
+ 660941  4752291    871
+ 660941  4752321    868
+ 660941  4752351    864
+ 660941  4752381    864
+ 660941  4752411    868
+ 660941  4752441    872
+ 660941  4752471    874
+ 660941  4752501    869
+ 660941  4752531    852
+ 660941  4752561    843
+ 660941  4752591    844
+ 660941  4752621    852
+ 660941  4752651    861
+ 660941  4752681    861
+ 660941  4752711    861
+ 660941  4752741    861
+ 660941  4752771    873
+ 660941  4752801    843
+ 660941  4752831    825
+ 660941  4752861    814
+ 660941  4752891    809
+ 660941  4752921    809
+ 660941  4752951    817
+ 660941  4752981    827
+ 660941  4753011    846
+ 660941  4753041    861
+ 660941  4753071    864
+ 660941  4753101    863
+ 660941  4753131    856
+ 660941  4753161    856
+ 660941  4753191    858
+ 660941  4753221    841
+ 660941  4753251    821
+ 660941  4753281    809
+ 660941  4753311    809
+ 660941  4753341    809
+ 660941  4753371    809
+ 660941  4753401    809
+ 660941  4753431    809
+ 660941  4753461    809
+ 660941  4753491    809
+ 660941  4753521    817
+ 660941  4753551    826
+ 660941  4753581    839
+ 660941  4753611    852
+ 660941  4753641    863
+ 660941  4753671    869
+ 660941  4753701    871
+ 660941  4753731    871
+ 660941  4753761    872
+ 660941  4753791    873
+ 660941  4753821    874
+ 660941  4753851    875
+ 660941  4753881    876
+ 660941  4753911    877
+ 660941  4753941    878
+ 660941  4753971    878
+ 660941  4754001    878
+ 660941  4754031    876
+ 660941  4754061    873
+ 660941  4754091    869
+ 660941  4754121    871
+ 660941  4754151    876
+ 660941  4754181    891
+ 660941  4754211    906
+ 660941  4754241    944
+ 660941  4754271    960
+ 660941  4754301    958
+ 660941  4754331    960
+ 660941  4754361    960
+ 660941  4754391    960
+ 660941  4754421    960
+ 660941  4754451    960
+ 660941  4754481    960
+ 660941  4754511    960
+ 660941  4754541    960
+ 660971  4751301   1012
+ 660971  4751331   1013
+ 660971  4751361   1014
+ 660971  4751391   1014
+ 660971  4751421   1014
+ 660971  4751451   1013
+ 660971  4751481   1011
+ 660971  4751511   1009
+ 660971  4751541   1007
+ 660971  4751571   1005
+ 660971  4751601   1003
+ 660971  4751631   1001
+ 660971  4751661    999
+ 660971  4751691    988
+ 660971  4751721    996
+ 660971  4751751    999
+ 660971  4751781    996
+ 660971  4751811    988
+ 660971  4751841    970
+ 660971  4751871    956
+ 660971  4751901    943
+ 660971  4751931    932
+ 660971  4751961    921
+ 660971  4751991    912
+ 660971  4752021    904
+ 660971  4752051    897
+ 660971  4752081    892
+ 660971  4752111    888
+ 660971  4752141    884
+ 660971  4752171    882
+ 660971  4752201    880
+ 660971  4752231    878
+ 660971  4752261    875
+ 660971  4752291    871
+ 660971  4752321    868
+ 660971  4752351    866
+ 660971  4752381    867
+ 660971  4752411    869
+ 660971  4752441    871
+ 660971  4752471    872
+ 660971  4752501    865
+ 660971  4752531    850
+ 660971  4752561    843
+ 660971  4752591    846
+ 660971  4752621    855
+ 660971  4752651    861
+ 660971  4752681    861
+ 660971  4752711    861
+ 660971  4752741    865
+ 660971  4752771    862
+ 660971  4752801    838
+ 660971  4752831    816
+ 660971  4752861    810
+ 660971  4752891    809
+ 660971  4752921    809
+ 660971  4752951    820
+ 660971  4752981    833
+ 660971  4753011    851
+ 660971  4753041    862
+ 660971  4753071    865
+ 660971  4753101    864
+ 660971  4753131    862
+ 660971  4753161    861
+ 660971  4753191    861
+ 660971  4753221    851
+ 660971  4753251    832
+ 660971  4753281    817
+ 660971  4753311    809
+ 660971  4753341    809
+ 660971  4753371    809
+ 660971  4753401    809
+ 660971  4753431    809
+ 660971  4753461    809
+ 660971  4753491    809
+ 660971  4753521    809
+ 660971  4753551    817
+ 660971  4753581    827
+ 660971  4753611    840
+ 660971  4753641    853
+ 660971  4753671    865
+ 660971  4753701    870
+ 660971  4753731    871
+ 660971  4753761    871
+ 660971  4753791    872
+ 660971  4753821    873
+ 660971  4753851    875
+ 660971  4753881    876
+ 660971  4753911    877
+ 660971  4753941    877
+ 660971  4753971    878
+ 660971  4754001    878
+ 660971  4754031    876
+ 660971  4754061    874
+ 660971  4754091    874
+ 660971  4754121    872
+ 660971  4754151    878
+ 660971  4754181    894
+ 660971  4754211    910
+ 660971  4754241    946
+ 660971  4754271    953
+ 660971  4754301    957
+ 660971  4754331    958
+ 660971  4754361    958
+ 660971  4754391    959
+ 660971  4754421    960
+ 660971  4754451    960
+ 660971  4754481    960
+ 660971  4754511    960
+ 660971  4754541    960
+ 661001  4751301   1013
+ 661001  4751331   1014
+ 661001  4751361   1014
+ 661001  4751391   1014
+ 661001  4751421   1014
+ 661001  4751451   1012
+ 661001  4751481   1011
+ 661001  4751511   1009
+ 661001  4751541   1007
+ 661001  4751571   1006
+ 661001  4751601   1005
+ 661001  4751631   1003
+ 661001  4751661   1000
+ 661001  4751691    997
+ 661001  4751721   1000
+ 661001  4751751   1000
+ 661001  4751781    996
+ 661001  4751811    983
+ 661001  4751841    969
+ 661001  4751871    956
+ 661001  4751901    942
+ 661001  4751931    932
+ 661001  4751961    924
+ 661001  4751991    914
+ 661001  4752021    907
+ 661001  4752051    898
+ 661001  4752081    892
+ 661001  4752111    888
+ 661001  4752141    885
+ 661001  4752171    882
+ 661001  4752201    880
+ 661001  4752231    878
+ 661001  4752261    875
+ 661001  4752291    871
+ 661001  4752321    868
+ 661001  4752351    868
+ 661001  4752381    868
+ 661001  4752411    869
+ 661001  4752441    871
+ 661001  4752471    870
+ 661001  4752501    862
+ 661001  4752531    849
+ 661001  4752561    843
+ 661001  4752591    849
+ 661001  4752621    860
+ 661001  4752651    863
+ 661001  4752681    861
+ 661001  4752711    861
+ 661001  4752741    871
+ 661001  4752771    859
+ 661001  4752801    831
+ 661001  4752831    815
+ 661001  4752861    809
+ 661001  4752891    809
+ 661001  4752921    809
+ 661001  4752951    823
+ 661001  4752981    839
+ 661001  4753011    858
+ 661001  4753041    866
+ 661001  4753071    866
+ 661001  4753101    865
+ 661001  4753131    864
+ 661001  4753161    863
+ 661001  4753191    863
+ 661001  4753221    857
+ 661001  4753251    840
+ 661001  4753281    820
+ 661001  4753311    814
+ 661001  4753341    809
+ 661001  4753371    809
+ 661001  4753401    809
+ 661001  4753431    809
+ 661001  4753461    809
+ 661001  4753491    809
+ 661001  4753521    809
+ 661001  4753551    809
+ 661001  4753581    817
+ 661001  4753611    827
+ 661001  4753641    840
+ 661001  4753671    853
+ 661001  4753701    868
+ 661001  4753731    870
+ 661001  4753761    871
+ 661001  4753791    872
+ 661001  4753821    873
+ 661001  4753851    874
+ 661001  4753881    875
+ 661001  4753911    876
+ 661001  4753941    877
+ 661001  4753971    877
+ 661001  4754001    877
+ 661001  4754031    877
+ 661001  4754061    875
+ 661001  4754091    875
+ 661001  4754121    875
+ 661001  4754151    880
+ 661001  4754181    897
+ 661001  4754211    915
+ 661001  4754241    949
+ 661001  4754271    960
+ 661001  4754301    960
+ 661001  4754331    959
+ 661001  4754361    960
+ 661001  4754391    960
+ 661001  4754421    961
+ 661001  4754451    960
+ 661001  4754481    960
+ 661001  4754511    960
+ 661001  4754541    960
+ 661031  4751301   1014
+ 661031  4751331   1014
+ 661031  4751361   1015
+ 661031  4751391   1014
+ 661031  4751421   1013
+ 661031  4751451   1012
+ 661031  4751481   1011
+ 661031  4751511   1010
+ 661031  4751541   1008
+ 661031  4751571   1007
+ 661031  4751601   1006
+ 661031  4751631   1005
+ 661031  4751661   1002
+ 661031  4751691   1000
+ 661031  4751721   1001
+ 661031  4751751   1000
+ 661031  4751781    997
+ 661031  4751811    982
+ 661031  4751841    966
+ 661031  4751871    955
+ 661031  4751901    944
+ 661031  4751931    932
+ 661031  4751961    924
+ 661031  4751991    912
+ 661031  4752021    903
+ 661031  4752051    896
+ 661031  4752081    891
+ 661031  4752111    888
+ 661031  4752141    885
+ 661031  4752171    883
+ 661031  4752201    881
+ 661031  4752231    878
+ 661031  4752261    875
+ 661031  4752291    872
+ 661031  4752321    869
+ 661031  4752351    869
+ 661031  4752381    868
+ 661031  4752411    869
+ 661031  4752441    870
+ 661031  4752471    870
+ 661031  4752501    858
+ 661031  4752531    847
+ 661031  4752561    844
+ 661031  4752591    852
+ 661031  4752621    861
+ 661031  4752651    865
+ 661031  4752681    861
+ 661031  4752711    864
+ 661031  4752741    868
+ 661031  4752771    853
+ 661031  4752801    831
+ 661031  4752831    809
+ 661031  4752861    809
+ 661031  4752891    809
+ 661031  4752921    809
+ 661031  4752951    826
+ 661031  4752981    843
+ 661031  4753011    860
+ 661031  4753041    869
+ 661031  4753071    868
+ 661031  4753101    867
+ 661031  4753131    865
+ 661031  4753161    864
+ 661031  4753191    862
+ 661031  4753221    855
+ 661031  4753251    838
+ 661031  4753281    824
+ 661031  4753311    819
+ 661031  4753341    822
+ 661031  4753371    821
+ 661031  4753401    809
+ 661031  4753431    809
+ 661031  4753461    809
+ 661031  4753491    809
+ 661031  4753521    809
+ 661031  4753551    809
+ 661031  4753581    809
+ 661031  4753611    817
+ 661031  4753641    830
+ 661031  4753671    842
+ 661031  4753701    858
+ 661031  4753731    869
+ 661031  4753761    870
+ 661031  4753791    871
+ 661031  4753821    872
+ 661031  4753851    874
+ 661031  4753881    875
+ 661031  4753911    875
+ 661031  4753941    876
+ 661031  4753971    876
+ 661031  4754001    878
+ 661031  4754031    877
+ 661031  4754061    876
+ 661031  4754091    875
+ 661031  4754121    875
+ 661031  4754151    881
+ 661031  4754181    899
+ 661031  4754211    921
+ 661031  4754241    955
+ 661031  4754271    960
+ 661031  4754301    961
+ 661031  4754331    961
+ 661031  4754361    960
+ 661031  4754391    960
+ 661031  4754421    960
+ 661031  4754451    961
+ 661031  4754481    961
+ 661031  4754511    960
+ 661031  4754541    960
+ 661061  4751301   1014
+ 661061  4751331   1014
+ 661061  4751361   1015
+ 661061  4751391   1014
+ 661061  4751421   1014
+ 661061  4751451   1012
+ 661061  4751481   1011
+ 661061  4751511   1010
+ 661061  4751541   1009
+ 661061  4751571   1008
+ 661061  4751601   1007
+ 661061  4751631   1006
+ 661061  4751661   1005
+ 661061  4751691   1004
+ 661061  4751721   1003
+ 661061  4751751   1001
+ 661061  4751781    999
+ 661061  4751811    986
+ 661061  4751841    971
+ 661061  4751871    956
+ 661061  4751901    944
+ 661061  4751931    932
+ 661061  4751961    922
+ 661061  4751991    911
+ 661061  4752021    902
+ 661061  4752051    895
+ 661061  4752081    891
+ 661061  4752111    888
+ 661061  4752141    886
+ 661061  4752171    884
+ 661061  4752201    881
+ 661061  4752231    878
+ 661061  4752261    876
+ 661061  4752291    873
+ 661061  4752321    871
+ 661061  4752351    869
+ 661061  4752381    868
+ 661061  4752411    869
+ 661061  4752441    869
+ 661061  4752471    868
+ 661061  4752501    854
+ 661061  4752531    844
+ 661061  4752561    845
+ 661061  4752591    855
+ 661061  4752621    864
+ 661061  4752651    867
+ 661061  4752681    862
+ 661061  4752711    861
+ 661061  4752741    855
+ 661061  4752771    844
+ 661061  4752801    829
+ 661061  4752831    815
+ 661061  4752861    809
+ 661061  4752891    809
+ 661061  4752921    809
+ 661061  4752951    829
+ 661061  4752981    844
+ 661061  4753011    858
+ 661061  4753041    870
+ 661061  4753071    869
+ 661061  4753101    868
+ 661061  4753131    867
+ 661061  4753161    865
+ 661061  4753191    862
+ 661061  4753221    857
+ 661061  4753251    845
+ 661061  4753281    831
+ 661061  4753311    830
+ 661061  4753341    831
+ 661061  4753371    832
+ 661061  4753401    822
+ 661061  4753431    809
+ 661061  4753461    809
+ 661061  4753491    809
+ 661061  4753521    809
+ 661061  4753551    809
+ 661061  4753581    809
+ 661061  4753611    811
+ 661061  4753641    821
+ 661061  4753671    835
+ 661061  4753701    850
+ 661061  4753731    868
+ 661061  4753761    870
+ 661061  4753791    870
+ 661061  4753821    872
+ 661061  4753851    873
+ 661061  4753881    874
+ 661061  4753911    875
+ 661061  4753941    876
+ 661061  4753971    877
+ 661061  4754001    878
+ 661061  4754031    878
+ 661061  4754061    877
+ 661061  4754091    876
+ 661061  4754121    875
+ 661061  4754151    881
+ 661061  4754181    900
+ 661061  4754211    927
+ 661061  4754241    957
+ 661061  4754271    960
+ 661061  4754301    960
+ 661061  4754331    961
+ 661061  4754361    961
+ 661061  4754391    960
+ 661061  4754421    962
+ 661061  4754451    960
+ 661061  4754481    961
+ 661061  4754511    961
+ 661061  4754541    960
+ 661091  4751301   1015
+ 661091  4751331   1015
+ 661091  4751361   1015
+ 661091  4751391   1014
+ 661091  4751421   1014
+ 661091  4751451   1013
+ 661091  4751481   1012
+ 661091  4751511   1011
+ 661091  4751541   1010
+ 661091  4751571   1009
+ 661091  4751601   1008
+ 661091  4751631   1007
+ 661091  4751661   1006
+ 661091  4751691   1005
+ 661091  4751721   1004
+ 661091  4751751   1003
+ 661091  4751781   1000
+ 661091  4751811    989
+ 661091  4751841    975
+ 661091  4751871    961
+ 661091  4751901    943
+ 661091  4751931    931
+ 661091  4751961    922
+ 661091  4751991    911
+ 661091  4752021    903
+ 661091  4752051    897
+ 661091  4752081    891
+ 661091  4752111    889
+ 661091  4752141    886
+ 661091  4752171    884
+ 661091  4752201    881
+ 661091  4752231    879
+ 661091  4752261    876
+ 661091  4752291    874
+ 661091  4752321    871
+ 661091  4752351    870
+ 661091  4752381    869
+ 661091  4752411    868
+ 661091  4752441    869
+ 661091  4752471    863
+ 661091  4752501    851
+ 661091  4752531    844
+ 661091  4752561    846
+ 661091  4752591    856
+ 661091  4752621    863
+ 661091  4752651    866
+ 661091  4752681    862
+ 661091  4752711    852
+ 661091  4752741    842
+ 661091  4752771    830
+ 661091  4752801    821
+ 661091  4752831    813
+ 661091  4752861    809
+ 661091  4752891    809
+ 661091  4752921    809
+ 661091  4752951    829
+ 661091  4752981    844
+ 661091  4753011    857
+ 661091  4753041    870
+ 661091  4753071    870
+ 661091  4753101    869
+ 661091  4753131    868
+ 661091  4753161    867
+ 661091  4753191    867
+ 661091  4753221    862
+ 661091  4753251    853
+ 661091  4753281    838
+ 661091  4753311    837
+ 661091  4753341    841
+ 661091  4753371    842
+ 661091  4753401    834
+ 661091  4753431    825
+ 661091  4753461    815
+ 661091  4753491    809
+ 661091  4753521    809
+ 661091  4753551    809
+ 661091  4753581    809
+ 661091  4753611    809
+ 661091  4753641    816
+ 661091  4753671    825
+ 661091  4753701    843
+ 661091  4753731    856
+ 661091  4753761    869
+ 661091  4753791    870
+ 661091  4753821    871
+ 661091  4753851    872
+ 661091  4753881    873
+ 661091  4753911    875
+ 661091  4753941    876
+ 661091  4753971    877
+ 661091  4754001    878
+ 661091  4754031    878
+ 661091  4754061    878
+ 661091  4754091    876
+ 661091  4754121    876
+ 661091  4754151    883
+ 661091  4754181    900
+ 661091  4754211    931
+ 661091  4754241    960
+ 661091  4754271    961
+ 661091  4754301    961
+ 661091  4754331    961
+ 661091  4754361    960
+ 661091  4754391    962
+ 661091  4754421    962
+ 661091  4754451    962
+ 661091  4754481    961
+ 661091  4754511    960
+ 661091  4754541    960
+ 661121  4751301   1015
+ 661121  4751331   1015
+ 661121  4751361   1015
+ 661121  4751391   1014
+ 661121  4751421   1014
+ 661121  4751451   1013
+ 661121  4751481   1012
+ 661121  4751511   1011
+ 661121  4751541   1010
+ 661121  4751571   1009
+ 661121  4751601   1008
+ 661121  4751631   1007
+ 661121  4751661   1006
+ 661121  4751691   1006
+ 661121  4751721   1005
+ 661121  4751751   1005
+ 661121  4751781   1005
+ 661121  4751811    996
+ 661121  4751841    978
+ 661121  4751871    960
+ 661121  4751901    946
+ 661121  4751931    930
+ 661121  4751961    915
+ 661121  4751991    907
+ 661121  4752021    899
+ 661121  4752051    894
+ 661121  4752081    891
+ 661121  4752111    889
+ 661121  4752141    887
+ 661121  4752171    885
+ 661121  4752201    882
+ 661121  4752231    879
+ 661121  4752261    876
+ 661121  4752291    874
+ 661121  4752321    872
+ 661121  4752351    870
+ 661121  4752381    869
+ 661121  4752411    868
+ 661121  4752441    869
+ 661121  4752471    860
+ 661121  4752501    848
+ 661121  4752531    844
+ 661121  4752561    848
+ 661121  4752591    857
+ 661121  4752621    862
+ 661121  4752651    866
+ 661121  4752681    859
+ 661121  4752711    846
+ 661121  4752741    834
+ 661121  4752771    827
+ 661121  4752801    821
+ 661121  4752831    816
+ 661121  4752861    809
+ 661121  4752891    809
+ 661121  4752921    809
+ 661121  4752951    827
+ 661121  4752981    843
+ 661121  4753011    857
+ 661121  4753041    870
+ 661121  4753071    870
+ 661121  4753101    869
+ 661121  4753131    869
+ 661121  4753161    869
+ 661121  4753191    869
+ 661121  4753221    864
+ 661121  4753251    857
+ 661121  4753281    843
+ 661121  4753311    846
+ 661121  4753341    853
+ 661121  4753371    853
+ 661121  4753401    846
+ 661121  4753431    834
+ 661121  4753461    826
+ 661121  4753491    809
+ 661121  4753521    809
+ 661121  4753551    809
+ 661121  4753581    809
+ 661121  4753611    809
+ 661121  4753641    809
+ 661121  4753671    809
+ 661121  4753701    832
+ 661121  4753731    847
+ 661121  4753761    860
+ 661121  4753791    869
+ 661121  4753821    871
+ 661121  4753851    872
+ 661121  4753881    873
+ 661121  4753911    874
+ 661121  4753941    876
+ 661121  4753971    877
+ 661121  4754001    878
+ 661121  4754031    879
+ 661121  4754061    880
+ 661121  4754091    877
+ 661121  4754121    877
+ 661121  4754151    890
+ 661121  4754181    904
+ 661121  4754211    926
+ 661121  4754241    960
+ 661121  4754271    961
+ 661121  4754301    961
+ 661121  4754331    960
+ 661121  4754361    962
+ 661121  4754391    962
+ 661121  4754421    962
+ 661121  4754451    961
+ 661121  4754481    960
+ 661121  4754511    961
+ 661121  4754541    961
+ 661151  4751301   1016
+ 661151  4751331   1016
+ 661151  4751361   1015
+ 661151  4751391   1015
+ 661151  4751421   1014
+ 661151  4751451   1013
+ 661151  4751481   1012
+ 661151  4751511   1011
+ 661151  4751541   1011
+ 661151  4751571   1010
+ 661151  4751601   1009
+ 661151  4751631   1008
+ 661151  4751661   1008
+ 661151  4751691   1007
+ 661151  4751721   1007
+ 661151  4751751   1007
+ 661151  4751781   1006
+ 661151  4751811   1000
+ 661151  4751841    982
+ 661151  4751871    961
+ 661151  4751901    945
+ 661151  4751931    928
+ 661151  4751961    914
+ 661151  4751991    906
+ 661151  4752021    900
+ 661151  4752051    893
+ 661151  4752081    891
+ 661151  4752111    889
+ 661151  4752141    887
+ 661151  4752171    885
+ 661151  4752201    882
+ 661151  4752231    878
+ 661151  4752261    876
+ 661151  4752291    874
+ 661151  4752321    872
+ 661151  4752351    870
+ 661151  4752381    869
+ 661151  4752411    866
+ 661151  4752441    869
+ 661151  4752471    858
+ 661151  4752501    848
+ 661151  4752531    848
+ 661151  4752561    854
+ 661151  4752591    860
+ 661151  4752621    864
+ 661151  4752651    866
+ 661151  4752681    857
+ 661151  4752711    843
+ 661151  4752741    833
+ 661151  4752771    836
+ 661151  4752801    838
+ 661151  4752831    819
+ 661151  4752861    811
+ 661151  4752891    809
+ 661151  4752921    809
+ 661151  4752951    824
+ 661151  4752981    844
+ 661151  4753011    860
+ 661151  4753041    873
+ 661151  4753071    871
+ 661151  4753101    871
+ 661151  4753131    870
+ 661151  4753161    870
+ 661151  4753191    868
+ 661151  4753221    864
+ 661151  4753251    861
+ 661151  4753281    851
+ 661151  4753311    851
+ 661151  4753341    862
+ 661151  4753371    861
+ 661151  4753401    854
+ 661151  4753431    843
+ 661151  4753461    838
+ 661151  4753491    826
+ 661151  4753521    809
+ 661151  4753551    809
+ 661151  4753581    809
+ 661151  4753611    809
+ 661151  4753641    809
+ 661151  4753671    809
+ 661151  4753701    826
+ 661151  4753731    838
+ 661151  4753761    852
+ 661151  4753791    869
+ 661151  4753821    870
+ 661151  4753851    871
+ 661151  4753881    873
+ 661151  4753911    874
+ 661151  4753941    875
+ 661151  4753971    876
+ 661151  4754001    877
+ 661151  4754031    879
+ 661151  4754061    880
+ 661151  4754091    881
+ 661151  4754121    882
+ 661151  4754151    890
+ 661151  4754181    905
+ 661151  4754211    935
+ 661151  4754241    960
+ 661151  4754271    961
+ 661151  4754301    960
+ 661151  4754331    961
+ 661151  4754361    962
+ 661151  4754391    961
+ 661151  4754421    961
+ 661151  4754451    962
+ 661151  4754481    962
+ 661151  4754511    962
+ 661151  4754541    962
+ 661181  4751301   1016
+ 661181  4751331   1016
+ 661181  4751361   1016
+ 661181  4751391   1015
+ 661181  4751421   1014
+ 661181  4751451   1013
+ 661181  4751481   1012
+ 661181  4751511   1012
+ 661181  4751541   1011
+ 661181  4751571   1011
+ 661181  4751601   1010
+ 661181  4751631   1009
+ 661181  4751661   1009
+ 661181  4751691   1008
+ 661181  4751721   1008
+ 661181  4751751   1008
+ 661181  4751781   1007
+ 661181  4751811   1001
+ 661181  4751841    979
+ 661181  4751871    957
+ 661181  4751901    942
+ 661181  4751931    929
+ 661181  4751961    914
+ 661181  4751991    906
+ 661181  4752021    900
+ 661181  4752051    895
+ 661181  4752081    892
+ 661181  4752111    889
+ 661181  4752141    886
+ 661181  4752171    884
+ 661181  4752201    881
+ 661181  4752231    878
+ 661181  4752261    875
+ 661181  4752291    873
+ 661181  4752321    871
+ 661181  4752351    870
+ 661181  4752381    869
+ 661181  4752411    867
+ 661181  4752441    864
+ 661181  4752471    860
+ 661181  4752501    854
+ 661181  4752531    852
+ 661181  4752561    859
+ 661181  4752591    862
+ 661181  4752621    865
+ 661181  4752651    865
+ 661181  4752681    856
+ 661181  4752711    843
+ 661181  4752741    841
+ 661181  4752771    845
+ 661181  4752801    845
+ 661181  4752831    828
+ 661181  4752861    815
+ 661181  4752891    809
+ 661181  4752921    809
+ 661181  4752951    822
+ 661181  4752981    845
+ 661181  4753011    864
+ 661181  4753041    872
+ 661181  4753071    873
+ 661181  4753101    872
+ 661181  4753131    871
+ 661181  4753161    869
+ 661181  4753191    867
+ 661181  4753221    864
+ 661181  4753251    862
+ 661181  4753281    859
+ 661181  4753311    857
+ 661181  4753341    865
+ 661181  4753371    866
+ 661181  4753401    859
+ 661181  4753431    853
+ 661181  4753461    849
+ 661181  4753491    834
+ 661181  4753521    809
+ 661181  4753551    809
+ 661181  4753581    809
+ 661181  4753611    809
+ 661181  4753641    809
+ 661181  4753671    809
+ 661181  4753701    821
+ 661181  4753731    834
+ 661181  4753761    847
+ 661181  4753791    868
+ 661181  4753821    870
+ 661181  4753851    871
+ 661181  4753881    872
+ 661181  4753911    874
+ 661181  4753941    875
+ 661181  4753971    875
+ 661181  4754001    876
+ 661181  4754031    877
+ 661181  4754061    879
+ 661181  4754091    882
+ 661181  4754121    884
+ 661181  4754151    896
+ 661181  4754181    910
+ 661181  4754211    949
+ 661181  4754241    960
+ 661181  4754271    960
+ 661181  4754301    961
+ 661181  4754331    960
+ 661181  4754361    961
+ 661181  4754391    962
+ 661181  4754421    962
+ 661181  4754451    962
+ 661181  4754481    962
+ 661181  4754511    962
+ 661181  4754541    962
+ 661211  4751301   1017
+ 661211  4751331   1016
+ 661211  4751361   1016
+ 661211  4751391   1015
+ 661211  4751421   1014
+ 661211  4751451   1013
+ 661211  4751481   1013
+ 661211  4751511   1012
+ 661211  4751541   1012
+ 661211  4751571   1011
+ 661211  4751601   1011
+ 661211  4751631   1010
+ 661211  4751661   1009
+ 661211  4751691   1009
+ 661211  4751721   1008
+ 661211  4751751   1008
+ 661211  4751781   1007
+ 661211  4751811   1002
+ 661211  4751841    983
+ 661211  4751871    961
+ 661211  4751901    945
+ 661211  4751931    933
+ 661211  4751961    918
+ 661211  4751991    909
+ 661211  4752021    901
+ 661211  4752051    895
+ 661211  4752081    891
+ 661211  4752111    889
+ 661211  4752141    886
+ 661211  4752171    883
+ 661211  4752201    881
+ 661211  4752231    878
+ 661211  4752261    876
+ 661211  4752291    873
+ 661211  4752321    871
+ 661211  4752351    869
+ 661211  4752381    868
+ 661211  4752411    866
+ 661211  4752441    864
+ 661211  4752471    862
+ 661211  4752501    860
+ 661211  4752531    859
+ 661211  4752561    862
+ 661211  4752591    863
+ 661211  4752621    864
+ 661211  4752651    864
+ 661211  4752681    856
+ 661211  4752711    846
+ 661211  4752741    850
+ 661211  4752771    856
+ 661211  4752801    855
+ 661211  4752831    837
+ 661211  4752861    818
+ 661211  4752891    809
+ 661211  4752921    809
+ 661211  4752951    824
+ 661211  4752981    847
+ 661211  4753011    867
+ 661211  4753041    873
+ 661211  4753071    872
+ 661211  4753101    871
+ 661211  4753131    870
+ 661211  4753161    869
+ 661211  4753191    867
+ 661211  4753221    865
+ 661211  4753251    863
+ 661211  4753281    862
+ 661211  4753311    861
+ 661211  4753341    867
+ 661211  4753371    869
+ 661211  4753401    866
+ 661211  4753431    862
+ 661211  4753461    857
+ 661211  4753491    854
+ 661211  4753521    822
+ 661211  4753551    809
+ 661211  4753581    809
+ 661211  4753611    809
+ 661211  4753641    809
+ 661211  4753671    809
+ 661211  4753701    809
+ 661211  4753731    829
+ 661211  4753761    843
+ 661211  4753791    861
+ 661211  4753821    869
+ 661211  4753851    871
+ 661211  4753881    872
+ 661211  4753911    873
+ 661211  4753941    874
+ 661211  4753971    875
+ 661211  4754001    875
+ 661211  4754031    877
+ 661211  4754061    879
+ 661211  4754091    882
+ 661211  4754121    890
+ 661211  4754151    900
+ 661211  4754181    916
+ 661211  4754211    954
+ 661211  4754241    960
+ 661211  4754271    959
+ 661211  4754301    960
+ 661211  4754331    961
+ 661211  4754361    962
+ 661211  4754391    962
+ 661211  4754421    962
+ 661211  4754451    962
+ 661211  4754481    962
+ 661211  4754511    963
+ 661211  4754541    962
+ 661241  4751301   1017
+ 661241  4751331   1017
+ 661241  4751361   1016
+ 661241  4751391   1015
+ 661241  4751421   1014
+ 661241  4751451   1014
+ 661241  4751481   1014
+ 661241  4751511   1013
+ 661241  4751541   1012
+ 661241  4751571   1012
+ 661241  4751601   1011
+ 661241  4751631   1010
+ 661241  4751661   1010
+ 661241  4751691   1009
+ 661241  4751721   1009
+ 661241  4751751   1008
+ 661241  4751781   1007
+ 661241  4751811   1001
+ 661241  4751841    983
+ 661241  4751871    963
+ 661241  4751901    944
+ 661241  4751931    933
+ 661241  4751961    915
+ 661241  4751991    907
+ 661241  4752021    902
+ 661241  4752051    894
+ 661241  4752081    890
+ 661241  4752111    888
+ 661241  4752141    886
+ 661241  4752171    884
+ 661241  4752201    881
+ 661241  4752231    878
+ 661241  4752261    876
+ 661241  4752291    872
+ 661241  4752321    870
+ 661241  4752351    868
+ 661241  4752381    867
+ 661241  4752411    866
+ 661241  4752441    865
+ 661241  4752471    863
+ 661241  4752501    864
+ 661241  4752531    863
+ 661241  4752561    864
+ 661241  4752591    864
+ 661241  4752621    864
+ 661241  4752651    863
+ 661241  4752681    859
+ 661241  4752711    851
+ 661241  4752741    861
+ 661241  4752771    862
+ 661241  4752801    849
+ 661241  4752831    831
+ 661241  4752861    816
+ 661241  4752891    809
+ 661241  4752921    809
+ 661241  4752951    826
+ 661241  4752981    850
+ 661241  4753011    868
+ 661241  4753041    873
+ 661241  4753071    872
+ 661241  4753101    870
+ 661241  4753131    869
+ 661241  4753161    869
+ 661241  4753191    866
+ 661241  4753221    865
+ 661241  4753251    864
+ 661241  4753281    862
+ 661241  4753311    862
+ 661241  4753341    867
+ 661241  4753371    869
+ 661241  4753401    869
+ 661241  4753431    867
+ 661241  4753461    865
+ 661241  4753491    860
+ 661241  4753521    848
+ 661241  4753551    809
+ 661241  4753581    809
+ 661241  4753611    809
+ 661241  4753641    809
+ 661241  4753671    809
+ 661241  4753701    809
+ 661241  4753731    827
+ 661241  4753761    842
+ 661241  4753791    859
+ 661241  4753821    869
+ 661241  4753851    870
+ 661241  4753881    871
+ 661241  4753911    872
+ 661241  4753941    873
+ 661241  4753971    874
+ 661241  4754001    875
+ 661241  4754031    876
+ 661241  4754061    879
+ 661241  4754091    883
+ 661241  4754121    893
+ 661241  4754151    903
+ 661241  4754181    921
+ 661241  4754211    960
+ 661241  4754241    959
+ 661241  4754271    961
+ 661241  4754301    961
+ 661241  4754331    962
+ 661241  4754361    962
+ 661241  4754391    962
+ 661241  4754421    963
+ 661241  4754451    963
+ 661241  4754481    963
+ 661241  4754511    963
+ 661241  4754541    963
+ 661271  4751301   1018
+ 661271  4751331   1017
+ 661271  4751361   1016
+ 661271  4751391   1016
+ 661271  4751421   1015
+ 661271  4751451   1015
+ 661271  4751481   1014
+ 661271  4751511   1013
+ 661271  4751541   1013
+ 661271  4751571   1012
+ 661271  4751601   1011
+ 661271  4751631   1011
+ 661271  4751661   1010
+ 661271  4751691   1010
+ 661271  4751721   1009
+ 661271  4751751   1008
+ 661271  4751781   1007
+ 661271  4751811   1003
+ 661271  4751841    986
+ 661271  4751871    965
+ 661271  4751901    951
+ 661271  4751931    938
+ 661271  4751961    924
+ 661271  4751991    909
+ 661271  4752021    903
+ 661271  4752051    896
+ 661271  4752081    890
+ 661271  4752111    888
+ 661271  4752141    886
+ 661271  4752171    883
+ 661271  4752201    881
+ 661271  4752231    878
+ 661271  4752261    875
+ 661271  4752291    871
+ 661271  4752321    869
+ 661271  4752351    868
+ 661271  4752381    867
+ 661271  4752411    866
+ 661271  4752441    865
+ 661271  4752471    864
+ 661271  4752501    864
+ 661271  4752531    864
+ 661271  4752561    865
+ 661271  4752591    864
+ 661271  4752621    865
+ 661271  4752651    862
+ 661271  4752681    861
+ 661271  4752711    861
+ 661271  4752741    857
+ 661271  4752771    846
+ 661271  4752801    833
+ 661271  4752831    818
+ 661271  4752861    809
+ 661271  4752891    809
+ 661271  4752921    809
+ 661271  4752951    838
+ 661271  4752981    856
+ 661271  4753011    869
+ 661271  4753041    871
+ 661271  4753071    872
+ 661271  4753101    869
+ 661271  4753131    869
+ 661271  4753161    867
+ 661271  4753191    867
+ 661271  4753221    866
+ 661271  4753251    864
+ 661271  4753281    864
+ 661271  4753311    865
+ 661271  4753341    868
+ 661271  4753371    869
+ 661271  4753401    870
+ 661271  4753431    869
+ 661271  4753461    869
+ 661271  4753491    867
+ 661271  4753521    858
+ 661271  4753551    809
+ 661271  4753581    809
+ 661271  4753611    809
+ 661271  4753641    809
+ 661271  4753671    809
+ 661271  4753701    809
+ 661271  4753731    825
+ 661271  4753761    842
+ 661271  4753791    860
+ 661271  4753821    869
+ 661271  4753851    870
+ 661271  4753881    871
+ 661271  4753911    872
+ 661271  4753941    873
+ 661271  4753971    874
+ 661271  4754001    875
+ 661271  4754031    876
+ 661271  4754061    880
+ 661271  4754091    884
+ 661271  4754121    896
+ 661271  4754151    907
+ 661271  4754181    933
+ 661271  4754211    958
+ 661271  4754241    959
+ 661271  4754271    961
+ 661271  4754301    962
+ 661271  4754331    962
+ 661271  4754361    962
+ 661271  4754391    963
+ 661271  4754421    963
+ 661271  4754451    963
+ 661271  4754481    963
+ 661271  4754511    963
+ 661271  4754541    963
+ 661301  4751301   1018
+ 661301  4751331   1017
+ 661301  4751361   1017
+ 661301  4751391   1016
+ 661301  4751421   1016
+ 661301  4751451   1015
+ 661301  4751481   1014
+ 661301  4751511   1014
+ 661301  4751541   1013
+ 661301  4751571   1012
+ 661301  4751601   1012
+ 661301  4751631   1011
+ 661301  4751661   1011
+ 661301  4751691   1010
+ 661301  4751721   1009
+ 661301  4751751   1008
+ 661301  4751781   1007
+ 661301  4751811   1003
+ 661301  4751841    986
+ 661301  4751871    968
+ 661301  4751901    954
+ 661301  4751931    941
+ 661301  4751961    925
+ 661301  4751991    914
+ 661301  4752021    905
+ 661301  4752051    898
+ 661301  4752081    892
+ 661301  4752111    889
+ 661301  4752141    886
+ 661301  4752171    883
+ 661301  4752201    880
+ 661301  4752231    878
+ 661301  4752261    874
+ 661301  4752291    870
+ 661301  4752321    868
+ 661301  4752351    867
+ 661301  4752381    866
+ 661301  4752411    865
+ 661301  4752441    864
+ 661301  4752471    864
+ 661301  4752501    864
+ 661301  4752531    863
+ 661301  4752561    864
+ 661301  4752591    863
+ 661301  4752621    862
+ 661301  4752651    862
+ 661301  4752681    862
+ 661301  4752711    858
+ 661301  4752741    846
+ 661301  4752771    833
+ 661301  4752801    809
+ 661301  4752831    809
+ 661301  4752861    809
+ 661301  4752891    815
+ 661301  4752921    829
+ 661301  4752951    849
+ 661301  4752981    863
+ 661301  4753011    869
+ 661301  4753041    871
+ 661301  4753071    870
+ 661301  4753101    869
+ 661301  4753131    869
+ 661301  4753161    868
+ 661301  4753191    868
+ 661301  4753221    867
+ 661301  4753251    865
+ 661301  4753281    865
+ 661301  4753311    866
+ 661301  4753341    867
+ 661301  4753371    869
+ 661301  4753401    869
+ 661301  4753431    870
+ 661301  4753461    871
+ 661301  4753491    870
+ 661301  4753521    860
+ 661301  4753551    821
+ 661301  4753581    809
+ 661301  4753611    809
+ 661301  4753641    809
+ 661301  4753671    809
+ 661301  4753701    809
+ 661301  4753731    822
+ 661301  4753761    839
+ 661301  4753791    854
+ 661301  4753821    868
+ 661301  4753851    870
+ 661301  4753881    871
+ 661301  4753911    872
+ 661301  4753941    873
+ 661301  4753971    874
+ 661301  4754001    875
+ 661301  4754031    877
+ 661301  4754061    880
+ 661301  4754091    887
+ 661301  4754121    900
+ 661301  4754151    911
+ 661301  4754181    949
+ 661301  4754211    961
+ 661301  4754241    959
+ 661301  4754271    961
+ 661301  4754301    962
+ 661301  4754331    963
+ 661301  4754361    963
+ 661301  4754391    963
+ 661301  4754421    964
+ 661301  4754451    963
+ 661301  4754481    963
+ 661301  4754511    964
+ 661301  4754541    964
+ 661331  4751301   1018
+ 661331  4751331   1018
+ 661331  4751361   1017
+ 661331  4751391   1017
+ 661331  4751421   1016
+ 661331  4751451   1015
+ 661331  4751481   1015
+ 661331  4751511   1014
+ 661331  4751541   1013
+ 661331  4751571   1012
+ 661331  4751601   1012
+ 661331  4751631   1012
+ 661331  4751661   1011
+ 661331  4751691   1010
+ 661331  4751721   1009
+ 661331  4751751   1008
+ 661331  4751781   1007
+ 661331  4751811    999
+ 661331  4751841    983
+ 661331  4751871    967
+ 661331  4751901    953
+ 661331  4751931    944
+ 661331  4751961    924
+ 661331  4751991    912
+ 661331  4752021    904
+ 661331  4752051    897
+ 661331  4752081    891
+ 661331  4752111    888
+ 661331  4752141    885
+ 661331  4752171    882
+ 661331  4752201    878
+ 661331  4752231    876
+ 661331  4752261    873
+ 661331  4752291    870
+ 661331  4752321    868
+ 661331  4752351    867
+ 661331  4752381    865
+ 661331  4752411    864
+ 661331  4752441    863
+ 661331  4752471    862
+ 661331  4752501    862
+ 661331  4752531    859
+ 661331  4752561    852
+ 661331  4752591    848
+ 661331  4752621    846
+ 661331  4752651    841
+ 661331  4752681    844
+ 661331  4752711    842
+ 661331  4752741    833
+ 661331  4752771    818
+ 661331  4752801    809
+ 661331  4752831    809
+ 661331  4752861    817
+ 661331  4752891    831
+ 661331  4752921    848
+ 661331  4752951    862
+ 661331  4752981    868
+ 661331  4753011    869
+ 661331  4753041    870
+ 661331  4753071    870
+ 661331  4753101    870
+ 661331  4753131    869
+ 661331  4753161    869
+ 661331  4753191    869
+ 661331  4753221    868
+ 661331  4753251    865
+ 661331  4753281    866
+ 661331  4753311    866
+ 661331  4753341    867
+ 661331  4753371    868
+ 661331  4753401    869
+ 661331  4753431    869
+ 661331  4753461    870
+ 661331  4753491    870
+ 661331  4753521    860
+ 661331  4753551    830
+ 661331  4753581    809
+ 661331  4753611    809
+ 661331  4753641    809
+ 661331  4753671    809
+ 661331  4753701    809
+ 661331  4753731    820
+ 661331  4753761    835
+ 661331  4753791    849
+ 661331  4753821    865
+ 661331  4753851    869
+ 661331  4753881    871
+ 661331  4753911    872
+ 661331  4753941    873
+ 661331  4753971    874
+ 661331  4754001    875
+ 661331  4754031    877
+ 661331  4754061    881
+ 661331  4754091    891
+ 661331  4754121    907
+ 661331  4754151    935
+ 661331  4754181    960
+ 661331  4754211    961
+ 661331  4754241    961
+ 661331  4754271    961
+ 661331  4754301    963
+ 661331  4754331    963
+ 661331  4754361    963
+ 661331  4754391    964
+ 661331  4754421    964
+ 661331  4754451    964
+ 661331  4754481    964
+ 661331  4754511    964
+ 661331  4754541    964
+ 661361  4751301   1019
+ 661361  4751331   1018
+ 661361  4751361   1018
+ 661361  4751391   1017
+ 661361  4751421   1016
+ 661361  4751451   1016
+ 661361  4751481   1015
+ 661361  4751511   1014
+ 661361  4751541   1013
+ 661361  4751571   1013
+ 661361  4751601   1013
+ 661361  4751631   1012
+ 661361  4751661   1012
+ 661361  4751691   1011
+ 661361  4751721   1010
+ 661361  4751751   1008
+ 661361  4751781   1007
+ 661361  4751811    995
+ 661361  4751841    981
+ 661361  4751871    965
+ 661361  4751901    953
+ 661361  4751931    942
+ 661361  4751961    924
+ 661361  4751991    911
+ 661361  4752021    904
+ 661361  4752051    897
+ 661361  4752081    891
+ 661361  4752111    888
+ 661361  4752141    885
+ 661361  4752171    881
+ 661361  4752201    878
+ 661361  4752231    875
+ 661361  4752261    872
+ 661361  4752291    869
+ 661361  4752321    867
+ 661361  4752351    864
+ 661361  4752381    864
+ 661361  4752411    863
+ 661361  4752441    860
+ 661361  4752471    854
+ 661361  4752501    850
+ 661361  4752531    847
+ 661361  4752561    842
+ 661361  4752591    832
+ 661361  4752621    829
+ 661361  4752651    828
+ 661361  4752681    831
+ 661361  4752711    831
+ 661361  4752741    819
+ 661361  4752771    809
+ 661361  4752801    809
+ 661361  4752831    809
+ 661361  4752861    829
+ 661361  4752891    843
+ 661361  4752921    858
+ 661361  4752951    868
+ 661361  4752981    869
+ 661361  4753011    870
+ 661361  4753041    870
+ 661361  4753071    870
+ 661361  4753101    870
+ 661361  4753131    869
+ 661361  4753161    869
+ 661361  4753191    869
+ 661361  4753221    867
+ 661361  4753251    867
+ 661361  4753281    866
+ 661361  4753311    867
+ 661361  4753341    868
+ 661361  4753371    868
+ 661361  4753401    869
+ 661361  4753431    869
+ 661361  4753461    870
+ 661361  4753491    868
+ 661361  4753521    861
+ 661361  4753551    841
+ 661361  4753581    809
+ 661361  4753611    809
+ 661361  4753641    809
+ 661361  4753671    809
+ 661361  4753701    809
+ 661361  4753731    820
+ 661361  4753761    835
+ 661361  4753791    852
+ 661361  4753821    869
+ 661361  4753851    870
+ 661361  4753881    871
+ 661361  4753911    872
+ 661361  4753941    873
+ 661361  4753971    875
+ 661361  4754001    876
+ 661361  4754031    878
+ 661361  4754061    882
+ 661361  4754091    897
+ 661361  4754121    912
+ 661361  4754151    951
+ 661361  4754181    961
+ 661361  4754211    962
+ 661361  4754241    963
+ 661361  4754271    964
+ 661361  4754301    962
+ 661361  4754331    964
+ 661361  4754361    964
+ 661361  4754391    964
+ 661361  4754421    964
+ 661361  4754451    964
+ 661361  4754481    965
+ 661361  4754511    965
+ 661361  4754541    965
+ 661391  4751301   1019
+ 661391  4751331   1019
+ 661391  4751361   1018
+ 661391  4751391   1017
+ 661391  4751421   1017
+ 661391  4751451   1016
+ 661391  4751481   1015
+ 661391  4751511   1014
+ 661391  4751541   1014
+ 661391  4751571   1014
+ 661391  4751601   1014
+ 661391  4751631   1013
+ 661391  4751661   1012
+ 661391  4751691   1012
+ 661391  4751721   1011
+ 661391  4751751   1008
+ 661391  4751781   1002
+ 661391  4751811    989
+ 661391  4751841    976
+ 661391  4751871    964
+ 661391  4751901    953
+ 661391  4751931    944
+ 661391  4751961    928
+ 661391  4751991    916
+ 661391  4752021    906
+ 661391  4752051    899
+ 661391  4752081    892
+ 661391  4752111    888
+ 661391  4752141    884
+ 661391  4752171    881
+ 661391  4752201    878
+ 661391  4752231    875
+ 661391  4752261    872
+ 661391  4752291    870
+ 661391  4752321    867
+ 661391  4752351    862
+ 661391  4752381    861
+ 661391  4752411    862
+ 661391  4752441    861
+ 661391  4752471    848
+ 661391  4752501    842
+ 661391  4752531    836
+ 661391  4752561    830
+ 661391  4752591    823
+ 661391  4752621    821
+ 661391  4752651    819
+ 661391  4752681    820
+ 661391  4752711    819
+ 661391  4752741    809
+ 661391  4752771    809
+ 661391  4752801    809
+ 661391  4752831    826
+ 661391  4752861    841
+ 661391  4752891    855
+ 661391  4752921    867
+ 661391  4752951    870
+ 661391  4752981    870
+ 661391  4753011    870
+ 661391  4753041    869
+ 661391  4753071    869
+ 661391  4753101    869
+ 661391  4753131    869
+ 661391  4753161    869
+ 661391  4753191    869
+ 661391  4753221    867
+ 661391  4753251    867
+ 661391  4753281    866
+ 661391  4753311    867
+ 661391  4753341    867
+ 661391  4753371    867
+ 661391  4753401    868
+ 661391  4753431    869
+ 661391  4753461    869
+ 661391  4753491    869
+ 661391  4753521    869
+ 661391  4753551    853
+ 661391  4753581    820
+ 661391  4753611    809
+ 661391  4753641    809
+ 661391  4753671    809
+ 661391  4753701    809
+ 661391  4753731    820
+ 661391  4753761    835
+ 661391  4753791    852
+ 661391  4753821    869
+ 661391  4753851    870
+ 661391  4753881    871
+ 661391  4753911    872
+ 661391  4753941    874
+ 661391  4753971    875
+ 661391  4754001    876
+ 661391  4754031    879
+ 661391  4754061    885
+ 661391  4754091    906
+ 661391  4754121    939
+ 661391  4754151    961
+ 661391  4754181    965
+ 661391  4754211    965
+ 661391  4754241    964
+ 661391  4754271    964
+ 661391  4754301    964
+ 661391  4754331    964
+ 661391  4754361    964
+ 661391  4754391    965
+ 661391  4754421    966
+ 661391  4754451    965
+ 661391  4754481    965
+ 661391  4754511    966
+ 661391  4754541    965
+ 661421  4751301   1020
+ 661421  4751331   1019
+ 661421  4751361   1018
+ 661421  4751391   1018
+ 661421  4751421   1017
+ 661421  4751451   1016
+ 661421  4751481   1015
+ 661421  4751511   1015
+ 661421  4751541   1015
+ 661421  4751571   1015
+ 661421  4751601   1014
+ 661421  4751631   1013
+ 661421  4751661   1013
+ 661421  4751691   1013
+ 661421  4751721   1014
+ 661421  4751751   1010
+ 661421  4751781    996
+ 661421  4751811    981
+ 661421  4751841    966
+ 661421  4751871    953
+ 661421  4751901    945
+ 661421  4751931    934
+ 661421  4751961    927
+ 661421  4751991    914
+ 661421  4752021    905
+ 661421  4752051    897
+ 661421  4752081    892
+ 661421  4752111    887
+ 661421  4752141    884
+ 661421  4752171    881
+ 661421  4752201    878
+ 661421  4752231    875
+ 661421  4752261    872
+ 661421  4752291    869
+ 661421  4752321    866
+ 661421  4752351    862
+ 661421  4752381    858
+ 661421  4752411    854
+ 661421  4752441    853
+ 661421  4752471    844
+ 661421  4752501    834
+ 661421  4752531    830
+ 661421  4752561    828
+ 661421  4752591    832
+ 661421  4752621    833
+ 661421  4752651    824
+ 661421  4752681    816
+ 661421  4752711    813
+ 661421  4752741    809
+ 661421  4752771    809
+ 661421  4752801    814
+ 661421  4752831    831
+ 661421  4752861    849
+ 661421  4752891    862
+ 661421  4752921    868
+ 661421  4752951    869
+ 661421  4752981    869
+ 661421  4753011    870
+ 661421  4753041    870
+ 661421  4753071    869
+ 661421  4753101    869
+ 661421  4753131    869
+ 661421  4753161    869
+ 661421  4753191    868
+ 661421  4753221    868
+ 661421  4753251    867
+ 661421  4753281    866
+ 661421  4753311    867
+ 661421  4753341    867
+ 661421  4753371    868
+ 661421  4753401    867
+ 661421  4753431    869
+ 661421  4753461    869
+ 661421  4753491    871
+ 661421  4753521    871
+ 661421  4753551    859
+ 661421  4753581    821
+ 661421  4753611    809
+ 661421  4753641    809
+ 661421  4753671    809
+ 661421  4753701    809
+ 661421  4753731    818
+ 661421  4753761    830
+ 661421  4753791    848
+ 661421  4753821    869
+ 661421  4753851    870
+ 661421  4753881    871
+ 661421  4753911    873
+ 661421  4753941    874
+ 661421  4753971    875
+ 661421  4754001    878
+ 661421  4754031    881
+ 661421  4754061    889
+ 661421  4754091    916
+ 661421  4754121    948
+ 661421  4754151    968
+ 661421  4754181    968
+ 661421  4754211    966
+ 661421  4754241    965
+ 661421  4754271    965
+ 661421  4754301    965
+ 661421  4754331    965
+ 661421  4754361    965
+ 661421  4754391    966
+ 661421  4754421    967
+ 661421  4754451    966
+ 661421  4754481    966
+ 661421  4754511    966
+ 661421  4754541    966
+ 661451  4751301   1020
+ 661451  4751331   1019
+ 661451  4751361   1019
+ 661451  4751391   1018
+ 661451  4751421   1018
+ 661451  4751451   1017
+ 661451  4751481   1016
+ 661451  4751511   1016
+ 661451  4751541   1016
+ 661451  4751571   1015
+ 661451  4751601   1015
+ 661451  4751631   1014
+ 661451  4751661   1014
+ 661451  4751691   1014
+ 661451  4751721   1014
+ 661451  4751751   1013
+ 661451  4751781   1001
+ 661451  4751811    985
+ 661451  4751841    970
+ 661451  4751871    953
+ 661451  4751901    938
+ 661451  4751931    918
+ 661451  4751961    912
+ 661451  4751991    911
+ 661451  4752021    905
+ 661451  4752051    897
+ 661451  4752081    889
+ 661451  4752111    885
+ 661451  4752141    882
+ 661451  4752171    879
+ 661451  4752201    877
+ 661451  4752231    874
+ 661451  4752261    872
+ 661451  4752291    869
+ 661451  4752321    865
+ 661451  4752351    861
+ 661451  4752381    862
+ 661451  4752411    850
+ 661451  4752441    844
+ 661451  4752471    837
+ 661451  4752501    830
+ 661451  4752531    833
+ 661451  4752561    837
+ 661451  4752591    840
+ 661451  4752621    844
+ 661451  4752651    844
+ 661451  4752681    831
+ 661451  4752711    819
+ 661451  4752741    812
+ 661451  4752771    810
+ 661451  4752801    813
+ 661451  4752831    833
+ 661451  4752861    853
+ 661451  4752891    863
+ 661451  4752921    865
+ 661451  4752951    867
+ 661451  4752981    868
+ 661451  4753011    869
+ 661451  4753041    869
+ 661451  4753071    869
+ 661451  4753101    868
+ 661451  4753131    868
+ 661451  4753161    868
+ 661451  4753191    868
+ 661451  4753221    869
+ 661451  4753251    868
+ 661451  4753281    867
+ 661451  4753311    868
+ 661451  4753341    868
+ 661451  4753371    868
+ 661451  4753401    867
+ 661451  4753431    868
+ 661451  4753461    869
+ 661451  4753491    871
+ 661451  4753521    870
+ 661451  4753551    859
+ 661451  4753581    809
+ 661451  4753611    809
+ 661451  4753641    809
+ 661451  4753671    809
+ 661451  4753701    809
+ 661451  4753731    817
+ 661451  4753761    830
+ 661451  4753791    846
+ 661451  4753821    868
+ 661451  4753851    871
+ 661451  4753881    872
+ 661451  4753911    874
+ 661451  4753941    875
+ 661451  4753971    876
+ 661451  4754001    878
+ 661451  4754031    882
+ 661451  4754061    895
+ 661451  4754091    916
+ 661451  4754121    948
+ 661451  4754151    965
+ 661451  4754181    968
+ 661451  4754211    967
+ 661451  4754241    966
+ 661451  4754271    966
+ 661451  4754301    965
+ 661451  4754331    965
+ 661451  4754361    966
+ 661451  4754391    966
+ 661451  4754421    967
+ 661451  4754451    967
+ 661451  4754481    967
+ 661451  4754511    966
+ 661451  4754541    966
+ 661481  4751301   1020
+ 661481  4751331   1019
+ 661481  4751361   1019
+ 661481  4751391   1019
+ 661481  4751421   1018
+ 661481  4751451   1018
+ 661481  4751481   1017
+ 661481  4751511   1017
+ 661481  4751541   1016
+ 661481  4751571   1016
+ 661481  4751601   1016
+ 661481  4751631   1015
+ 661481  4751661   1015
+ 661481  4751691   1015
+ 661481  4751721   1014
+ 661481  4751751   1011
+ 661481  4751781   1003
+ 661481  4751811    988
+ 661481  4751841    975
+ 661481  4751871    957
+ 661481  4751901    943
+ 661481  4751931    921
+ 661481  4751961    914
+ 661481  4751991    909
+ 661481  4752021    900
+ 661481  4752051    892
+ 661481  4752081    889
+ 661481  4752111    884
+ 661481  4752141    881
+ 661481  4752171    876
+ 661481  4752201    875
+ 661481  4752231    873
+ 661481  4752261    871
+ 661481  4752291    868
+ 661481  4752321    864
+ 661481  4752351    860
+ 661481  4752381    858
+ 661481  4752411    850
+ 661481  4752441    843
+ 661481  4752471    837
+ 661481  4752501    834
+ 661481  4752531    840
+ 661481  4752561    842
+ 661481  4752591    848
+ 661481  4752621    855
+ 661481  4752651    856
+ 661481  4752681    841
+ 661481  4752711    829
+ 661481  4752741    814
+ 661481  4752771    810
+ 661481  4752801    811
+ 661481  4752831    824
+ 661481  4752861    845
+ 661481  4752891    857
+ 661481  4752921    863
+ 661481  4752951    865
+ 661481  4752981    867
+ 661481  4753011    868
+ 661481  4753041    869
+ 661481  4753071    868
+ 661481  4753101    868
+ 661481  4753131    868
+ 661481  4753161    869
+ 661481  4753191    869
+ 661481  4753221    869
+ 661481  4753251    869
+ 661481  4753281    868
+ 661481  4753311    868
+ 661481  4753341    868
+ 661481  4753371    869
+ 661481  4753401    868
+ 661481  4753431    868
+ 661481  4753461    869
+ 661481  4753491    870
+ 661481  4753521    869
+ 661481  4753551    857
+ 661481  4753581    809
+ 661481  4753611    809
+ 661481  4753641    809
+ 661481  4753671    809
+ 661481  4753701    809
+ 661481  4753731    817
+ 661481  4753761    833
+ 661481  4753791    852
+ 661481  4753821    869
+ 661481  4753851    874
+ 661481  4753881    875
+ 661481  4753911    875
+ 661481  4753941    876
+ 661481  4753971    877
+ 661481  4754001    879
+ 661481  4754031    882
+ 661481  4754061    898
+ 661481  4754091    914
+ 661481  4754121    944
+ 661481  4754151    968
+ 661481  4754181    967
+ 661481  4754211    968
+ 661481  4754241    967
+ 661481  4754271    966
+ 661481  4754301    966
+ 661481  4754331    966
+ 661481  4754361    966
+ 661481  4754391    967
+ 661481  4754421    968
+ 661481  4754451    968
+ 661481  4754481    967
+ 661481  4754511    967
+ 661481  4754541    966
+ 661511  4751301   1020
+ 661511  4751331   1020
+ 661511  4751361   1019
+ 661511  4751391   1019
+ 661511  4751421   1018
+ 661511  4751451   1018
+ 661511  4751481   1018
+ 661511  4751511   1018
+ 661511  4751541   1017
+ 661511  4751571   1017
+ 661511  4751601   1016
+ 661511  4751631   1016
+ 661511  4751661   1016
+ 661511  4751691   1015
+ 661511  4751721   1014
+ 661511  4751751   1009
+ 661511  4751781    997
+ 661511  4751811    985
+ 661511  4751841    971
+ 661511  4751871    955
+ 661511  4751901    940
+ 661511  4751931    925
+ 661511  4751961    923
+ 661511  4751991    915
+ 661511  4752021    903
+ 661511  4752051    895
+ 661511  4752081    889
+ 661511  4752111    885
+ 661511  4752141    881
+ 661511  4752171    878
+ 661511  4752201    875
+ 661511  4752231    872
+ 661511  4752261    870
+ 661511  4752291    867
+ 661511  4752321    863
+ 661511  4752351    856
+ 661511  4752381    848
+ 661511  4752411    847
+ 661511  4752441    840
+ 661511  4752471    836
+ 661511  4752501    839
+ 661511  4752531    842
+ 661511  4752561    844
+ 661511  4752591    851
+ 661511  4752621    860
+ 661511  4752651    861
+ 661511  4752681    845
+ 661511  4752711    834
+ 661511  4752741    820
+ 661511  4752771    813
+ 661511  4752801    811
+ 661511  4752831    811
+ 661511  4752861    831
+ 661511  4752891    849
+ 661511  4752921    861
+ 661511  4752951    863
+ 661511  4752981    865
+ 661511  4753011    867
+ 661511  4753041    867
+ 661511  4753071    867
+ 661511  4753101    868
+ 661511  4753131    869
+ 661511  4753161    869
+ 661511  4753191    869
+ 661511  4753221    869
+ 661511  4753251    868
+ 661511  4753281    868
+ 661511  4753311    869
+ 661511  4753341    869
+ 661511  4753371    869
+ 661511  4753401    868
+ 661511  4753431    868
+ 661511  4753461    869
+ 661511  4753491    870
+ 661511  4753521    869
+ 661511  4753551    857
+ 661511  4753581    809
+ 661511  4753611    809
+ 661511  4753641    809
+ 661511  4753671    809
+ 661511  4753701    809
+ 661511  4753731    817
+ 661511  4753761    838
+ 661511  4753791    856
+ 661511  4753821    872
+ 661511  4753851    877
+ 661511  4753881    877
+ 661511  4753911    877
+ 661511  4753941    877
+ 661511  4753971    878
+ 661511  4754001    881
+ 661511  4754031    883
+ 661511  4754061    899
+ 661511  4754091    912
+ 661511  4754121    942
+ 661511  4754151    968
+ 661511  4754181    968
+ 661511  4754211    968
+ 661511  4754241    967
+ 661511  4754271    967
+ 661511  4754301    966
+ 661511  4754331    966
+ 661511  4754361    966
+ 661511  4754391    967
+ 661511  4754421    968
+ 661511  4754451    968
+ 661511  4754481    967
+ 661511  4754511    967
+ 661511  4754541    966
+ 661541  4751301   1021
+ 661541  4751331   1020
+ 661541  4751361   1019
+ 661541  4751391   1019
+ 661541  4751421   1019
+ 661541  4751451   1018
+ 661541  4751481   1018
+ 661541  4751511   1018
+ 661541  4751541   1018
+ 661541  4751571   1018
+ 661541  4751601   1017
+ 661541  4751631   1017
+ 661541  4751661   1016
+ 661541  4751691   1015
+ 661541  4751721   1013
+ 661541  4751751   1004
+ 661541  4751781    991
+ 661541  4751811    976
+ 661541  4751841    963
+ 661541  4751871    947
+ 661541  4751901    936
+ 661541  4751931    938
+ 661541  4751961    931
+ 661541  4751991    917
+ 661541  4752021    904
+ 661541  4752051    896
+ 661541  4752081    890
+ 661541  4752111    884
+ 661541  4752141    881
+ 661541  4752171    877
+ 661541  4752201    874
+ 661541  4752231    872
+ 661541  4752261    869
+ 661541  4752291    866
+ 661541  4752321    863
+ 661541  4752351    853
+ 661541  4752381    847
+ 661541  4752411    843
+ 661541  4752441    838
+ 661541  4752471    838
+ 661541  4752501    843
+ 661541  4752531    845
+ 661541  4752561    850
+ 661541  4752591    857
+ 661541  4752621    865
+ 661541  4752651    865
+ 661541  4752681    849
+ 661541  4752711    837
+ 661541  4752741    825
+ 661541  4752771    817
+ 661541  4752801    813
+ 661541  4752831    811
+ 661541  4752861    824
+ 661541  4752891    842
+ 661541  4752921    856
+ 661541  4752951    862
+ 661541  4752981    864
+ 661541  4753011    866
+ 661541  4753041    867
+ 661541  4753071    868
+ 661541  4753101    869
+ 661541  4753131    869
+ 661541  4753161    869
+ 661541  4753191    869
+ 661541  4753221    869
+ 661541  4753251    869
+ 661541  4753281    869
+ 661541  4753311    869
+ 661541  4753341    869
+ 661541  4753371    869
+ 661541  4753401    869
+ 661541  4753431    869
+ 661541  4753461    869
+ 661541  4753491    870
+ 661541  4753521    869
+ 661541  4753551    858
+ 661541  4753581    809
+ 661541  4753611    809
+ 661541  4753641    809
+ 661541  4753671    809
+ 661541  4753701    809
+ 661541  4753731    820
+ 661541  4753761    841
+ 661541  4753791    858
+ 661541  4753821    875
+ 661541  4753851    877
+ 661541  4753881    877
+ 661541  4753911    878
+ 661541  4753941    879
+ 661541  4753971    880
+ 661541  4754001    881
+ 661541  4754031    884
+ 661541  4754061    900
+ 661541  4754091    912
+ 661541  4754121    942
+ 661541  4754151    968
+ 661541  4754181    968
+ 661541  4754211    968
+ 661541  4754241    967
+ 661541  4754271    967
+ 661541  4754301    967
+ 661541  4754331    967
+ 661541  4754361    966
+ 661541  4754391    967
+ 661541  4754421    968
+ 661541  4754451    968
+ 661541  4754481    967
+ 661541  4754511    967
+ 661541  4754541    966
+ 661571  4751301   1021
+ 661571  4751331   1020
+ 661571  4751361   1020
+ 661571  4751391   1019
+ 661571  4751421   1019
+ 661571  4751451   1019
+ 661571  4751481   1019
+ 661571  4751511   1019
+ 661571  4751541   1018
+ 661571  4751571   1018
+ 661571  4751601   1018
+ 661571  4751631   1017
+ 661571  4751661   1016
+ 661571  4751691   1015
+ 661571  4751721   1010
+ 661571  4751751    997
+ 661571  4751781    985
+ 661571  4751811    970
+ 661571  4751841    958
+ 661571  4751871    952
+ 661571  4751901    948
+ 661571  4751931    943
+ 661571  4751961    927
+ 661571  4751991    913
+ 661571  4752021    903
+ 661571  4752051    895
+ 661571  4752081    890
+ 661571  4752111    885
+ 661571  4752141    880
+ 661571  4752171    877
+ 661571  4752201    874
+ 661571  4752231    871
+ 661571  4752261    868
+ 661571  4752291    865
+ 661571  4752321    862
+ 661571  4752351    851
+ 661571  4752381    846
+ 661571  4752411    841
+ 661571  4752441    839
+ 661571  4752471    842
+ 661571  4752501    849
+ 661571  4752531    853
+ 661571  4752561    858
+ 661571  4752591    864
+ 661571  4752621    870
+ 661571  4752651    870
+ 661571  4752681    854
+ 661571  4752711    840
+ 661571  4752741    829
+ 661571  4752771    820
+ 661571  4752801    814
+ 661571  4752831    811
+ 661571  4752861    819
+ 661571  4752891    839
+ 661571  4752921    857
+ 661571  4752951    862
+ 661571  4752981    864
+ 661571  4753011    866
+ 661571  4753041    868
+ 661571  4753071    869
+ 661571  4753101    869
+ 661571  4753131    869
+ 661571  4753161    869
+ 661571  4753191    869
+ 661571  4753221    869
+ 661571  4753251    869
+ 661571  4753281    869
+ 661571  4753311    869
+ 661571  4753341    869
+ 661571  4753371    869
+ 661571  4753401    869
+ 661571  4753431    869
+ 661571  4753461    869
+ 661571  4753491    870
+ 661571  4753521    866
+ 661571  4753551    855
+ 661571  4753581    809
+ 661571  4753611    809
+ 661571  4753641    809
+ 661571  4753671    809
+ 661571  4753701    812
+ 661571  4753731    823
+ 661571  4753761    844
+ 661571  4753791    866
+ 661571  4753821    876
+ 661571  4753851    878
+ 661571  4753881    878
+ 661571  4753911    878
+ 661571  4753941    880
+ 661571  4753971    880
+ 661571  4754001    882
+ 661571  4754031    884
+ 661571  4754061    900
+ 661571  4754091    912
+ 661571  4754121    944
+ 661571  4754151    968
+ 661571  4754181    968
+ 661571  4754211    968
+ 661571  4754241    967
+ 661571  4754271    967
+ 661571  4754301    967
+ 661571  4754331    967
+ 661571  4754361    967
+ 661571  4754391    967
+ 661571  4754421    968
+ 661571  4754451    968
+ 661571  4754481    967
+ 661571  4754511    967
+ 661571  4754541    967
+ 661601  4751301   1021
+ 661601  4751331   1021
+ 661601  4751361   1020
+ 661601  4751391   1020
+ 661601  4751421   1019
+ 661601  4751451   1019
+ 661601  4751481   1019
+ 661601  4751511   1019
+ 661601  4751541   1019
+ 661601  4751571   1019
+ 661601  4751601   1019
+ 661601  4751631   1018
+ 661601  4751661   1017
+ 661601  4751691   1015
+ 661601  4751721   1008
+ 661601  4751751    995
+ 661601  4751781    985
+ 661601  4751811    971
+ 661601  4751841    963
+ 661601  4751871    957
+ 661601  4751901    949
+ 661601  4751931    935
+ 661601  4751961    916
+ 661601  4751991    906
+ 661601  4752021    898
+ 661601  4752051    891
+ 661601  4752081    887
+ 661601  4752111    883
+ 661601  4752141    878
+ 661601  4752171    876
+ 661601  4752201    873
+ 661601  4752231    870
+ 661601  4752261    867
+ 661601  4752291    863
+ 661601  4752321    860
+ 661601  4752351    852
+ 661601  4752381    852
+ 661601  4752411    845
+ 661601  4752441    842
+ 661601  4752471    843
+ 661601  4752501    853
+ 661601  4752531    862
+ 661601  4752561    866
+ 661601  4752591    869
+ 661601  4752621    872
+ 661601  4752651    872
+ 661601  4752681    865
+ 661601  4752711    845
+ 661601  4752741    833
+ 661601  4752771    822
+ 661601  4752801    815
+ 661601  4752831    811
+ 661601  4752861    819
+ 661601  4752891    840
+ 661601  4752921    858
+ 661601  4752951    862
+ 661601  4752981    864
+ 661601  4753011    866
+ 661601  4753041    868
+ 661601  4753071    869
+ 661601  4753101    869
+ 661601  4753131    869
+ 661601  4753161    869
+ 661601  4753191    869
+ 661601  4753221    869
+ 661601  4753251    869
+ 661601  4753281    869
+ 661601  4753311    869
+ 661601  4753341    869
+ 661601  4753371    869
+ 661601  4753401    869
+ 661601  4753431    869
+ 661601  4753461    869
+ 661601  4753491    869
+ 661601  4753521    861
+ 661601  4753551    842
+ 661601  4753581    809
+ 661601  4753611    809
+ 661601  4753641    809
+ 661601  4753671    809
+ 661601  4753701    815
+ 661601  4753731    826
+ 661601  4753761    850
+ 661601  4753791    869
+ 661601  4753821    877
+ 661601  4753851    878
+ 661601  4753881    879
+ 661601  4753911    879
+ 661601  4753941    880
+ 661601  4753971    881
+ 661601  4754001    882
+ 661601  4754031    884
+ 661601  4754061    900
+ 661601  4754091    913
+ 661601  4754121    946
+ 661601  4754151    968
+ 661601  4754181    968
+ 661601  4754211    968
+ 661601  4754241    968
+ 661601  4754271    968
+ 661601  4754301    967
+ 661601  4754331    968
+ 661601  4754361    967
+ 661601  4754391    967
+ 661601  4754421    968
+ 661601  4754451    968
+ 661601  4754481    967
+ 661601  4754511    967
+ 661601  4754541    967
+ 661631  4751301   1021
+ 661631  4751331   1021
+ 661631  4751361   1020
+ 661631  4751391   1020
+ 661631  4751421   1020
+ 661631  4751451   1020
+ 661631  4751481   1020
+ 661631  4751511   1020
+ 661631  4751541   1019
+ 661631  4751571   1019
+ 661631  4751601   1019
+ 661631  4751631   1019
+ 661631  4751661   1019
+ 661631  4751691   1017
+ 661631  4751721   1011
+ 661631  4751751    998
+ 661631  4751781    984
+ 661631  4751811    971
+ 661631  4751841    962
+ 661631  4751871    952
+ 661631  4751901    940
+ 661631  4751931    930
+ 661631  4751961    917
+ 661631  4751991    908
+ 661631  4752021    898
+ 661631  4752051    891
+ 661631  4752081    888
+ 661631  4752111    884
+ 661631  4752141    879
+ 661631  4752171    877
+ 661631  4752201    873
+ 661631  4752231    870
+ 661631  4752261    867
+ 661631  4752291    862
+ 661631  4752321    860
+ 661631  4752351    859
+ 661631  4752381    859
+ 661631  4752411    845
+ 661631  4752441    844
+ 661631  4752471    847
+ 661631  4752501    861
+ 661631  4752531    863
+ 661631  4752561    868
+ 661631  4752591    869
+ 661631  4752621    871
+ 661631  4752651    872
+ 661631  4752681    868
+ 661631  4752711    853
+ 661631  4752741    836
+ 661631  4752771    823
+ 661631  4752801    815
+ 661631  4752831    811
+ 661631  4752861    819
+ 661631  4752891    840
+ 661631  4752921    856
+ 661631  4752951    862
+ 661631  4752981    864
+ 661631  4753011    866
+ 661631  4753041    868
+ 661631  4753071    869
+ 661631  4753101    869
+ 661631  4753131    869
+ 661631  4753161    869
+ 661631  4753191    869
+ 661631  4753221    869
+ 661631  4753251    869
+ 661631  4753281    869
+ 661631  4753311    869
+ 661631  4753341    869
+ 661631  4753371    869
+ 661631  4753401    869
+ 661631  4753431    869
+ 661631  4753461    869
+ 661631  4753491    870
+ 661631  4753521    860
+ 661631  4753551    831
+ 661631  4753581    809
+ 661631  4753611    809
+ 661631  4753641    809
+ 661631  4753671    809
+ 661631  4753701    817
+ 661631  4753731    830
+ 661631  4753761    853
+ 661631  4753791    871
+ 661631  4753821    877
+ 661631  4753851    878
+ 661631  4753881    880
+ 661631  4753911    879
+ 661631  4753941    880
+ 661631  4753971    881
+ 661631  4754001    882
+ 661631  4754031    884
+ 661631  4754061    901
+ 661631  4754091    914
+ 661631  4754121    947
+ 661631  4754151    968
+ 661631  4754181    968
+ 661631  4754211    968
+ 661631  4754241    968
+ 661631  4754271    968
+ 661631  4754301    968
+ 661631  4754331    968
+ 661631  4754361    968
+ 661631  4754391    968
+ 661631  4754421    968
+ 661631  4754451    968
+ 661631  4754481    967
+ 661631  4754511    967
+ 661631  4754541    967
+ 661661  4751301   1021
+ 661661  4751331   1021
+ 661661  4751361   1021
+ 661661  4751391   1020
+ 661661  4751421   1020
+ 661661  4751451   1020
+ 661661  4751481   1020
+ 661661  4751511   1020
+ 661661  4751541   1020
+ 661661  4751571   1020
+ 661661  4751601   1020
+ 661661  4751631   1021
+ 661661  4751661   1021
+ 661661  4751691   1021
+ 661661  4751721   1016
+ 661661  4751751   1004
+ 661661  4751781    993
+ 661661  4751811    975
+ 661661  4751841    963
+ 661661  4751871    953
+ 661661  4751901    941
+ 661661  4751931    929
+ 661661  4751961    918
+ 661661  4751991    910
+ 661661  4752021    902
+ 661661  4752051    895
+ 661661  4752081    889
+ 661661  4752111    883
+ 661661  4752141    879
+ 661661  4752171    876
+ 661661  4752201    873
+ 661661  4752231    869
+ 661661  4752261    867
+ 661661  4752291    864
+ 661661  4752321    862
+ 661661  4752351    861
+ 661661  4752381    861
+ 661661  4752411    850
+ 661661  4752441    847
+ 661661  4752471    854
+ 661661  4752501    862
+ 661661  4752531    865
+ 661661  4752561    867
+ 661661  4752591    868
+ 661661  4752621    870
+ 661661  4752651    869
+ 661661  4752681    871
+ 661661  4752711    862
+ 661661  4752741    841
+ 661661  4752771    825
+ 661661  4752801    814
+ 661661  4752831    811
+ 661661  4752861    818
+ 661661  4752891    841
+ 661661  4752921    857
+ 661661  4752951    862
+ 661661  4752981    864
+ 661661  4753011    866
+ 661661  4753041    867
+ 661661  4753071    868
+ 661661  4753101    869
+ 661661  4753131    869
+ 661661  4753161    869
+ 661661  4753191    869
+ 661661  4753221    869
+ 661661  4753251    869
+ 661661  4753281    869
+ 661661  4753311    869
+ 661661  4753341    869
+ 661661  4753371    869
+ 661661  4753401    870
+ 661661  4753431    870
+ 661661  4753461    870
+ 661661  4753491    870
+ 661661  4753521    863
+ 661661  4753551    831
+ 661661  4753581    809
+ 661661  4753611    809
+ 661661  4753641    809
+ 661661  4753671    809
+ 661661  4753701    818
+ 661661  4753731    834
+ 661661  4753761    857
+ 661661  4753791    873
+ 661661  4753821    877
+ 661661  4753851    878
+ 661661  4753881    880
+ 661661  4753911    881
+ 661661  4753941    881
+ 661661  4753971    882
+ 661661  4754001    883
+ 661661  4754031    885
+ 661661  4754061    901
+ 661661  4754091    915
+ 661661  4754121    950
+ 661661  4754151    968
+ 661661  4754181    968
+ 661661  4754211    968
+ 661661  4754241    968
+ 661661  4754271    968
+ 661661  4754301    968
+ 661661  4754331    968
+ 661661  4754361    968
+ 661661  4754391    968
+ 661661  4754421    968
+ 661661  4754451    968
+ 661661  4754481    968
+ 661661  4754511    967
+ 661661  4754541    967
+ 661691  4751301   1021
+ 661691  4751331   1021
+ 661691  4751361   1021
+ 661691  4751391   1021
+ 661691  4751421   1021
+ 661691  4751451   1020
+ 661691  4751481   1020
+ 661691  4751511   1021
+ 661691  4751541   1021
+ 661691  4751571   1021
+ 661691  4751601   1021
+ 661691  4751631   1021
+ 661691  4751661   1022
+ 661691  4751691   1022
+ 661691  4751721   1020
+ 661691  4751751   1010
+ 661691  4751781    998
+ 661691  4751811    980
+ 661691  4751841    967
+ 661691  4751871    954
+ 661691  4751901    946
+ 661691  4751931    934
+ 661691  4751961    922
+ 661691  4751991    912
+ 661691  4752021    903
+ 661691  4752051    894
+ 661691  4752081    888
+ 661691  4752111    883
+ 661691  4752141    879
+ 661691  4752171    876
+ 661691  4752201    873
+ 661691  4752231    870
+ 661691  4752261    868
+ 661691  4752291    866
+ 661691  4752321    863
+ 661691  4752351    861
+ 661691  4752381    862
+ 661691  4752411    856
+ 661691  4752441    853
+ 661691  4752471    859
+ 661691  4752501    864
+ 661691  4752531    867
+ 661691  4752561    866
+ 661691  4752591    866
+ 661691  4752621    866
+ 661691  4752651    865
+ 661691  4752681    864
+ 661691  4752711    856
+ 661691  4752741    838
+ 661691  4752771    823
+ 661691  4752801    813
+ 661691  4752831    811
+ 661691  4752861    818
+ 661691  4752891    842
+ 661691  4752921    859
+ 661691  4752951    862
+ 661691  4752981    864
+ 661691  4753011    866
+ 661691  4753041    867
+ 661691  4753071    869
+ 661691  4753101    869
+ 661691  4753131    869
+ 661691  4753161    869
+ 661691  4753191    869
+ 661691  4753221    869
+ 661691  4753251    869
+ 661691  4753281    869
+ 661691  4753311    869
+ 661691  4753341    869
+ 661691  4753371    869
+ 661691  4753401    870
+ 661691  4753431    870
+ 661691  4753461    870
+ 661691  4753491    870
+ 661691  4753521    863
+ 661691  4753551    832
+ 661691  4753581    809
+ 661691  4753611    809
+ 661691  4753641    809
+ 661691  4753671    809
+ 661691  4753701    820
+ 661691  4753731    838
+ 661691  4753761    862
+ 661691  4753791    874
+ 661691  4753821    877
+ 661691  4753851    879
+ 661691  4753881    880
+ 661691  4753911    882
+ 661691  4753941    883
+ 661691  4753971    884
+ 661691  4754001    885
+ 661691  4754031    886
+ 661691  4754061    901
+ 661691  4754091    916
+ 661691  4754121    948
+ 661691  4754151    968
+ 661691  4754181    968
+ 661691  4754211    968
+ 661691  4754241    968
+ 661691  4754271    968
+ 661691  4754301    968
+ 661691  4754331    968
+ 661691  4754361    968
+ 661691  4754391    968
+ 661691  4754421    968
+ 661691  4754451    968
+ 661691  4754481    968
+ 661691  4754511    968
+ 661691  4754541    968
+ 661721  4751301   1021
+ 661721  4751331   1021
+ 661721  4751361   1021
+ 661721  4751391   1021
+ 661721  4751421   1021
+ 661721  4751451   1021
+ 661721  4751481   1021
+ 661721  4751511   1021
+ 661721  4751541   1021
+ 661721  4751571   1021
+ 661721  4751601   1021
+ 661721  4751631   1021
+ 661721  4751661   1021
+ 661721  4751691   1022
+ 661721  4751721   1021
+ 661721  4751751   1014
+ 661721  4751781    998
+ 661721  4751811    980
+ 661721  4751841    968
+ 661721  4751871    958
+ 661721  4751901    949
+ 661721  4751931    936
+ 661721  4751961    925
+ 661721  4751991    914
+ 661721  4752021    904
+ 661721  4752051    893
+ 661721  4752081    888
+ 661721  4752111    883
+ 661721  4752141    879
+ 661721  4752171    876
+ 661721  4752201    873
+ 661721  4752231    871
+ 661721  4752261    869
+ 661721  4752291    867
+ 661721  4752321    865
+ 661721  4752351    864
+ 661721  4752381    863
+ 661721  4752411    861
+ 661721  4752441    860
+ 661721  4752471    862
+ 661721  4752501    867
+ 661721  4752531    867
+ 661721  4752561    864
+ 661721  4752591    862
+ 661721  4752621    858
+ 661721  4752651    854
+ 661721  4752681    849
+ 661721  4752711    839
+ 661721  4752741    828
+ 661721  4752771    814
+ 661721  4752801    811
+ 661721  4752831    813
+ 661721  4752861    823
+ 661721  4752891    844
+ 661721  4752921    861
+ 661721  4752951    863
+ 661721  4752981    864
+ 661721  4753011    866
+ 661721  4753041    868
+ 661721  4753071    869
+ 661721  4753101    869
+ 661721  4753131    869
+ 661721  4753161    869
+ 661721  4753191    869
+ 661721  4753221    869
+ 661721  4753251    869
+ 661721  4753281    869
+ 661721  4753311    869
+ 661721  4753341    871
+ 661721  4753371    870
+ 661721  4753401    871
+ 661721  4753431    871
+ 661721  4753461    872
+ 661721  4753491    872
+ 661721  4753521    860
+ 661721  4753551    838
+ 661721  4753581    809
+ 661721  4753611    809
+ 661721  4753641    809
+ 661721  4753671    809
+ 661721  4753701    820
+ 661721  4753731    838
+ 661721  4753761    863
+ 661721  4753791    875
+ 661721  4753821    877
+ 661721  4753851    879
+ 661721  4753881    880
+ 661721  4753911    882
+ 661721  4753941    883
+ 661721  4753971    886
+ 661721  4754001    891
+ 661721  4754031    896
+ 661721  4754061    902
+ 661721  4754091    917
+ 661721  4754121    947
+ 661721  4754151    968
+ 661721  4754181    968
+ 661721  4754211    968
+ 661721  4754241    968
+ 661721  4754271    968
+ 661721  4754301    968
+ 661721  4754331    969
+ 661721  4754361    968
+ 661721  4754391    968
+ 661721  4754421    968
+ 661721  4754451    968
+ 661721  4754481    968
+ 661721  4754511    968
+ 661721  4754541    968
+ 661751  4751301   1021
+ 661751  4751331   1021
+ 661751  4751361   1021
+ 661751  4751391   1021
+ 661751  4751421   1021
+ 661751  4751451   1021
+ 661751  4751481   1021
+ 661751  4751511   1022
+ 661751  4751541   1022
+ 661751  4751571   1022
+ 661751  4751601   1022
+ 661751  4751631   1022
+ 661751  4751661   1023
+ 661751  4751691   1023
+ 661751  4751721   1022
+ 661751  4751751   1016
+ 661751  4751781   1000
+ 661751  4751811    986
+ 661751  4751841    974
+ 661751  4751871    962
+ 661751  4751901    950
+ 661751  4751931    939
+ 661751  4751961    926
+ 661751  4751991    913
+ 661751  4752021    905
+ 661751  4752051    896
+ 661751  4752081    890
+ 661751  4752111    883
+ 661751  4752141    879
+ 661751  4752171    876
+ 661751  4752201    874
+ 661751  4752231    871
+ 661751  4752261    869
+ 661751  4752291    867
+ 661751  4752321    866
+ 661751  4752351    865
+ 661751  4752381    863
+ 661751  4752411    862
+ 661751  4752441    863
+ 661751  4752471    865
+ 661751  4752501    867
+ 661751  4752531    862
+ 661751  4752561    854
+ 661751  4752591    850
+ 661751  4752621    843
+ 661751  4752651    835
+ 661751  4752681    831
+ 661751  4752711    824
+ 661751  4752741    815
+ 661751  4752771    811
+ 661751  4752801    812
+ 661751  4752831    818
+ 661751  4752861    829
+ 661751  4752891    843
+ 661751  4752921    860
+ 661751  4752951    862
+ 661751  4752981    864
+ 661751  4753011    866
+ 661751  4753041    868
+ 661751  4753071    869
+ 661751  4753101    869
+ 661751  4753131    869
+ 661751  4753161    869
+ 661751  4753191    869
+ 661751  4753221    869
+ 661751  4753251    869
+ 661751  4753281    870
+ 661751  4753311    870
+ 661751  4753341    871
+ 661751  4753371    870
+ 661751  4753401    870
+ 661751  4753431    870
+ 661751  4753461    870
+ 661751  4753491    870
+ 661751  4753521    861
+ 661751  4753551    844
+ 661751  4753581    809
+ 661751  4753611    809
+ 661751  4753641    809
+ 661751  4753671    809
+ 661751  4753701    820
+ 661751  4753731    837
+ 661751  4753761    859
+ 661751  4753791    872
+ 661751  4753821    877
+ 661751  4753851    878
+ 661751  4753881    880
+ 661751  4753911    882
+ 661751  4753941    884
+ 661751  4753971    889
+ 661751  4754001    893
+ 661751  4754031    897
+ 661751  4754061    901
+ 661751  4754091    917
+ 661751  4754121    946
+ 661751  4754151    968
+ 661751  4754181    968
+ 661751  4754211    968
+ 661751  4754241    968
+ 661751  4754271    969
+ 661751  4754301    969
+ 661751  4754331    969
+ 661751  4754361    968
+ 661751  4754391    968
+ 661751  4754421    969
+ 661751  4754451    969
+ 661751  4754481    968
+ 661751  4754511    968
+ 661751  4754541    968
+ 661781  4751301   1021
+ 661781  4751331   1021
+ 661781  4751361   1021
+ 661781  4751391   1021
+ 661781  4751421   1021
+ 661781  4751451   1021
+ 661781  4751481   1022
+ 661781  4751511   1022
+ 661781  4751541   1022
+ 661781  4751571   1022
+ 661781  4751601   1022
+ 661781  4751631   1022
+ 661781  4751661   1023
+ 661781  4751691   1023
+ 661781  4751721   1022
+ 661781  4751751   1017
+ 661781  4751781   1002
+ 661781  4751811    988
+ 661781  4751841    976
+ 661781  4751871    963
+ 661781  4751901    950
+ 661781  4751931    937
+ 661781  4751961    924
+ 661781  4751991    913
+ 661781  4752021    905
+ 661781  4752051    897
+ 661781  4752081    889
+ 661781  4752111    883
+ 661781  4752141    877
+ 661781  4752171    875
+ 661781  4752201    874
+ 661781  4752231    872
+ 661781  4752261    870
+ 661781  4752291    868
+ 661781  4752321    867
+ 661781  4752351    865
+ 661781  4752381    864
+ 661781  4752411    863
+ 661781  4752441    863
+ 661781  4752471    862
+ 661781  4752501    856
+ 661781  4752531    851
+ 661781  4752561    842
+ 661781  4752591    833
+ 661781  4752621    828
+ 661781  4752651    820
+ 661781  4752681    817
+ 661781  4752711    812
+ 661781  4752741    812
+ 661781  4752771    813
+ 661781  4752801    818
+ 661781  4752831    824
+ 661781  4752861    832
+ 661781  4752891    843
+ 661781  4752921    855
+ 661781  4752951    862
+ 661781  4752981    865
+ 661781  4753011    867
+ 661781  4753041    868
+ 661781  4753071    869
+ 661781  4753101    869
+ 661781  4753131    869
+ 661781  4753161    869
+ 661781  4753191    869
+ 661781  4753221    869
+ 661781  4753251    869
+ 661781  4753281    870
+ 661781  4753311    870
+ 661781  4753341    870
+ 661781  4753371    871
+ 661781  4753401    871
+ 661781  4753431    871
+ 661781  4753461    870
+ 661781  4753491    870
+ 661781  4753521    865
+ 661781  4753551    844
+ 661781  4753581    817
+ 661781  4753611    809
+ 661781  4753641    809
+ 661781  4753671    809
+ 661781  4753701    819
+ 661781  4753731    834
+ 661781  4753761    850
+ 661781  4753791    870
+ 661781  4753821    876
+ 661781  4753851    878
+ 661781  4753881    880
+ 661781  4753911    882
+ 661781  4753941    885
+ 661781  4753971    887
+ 661781  4754001    892
+ 661781  4754031    897
+ 661781  4754061    901
+ 661781  4754091    916
+ 661781  4754121    945
+ 661781  4754151    968
+ 661781  4754181    968
+ 661781  4754211    968
+ 661781  4754241    968
+ 661781  4754271    969
+ 661781  4754301    969
+ 661781  4754331    968
+ 661781  4754361    968
+ 661781  4754391    969
+ 661781  4754421    969
+ 661781  4754451    969
+ 661781  4754481    969
+ 661781  4754511    968
+ 661781  4754541    968
+ 661811  4751301   1021
+ 661811  4751331   1021
+ 661811  4751361   1021
+ 661811  4751391   1021
+ 661811  4751421   1021
+ 661811  4751451   1022
+ 661811  4751481   1022
+ 661811  4751511   1022
+ 661811  4751541   1022
+ 661811  4751571   1023
+ 661811  4751601   1023
+ 661811  4751631   1023
+ 661811  4751661   1024
+ 661811  4751691   1025
+ 661811  4751721   1024
+ 661811  4751751   1020
+ 661811  4751781   1003
+ 661811  4751811    990
+ 661811  4751841    982
+ 661811  4751871    968
+ 661811  4751901    952
+ 661811  4751931    936
+ 661811  4751961    920
+ 661811  4751991    909
+ 661811  4752021    901
+ 661811  4752051    893
+ 661811  4752081    886
+ 661811  4752111    882
+ 661811  4752141    878
+ 661811  4752171    876
+ 661811  4752201    874
+ 661811  4752231    872
+ 661811  4752261    870
+ 661811  4752291    868
+ 661811  4752321    866
+ 661811  4752351    864
+ 661811  4752381    863
+ 661811  4752411    862
+ 661811  4752441    861
+ 661811  4752471    852
+ 661811  4752501    844
+ 661811  4752531    839
+ 661811  4752561    830
+ 661811  4752591    821
+ 661811  4752621    815
+ 661811  4752651    812
+ 661811  4752681    812
+ 661811  4752711    812
+ 661811  4752741    815
+ 661811  4752771    822
+ 661811  4752801    828
+ 661811  4752831    833
+ 661811  4752861    838
+ 661811  4752891    848
+ 661811  4752921    861
+ 661811  4752951    863
+ 661811  4752981    865
+ 661811  4753011    867
+ 661811  4753041    868
+ 661811  4753071    869
+ 661811  4753101    869
+ 661811  4753131    869
+ 661811  4753161    869
+ 661811  4753191    869
+ 661811  4753221    869
+ 661811  4753251    869
+ 661811  4753281    870
+ 661811  4753311    871
+ 661811  4753341    871
+ 661811  4753371    872
+ 661811  4753401    872
+ 661811  4753431    872
+ 661811  4753461    872
+ 661811  4753491    870
+ 661811  4753521    869
+ 661811  4753551    849
+ 661811  4753581    816
+ 661811  4753611    809
+ 661811  4753641    809
+ 661811  4753671    809
+ 661811  4753701    816
+ 661811  4753731    832
+ 661811  4753761    851
+ 661811  4753791    870
+ 661811  4753821    877
+ 661811  4753851    878
+ 661811  4753881    880
+ 661811  4753911    882
+ 661811  4753941    884
+ 661811  4753971    885
+ 661811  4754001    889
+ 661811  4754031    896
+ 661811  4754061    901
+ 661811  4754091    914
+ 661811  4754121    946
+ 661811  4754151    968
+ 661811  4754181    968
+ 661811  4754211    968
+ 661811  4754241    968
+ 661811  4754271    969
+ 661811  4754301    968
+ 661811  4754331    968
+ 661811  4754361    969
+ 661811  4754391    969
+ 661811  4754421    969
+ 661811  4754451    969
+ 661811  4754481    968
+ 661811  4754511    968
+ 661811  4754541    968
+ 661841  4751301   1021
+ 661841  4751331   1021
+ 661841  4751361   1021
+ 661841  4751391   1021
+ 661841  4751421   1022
+ 661841  4751451   1022
+ 661841  4751481   1022
+ 661841  4751511   1022
+ 661841  4751541   1023
+ 661841  4751571   1023
+ 661841  4751601   1024
+ 661841  4751631   1025
+ 661841  4751661   1025
+ 661841  4751691   1026
+ 661841  4751721   1025
+ 661841  4751751   1021
+ 661841  4751781   1006
+ 661841  4751811    991
+ 661841  4751841    982
+ 661841  4751871    966
+ 661841  4751901    951
+ 661841  4751931    934
+ 661841  4751961    918
+ 661841  4751991    907
+ 661841  4752021    899
+ 661841  4752051    894
+ 661841  4752081    888
+ 661841  4752111    883
+ 661841  4752141    879
+ 661841  4752171    876
+ 661841  4752201    874
+ 661841  4752231    872
+ 661841  4752261    870
+ 661841  4752291    868
+ 661841  4752321    867
+ 661841  4752351    862
+ 661841  4752381    862
+ 661841  4752411    861
+ 661841  4752441    851
+ 661841  4752471    841
+ 661841  4752501    832
+ 661841  4752531    825
+ 661841  4752561    817
+ 661841  4752591    812
+ 661841  4752621    812
+ 661841  4752651    812
+ 661841  4752681    818
+ 661841  4752711    822
+ 661841  4752741    827
+ 661841  4752771    834
+ 661841  4752801    842
+ 661841  4752831    846
+ 661841  4752861    852
+ 661841  4752891    859
+ 661841  4752921    862
+ 661841  4752951    863
+ 661841  4752981    865
+ 661841  4753011    867
+ 661841  4753041    868
+ 661841  4753071    869
+ 661841  4753101    869
+ 661841  4753131    869
+ 661841  4753161    869
+ 661841  4753191    869
+ 661841  4753221    869
+ 661841  4753251    869
+ 661841  4753281    870
+ 661841  4753311    870
+ 661841  4753341    871
+ 661841  4753371    872
+ 661841  4753401    871
+ 661841  4753431    872
+ 661841  4753461    872
+ 661841  4753491    871
+ 661841  4753521    869
+ 661841  4753551    853
+ 661841  4753581    817
+ 661841  4753611    809
+ 661841  4753641    809
+ 661841  4753671    809
+ 661841  4753701    809
+ 661841  4753731    831
+ 661841  4753761    849
+ 661841  4753791    869
+ 661841  4753821    877
+ 661841  4753851    878
+ 661841  4753881    879
+ 661841  4753911    881
+ 661841  4753941    882
+ 661841  4753971    883
+ 661841  4754001    884
+ 661841  4754031    884
+ 661841  4754061    901
+ 661841  4754091    914
+ 661841  4754121    947
+ 661841  4754151    968
+ 661841  4754181    968
+ 661841  4754211    968
+ 661841  4754241    968
+ 661841  4754271    968
+ 661841  4754301    968
+ 661841  4754331    968
+ 661841  4754361    968
+ 661841  4754391    969
+ 661841  4754421    968
+ 661841  4754451    968
+ 661841  4754481    968
+ 661841  4754511    968
+ 661841  4754541    968
+ 661871  4751301   1021
+ 661871  4751331   1021
+ 661871  4751361   1021
+ 661871  4751391   1022
+ 661871  4751421   1022
+ 661871  4751451   1022
+ 661871  4751481   1022
+ 661871  4751511   1022
+ 661871  4751541   1023
+ 661871  4751571   1023
+ 661871  4751601   1024
+ 661871  4751631   1025
+ 661871  4751661   1025
+ 661871  4751691   1027
+ 661871  4751721   1025
+ 661871  4751751   1022
+ 661871  4751781   1012
+ 661871  4751811    994
+ 661871  4751841    984
+ 661871  4751871    967
+ 661871  4751901    952
+ 661871  4751931    938
+ 661871  4751961    924
+ 661871  4751991    911
+ 661871  4752021    902
+ 661871  4752051    894
+ 661871  4752081    888
+ 661871  4752111    883
+ 661871  4752141    879
+ 661871  4752171    876
+ 661871  4752201    874
+ 661871  4752231    872
+ 661871  4752261    869
+ 661871  4752291    868
+ 661871  4752321    866
+ 661871  4752351    863
+ 661871  4752381    862
+ 661871  4752411    862
+ 661871  4752441    847
+ 661871  4752471    831
+ 661871  4752501    822
+ 661871  4752531    814
+ 661871  4752561    812
+ 661871  4752591    812
+ 661871  4752621    817
+ 661871  4752651    824
+ 661871  4752681    833
+ 661871  4752711    837
+ 661871  4752741    841
+ 661871  4752771    845
+ 661871  4752801    853
+ 661871  4752831    860
+ 661871  4752861    861
+ 661871  4752891    862
+ 661871  4752921    862
+ 661871  4752951    864
+ 661871  4752981    866
+ 661871  4753011    867
+ 661871  4753041    869
+ 661871  4753071    869
+ 661871  4753101    869
+ 661871  4753131    868
+ 661871  4753161    868
+ 661871  4753191    869
+ 661871  4753221    869
+ 661871  4753251    869
+ 661871  4753281    870
+ 661871  4753311    870
+ 661871  4753341    872
+ 661871  4753371    871
+ 661871  4753401    871
+ 661871  4753431    872
+ 661871  4753461    873
+ 661871  4753491    874
+ 661871  4753521    865
+ 661871  4753551    845
+ 661871  4753581    818
+ 661871  4753611    809
+ 661871  4753641    809
+ 661871  4753671    809
+ 661871  4753701    817
+ 661871  4753731    831
+ 661871  4753761    849
+ 661871  4753791    868
+ 661871  4753821    877
+ 661871  4753851    878
+ 661871  4753881    879
+ 661871  4753911    881
+ 661871  4753941    882
+ 661871  4753971    882
+ 661871  4754001    883
+ 661871  4754031    884
+ 661871  4754061    902
+ 661871  4754091    919
+ 661871  4754121    948
+ 661871  4754151    968
+ 661871  4754181    968
+ 661871  4754211    968
+ 661871  4754241    967
+ 661871  4754271    968
+ 661871  4754301    968
+ 661871  4754331    968
+ 661871  4754361    967
+ 661871  4754391    968
+ 661871  4754421    968
+ 661871  4754451    968
+ 661871  4754481    969
+ 661871  4754511    969
+ 661871  4754541    969
+ 661901  4751301   1021
+ 661901  4751331   1021
+ 661901  4751361   1022
+ 661901  4751391   1022
+ 661901  4751421   1022
+ 661901  4751451   1022
+ 661901  4751481   1022
+ 661901  4751511   1023
+ 661901  4751541   1023
+ 661901  4751571   1024
+ 661901  4751601   1024
+ 661901  4751631   1025
+ 661901  4751661   1025
+ 661901  4751691   1026
+ 661901  4751721   1026
+ 661901  4751751   1023
+ 661901  4751781   1016
+ 661901  4751811    997
+ 661901  4751841    985
+ 661901  4751871    968
+ 661901  4751901    951
+ 661901  4751931    935
+ 661901  4751961    921
+ 661901  4751991    911
+ 661901  4752021    904
+ 661901  4752051    896
+ 661901  4752081    889
+ 661901  4752111    884
+ 661901  4752141    880
+ 661901  4752171    877
+ 661901  4752201    874
+ 661901  4752231    872
+ 661901  4752261    869
+ 661901  4752291    867
+ 661901  4752321    865
+ 661901  4752351    864
+ 661901  4752381    863
+ 661901  4752411    860
+ 661901  4752441    843
+ 661901  4752471    825
+ 661901  4752501    816
+ 661901  4752531    812
+ 661901  4752561    814
+ 661901  4752591    820
+ 661901  4752621    828
+ 661901  4752651    835
+ 661901  4752681    841
+ 661901  4752711    851
+ 661901  4752741    858
+ 661901  4752771    855
+ 661901  4752801    857
+ 661901  4752831    861
+ 661901  4752861    862
+ 661901  4752891    862
+ 661901  4752921    863
+ 661901  4752951    864
+ 661901  4752981    866
+ 661901  4753011    868
+ 661901  4753041    869
+ 661901  4753071    869
+ 661901  4753101    869
+ 661901  4753131    868
+ 661901  4753161    868
+ 661901  4753191    869
+ 661901  4753221    869
+ 661901  4753251    869
+ 661901  4753281    870
+ 661901  4753311    870
+ 661901  4753341    871
+ 661901  4753371    871
+ 661901  4753401    872
+ 661901  4753431    871
+ 661901  4753461    871
+ 661901  4753491    872
+ 661901  4753521    859
+ 661901  4753551    835
+ 661901  4753581    817
+ 661901  4753611    809
+ 661901  4753641    809
+ 661901  4753671    809
+ 661901  4753701    819
+ 661901  4753731    834
+ 661901  4753761    851
+ 661901  4753791    870
+ 661901  4753821    877
+ 661901  4753851    878
+ 661901  4753881    879
+ 661901  4753911    879
+ 661901  4753941    881
+ 661901  4753971    882
+ 661901  4754001    883
+ 661901  4754031    886
+ 661901  4754061    904
+ 661901  4754091    926
+ 661901  4754121    952
+ 661901  4754151    968
+ 661901  4754181    968
+ 661901  4754211    967
+ 661901  4754241    967
+ 661901  4754271    968
+ 661901  4754301    967
+ 661901  4754331    968
+ 661901  4754361    967
+ 661901  4754391    968
+ 661901  4754421    968
+ 661901  4754451    970
+ 661901  4754481    969
+ 661901  4754511    969
+ 661901  4754541    969
+ 661931  4751301   1021
+ 661931  4751331   1022
+ 661931  4751361   1022
+ 661931  4751391   1022
+ 661931  4751421   1022
+ 661931  4751451   1022
+ 661931  4751481   1023
+ 661931  4751511   1023
+ 661931  4751541   1023
+ 661931  4751571   1024
+ 661931  4751601   1024
+ 661931  4751631   1025
+ 661931  4751661   1025
+ 661931  4751691   1026
+ 661931  4751721   1025
+ 661931  4751751   1025
+ 661931  4751781   1021
+ 661931  4751811   1005
+ 661931  4751841    985
+ 661931  4751871    966
+ 661931  4751901    950
+ 661931  4751931    933
+ 661931  4751961    916
+ 661931  4751991    906
+ 661931  4752021    900
+ 661931  4752051    893
+ 661931  4752081    889
+ 661931  4752111    884
+ 661931  4752141    880
+ 661931  4752171    877
+ 661931  4752201    874
+ 661931  4752231    871
+ 661931  4752261    869
+ 661931  4752291    867
+ 661931  4752321    864
+ 661931  4752351    862
+ 661931  4752381    862
+ 661931  4752411    852
+ 661931  4752441    838
+ 661931  4752471    823
+ 661931  4752501    815
+ 661931  4752531    812
+ 661931  4752561    817
+ 661931  4752591    828
+ 661931  4752621    835
+ 661931  4752651    843
+ 661931  4752681    853
+ 661931  4752711    861
+ 661931  4752741    862
+ 661931  4752771    862
+ 661931  4752801    861
+ 661931  4752831    861
+ 661931  4752861    862
+ 661931  4752891    863
+ 661931  4752921    863
+ 661931  4752951    865
+ 661931  4752981    866
+ 661931  4753011    868
+ 661931  4753041    868
+ 661931  4753071    869
+ 661931  4753101    868
+ 661931  4753131    868
+ 661931  4753161    868
+ 661931  4753191    869
+ 661931  4753221    869
+ 661931  4753251    869
+ 661931  4753281    870
+ 661931  4753311    870
+ 661931  4753341    870
+ 661931  4753371    872
+ 661931  4753401    872
+ 661931  4753431    872
+ 661931  4753461    870
+ 661931  4753491    869
+ 661931  4753521    846
+ 661931  4753551    824
+ 661931  4753581    809
+ 661931  4753611    809
+ 661931  4753641    809
+ 661931  4753671    811
+ 661931  4753701    821
+ 661931  4753731    837
+ 661931  4753761    854
+ 661931  4753791    871
+ 661931  4753821    877
+ 661931  4753851    878
+ 661931  4753881    879
+ 661931  4753911    880
+ 661931  4753941    881
+ 661931  4753971    882
+ 661931  4754001    883
+ 661931  4754031    889
+ 661931  4754061    906
+ 661931  4754091    931
+ 661931  4754121    957
+ 661931  4754151    968
+ 661931  4754181    967
+ 661931  4754211    967
+ 661931  4754241    966
+ 661931  4754271    966
+ 661931  4754301    967
+ 661931  4754331    967
+ 661931  4754361    968
+ 661931  4754391    969
+ 661931  4754421    969
+ 661931  4754451    969
+ 661931  4754481    970
+ 661931  4754511    970
+ 661931  4754541    970
+ 661961  4751301   1022
+ 661961  4751331   1021
+ 661961  4751361   1022
+ 661961  4751391   1022
+ 661961  4751421   1022
+ 661961  4751451   1022
+ 661961  4751481   1022
+ 661961  4751511   1022
+ 661961  4751541   1022
+ 661961  4751571   1023
+ 661961  4751601   1023
+ 661961  4751631   1023
+ 661961  4751661   1024
+ 661961  4751691   1024
+ 661961  4751721   1024
+ 661961  4751751   1025
+ 661961  4751781   1024
+ 661961  4751811   1002
+ 661961  4751841    986
+ 661961  4751871    968
+ 661961  4751901    953
+ 661961  4751931    933
+ 661961  4751961    916
+ 661961  4751991    907
+ 661961  4752021    900
+ 661961  4752051    891
+ 661961  4752081    887
+ 661961  4752111    883
+ 661961  4752141    880
+ 661961  4752171    877
+ 661961  4752201    874
+ 661961  4752231    871
+ 661961  4752261    869
+ 661961  4752291    867
+ 661961  4752321    863
+ 661961  4752351    862
+ 661961  4752381    857
+ 661961  4752411    844
+ 661961  4752441    831
+ 661961  4752471    821
+ 661961  4752501    814
+ 661961  4752531    812
+ 661961  4752561    820
+ 661961  4752591    832
+ 661961  4752621    841
+ 661961  4752651    852
+ 661961  4752681    861
+ 661961  4752711    862
+ 661961  4752741    862
+ 661961  4752771    862
+ 661961  4752801    862
+ 661961  4752831    862
+ 661961  4752861    862
+ 661961  4752891    863
+ 661961  4752921    864
+ 661961  4752951    865
+ 661961  4752981    866
+ 661961  4753011    867
+ 661961  4753041    868
+ 661961  4753071    867
+ 661961  4753101    867
+ 661961  4753131    868
+ 661961  4753161    868
+ 661961  4753191    869
+ 661961  4753221    869
+ 661961  4753251    869
+ 661961  4753281    870
+ 661961  4753311    870
+ 661961  4753341    870
+ 661961  4753371    870
+ 661961  4753401    872
+ 661961  4753431    872
+ 661961  4753461    873
+ 661961  4753491    859
+ 661961  4753521    830
+ 661961  4753551    809
+ 661961  4753581    809
+ 661961  4753611    809
+ 661961  4753641    809
+ 661961  4753671    815
+ 661961  4753701    830
+ 661961  4753731    842
+ 661961  4753761    860
+ 661961  4753791    875
+ 661961  4753821    877
+ 661961  4753851    878
+ 661961  4753881    879
+ 661961  4753911    880
+ 661961  4753941    881
+ 661961  4753971    882
+ 661961  4754001    883
+ 661961  4754031    892
+ 661961  4754061    909
+ 661961  4754091    937
+ 661961  4754121    963
+ 661961  4754151    967
+ 661961  4754181    965
+ 661961  4754211    966
+ 661961  4754241    966
+ 661961  4754271    966
+ 661961  4754301    967
+ 661961  4754331    967
+ 661961  4754361    967
+ 661961  4754391    969
+ 661961  4754421    969
+ 661961  4754451    969
+ 661961  4754481    969
+ 661961  4754511    970
+ 661961  4754541    970
+ 661991  4751301   1022
+ 661991  4751331   1023
+ 661991  4751361   1023
+ 661991  4751391   1022
+ 661991  4751421   1022
+ 661991  4751451   1022
+ 661991  4751481   1022
+ 661991  4751511   1023
+ 661991  4751541   1023
+ 661991  4751571   1023
+ 661991  4751601   1023
+ 661991  4751631   1023
+ 661991  4751661   1023
+ 661991  4751691   1023
+ 661991  4751721   1023
+ 661991  4751751   1024
+ 661991  4751781   1024
+ 661991  4751811   1003
+ 661991  4751841    986
+ 661991  4751871    969
+ 661991  4751901    951
+ 661991  4751931    932
+ 661991  4751961    914
+ 661991  4751991    907
+ 661991  4752021    897
+ 661991  4752051    890
+ 661991  4752081    887
+ 661991  4752111    884
+ 661991  4752141    880
+ 661991  4752171    877
+ 661991  4752201    874
+ 661991  4752231    871
+ 661991  4752261    868
+ 661991  4752291    866
+ 661991  4752321    862
+ 661991  4752351    861
+ 661991  4752381    857
+ 661991  4752411    840
+ 661991  4752441    829
+ 661991  4752471    821
+ 661991  4752501    815
+ 661991  4752531    814
+ 661991  4752561    821
+ 661991  4752591    834
+ 661991  4752621    842
+ 661991  4752651    856
+ 661991  4752681    862
+ 661991  4752711    862
+ 661991  4752741    862
+ 661991  4752771    862
+ 661991  4752801    862
+ 661991  4752831    862
+ 661991  4752861    863
+ 661991  4752891    863
+ 661991  4752921    864
+ 661991  4752951    865
+ 661991  4752981    866
+ 661991  4753011    867
+ 661991  4753041    867
+ 661991  4753071    867
+ 661991  4753101    867
+ 661991  4753131    868
+ 661991  4753161    868
+ 661991  4753191    869
+ 661991  4753221    869
+ 661991  4753251    869
+ 661991  4753281    870
+ 661991  4753311    870
+ 661991  4753341    870
+ 661991  4753371    870
+ 661991  4753401    870
+ 661991  4753431    872
+ 661991  4753461    871
+ 661991  4753491    854
+ 661991  4753521    809
+ 661991  4753551    809
+ 661991  4753581    809
+ 661991  4753611    809
+ 661991  4753641    813
+ 661991  4753671    829
+ 661991  4753701    841
+ 661991  4753731    856
+ 661991  4753761    871
+ 661991  4753791    877
+ 661991  4753821    878
+ 661991  4753851    878
+ 661991  4753881    879
+ 661991  4753911    880
+ 661991  4753941    881
+ 661991  4753971    882
+ 661991  4754001    884
+ 661991  4754031    896
+ 661991  4754061    912
+ 661991  4754091    941
+ 661991  4754121    967
+ 661991  4754151    963
+ 661991  4754181    963
+ 661991  4754211    964
+ 661991  4754241    964
+ 661991  4754271    965
+ 661991  4754301    966
+ 661991  4754331    967
+ 661991  4754361    967
+ 661991  4754391    968
+ 661991  4754421    968
+ 661991  4754451    968
+ 661991  4754481    968
+ 661991  4754511    968
+ 661991  4754541    968
+ 662021  4751301   1023
+ 662021  4751331   1023
+ 662021  4751361   1023
+ 662021  4751391   1023
+ 662021  4751421   1022
+ 662021  4751451   1022
+ 662021  4751481   1022
+ 662021  4751511   1023
+ 662021  4751541   1023
+ 662021  4751571   1023
+ 662021  4751601   1023
+ 662021  4751631   1023
+ 662021  4751661   1023
+ 662021  4751691   1024
+ 662021  4751721   1023
+ 662021  4751751   1023
+ 662021  4751781   1022
+ 662021  4751811   1001
+ 662021  4751841    983
+ 662021  4751871    965
+ 662021  4751901    946
+ 662021  4751931    930
+ 662021  4751961    913
+ 662021  4751991    905
+ 662021  4752021    897
+ 662021  4752051    890
+ 662021  4752081    886
+ 662021  4752111    883
+ 662021  4752141    880
+ 662021  4752171    877
+ 662021  4752201    874
+ 662021  4752231    870
+ 662021  4752261    868
+ 662021  4752291    866
+ 662021  4752321    863
+ 662021  4752351    863
+ 662021  4752381    861
+ 662021  4752411    843
+ 662021  4752441    826
+ 662021  4752471    820
+ 662021  4752501    816
+ 662021  4752531    814
+ 662021  4752561    821
+ 662021  4752591    833
+ 662021  4752621    841
+ 662021  4752651    852
+ 662021  4752681    862
+ 662021  4752711    861
+ 662021  4752741    862
+ 662021  4752771    863
+ 662021  4752801    863
+ 662021  4752831    863
+ 662021  4752861    863
+ 662021  4752891    864
+ 662021  4752921    864
+ 662021  4752951    865
+ 662021  4752981    866
+ 662021  4753011    866
+ 662021  4753041    866
+ 662021  4753071    867
+ 662021  4753101    867
+ 662021  4753131    868
+ 662021  4753161    868
+ 662021  4753191    869
+ 662021  4753221    869
+ 662021  4753251    869
+ 662021  4753281    870
+ 662021  4753311    870
+ 662021  4753341    870
+ 662021  4753371    870
+ 662021  4753401    870
+ 662021  4753431    870
+ 662021  4753461    869
+ 662021  4753491    838
+ 662021  4753521    809
+ 662021  4753551    809
+ 662021  4753581    809
+ 662021  4753611    809
+ 662021  4753641    824
+ 662021  4753671    838
+ 662021  4753701    859
+ 662021  4753731    868
+ 662021  4753761    877
+ 662021  4753791    877
+ 662021  4753821    878
+ 662021  4753851    878
+ 662021  4753881    879
+ 662021  4753911    880
+ 662021  4753941    881
+ 662021  4753971    882
+ 662021  4754001    884
+ 662021  4754031    899
+ 662021  4754061    916
+ 662021  4754091    944
+ 662021  4754121    954
+ 662021  4754151    960
+ 662021  4754181    962
+ 662021  4754211    964
+ 662021  4754241    965
+ 662021  4754271    965
+ 662021  4754301    966
+ 662021  4754331    967
+ 662021  4754361    967
+ 662021  4754391    968
+ 662021  4754421    968
+ 662021  4754451    968
+ 662021  4754481    969
+ 662021  4754511    969
+ 662021  4754541    969
+ 662051  4751301   1023
+ 662051  4751331   1023
+ 662051  4751361   1023
+ 662051  4751391   1023
+ 662051  4751421   1023
+ 662051  4751451   1023
+ 662051  4751481   1022
+ 662051  4751511   1023
+ 662051  4751541   1023
+ 662051  4751571   1023
+ 662051  4751601   1023
+ 662051  4751631   1023
+ 662051  4751661   1023
+ 662051  4751691   1023
+ 662051  4751721   1024
+ 662051  4751751   1024
+ 662051  4751781   1019
+ 662051  4751811    999
+ 662051  4751841    984
+ 662051  4751871    966
+ 662051  4751901    948
+ 662051  4751931    930
+ 662051  4751961    914
+ 662051  4751991    904
+ 662051  4752021    898
+ 662051  4752051    889
+ 662051  4752081    884
+ 662051  4752111    881
+ 662051  4752141    878
+ 662051  4752171    876
+ 662051  4752201    873
+ 662051  4752231    870
+ 662051  4752261    868
+ 662051  4752291    866
+ 662051  4752321    865
+ 662051  4752351    863
+ 662051  4752381    862
+ 662051  4752411    853
+ 662051  4752441    834
+ 662051  4752471    822
+ 662051  4752501    816
+ 662051  4752531    814
+ 662051  4752561    820
+ 662051  4752591    832
+ 662051  4752621    841
+ 662051  4752651    850
+ 662051  4752681    860
+ 662051  4752711    861
+ 662051  4752741    862
+ 662051  4752771    863
+ 662051  4752801    863
+ 662051  4752831    863
+ 662051  4752861    864
+ 662051  4752891    864
+ 662051  4752921    865
+ 662051  4752951    865
+ 662051  4752981    866
+ 662051  4753011    866
+ 662051  4753041    866
+ 662051  4753071    867
+ 662051  4753101    868
+ 662051  4753131    868
+ 662051  4753161    869
+ 662051  4753191    869
+ 662051  4753221    869
+ 662051  4753251    870
+ 662051  4753281    870
+ 662051  4753311    870
+ 662051  4753341    870
+ 662051  4753371    870
+ 662051  4753401    870
+ 662051  4753431    869
+ 662051  4753461    867
+ 662051  4753491    809
+ 662051  4753521    809
+ 662051  4753551    809
+ 662051  4753581    809
+ 662051  4753611    809
+ 662051  4753641    828
+ 662051  4753671    846
+ 662051  4753701    868
+ 662051  4753731    876
+ 662051  4753761    877
+ 662051  4753791    878
+ 662051  4753821    878
+ 662051  4753851    879
+ 662051  4753881    880
+ 662051  4753911    881
+ 662051  4753941    882
+ 662051  4753971    883
+ 662051  4754001    887
+ 662051  4754031    905
+ 662051  4754061    922
+ 662051  4754091    948
+ 662051  4754121    955
+ 662051  4754151    958
+ 662051  4754181    961
+ 662051  4754211    963
+ 662051  4754241    965
+ 662051  4754271    965
+ 662051  4754301    966
+ 662051  4754331    967
+ 662051  4754361    967
+ 662051  4754391    968
+ 662051  4754421    968
+ 662051  4754451    968
+ 662051  4754481    969
+ 662051  4754511    969
+ 662051  4754541    969
+ 662081  4751301   1023
+ 662081  4751331   1023
+ 662081  4751361   1024
+ 662081  4751391   1023
+ 662081  4751421   1023
+ 662081  4751451   1024
+ 662081  4751481   1024
+ 662081  4751511   1024
+ 662081  4751541   1025
+ 662081  4751571   1024
+ 662081  4751601   1024
+ 662081  4751631   1024
+ 662081  4751661   1025
+ 662081  4751691   1025
+ 662081  4751721   1026
+ 662081  4751751   1026
+ 662081  4751781   1020
+ 662081  4751811    999
+ 662081  4751841    983
+ 662081  4751871    965
+ 662081  4751901    946
+ 662081  4751931    933
+ 662081  4751961    914
+ 662081  4751991    906
+ 662081  4752021    897
+ 662081  4752051    889
+ 662081  4752081    884
+ 662081  4752111    879
+ 662081  4752141    876
+ 662081  4752171    874
+ 662081  4752201    872
+ 662081  4752231    869
+ 662081  4752261    867
+ 662081  4752291    865
+ 662081  4752321    862
+ 662081  4752351    863
+ 662081  4752381    862
+ 662081  4752411    853
+ 662081  4752441    836
+ 662081  4752471    823
+ 662081  4752501    816
+ 662081  4752531    814
+ 662081  4752561    821
+ 662081  4752591    835
+ 662081  4752621    847
+ 662081  4752651    860
+ 662081  4752681    861
+ 662081  4752711    862
+ 662081  4752741    862
+ 662081  4752771    863
+ 662081  4752801    863
+ 662081  4752831    864
+ 662081  4752861    864
+ 662081  4752891    864
+ 662081  4752921    865
+ 662081  4752951    866
+ 662081  4752981    866
+ 662081  4753011    866
+ 662081  4753041    867
+ 662081  4753071    867
+ 662081  4753101    868
+ 662081  4753131    868
+ 662081  4753161    869
+ 662081  4753191    869
+ 662081  4753221    869
+ 662081  4753251    869
+ 662081  4753281    870
+ 662081  4753311    870
+ 662081  4753341    871
+ 662081  4753371    870
+ 662081  4753401    870
+ 662081  4753431    870
+ 662081  4753461    866
+ 662081  4753491    809
+ 662081  4753521    809
+ 662081  4753551    809
+ 662081  4753581    809
+ 662081  4753611    809
+ 662081  4753641    830
+ 662081  4753671    847
+ 662081  4753701    866
+ 662081  4753731    876
+ 662081  4753761    877
+ 662081  4753791    878
+ 662081  4753821    878
+ 662081  4753851    879
+ 662081  4753881    880
+ 662081  4753911    880
+ 662081  4753941    882
+ 662081  4753971    883
+ 662081  4754001    894
+ 662081  4754031    910
+ 662081  4754061    927
+ 662081  4754091    952
+ 662081  4754121    967
+ 662081  4754151    960
+ 662081  4754181    962
+ 662081  4754211    964
+ 662081  4754241    965
+ 662081  4754271    965
+ 662081  4754301    967
+ 662081  4754331    967
+ 662081  4754361    968
+ 662081  4754391    968
+ 662081  4754421    969
+ 662081  4754451    969
+ 662081  4754481    969
+ 662081  4754511    970
+ 662081  4754541    970
+ 662111  4751301   1022
+ 662111  4751331   1023
+ 662111  4751361   1023
+ 662111  4751391   1023
+ 662111  4751421   1024
+ 662111  4751451   1024
+ 662111  4751481   1023
+ 662111  4751511   1024
+ 662111  4751541   1024
+ 662111  4751571   1025
+ 662111  4751601   1024
+ 662111  4751631   1025
+ 662111  4751661   1025
+ 662111  4751691   1025
+ 662111  4751721   1026
+ 662111  4751751   1026
+ 662111  4751781   1020
+ 662111  4751811   1000
+ 662111  4751841    985
+ 662111  4751871    967
+ 662111  4751901    949
+ 662111  4751931    933
+ 662111  4751961    916
+ 662111  4751991    908
+ 662111  4752021    899
+ 662111  4752051    890
+ 662111  4752081    884
+ 662111  4752111    880
+ 662111  4752141    877
+ 662111  4752171    874
+ 662111  4752201    871
+ 662111  4752231    868
+ 662111  4752261    864
+ 662111  4752291    861
+ 662111  4752321    862
+ 662111  4752351    862
+ 662111  4752381    861
+ 662111  4752411    847
+ 662111  4752441    831
+ 662111  4752471    821
+ 662111  4752501    817
+ 662111  4752531    817
+ 662111  4752561    825
+ 662111  4752591    838
+ 662111  4752621    850
+ 662111  4752651    861
+ 662111  4752681    862
+ 662111  4752711    862
+ 662111  4752741    863
+ 662111  4752771    863
+ 662111  4752801    864
+ 662111  4752831    864
+ 662111  4752861    864
+ 662111  4752891    865
+ 662111  4752921    865
+ 662111  4752951    866
+ 662111  4752981    866
+ 662111  4753011    866
+ 662111  4753041    867
+ 662111  4753071    867
+ 662111  4753101    868
+ 662111  4753131    868
+ 662111  4753161    868
+ 662111  4753191    869
+ 662111  4753221    869
+ 662111  4753251    869
+ 662111  4753281    870
+ 662111  4753311    870
+ 662111  4753341    871
+ 662111  4753371    871
+ 662111  4753401    871
+ 662111  4753431    870
+ 662111  4753461    859
+ 662111  4753491    809
+ 662111  4753521    809
+ 662111  4753551    809
+ 662111  4753581    809
+ 662111  4753611    809
+ 662111  4753641    830
+ 662111  4753671    848
+ 662111  4753701    868
+ 662111  4753731    877
+ 662111  4753761    877
+ 662111  4753791    878
+ 662111  4753821    878
+ 662111  4753851    877
+ 662111  4753881    878
+ 662111  4753911    880
+ 662111  4753941    882
+ 662111  4753971    886
+ 662111  4754001    901
+ 662111  4754031    919
+ 662111  4754061    937
+ 662111  4754091    959
+ 662111  4754121    968
+ 662111  4754151    967
+ 662111  4754181    965
+ 662111  4754211    964
+ 662111  4754241    965
+ 662111  4754271    965
+ 662111  4754301    966
+ 662111  4754331    967
+ 662111  4754361    968
+ 662111  4754391    969
+ 662111  4754421    969
+ 662111  4754451    969
+ 662111  4754481    969
+ 662111  4754511    970
+ 662111  4754541    971
+ 662141  4751301   1022
+ 662141  4751331   1022
+ 662141  4751361   1023
+ 662141  4751391   1023
+ 662141  4751421   1023
+ 662141  4751451   1023
+ 662141  4751481   1024
+ 662141  4751511   1024
+ 662141  4751541   1024
+ 662141  4751571   1025
+ 662141  4751601   1025
+ 662141  4751631   1026
+ 662141  4751661   1026
+ 662141  4751691   1026
+ 662141  4751721   1026
+ 662141  4751751   1025
+ 662141  4751781   1019
+ 662141  4751811   1001
+ 662141  4751841    986
+ 662141  4751871    968
+ 662141  4751901    951
+ 662141  4751931    932
+ 662141  4751961    917
+ 662141  4751991    908
+ 662141  4752021    897
+ 662141  4752051    890
+ 662141  4752081    885
+ 662141  4752111    882
+ 662141  4752141    877
+ 662141  4752171    875
+ 662141  4752201    872
+ 662141  4752231    869
+ 662141  4752261    865
+ 662141  4752291    862
+ 662141  4752321    860
+ 662141  4752351    860
+ 662141  4752381    854
+ 662141  4752411    842
+ 662141  4752441    826
+ 662141  4752471    818
+ 662141  4752501    817
+ 662141  4752531    817
+ 662141  4752561    834
+ 662141  4752591    846
+ 662141  4752621    857
+ 662141  4752651    861
+ 662141  4752681    862
+ 662141  4752711    862
+ 662141  4752741    863
+ 662141  4752771    863
+ 662141  4752801    864
+ 662141  4752831    864
+ 662141  4752861    865
+ 662141  4752891    865
+ 662141  4752921    865
+ 662141  4752951    866
+ 662141  4752981    866
+ 662141  4753011    866
+ 662141  4753041    867
+ 662141  4753071    867
+ 662141  4753101    867
+ 662141  4753131    868
+ 662141  4753161    868
+ 662141  4753191    868
+ 662141  4753221    869
+ 662141  4753251    869
+ 662141  4753281    870
+ 662141  4753311    870
+ 662141  4753341    871
+ 662141  4753371    870
+ 662141  4753401    871
+ 662141  4753431    868
+ 662141  4753461    846
+ 662141  4753491    809
+ 662141  4753521    809
+ 662141  4753551    809
+ 662141  4753581    809
+ 662141  4753611    809
+ 662141  4753641    831
+ 662141  4753671    849
+ 662141  4753701    865
+ 662141  4753731    877
+ 662141  4753761    877
+ 662141  4753791    877
+ 662141  4753821    876
+ 662141  4753851    876
+ 662141  4753881    877
+ 662141  4753911    880
+ 662141  4753941    883
+ 662141  4753971    893
+ 662141  4754001    905
+ 662141  4754031    924
+ 662141  4754061    944
+ 662141  4754091    968
+ 662141  4754121    968
+ 662141  4754151    967
+ 662141  4754181    967
+ 662141  4754211    966
+ 662141  4754241    966
+ 662141  4754271    966
+ 662141  4754301    967
+ 662141  4754331    967
+ 662141  4754361    968
+ 662141  4754391    968
+ 662141  4754421    969
+ 662141  4754451    969
+ 662141  4754481    970
+ 662141  4754511    971
+ 662141  4754541    970
+ 662171  4751301   1021
+ 662171  4751331   1022
+ 662171  4751361   1022
+ 662171  4751391   1023
+ 662171  4751421   1023
+ 662171  4751451   1023
+ 662171  4751481   1023
+ 662171  4751511   1023
+ 662171  4751541   1024
+ 662171  4751571   1025
+ 662171  4751601   1024
+ 662171  4751631   1025
+ 662171  4751661   1026
+ 662171  4751691   1025
+ 662171  4751721   1024
+ 662171  4751751   1023
+ 662171  4751781   1015
+ 662171  4751811   1001
+ 662171  4751841    984
+ 662171  4751871    966
+ 662171  4751901    946
+ 662171  4751931    930
+ 662171  4751961    913
+ 662171  4751991    904
+ 662171  4752021    897
+ 662171  4752051    892
+ 662171  4752081    888
+ 662171  4752111    884
+ 662171  4752141    878
+ 662171  4752171    876
+ 662171  4752201    876
+ 662171  4752231    871
+ 662171  4752261    867
+ 662171  4752291    864
+ 662171  4752321    862
+ 662171  4752351    863
+ 662171  4752381    862
+ 662171  4752411    846
+ 662171  4752441    825
+ 662171  4752471    818
+ 662171  4752501    817
+ 662171  4752531    826
+ 662171  4752561    840
+ 662171  4752591    854
+ 662171  4752621    861
+ 662171  4752651    862
+ 662171  4752681    862
+ 662171  4752711    863
+ 662171  4752741    863
+ 662171  4752771    863
+ 662171  4752801    864
+ 662171  4752831    864
+ 662171  4752861    865
+ 662171  4752891    865
+ 662171  4752921    866
+ 662171  4752951    866
+ 662171  4752981    866
+ 662171  4753011    866
+ 662171  4753041    867
+ 662171  4753071    867
+ 662171  4753101    867
+ 662171  4753131    868
+ 662171  4753161    868
+ 662171  4753191    869
+ 662171  4753221    869
+ 662171  4753251    869
+ 662171  4753281    870
+ 662171  4753311    870
+ 662171  4753341    870
+ 662171  4753371    871
+ 662171  4753401    871
+ 662171  4753431    861
+ 662171  4753461    828
+ 662171  4753491    809
+ 662171  4753521    809
+ 662171  4753551    809
+ 662171  4753581    809
+ 662171  4753611    819
+ 662171  4753641    838
+ 662171  4753671    854
+ 662171  4753701    869
+ 662171  4753731    877
+ 662171  4753761    877
+ 662171  4753791    877
+ 662171  4753821    876
+ 662171  4753851    876
+ 662171  4753881    877
+ 662171  4753911    881
+ 662171  4753941    884
+ 662171  4753971    898
+ 662171  4754001    916
+ 662171  4754031    931
+ 662171  4754061    951
+ 662171  4754091    968
+ 662171  4754121    968
+ 662171  4754151    968
+ 662171  4754181    967
+ 662171  4754211    968
+ 662171  4754241    966
+ 662171  4754271    967
+ 662171  4754301    968
+ 662171  4754331    967
+ 662171  4754361    968
+ 662171  4754391    968
+ 662171  4754421    969
+ 662171  4754451    970
+ 662171  4754481    969
+ 662171  4754511    971
+ 662171  4754541    971
+ 662201  4751301   1020
+ 662201  4751331   1021
+ 662201  4751361   1021
+ 662201  4751391   1022
+ 662201  4751421   1022
+ 662201  4751451   1022
+ 662201  4751481   1023
+ 662201  4751511   1023
+ 662201  4751541   1023
+ 662201  4751571   1024
+ 662201  4751601   1024
+ 662201  4751631   1024
+ 662201  4751661   1026
+ 662201  4751691   1025
+ 662201  4751721   1023
+ 662201  4751751   1019
+ 662201  4751781   1011
+ 662201  4751811    999
+ 662201  4751841    981
+ 662201  4751871    963
+ 662201  4751901    943
+ 662201  4751931    928
+ 662201  4751961    913
+ 662201  4751991    901
+ 662201  4752021    896
+ 662201  4752051    893
+ 662201  4752081    888
+ 662201  4752111    884
+ 662201  4752141    881
+ 662201  4752171    880
+ 662201  4752201    877
+ 662201  4752231    873
+ 662201  4752261    869
+ 662201  4752291    867
+ 662201  4752321    865
+ 662201  4752351    863
+ 662201  4752381    859
+ 662201  4752411    841
+ 662201  4752441    823
+ 662201  4752471    818
+ 662201  4752501    817
+ 662201  4752531    828
+ 662201  4752561    839
+ 662201  4752591    848
+ 662201  4752621    860
+ 662201  4752651    862
+ 662201  4752681    862
+ 662201  4752711    863
+ 662201  4752741    863
+ 662201  4752771    863
+ 662201  4752801    864
+ 662201  4752831    865
+ 662201  4752861    865
+ 662201  4752891    866
+ 662201  4752921    866
+ 662201  4752951    866
+ 662201  4752981    866
+ 662201  4753011    867
+ 662201  4753041    867
+ 662201  4753071    867
+ 662201  4753101    868
+ 662201  4753131    868
+ 662201  4753161    868
+ 662201  4753191    869
+ 662201  4753221    869
+ 662201  4753251    869
+ 662201  4753281    870
+ 662201  4753311    871
+ 662201  4753341    870
+ 662201  4753371    870
+ 662201  4753401    871
+ 662201  4753431    855
+ 662201  4753461    820
+ 662201  4753491    809
+ 662201  4753521    809
+ 662201  4753551    809
+ 662201  4753581    809
+ 662201  4753611    828
+ 662201  4753641    844
+ 662201  4753671    862
+ 662201  4753701    874
+ 662201  4753731    877
+ 662201  4753761    877
+ 662201  4753791    876
+ 662201  4753821    875
+ 662201  4753851    876
+ 662201  4753881    878
+ 662201  4753911    881
+ 662201  4753941    888
+ 662201  4753971    903
+ 662201  4754001    923
+ 662201  4754031    939
+ 662201  4754061    963
+ 662201  4754091    968
+ 662201  4754121    968
+ 662201  4754151    969
+ 662201  4754181    967
+ 662201  4754211    968
+ 662201  4754241    968
+ 662201  4754271    967
+ 662201  4754301    968
+ 662201  4754331    969
+ 662201  4754361    969
+ 662201  4754391    969
+ 662201  4754421    969
+ 662201  4754451    969
+ 662201  4754481    970
+ 662201  4754511    970
+ 662201  4754541    971
+ 662231  4751301   1019
+ 662231  4751331   1020
+ 662231  4751361   1020
+ 662231  4751391   1021
+ 662231  4751421   1021
+ 662231  4751451   1022
+ 662231  4751481   1022
+ 662231  4751511   1022
+ 662231  4751541   1023
+ 662231  4751571   1023
+ 662231  4751601   1023
+ 662231  4751631   1023
+ 662231  4751661   1025
+ 662231  4751691   1024
+ 662231  4751721   1021
+ 662231  4751751   1015
+ 662231  4751781   1008
+ 662231  4751811    994
+ 662231  4751841    974
+ 662231  4751871    958
+ 662231  4751901    944
+ 662231  4751931    924
+ 662231  4751961    908
+ 662231  4751991    899
+ 662231  4752021    896
+ 662231  4752051    892
+ 662231  4752081    889
+ 662231  4752111    886
+ 662231  4752141    885
+ 662231  4752171    883
+ 662231  4752201    878
+ 662231  4752231    874
+ 662231  4752261    871
+ 662231  4752291    868
+ 662231  4752321    866
+ 662231  4752351    862
+ 662231  4752381    848
+ 662231  4752411    832
+ 662231  4752441    820
+ 662231  4752471    817
+ 662231  4752501    820
+ 662231  4752531    829
+ 662231  4752561    839
+ 662231  4752591    848
+ 662231  4752621    860
+ 662231  4752651    862
+ 662231  4752681    862
+ 662231  4752711    863
+ 662231  4752741    863
+ 662231  4752771    864
+ 662231  4752801    864
+ 662231  4752831    865
+ 662231  4752861    866
+ 662231  4752891    867
+ 662231  4752921    867
+ 662231  4752951    866
+ 662231  4752981    866
+ 662231  4753011    867
+ 662231  4753041    867
+ 662231  4753071    868
+ 662231  4753101    868
+ 662231  4753131    868
+ 662231  4753161    868
+ 662231  4753191    869
+ 662231  4753221    869
+ 662231  4753251    869
+ 662231  4753281    870
+ 662231  4753311    870
+ 662231  4753341    871
+ 662231  4753371    870
+ 662231  4753401    858
+ 662231  4753431    831
+ 662231  4753461    809
+ 662231  4753491    809
+ 662231  4753521    809
+ 662231  4753551    809
+ 662231  4753581    820
+ 662231  4753611    838
+ 662231  4753641    853
+ 662231  4753671    869
+ 662231  4753701    873
+ 662231  4753731    876
+ 662231  4753761    876
+ 662231  4753791    876
+ 662231  4753821    875
+ 662231  4753851    876
+ 662231  4753881    878
+ 662231  4753911    882
+ 662231  4753941    891
+ 662231  4753971    909
+ 662231  4754001    927
+ 662231  4754031    950
+ 662231  4754061    968
+ 662231  4754091    968
+ 662231  4754121    968
+ 662231  4754151    969
+ 662231  4754181    969
+ 662231  4754211    968
+ 662231  4754241    969
+ 662231  4754271    969
+ 662231  4754301    968
+ 662231  4754331    968
+ 662231  4754361    969
+ 662231  4754391    970
+ 662231  4754421    971
+ 662231  4754451    970
+ 662231  4754481    970
+ 662231  4754511    970
+ 662231  4754541    970
+ 662261  4751301   1017
+ 662261  4751331   1018
+ 662261  4751361   1019
+ 662261  4751391   1020
+ 662261  4751421   1020
+ 662261  4751451   1021
+ 662261  4751481   1021
+ 662261  4751511   1022
+ 662261  4751541   1023
+ 662261  4751571   1023
+ 662261  4751601   1023
+ 662261  4751631   1023
+ 662261  4751661   1023
+ 662261  4751691   1023
+ 662261  4751721   1019
+ 662261  4751751   1013
+ 662261  4751781   1005
+ 662261  4751811    991
+ 662261  4751841    971
+ 662261  4751871    952
+ 662261  4751901    936
+ 662261  4751931    923
+ 662261  4751961    909
+ 662261  4751991    900
+ 662261  4752021    896
+ 662261  4752051    893
+ 662261  4752081    890
+ 662261  4752111    888
+ 662261  4752141    887
+ 662261  4752171    885
+ 662261  4752201    878
+ 662261  4752231    874
+ 662261  4752261    871
+ 662261  4752291    868
+ 662261  4752321    866
+ 662261  4752351    861
+ 662261  4752381    844
+ 662261  4752411    829
+ 662261  4752441    819
+ 662261  4752471    817
+ 662261  4752501    822
+ 662261  4752531    832
+ 662261  4752561    841
+ 662261  4752591    849
+ 662261  4752621    859
+ 662261  4752651    862
+ 662261  4752681    862
+ 662261  4752711    863
+ 662261  4752741    863
+ 662261  4752771    864
+ 662261  4752801    865
+ 662261  4752831    866
+ 662261  4752861    867
+ 662261  4752891    867
+ 662261  4752921    868
+ 662261  4752951    867
+ 662261  4752981    867
+ 662261  4753011    867
+ 662261  4753041    867
+ 662261  4753071    868
+ 662261  4753101    869
+ 662261  4753131    869
+ 662261  4753161    868
+ 662261  4753191    869
+ 662261  4753221    869
+ 662261  4753251    869
+ 662261  4753281    870
+ 662261  4753311    870
+ 662261  4753341    870
+ 662261  4753371    861
+ 662261  4753401    831
+ 662261  4753431    814
+ 662261  4753461    809
+ 662261  4753491    809
+ 662261  4753521    809
+ 662261  4753551    809
+ 662261  4753581    828
+ 662261  4753611    846
+ 662261  4753641    862
+ 662261  4753671    870
+ 662261  4753701    872
+ 662261  4753731    875
+ 662261  4753761    876
+ 662261  4753791    875
+ 662261  4753821    875
+ 662261  4753851    876
+ 662261  4753881    879
+ 662261  4753911    883
+ 662261  4753941    897
+ 662261  4753971    915
+ 662261  4754001    938
+ 662261  4754031    964
+ 662261  4754061    968
+ 662261  4754091    968
+ 662261  4754121    969
+ 662261  4754151    969
+ 662261  4754181    969
+ 662261  4754211    968
+ 662261  4754241    968
+ 662261  4754271    970
+ 662261  4754301    969
+ 662261  4754331    969
+ 662261  4754361    969
+ 662261  4754391    970
+ 662261  4754421    971
+ 662261  4754451    972
+ 662261  4754481    972
+ 662261  4754511    971
+ 662261  4754541    971
+ 662291  4751301   1016
+ 662291  4751331   1017
+ 662291  4751361   1017
+ 662291  4751391   1018
+ 662291  4751421   1019
+ 662291  4751451   1020
+ 662291  4751481   1021
+ 662291  4751511   1022
+ 662291  4751541   1022
+ 662291  4751571   1023
+ 662291  4751601   1023
+ 662291  4751631   1022
+ 662291  4751661   1022
+ 662291  4751691   1022
+ 662291  4751721   1019
+ 662291  4751751   1012
+ 662291  4751781   1004
+ 662291  4751811    991
+ 662291  4751841    968
+ 662291  4751871    947
+ 662291  4751901    932
+ 662291  4751931    914
+ 662291  4751961    906
+ 662291  4751991    898
+ 662291  4752021    896
+ 662291  4752051    894
+ 662291  4752081    891
+ 662291  4752111    889
+ 662291  4752141    886
+ 662291  4752171    884
+ 662291  4752201    877
+ 662291  4752231    874
+ 662291  4752261    872
+ 662291  4752291    869
+ 662291  4752321    866
+ 662291  4752351    862
+ 662291  4752381    848
+ 662291  4752411    834
+ 662291  4752441    819
+ 662291  4752471    817
+ 662291  4752501    823
+ 662291  4752531    832
+ 662291  4752561    838
+ 662291  4752591    848
+ 662291  4752621    859
+ 662291  4752651    861
+ 662291  4752681    862
+ 662291  4752711    863
+ 662291  4752741    863
+ 662291  4752771    864
+ 662291  4752801    864
+ 662291  4752831    866
+ 662291  4752861    867
+ 662291  4752891    868
+ 662291  4752921    868
+ 662291  4752951    869
+ 662291  4752981    868
+ 662291  4753011    867
+ 662291  4753041    867
+ 662291  4753071    868
+ 662291  4753101    868
+ 662291  4753131    869
+ 662291  4753161    869
+ 662291  4753191    869
+ 662291  4753221    869
+ 662291  4753251    869
+ 662291  4753281    870
+ 662291  4753311    870
+ 662291  4753341    866
+ 662291  4753371    840
+ 662291  4753401    814
+ 662291  4753431    809
+ 662291  4753461    809
+ 662291  4753491    809
+ 662291  4753521    809
+ 662291  4753551    822
+ 662291  4753581    842
+ 662291  4753611    856
+ 662291  4753641    870
+ 662291  4753671    874
+ 662291  4753701    872
+ 662291  4753731    875
+ 662291  4753761    875
+ 662291  4753791    874
+ 662291  4753821    875
+ 662291  4753851    876
+ 662291  4753881    880
+ 662291  4753911    887
+ 662291  4753941    902
+ 662291  4753971    922
+ 662291  4754001    944
+ 662291  4754031    968
+ 662291  4754061    968
+ 662291  4754091    969
+ 662291  4754121    969
+ 662291  4754151    969
+ 662291  4754181    969
+ 662291  4754211    970
+ 662291  4754241    969
+ 662291  4754271    970
+ 662291  4754301    971
+ 662291  4754331    971
+ 662291  4754361    970
+ 662291  4754391    970
+ 662291  4754421    971
+ 662291  4754451    972
+ 662291  4754481    972
+ 662291  4754511    972
+ 662291  4754541    972
+ 662321  4751301   1014
+ 662321  4751331   1015
+ 662321  4751361   1016
+ 662321  4751391   1016
+ 662321  4751421   1017
+ 662321  4751451   1019
+ 662321  4751481   1020
+ 662321  4751511   1021
+ 662321  4751541   1022
+ 662321  4751571   1023
+ 662321  4751601   1024
+ 662321  4751631   1024
+ 662321  4751661   1023
+ 662321  4751691   1021
+ 662321  4751721   1016
+ 662321  4751751   1010
+ 662321  4751781   1001
+ 662321  4751811    982
+ 662321  4751841    966
+ 662321  4751871    945
+ 662321  4751901    931
+ 662321  4751931    915
+ 662321  4751961    905
+ 662321  4751991    898
+ 662321  4752021    896
+ 662321  4752051    894
+ 662321  4752081    892
+ 662321  4752111    889
+ 662321  4752141    885
+ 662321  4752171    883
+ 662321  4752201    878
+ 662321  4752231    875
+ 662321  4752261    872
+ 662321  4752291    870
+ 662321  4752321    867
+ 662321  4752351    863
+ 662321  4752381    852
+ 662321  4752411    839
+ 662321  4752441    820
+ 662321  4752471    817
+ 662321  4752501    823
+ 662321  4752531    830
+ 662321  4752561    839
+ 662321  4752591    849
+ 662321  4752621    860
+ 662321  4752651    862
+ 662321  4752681    862
+ 662321  4752711    863
+ 662321  4752741    863
+ 662321  4752771    864
+ 662321  4752801    865
+ 662321  4752831    866
+ 662321  4752861    867
+ 662321  4752891    868
+ 662321  4752921    869
+ 662321  4752951    869
+ 662321  4752981    869
+ 662321  4753011    868
+ 662321  4753041    868
+ 662321  4753071    868
+ 662321  4753101    868
+ 662321  4753131    868
+ 662321  4753161    868
+ 662321  4753191    869
+ 662321  4753221    869
+ 662321  4753251    870
+ 662321  4753281    870
+ 662321  4753311    870
+ 662321  4753341    858
+ 662321  4753371    820
+ 662321  4753401    809
+ 662321  4753431    809
+ 662321  4753461    809
+ 662321  4753491    809
+ 662321  4753521    809
+ 662321  4753551    838
+ 662321  4753581    854
+ 662321  4753611    868
+ 662321  4753641    876
+ 662321  4753671    876
+ 662321  4753701    873
+ 662321  4753731    873
+ 662321  4753761    873
+ 662321  4753791    874
+ 662321  4753821    875
+ 662321  4753851    878
+ 662321  4753881    882
+ 662321  4753911    893
+ 662321  4753941    907
+ 662321  4753971    926
+ 662321  4754001    952
+ 662321  4754031    968
+ 662321  4754061    968
+ 662321  4754091    969
+ 662321  4754121    969
+ 662321  4754151    969
+ 662321  4754181    969
+ 662321  4754211    970
+ 662321  4754241    969
+ 662321  4754271    970
+ 662321  4754301    971
+ 662321  4754331    971
+ 662321  4754361    972
+ 662321  4754391    971
+ 662321  4754421    971
+ 662321  4754451    972
+ 662321  4754481    972
+ 662321  4754511    972
+ 662321  4754541    972
+ 662351  4751301   1013
+ 662351  4751331   1013
+ 662351  4751361   1014
+ 662351  4751391   1015
+ 662351  4751421   1015
+ 662351  4751451   1016
+ 662351  4751481   1018
+ 662351  4751511   1020
+ 662351  4751541   1021
+ 662351  4751571   1022
+ 662351  4751601   1023
+ 662351  4751631   1023
+ 662351  4751661   1023
+ 662351  4751691   1019
+ 662351  4751721   1014
+ 662351  4751751   1007
+ 662351  4751781    995
+ 662351  4751811    976
+ 662351  4751841    963
+ 662351  4751871    947
+ 662351  4751901    928
+ 662351  4751931    911
+ 662351  4751961    902
+ 662351  4751991    898
+ 662351  4752021    896
+ 662351  4752051    894
+ 662351  4752081    892
+ 662351  4752111    889
+ 662351  4752141    885
+ 662351  4752171    885
+ 662351  4752201    881
+ 662351  4752231    875
+ 662351  4752261    873
+ 662351  4752291    871
+ 662351  4752321    867
+ 662351  4752351    864
+ 662351  4752381    853
+ 662351  4752411    840
+ 662351  4752441    823
+ 662351  4752471    817
+ 662351  4752501    823
+ 662351  4752531    833
+ 662351  4752561    839
+ 662351  4752591    846
+ 662351  4752621    857
+ 662351  4752651    861
+ 662351  4752681    862
+ 662351  4752711    863
+ 662351  4752741    864
+ 662351  4752771    864
+ 662351  4752801    865
+ 662351  4752831    866
+ 662351  4752861    867
+ 662351  4752891    868
+ 662351  4752921    868
+ 662351  4752951    869
+ 662351  4752981    869
+ 662351  4753011    869
+ 662351  4753041    868
+ 662351  4753071    868
+ 662351  4753101    868
+ 662351  4753131    868
+ 662351  4753161    868
+ 662351  4753191    869
+ 662351  4753221    869
+ 662351  4753251    870
+ 662351  4753281    870
+ 662351  4753311    867
+ 662351  4753341    839
+ 662351  4753371    809
+ 662351  4753401    809
+ 662351  4753431    809
+ 662351  4753461    809
+ 662351  4753491    809
+ 662351  4753521    835
+ 662351  4753551    852
+ 662351  4753581    866
+ 662351  4753611    870
+ 662351  4753641    873
+ 662351  4753671    873
+ 662351  4753701    871
+ 662351  4753731    871
+ 662351  4753761    873
+ 662351  4753791    874
+ 662351  4753821    876
+ 662351  4753851    879
+ 662351  4753881    886
+ 662351  4753911    900
+ 662351  4753941    915
+ 662351  4753971    932
+ 662351  4754001    964
+ 662351  4754031    968
+ 662351  4754061    968
+ 662351  4754091    969
+ 662351  4754121    969
+ 662351  4754151    970
+ 662351  4754181    970
+ 662351  4754211    970
+ 662351  4754241    970
+ 662351  4754271    970
+ 662351  4754301    972
+ 662351  4754331    972
+ 662351  4754361    972
+ 662351  4754391    972
+ 662351  4754421    972
+ 662351  4754451    972
+ 662351  4754481    973
+ 662351  4754511    973
+ 662351  4754541    973
+ 662381  4751301   1011
+ 662381  4751331   1012
+ 662381  4751361   1012
+ 662381  4751391   1013
+ 662381  4751421   1013
+ 662381  4751451   1014
+ 662381  4751481   1016
+ 662381  4751511   1018
+ 662381  4751541   1020
+ 662381  4751571   1021
+ 662381  4751601   1022
+ 662381  4751631   1022
+ 662381  4751661   1022
+ 662381  4751691   1018
+ 662381  4751721   1013
+ 662381  4751751   1006
+ 662381  4751781    991
+ 662381  4751811    974
+ 662381  4751841    961
+ 662381  4751871    944
+ 662381  4751901    929
+ 662381  4751931    912
+ 662381  4751961    903
+ 662381  4751991    898
+ 662381  4752021    896
+ 662381  4752051    893
+ 662381  4752081    891
+ 662381  4752111    889
+ 662381  4752141    887
+ 662381  4752171    886
+ 662381  4752201    882
+ 662381  4752231    876
+ 662381  4752261    874
+ 662381  4752291    871
+ 662381  4752321    867
+ 662381  4752351    865
+ 662381  4752381    860
+ 662381  4752411    845
+ 662381  4752441    827
+ 662381  4752471    817
+ 662381  4752501    822
+ 662381  4752531    835
+ 662381  4752561    845
+ 662381  4752591    848
+ 662381  4752621    857
+ 662381  4752651    861
+ 662381  4752681    862
+ 662381  4752711    862
+ 662381  4752741    864
+ 662381  4752771    865
+ 662381  4752801    865
+ 662381  4752831    866
+ 662381  4752861    867
+ 662381  4752891    868
+ 662381  4752921    868
+ 662381  4752951    869
+ 662381  4752981    869
+ 662381  4753011    869
+ 662381  4753041    869
+ 662381  4753071    869
+ 662381  4753101    869
+ 662381  4753131    869
+ 662381  4753161    868
+ 662381  4753191    869
+ 662381  4753221    869
+ 662381  4753251    869
+ 662381  4753281    870
+ 662381  4753311    860
+ 662381  4753341    822
+ 662381  4753371    809
+ 662381  4753401    809
+ 662381  4753431    809
+ 662381  4753461    818
+ 662381  4753491    831
+ 662381  4753521    848
+ 662381  4753551    865
+ 662381  4753581    871
+ 662381  4753611    871
+ 662381  4753641    869
+ 662381  4753671    869
+ 662381  4753701    870
+ 662381  4753731    870
+ 662381  4753761    872
+ 662381  4753791    874
+ 662381  4753821    876
+ 662381  4753851    882
+ 662381  4753881    894
+ 662381  4753911    909
+ 662381  4753941    923
+ 662381  4753971    936
+ 662381  4754001    967
+ 662381  4754031    968
+ 662381  4754061    968
+ 662381  4754091    969
+ 662381  4754121    969
+ 662381  4754151    970
+ 662381  4754181    970
+ 662381  4754211    971
+ 662381  4754241    970
+ 662381  4754271    970
+ 662381  4754301    971
+ 662381  4754331    972
+ 662381  4754361    973
+ 662381  4754391    973
+ 662381  4754421    973
+ 662381  4754451    973
+ 662381  4754481    972
+ 662381  4754511    973
+ 662381  4754541    973
diff --git a/tutorials/mesh/moveDynamicMesh/SnakeRiverCanyon/constant/triSurface/AcrossRiver.stl.gz b/tutorials/mesh/moveDynamicMesh/SnakeRiverCanyon/constant/triSurface/AcrossRiver.stl.gz
new file mode 100644
index 0000000000000000000000000000000000000000..5262e4745c4c016ff8a807160f7a11ac10487e0c
Binary files /dev/null and b/tutorials/mesh/moveDynamicMesh/SnakeRiverCanyon/constant/triSurface/AcrossRiver.stl.gz differ
diff --git a/tutorials/mesh/moveDynamicMesh/SnakeRiverCanyon/system/controlDict b/tutorials/mesh/moveDynamicMesh/SnakeRiverCanyon/system/controlDict
new file mode 100644
index 0000000000000000000000000000000000000000..195bead7baea5d18eb7d18ceae29684416c71a65
--- /dev/null
+++ b/tutorials/mesh/moveDynamicMesh/SnakeRiverCanyon/system/controlDict
@@ -0,0 +1,56 @@
+/*---------------------------------------------------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.4                                   |
+|   \\  /    A nd           | Web:      http://www.openfoam.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+FoamFile
+{
+    version         2.0;
+    format          ascii;
+
+    root            "";
+    case            "";
+    instance        "";
+    local           "";
+
+    class           dictionary;
+    object          controlDict;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+application icoFoam;
+
+startFrom       startTime;
+
+startTime       0;
+
+stopAt          endTime;
+
+endTime         25;
+
+deltaT          1;
+
+writeControl    timeStep;
+
+writeInterval   5;
+
+purgeWrite      0;
+
+writeFormat     ascii;
+
+writePrecision  6;
+
+writeCompression uncompressed;
+
+timeFormat      general;
+
+timePrecision   6;
+
+runTimeModifiable yes;
+
+
+// ************************************************************************* //
diff --git a/tutorials/mesh/moveDynamicMesh/SnakeRiverCanyon/system/decomposeParDict b/tutorials/mesh/moveDynamicMesh/SnakeRiverCanyon/system/decomposeParDict
new file mode 100644
index 0000000000000000000000000000000000000000..441595307a666b321687565d5b91940861cc1178
--- /dev/null
+++ b/tutorials/mesh/moveDynamicMesh/SnakeRiverCanyon/system/decomposeParDict
@@ -0,0 +1,72 @@
+/*-------------------------------*- C++ -*---------------------------------*\
+|    =========                                                              |
+|    \\      /     OpenFOAM                                                 |
+|     \\    /                                                               |
+|      \\  /       The Open Source CFD Toolbox                              |
+|       \\/                                        http://www.OpenFOAM.org  |
+\*-------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    note        "mesh decomposition control dictionary";
+    location    "system";
+    object      decomposeParDict;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+numberOfSubdomains  2;
+
+// preservePatches (inlet);
+// preserveFaceZones (heater solid1 solid3);
+
+// method          simple;
+method          hierarchical;
+// method          metis;
+// method          manual;
+
+simpleCoeffs
+{
+    n           (2 2 1);
+    delta       0.001;
+}
+
+hierarchicalCoeffs
+{
+    n           (2 1 1);
+    delta       0.001;
+    order       xyz;
+}
+
+metisCoeffs
+{
+ /*
+    processorWeights
+    (
+        1
+        1
+        1
+        1
+    );
+  */
+}
+
+manualCoeffs
+{
+    dataFile    "decompositionData";
+}
+
+
+//// Is the case distributed
+//distributed     yes;
+//// Per slave (so nProcs-1 entries) the directory above the case.
+//roots           
+//(
+//    "/tmp"
+//    "/tmp"
+//);
+
+
+// ************************************************************************* //
diff --git a/tutorials/mesh/snappyHexMesh/motorBike/system/fvSchemes b/tutorials/mesh/moveDynamicMesh/SnakeRiverCanyon/system/fvSchemes
similarity index 63%
rename from tutorials/mesh/snappyHexMesh/motorBike/system/fvSchemes
rename to tutorials/mesh/moveDynamicMesh/SnakeRiverCanyon/system/fvSchemes
index 2fa85964b7e2113902ff5be6f03334f6777d84b6..ebcd68557528c297120d8e5e1e9ee43f0b933650 100644
--- a/tutorials/mesh/snappyHexMesh/motorBike/system/fvSchemes
+++ b/tutorials/mesh/moveDynamicMesh/SnakeRiverCanyon/system/fvSchemes
@@ -1,18 +1,25 @@
-/*--------------------------------*- C++ -*----------------------------------*\
+/*---------------------------------------------------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.5                                   |
-|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|  \\    /   O peration     | Version:  1.4                                   |
+|   \\  /    A nd           | Web:      http://www.openfoam.org               |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
+
 FoamFile
 {
-    version     2.0;
-    format      ascii;
-    class       dictionary;
-    location    "system";
-    object      fvSchemes;
+    version         2.0;
+    format          ascii;
+
+    root            "";
+    case            "";
+    instance        "";
+    local           "";
+
+    class           dictionary;
+    object          fvSchemes;
 }
+
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 ddtSchemes
@@ -36,8 +43,9 @@ laplacianSchemes
 {
     default         none;
     laplacian(nu,U) Gauss linear corrected;
-    laplacian(1|A(U),p) Gauss linear corrected;
-    laplacian(diffusivity,cellMotionU) Gauss linear uncorrected;
+    laplacian((1|A(U)),p) Gauss linear corrected;
+    laplacian(diffusivity,cellDisplacement) Gauss linear corrected;
+    laplacian(diffusivity,cellMotionU) Gauss linear corrected;
 }
 
 interpolationSchemes
@@ -54,7 +62,7 @@ snGradSchemes
 fluxRequired
 {
     default         no;
-    p               ;
+    p;
 }
 
 
diff --git a/tutorials/mesh/moveDynamicMesh/SnakeRiverCanyon/system/fvSolution b/tutorials/mesh/moveDynamicMesh/SnakeRiverCanyon/system/fvSolution
new file mode 100644
index 0000000000000000000000000000000000000000..9fff602af62a0a26a5ab6375eda77db671abcf3f
--- /dev/null
+++ b/tutorials/mesh/moveDynamicMesh/SnakeRiverCanyon/system/fvSolution
@@ -0,0 +1,82 @@
+/*---------------------------------------------------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.4                                   |
+|   \\  /    A nd           | Web:      http://www.openfoam.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+FoamFile
+{
+    version         2.0;
+    format          ascii;
+
+    root            "";
+    case            "";
+    instance        "";
+    local           "";
+
+    class           dictionary;
+    object          fvSolution;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+solvers
+{
+    p
+    {
+        solver           PCG;
+        preconditioner   DIC;
+        tolerance        1e-06;
+        relTol           0;
+    };
+
+    U
+    {
+        solver           PBiCG;
+        preconditioner   DILU;
+        tolerance        1e-05;
+        relTol           0;
+    };
+    cellDisplacement
+    {
+        solver          GAMG;
+        tolerance       1e-8;
+        relTol          0;
+        smoother        GaussSeidel;
+        cacheAgglomeration true;
+        nCellsInCoarsestLevel 10;
+        agglomerator    faceAreaPair;
+        mergeLevels     1;
+    };
+    cellMotionU
+    {
+        solver           PCG;
+        preconditioner   DIC;
+        tolerance        1e-08;
+        relTol           0;
+    };
+    cellMotionUz
+    {
+        solver           PCG;
+        preconditioner   DIC;
+        tolerance        1e-08;
+        relTol           0;
+    };
+}
+
+//PISO
+//{
+//    nCorrectors     2;
+//    nNonOrthogonalCorrectors 2;
+//    pRefCell        0;
+//    pRefValue       0;
+//}
+//
+//relaxationFactors
+//{
+//}
+
+
+// ************************************************************************* //
diff --git a/tutorials/mesh/snappyHexMesh/Allrun b/tutorials/mesh/snappyHexMesh/Allrun
new file mode 100755
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/tutorials/mesh/snappyHexMesh/iglooWithFridges b/tutorials/mesh/snappyHexMesh/iglooWithFridges
new file mode 120000
index 0000000000000000000000000000000000000000..b06b074963c2f66714acb3b0b88295bb1e0b6044
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/iglooWithFridges
@@ -0,0 +1 @@
+../../heatTransfer/buoyantBoussinesqSimpleFoam/iglooWithFridges
\ No newline at end of file
diff --git a/tutorials/mesh/snappyHexMesh/motorBike b/tutorials/mesh/snappyHexMesh/motorBike
new file mode 120000
index 0000000000000000000000000000000000000000..9b9e145e0886e4ad8c75a5bd1594a0ce7357866e
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/motorBike
@@ -0,0 +1 @@
+../../incompressible/simpleFoam/motorBike
\ No newline at end of file
diff --git a/tutorials/mesh/snappyHexMesh/multiRegionMesh/0/K b/tutorials/mesh/snappyHexMesh/multiRegionMesh/0/K
new file mode 100644
index 0000000000000000000000000000000000000000..c557b53b2898e19f37cb13361f5be39841093be0
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/multiRegionMesh/0/K
@@ -0,0 +1,29 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      K;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 1 -3 -1 0 0 0];
+
+internalField   uniform 80;
+
+boundaryField
+{
+    ".*"
+    {
+        type            calculated;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/mesh/snappyHexMesh/multiRegionMesh/0/T b/tutorials/mesh/snappyHexMesh/multiRegionMesh/0/T
new file mode 100644
index 0000000000000000000000000000000000000000..0c3390b177f045e37462f62e16aba9d7875e5525
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/multiRegionMesh/0/T
@@ -0,0 +1,29 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      T;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 1 0 0 0];
+
+internalField   uniform 300;
+
+boundaryField
+{
+    ".*"
+    {
+        type            calculated;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/mesh/snappyHexMesh/multiRegionMesh/0/U b/tutorials/mesh/snappyHexMesh/multiRegionMesh/0/U
new file mode 100644
index 0000000000000000000000000000000000000000..0e7e93907c208c1f4906175c5b9804e746944f1c
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/multiRegionMesh/0/U
@@ -0,0 +1,29 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volVectorField;
+    object      U;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -1 0 0 0 0];
+
+internalField   uniform (0.01 0 0);
+
+boundaryField
+{
+    ".*"
+    {
+        type            calculated;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/mesh/snappyHexMesh/multiRegionMesh/0/alphat b/tutorials/mesh/snappyHexMesh/multiRegionMesh/0/alphat
new file mode 100644
index 0000000000000000000000000000000000000000..3c04af3fc8382707e0fd561598679a593ee3733b
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/multiRegionMesh/0/alphat
@@ -0,0 +1,31 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0.001";
+    object      alphat;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -1 -1 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    ".*"
+    {
+        type            calculated;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/mesh/snappyHexMesh/multiRegionMesh/0/cp b/tutorials/mesh/snappyHexMesh/multiRegionMesh/0/cp
new file mode 100644
index 0000000000000000000000000000000000000000..9973de29da4515e1648f303fa50e132384900d8f
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/multiRegionMesh/0/cp
@@ -0,0 +1,29 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      cp;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 2 -2 -1 0 0 0];
+
+internalField   uniform 450;
+
+boundaryField
+{
+    ".*"
+    {
+        type            calculated;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/mesh/snappyHexMesh/multiRegionMesh/0/epsilon b/tutorials/mesh/snappyHexMesh/multiRegionMesh/0/epsilon
new file mode 100644
index 0000000000000000000000000000000000000000..6d6c661d937489aaf24e4a8ac205359613c13f85
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/multiRegionMesh/0/epsilon
@@ -0,0 +1,31 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0.001";
+    object      epsilon;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 2 -3 0 0 0 0];
+
+internalField   uniform 0.01;
+
+boundaryField
+{
+    ".*"
+    {
+        type            calculated;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/mesh/snappyHexMesh/multiRegionMesh/0/k b/tutorials/mesh/snappyHexMesh/multiRegionMesh/0/k
new file mode 100644
index 0000000000000000000000000000000000000000..b657a9bf05a8fd42d005937f5d0395a003f762ab
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/multiRegionMesh/0/k
@@ -0,0 +1,31 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0.001";
+    object      k;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 2 -2 0 0 0 0];
+
+internalField   uniform 0.1;
+
+boundaryField
+{
+    ".*"
+    {
+        type            calculated;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/mesh/snappyHexMesh/multiRegionMesh/0/p b/tutorials/mesh/snappyHexMesh/multiRegionMesh/0/p
new file mode 100644
index 0000000000000000000000000000000000000000..7790ad2bae561a9e01453e5e338770379a142e55
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/multiRegionMesh/0/p
@@ -0,0 +1,29 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      p;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -1 -2 0 0 0 0];
+
+internalField   uniform 1e5;
+
+boundaryField
+{
+    ".*"
+    {
+        type            calculated;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/mesh/snappyHexMesh/multiRegionMesh/0/rho b/tutorials/mesh/snappyHexMesh/multiRegionMesh/0/rho
new file mode 100644
index 0000000000000000000000000000000000000000..9421cd2cbe4d2dac0740a5b885b6ab5a18e6c8d2
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/multiRegionMesh/0/rho
@@ -0,0 +1,29 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      rho;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -3 0 0 0 0 0];
+
+internalField   uniform 8000;
+
+boundaryField
+{
+    ".*"
+    {
+        type            calculated;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/mesh/snappyHexMesh/multiRegionMesh/Allclean b/tutorials/mesh/snappyHexMesh/multiRegionMesh/Allclean
new file mode 100755
index 0000000000000000000000000000000000000000..6771f180d8824b2b5187c97d9dca6282e744cbf8
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/multiRegionMesh/Allclean
@@ -0,0 +1,20 @@
+#!/bin/sh
+
+# Source tutorial clean functions
+. $WM_PROJECT_DIR/bin/tools/CleanFunctions
+
+cleanCase
+rm -rf VTK
+rm -rf constant/cellToRegion constant/polyMesh/sets
+rm -rf 0/bottomAir
+rm -rf 0/topAir
+rm -rf 0/heater
+rm -rf 0/leftSolid
+rm -rf 0/rightSolid
+rm -rf constant/bottomAir/polyMesh
+rm -rf constant/topAir/polyMesh
+rm -rf constant/heater/polyMesh
+rm -rf constant/leftSolid/polyMesh
+rm -rf constant/rightSolid/polyMesh
+
+# -----------------------------------------------------------------------------
diff --git a/tutorials/mesh/snappyHexMesh/multiRegionMesh/Allrun b/tutorials/mesh/snappyHexMesh/multiRegionMesh/Allrun
new file mode 100755
index 0000000000000000000000000000000000000000..28b6133b28f996692f991e859675bbbb2212dcd1
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/multiRegionMesh/Allrun
@@ -0,0 +1,59 @@
+#!/bin/sh
+
+# Source tutorial run functions
+. $WM_PROJECT_DIR/bin/tools/RunFunctions
+
+rm -rf constant/polyMesh/sets
+
+runApplication blockMesh
+runApplication snappyHexMesh -overwrite
+runApplication splitMeshRegions -cellZones
+
+# remove fluid fields from solid regions (important for post-processing)
+for i in heater leftSolid rightSolid
+do
+   rm -f 0*/$i/{mut,alphat,epsilon,k,p,p,U}
+done
+
+# remove solid fields from fluid regions (important for post-processing)
+for i in bottomAir topAir
+do
+   rm -f 0*/$i/{cp,K,rho}
+done
+
+for i in bottomAir topAir heater leftSolid rightSolid
+do
+   changeDictionary -region $i >& log.changeDictionary.$i
+done
+
+
+#-- Run on single processor
+runApplication chtMultiRegionFoam
+
+
+## Decompose
+#for i in bottomAir topAir heater leftSolid rightSolid
+#do
+#   decomposePar -region $i >& log.decomposePar.$i
+#done
+#
+## Run
+#hostname > system/machines
+#runParallel chtMultiRegionFoam 4 system/machines
+#
+## Reconstruct
+#for i in bottomAir topAir heater leftSolid rightSolid
+#do
+#   reconstructPar -region $i >& log.reconstructPar.$i
+#done
+
+
+echo
+echo "creating files for paraview post-processing"
+echo
+for i in bottomAir topAir heater leftSolid rightSolid
+do
+   paraFoam -touch -region $i
+done
+
+# -----------------------------------------------------------------------------
diff --git a/tutorials/mesh/snappyHexMesh/multiRegionMesh/constant/bottomAir/RASProperties b/tutorials/mesh/snappyHexMesh/multiRegionMesh/constant/bottomAir/RASProperties
new file mode 100644
index 0000000000000000000000000000000000000000..6b4cc41e7a84e17964ea8f308450c5a26a43b9b5
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/multiRegionMesh/constant/bottomAir/RASProperties
@@ -0,0 +1,96 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      RASProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+RASModel kEpsilon;
+
+turbulence      off;
+
+laminarCoeffs
+{
+}
+
+kEpsilonCoeffs
+{
+    Cmu              0.09;
+    C1               1.44;
+    C2               1.92;
+    C3               0.85;
+    alphah           1;
+    alphak           1;
+    alphaEps         0.76923;
+}
+
+RNGkEpsilonCoeffs
+{
+    Cmu              0.0845;
+    C1               1.42;
+    C2               1.68;
+    C3               -0.33;
+    alphah           1;
+    alphak           1.39;
+    alphaEps         1.39;
+    eta0             4.38;
+    beta             0.012;
+}
+
+LaunderSharmaKECoeffs
+{
+    Cmu              0.09;
+    C1               1.44;
+    C2               1.92;
+    C3               -0.33;
+    alphah           1;
+    alphak           1;
+    alphaEps         0.76923;
+}
+
+LRRCoeffs
+{
+    Cmu              0.09;
+    Clrr1            1.8;
+    Clrr2            0.6;
+    C1               1.44;
+    C2               1.92;
+    alphah           1;
+    Cs               0.25;
+    Ceps             0.15;
+    alphaR           1;
+    alphaEps         0.76923;
+}
+
+LaunderGibsonRSTMCoeffs
+{
+    Cmu              0.09;
+    Clg1             1.8;
+    Clg2             0.6;
+    C1               1.44;
+    C2               1.92;
+    alphah           1;
+    C1Ref            0.5;
+    C2Ref            0.3;
+    Cs               0.25;
+    Ceps             0.15;
+    alphaR           1;
+    alphaEps         0.76923;
+}
+
+wallFunctionCoeffs
+{
+    kappa            0.4187;
+    E                9;
+}
+
+// ************************************************************************* //
diff --git a/tutorials/mesh/snappyHexMesh/multiRegionMesh/constant/bottomAir/environmentalProperties b/tutorials/mesh/snappyHexMesh/multiRegionMesh/constant/bottomAir/environmentalProperties
new file mode 100644
index 0000000000000000000000000000000000000000..03e0adce892c8e4fdd83c43484578d4bb486aca3
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/multiRegionMesh/constant/bottomAir/environmentalProperties
@@ -0,0 +1,19 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      environmentalProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+g               g [0 1 -2 0 0 0 0] (0 -9.81 0);
+
+// ************************************************************************* //
diff --git a/tutorials/mesh/snappyHexMesh/multiRegionMesh/constant/bottomAir/thermophysicalProperties b/tutorials/mesh/snappyHexMesh/multiRegionMesh/constant/bottomAir/thermophysicalProperties
new file mode 100644
index 0000000000000000000000000000000000000000..02fdc143ae4770b373a64bc74f3704da6d5ab69e
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/multiRegionMesh/constant/bottomAir/thermophysicalProperties
@@ -0,0 +1,21 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      thermophysicalProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+thermoType      hPsiThermo<pureMixture<constTransport<specieThermo<hConstThermo<perfectGas>>>>>;
+
+mixture         air 1 28.9 1000 0 1.8e-05 0.7;
+
+// ************************************************************************* //
diff --git a/tutorials/mesh/snappyHexMesh/multiRegionMesh/constant/bottomAir/turbulenceProperties b/tutorials/mesh/snappyHexMesh/multiRegionMesh/constant/bottomAir/turbulenceProperties
new file mode 100644
index 0000000000000000000000000000000000000000..0efb448180f1ba26ac35d2dda07035e9ec6873f6
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/multiRegionMesh/constant/bottomAir/turbulenceProperties
@@ -0,0 +1,19 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      turbulenceProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+simulationType  laminar;
+
+// ************************************************************************* //
diff --git a/tutorials/mesh/snappyHexMesh/motorBike/constant/polyMesh/blockMeshDict b/tutorials/mesh/snappyHexMesh/multiRegionMesh/constant/polyMesh/blockMeshDict
similarity index 73%
rename from tutorials/mesh/snappyHexMesh/motorBike/constant/polyMesh/blockMeshDict
rename to tutorials/mesh/snappyHexMesh/multiRegionMesh/constant/polyMesh/blockMeshDict
index c618a0a9acd6509dad6d3d6e988cdf7b8530850a..5f292d4e4952c00603559a3b216503b01b78ff46 100644
--- a/tutorials/mesh/snappyHexMesh/motorBike/constant/polyMesh/blockMeshDict
+++ b/tutorials/mesh/snappyHexMesh/multiRegionMesh/constant/polyMesh/blockMeshDict
@@ -12,35 +12,34 @@ FoamFile
     class       dictionary;
     object      blockMeshDict;
 }
-
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 convertToMeters 1;
 
-vertices
+vertices        
 (
-    (-20.29 -10  -4.232e-05)
-    ( 41.71 -10  -4.232e-05)
-    ( 41.71  10  -4.232e-05)
-    (-20.29  10  -4.232e-05)
-    (-20.29 -10   20)
-    ( 41.71 -10   20)
-    ( 41.71  10   20)
-    (-20.29  10   20)
+    (-0.1 -0.04  -0.05)
+    ( 0.1 -0.04  -0.05)
+    ( 0.1  0.04  -0.05)
+    (-0.1  0.04  -0.05)
+    (-0.1 -0.04   0.05)
+    ( 0.1 -0.04   0.05)
+    ( 0.1  0.04   0.05)
+    (-0.1  0.04   0.05)
 );
 
-blocks
+blocks          
 (
-    hex (0 1 2 3 4 5 6 7) (60 20 20) simpleGrading (1 1 1)
+    hex (0 1 2 3 4 5 6 7) (30 10 10) simpleGrading (1 1 1)
 );
 
-edges
+edges           
 (
 );
 
-patches
+patches         
 (
-    patch maxY
+    wall maxY 
     (
         (3 7 6 2)
     )
@@ -52,23 +51,22 @@ patches
     (
         (2 6 5 1)
     )
-    patch minY
+    wall minY
     (
         (1 5 4 0)
     )
-    patch minZ
+    wall minZ
     (
         (0 3 2 1)
     )
-    patch maxZ
+    wall maxZ
     (
         (4 5 6 7)
     )
 );
 
-mergePatchPairs
+mergePatchPairs 
 (
 );
 
-
 // ************************************************************************* //
diff --git a/tutorials/mesh/snappyHexMesh/multiRegionMesh/constant/polyMesh/boundary b/tutorials/mesh/snappyHexMesh/multiRegionMesh/constant/polyMesh/boundary
new file mode 100644
index 0000000000000000000000000000000000000000..591514a953ad0e084033a52d980bc76e9760f15e
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/multiRegionMesh/constant/polyMesh/boundary
@@ -0,0 +1,268 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       polyBoundaryMesh;
+    location    "constant/polyMesh";
+    object      boundary;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+41
+(
+    maxY
+    {
+        type            wall;
+        nFaces          1200;
+        startFace       41630;
+    }
+    minX
+    {
+        type            patch;
+        nFaces          250;
+        startFace       42830;
+    }
+    maxX
+    {
+        type            patch;
+        nFaces          250;
+        startFace       43080;
+    }
+    minY
+    {
+        type            wall;
+        nFaces          1200;
+        startFace       43330;
+    }
+    minZ
+    {
+        type            wall;
+        nFaces          750;
+        startFace       44530;
+    }
+    maxZ
+    {
+        type            wall;
+        nFaces          750;
+        startFace       45280;
+    }
+    bottomAir_minX
+    {
+        type            wall;
+        nFaces          0;
+        startFace       46030;
+    }
+    bottomAir_maxX
+    {
+        type            wall;
+        nFaces          0;
+        startFace       46030;
+    }
+    bottomAir_minY
+    {
+        type            wall;
+        nFaces          0;
+        startFace       46030;
+    }
+    bottomAir_minZ
+    {
+        type            wall;
+        nFaces          0;
+        startFace       46030;
+    }
+    bottomAir_maxZ
+    {
+        type            wall;
+        nFaces          0;
+        startFace       46030;
+    }
+    bottomAir_bottomAir_to_rightSolid
+    {
+        type            wall;
+        nFaces          0;
+        startFace       46030;
+    }
+    bottomAir_bottomAir_to_leftSolid
+    {
+        type            wall;
+        nFaces          0;
+        startFace       46030;
+    }
+    bottomAir_bottomAir_to_heater
+    {
+        type            wall;
+        nFaces          0;
+        startFace       46030;
+    }
+    topAir_maxY
+    {
+        type            wall;
+        nFaces          0;
+        startFace       46030;
+    }
+    topAir_minX
+    {
+        type            wall;
+        nFaces          0;
+        startFace       46030;
+    }
+    topAir_maxX
+    {
+        type            wall;
+        nFaces          0;
+        startFace       46030;
+    }
+    topAir_minZ
+    {
+        type            wall;
+        nFaces          0;
+        startFace       46030;
+    }
+    topAir_maxZ
+    {
+        type            wall;
+        nFaces          0;
+        startFace       46030;
+    }
+    topAir_topAir_to_rightSolid
+    {
+        type            wall;
+        nFaces          0;
+        startFace       46030;
+    }
+    topAir_topAir_to_heater
+    {
+        type            wall;
+        nFaces          0;
+        startFace       46030;
+    }
+    topAir_topAir_to_leftSolid
+    {
+        type            wall;
+        nFaces          0;
+        startFace       46030;
+    }
+    leftSolid_minX
+    {
+        type            wall;
+        nFaces          0;
+        startFace       46030;
+    }
+    leftSolid_minZ
+    {
+        type            wall;
+        nFaces          0;
+        startFace       46030;
+    }
+    leftSolid_maxZ
+    {
+        type            wall;
+        nFaces          0;
+        startFace       46030;
+    }
+    leftSolid_leftSolid_to_bottomAir
+    {
+        type            wall;
+        nFaces          0;
+        startFace       46030;
+    }
+    leftSolid_leftSolid_to_heater
+    {
+        type            wall;
+        nFaces          0;
+        startFace       46030;
+    }
+    leftSolid_leftSolid_to_topAir
+    {
+        type            wall;
+        nFaces          0;
+        startFace       46030;
+    }
+    rightSolid_maxX
+    {
+        type            wall;
+        nFaces          0;
+        startFace       46030;
+    }
+    rightSolid_minZ
+    {
+        type            wall;
+        nFaces          0;
+        startFace       46030;
+    }
+    rightSolid_maxZ
+    {
+        type            wall;
+        nFaces          0;
+        startFace       46030;
+    }
+    rightSolid_rightSolid_to_bottomAir
+    {
+        type            wall;
+        nFaces          0;
+        startFace       46030;
+    }
+    rightSolid_rightSolid_to_topAir
+    {
+        type            wall;
+        nFaces          0;
+        startFace       46030;
+    }
+    rightSolid_rightSolid_to_heater
+    {
+        type            wall;
+        nFaces          0;
+        startFace       46030;
+    }
+    heater_minY
+    {
+        type            wall;
+        nFaces          0;
+        startFace       46030;
+    }
+    heater_minZ
+    {
+        type            wall;
+        nFaces          0;
+        startFace       46030;
+    }
+    heater_maxZ
+    {
+        type            wall;
+        nFaces          0;
+        startFace       46030;
+    }
+    heater_heater_to_topAir
+    {
+        type            wall;
+        nFaces          0;
+        startFace       46030;
+    }
+    heater_heater_to_rightSolid
+    {
+        type            wall;
+        nFaces          0;
+        startFace       46030;
+    }
+    heater_heater_to_leftSolid
+    {
+        type            wall;
+        nFaces          0;
+        startFace       46030;
+    }
+    heater_heater_to_bottomAir
+    {
+        type            wall;
+        nFaces          0;
+        startFace       46030;
+    }
+)
+
+// ************************************************************************* //
diff --git a/tutorials/compressible/sonicFoam/laminar/shockTube/constant/thermodynamicProperties b/tutorials/mesh/snappyHexMesh/multiRegionMesh/constant/regionProperties
similarity index 86%
rename from tutorials/compressible/sonicFoam/laminar/shockTube/constant/thermodynamicProperties
rename to tutorials/mesh/snappyHexMesh/multiRegionMesh/constant/regionProperties
index 99575bf65f9fdb7cb344ff2a4c3b245e342c8b7e..4fc4b886687248dbf1cbc6b1d248c9e22b2d8ea2 100644
--- a/tutorials/compressible/sonicFoam/laminar/shockTube/constant/thermodynamicProperties
+++ b/tutorials/mesh/snappyHexMesh/multiRegionMesh/constant/regionProperties
@@ -11,13 +11,12 @@ FoamFile
     format      ascii;
     class       dictionary;
     location    "constant";
-    object      thermodynamicProperties;
+    object      regionProperties;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-Cv              Cv [ 0 2 -2 -1 0 0 0 ] 717.5;
-
-R               R [ 0 2 -2 -1 0 0 0 ] 287;
+fluidRegionNames ( bottomAir topAir );
 
+solidRegionNames ( heater leftSolid rightSolid );
 
 // ************************************************************************* //
diff --git a/tutorials/mesh/snappyHexMesh/multiRegionMesh/constant/topAir/RASProperties b/tutorials/mesh/snappyHexMesh/multiRegionMesh/constant/topAir/RASProperties
new file mode 100644
index 0000000000000000000000000000000000000000..9037f279053fe08eee8d5191bb8f984e287ff50e
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/multiRegionMesh/constant/topAir/RASProperties
@@ -0,0 +1,97 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      RASProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+RASModel kEpsilon;
+
+//turbulence      on;
+turbulence      off;
+
+laminarCoeffs
+{
+}
+
+kEpsilonCoeffs
+{
+    Cmu              0.09;
+    C1               1.44;
+    C2               1.92;
+    C3               0.85;
+    alphah           1;
+    alphak           1;
+    alphaEps         0.76923;
+}
+
+RNGkEpsilonCoeffs
+{
+    Cmu              0.0845;
+    C1               1.42;
+    C2               1.68;
+    C3               -0.33;
+    alphah           1;
+    alphak           1.39;
+    alphaEps         1.39;
+    eta0             4.38;
+    beta             0.012;
+}
+
+LaunderSharmaKECoeffs
+{
+    Cmu              0.09;
+    C1               1.44;
+    C2               1.92;
+    C3               -0.33;
+    alphah           1;
+    alphak           1;
+    alphaEps         0.76923;
+}
+
+LRRCoeffs
+{
+    Cmu              0.09;
+    Clrr1            1.8;
+    Clrr2            0.6;
+    C1               1.44;
+    C2               1.92;
+    alphah           1;
+    Cs               0.25;
+    Ceps             0.15;
+    alphaR           1;
+    alphaEps         0.76923;
+}
+
+LaunderGibsonRSTMCoeffs
+{
+    Cmu              0.09;
+    Clg1             1.8;
+    Clg2             0.6;
+    C1               1.44;
+    C2               1.92;
+    alphah           1;
+    C1Ref            0.5;
+    C2Ref            0.3;
+    Cs               0.25;
+    Ceps             0.15;
+    alphaR           1;
+    alphaEps         0.76923;
+}
+
+wallFunctionCoeffs
+{
+    kappa            0.4187;
+    E                9;
+}
+
+// ************************************************************************* //
diff --git a/tutorials/mesh/snappyHexMesh/multiRegionMesh/constant/topAir/environmentalProperties b/tutorials/mesh/snappyHexMesh/multiRegionMesh/constant/topAir/environmentalProperties
new file mode 120000
index 0000000000000000000000000000000000000000..9cb87f2395573b73794fb16e426cc3c036882cc5
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/multiRegionMesh/constant/topAir/environmentalProperties
@@ -0,0 +1 @@
+../bottomAir/environmentalProperties
\ No newline at end of file
diff --git a/tutorials/mesh/snappyHexMesh/multiRegionMesh/constant/topAir/thermophysicalProperties b/tutorials/mesh/snappyHexMesh/multiRegionMesh/constant/topAir/thermophysicalProperties
new file mode 100644
index 0000000000000000000000000000000000000000..02fdc143ae4770b373a64bc74f3704da6d5ab69e
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/multiRegionMesh/constant/topAir/thermophysicalProperties
@@ -0,0 +1,21 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      thermophysicalProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+thermoType      hPsiThermo<pureMixture<constTransport<specieThermo<hConstThermo<perfectGas>>>>>;
+
+mixture         air 1 28.9 1000 0 1.8e-05 0.7;
+
+// ************************************************************************* //
diff --git a/tutorials/mesh/snappyHexMesh/multiRegionMesh/constant/topAir/turbulenceProperties b/tutorials/mesh/snappyHexMesh/multiRegionMesh/constant/topAir/turbulenceProperties
new file mode 120000
index 0000000000000000000000000000000000000000..435bf46f771a1525b3b0358a7cb3aea5243f7b91
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/multiRegionMesh/constant/topAir/turbulenceProperties
@@ -0,0 +1 @@
+../bottomAir/turbulenceProperties
\ No newline at end of file
diff --git a/tutorials/mesh/snappyHexMesh/multiRegionMesh/constant/triSurface/bottomAir.stl b/tutorials/mesh/snappyHexMesh/multiRegionMesh/constant/triSurface/bottomAir.stl
new file mode 100644
index 0000000000000000000000000000000000000000..200e4e80fc588717c875ea1dd169b8c742145658
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/multiRegionMesh/constant/triSurface/bottomAir.stl
@@ -0,0 +1,14632 @@
+solid minX
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 -0.04 -0.05
+       vertex -0.1 -0.04 -0.04
+       vertex -0.1 -0.032 -0.04
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 -0.032 -0.04
+       vertex -0.1 -0.032 -0.05
+       vertex -0.1 -0.04 -0.05
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 -0.032 -0.05
+       vertex -0.1 -0.032 -0.04
+       vertex -0.1 -0.024 -0.04
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 -0.024 -0.04
+       vertex -0.1 -0.024 -0.05
+       vertex -0.1 -0.032 -0.05
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 -0.024 -0.05
+       vertex -0.1 -0.024 -0.04
+       vertex -0.1 -0.016 -0.04
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 -0.016 -0.04
+       vertex -0.1 -0.016 -0.05
+       vertex -0.1 -0.024 -0.05
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 -0.016 -0.05
+       vertex -0.1 -0.016 -0.04
+       vertex -0.1 -0.008 -0.04
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 -0.008 -0.04
+       vertex -0.1 -0.008 -0.05
+       vertex -0.1 -0.016 -0.05
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 -0.008 -0.05
+       vertex -0.1 -0.008 -0.04
+       vertex -0.1 0 -0.04
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 0 -0.04
+       vertex -0.1 0 -0.05
+       vertex -0.1 -0.008 -0.05
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 -0.04 -0.04
+       vertex -0.1 -0.04 -0.03
+       vertex -0.1 -0.032 -0.03
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 -0.032 -0.03
+       vertex -0.1 -0.032 -0.04
+       vertex -0.1 -0.04 -0.04
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 -0.032 -0.04
+       vertex -0.1 -0.032 -0.03
+       vertex -0.1 -0.024 -0.03
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 -0.024 -0.03
+       vertex -0.1 -0.024 -0.04
+       vertex -0.1 -0.032 -0.04
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 -0.024 -0.04
+       vertex -0.1 -0.024 -0.03
+       vertex -0.1 -0.016 -0.03
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 -0.016 -0.03
+       vertex -0.1 -0.016 -0.04
+       vertex -0.1 -0.024 -0.04
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 -0.016 -0.04
+       vertex -0.1 -0.016 -0.03
+       vertex -0.1 -0.008 -0.03
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 -0.008 -0.03
+       vertex -0.1 -0.008 -0.04
+       vertex -0.1 -0.016 -0.04
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 -0.008 -0.04
+       vertex -0.1 -0.008 -0.03
+       vertex -0.1 0 -0.03
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 0 -0.03
+       vertex -0.1 0 -0.04
+       vertex -0.1 -0.008 -0.04
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 -0.04 -0.03
+       vertex -0.1 -0.04 -0.02
+       vertex -0.1 -0.032 -0.02
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 -0.032 -0.02
+       vertex -0.1 -0.032 -0.03
+       vertex -0.1 -0.04 -0.03
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 -0.032 -0.03
+       vertex -0.1 -0.032 -0.02
+       vertex -0.1 -0.024 -0.02
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 -0.024 -0.02
+       vertex -0.1 -0.024 -0.03
+       vertex -0.1 -0.032 -0.03
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 -0.024 -0.03
+       vertex -0.1 -0.024 -0.02
+       vertex -0.1 -0.016 -0.02
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 -0.016 -0.02
+       vertex -0.1 -0.016 -0.03
+       vertex -0.1 -0.024 -0.03
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 -0.016 -0.03
+       vertex -0.1 -0.016 -0.02
+       vertex -0.1 -0.008 -0.02
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 -0.008 -0.02
+       vertex -0.1 -0.008 -0.03
+       vertex -0.1 -0.016 -0.03
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 -0.008 -0.03
+       vertex -0.1 -0.008 -0.02
+       vertex -0.1 0 -0.02
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 0 -0.02
+       vertex -0.1 0 -0.03
+       vertex -0.1 -0.008 -0.03
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 -0.04 -0.02
+       vertex -0.1 -0.04 -0.01
+       vertex -0.1 -0.032 -0.01
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 -0.032 -0.01
+       vertex -0.1 -0.032 -0.02
+       vertex -0.1 -0.04 -0.02
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 -0.032 -0.02
+       vertex -0.1 -0.032 -0.01
+       vertex -0.1 -0.024 -0.01
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 -0.024 -0.01
+       vertex -0.1 -0.024 -0.02
+       vertex -0.1 -0.032 -0.02
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 -0.024 -0.02
+       vertex -0.1 -0.024 -0.01
+       vertex -0.1 -0.016 -0.01
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 -0.016 -0.01
+       vertex -0.1 -0.016 -0.02
+       vertex -0.1 -0.024 -0.02
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 -0.016 -0.02
+       vertex -0.1 -0.016 -0.01
+       vertex -0.1 -0.008 -0.01
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 -0.008 -0.01
+       vertex -0.1 -0.008 -0.02
+       vertex -0.1 -0.016 -0.02
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 -0.008 -0.02
+       vertex -0.1 -0.008 -0.01
+       vertex -0.1 0 -0.01
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 0 -0.01
+       vertex -0.1 0 -0.02
+       vertex -0.1 -0.008 -0.02
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 -0.04 -0.01
+       vertex -0.1 -0.04 0
+       vertex -0.1 -0.032 1.156482e-18
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 -0.032 1.156482e-18
+       vertex -0.1 -0.032 -0.01
+       vertex -0.1 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 -0.032 -0.01
+       vertex -0.1 -0.032 1.156482e-18
+       vertex -0.1 -0.024 0
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 -0.024 0
+       vertex -0.1 -0.024 -0.01
+       vertex -0.1 -0.032 -0.01
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 -0.024 -0.01
+       vertex -0.1 -0.024 0
+       vertex -0.1 -0.016 -1.156482e-18
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 -0.016 -1.156482e-18
+       vertex -0.1 -0.016 -0.01
+       vertex -0.1 -0.024 -0.01
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 -0.016 -0.01
+       vertex -0.1 -0.016 -1.156482e-18
+       vertex -0.1 -0.008 0
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 -0.008 0
+       vertex -0.1 -0.008 -0.01
+       vertex -0.1 -0.016 -0.01
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 -0.008 -0.01
+       vertex -0.1 -0.008 0
+       vertex -0.1 0 0
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 0 0
+       vertex -0.1 0 -0.01
+       vertex -0.1 -0.008 -0.01
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 -0.04 0.01
+       vertex -0.1 -0.032 0.01
+       vertex -0.1 -0.032 1.156482e-18
+    endloop
+  endfacet
+  facet normal -1 -0 0
+    outer loop
+       vertex -0.1 -0.032 1.156482e-18
+       vertex -0.1 -0.04 0
+       vertex -0.1 -0.04 0.01
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 -0.032 1.156482e-18
+       vertex -0.1 -0.032 0.01
+       vertex -0.1 -0.024 0.01
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 -0.024 0.01
+       vertex -0.1 -0.024 0
+       vertex -0.1 -0.032 1.156482e-18
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 -0.024 0
+       vertex -0.1 -0.024 0.01
+       vertex -0.1 -0.016 0.01
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 -0.016 0.01
+       vertex -0.1 -0.016 -1.156482e-18
+       vertex -0.1 -0.024 0
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 -0.016 0.01
+       vertex -0.1 -0.008 0.01
+       vertex -0.1 -0.008 0
+    endloop
+  endfacet
+  facet normal -1 -0 0
+    outer loop
+       vertex -0.1 -0.008 0
+       vertex -0.1 -0.016 -1.156482e-18
+       vertex -0.1 -0.016 0.01
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 -0.008 0
+       vertex -0.1 -0.008 0.01
+       vertex -0.1 0 0.01
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 0 0.01
+       vertex -0.1 0 0
+       vertex -0.1 -0.008 0
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 -0.04 0.01
+       vertex -0.1 -0.04 0.02
+       vertex -0.1 -0.032 0.02
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 -0.032 0.02
+       vertex -0.1 -0.032 0.01
+       vertex -0.1 -0.04 0.01
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 -0.032 0.01
+       vertex -0.1 -0.032 0.02
+       vertex -0.1 -0.024 0.02
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 -0.024 0.02
+       vertex -0.1 -0.024 0.01
+       vertex -0.1 -0.032 0.01
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 -0.024 0.01
+       vertex -0.1 -0.024 0.02
+       vertex -0.1 -0.016 0.02
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 -0.016 0.02
+       vertex -0.1 -0.016 0.01
+       vertex -0.1 -0.024 0.01
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 -0.016 0.01
+       vertex -0.1 -0.016 0.02
+       vertex -0.1 -0.008 0.02
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 -0.008 0.02
+       vertex -0.1 -0.008 0.01
+       vertex -0.1 -0.016 0.01
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 -0.008 0.01
+       vertex -0.1 -0.008 0.02
+       vertex -0.1 0 0.02
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 0 0.02
+       vertex -0.1 0 0.01
+       vertex -0.1 -0.008 0.01
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 -0.04 0.02
+       vertex -0.1 -0.04 0.03
+       vertex -0.1 -0.032 0.03
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 -0.032 0.03
+       vertex -0.1 -0.032 0.02
+       vertex -0.1 -0.04 0.02
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 -0.032 0.02
+       vertex -0.1 -0.032 0.03
+       vertex -0.1 -0.024 0.03
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 -0.024 0.03
+       vertex -0.1 -0.024 0.02
+       vertex -0.1 -0.032 0.02
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 -0.024 0.02
+       vertex -0.1 -0.024 0.03
+       vertex -0.1 -0.016 0.03
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 -0.016 0.03
+       vertex -0.1 -0.016 0.02
+       vertex -0.1 -0.024 0.02
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 -0.016 0.02
+       vertex -0.1 -0.016 0.03
+       vertex -0.1 -0.008 0.03
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 -0.008 0.03
+       vertex -0.1 -0.008 0.02
+       vertex -0.1 -0.016 0.02
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 -0.008 0.02
+       vertex -0.1 -0.008 0.03
+       vertex -0.1 0 0.03
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 0 0.03
+       vertex -0.1 0 0.02
+       vertex -0.1 -0.008 0.02
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 -0.04 0.03
+       vertex -0.1 -0.04 0.04
+       vertex -0.1 -0.032 0.04
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 -0.032 0.04
+       vertex -0.1 -0.032 0.03
+       vertex -0.1 -0.04 0.03
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 -0.032 0.03
+       vertex -0.1 -0.032 0.04
+       vertex -0.1 -0.024 0.04
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 -0.024 0.04
+       vertex -0.1 -0.024 0.03
+       vertex -0.1 -0.032 0.03
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 -0.024 0.03
+       vertex -0.1 -0.024 0.04
+       vertex -0.1 -0.016 0.04
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 -0.016 0.04
+       vertex -0.1 -0.016 0.03
+       vertex -0.1 -0.024 0.03
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 -0.016 0.03
+       vertex -0.1 -0.016 0.04
+       vertex -0.1 -0.008 0.04
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 -0.008 0.04
+       vertex -0.1 -0.008 0.03
+       vertex -0.1 -0.016 0.03
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 -0.008 0.03
+       vertex -0.1 -0.008 0.04
+       vertex -0.1 0 0.04
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 0 0.04
+       vertex -0.1 0 0.03
+       vertex -0.1 -0.008 0.03
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 -0.04 0.04
+       vertex -0.1 -0.04 0.05
+       vertex -0.1 -0.032 0.05
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 -0.032 0.05
+       vertex -0.1 -0.032 0.04
+       vertex -0.1 -0.04 0.04
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 -0.032 0.04
+       vertex -0.1 -0.032 0.05
+       vertex -0.1 -0.024 0.05
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 -0.024 0.05
+       vertex -0.1 -0.024 0.04
+       vertex -0.1 -0.032 0.04
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 -0.024 0.04
+       vertex -0.1 -0.024 0.05
+       vertex -0.1 -0.016 0.05
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 -0.016 0.05
+       vertex -0.1 -0.016 0.04
+       vertex -0.1 -0.024 0.04
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 -0.016 0.04
+       vertex -0.1 -0.016 0.05
+       vertex -0.1 -0.008 0.05
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 -0.008 0.05
+       vertex -0.1 -0.008 0.04
+       vertex -0.1 -0.016 0.04
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 -0.008 0.04
+       vertex -0.1 -0.008 0.05
+       vertex -0.1 0 0.05
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 0 0.05
+       vertex -0.1 0 0.04
+       vertex -0.1 -0.008 0.04
+    endloop
+  endfacet
+endsolid minX
+solid maxX
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.04 -0.05
+       vertex 0.1 -0.032 -0.05
+       vertex 0.1 -0.032 -0.04
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.032 -0.04
+       vertex 0.1 -0.04 -0.04
+       vertex 0.1 -0.04 -0.05
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.032 -0.05
+       vertex 0.1 -0.024 -0.05
+       vertex 0.1 -0.024 -0.04
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.024 -0.04
+       vertex 0.1 -0.032 -0.04
+       vertex 0.1 -0.032 -0.05
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.024 -0.05
+       vertex 0.1 -0.016 -0.05
+       vertex 0.1 -0.016 -0.04
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.016 -0.04
+       vertex 0.1 -0.024 -0.04
+       vertex 0.1 -0.024 -0.05
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.016 -0.05
+       vertex 0.1 -0.008 -0.05
+       vertex 0.1 -0.008 -0.04
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.008 -0.04
+       vertex 0.1 -0.016 -0.04
+       vertex 0.1 -0.016 -0.05
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.008 -0.05
+       vertex 0.1 0 -0.05
+       vertex 0.1 0 -0.04
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0 -0.04
+       vertex 0.1 -0.008 -0.04
+       vertex 0.1 -0.008 -0.05
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.04 -0.04
+       vertex 0.1 -0.032 -0.04
+       vertex 0.1 -0.032 -0.03
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.032 -0.03
+       vertex 0.1 -0.04 -0.03
+       vertex 0.1 -0.04 -0.04
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.032 -0.04
+       vertex 0.1 -0.024 -0.04
+       vertex 0.1 -0.024 -0.03
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.024 -0.03
+       vertex 0.1 -0.032 -0.03
+       vertex 0.1 -0.032 -0.04
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.024 -0.04
+       vertex 0.1 -0.016 -0.04
+       vertex 0.1 -0.016 -0.03
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.016 -0.03
+       vertex 0.1 -0.024 -0.03
+       vertex 0.1 -0.024 -0.04
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.016 -0.04
+       vertex 0.1 -0.008 -0.04
+       vertex 0.1 -0.008 -0.03
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.008 -0.03
+       vertex 0.1 -0.016 -0.03
+       vertex 0.1 -0.016 -0.04
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.008 -0.04
+       vertex 0.1 0 -0.04
+       vertex 0.1 0 -0.03
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0 -0.03
+       vertex 0.1 -0.008 -0.03
+       vertex 0.1 -0.008 -0.04
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.04 -0.03
+       vertex 0.1 -0.032 -0.03
+       vertex 0.1 -0.032 -0.02
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.032 -0.02
+       vertex 0.1 -0.04 -0.02
+       vertex 0.1 -0.04 -0.03
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.032 -0.03
+       vertex 0.1 -0.024 -0.03
+       vertex 0.1 -0.024 -0.02
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.024 -0.02
+       vertex 0.1 -0.032 -0.02
+       vertex 0.1 -0.032 -0.03
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.024 -0.03
+       vertex 0.1 -0.016 -0.03
+       vertex 0.1 -0.016 -0.02
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.016 -0.02
+       vertex 0.1 -0.024 -0.02
+       vertex 0.1 -0.024 -0.03
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.016 -0.03
+       vertex 0.1 -0.008 -0.03
+       vertex 0.1 -0.008 -0.02
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.008 -0.02
+       vertex 0.1 -0.016 -0.02
+       vertex 0.1 -0.016 -0.03
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.008 -0.03
+       vertex 0.1 0 -0.03
+       vertex 0.1 0 -0.02
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0 -0.02
+       vertex 0.1 -0.008 -0.02
+       vertex 0.1 -0.008 -0.03
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.04 -0.02
+       vertex 0.1 -0.032 -0.02
+       vertex 0.1 -0.032 -0.01
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.032 -0.01
+       vertex 0.1 -0.04 -0.01
+       vertex 0.1 -0.04 -0.02
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.032 -0.02
+       vertex 0.1 -0.024 -0.02
+       vertex 0.1 -0.024 -0.01
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.024 -0.01
+       vertex 0.1 -0.032 -0.01
+       vertex 0.1 -0.032 -0.02
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.024 -0.02
+       vertex 0.1 -0.016 -0.02
+       vertex 0.1 -0.016 -0.01
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.016 -0.01
+       vertex 0.1 -0.024 -0.01
+       vertex 0.1 -0.024 -0.02
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.016 -0.02
+       vertex 0.1 -0.008 -0.02
+       vertex 0.1 -0.008 -0.01
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.008 -0.01
+       vertex 0.1 -0.016 -0.01
+       vertex 0.1 -0.016 -0.02
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.008 -0.02
+       vertex 0.1 0 -0.02
+       vertex 0.1 0 -0.01
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0 -0.01
+       vertex 0.1 -0.008 -0.01
+       vertex 0.1 -0.008 -0.02
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.04 -0.01
+       vertex 0.1 -0.032 -0.01
+       vertex 0.1 -0.032 1.156482e-18
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.032 1.156482e-18
+       vertex 0.1 -0.04 0
+       vertex 0.1 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.032 -0.01
+       vertex 0.1 -0.024 -0.01
+       vertex 0.1 -0.024 0
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.024 0
+       vertex 0.1 -0.032 1.156482e-18
+       vertex 0.1 -0.032 -0.01
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.024 -0.01
+       vertex 0.1 -0.016 -0.01
+       vertex 0.1 -0.016 -1.156482e-18
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.016 -1.156482e-18
+       vertex 0.1 -0.024 0
+       vertex 0.1 -0.024 -0.01
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.016 -0.01
+       vertex 0.1 -0.008 -0.01
+       vertex 0.1 -0.008 0
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.008 0
+       vertex 0.1 -0.016 -1.156482e-18
+       vertex 0.1 -0.016 -0.01
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.008 -0.01
+       vertex 0.1 0 -0.01
+       vertex 0.1 0 0
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0 0
+       vertex 0.1 -0.008 0
+       vertex 0.1 -0.008 -0.01
+    endloop
+  endfacet
+  facet normal 1 0 -0
+    outer loop
+       vertex 0.1 -0.032 1.156482e-18
+       vertex 0.1 -0.032 0.01
+       vertex 0.1 -0.04 0.01
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.04 0.01
+       vertex 0.1 -0.04 0
+       vertex 0.1 -0.032 1.156482e-18
+    endloop
+  endfacet
+  facet normal 1 -0 0
+    outer loop
+       vertex 0.1 -0.032 1.156482e-18
+       vertex 0.1 -0.024 0
+       vertex 0.1 -0.024 0.01
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.024 0.01
+       vertex 0.1 -0.032 0.01
+       vertex 0.1 -0.032 1.156482e-18
+    endloop
+  endfacet
+  facet normal 1 -0 0
+    outer loop
+       vertex 0.1 -0.024 0
+       vertex 0.1 -0.016 -1.156482e-18
+       vertex 0.1 -0.016 0.01
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.016 0.01
+       vertex 0.1 -0.024 0.01
+       vertex 0.1 -0.024 0
+    endloop
+  endfacet
+  facet normal 1 0 -0
+    outer loop
+       vertex 0.1 -0.008 0
+       vertex 0.1 -0.008 0.01
+       vertex 0.1 -0.016 0.01
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.016 0.01
+       vertex 0.1 -0.016 -1.156482e-18
+       vertex 0.1 -0.008 0
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.008 0
+       vertex 0.1 0 0
+       vertex 0.1 0 0.01
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0 0.01
+       vertex 0.1 -0.008 0.01
+       vertex 0.1 -0.008 0
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.04 0.01
+       vertex 0.1 -0.032 0.01
+       vertex 0.1 -0.032 0.02
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.032 0.02
+       vertex 0.1 -0.04 0.02
+       vertex 0.1 -0.04 0.01
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.032 0.01
+       vertex 0.1 -0.024 0.01
+       vertex 0.1 -0.024 0.02
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.024 0.02
+       vertex 0.1 -0.032 0.02
+       vertex 0.1 -0.032 0.01
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.024 0.01
+       vertex 0.1 -0.016 0.01
+       vertex 0.1 -0.016 0.02
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.016 0.02
+       vertex 0.1 -0.024 0.02
+       vertex 0.1 -0.024 0.01
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.016 0.01
+       vertex 0.1 -0.008 0.01
+       vertex 0.1 -0.008 0.02
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.008 0.02
+       vertex 0.1 -0.016 0.02
+       vertex 0.1 -0.016 0.01
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.008 0.01
+       vertex 0.1 0 0.01
+       vertex 0.1 0 0.02
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0 0.02
+       vertex 0.1 -0.008 0.02
+       vertex 0.1 -0.008 0.01
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.04 0.02
+       vertex 0.1 -0.032 0.02
+       vertex 0.1 -0.032 0.03
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.032 0.03
+       vertex 0.1 -0.04 0.03
+       vertex 0.1 -0.04 0.02
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.032 0.02
+       vertex 0.1 -0.024 0.02
+       vertex 0.1 -0.024 0.03
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.024 0.03
+       vertex 0.1 -0.032 0.03
+       vertex 0.1 -0.032 0.02
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.024 0.02
+       vertex 0.1 -0.016 0.02
+       vertex 0.1 -0.016 0.03
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.016 0.03
+       vertex 0.1 -0.024 0.03
+       vertex 0.1 -0.024 0.02
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.016 0.02
+       vertex 0.1 -0.008 0.02
+       vertex 0.1 -0.008 0.03
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.008 0.03
+       vertex 0.1 -0.016 0.03
+       vertex 0.1 -0.016 0.02
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.008 0.02
+       vertex 0.1 0 0.02
+       vertex 0.1 0 0.03
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0 0.03
+       vertex 0.1 -0.008 0.03
+       vertex 0.1 -0.008 0.02
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.04 0.03
+       vertex 0.1 -0.032 0.03
+       vertex 0.1 -0.032 0.04
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.032 0.04
+       vertex 0.1 -0.04 0.04
+       vertex 0.1 -0.04 0.03
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.032 0.03
+       vertex 0.1 -0.024 0.03
+       vertex 0.1 -0.024 0.04
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.024 0.04
+       vertex 0.1 -0.032 0.04
+       vertex 0.1 -0.032 0.03
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.024 0.03
+       vertex 0.1 -0.016 0.03
+       vertex 0.1 -0.016 0.04
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.016 0.04
+       vertex 0.1 -0.024 0.04
+       vertex 0.1 -0.024 0.03
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.016 0.03
+       vertex 0.1 -0.008 0.03
+       vertex 0.1 -0.008 0.04
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.008 0.04
+       vertex 0.1 -0.016 0.04
+       vertex 0.1 -0.016 0.03
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.008 0.03
+       vertex 0.1 0 0.03
+       vertex 0.1 0 0.04
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0 0.04
+       vertex 0.1 -0.008 0.04
+       vertex 0.1 -0.008 0.03
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.04 0.04
+       vertex 0.1 -0.032 0.04
+       vertex 0.1 -0.032 0.05
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.032 0.05
+       vertex 0.1 -0.04 0.05
+       vertex 0.1 -0.04 0.04
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.032 0.04
+       vertex 0.1 -0.024 0.04
+       vertex 0.1 -0.024 0.05
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.024 0.05
+       vertex 0.1 -0.032 0.05
+       vertex 0.1 -0.032 0.04
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.024 0.04
+       vertex 0.1 -0.016 0.04
+       vertex 0.1 -0.016 0.05
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.016 0.05
+       vertex 0.1 -0.024 0.05
+       vertex 0.1 -0.024 0.04
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.016 0.04
+       vertex 0.1 -0.008 0.04
+       vertex 0.1 -0.008 0.05
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.008 0.05
+       vertex 0.1 -0.016 0.05
+       vertex 0.1 -0.016 0.04
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 -0.008 0.04
+       vertex 0.1 0 0.04
+       vertex 0.1 0 0.05
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0 0.05
+       vertex 0.1 -0.008 0.05
+       vertex 0.1 -0.008 0.04
+    endloop
+  endfacet
+endsolid maxX
+solid minY
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.1 -0.04 -0.05
+       vertex -0.09333333 -0.04 -0.05
+       vertex -0.09333333 -0.04 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.09333333 -0.04 -0.04
+       vertex -0.1 -0.04 -0.04
+       vertex -0.1 -0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.1 -0.04 -0.04
+       vertex -0.09333333 -0.04 -0.04
+       vertex -0.09333333 -0.04 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.09333333 -0.04 -0.03
+       vertex -0.1 -0.04 -0.03
+       vertex -0.1 -0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.1 -0.04 -0.03
+       vertex -0.09333333 -0.04 -0.03
+       vertex -0.09333333 -0.04 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.09333333 -0.04 -0.02
+       vertex -0.1 -0.04 -0.02
+       vertex -0.1 -0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.1 -0.04 -0.02
+       vertex -0.09333333 -0.04 -0.02
+       vertex -0.09333333 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.09333333 -0.04 -0.01
+       vertex -0.1 -0.04 -0.01
+       vertex -0.1 -0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.1 -0.04 -0.01
+       vertex -0.09333333 -0.04 -0.01
+       vertex -0.09333333 -0.04 0
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.09333333 -0.04 0
+       vertex -0.1 -0.04 0
+       vertex -0.1 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.1 -0.04 0
+       vertex -0.09333333 -0.04 0
+       vertex -0.09333333 -0.04 0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.09333333 -0.04 0.01
+       vertex -0.1 -0.04 0.01
+       vertex -0.1 -0.04 0
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.1 -0.04 0.01
+       vertex -0.09333333 -0.04 0.01
+       vertex -0.09333333 -0.04 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.09333333 -0.04 0.02
+       vertex -0.1 -0.04 0.02
+       vertex -0.1 -0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.1 -0.04 0.02
+       vertex -0.09333333 -0.04 0.02
+       vertex -0.09333333 -0.04 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.09333333 -0.04 0.03
+       vertex -0.1 -0.04 0.03
+       vertex -0.1 -0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.1 -0.04 0.03
+       vertex -0.09333333 -0.04 0.03
+       vertex -0.09333333 -0.04 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.09333333 -0.04 0.04
+       vertex -0.1 -0.04 0.04
+       vertex -0.1 -0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.1 -0.04 0.04
+       vertex -0.09333333 -0.04 0.04
+       vertex -0.09333333 -0.04 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.09333333 -0.04 0.05
+       vertex -0.1 -0.04 0.05
+       vertex -0.1 -0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.09333333 -0.04 -0.05
+       vertex -0.08666667 -0.04 -0.05
+       vertex -0.08666667 -0.04 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.08666667 -0.04 -0.04
+       vertex -0.09333333 -0.04 -0.04
+       vertex -0.09333333 -0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.09333333 -0.04 -0.04
+       vertex -0.08666667 -0.04 -0.04
+       vertex -0.08666667 -0.04 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.08666667 -0.04 -0.03
+       vertex -0.09333333 -0.04 -0.03
+       vertex -0.09333333 -0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.09333333 -0.04 -0.03
+       vertex -0.08666667 -0.04 -0.03
+       vertex -0.08666667 -0.04 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.08666667 -0.04 -0.02
+       vertex -0.09333333 -0.04 -0.02
+       vertex -0.09333333 -0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.09333333 -0.04 -0.02
+       vertex -0.08666667 -0.04 -0.02
+       vertex -0.08666667 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.08666667 -0.04 -0.01
+       vertex -0.09333333 -0.04 -0.01
+       vertex -0.09333333 -0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.09333333 -0.04 -0.01
+       vertex -0.08666667 -0.04 -0.01
+       vertex -0.08666667 -0.04 0
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.08666667 -0.04 0
+       vertex -0.09333333 -0.04 0
+       vertex -0.09333333 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.09333333 -0.04 0
+       vertex -0.08666667 -0.04 0
+       vertex -0.08666667 -0.04 0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.08666667 -0.04 0.01
+       vertex -0.09333333 -0.04 0.01
+       vertex -0.09333333 -0.04 0
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.09333333 -0.04 0.01
+       vertex -0.08666667 -0.04 0.01
+       vertex -0.08666667 -0.04 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.08666667 -0.04 0.02
+       vertex -0.09333333 -0.04 0.02
+       vertex -0.09333333 -0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.09333333 -0.04 0.02
+       vertex -0.08666667 -0.04 0.02
+       vertex -0.08666667 -0.04 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.08666667 -0.04 0.03
+       vertex -0.09333333 -0.04 0.03
+       vertex -0.09333333 -0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.09333333 -0.04 0.03
+       vertex -0.08666667 -0.04 0.03
+       vertex -0.08666667 -0.04 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.08666667 -0.04 0.04
+       vertex -0.09333333 -0.04 0.04
+       vertex -0.09333333 -0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.09333333 -0.04 0.04
+       vertex -0.08666667 -0.04 0.04
+       vertex -0.08666667 -0.04 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.08666667 -0.04 0.05
+       vertex -0.09333333 -0.04 0.05
+       vertex -0.09333333 -0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.08666667 -0.04 -0.05
+       vertex -0.08 -0.04 -0.05
+       vertex -0.08 -0.04 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.08 -0.04 -0.04
+       vertex -0.08666667 -0.04 -0.04
+       vertex -0.08666667 -0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.08666667 -0.04 -0.04
+       vertex -0.08 -0.04 -0.04
+       vertex -0.08 -0.04 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.08 -0.04 -0.03
+       vertex -0.08666667 -0.04 -0.03
+       vertex -0.08666667 -0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.08666667 -0.04 -0.03
+       vertex -0.08 -0.04 -0.03
+       vertex -0.08 -0.04 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.08 -0.04 -0.02
+       vertex -0.08666667 -0.04 -0.02
+       vertex -0.08666667 -0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.08666667 -0.04 -0.02
+       vertex -0.08 -0.04 -0.02
+       vertex -0.08 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.08 -0.04 -0.01
+       vertex -0.08666667 -0.04 -0.01
+       vertex -0.08666667 -0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.08666667 -0.04 0
+       vertex -0.08666667 -0.04 -0.01
+       vertex -0.08 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.08 -0.04 -0.01
+       vertex -0.08 -0.04 1.156482e-18
+       vertex -0.08666667 -0.04 0
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.08 -0.04 1.156482e-18
+       vertex -0.08 -0.04 0.01
+       vertex -0.08666667 -0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.08666667 -0.04 0.01
+       vertex -0.08666667 -0.04 0
+       vertex -0.08 -0.04 1.156482e-18
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.08666667 -0.04 0.01
+       vertex -0.08 -0.04 0.01
+       vertex -0.08 -0.04 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.08 -0.04 0.02
+       vertex -0.08666667 -0.04 0.02
+       vertex -0.08666667 -0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.08666667 -0.04 0.02
+       vertex -0.08 -0.04 0.02
+       vertex -0.08 -0.04 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.08 -0.04 0.03
+       vertex -0.08666667 -0.04 0.03
+       vertex -0.08666667 -0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.08666667 -0.04 0.03
+       vertex -0.08 -0.04 0.03
+       vertex -0.08 -0.04 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.08 -0.04 0.04
+       vertex -0.08666667 -0.04 0.04
+       vertex -0.08666667 -0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.08666667 -0.04 0.04
+       vertex -0.08 -0.04 0.04
+       vertex -0.08 -0.04 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.08 -0.04 0.05
+       vertex -0.08666667 -0.04 0.05
+       vertex -0.08666667 -0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.08 -0.04 -0.05
+       vertex -0.07333333 -0.04 -0.05
+       vertex -0.07333333 -0.04 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.07333333 -0.04 -0.04
+       vertex -0.08 -0.04 -0.04
+       vertex -0.08 -0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.08 -0.04 -0.04
+       vertex -0.07333333 -0.04 -0.04
+       vertex -0.07333333 -0.04 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.07333333 -0.04 -0.03
+       vertex -0.08 -0.04 -0.03
+       vertex -0.08 -0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.08 -0.04 -0.03
+       vertex -0.07333333 -0.04 -0.03
+       vertex -0.07333333 -0.04 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.07333333 -0.04 -0.02
+       vertex -0.08 -0.04 -0.02
+       vertex -0.08 -0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.08 -0.04 -0.02
+       vertex -0.07333333 -0.04 -0.02
+       vertex -0.07333333 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.07333333 -0.04 -0.01
+       vertex -0.08 -0.04 -0.01
+       vertex -0.08 -0.04 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.07333333 -0.04 0
+       vertex -0.08 -0.04 1.156482e-18
+       vertex -0.08 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.08 -0.04 -0.01
+       vertex -0.07333333 -0.04 -0.01
+       vertex -0.07333333 -0.04 0
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.08 -0.04 1.156482e-18
+       vertex -0.07333333 -0.04 0
+       vertex -0.07333333 -0.04 0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.07333333 -0.04 0.01
+       vertex -0.08 -0.04 0.01
+       vertex -0.08 -0.04 1.156482e-18
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.08 -0.04 0.01
+       vertex -0.07333333 -0.04 0.01
+       vertex -0.07333333 -0.04 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.07333333 -0.04 0.02
+       vertex -0.08 -0.04 0.02
+       vertex -0.08 -0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.08 -0.04 0.02
+       vertex -0.07333333 -0.04 0.02
+       vertex -0.07333333 -0.04 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.07333333 -0.04 0.03
+       vertex -0.08 -0.04 0.03
+       vertex -0.08 -0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.08 -0.04 0.03
+       vertex -0.07333333 -0.04 0.03
+       vertex -0.07333333 -0.04 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.07333333 -0.04 0.04
+       vertex -0.08 -0.04 0.04
+       vertex -0.08 -0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.08 -0.04 0.04
+       vertex -0.07333333 -0.04 0.04
+       vertex -0.07333333 -0.04 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.07333333 -0.04 0.05
+       vertex -0.08 -0.04 0.05
+       vertex -0.08 -0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.07333333 -0.04 -0.05
+       vertex -0.06666667 -0.04 -0.05
+       vertex -0.06666667 -0.04 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.06666667 -0.04 -0.04
+       vertex -0.07333333 -0.04 -0.04
+       vertex -0.07333333 -0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.07333333 -0.04 -0.04
+       vertex -0.06666667 -0.04 -0.04
+       vertex -0.06666667 -0.04 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.06666667 -0.04 -0.03
+       vertex -0.07333333 -0.04 -0.03
+       vertex -0.07333333 -0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.07333333 -0.04 -0.03
+       vertex -0.06666667 -0.04 -0.03
+       vertex -0.06666667 -0.04 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.06666667 -0.04 -0.02
+       vertex -0.07333333 -0.04 -0.02
+       vertex -0.07333333 -0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.07333333 -0.04 -0.02
+       vertex -0.06666667 -0.04 -0.02
+       vertex -0.06666667 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.06666667 -0.04 -0.01
+       vertex -0.07333333 -0.04 -0.01
+       vertex -0.07333333 -0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.07333333 -0.04 -0.01
+       vertex -0.06666667 -0.04 -0.01
+       vertex -0.06666667 -0.04 0
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.06666667 -0.04 0
+       vertex -0.07333333 -0.04 0
+       vertex -0.07333333 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.07333333 -0.04 0
+       vertex -0.06666667 -0.04 0
+       vertex -0.06666667 -0.04 0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.06666667 -0.04 0.01
+       vertex -0.07333333 -0.04 0.01
+       vertex -0.07333333 -0.04 0
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.07333333 -0.04 0.01
+       vertex -0.06666667 -0.04 0.01
+       vertex -0.06666667 -0.04 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.06666667 -0.04 0.02
+       vertex -0.07333333 -0.04 0.02
+       vertex -0.07333333 -0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.07333333 -0.04 0.02
+       vertex -0.06666667 -0.04 0.02
+       vertex -0.06666667 -0.04 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.06666667 -0.04 0.03
+       vertex -0.07333333 -0.04 0.03
+       vertex -0.07333333 -0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.07333333 -0.04 0.03
+       vertex -0.06666667 -0.04 0.03
+       vertex -0.06666667 -0.04 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.06666667 -0.04 0.04
+       vertex -0.07333333 -0.04 0.04
+       vertex -0.07333333 -0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.07333333 -0.04 0.04
+       vertex -0.06666667 -0.04 0.04
+       vertex -0.06666667 -0.04 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.06666667 -0.04 0.05
+       vertex -0.07333333 -0.04 0.05
+       vertex -0.07333333 -0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.06666667 -0.04 -0.05
+       vertex -0.06 -0.04 -0.05
+       vertex -0.06 -0.04 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.06 -0.04 -0.04
+       vertex -0.06666667 -0.04 -0.04
+       vertex -0.06666667 -0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.06666667 -0.04 -0.04
+       vertex -0.06 -0.04 -0.04
+       vertex -0.06 -0.04 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.06 -0.04 -0.03
+       vertex -0.06666667 -0.04 -0.03
+       vertex -0.06666667 -0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.06666667 -0.04 -0.03
+       vertex -0.06 -0.04 -0.03
+       vertex -0.06 -0.04 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.06 -0.04 -0.02
+       vertex -0.06666667 -0.04 -0.02
+       vertex -0.06666667 -0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.06666667 -0.04 -0.02
+       vertex -0.06 -0.04 -0.02
+       vertex -0.06 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.06 -0.04 -0.01
+       vertex -0.06666667 -0.04 -0.01
+       vertex -0.06666667 -0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.06666667 -0.04 -0.01
+       vertex -0.06 -0.04 -0.01
+       vertex -0.06 -0.04 0
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.06 -0.04 0
+       vertex -0.06666667 -0.04 0
+       vertex -0.06666667 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.06666667 -0.04 0
+       vertex -0.06 -0.04 0
+       vertex -0.06 -0.04 0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.06 -0.04 0.01
+       vertex -0.06666667 -0.04 0.01
+       vertex -0.06666667 -0.04 0
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.06666667 -0.04 0.01
+       vertex -0.06 -0.04 0.01
+       vertex -0.06 -0.04 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.06 -0.04 0.02
+       vertex -0.06666667 -0.04 0.02
+       vertex -0.06666667 -0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.06666667 -0.04 0.02
+       vertex -0.06 -0.04 0.02
+       vertex -0.06 -0.04 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.06 -0.04 0.03
+       vertex -0.06666667 -0.04 0.03
+       vertex -0.06666667 -0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.06666667 -0.04 0.03
+       vertex -0.06 -0.04 0.03
+       vertex -0.06 -0.04 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.06 -0.04 0.04
+       vertex -0.06666667 -0.04 0.04
+       vertex -0.06666667 -0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.06666667 -0.04 0.04
+       vertex -0.06 -0.04 0.04
+       vertex -0.06 -0.04 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.06 -0.04 0.05
+       vertex -0.06666667 -0.04 0.05
+       vertex -0.06666667 -0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.06 -0.04 -0.05
+       vertex -0.05333333 -0.04 -0.05
+       vertex -0.05333333 -0.04 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.05333333 -0.04 -0.04
+       vertex -0.06 -0.04 -0.04
+       vertex -0.06 -0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.06 -0.04 -0.04
+       vertex -0.05333333 -0.04 -0.04
+       vertex -0.05333333 -0.04 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.05333333 -0.04 -0.03
+       vertex -0.06 -0.04 -0.03
+       vertex -0.06 -0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.06 -0.04 -0.03
+       vertex -0.05333333 -0.04 -0.03
+       vertex -0.05333333 -0.04 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.05333333 -0.04 -0.02
+       vertex -0.06 -0.04 -0.02
+       vertex -0.06 -0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.06 -0.04 -0.02
+       vertex -0.05333333 -0.04 -0.02
+       vertex -0.05333333 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.05333333 -0.04 -0.01
+       vertex -0.06 -0.04 -0.01
+       vertex -0.06 -0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.06 -0.04 -0.01
+       vertex -0.05333333 -0.04 -0.01
+       vertex -0.05333333 -0.04 0
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.05333333 -0.04 0
+       vertex -0.06 -0.04 0
+       vertex -0.06 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.06 -0.04 0
+       vertex -0.05333333 -0.04 0
+       vertex -0.05333333 -0.04 0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.05333333 -0.04 0.01
+       vertex -0.06 -0.04 0.01
+       vertex -0.06 -0.04 0
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.06 -0.04 0.01
+       vertex -0.05333333 -0.04 0.01
+       vertex -0.05333333 -0.04 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.05333333 -0.04 0.02
+       vertex -0.06 -0.04 0.02
+       vertex -0.06 -0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.06 -0.04 0.02
+       vertex -0.05333333 -0.04 0.02
+       vertex -0.05333333 -0.04 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.05333333 -0.04 0.03
+       vertex -0.06 -0.04 0.03
+       vertex -0.06 -0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.06 -0.04 0.03
+       vertex -0.05333333 -0.04 0.03
+       vertex -0.05333333 -0.04 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.05333333 -0.04 0.04
+       vertex -0.06 -0.04 0.04
+       vertex -0.06 -0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.06 -0.04 0.04
+       vertex -0.05333333 -0.04 0.04
+       vertex -0.05333333 -0.04 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.05333333 -0.04 0.05
+       vertex -0.06 -0.04 0.05
+       vertex -0.06 -0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.05333333 -0.04 -0.05
+       vertex -0.04666667 -0.04 -0.05
+       vertex -0.04666667 -0.04 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.04666667 -0.04 -0.04
+       vertex -0.05333333 -0.04 -0.04
+       vertex -0.05333333 -0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.05333333 -0.04 -0.04
+       vertex -0.04666667 -0.04 -0.04
+       vertex -0.04666667 -0.04 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.04666667 -0.04 -0.03
+       vertex -0.05333333 -0.04 -0.03
+       vertex -0.05333333 -0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.05333333 -0.04 -0.03
+       vertex -0.04666667 -0.04 -0.03
+       vertex -0.04666667 -0.04 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.04666667 -0.04 -0.02
+       vertex -0.05333333 -0.04 -0.02
+       vertex -0.05333333 -0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.05333333 -0.04 -0.02
+       vertex -0.04666667 -0.04 -0.02
+       vertex -0.04666667 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.04666667 -0.04 -0.01
+       vertex -0.05333333 -0.04 -0.01
+       vertex -0.05333333 -0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.05333333 -0.04 -0.01
+       vertex -0.04666667 -0.04 -0.01
+       vertex -0.04666667 -0.04 0
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.04666667 -0.04 0
+       vertex -0.05333333 -0.04 0
+       vertex -0.05333333 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.05333333 -0.04 0
+       vertex -0.04666667 -0.04 0
+       vertex -0.04666667 -0.04 0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.04666667 -0.04 0.01
+       vertex -0.05333333 -0.04 0.01
+       vertex -0.05333333 -0.04 0
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.05333333 -0.04 0.01
+       vertex -0.04666667 -0.04 0.01
+       vertex -0.04666667 -0.04 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.04666667 -0.04 0.02
+       vertex -0.05333333 -0.04 0.02
+       vertex -0.05333333 -0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.05333333 -0.04 0.02
+       vertex -0.04666667 -0.04 0.02
+       vertex -0.04666667 -0.04 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.04666667 -0.04 0.03
+       vertex -0.05333333 -0.04 0.03
+       vertex -0.05333333 -0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.05333333 -0.04 0.03
+       vertex -0.04666667 -0.04 0.03
+       vertex -0.04666667 -0.04 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.04666667 -0.04 0.04
+       vertex -0.05333333 -0.04 0.04
+       vertex -0.05333333 -0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.05333333 -0.04 0.04
+       vertex -0.04666667 -0.04 0.04
+       vertex -0.04666667 -0.04 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.04666667 -0.04 0.05
+       vertex -0.05333333 -0.04 0.05
+       vertex -0.05333333 -0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.04666667 -0.04 -0.05
+       vertex -0.04 -0.04 -0.05
+       vertex -0.04 -0.04 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.04 -0.04 -0.04
+       vertex -0.04666667 -0.04 -0.04
+       vertex -0.04666667 -0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.04666667 -0.04 -0.04
+       vertex -0.04 -0.04 -0.04
+       vertex -0.04 -0.04 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.04 -0.04 -0.03
+       vertex -0.04666667 -0.04 -0.03
+       vertex -0.04666667 -0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.04666667 -0.04 -0.03
+       vertex -0.04 -0.04 -0.03
+       vertex -0.04 -0.04 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.04 -0.04 -0.02
+       vertex -0.04666667 -0.04 -0.02
+       vertex -0.04666667 -0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.04666667 -0.04 -0.02
+       vertex -0.04 -0.04 -0.02
+       vertex -0.04 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.04 -0.04 -0.01
+       vertex -0.04666667 -0.04 -0.01
+       vertex -0.04666667 -0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.04666667 -0.04 -0.01
+       vertex -0.04 -0.04 -0.01
+       vertex -0.04 -0.04 0
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.04 -0.04 0
+       vertex -0.04666667 -0.04 0
+       vertex -0.04666667 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.04666667 -0.04 0
+       vertex -0.04 -0.04 0
+       vertex -0.04 -0.04 0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.04 -0.04 0.01
+       vertex -0.04666667 -0.04 0.01
+       vertex -0.04666667 -0.04 0
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.04666667 -0.04 0.01
+       vertex -0.04 -0.04 0.01
+       vertex -0.04 -0.04 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.04 -0.04 0.02
+       vertex -0.04666667 -0.04 0.02
+       vertex -0.04666667 -0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.04666667 -0.04 0.02
+       vertex -0.04 -0.04 0.02
+       vertex -0.04 -0.04 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.04 -0.04 0.03
+       vertex -0.04666667 -0.04 0.03
+       vertex -0.04666667 -0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.04666667 -0.04 0.03
+       vertex -0.04 -0.04 0.03
+       vertex -0.04 -0.04 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.04 -0.04 0.04
+       vertex -0.04666667 -0.04 0.04
+       vertex -0.04666667 -0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.04666667 -0.04 0.04
+       vertex -0.04 -0.04 0.04
+       vertex -0.04 -0.04 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.04 -0.04 0.05
+       vertex -0.04666667 -0.04 0.05
+       vertex -0.04666667 -0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.04 -0.04 -0.05
+       vertex -0.03333333 -0.04 -0.05
+       vertex -0.03333333 -0.04 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.03333333 -0.04 -0.04
+       vertex -0.04 -0.04 -0.04
+       vertex -0.04 -0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.04 -0.04 -0.04
+       vertex -0.03333333 -0.04 -0.04
+       vertex -0.03333333 -0.04 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.03333333 -0.04 -0.03
+       vertex -0.04 -0.04 -0.03
+       vertex -0.04 -0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.04 -0.04 -0.03
+       vertex -0.03333333 -0.04 -0.03
+       vertex -0.03333333 -0.04 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.03333333 -0.04 -0.02
+       vertex -0.04 -0.04 -0.02
+       vertex -0.04 -0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.04 -0.04 -0.02
+       vertex -0.03333333 -0.04 -0.02
+       vertex -0.03333333 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.03333333 -0.04 -0.01
+       vertex -0.04 -0.04 -0.01
+       vertex -0.04 -0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.04 -0.04 -0.01
+       vertex -0.03333333 -0.04 -0.01
+       vertex -0.03333333 -0.04 0
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.03333333 -0.04 0
+       vertex -0.04 -0.04 0
+       vertex -0.04 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.04 -0.04 0
+       vertex -0.03333333 -0.04 0
+       vertex -0.03333333 -0.04 0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.03333333 -0.04 0.01
+       vertex -0.04 -0.04 0.01
+       vertex -0.04 -0.04 0
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.04 -0.04 0.01
+       vertex -0.03333333 -0.04 0.01
+       vertex -0.03333333 -0.04 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.03333333 -0.04 0.02
+       vertex -0.04 -0.04 0.02
+       vertex -0.04 -0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.04 -0.04 0.02
+       vertex -0.03333333 -0.04 0.02
+       vertex -0.03333333 -0.04 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.03333333 -0.04 0.03
+       vertex -0.04 -0.04 0.03
+       vertex -0.04 -0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.04 -0.04 0.03
+       vertex -0.03333333 -0.04 0.03
+       vertex -0.03333333 -0.04 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.03333333 -0.04 0.04
+       vertex -0.04 -0.04 0.04
+       vertex -0.04 -0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.04 -0.04 0.04
+       vertex -0.03333333 -0.04 0.04
+       vertex -0.03333333 -0.04 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.03333333 -0.04 0.05
+       vertex -0.04 -0.04 0.05
+       vertex -0.04 -0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.03333333 -0.04 -0.05
+       vertex -0.02666667 -0.04 -0.05
+       vertex -0.02666667 -0.04 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.02666667 -0.04 -0.04
+       vertex -0.03333333 -0.04 -0.04
+       vertex -0.03333333 -0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.03333333 -0.04 -0.04
+       vertex -0.02666667 -0.04 -0.04
+       vertex -0.02666667 -0.04 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.02666667 -0.04 -0.03
+       vertex -0.03333333 -0.04 -0.03
+       vertex -0.03333333 -0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.03333333 -0.04 -0.03
+       vertex -0.02666667 -0.04 -0.03
+       vertex -0.02666667 -0.04 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.02666667 -0.04 -0.02
+       vertex -0.03333333 -0.04 -0.02
+       vertex -0.03333333 -0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.03333333 -0.04 -0.02
+       vertex -0.02666667 -0.04 -0.02
+       vertex -0.02666667 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.02666667 -0.04 -0.01
+       vertex -0.03333333 -0.04 -0.01
+       vertex -0.03333333 -0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.03333333 -0.04 -0.01
+       vertex -0.02666667 -0.04 -0.01
+       vertex -0.02666667 -0.04 0
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.02666667 -0.04 0
+       vertex -0.03333333 -0.04 0
+       vertex -0.03333333 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.03333333 -0.04 0
+       vertex -0.02666667 -0.04 0
+       vertex -0.02666667 -0.04 0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.02666667 -0.04 0.01
+       vertex -0.03333333 -0.04 0.01
+       vertex -0.03333333 -0.04 0
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.03333333 -0.04 0.01
+       vertex -0.02666667 -0.04 0.01
+       vertex -0.02666667 -0.04 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.02666667 -0.04 0.02
+       vertex -0.03333333 -0.04 0.02
+       vertex -0.03333333 -0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.03333333 -0.04 0.02
+       vertex -0.02666667 -0.04 0.02
+       vertex -0.02666667 -0.04 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.02666667 -0.04 0.03
+       vertex -0.03333333 -0.04 0.03
+       vertex -0.03333333 -0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.03333333 -0.04 0.03
+       vertex -0.02666667 -0.04 0.03
+       vertex -0.02666667 -0.04 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.02666667 -0.04 0.04
+       vertex -0.03333333 -0.04 0.04
+       vertex -0.03333333 -0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.03333333 -0.04 0.04
+       vertex -0.02666667 -0.04 0.04
+       vertex -0.02666667 -0.04 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.02666667 -0.04 0.05
+       vertex -0.03333333 -0.04 0.05
+       vertex -0.03333333 -0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.02666667 -0.04 -0.05
+       vertex -0.02 -0.04 -0.05
+       vertex -0.02 -0.04 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.02 -0.04 -0.04
+       vertex -0.02666667 -0.04 -0.04
+       vertex -0.02666667 -0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.02666667 -0.04 -0.04
+       vertex -0.02 -0.04 -0.04
+       vertex -0.02 -0.04 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.02 -0.04 -0.03
+       vertex -0.02666667 -0.04 -0.03
+       vertex -0.02666667 -0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.02666667 -0.04 -0.03
+       vertex -0.02 -0.04 -0.03
+       vertex -0.02 -0.04 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.02 -0.04 -0.02
+       vertex -0.02666667 -0.04 -0.02
+       vertex -0.02666667 -0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.02666667 -0.04 -0.02
+       vertex -0.02 -0.04 -0.02
+       vertex -0.02 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.02 -0.04 -0.01
+       vertex -0.02666667 -0.04 -0.01
+       vertex -0.02666667 -0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.02666667 -0.04 -0.01
+       vertex -0.02 -0.04 -0.01
+       vertex -0.02 -0.04 0
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.02 -0.04 0
+       vertex -0.02666667 -0.04 0
+       vertex -0.02666667 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.02666667 -0.04 0
+       vertex -0.02 -0.04 0
+       vertex -0.02 -0.04 0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.02 -0.04 0.01
+       vertex -0.02666667 -0.04 0.01
+       vertex -0.02666667 -0.04 0
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.02666667 -0.04 0.01
+       vertex -0.02 -0.04 0.01
+       vertex -0.02 -0.04 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.02 -0.04 0.02
+       vertex -0.02666667 -0.04 0.02
+       vertex -0.02666667 -0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.02666667 -0.04 0.02
+       vertex -0.02 -0.04 0.02
+       vertex -0.02 -0.04 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.02 -0.04 0.03
+       vertex -0.02666667 -0.04 0.03
+       vertex -0.02666667 -0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.02666667 -0.04 0.03
+       vertex -0.02 -0.04 0.03
+       vertex -0.02 -0.04 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.02 -0.04 0.04
+       vertex -0.02666667 -0.04 0.04
+       vertex -0.02666667 -0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.02666667 -0.04 0.04
+       vertex -0.02 -0.04 0.04
+       vertex -0.02 -0.04 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.02 -0.04 0.05
+       vertex -0.02666667 -0.04 0.05
+       vertex -0.02666667 -0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.02 -0.04 -0.05
+       vertex -0.01333333 -0.04 -0.05
+       vertex -0.01333333 -0.04 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.01333333 -0.04 -0.04
+       vertex -0.02 -0.04 -0.04
+       vertex -0.02 -0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.02 -0.04 -0.04
+       vertex -0.01333333 -0.04 -0.04
+       vertex -0.01333333 -0.04 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.01333333 -0.04 -0.03
+       vertex -0.02 -0.04 -0.03
+       vertex -0.02 -0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.02 -0.04 -0.03
+       vertex -0.01333333 -0.04 -0.03
+       vertex -0.01333333 -0.04 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.01333333 -0.04 -0.02
+       vertex -0.02 -0.04 -0.02
+       vertex -0.02 -0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.02 -0.04 -0.02
+       vertex -0.01333333 -0.04 -0.02
+       vertex -0.01333333 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.01333333 -0.04 -0.01
+       vertex -0.02 -0.04 -0.01
+       vertex -0.02 -0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.02 -0.04 -0.01
+       vertex -0.01333333 -0.04 -0.01
+       vertex -0.01333333 -0.04 0
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.01333333 -0.04 0
+       vertex -0.02 -0.04 0
+       vertex -0.02 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.02 -0.04 0
+       vertex -0.01333333 -0.04 0
+       vertex -0.01333333 -0.04 0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.01333333 -0.04 0.01
+       vertex -0.02 -0.04 0.01
+       vertex -0.02 -0.04 0
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.02 -0.04 0.01
+       vertex -0.01333333 -0.04 0.01
+       vertex -0.01333333 -0.04 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.01333333 -0.04 0.02
+       vertex -0.02 -0.04 0.02
+       vertex -0.02 -0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.02 -0.04 0.02
+       vertex -0.01333333 -0.04 0.02
+       vertex -0.01333333 -0.04 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.01333333 -0.04 0.03
+       vertex -0.02 -0.04 0.03
+       vertex -0.02 -0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.02 -0.04 0.03
+       vertex -0.01333333 -0.04 0.03
+       vertex -0.01333333 -0.04 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.01333333 -0.04 0.04
+       vertex -0.02 -0.04 0.04
+       vertex -0.02 -0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.02 -0.04 0.04
+       vertex -0.01333333 -0.04 0.04
+       vertex -0.01333333 -0.04 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.01333333 -0.04 0.05
+       vertex -0.02 -0.04 0.05
+       vertex -0.02 -0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.01333333 -0.04 -0.05
+       vertex -0.006666667 -0.04 -0.05
+       vertex -0.006666667 -0.04 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.006666667 -0.04 -0.04
+       vertex -0.01333333 -0.04 -0.04
+       vertex -0.01333333 -0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.01333333 -0.04 -0.04
+       vertex -0.006666667 -0.04 -0.04
+       vertex -0.006666667 -0.04 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.006666667 -0.04 -0.03
+       vertex -0.01333333 -0.04 -0.03
+       vertex -0.01333333 -0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.01333333 -0.04 -0.03
+       vertex -0.006666667 -0.04 -0.03
+       vertex -0.006666667 -0.04 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.006666667 -0.04 -0.02
+       vertex -0.01333333 -0.04 -0.02
+       vertex -0.01333333 -0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.01333333 -0.04 -0.02
+       vertex -0.006666667 -0.04 -0.02
+       vertex -0.006666667 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.006666667 -0.04 -0.01
+       vertex -0.01333333 -0.04 -0.01
+       vertex -0.01333333 -0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.01333333 -0.04 0.01
+       vertex -0.006666667 -0.04 0.01
+       vertex -0.006666667 -0.04 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.006666667 -0.04 0.02
+       vertex -0.01333333 -0.04 0.02
+       vertex -0.01333333 -0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.01333333 -0.04 0.02
+       vertex -0.006666667 -0.04 0.02
+       vertex -0.006666667 -0.04 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.006666667 -0.04 0.03
+       vertex -0.01333333 -0.04 0.03
+       vertex -0.01333333 -0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.01333333 -0.04 0.03
+       vertex -0.006666667 -0.04 0.03
+       vertex -0.006666667 -0.04 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.006666667 -0.04 0.04
+       vertex -0.01333333 -0.04 0.04
+       vertex -0.01333333 -0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.01333333 -0.04 0.04
+       vertex -0.006666667 -0.04 0.04
+       vertex -0.006666667 -0.04 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.006666667 -0.04 0.05
+       vertex -0.01333333 -0.04 0.05
+       vertex -0.01333333 -0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.006666667 -0.04 -0.05
+       vertex 0 -0.04 -0.05
+       vertex 0 -0.04 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0 -0.04 -0.04
+       vertex -0.006666667 -0.04 -0.04
+       vertex -0.006666667 -0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.006666667 -0.04 -0.04
+       vertex 0 -0.04 -0.04
+       vertex 0 -0.04 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0 -0.04 -0.03
+       vertex -0.006666667 -0.04 -0.03
+       vertex -0.006666667 -0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.006666667 -0.04 -0.03
+       vertex 0 -0.04 -0.03
+       vertex 0 -0.04 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0 -0.04 -0.02
+       vertex -0.006666667 -0.04 -0.02
+       vertex -0.006666667 -0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.006666667 -0.04 -0.02
+       vertex 0 -0.04 -0.02
+       vertex 0 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0 -0.04 -0.01
+       vertex -0.006666667 -0.04 -0.01
+       vertex -0.006666667 -0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.006666667 -0.04 0.01
+       vertex 0 -0.04 0.01
+       vertex 0 -0.04 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0 -0.04 0.02
+       vertex -0.006666667 -0.04 0.02
+       vertex -0.006666667 -0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.006666667 -0.04 0.02
+       vertex 0 -0.04 0.02
+       vertex 0 -0.04 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0 -0.04 0.03
+       vertex -0.006666667 -0.04 0.03
+       vertex -0.006666667 -0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.006666667 -0.04 0.03
+       vertex 0 -0.04 0.03
+       vertex 0 -0.04 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0 -0.04 0.04
+       vertex -0.006666667 -0.04 0.04
+       vertex -0.006666667 -0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.006666667 -0.04 0.04
+       vertex 0 -0.04 0.04
+       vertex 0 -0.04 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0 -0.04 0.05
+       vertex -0.006666667 -0.04 0.05
+       vertex -0.006666667 -0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0 -0.04 -0.05
+       vertex 0.006666667 -0.04 -0.05
+       vertex 0.006666667 -0.04 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.006666667 -0.04 -0.04
+       vertex 0 -0.04 -0.04
+       vertex 0 -0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0 -0.04 -0.04
+       vertex 0.006666667 -0.04 -0.04
+       vertex 0.006666667 -0.04 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.006666667 -0.04 -0.03
+       vertex 0 -0.04 -0.03
+       vertex 0 -0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0 -0.04 -0.03
+       vertex 0.006666667 -0.04 -0.03
+       vertex 0.006666667 -0.04 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.006666667 -0.04 -0.02
+       vertex 0 -0.04 -0.02
+       vertex 0 -0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0 -0.04 -0.02
+       vertex 0.006666667 -0.04 -0.02
+       vertex 0.006666667 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.006666667 -0.04 -0.01
+       vertex 0 -0.04 -0.01
+       vertex 0 -0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0 -0.04 0.01
+       vertex 0.006666667 -0.04 0.01
+       vertex 0.006666667 -0.04 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.006666667 -0.04 0.02
+       vertex 0 -0.04 0.02
+       vertex 0 -0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0 -0.04 0.02
+       vertex 0.006666667 -0.04 0.02
+       vertex 0.006666667 -0.04 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.006666667 -0.04 0.03
+       vertex 0 -0.04 0.03
+       vertex 0 -0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0 -0.04 0.03
+       vertex 0.006666667 -0.04 0.03
+       vertex 0.006666667 -0.04 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.006666667 -0.04 0.04
+       vertex 0 -0.04 0.04
+       vertex 0 -0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0 -0.04 0.04
+       vertex 0.006666667 -0.04 0.04
+       vertex 0.006666667 -0.04 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.006666667 -0.04 0.05
+       vertex 0 -0.04 0.05
+       vertex 0 -0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.006666667 -0.04 -0.05
+       vertex 0.01333333 -0.04 -0.05
+       vertex 0.01333333 -0.04 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.01333333 -0.04 -0.04
+       vertex 0.006666667 -0.04 -0.04
+       vertex 0.006666667 -0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.006666667 -0.04 -0.04
+       vertex 0.01333333 -0.04 -0.04
+       vertex 0.01333333 -0.04 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.01333333 -0.04 -0.03
+       vertex 0.006666667 -0.04 -0.03
+       vertex 0.006666667 -0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.006666667 -0.04 -0.03
+       vertex 0.01333333 -0.04 -0.03
+       vertex 0.01333333 -0.04 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.01333333 -0.04 -0.02
+       vertex 0.006666667 -0.04 -0.02
+       vertex 0.006666667 -0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.006666667 -0.04 -0.02
+       vertex 0.01333333 -0.04 -0.02
+       vertex 0.01333333 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.01333333 -0.04 -0.01
+       vertex 0.006666667 -0.04 -0.01
+       vertex 0.006666667 -0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.006666667 -0.04 0.01
+       vertex 0.01333333 -0.04 0.01
+       vertex 0.01333333 -0.04 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.01333333 -0.04 0.02
+       vertex 0.006666667 -0.04 0.02
+       vertex 0.006666667 -0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.006666667 -0.04 0.02
+       vertex 0.01333333 -0.04 0.02
+       vertex 0.01333333 -0.04 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.01333333 -0.04 0.03
+       vertex 0.006666667 -0.04 0.03
+       vertex 0.006666667 -0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.006666667 -0.04 0.03
+       vertex 0.01333333 -0.04 0.03
+       vertex 0.01333333 -0.04 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.01333333 -0.04 0.04
+       vertex 0.006666667 -0.04 0.04
+       vertex 0.006666667 -0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.006666667 -0.04 0.04
+       vertex 0.01333333 -0.04 0.04
+       vertex 0.01333333 -0.04 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.01333333 -0.04 0.05
+       vertex 0.006666667 -0.04 0.05
+       vertex 0.006666667 -0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.01333333 -0.04 -0.05
+       vertex 0.02 -0.04 -0.05
+       vertex 0.02 -0.04 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.02 -0.04 -0.04
+       vertex 0.01333333 -0.04 -0.04
+       vertex 0.01333333 -0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.01333333 -0.04 -0.04
+       vertex 0.02 -0.04 -0.04
+       vertex 0.02 -0.04 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.02 -0.04 -0.03
+       vertex 0.01333333 -0.04 -0.03
+       vertex 0.01333333 -0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.01333333 -0.04 -0.03
+       vertex 0.02 -0.04 -0.03
+       vertex 0.02 -0.04 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.02 -0.04 -0.02
+       vertex 0.01333333 -0.04 -0.02
+       vertex 0.01333333 -0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.01333333 -0.04 -0.02
+       vertex 0.02 -0.04 -0.02
+       vertex 0.02 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.02 -0.04 -0.01
+       vertex 0.01333333 -0.04 -0.01
+       vertex 0.01333333 -0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.01333333 -0.04 -0.01
+       vertex 0.02 -0.04 -0.01
+       vertex 0.02 -0.04 0
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.02 -0.04 0
+       vertex 0.01333333 -0.04 0
+       vertex 0.01333333 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.01333333 -0.04 0
+       vertex 0.02 -0.04 0
+       vertex 0.02 -0.04 0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.02 -0.04 0.01
+       vertex 0.01333333 -0.04 0.01
+       vertex 0.01333333 -0.04 0
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.01333333 -0.04 0.01
+       vertex 0.02 -0.04 0.01
+       vertex 0.02 -0.04 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.02 -0.04 0.02
+       vertex 0.01333333 -0.04 0.02
+       vertex 0.01333333 -0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.01333333 -0.04 0.02
+       vertex 0.02 -0.04 0.02
+       vertex 0.02 -0.04 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.02 -0.04 0.03
+       vertex 0.01333333 -0.04 0.03
+       vertex 0.01333333 -0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.01333333 -0.04 0.03
+       vertex 0.02 -0.04 0.03
+       vertex 0.02 -0.04 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.02 -0.04 0.04
+       vertex 0.01333333 -0.04 0.04
+       vertex 0.01333333 -0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.01333333 -0.04 0.04
+       vertex 0.02 -0.04 0.04
+       vertex 0.02 -0.04 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.02 -0.04 0.05
+       vertex 0.01333333 -0.04 0.05
+       vertex 0.01333333 -0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.02 -0.04 -0.05
+       vertex 0.02666667 -0.04 -0.05
+       vertex 0.02666667 -0.04 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.02666667 -0.04 -0.04
+       vertex 0.02 -0.04 -0.04
+       vertex 0.02 -0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.02 -0.04 -0.04
+       vertex 0.02666667 -0.04 -0.04
+       vertex 0.02666667 -0.04 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.02666667 -0.04 -0.03
+       vertex 0.02 -0.04 -0.03
+       vertex 0.02 -0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.02 -0.04 -0.03
+       vertex 0.02666667 -0.04 -0.03
+       vertex 0.02666667 -0.04 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.02666667 -0.04 -0.02
+       vertex 0.02 -0.04 -0.02
+       vertex 0.02 -0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.02 -0.04 -0.02
+       vertex 0.02666667 -0.04 -0.02
+       vertex 0.02666667 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.02666667 -0.04 -0.01
+       vertex 0.02 -0.04 -0.01
+       vertex 0.02 -0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.02 -0.04 -0.01
+       vertex 0.02666667 -0.04 -0.01
+       vertex 0.02666667 -0.04 5.782412e-19
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.02666667 -0.04 5.782412e-19
+       vertex 0.02 -0.04 0
+       vertex 0.02 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.02666667 -0.04 5.782412e-19
+       vertex 0.02666667 -0.04 0.01
+       vertex 0.02 -0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.02 -0.04 0.01
+       vertex 0.02 -0.04 0
+       vertex 0.02666667 -0.04 5.782412e-19
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.02 -0.04 0.01
+       vertex 0.02666667 -0.04 0.01
+       vertex 0.02666667 -0.04 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.02666667 -0.04 0.02
+       vertex 0.02 -0.04 0.02
+       vertex 0.02 -0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.02 -0.04 0.02
+       vertex 0.02666667 -0.04 0.02
+       vertex 0.02666667 -0.04 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.02666667 -0.04 0.03
+       vertex 0.02 -0.04 0.03
+       vertex 0.02 -0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.02 -0.04 0.03
+       vertex 0.02666667 -0.04 0.03
+       vertex 0.02666667 -0.04 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.02666667 -0.04 0.04
+       vertex 0.02 -0.04 0.04
+       vertex 0.02 -0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.02 -0.04 0.04
+       vertex 0.02666667 -0.04 0.04
+       vertex 0.02666667 -0.04 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.02666667 -0.04 0.05
+       vertex 0.02 -0.04 0.05
+       vertex 0.02 -0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.02666667 -0.04 -0.05
+       vertex 0.03333333 -0.04 -0.05
+       vertex 0.03333333 -0.04 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.03333333 -0.04 -0.04
+       vertex 0.02666667 -0.04 -0.04
+       vertex 0.02666667 -0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.02666667 -0.04 -0.04
+       vertex 0.03333333 -0.04 -0.04
+       vertex 0.03333333 -0.04 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.03333333 -0.04 -0.03
+       vertex 0.02666667 -0.04 -0.03
+       vertex 0.02666667 -0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.02666667 -0.04 -0.03
+       vertex 0.03333333 -0.04 -0.03
+       vertex 0.03333333 -0.04 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.03333333 -0.04 -0.02
+       vertex 0.02666667 -0.04 -0.02
+       vertex 0.02666667 -0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.02666667 -0.04 -0.02
+       vertex 0.03333333 -0.04 -0.02
+       vertex 0.03333333 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.03333333 -0.04 -0.01
+       vertex 0.02666667 -0.04 -0.01
+       vertex 0.02666667 -0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.02666667 -0.04 -0.01
+       vertex 0.03333333 -0.04 -0.01
+       vertex 0.03333333 -0.04 0
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.03333333 -0.04 0
+       vertex 0.02666667 -0.04 5.782412e-19
+       vertex 0.02666667 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.02666667 -0.04 5.782412e-19
+       vertex 0.03333333 -0.04 0
+       vertex 0.03333333 -0.04 0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.03333333 -0.04 0.01
+       vertex 0.02666667 -0.04 0.01
+       vertex 0.02666667 -0.04 5.782412e-19
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.02666667 -0.04 0.01
+       vertex 0.03333333 -0.04 0.01
+       vertex 0.03333333 -0.04 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.03333333 -0.04 0.02
+       vertex 0.02666667 -0.04 0.02
+       vertex 0.02666667 -0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.02666667 -0.04 0.02
+       vertex 0.03333333 -0.04 0.02
+       vertex 0.03333333 -0.04 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.03333333 -0.04 0.03
+       vertex 0.02666667 -0.04 0.03
+       vertex 0.02666667 -0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.02666667 -0.04 0.03
+       vertex 0.03333333 -0.04 0.03
+       vertex 0.03333333 -0.04 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.03333333 -0.04 0.04
+       vertex 0.02666667 -0.04 0.04
+       vertex 0.02666667 -0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.02666667 -0.04 0.04
+       vertex 0.03333333 -0.04 0.04
+       vertex 0.03333333 -0.04 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.03333333 -0.04 0.05
+       vertex 0.02666667 -0.04 0.05
+       vertex 0.02666667 -0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.03333333 -0.04 -0.05
+       vertex 0.04 -0.04 -0.05
+       vertex 0.04 -0.04 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.04 -0.04 -0.04
+       vertex 0.03333333 -0.04 -0.04
+       vertex 0.03333333 -0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.03333333 -0.04 -0.04
+       vertex 0.04 -0.04 -0.04
+       vertex 0.04 -0.04 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.04 -0.04 -0.03
+       vertex 0.03333333 -0.04 -0.03
+       vertex 0.03333333 -0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.03333333 -0.04 -0.03
+       vertex 0.04 -0.04 -0.03
+       vertex 0.04 -0.04 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.04 -0.04 -0.02
+       vertex 0.03333333 -0.04 -0.02
+       vertex 0.03333333 -0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.03333333 -0.04 -0.02
+       vertex 0.04 -0.04 -0.02
+       vertex 0.04 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.04 -0.04 -0.01
+       vertex 0.03333333 -0.04 -0.01
+       vertex 0.03333333 -0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.03333333 -0.04 -0.01
+       vertex 0.04 -0.04 -0.01
+       vertex 0.04 -0.04 -5.782412e-19
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.04 -0.04 -5.782412e-19
+       vertex 0.03333333 -0.04 0
+       vertex 0.03333333 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.03333333 -0.04 0
+       vertex 0.04 -0.04 -5.782412e-19
+       vertex 0.04 -0.04 0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.04 -0.04 0.01
+       vertex 0.03333333 -0.04 0.01
+       vertex 0.03333333 -0.04 0
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.03333333 -0.04 0.01
+       vertex 0.04 -0.04 0.01
+       vertex 0.04 -0.04 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.04 -0.04 0.02
+       vertex 0.03333333 -0.04 0.02
+       vertex 0.03333333 -0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.03333333 -0.04 0.02
+       vertex 0.04 -0.04 0.02
+       vertex 0.04 -0.04 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.04 -0.04 0.03
+       vertex 0.03333333 -0.04 0.03
+       vertex 0.03333333 -0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.03333333 -0.04 0.03
+       vertex 0.04 -0.04 0.03
+       vertex 0.04 -0.04 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.04 -0.04 0.04
+       vertex 0.03333333 -0.04 0.04
+       vertex 0.03333333 -0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.03333333 -0.04 0.04
+       vertex 0.04 -0.04 0.04
+       vertex 0.04 -0.04 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.04 -0.04 0.05
+       vertex 0.03333333 -0.04 0.05
+       vertex 0.03333333 -0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.04 -0.04 -0.05
+       vertex 0.04666667 -0.04 -0.05
+       vertex 0.04666667 -0.04 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.04666667 -0.04 -0.04
+       vertex 0.04 -0.04 -0.04
+       vertex 0.04 -0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.04 -0.04 -0.04
+       vertex 0.04666667 -0.04 -0.04
+       vertex 0.04666667 -0.04 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.04666667 -0.04 -0.03
+       vertex 0.04 -0.04 -0.03
+       vertex 0.04 -0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.04 -0.04 -0.03
+       vertex 0.04666667 -0.04 -0.03
+       vertex 0.04666667 -0.04 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.04666667 -0.04 -0.02
+       vertex 0.04 -0.04 -0.02
+       vertex 0.04 -0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.04 -0.04 -0.02
+       vertex 0.04666667 -0.04 -0.02
+       vertex 0.04666667 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.04666667 -0.04 -0.01
+       vertex 0.04 -0.04 -0.01
+       vertex 0.04 -0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.04 -0.04 -0.01
+       vertex 0.04666667 -0.04 -0.01
+       vertex 0.04666667 -0.04 0
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.04666667 -0.04 0
+       vertex 0.04 -0.04 -5.782412e-19
+       vertex 0.04 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.04666667 -0.04 0
+       vertex 0.04666667 -0.04 0.01
+       vertex 0.04 -0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.04 -0.04 0.01
+       vertex 0.04 -0.04 -5.782412e-19
+       vertex 0.04666667 -0.04 0
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.04 -0.04 0.01
+       vertex 0.04666667 -0.04 0.01
+       vertex 0.04666667 -0.04 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.04666667 -0.04 0.02
+       vertex 0.04 -0.04 0.02
+       vertex 0.04 -0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.04 -0.04 0.02
+       vertex 0.04666667 -0.04 0.02
+       vertex 0.04666667 -0.04 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.04666667 -0.04 0.03
+       vertex 0.04 -0.04 0.03
+       vertex 0.04 -0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.04 -0.04 0.03
+       vertex 0.04666667 -0.04 0.03
+       vertex 0.04666667 -0.04 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.04666667 -0.04 0.04
+       vertex 0.04 -0.04 0.04
+       vertex 0.04 -0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.04 -0.04 0.04
+       vertex 0.04666667 -0.04 0.04
+       vertex 0.04666667 -0.04 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.04666667 -0.04 0.05
+       vertex 0.04 -0.04 0.05
+       vertex 0.04 -0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.04666667 -0.04 -0.05
+       vertex 0.05333333 -0.04 -0.05
+       vertex 0.05333333 -0.04 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.05333333 -0.04 -0.04
+       vertex 0.04666667 -0.04 -0.04
+       vertex 0.04666667 -0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.04666667 -0.04 -0.04
+       vertex 0.05333333 -0.04 -0.04
+       vertex 0.05333333 -0.04 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.05333333 -0.04 -0.03
+       vertex 0.04666667 -0.04 -0.03
+       vertex 0.04666667 -0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.04666667 -0.04 -0.03
+       vertex 0.05333333 -0.04 -0.03
+       vertex 0.05333333 -0.04 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.05333333 -0.04 -0.02
+       vertex 0.04666667 -0.04 -0.02
+       vertex 0.04666667 -0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.04666667 -0.04 -0.02
+       vertex 0.05333333 -0.04 -0.02
+       vertex 0.05333333 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.05333333 -0.04 -0.01
+       vertex 0.04666667 -0.04 -0.01
+       vertex 0.04666667 -0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.04666667 -0.04 -0.01
+       vertex 0.05333333 -0.04 -0.01
+       vertex 0.05333333 -0.04 -2.891206e-19
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.05333333 -0.04 -2.891206e-19
+       vertex 0.04666667 -0.04 0
+       vertex 0.04666667 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.04666667 -0.04 0
+       vertex 0.05333333 -0.04 -2.891206e-19
+       vertex 0.05333333 -0.04 0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.05333333 -0.04 0.01
+       vertex 0.04666667 -0.04 0.01
+       vertex 0.04666667 -0.04 0
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.04666667 -0.04 0.01
+       vertex 0.05333333 -0.04 0.01
+       vertex 0.05333333 -0.04 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.05333333 -0.04 0.02
+       vertex 0.04666667 -0.04 0.02
+       vertex 0.04666667 -0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.04666667 -0.04 0.02
+       vertex 0.05333333 -0.04 0.02
+       vertex 0.05333333 -0.04 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.05333333 -0.04 0.03
+       vertex 0.04666667 -0.04 0.03
+       vertex 0.04666667 -0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.04666667 -0.04 0.03
+       vertex 0.05333333 -0.04 0.03
+       vertex 0.05333333 -0.04 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.05333333 -0.04 0.04
+       vertex 0.04666667 -0.04 0.04
+       vertex 0.04666667 -0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.04666667 -0.04 0.04
+       vertex 0.05333333 -0.04 0.04
+       vertex 0.05333333 -0.04 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.05333333 -0.04 0.05
+       vertex 0.04666667 -0.04 0.05
+       vertex 0.04666667 -0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.05333333 -0.04 -0.05
+       vertex 0.06 -0.04 -0.05
+       vertex 0.06 -0.04 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.06 -0.04 -0.04
+       vertex 0.05333333 -0.04 -0.04
+       vertex 0.05333333 -0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.05333333 -0.04 -0.04
+       vertex 0.06 -0.04 -0.04
+       vertex 0.06 -0.04 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.06 -0.04 -0.03
+       vertex 0.05333333 -0.04 -0.03
+       vertex 0.05333333 -0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.05333333 -0.04 -0.03
+       vertex 0.06 -0.04 -0.03
+       vertex 0.06 -0.04 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.06 -0.04 -0.02
+       vertex 0.05333333 -0.04 -0.02
+       vertex 0.05333333 -0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.05333333 -0.04 -0.02
+       vertex 0.06 -0.04 -0.02
+       vertex 0.06 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.06 -0.04 -0.01
+       vertex 0.05333333 -0.04 -0.01
+       vertex 0.05333333 -0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.05333333 -0.04 -0.01
+       vertex 0.06 -0.04 -0.01
+       vertex 0.06 -0.04 5.782412e-19
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.06 -0.04 5.782412e-19
+       vertex 0.05333333 -0.04 -2.891206e-19
+       vertex 0.05333333 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.06 -0.04 5.782412e-19
+       vertex 0.06 -0.04 0.01
+       vertex 0.05333333 -0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.05333333 -0.04 0.01
+       vertex 0.05333333 -0.04 -2.891206e-19
+       vertex 0.06 -0.04 5.782412e-19
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.05333333 -0.04 0.01
+       vertex 0.06 -0.04 0.01
+       vertex 0.06 -0.04 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.06 -0.04 0.02
+       vertex 0.05333333 -0.04 0.02
+       vertex 0.05333333 -0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.05333333 -0.04 0.02
+       vertex 0.06 -0.04 0.02
+       vertex 0.06 -0.04 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.06 -0.04 0.03
+       vertex 0.05333333 -0.04 0.03
+       vertex 0.05333333 -0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.05333333 -0.04 0.03
+       vertex 0.06 -0.04 0.03
+       vertex 0.06 -0.04 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.06 -0.04 0.04
+       vertex 0.05333333 -0.04 0.04
+       vertex 0.05333333 -0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.05333333 -0.04 0.04
+       vertex 0.06 -0.04 0.04
+       vertex 0.06 -0.04 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.06 -0.04 0.05
+       vertex 0.05333333 -0.04 0.05
+       vertex 0.05333333 -0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.06 -0.04 -0.05
+       vertex 0.06666667 -0.04 -0.05
+       vertex 0.06666667 -0.04 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.06666667 -0.04 -0.04
+       vertex 0.06 -0.04 -0.04
+       vertex 0.06 -0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.06 -0.04 -0.04
+       vertex 0.06666667 -0.04 -0.04
+       vertex 0.06666667 -0.04 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.06666667 -0.04 -0.03
+       vertex 0.06 -0.04 -0.03
+       vertex 0.06 -0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.06 -0.04 -0.03
+       vertex 0.06666667 -0.04 -0.03
+       vertex 0.06666667 -0.04 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.06666667 -0.04 -0.02
+       vertex 0.06 -0.04 -0.02
+       vertex 0.06 -0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.06 -0.04 -0.02
+       vertex 0.06666667 -0.04 -0.02
+       vertex 0.06666667 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.06666667 -0.04 -0.01
+       vertex 0.06 -0.04 -0.01
+       vertex 0.06 -0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.06 -0.04 -0.01
+       vertex 0.06666667 -0.04 -0.01
+       vertex 0.06666667 -0.04 0
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.06666667 -0.04 0
+       vertex 0.06 -0.04 5.782412e-19
+       vertex 0.06 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.06 -0.04 5.782412e-19
+       vertex 0.06666667 -0.04 0
+       vertex 0.06666667 -0.04 0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.06666667 -0.04 0.01
+       vertex 0.06 -0.04 0.01
+       vertex 0.06 -0.04 5.782412e-19
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.06 -0.04 0.01
+       vertex 0.06666667 -0.04 0.01
+       vertex 0.06666667 -0.04 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.06666667 -0.04 0.02
+       vertex 0.06 -0.04 0.02
+       vertex 0.06 -0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.06 -0.04 0.02
+       vertex 0.06666667 -0.04 0.02
+       vertex 0.06666667 -0.04 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.06666667 -0.04 0.03
+       vertex 0.06 -0.04 0.03
+       vertex 0.06 -0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.06 -0.04 0.03
+       vertex 0.06666667 -0.04 0.03
+       vertex 0.06666667 -0.04 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.06666667 -0.04 0.04
+       vertex 0.06 -0.04 0.04
+       vertex 0.06 -0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.06 -0.04 0.04
+       vertex 0.06666667 -0.04 0.04
+       vertex 0.06666667 -0.04 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.06666667 -0.04 0.05
+       vertex 0.06 -0.04 0.05
+       vertex 0.06 -0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.06666667 -0.04 -0.05
+       vertex 0.07333333 -0.04 -0.05
+       vertex 0.07333333 -0.04 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.07333333 -0.04 -0.04
+       vertex 0.06666667 -0.04 -0.04
+       vertex 0.06666667 -0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.06666667 -0.04 -0.04
+       vertex 0.07333333 -0.04 -0.04
+       vertex 0.07333333 -0.04 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.07333333 -0.04 -0.03
+       vertex 0.06666667 -0.04 -0.03
+       vertex 0.06666667 -0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.06666667 -0.04 -0.03
+       vertex 0.07333333 -0.04 -0.03
+       vertex 0.07333333 -0.04 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.07333333 -0.04 -0.02
+       vertex 0.06666667 -0.04 -0.02
+       vertex 0.06666667 -0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.06666667 -0.04 -0.02
+       vertex 0.07333333 -0.04 -0.02
+       vertex 0.07333333 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.07333333 -0.04 -0.01
+       vertex 0.06666667 -0.04 -0.01
+       vertex 0.06666667 -0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.06666667 -0.04 -0.01
+       vertex 0.07333333 -0.04 -0.01
+       vertex 0.07333333 -0.04 -4.336809e-19
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.07333333 -0.04 -4.336809e-19
+       vertex 0.06666667 -0.04 0
+       vertex 0.06666667 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.06666667 -0.04 0
+       vertex 0.07333333 -0.04 -4.336809e-19
+       vertex 0.07333333 -0.04 0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.07333333 -0.04 0.01
+       vertex 0.06666667 -0.04 0.01
+       vertex 0.06666667 -0.04 0
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.06666667 -0.04 0.01
+       vertex 0.07333333 -0.04 0.01
+       vertex 0.07333333 -0.04 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.07333333 -0.04 0.02
+       vertex 0.06666667 -0.04 0.02
+       vertex 0.06666667 -0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.06666667 -0.04 0.02
+       vertex 0.07333333 -0.04 0.02
+       vertex 0.07333333 -0.04 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.07333333 -0.04 0.03
+       vertex 0.06666667 -0.04 0.03
+       vertex 0.06666667 -0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.06666667 -0.04 0.03
+       vertex 0.07333333 -0.04 0.03
+       vertex 0.07333333 -0.04 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.07333333 -0.04 0.04
+       vertex 0.06666667 -0.04 0.04
+       vertex 0.06666667 -0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.06666667 -0.04 0.04
+       vertex 0.07333333 -0.04 0.04
+       vertex 0.07333333 -0.04 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.07333333 -0.04 0.05
+       vertex 0.06666667 -0.04 0.05
+       vertex 0.06666667 -0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.07333333 -0.04 -0.05
+       vertex 0.08 -0.04 -0.05
+       vertex 0.08 -0.04 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.08 -0.04 -0.04
+       vertex 0.07333333 -0.04 -0.04
+       vertex 0.07333333 -0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.07333333 -0.04 -0.04
+       vertex 0.08 -0.04 -0.04
+       vertex 0.08 -0.04 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.08 -0.04 -0.03
+       vertex 0.07333333 -0.04 -0.03
+       vertex 0.07333333 -0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.07333333 -0.04 -0.03
+       vertex 0.08 -0.04 -0.03
+       vertex 0.08 -0.04 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.08 -0.04 -0.02
+       vertex 0.07333333 -0.04 -0.02
+       vertex 0.07333333 -0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.07333333 -0.04 -0.02
+       vertex 0.08 -0.04 -0.02
+       vertex 0.08 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.08 -0.04 -0.01
+       vertex 0.07333333 -0.04 -0.01
+       vertex 0.07333333 -0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.07333333 -0.04 -0.01
+       vertex 0.08 -0.04 -0.01
+       vertex 0.08 -0.04 2.891206e-19
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.08 -0.04 2.891206e-19
+       vertex 0.07333333 -0.04 -4.336809e-19
+       vertex 0.07333333 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.08 -0.04 2.891206e-19
+       vertex 0.08 -0.04 0.01
+       vertex 0.07333333 -0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.07333333 -0.04 0.01
+       vertex 0.07333333 -0.04 -4.336809e-19
+       vertex 0.08 -0.04 2.891206e-19
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.07333333 -0.04 0.01
+       vertex 0.08 -0.04 0.01
+       vertex 0.08 -0.04 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.08 -0.04 0.02
+       vertex 0.07333333 -0.04 0.02
+       vertex 0.07333333 -0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.07333333 -0.04 0.02
+       vertex 0.08 -0.04 0.02
+       vertex 0.08 -0.04 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.08 -0.04 0.03
+       vertex 0.07333333 -0.04 0.03
+       vertex 0.07333333 -0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.07333333 -0.04 0.03
+       vertex 0.08 -0.04 0.03
+       vertex 0.08 -0.04 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.08 -0.04 0.04
+       vertex 0.07333333 -0.04 0.04
+       vertex 0.07333333 -0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.07333333 -0.04 0.04
+       vertex 0.08 -0.04 0.04
+       vertex 0.08 -0.04 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.08 -0.04 0.05
+       vertex 0.07333333 -0.04 0.05
+       vertex 0.07333333 -0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.08 -0.04 -0.05
+       vertex 0.08666667 -0.04 -0.05
+       vertex 0.08666667 -0.04 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.08666667 -0.04 -0.04
+       vertex 0.08 -0.04 -0.04
+       vertex 0.08 -0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.08 -0.04 -0.04
+       vertex 0.08666667 -0.04 -0.04
+       vertex 0.08666667 -0.04 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.08666667 -0.04 -0.03
+       vertex 0.08 -0.04 -0.03
+       vertex 0.08 -0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.08 -0.04 -0.03
+       vertex 0.08666667 -0.04 -0.03
+       vertex 0.08666667 -0.04 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.08666667 -0.04 -0.02
+       vertex 0.08 -0.04 -0.02
+       vertex 0.08 -0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.08 -0.04 -0.02
+       vertex 0.08666667 -0.04 -0.02
+       vertex 0.08666667 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.08666667 -0.04 -0.01
+       vertex 0.08 -0.04 -0.01
+       vertex 0.08 -0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.08 -0.04 -0.01
+       vertex 0.08666667 -0.04 -0.01
+       vertex 0.08666667 -0.04 -2.168404e-19
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.08666667 -0.04 -2.168404e-19
+       vertex 0.08 -0.04 2.891206e-19
+       vertex 0.08 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.08 -0.04 2.891206e-19
+       vertex 0.08666667 -0.04 -2.168404e-19
+       vertex 0.08666667 -0.04 0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.08666667 -0.04 0.01
+       vertex 0.08 -0.04 0.01
+       vertex 0.08 -0.04 2.891206e-19
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.08 -0.04 0.01
+       vertex 0.08666667 -0.04 0.01
+       vertex 0.08666667 -0.04 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.08666667 -0.04 0.02
+       vertex 0.08 -0.04 0.02
+       vertex 0.08 -0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.08 -0.04 0.02
+       vertex 0.08666667 -0.04 0.02
+       vertex 0.08666667 -0.04 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.08666667 -0.04 0.03
+       vertex 0.08 -0.04 0.03
+       vertex 0.08 -0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.08 -0.04 0.03
+       vertex 0.08666667 -0.04 0.03
+       vertex 0.08666667 -0.04 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.08666667 -0.04 0.04
+       vertex 0.08 -0.04 0.04
+       vertex 0.08 -0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.08 -0.04 0.04
+       vertex 0.08666667 -0.04 0.04
+       vertex 0.08666667 -0.04 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.08666667 -0.04 0.05
+       vertex 0.08 -0.04 0.05
+       vertex 0.08 -0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.08666667 -0.04 -0.05
+       vertex 0.09333333 -0.04 -0.05
+       vertex 0.09333333 -0.04 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.09333333 -0.04 -0.04
+       vertex 0.08666667 -0.04 -0.04
+       vertex 0.08666667 -0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.08666667 -0.04 -0.04
+       vertex 0.09333333 -0.04 -0.04
+       vertex 0.09333333 -0.04 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.09333333 -0.04 -0.03
+       vertex 0.08666667 -0.04 -0.03
+       vertex 0.08666667 -0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.08666667 -0.04 -0.03
+       vertex 0.09333333 -0.04 -0.03
+       vertex 0.09333333 -0.04 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.09333333 -0.04 -0.02
+       vertex 0.08666667 -0.04 -0.02
+       vertex 0.08666667 -0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.08666667 -0.04 -0.02
+       vertex 0.09333333 -0.04 -0.02
+       vertex 0.09333333 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.09333333 -0.04 -0.01
+       vertex 0.08666667 -0.04 -0.01
+       vertex 0.08666667 -0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.08666667 -0.04 -0.01
+       vertex 0.09333333 -0.04 -0.01
+       vertex 0.09333333 -0.04 4.698209e-19
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.09333333 -0.04 4.698209e-19
+       vertex 0.08666667 -0.04 -2.168404e-19
+       vertex 0.08666667 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.09333333 -0.04 4.698209e-19
+       vertex 0.09333333 -0.04 0.01
+       vertex 0.08666667 -0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.08666667 -0.04 0.01
+       vertex 0.08666667 -0.04 -2.168404e-19
+       vertex 0.09333333 -0.04 4.698209e-19
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.08666667 -0.04 0.01
+       vertex 0.09333333 -0.04 0.01
+       vertex 0.09333333 -0.04 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.09333333 -0.04 0.02
+       vertex 0.08666667 -0.04 0.02
+       vertex 0.08666667 -0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.08666667 -0.04 0.02
+       vertex 0.09333333 -0.04 0.02
+       vertex 0.09333333 -0.04 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.09333333 -0.04 0.03
+       vertex 0.08666667 -0.04 0.03
+       vertex 0.08666667 -0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.08666667 -0.04 0.03
+       vertex 0.09333333 -0.04 0.03
+       vertex 0.09333333 -0.04 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.09333333 -0.04 0.04
+       vertex 0.08666667 -0.04 0.04
+       vertex 0.08666667 -0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.08666667 -0.04 0.04
+       vertex 0.09333333 -0.04 0.04
+       vertex 0.09333333 -0.04 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.09333333 -0.04 0.05
+       vertex 0.08666667 -0.04 0.05
+       vertex 0.08666667 -0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.09333333 -0.04 -0.05
+       vertex 0.1 -0.04 -0.05
+       vertex 0.1 -0.04 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.1 -0.04 -0.04
+       vertex 0.09333333 -0.04 -0.04
+       vertex 0.09333333 -0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.09333333 -0.04 -0.04
+       vertex 0.1 -0.04 -0.04
+       vertex 0.1 -0.04 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.1 -0.04 -0.03
+       vertex 0.09333333 -0.04 -0.03
+       vertex 0.09333333 -0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.09333333 -0.04 -0.03
+       vertex 0.1 -0.04 -0.03
+       vertex 0.1 -0.04 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.1 -0.04 -0.02
+       vertex 0.09333333 -0.04 -0.02
+       vertex 0.09333333 -0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.09333333 -0.04 -0.02
+       vertex 0.1 -0.04 -0.02
+       vertex 0.1 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.1 -0.04 -0.01
+       vertex 0.09333333 -0.04 -0.01
+       vertex 0.09333333 -0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.09333333 -0.04 -0.01
+       vertex 0.1 -0.04 -0.01
+       vertex 0.1 -0.04 0
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.1 -0.04 0
+       vertex 0.09333333 -0.04 4.698209e-19
+       vertex 0.09333333 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.09333333 -0.04 4.698209e-19
+       vertex 0.1 -0.04 0
+       vertex 0.1 -0.04 0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.1 -0.04 0.01
+       vertex 0.09333333 -0.04 0.01
+       vertex 0.09333333 -0.04 4.698209e-19
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.09333333 -0.04 0.01
+       vertex 0.1 -0.04 0.01
+       vertex 0.1 -0.04 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.1 -0.04 0.02
+       vertex 0.09333333 -0.04 0.02
+       vertex 0.09333333 -0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.09333333 -0.04 0.02
+       vertex 0.1 -0.04 0.02
+       vertex 0.1 -0.04 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.1 -0.04 0.03
+       vertex 0.09333333 -0.04 0.03
+       vertex 0.09333333 -0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.09333333 -0.04 0.03
+       vertex 0.1 -0.04 0.03
+       vertex 0.1 -0.04 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.1 -0.04 0.04
+       vertex 0.09333333 -0.04 0.04
+       vertex 0.09333333 -0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.09333333 -0.04 0.04
+       vertex 0.1 -0.04 0.04
+       vertex 0.1 -0.04 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.1 -0.04 0.05
+       vertex 0.09333333 -0.04 0.05
+       vertex 0.09333333 -0.04 0.04
+    endloop
+  endfacet
+endsolid minY
+solid minZ
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.1 -0.04 -0.05
+       vertex -0.1 -0.032 -0.05
+       vertex -0.09333333 -0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.09333333 -0.032 -0.05
+       vertex -0.09333333 -0.04 -0.05
+       vertex -0.1 -0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.1 -0.032 -0.05
+       vertex -0.1 -0.024 -0.05
+       vertex -0.09333333 -0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.09333333 -0.024 -0.05
+       vertex -0.09333333 -0.032 -0.05
+       vertex -0.1 -0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.1 -0.024 -0.05
+       vertex -0.1 -0.016 -0.05
+       vertex -0.09333333 -0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.09333333 -0.016 -0.05
+       vertex -0.09333333 -0.024 -0.05
+       vertex -0.1 -0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.1 -0.016 -0.05
+       vertex -0.1 -0.008 -0.05
+       vertex -0.09333333 -0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.09333333 -0.008 -0.05
+       vertex -0.09333333 -0.016 -0.05
+       vertex -0.1 -0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.1 -0.008 -0.05
+       vertex -0.1 0 -0.05
+       vertex -0.09333333 0 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.09333333 0 -0.05
+       vertex -0.09333333 -0.008 -0.05
+       vertex -0.1 -0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.09333333 -0.04 -0.05
+       vertex -0.09333333 -0.032 -0.05
+       vertex -0.08666667 -0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.08666667 -0.032 -0.05
+       vertex -0.08666667 -0.04 -0.05
+       vertex -0.09333333 -0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.09333333 -0.032 -0.05
+       vertex -0.09333333 -0.024 -0.05
+       vertex -0.08666667 -0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.08666667 -0.024 -0.05
+       vertex -0.08666667 -0.032 -0.05
+       vertex -0.09333333 -0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.09333333 -0.024 -0.05
+       vertex -0.09333333 -0.016 -0.05
+       vertex -0.08666667 -0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.08666667 -0.016 -0.05
+       vertex -0.08666667 -0.024 -0.05
+       vertex -0.09333333 -0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.09333333 -0.016 -0.05
+       vertex -0.09333333 -0.008 -0.05
+       vertex -0.08666667 -0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.08666667 -0.008 -0.05
+       vertex -0.08666667 -0.016 -0.05
+       vertex -0.09333333 -0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.09333333 -0.008 -0.05
+       vertex -0.09333333 0 -0.05
+       vertex -0.08666667 0 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.08666667 0 -0.05
+       vertex -0.08666667 -0.008 -0.05
+       vertex -0.09333333 -0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.08666667 -0.04 -0.05
+       vertex -0.08666667 -0.032 -0.05
+       vertex -0.08 -0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.08 -0.032 -0.05
+       vertex -0.08 -0.04 -0.05
+       vertex -0.08666667 -0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.08666667 -0.032 -0.05
+       vertex -0.08666667 -0.024 -0.05
+       vertex -0.08 -0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.08 -0.024 -0.05
+       vertex -0.08 -0.032 -0.05
+       vertex -0.08666667 -0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.08666667 -0.024 -0.05
+       vertex -0.08666667 -0.016 -0.05
+       vertex -0.08 -0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.08 -0.016 -0.05
+       vertex -0.08 -0.024 -0.05
+       vertex -0.08666667 -0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.08666667 -0.016 -0.05
+       vertex -0.08666667 -0.008 -0.05
+       vertex -0.08 -0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.08 -0.008 -0.05
+       vertex -0.08 -0.016 -0.05
+       vertex -0.08666667 -0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.08666667 -0.008 -0.05
+       vertex -0.08666667 0 -0.05
+       vertex -0.08 0 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.08 0 -0.05
+       vertex -0.08 -0.008 -0.05
+       vertex -0.08666667 -0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.08 -0.04 -0.05
+       vertex -0.08 -0.032 -0.05
+       vertex -0.07333333 -0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.07333333 -0.032 -0.05
+       vertex -0.07333333 -0.04 -0.05
+       vertex -0.08 -0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.08 -0.032 -0.05
+       vertex -0.08 -0.024 -0.05
+       vertex -0.07333333 -0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.07333333 -0.024 -0.05
+       vertex -0.07333333 -0.032 -0.05
+       vertex -0.08 -0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.08 -0.024 -0.05
+       vertex -0.08 -0.016 -0.05
+       vertex -0.07333333 -0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.07333333 -0.016 -0.05
+       vertex -0.07333333 -0.024 -0.05
+       vertex -0.08 -0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.08 -0.016 -0.05
+       vertex -0.08 -0.008 -0.05
+       vertex -0.07333333 -0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.07333333 -0.008 -0.05
+       vertex -0.07333333 -0.016 -0.05
+       vertex -0.08 -0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.08 -0.008 -0.05
+       vertex -0.08 0 -0.05
+       vertex -0.07333333 0 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.07333333 0 -0.05
+       vertex -0.07333333 -0.008 -0.05
+       vertex -0.08 -0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.07333333 -0.04 -0.05
+       vertex -0.07333333 -0.032 -0.05
+       vertex -0.06666667 -0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.06666667 -0.032 -0.05
+       vertex -0.06666667 -0.04 -0.05
+       vertex -0.07333333 -0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.07333333 -0.032 -0.05
+       vertex -0.07333333 -0.024 -0.05
+       vertex -0.06666667 -0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.06666667 -0.024 -0.05
+       vertex -0.06666667 -0.032 -0.05
+       vertex -0.07333333 -0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.07333333 -0.024 -0.05
+       vertex -0.07333333 -0.016 -0.05
+       vertex -0.06666667 -0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.06666667 -0.016 -0.05
+       vertex -0.06666667 -0.024 -0.05
+       vertex -0.07333333 -0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.07333333 -0.016 -0.05
+       vertex -0.07333333 -0.008 -0.05
+       vertex -0.06666667 -0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.06666667 -0.008 -0.05
+       vertex -0.06666667 -0.016 -0.05
+       vertex -0.07333333 -0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.07333333 -0.008 -0.05
+       vertex -0.07333333 0 -0.05
+       vertex -0.06666667 0 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.06666667 0 -0.05
+       vertex -0.06666667 -0.008 -0.05
+       vertex -0.07333333 -0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.06666667 -0.04 -0.05
+       vertex -0.06666667 -0.032 -0.05
+       vertex -0.06 -0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.06 -0.032 -0.05
+       vertex -0.06 -0.04 -0.05
+       vertex -0.06666667 -0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.06666667 -0.032 -0.05
+       vertex -0.06666667 -0.024 -0.05
+       vertex -0.06 -0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.06 -0.024 -0.05
+       vertex -0.06 -0.032 -0.05
+       vertex -0.06666667 -0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.06666667 -0.024 -0.05
+       vertex -0.06666667 -0.016 -0.05
+       vertex -0.06 -0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.06 -0.016 -0.05
+       vertex -0.06 -0.024 -0.05
+       vertex -0.06666667 -0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.06666667 -0.016 -0.05
+       vertex -0.06666667 -0.008 -0.05
+       vertex -0.06 -0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.06 -0.008 -0.05
+       vertex -0.06 -0.016 -0.05
+       vertex -0.06666667 -0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.06666667 -0.008 -0.05
+       vertex -0.06666667 0 -0.05
+       vertex -0.06 0 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.06 0 -0.05
+       vertex -0.06 -0.008 -0.05
+       vertex -0.06666667 -0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.06 -0.04 -0.05
+       vertex -0.06 -0.032 -0.05
+       vertex -0.05333333 -0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.05333333 -0.032 -0.05
+       vertex -0.05333333 -0.04 -0.05
+       vertex -0.06 -0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.06 -0.032 -0.05
+       vertex -0.06 -0.024 -0.05
+       vertex -0.05333333 -0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.05333333 -0.024 -0.05
+       vertex -0.05333333 -0.032 -0.05
+       vertex -0.06 -0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.06 -0.024 -0.05
+       vertex -0.06 -0.016 -0.05
+       vertex -0.05333333 -0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.05333333 -0.016 -0.05
+       vertex -0.05333333 -0.024 -0.05
+       vertex -0.06 -0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.06 -0.016 -0.05
+       vertex -0.06 -0.008 -0.05
+       vertex -0.05333333 -0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.05333333 -0.008 -0.05
+       vertex -0.05333333 -0.016 -0.05
+       vertex -0.06 -0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.06 -0.008 -0.05
+       vertex -0.06 0 -0.05
+       vertex -0.05333333 -5.782412e-19 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.05333333 -5.782412e-19 -0.05
+       vertex -0.05333333 -0.008 -0.05
+       vertex -0.06 -0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.05333333 -0.04 -0.05
+       vertex -0.05333333 -0.032 -0.05
+       vertex -0.04666667 -0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.04666667 -0.032 -0.05
+       vertex -0.04666667 -0.04 -0.05
+       vertex -0.05333333 -0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.05333333 -0.032 -0.05
+       vertex -0.05333333 -0.024 -0.05
+       vertex -0.04666667 -0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.04666667 -0.024 -0.05
+       vertex -0.04666667 -0.032 -0.05
+       vertex -0.05333333 -0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.05333333 -0.024 -0.05
+       vertex -0.05333333 -0.016 -0.05
+       vertex -0.04666667 -0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.04666667 -0.016 -0.05
+       vertex -0.04666667 -0.024 -0.05
+       vertex -0.05333333 -0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.05333333 -0.016 -0.05
+       vertex -0.05333333 -0.008 -0.05
+       vertex -0.04666667 -0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.04666667 -0.008 -0.05
+       vertex -0.04666667 -0.016 -0.05
+       vertex -0.05333333 -0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.05333333 -0.008 -0.05
+       vertex -0.05333333 -5.782412e-19 -0.05
+       vertex -0.04666667 0 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.04666667 0 -0.05
+       vertex -0.04666667 -0.008 -0.05
+       vertex -0.05333333 -0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.04666667 -0.04 -0.05
+       vertex -0.04666667 -0.032 -0.05
+       vertex -0.04 -0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.04 -0.032 -0.05
+       vertex -0.04 -0.04 -0.05
+       vertex -0.04666667 -0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.04666667 -0.032 -0.05
+       vertex -0.04666667 -0.024 -0.05
+       vertex -0.04 -0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.04 -0.024 -0.05
+       vertex -0.04 -0.032 -0.05
+       vertex -0.04666667 -0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.04666667 -0.024 -0.05
+       vertex -0.04666667 -0.016 -0.05
+       vertex -0.04 -0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.04 -0.016 -0.05
+       vertex -0.04 -0.024 -0.05
+       vertex -0.04666667 -0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.04666667 -0.016 -0.05
+       vertex -0.04666667 -0.008 -0.05
+       vertex -0.04 -0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.04 -0.008 -0.05
+       vertex -0.04 -0.016 -0.05
+       vertex -0.04666667 -0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.04666667 -0.008 -0.05
+       vertex -0.04666667 0 -0.05
+       vertex -0.04 5.782412e-19 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.04 5.782412e-19 -0.05
+       vertex -0.04 -0.008 -0.05
+       vertex -0.04666667 -0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.04 -0.04 -0.05
+       vertex -0.04 -0.032 -0.05
+       vertex -0.03333333 -0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.03333333 -0.032 -0.05
+       vertex -0.03333333 -0.04 -0.05
+       vertex -0.04 -0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.04 -0.032 -0.05
+       vertex -0.04 -0.024 -0.05
+       vertex -0.03333333 -0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.03333333 -0.024 -0.05
+       vertex -0.03333333 -0.032 -0.05
+       vertex -0.04 -0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.04 -0.024 -0.05
+       vertex -0.04 -0.016 -0.05
+       vertex -0.03333333 -0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.03333333 -0.016 -0.05
+       vertex -0.03333333 -0.024 -0.05
+       vertex -0.04 -0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.04 -0.016 -0.05
+       vertex -0.04 -0.008 -0.05
+       vertex -0.03333333 -0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.03333333 -0.008 -0.05
+       vertex -0.03333333 -0.016 -0.05
+       vertex -0.04 -0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.03333333 -5.782412e-19 -0.05
+       vertex -0.03333333 -0.008 -0.05
+       vertex -0.04 -0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.04 -0.008 -0.05
+       vertex -0.04 5.782412e-19 -0.05
+       vertex -0.03333333 -5.782412e-19 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.03333333 -0.04 -0.05
+       vertex -0.03333333 -0.032 -0.05
+       vertex -0.02666667 -0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.02666667 -0.032 -0.05
+       vertex -0.02666667 -0.04 -0.05
+       vertex -0.03333333 -0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.03333333 -0.032 -0.05
+       vertex -0.03333333 -0.024 -0.05
+       vertex -0.02666667 -0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.02666667 -0.024 -0.05
+       vertex -0.02666667 -0.032 -0.05
+       vertex -0.03333333 -0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.03333333 -0.024 -0.05
+       vertex -0.03333333 -0.016 -0.05
+       vertex -0.02666667 -0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.02666667 -0.016 -0.05
+       vertex -0.02666667 -0.024 -0.05
+       vertex -0.03333333 -0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.03333333 -0.016 -0.05
+       vertex -0.03333333 -0.008 -0.05
+       vertex -0.02666667 -0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.02666667 -0.008 -0.05
+       vertex -0.02666667 -0.016 -0.05
+       vertex -0.03333333 -0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.03333333 -0.008 -0.05
+       vertex -0.03333333 -5.782412e-19 -0.05
+       vertex -0.02666667 0 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.02666667 0 -0.05
+       vertex -0.02666667 -0.008 -0.05
+       vertex -0.03333333 -0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.02666667 -0.04 -0.05
+       vertex -0.02666667 -0.032 -0.05
+       vertex -0.02 -0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.02 -0.032 -0.05
+       vertex -0.02 -0.04 -0.05
+       vertex -0.02666667 -0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.02666667 -0.032 -0.05
+       vertex -0.02666667 -0.024 -0.05
+       vertex -0.02 -0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.02 -0.024 -0.05
+       vertex -0.02 -0.032 -0.05
+       vertex -0.02666667 -0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.02666667 -0.024 -0.05
+       vertex -0.02666667 -0.016 -0.05
+       vertex -0.02 -0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.02 -0.016 -0.05
+       vertex -0.02 -0.024 -0.05
+       vertex -0.02666667 -0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.02666667 -0.016 -0.05
+       vertex -0.02666667 -0.008 -0.05
+       vertex -0.02 -0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.02 -0.008 -0.05
+       vertex -0.02 -0.016 -0.05
+       vertex -0.02666667 -0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.02666667 -0.008 -0.05
+       vertex -0.02666667 0 -0.05
+       vertex -0.02 0 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.02 0 -0.05
+       vertex -0.02 -0.008 -0.05
+       vertex -0.02666667 -0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.02 -0.04 -0.05
+       vertex -0.02 -0.032 -0.05
+       vertex -0.01333333 -0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.01333333 -0.032 -0.05
+       vertex -0.01333333 -0.04 -0.05
+       vertex -0.02 -0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.02 -0.032 -0.05
+       vertex -0.02 -0.024 -0.05
+       vertex -0.01333333 -0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.01333333 -0.024 -0.05
+       vertex -0.01333333 -0.032 -0.05
+       vertex -0.02 -0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.02 -0.024 -0.05
+       vertex -0.02 -0.016 -0.05
+       vertex -0.01333333 -0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.01333333 -0.016 -0.05
+       vertex -0.01333333 -0.024 -0.05
+       vertex -0.02 -0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.02 -0.016 -0.05
+       vertex -0.02 -0.008 -0.05
+       vertex -0.01333333 -0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.01333333 -0.008 -0.05
+       vertex -0.01333333 -0.016 -0.05
+       vertex -0.02 -0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.02 -0.008 -0.05
+       vertex -0.02 0 -0.05
+       vertex -0.01333333 0 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.01333333 0 -0.05
+       vertex -0.01333333 -0.008 -0.05
+       vertex -0.02 -0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.01333333 -0.04 -0.05
+       vertex -0.01333333 -0.032 -0.05
+       vertex -0.006666667 -0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.006666667 -0.032 -0.05
+       vertex -0.006666667 -0.04 -0.05
+       vertex -0.01333333 -0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.01333333 -0.032 -0.05
+       vertex -0.01333333 -0.024 -0.05
+       vertex -0.006666667 -0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.006666667 -0.024 -0.05
+       vertex -0.006666667 -0.032 -0.05
+       vertex -0.01333333 -0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.01333333 -0.024 -0.05
+       vertex -0.01333333 -0.016 -0.05
+       vertex -0.006666667 -0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.006666667 -0.016 -0.05
+       vertex -0.006666667 -0.024 -0.05
+       vertex -0.01333333 -0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.01333333 -0.016 -0.05
+       vertex -0.01333333 -0.008 -0.05
+       vertex -0.006666667 -0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.006666667 -0.008 -0.05
+       vertex -0.006666667 -0.016 -0.05
+       vertex -0.01333333 -0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.01333333 -0.008 -0.05
+       vertex -0.01333333 0 -0.05
+       vertex -0.006666667 0 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.006666667 0 -0.05
+       vertex -0.006666667 -0.008 -0.05
+       vertex -0.01333333 -0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.006666667 -0.04 -0.05
+       vertex -0.006666667 -0.032 -0.05
+       vertex 0 -0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0 -0.032 -0.05
+       vertex 0 -0.04 -0.05
+       vertex -0.006666667 -0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.006666667 -0.032 -0.05
+       vertex -0.006666667 -0.024 -0.05
+       vertex 0 -0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0 -0.024 -0.05
+       vertex 0 -0.032 -0.05
+       vertex -0.006666667 -0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.006666667 -0.024 -0.05
+       vertex -0.006666667 -0.016 -0.05
+       vertex 0 -0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0 -0.016 -0.05
+       vertex 0 -0.024 -0.05
+       vertex -0.006666667 -0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.006666667 -0.016 -0.05
+       vertex -0.006666667 -0.008 -0.05
+       vertex 0 -0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0 -0.008 -0.05
+       vertex 0 -0.016 -0.05
+       vertex -0.006666667 -0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.006666667 -0.008 -0.05
+       vertex -0.006666667 0 -0.05
+       vertex 0 0 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0 0 -0.05
+       vertex 0 -0.008 -0.05
+       vertex -0.006666667 -0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0 -0.04 -0.05
+       vertex 0 -0.032 -0.05
+       vertex 0.006666667 -0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.006666667 -0.032 -0.05
+       vertex 0.006666667 -0.04 -0.05
+       vertex 0 -0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0 -0.032 -0.05
+       vertex 0 -0.024 -0.05
+       vertex 0.006666667 -0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.006666667 -0.024 -0.05
+       vertex 0.006666667 -0.032 -0.05
+       vertex 0 -0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0 -0.024 -0.05
+       vertex 0 -0.016 -0.05
+       vertex 0.006666667 -0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.006666667 -0.016 -0.05
+       vertex 0.006666667 -0.024 -0.05
+       vertex 0 -0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0 -0.016 -0.05
+       vertex 0 -0.008 -0.05
+       vertex 0.006666667 -0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.006666667 -0.008 -0.05
+       vertex 0.006666667 -0.016 -0.05
+       vertex 0 -0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0 -0.008 -0.05
+       vertex 0 0 -0.05
+       vertex 0.006666667 0 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.006666667 0 -0.05
+       vertex 0.006666667 -0.008 -0.05
+       vertex 0 -0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.006666667 -0.04 -0.05
+       vertex 0.006666667 -0.032 -0.05
+       vertex 0.01333333 -0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.01333333 -0.032 -0.05
+       vertex 0.01333333 -0.04 -0.05
+       vertex 0.006666667 -0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.006666667 -0.032 -0.05
+       vertex 0.006666667 -0.024 -0.05
+       vertex 0.01333333 -0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.01333333 -0.024 -0.05
+       vertex 0.01333333 -0.032 -0.05
+       vertex 0.006666667 -0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.006666667 -0.024 -0.05
+       vertex 0.006666667 -0.016 -0.05
+       vertex 0.01333333 -0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.01333333 -0.016 -0.05
+       vertex 0.01333333 -0.024 -0.05
+       vertex 0.006666667 -0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.006666667 -0.016 -0.05
+       vertex 0.006666667 -0.008 -0.05
+       vertex 0.01333333 -0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.01333333 -0.008 -0.05
+       vertex 0.01333333 -0.016 -0.05
+       vertex 0.006666667 -0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.006666667 -0.008 -0.05
+       vertex 0.006666667 0 -0.05
+       vertex 0.01333333 0 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.01333333 0 -0.05
+       vertex 0.01333333 -0.008 -0.05
+       vertex 0.006666667 -0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.01333333 -0.04 -0.05
+       vertex 0.01333333 -0.032 -0.05
+       vertex 0.02 -0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.02 -0.032 -0.05
+       vertex 0.02 -0.04 -0.05
+       vertex 0.01333333 -0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.01333333 -0.032 -0.05
+       vertex 0.01333333 -0.024 -0.05
+       vertex 0.02 -0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.02 -0.024 -0.05
+       vertex 0.02 -0.032 -0.05
+       vertex 0.01333333 -0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.01333333 -0.024 -0.05
+       vertex 0.01333333 -0.016 -0.05
+       vertex 0.02 -0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.02 -0.016 -0.05
+       vertex 0.02 -0.024 -0.05
+       vertex 0.01333333 -0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.01333333 -0.016 -0.05
+       vertex 0.01333333 -0.008 -0.05
+       vertex 0.02 -0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.02 -0.008 -0.05
+       vertex 0.02 -0.016 -0.05
+       vertex 0.01333333 -0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.01333333 -0.008 -0.05
+       vertex 0.01333333 0 -0.05
+       vertex 0.02 0 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.02 0 -0.05
+       vertex 0.02 -0.008 -0.05
+       vertex 0.01333333 -0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.02 -0.04 -0.05
+       vertex 0.02 -0.032 -0.05
+       vertex 0.02666667 -0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.02666667 -0.032 -0.05
+       vertex 0.02666667 -0.04 -0.05
+       vertex 0.02 -0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.02 -0.032 -0.05
+       vertex 0.02 -0.024 -0.05
+       vertex 0.02666667 -0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.02666667 -0.024 -0.05
+       vertex 0.02666667 -0.032 -0.05
+       vertex 0.02 -0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.02 -0.024 -0.05
+       vertex 0.02 -0.016 -0.05
+       vertex 0.02666667 -0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.02666667 -0.016 -0.05
+       vertex 0.02666667 -0.024 -0.05
+       vertex 0.02 -0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.02 -0.016 -0.05
+       vertex 0.02 -0.008 -0.05
+       vertex 0.02666667 -0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.02666667 -0.008 -0.05
+       vertex 0.02666667 -0.016 -0.05
+       vertex 0.02 -0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.02 -0.008 -0.05
+       vertex 0.02 0 -0.05
+       vertex 0.02666667 0 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.02666667 0 -0.05
+       vertex 0.02666667 -0.008 -0.05
+       vertex 0.02 -0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.02666667 -0.04 -0.05
+       vertex 0.02666667 -0.032 -0.05
+       vertex 0.03333333 -0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.03333333 -0.032 -0.05
+       vertex 0.03333333 -0.04 -0.05
+       vertex 0.02666667 -0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.02666667 -0.032 -0.05
+       vertex 0.02666667 -0.024 -0.05
+       vertex 0.03333333 -0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.03333333 -0.024 -0.05
+       vertex 0.03333333 -0.032 -0.05
+       vertex 0.02666667 -0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.02666667 -0.024 -0.05
+       vertex 0.02666667 -0.016 -0.05
+       vertex 0.03333333 -0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.03333333 -0.016 -0.05
+       vertex 0.03333333 -0.024 -0.05
+       vertex 0.02666667 -0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.02666667 -0.016 -0.05
+       vertex 0.02666667 -0.008 -0.05
+       vertex 0.03333333 -0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.03333333 -0.008 -0.05
+       vertex 0.03333333 -0.016 -0.05
+       vertex 0.02666667 -0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.02666667 -0.008 -0.05
+       vertex 0.02666667 0 -0.05
+       vertex 0.03333333 0 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.03333333 0 -0.05
+       vertex 0.03333333 -0.008 -0.05
+       vertex 0.02666667 -0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.03333333 -0.04 -0.05
+       vertex 0.03333333 -0.032 -0.05
+       vertex 0.04 -0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.04 -0.032 -0.05
+       vertex 0.04 -0.04 -0.05
+       vertex 0.03333333 -0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.03333333 -0.032 -0.05
+       vertex 0.03333333 -0.024 -0.05
+       vertex 0.04 -0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.04 -0.024 -0.05
+       vertex 0.04 -0.032 -0.05
+       vertex 0.03333333 -0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.03333333 -0.024 -0.05
+       vertex 0.03333333 -0.016 -0.05
+       vertex 0.04 -0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.04 -0.016 -0.05
+       vertex 0.04 -0.024 -0.05
+       vertex 0.03333333 -0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.03333333 -0.016 -0.05
+       vertex 0.03333333 -0.008 -0.05
+       vertex 0.04 -0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.04 -0.008 -0.05
+       vertex 0.04 -0.016 -0.05
+       vertex 0.03333333 -0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.03333333 -0.008 -0.05
+       vertex 0.03333333 0 -0.05
+       vertex 0.04 -2.891206e-19 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.04 -2.891206e-19 -0.05
+       vertex 0.04 -0.008 -0.05
+       vertex 0.03333333 -0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.04 -0.04 -0.05
+       vertex 0.04 -0.032 -0.05
+       vertex 0.04666667 -0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.04666667 -0.032 -0.05
+       vertex 0.04666667 -0.04 -0.05
+       vertex 0.04 -0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.04 -0.032 -0.05
+       vertex 0.04 -0.024 -0.05
+       vertex 0.04666667 -0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.04666667 -0.024 -0.05
+       vertex 0.04666667 -0.032 -0.05
+       vertex 0.04 -0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.04 -0.024 -0.05
+       vertex 0.04 -0.016 -0.05
+       vertex 0.04666667 -0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.04666667 -0.016 -0.05
+       vertex 0.04666667 -0.024 -0.05
+       vertex 0.04 -0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.04 -0.016 -0.05
+       vertex 0.04 -0.008 -0.05
+       vertex 0.04666667 -0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.04666667 -0.008 -0.05
+       vertex 0.04666667 -0.016 -0.05
+       vertex 0.04 -0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.04 -0.008 -0.05
+       vertex 0.04 -2.891206e-19 -0.05
+       vertex 0.04666667 2.891206e-19 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.04666667 2.891206e-19 -0.05
+       vertex 0.04666667 -0.008 -0.05
+       vertex 0.04 -0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.04666667 -0.04 -0.05
+       vertex 0.04666667 -0.032 -0.05
+       vertex 0.05333333 -0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.05333333 -0.032 -0.05
+       vertex 0.05333333 -0.04 -0.05
+       vertex 0.04666667 -0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.04666667 -0.032 -0.05
+       vertex 0.04666667 -0.024 -0.05
+       vertex 0.05333333 -0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.05333333 -0.024 -0.05
+       vertex 0.05333333 -0.032 -0.05
+       vertex 0.04666667 -0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.04666667 -0.024 -0.05
+       vertex 0.04666667 -0.016 -0.05
+       vertex 0.05333333 -0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.05333333 -0.016 -0.05
+       vertex 0.05333333 -0.024 -0.05
+       vertex 0.04666667 -0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.04666667 -0.016 -0.05
+       vertex 0.04666667 -0.008 -0.05
+       vertex 0.05333333 -0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.05333333 -0.008 -0.05
+       vertex 0.05333333 -0.016 -0.05
+       vertex 0.04666667 -0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.04666667 -0.008 -0.05
+       vertex 0.04666667 2.891206e-19 -0.05
+       vertex 0.05333333 0 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.05333333 0 -0.05
+       vertex 0.05333333 -0.008 -0.05
+       vertex 0.04666667 -0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.05333333 -0.04 -0.05
+       vertex 0.05333333 -0.032 -0.05
+       vertex 0.06 -0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.06 -0.032 -0.05
+       vertex 0.06 -0.04 -0.05
+       vertex 0.05333333 -0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.05333333 -0.032 -0.05
+       vertex 0.05333333 -0.024 -0.05
+       vertex 0.06 -0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.06 -0.024 -0.05
+       vertex 0.06 -0.032 -0.05
+       vertex 0.05333333 -0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.05333333 -0.024 -0.05
+       vertex 0.05333333 -0.016 -0.05
+       vertex 0.06 -0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.06 -0.016 -0.05
+       vertex 0.06 -0.024 -0.05
+       vertex 0.05333333 -0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.05333333 -0.016 -0.05
+       vertex 0.05333333 -0.008 -0.05
+       vertex 0.06 -0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.06 -0.008 -0.05
+       vertex 0.06 -0.016 -0.05
+       vertex 0.05333333 -0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.05333333 -0.008 -0.05
+       vertex 0.05333333 0 -0.05
+       vertex 0.06 -2.891206e-19 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.06 -2.891206e-19 -0.05
+       vertex 0.06 -0.008 -0.05
+       vertex 0.05333333 -0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.06 -0.04 -0.05
+       vertex 0.06 -0.032 -0.05
+       vertex 0.06666667 -0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.06666667 -0.032 -0.05
+       vertex 0.06666667 -0.04 -0.05
+       vertex 0.06 -0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.06 -0.032 -0.05
+       vertex 0.06 -0.024 -0.05
+       vertex 0.06666667 -0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.06666667 -0.024 -0.05
+       vertex 0.06666667 -0.032 -0.05
+       vertex 0.06 -0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.06 -0.024 -0.05
+       vertex 0.06 -0.016 -0.05
+       vertex 0.06666667 -0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.06666667 -0.016 -0.05
+       vertex 0.06666667 -0.024 -0.05
+       vertex 0.06 -0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.06 -0.016 -0.05
+       vertex 0.06 -0.008 -0.05
+       vertex 0.06666667 -0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.06666667 -0.008 -0.05
+       vertex 0.06666667 -0.016 -0.05
+       vertex 0.06 -0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.06 -0.008 -0.05
+       vertex 0.06 -2.891206e-19 -0.05
+       vertex 0.06666667 -4.336809e-19 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.06666667 -4.336809e-19 -0.05
+       vertex 0.06666667 -0.008 -0.05
+       vertex 0.06 -0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.06666667 -0.04 -0.05
+       vertex 0.06666667 -0.032 -0.05
+       vertex 0.07333333 -0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.07333333 -0.032 -0.05
+       vertex 0.07333333 -0.04 -0.05
+       vertex 0.06666667 -0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.06666667 -0.032 -0.05
+       vertex 0.06666667 -0.024 -0.05
+       vertex 0.07333333 -0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.07333333 -0.024 -0.05
+       vertex 0.07333333 -0.032 -0.05
+       vertex 0.06666667 -0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.06666667 -0.024 -0.05
+       vertex 0.06666667 -0.016 -0.05
+       vertex 0.07333333 -0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.07333333 -0.016 -0.05
+       vertex 0.07333333 -0.024 -0.05
+       vertex 0.06666667 -0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.06666667 -0.016 -0.05
+       vertex 0.06666667 -0.008 -0.05
+       vertex 0.07333333 -0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.07333333 -0.008 -0.05
+       vertex 0.07333333 -0.016 -0.05
+       vertex 0.06666667 -0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.06666667 -0.008 -0.05
+       vertex 0.06666667 -4.336809e-19 -0.05
+       vertex 0.07333333 -5.782412e-19 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.07333333 -5.782412e-19 -0.05
+       vertex 0.07333333 -0.008 -0.05
+       vertex 0.06666667 -0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.07333333 -0.04 -0.05
+       vertex 0.07333333 -0.032 -0.05
+       vertex 0.08 -0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.08 -0.032 -0.05
+       vertex 0.08 -0.04 -0.05
+       vertex 0.07333333 -0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.07333333 -0.032 -0.05
+       vertex 0.07333333 -0.024 -0.05
+       vertex 0.08 -0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.08 -0.024 -0.05
+       vertex 0.08 -0.032 -0.05
+       vertex 0.07333333 -0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.07333333 -0.024 -0.05
+       vertex 0.07333333 -0.016 -0.05
+       vertex 0.08 -0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.08 -0.016 -0.05
+       vertex 0.08 -0.024 -0.05
+       vertex 0.07333333 -0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.07333333 -0.016 -0.05
+       vertex 0.07333333 -0.008 -0.05
+       vertex 0.08 -0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.08 -0.008 -0.05
+       vertex 0.08 -0.016 -0.05
+       vertex 0.07333333 -0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.07333333 -0.008 -0.05
+       vertex 0.07333333 -5.782412e-19 -0.05
+       vertex 0.08 4.336809e-19 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.08 4.336809e-19 -0.05
+       vertex 0.08 -0.008 -0.05
+       vertex 0.07333333 -0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.08 -0.04 -0.05
+       vertex 0.08 -0.032 -0.05
+       vertex 0.08666667 -0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.08666667 -0.032 -0.05
+       vertex 0.08666667 -0.04 -0.05
+       vertex 0.08 -0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.08 -0.032 -0.05
+       vertex 0.08 -0.024 -0.05
+       vertex 0.08666667 -0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.08666667 -0.024 -0.05
+       vertex 0.08666667 -0.032 -0.05
+       vertex 0.08 -0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.08 -0.024 -0.05
+       vertex 0.08 -0.016 -0.05
+       vertex 0.08666667 -0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.08666667 -0.016 -0.05
+       vertex 0.08666667 -0.024 -0.05
+       vertex 0.08 -0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.08 -0.016 -0.05
+       vertex 0.08 -0.008 -0.05
+       vertex 0.08666667 -0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.08666667 -0.008 -0.05
+       vertex 0.08666667 -0.016 -0.05
+       vertex 0.08 -0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.08 -0.008 -0.05
+       vertex 0.08 4.336809e-19 -0.05
+       vertex 0.08666667 2.891206e-19 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.08666667 2.891206e-19 -0.05
+       vertex 0.08666667 -0.008 -0.05
+       vertex 0.08 -0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.08666667 -0.04 -0.05
+       vertex 0.08666667 -0.032 -0.05
+       vertex 0.09333333 -0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.09333333 -0.032 -0.05
+       vertex 0.09333333 -0.04 -0.05
+       vertex 0.08666667 -0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.08666667 -0.032 -0.05
+       vertex 0.08666667 -0.024 -0.05
+       vertex 0.09333333 -0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.09333333 -0.024 -0.05
+       vertex 0.09333333 -0.032 -0.05
+       vertex 0.08666667 -0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.08666667 -0.024 -0.05
+       vertex 0.08666667 -0.016 -0.05
+       vertex 0.09333333 -0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.09333333 -0.016 -0.05
+       vertex 0.09333333 -0.024 -0.05
+       vertex 0.08666667 -0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.08666667 -0.016 -0.05
+       vertex 0.08666667 -0.008 -0.05
+       vertex 0.09333333 -0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.09333333 -0.008 -0.05
+       vertex 0.09333333 -0.016 -0.05
+       vertex 0.08666667 -0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.08666667 -0.008 -0.05
+       vertex 0.08666667 2.891206e-19 -0.05
+       vertex 0.09333333 1.445603e-19 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.09333333 1.445603e-19 -0.05
+       vertex 0.09333333 -0.008 -0.05
+       vertex 0.08666667 -0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.09333333 -0.04 -0.05
+       vertex 0.09333333 -0.032 -0.05
+       vertex 0.1 -0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.1 -0.032 -0.05
+       vertex 0.1 -0.04 -0.05
+       vertex 0.09333333 -0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.09333333 -0.032 -0.05
+       vertex 0.09333333 -0.024 -0.05
+       vertex 0.1 -0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.1 -0.024 -0.05
+       vertex 0.1 -0.032 -0.05
+       vertex 0.09333333 -0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.09333333 -0.024 -0.05
+       vertex 0.09333333 -0.016 -0.05
+       vertex 0.1 -0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.1 -0.016 -0.05
+       vertex 0.1 -0.024 -0.05
+       vertex 0.09333333 -0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.09333333 -0.016 -0.05
+       vertex 0.09333333 -0.008 -0.05
+       vertex 0.1 -0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.1 -0.008 -0.05
+       vertex 0.1 -0.016 -0.05
+       vertex 0.09333333 -0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.09333333 -0.008 -0.05
+       vertex 0.09333333 1.445603e-19 -0.05
+       vertex 0.1 0 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.1 0 -0.05
+       vertex 0.1 -0.008 -0.05
+       vertex 0.09333333 -0.008 -0.05
+    endloop
+  endfacet
+endsolid minZ
+solid maxZ
+  facet normal 0 0 1
+    outer loop
+       vertex -0.1 -0.04 0.05
+       vertex -0.09333333 -0.04 0.05
+       vertex -0.09333333 -0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.09333333 -0.032 0.05
+       vertex -0.1 -0.032 0.05
+       vertex -0.1 -0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.1 -0.032 0.05
+       vertex -0.09333333 -0.032 0.05
+       vertex -0.09333333 -0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.09333333 -0.024 0.05
+       vertex -0.1 -0.024 0.05
+       vertex -0.1 -0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.1 -0.024 0.05
+       vertex -0.09333333 -0.024 0.05
+       vertex -0.09333333 -0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.09333333 -0.016 0.05
+       vertex -0.1 -0.016 0.05
+       vertex -0.1 -0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.1 -0.016 0.05
+       vertex -0.09333333 -0.016 0.05
+       vertex -0.09333333 -0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.09333333 -0.008 0.05
+       vertex -0.1 -0.008 0.05
+       vertex -0.1 -0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.1 -0.008 0.05
+       vertex -0.09333333 -0.008 0.05
+       vertex -0.09333333 0 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.09333333 0 0.05
+       vertex -0.1 0 0.05
+       vertex -0.1 -0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.09333333 -0.04 0.05
+       vertex -0.08666667 -0.04 0.05
+       vertex -0.08666667 -0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.08666667 -0.032 0.05
+       vertex -0.09333333 -0.032 0.05
+       vertex -0.09333333 -0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.09333333 -0.032 0.05
+       vertex -0.08666667 -0.032 0.05
+       vertex -0.08666667 -0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.08666667 -0.024 0.05
+       vertex -0.09333333 -0.024 0.05
+       vertex -0.09333333 -0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.09333333 -0.024 0.05
+       vertex -0.08666667 -0.024 0.05
+       vertex -0.08666667 -0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.08666667 -0.016 0.05
+       vertex -0.09333333 -0.016 0.05
+       vertex -0.09333333 -0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.09333333 -0.016 0.05
+       vertex -0.08666667 -0.016 0.05
+       vertex -0.08666667 -0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.08666667 -0.008 0.05
+       vertex -0.09333333 -0.008 0.05
+       vertex -0.09333333 -0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.09333333 -0.008 0.05
+       vertex -0.08666667 -0.008 0.05
+       vertex -0.08666667 0 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.08666667 0 0.05
+       vertex -0.09333333 0 0.05
+       vertex -0.09333333 -0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.08666667 -0.04 0.05
+       vertex -0.08 -0.04 0.05
+       vertex -0.08 -0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.08 -0.032 0.05
+       vertex -0.08666667 -0.032 0.05
+       vertex -0.08666667 -0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.08666667 -0.032 0.05
+       vertex -0.08 -0.032 0.05
+       vertex -0.08 -0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.08 -0.024 0.05
+       vertex -0.08666667 -0.024 0.05
+       vertex -0.08666667 -0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.08666667 -0.024 0.05
+       vertex -0.08 -0.024 0.05
+       vertex -0.08 -0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.08 -0.016 0.05
+       vertex -0.08666667 -0.016 0.05
+       vertex -0.08666667 -0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.08666667 -0.016 0.05
+       vertex -0.08 -0.016 0.05
+       vertex -0.08 -0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.08 -0.008 0.05
+       vertex -0.08666667 -0.008 0.05
+       vertex -0.08666667 -0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.08666667 -0.008 0.05
+       vertex -0.08 -0.008 0.05
+       vertex -0.08 0 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.08 0 0.05
+       vertex -0.08666667 0 0.05
+       vertex -0.08666667 -0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.08 -0.04 0.05
+       vertex -0.07333333 -0.04 0.05
+       vertex -0.07333333 -0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.07333333 -0.032 0.05
+       vertex -0.08 -0.032 0.05
+       vertex -0.08 -0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.08 -0.032 0.05
+       vertex -0.07333333 -0.032 0.05
+       vertex -0.07333333 -0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.07333333 -0.024 0.05
+       vertex -0.08 -0.024 0.05
+       vertex -0.08 -0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.08 -0.024 0.05
+       vertex -0.07333333 -0.024 0.05
+       vertex -0.07333333 -0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.07333333 -0.016 0.05
+       vertex -0.08 -0.016 0.05
+       vertex -0.08 -0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.08 -0.016 0.05
+       vertex -0.07333333 -0.016 0.05
+       vertex -0.07333333 -0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.07333333 -0.008 0.05
+       vertex -0.08 -0.008 0.05
+       vertex -0.08 -0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.08 -0.008 0.05
+       vertex -0.07333333 -0.008 0.05
+       vertex -0.07333333 0 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.07333333 0 0.05
+       vertex -0.08 0 0.05
+       vertex -0.08 -0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.07333333 -0.04 0.05
+       vertex -0.06666667 -0.04 0.05
+       vertex -0.06666667 -0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.06666667 -0.032 0.05
+       vertex -0.07333333 -0.032 0.05
+       vertex -0.07333333 -0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.07333333 -0.032 0.05
+       vertex -0.06666667 -0.032 0.05
+       vertex -0.06666667 -0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.06666667 -0.024 0.05
+       vertex -0.07333333 -0.024 0.05
+       vertex -0.07333333 -0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.07333333 -0.024 0.05
+       vertex -0.06666667 -0.024 0.05
+       vertex -0.06666667 -0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.06666667 -0.016 0.05
+       vertex -0.07333333 -0.016 0.05
+       vertex -0.07333333 -0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.07333333 -0.016 0.05
+       vertex -0.06666667 -0.016 0.05
+       vertex -0.06666667 -0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.06666667 -0.008 0.05
+       vertex -0.07333333 -0.008 0.05
+       vertex -0.07333333 -0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.07333333 -0.008 0.05
+       vertex -0.06666667 -0.008 0.05
+       vertex -0.06666667 0 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.06666667 0 0.05
+       vertex -0.07333333 0 0.05
+       vertex -0.07333333 -0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.06666667 -0.04 0.05
+       vertex -0.06 -0.04 0.05
+       vertex -0.06 -0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.06 -0.032 0.05
+       vertex -0.06666667 -0.032 0.05
+       vertex -0.06666667 -0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.06666667 -0.032 0.05
+       vertex -0.06 -0.032 0.05
+       vertex -0.06 -0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.06 -0.024 0.05
+       vertex -0.06666667 -0.024 0.05
+       vertex -0.06666667 -0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.06666667 -0.024 0.05
+       vertex -0.06 -0.024 0.05
+       vertex -0.06 -0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.06 -0.016 0.05
+       vertex -0.06666667 -0.016 0.05
+       vertex -0.06666667 -0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.06666667 -0.016 0.05
+       vertex -0.06 -0.016 0.05
+       vertex -0.06 -0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.06 -0.008 0.05
+       vertex -0.06666667 -0.008 0.05
+       vertex -0.06666667 -0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.06666667 -0.008 0.05
+       vertex -0.06 -0.008 0.05
+       vertex -0.06 0 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.06 0 0.05
+       vertex -0.06666667 0 0.05
+       vertex -0.06666667 -0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.06 -0.04 0.05
+       vertex -0.05333333 -0.04 0.05
+       vertex -0.05333333 -0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.05333333 -0.032 0.05
+       vertex -0.06 -0.032 0.05
+       vertex -0.06 -0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.06 -0.032 0.05
+       vertex -0.05333333 -0.032 0.05
+       vertex -0.05333333 -0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.05333333 -0.024 0.05
+       vertex -0.06 -0.024 0.05
+       vertex -0.06 -0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.06 -0.024 0.05
+       vertex -0.05333333 -0.024 0.05
+       vertex -0.05333333 -0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.05333333 -0.016 0.05
+       vertex -0.06 -0.016 0.05
+       vertex -0.06 -0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.06 -0.016 0.05
+       vertex -0.05333333 -0.016 0.05
+       vertex -0.05333333 -0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.05333333 -0.008 0.05
+       vertex -0.06 -0.008 0.05
+       vertex -0.06 -0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.06 -0.008 0.05
+       vertex -0.05333333 -0.008 0.05
+       vertex -0.05333333 -5.782412e-19 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.05333333 -5.782412e-19 0.05
+       vertex -0.06 0 0.05
+       vertex -0.06 -0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.05333333 -0.04 0.05
+       vertex -0.04666667 -0.04 0.05
+       vertex -0.04666667 -0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.04666667 -0.032 0.05
+       vertex -0.05333333 -0.032 0.05
+       vertex -0.05333333 -0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.05333333 -0.032 0.05
+       vertex -0.04666667 -0.032 0.05
+       vertex -0.04666667 -0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.04666667 -0.024 0.05
+       vertex -0.05333333 -0.024 0.05
+       vertex -0.05333333 -0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.05333333 -0.024 0.05
+       vertex -0.04666667 -0.024 0.05
+       vertex -0.04666667 -0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.04666667 -0.016 0.05
+       vertex -0.05333333 -0.016 0.05
+       vertex -0.05333333 -0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.05333333 -0.016 0.05
+       vertex -0.04666667 -0.016 0.05
+       vertex -0.04666667 -0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.04666667 -0.008 0.05
+       vertex -0.05333333 -0.008 0.05
+       vertex -0.05333333 -0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.05333333 -0.008 0.05
+       vertex -0.04666667 -0.008 0.05
+       vertex -0.04666667 0 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.04666667 0 0.05
+       vertex -0.05333333 -5.782412e-19 0.05
+       vertex -0.05333333 -0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.04666667 -0.04 0.05
+       vertex -0.04 -0.04 0.05
+       vertex -0.04 -0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.04 -0.032 0.05
+       vertex -0.04666667 -0.032 0.05
+       vertex -0.04666667 -0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.04666667 -0.032 0.05
+       vertex -0.04 -0.032 0.05
+       vertex -0.04 -0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.04 -0.024 0.05
+       vertex -0.04666667 -0.024 0.05
+       vertex -0.04666667 -0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.04666667 -0.024 0.05
+       vertex -0.04 -0.024 0.05
+       vertex -0.04 -0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.04 -0.016 0.05
+       vertex -0.04666667 -0.016 0.05
+       vertex -0.04666667 -0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.04666667 -0.016 0.05
+       vertex -0.04 -0.016 0.05
+       vertex -0.04 -0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.04 -0.008 0.05
+       vertex -0.04666667 -0.008 0.05
+       vertex -0.04666667 -0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.04666667 -0.008 0.05
+       vertex -0.04 -0.008 0.05
+       vertex -0.04 5.782412e-19 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.04 5.782412e-19 0.05
+       vertex -0.04666667 0 0.05
+       vertex -0.04666667 -0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.04 -0.04 0.05
+       vertex -0.03333333 -0.04 0.05
+       vertex -0.03333333 -0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.03333333 -0.032 0.05
+       vertex -0.04 -0.032 0.05
+       vertex -0.04 -0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.04 -0.032 0.05
+       vertex -0.03333333 -0.032 0.05
+       vertex -0.03333333 -0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.03333333 -0.024 0.05
+       vertex -0.04 -0.024 0.05
+       vertex -0.04 -0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.04 -0.024 0.05
+       vertex -0.03333333 -0.024 0.05
+       vertex -0.03333333 -0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.03333333 -0.016 0.05
+       vertex -0.04 -0.016 0.05
+       vertex -0.04 -0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.04 -0.016 0.05
+       vertex -0.03333333 -0.016 0.05
+       vertex -0.03333333 -0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.03333333 -0.008 0.05
+       vertex -0.04 -0.008 0.05
+       vertex -0.04 -0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.03333333 -5.782412e-19 0.05
+       vertex -0.04 5.782412e-19 0.05
+       vertex -0.04 -0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.04 -0.008 0.05
+       vertex -0.03333333 -0.008 0.05
+       vertex -0.03333333 -5.782412e-19 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.03333333 -0.04 0.05
+       vertex -0.02666667 -0.04 0.05
+       vertex -0.02666667 -0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.02666667 -0.032 0.05
+       vertex -0.03333333 -0.032 0.05
+       vertex -0.03333333 -0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.03333333 -0.032 0.05
+       vertex -0.02666667 -0.032 0.05
+       vertex -0.02666667 -0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.02666667 -0.024 0.05
+       vertex -0.03333333 -0.024 0.05
+       vertex -0.03333333 -0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.03333333 -0.024 0.05
+       vertex -0.02666667 -0.024 0.05
+       vertex -0.02666667 -0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.02666667 -0.016 0.05
+       vertex -0.03333333 -0.016 0.05
+       vertex -0.03333333 -0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.03333333 -0.016 0.05
+       vertex -0.02666667 -0.016 0.05
+       vertex -0.02666667 -0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.02666667 -0.008 0.05
+       vertex -0.03333333 -0.008 0.05
+       vertex -0.03333333 -0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.03333333 -0.008 0.05
+       vertex -0.02666667 -0.008 0.05
+       vertex -0.02666667 0 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.02666667 0 0.05
+       vertex -0.03333333 -5.782412e-19 0.05
+       vertex -0.03333333 -0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.02666667 -0.04 0.05
+       vertex -0.02 -0.04 0.05
+       vertex -0.02 -0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.02 -0.032 0.05
+       vertex -0.02666667 -0.032 0.05
+       vertex -0.02666667 -0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.02666667 -0.032 0.05
+       vertex -0.02 -0.032 0.05
+       vertex -0.02 -0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.02 -0.024 0.05
+       vertex -0.02666667 -0.024 0.05
+       vertex -0.02666667 -0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.02666667 -0.024 0.05
+       vertex -0.02 -0.024 0.05
+       vertex -0.02 -0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.02 -0.016 0.05
+       vertex -0.02666667 -0.016 0.05
+       vertex -0.02666667 -0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.02666667 -0.016 0.05
+       vertex -0.02 -0.016 0.05
+       vertex -0.02 -0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.02 -0.008 0.05
+       vertex -0.02666667 -0.008 0.05
+       vertex -0.02666667 -0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.02666667 -0.008 0.05
+       vertex -0.02 -0.008 0.05
+       vertex -0.02 0 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.02 0 0.05
+       vertex -0.02666667 0 0.05
+       vertex -0.02666667 -0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.02 -0.04 0.05
+       vertex -0.01333333 -0.04 0.05
+       vertex -0.01333333 -0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.01333333 -0.032 0.05
+       vertex -0.02 -0.032 0.05
+       vertex -0.02 -0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.02 -0.032 0.05
+       vertex -0.01333333 -0.032 0.05
+       vertex -0.01333333 -0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.01333333 -0.024 0.05
+       vertex -0.02 -0.024 0.05
+       vertex -0.02 -0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.02 -0.024 0.05
+       vertex -0.01333333 -0.024 0.05
+       vertex -0.01333333 -0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.01333333 -0.016 0.05
+       vertex -0.02 -0.016 0.05
+       vertex -0.02 -0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.02 -0.016 0.05
+       vertex -0.01333333 -0.016 0.05
+       vertex -0.01333333 -0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.01333333 -0.008 0.05
+       vertex -0.02 -0.008 0.05
+       vertex -0.02 -0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.02 -0.008 0.05
+       vertex -0.01333333 -0.008 0.05
+       vertex -0.01333333 0 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.01333333 0 0.05
+       vertex -0.02 0 0.05
+       vertex -0.02 -0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.01333333 -0.04 0.05
+       vertex -0.006666667 -0.04 0.05
+       vertex -0.006666667 -0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.006666667 -0.032 0.05
+       vertex -0.01333333 -0.032 0.05
+       vertex -0.01333333 -0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.01333333 -0.032 0.05
+       vertex -0.006666667 -0.032 0.05
+       vertex -0.006666667 -0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.006666667 -0.024 0.05
+       vertex -0.01333333 -0.024 0.05
+       vertex -0.01333333 -0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.01333333 -0.024 0.05
+       vertex -0.006666667 -0.024 0.05
+       vertex -0.006666667 -0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.006666667 -0.016 0.05
+       vertex -0.01333333 -0.016 0.05
+       vertex -0.01333333 -0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.01333333 -0.016 0.05
+       vertex -0.006666667 -0.016 0.05
+       vertex -0.006666667 -0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.006666667 -0.008 0.05
+       vertex -0.01333333 -0.008 0.05
+       vertex -0.01333333 -0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.01333333 -0.008 0.05
+       vertex -0.006666667 -0.008 0.05
+       vertex -0.006666667 0 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.006666667 0 0.05
+       vertex -0.01333333 0 0.05
+       vertex -0.01333333 -0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.006666667 -0.04 0.05
+       vertex 0 -0.04 0.05
+       vertex 0 -0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0 -0.032 0.05
+       vertex -0.006666667 -0.032 0.05
+       vertex -0.006666667 -0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.006666667 -0.032 0.05
+       vertex 0 -0.032 0.05
+       vertex 0 -0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0 -0.024 0.05
+       vertex -0.006666667 -0.024 0.05
+       vertex -0.006666667 -0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.006666667 -0.024 0.05
+       vertex 0 -0.024 0.05
+       vertex 0 -0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0 -0.016 0.05
+       vertex -0.006666667 -0.016 0.05
+       vertex -0.006666667 -0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.006666667 -0.016 0.05
+       vertex 0 -0.016 0.05
+       vertex 0 -0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0 -0.008 0.05
+       vertex -0.006666667 -0.008 0.05
+       vertex -0.006666667 -0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.006666667 -0.008 0.05
+       vertex 0 -0.008 0.05
+       vertex 0 0 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0 0 0.05
+       vertex -0.006666667 0 0.05
+       vertex -0.006666667 -0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0 -0.04 0.05
+       vertex 0.006666667 -0.04 0.05
+       vertex 0.006666667 -0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.006666667 -0.032 0.05
+       vertex 0 -0.032 0.05
+       vertex 0 -0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0 -0.032 0.05
+       vertex 0.006666667 -0.032 0.05
+       vertex 0.006666667 -0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.006666667 -0.024 0.05
+       vertex 0 -0.024 0.05
+       vertex 0 -0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0 -0.024 0.05
+       vertex 0.006666667 -0.024 0.05
+       vertex 0.006666667 -0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.006666667 -0.016 0.05
+       vertex 0 -0.016 0.05
+       vertex 0 -0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0 -0.016 0.05
+       vertex 0.006666667 -0.016 0.05
+       vertex 0.006666667 -0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.006666667 -0.008 0.05
+       vertex 0 -0.008 0.05
+       vertex 0 -0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0 -0.008 0.05
+       vertex 0.006666667 -0.008 0.05
+       vertex 0.006666667 0 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.006666667 0 0.05
+       vertex 0 0 0.05
+       vertex 0 -0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.006666667 -0.04 0.05
+       vertex 0.01333333 -0.04 0.05
+       vertex 0.01333333 -0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.01333333 -0.032 0.05
+       vertex 0.006666667 -0.032 0.05
+       vertex 0.006666667 -0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.006666667 -0.032 0.05
+       vertex 0.01333333 -0.032 0.05
+       vertex 0.01333333 -0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.01333333 -0.024 0.05
+       vertex 0.006666667 -0.024 0.05
+       vertex 0.006666667 -0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.006666667 -0.024 0.05
+       vertex 0.01333333 -0.024 0.05
+       vertex 0.01333333 -0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.01333333 -0.016 0.05
+       vertex 0.006666667 -0.016 0.05
+       vertex 0.006666667 -0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.006666667 -0.016 0.05
+       vertex 0.01333333 -0.016 0.05
+       vertex 0.01333333 -0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.01333333 -0.008 0.05
+       vertex 0.006666667 -0.008 0.05
+       vertex 0.006666667 -0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.006666667 -0.008 0.05
+       vertex 0.01333333 -0.008 0.05
+       vertex 0.01333333 0 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.01333333 0 0.05
+       vertex 0.006666667 0 0.05
+       vertex 0.006666667 -0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.01333333 -0.04 0.05
+       vertex 0.02 -0.04 0.05
+       vertex 0.02 -0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.02 -0.032 0.05
+       vertex 0.01333333 -0.032 0.05
+       vertex 0.01333333 -0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.01333333 -0.032 0.05
+       vertex 0.02 -0.032 0.05
+       vertex 0.02 -0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.02 -0.024 0.05
+       vertex 0.01333333 -0.024 0.05
+       vertex 0.01333333 -0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.01333333 -0.024 0.05
+       vertex 0.02 -0.024 0.05
+       vertex 0.02 -0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.02 -0.016 0.05
+       vertex 0.01333333 -0.016 0.05
+       vertex 0.01333333 -0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.01333333 -0.016 0.05
+       vertex 0.02 -0.016 0.05
+       vertex 0.02 -0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.02 -0.008 0.05
+       vertex 0.01333333 -0.008 0.05
+       vertex 0.01333333 -0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.01333333 -0.008 0.05
+       vertex 0.02 -0.008 0.05
+       vertex 0.02 0 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.02 0 0.05
+       vertex 0.01333333 0 0.05
+       vertex 0.01333333 -0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.02 -0.04 0.05
+       vertex 0.02666667 -0.04 0.05
+       vertex 0.02666667 -0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.02666667 -0.032 0.05
+       vertex 0.02 -0.032 0.05
+       vertex 0.02 -0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.02 -0.032 0.05
+       vertex 0.02666667 -0.032 0.05
+       vertex 0.02666667 -0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.02666667 -0.024 0.05
+       vertex 0.02 -0.024 0.05
+       vertex 0.02 -0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.02 -0.024 0.05
+       vertex 0.02666667 -0.024 0.05
+       vertex 0.02666667 -0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.02666667 -0.016 0.05
+       vertex 0.02 -0.016 0.05
+       vertex 0.02 -0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.02 -0.016 0.05
+       vertex 0.02666667 -0.016 0.05
+       vertex 0.02666667 -0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.02666667 -0.008 0.05
+       vertex 0.02 -0.008 0.05
+       vertex 0.02 -0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.02 -0.008 0.05
+       vertex 0.02666667 -0.008 0.05
+       vertex 0.02666667 0 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.02666667 0 0.05
+       vertex 0.02 0 0.05
+       vertex 0.02 -0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.02666667 -0.04 0.05
+       vertex 0.03333333 -0.04 0.05
+       vertex 0.03333333 -0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.03333333 -0.032 0.05
+       vertex 0.02666667 -0.032 0.05
+       vertex 0.02666667 -0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.02666667 -0.032 0.05
+       vertex 0.03333333 -0.032 0.05
+       vertex 0.03333333 -0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.03333333 -0.024 0.05
+       vertex 0.02666667 -0.024 0.05
+       vertex 0.02666667 -0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.02666667 -0.024 0.05
+       vertex 0.03333333 -0.024 0.05
+       vertex 0.03333333 -0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.03333333 -0.016 0.05
+       vertex 0.02666667 -0.016 0.05
+       vertex 0.02666667 -0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.02666667 -0.016 0.05
+       vertex 0.03333333 -0.016 0.05
+       vertex 0.03333333 -0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.03333333 -0.008 0.05
+       vertex 0.02666667 -0.008 0.05
+       vertex 0.02666667 -0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.02666667 -0.008 0.05
+       vertex 0.03333333 -0.008 0.05
+       vertex 0.03333333 0 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.03333333 0 0.05
+       vertex 0.02666667 0 0.05
+       vertex 0.02666667 -0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.03333333 -0.04 0.05
+       vertex 0.04 -0.04 0.05
+       vertex 0.04 -0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.04 -0.032 0.05
+       vertex 0.03333333 -0.032 0.05
+       vertex 0.03333333 -0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.03333333 -0.032 0.05
+       vertex 0.04 -0.032 0.05
+       vertex 0.04 -0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.04 -0.024 0.05
+       vertex 0.03333333 -0.024 0.05
+       vertex 0.03333333 -0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.03333333 -0.024 0.05
+       vertex 0.04 -0.024 0.05
+       vertex 0.04 -0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.04 -0.016 0.05
+       vertex 0.03333333 -0.016 0.05
+       vertex 0.03333333 -0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.03333333 -0.016 0.05
+       vertex 0.04 -0.016 0.05
+       vertex 0.04 -0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.04 -0.008 0.05
+       vertex 0.03333333 -0.008 0.05
+       vertex 0.03333333 -0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.03333333 -0.008 0.05
+       vertex 0.04 -0.008 0.05
+       vertex 0.04 -2.891206e-19 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.04 -2.891206e-19 0.05
+       vertex 0.03333333 0 0.05
+       vertex 0.03333333 -0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.04 -0.04 0.05
+       vertex 0.04666667 -0.04 0.05
+       vertex 0.04666667 -0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.04666667 -0.032 0.05
+       vertex 0.04 -0.032 0.05
+       vertex 0.04 -0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.04 -0.032 0.05
+       vertex 0.04666667 -0.032 0.05
+       vertex 0.04666667 -0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.04666667 -0.024 0.05
+       vertex 0.04 -0.024 0.05
+       vertex 0.04 -0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.04 -0.024 0.05
+       vertex 0.04666667 -0.024 0.05
+       vertex 0.04666667 -0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.04666667 -0.016 0.05
+       vertex 0.04 -0.016 0.05
+       vertex 0.04 -0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.04 -0.016 0.05
+       vertex 0.04666667 -0.016 0.05
+       vertex 0.04666667 -0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.04666667 -0.008 0.05
+       vertex 0.04 -0.008 0.05
+       vertex 0.04 -0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.04 -0.008 0.05
+       vertex 0.04666667 -0.008 0.05
+       vertex 0.04666667 2.891206e-19 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.04666667 2.891206e-19 0.05
+       vertex 0.04 -2.891206e-19 0.05
+       vertex 0.04 -0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.04666667 -0.04 0.05
+       vertex 0.05333333 -0.04 0.05
+       vertex 0.05333333 -0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.05333333 -0.032 0.05
+       vertex 0.04666667 -0.032 0.05
+       vertex 0.04666667 -0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.04666667 -0.032 0.05
+       vertex 0.05333333 -0.032 0.05
+       vertex 0.05333333 -0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.05333333 -0.024 0.05
+       vertex 0.04666667 -0.024 0.05
+       vertex 0.04666667 -0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.04666667 -0.024 0.05
+       vertex 0.05333333 -0.024 0.05
+       vertex 0.05333333 -0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.05333333 -0.016 0.05
+       vertex 0.04666667 -0.016 0.05
+       vertex 0.04666667 -0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.04666667 -0.016 0.05
+       vertex 0.05333333 -0.016 0.05
+       vertex 0.05333333 -0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.05333333 -0.008 0.05
+       vertex 0.04666667 -0.008 0.05
+       vertex 0.04666667 -0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.04666667 -0.008 0.05
+       vertex 0.05333333 -0.008 0.05
+       vertex 0.05333333 0 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.05333333 0 0.05
+       vertex 0.04666667 2.891206e-19 0.05
+       vertex 0.04666667 -0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.05333333 -0.04 0.05
+       vertex 0.06 -0.04 0.05
+       vertex 0.06 -0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.06 -0.032 0.05
+       vertex 0.05333333 -0.032 0.05
+       vertex 0.05333333 -0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.05333333 -0.032 0.05
+       vertex 0.06 -0.032 0.05
+       vertex 0.06 -0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.06 -0.024 0.05
+       vertex 0.05333333 -0.024 0.05
+       vertex 0.05333333 -0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.05333333 -0.024 0.05
+       vertex 0.06 -0.024 0.05
+       vertex 0.06 -0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.06 -0.016 0.05
+       vertex 0.05333333 -0.016 0.05
+       vertex 0.05333333 -0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.05333333 -0.016 0.05
+       vertex 0.06 -0.016 0.05
+       vertex 0.06 -0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.06 -0.008 0.05
+       vertex 0.05333333 -0.008 0.05
+       vertex 0.05333333 -0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.05333333 -0.008 0.05
+       vertex 0.06 -0.008 0.05
+       vertex 0.06 -2.891206e-19 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.06 -2.891206e-19 0.05
+       vertex 0.05333333 0 0.05
+       vertex 0.05333333 -0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.06 -0.04 0.05
+       vertex 0.06666667 -0.04 0.05
+       vertex 0.06666667 -0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.06666667 -0.032 0.05
+       vertex 0.06 -0.032 0.05
+       vertex 0.06 -0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.06 -0.032 0.05
+       vertex 0.06666667 -0.032 0.05
+       vertex 0.06666667 -0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.06666667 -0.024 0.05
+       vertex 0.06 -0.024 0.05
+       vertex 0.06 -0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.06 -0.024 0.05
+       vertex 0.06666667 -0.024 0.05
+       vertex 0.06666667 -0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.06666667 -0.016 0.05
+       vertex 0.06 -0.016 0.05
+       vertex 0.06 -0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.06 -0.016 0.05
+       vertex 0.06666667 -0.016 0.05
+       vertex 0.06666667 -0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.06666667 -0.008 0.05
+       vertex 0.06 -0.008 0.05
+       vertex 0.06 -0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.06 -0.008 0.05
+       vertex 0.06666667 -0.008 0.05
+       vertex 0.06666667 -4.336809e-19 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.06666667 -4.336809e-19 0.05
+       vertex 0.06 -2.891206e-19 0.05
+       vertex 0.06 -0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.06666667 -0.04 0.05
+       vertex 0.07333333 -0.04 0.05
+       vertex 0.07333333 -0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.07333333 -0.032 0.05
+       vertex 0.06666667 -0.032 0.05
+       vertex 0.06666667 -0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.06666667 -0.032 0.05
+       vertex 0.07333333 -0.032 0.05
+       vertex 0.07333333 -0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.07333333 -0.024 0.05
+       vertex 0.06666667 -0.024 0.05
+       vertex 0.06666667 -0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.06666667 -0.024 0.05
+       vertex 0.07333333 -0.024 0.05
+       vertex 0.07333333 -0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.07333333 -0.016 0.05
+       vertex 0.06666667 -0.016 0.05
+       vertex 0.06666667 -0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.06666667 -0.016 0.05
+       vertex 0.07333333 -0.016 0.05
+       vertex 0.07333333 -0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.07333333 -0.008 0.05
+       vertex 0.06666667 -0.008 0.05
+       vertex 0.06666667 -0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.06666667 -0.008 0.05
+       vertex 0.07333333 -0.008 0.05
+       vertex 0.07333333 -5.782412e-19 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.07333333 -5.782412e-19 0.05
+       vertex 0.06666667 -4.336809e-19 0.05
+       vertex 0.06666667 -0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.07333333 -0.04 0.05
+       vertex 0.08 -0.04 0.05
+       vertex 0.08 -0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.08 -0.032 0.05
+       vertex 0.07333333 -0.032 0.05
+       vertex 0.07333333 -0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.07333333 -0.032 0.05
+       vertex 0.08 -0.032 0.05
+       vertex 0.08 -0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.08 -0.024 0.05
+       vertex 0.07333333 -0.024 0.05
+       vertex 0.07333333 -0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.07333333 -0.024 0.05
+       vertex 0.08 -0.024 0.05
+       vertex 0.08 -0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.08 -0.016 0.05
+       vertex 0.07333333 -0.016 0.05
+       vertex 0.07333333 -0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.07333333 -0.016 0.05
+       vertex 0.08 -0.016 0.05
+       vertex 0.08 -0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.08 -0.008 0.05
+       vertex 0.07333333 -0.008 0.05
+       vertex 0.07333333 -0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.07333333 -0.008 0.05
+       vertex 0.08 -0.008 0.05
+       vertex 0.08 4.336809e-19 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.08 4.336809e-19 0.05
+       vertex 0.07333333 -5.782412e-19 0.05
+       vertex 0.07333333 -0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.08 -0.04 0.05
+       vertex 0.08666667 -0.04 0.05
+       vertex 0.08666667 -0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.08666667 -0.032 0.05
+       vertex 0.08 -0.032 0.05
+       vertex 0.08 -0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.08 -0.032 0.05
+       vertex 0.08666667 -0.032 0.05
+       vertex 0.08666667 -0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.08666667 -0.024 0.05
+       vertex 0.08 -0.024 0.05
+       vertex 0.08 -0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.08 -0.024 0.05
+       vertex 0.08666667 -0.024 0.05
+       vertex 0.08666667 -0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.08666667 -0.016 0.05
+       vertex 0.08 -0.016 0.05
+       vertex 0.08 -0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.08 -0.016 0.05
+       vertex 0.08666667 -0.016 0.05
+       vertex 0.08666667 -0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.08666667 -0.008 0.05
+       vertex 0.08 -0.008 0.05
+       vertex 0.08 -0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.08 -0.008 0.05
+       vertex 0.08666667 -0.008 0.05
+       vertex 0.08666667 2.891206e-19 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.08666667 2.891206e-19 0.05
+       vertex 0.08 4.336809e-19 0.05
+       vertex 0.08 -0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.08666667 -0.04 0.05
+       vertex 0.09333333 -0.04 0.05
+       vertex 0.09333333 -0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.09333333 -0.032 0.05
+       vertex 0.08666667 -0.032 0.05
+       vertex 0.08666667 -0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.08666667 -0.032 0.05
+       vertex 0.09333333 -0.032 0.05
+       vertex 0.09333333 -0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.09333333 -0.024 0.05
+       vertex 0.08666667 -0.024 0.05
+       vertex 0.08666667 -0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.08666667 -0.024 0.05
+       vertex 0.09333333 -0.024 0.05
+       vertex 0.09333333 -0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.09333333 -0.016 0.05
+       vertex 0.08666667 -0.016 0.05
+       vertex 0.08666667 -0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.08666667 -0.016 0.05
+       vertex 0.09333333 -0.016 0.05
+       vertex 0.09333333 -0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.09333333 -0.008 0.05
+       vertex 0.08666667 -0.008 0.05
+       vertex 0.08666667 -0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.08666667 -0.008 0.05
+       vertex 0.09333333 -0.008 0.05
+       vertex 0.09333333 1.445603e-19 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.09333333 1.445603e-19 0.05
+       vertex 0.08666667 2.891206e-19 0.05
+       vertex 0.08666667 -0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.09333333 -0.04 0.05
+       vertex 0.1 -0.04 0.05
+       vertex 0.1 -0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.1 -0.032 0.05
+       vertex 0.09333333 -0.032 0.05
+       vertex 0.09333333 -0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.09333333 -0.032 0.05
+       vertex 0.1 -0.032 0.05
+       vertex 0.1 -0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.1 -0.024 0.05
+       vertex 0.09333333 -0.024 0.05
+       vertex 0.09333333 -0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.09333333 -0.024 0.05
+       vertex 0.1 -0.024 0.05
+       vertex 0.1 -0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.1 -0.016 0.05
+       vertex 0.09333333 -0.016 0.05
+       vertex 0.09333333 -0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.09333333 -0.016 0.05
+       vertex 0.1 -0.016 0.05
+       vertex 0.1 -0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.1 -0.008 0.05
+       vertex 0.09333333 -0.008 0.05
+       vertex 0.09333333 -0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.09333333 -0.008 0.05
+       vertex 0.1 -0.008 0.05
+       vertex 0.1 0 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.1 0 0.05
+       vertex 0.09333333 1.445603e-19 0.05
+       vertex 0.09333333 -0.008 0.05
+    endloop
+  endfacet
+endsolid maxZ
+solid bottomAir_to_rightSolid
+  facet normal 8.673614e-17 1 -0
+    outer loop
+       vertex 0.01333333 0 -0.05
+       vertex 0.01333333 0 -0.04
+       vertex 0.02 -5.782412e-19 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 5.782412e-17
+    outer loop
+       vertex 0.02 -5.782412e-19 -0.04
+       vertex 0.02 0 -0.05
+       vertex 0.01333333 0 -0.05
+    endloop
+  endfacet
+  facet normal -8.673614e-17 1 5.782412e-17
+    outer loop
+       vertex 0.02 0 -0.05
+       vertex 0.02 -5.782412e-19 -0.04
+       vertex 0.02666667 0 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02666667 0 -0.04
+       vertex 0.02666667 0 -0.05
+       vertex 0.02 0 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02666667 0 -0.05
+       vertex 0.02666667 0 -0.04
+       vertex 0.03333333 0 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.03333333 0 -0.04
+       vertex 0.03333333 0 -0.05
+       vertex 0.02666667 0 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.03333333 0 -0.05
+       vertex 0.03333333 0 -0.04
+       vertex 0.04 0 -0.04
+    endloop
+  endfacet
+  facet normal 4.336807e-17 1 -2.891206e-17
+    outer loop
+       vertex 0.04 0 -0.04
+       vertex 0.04 -2.891206e-19 -0.05
+       vertex 0.03333333 0 -0.05
+    endloop
+  endfacet
+  facet normal -4.336807e-17 1 -2.891206e-17
+    outer loop
+       vertex 0.04 -2.891206e-19 -0.05
+       vertex 0.04 0 -0.04
+       vertex 0.04666667 2.891206e-19 -0.04
+    endloop
+  endfacet
+  facet normal -8.673614e-17 1 0
+    outer loop
+       vertex 0.04666667 2.891206e-19 -0.04
+       vertex 0.04666667 2.891206e-19 -0.05
+       vertex 0.04 -2.891206e-19 -0.05
+    endloop
+  endfacet
+  facet normal 4.336813e-17 1 -0
+    outer loop
+       vertex 0.04666667 2.891206e-19 -0.05
+       vertex 0.04666667 2.891206e-19 -0.04
+       vertex 0.05333333 0 -0.04
+    endloop
+  endfacet
+  facet normal 4.336813e-17 1 0
+    outer loop
+       vertex 0.05333333 0 -0.04
+       vertex 0.05333333 0 -0.05
+       vertex 0.04666667 2.891206e-19 -0.05
+    endloop
+  endfacet
+  facet normal 4.336807e-17 1 -0
+    outer loop
+       vertex 0.05333333 0 -0.05
+       vertex 0.05333333 0 -0.04
+       vertex 0.06 -2.891206e-19 -0.04
+    endloop
+  endfacet
+  facet normal 4.336807e-17 1 0
+    outer loop
+       vertex 0.06 -2.891206e-19 -0.04
+       vertex 0.06 -2.891206e-19 -0.05
+       vertex 0.05333333 0 -0.05
+    endloop
+  endfacet
+  facet normal 2.168403e-17 1 -0
+    outer loop
+       vertex 0.06 -2.891206e-19 -0.05
+       vertex 0.06 -2.891206e-19 -0.04
+       vertex 0.06666667 -4.336809e-19 -0.04
+    endloop
+  endfacet
+  facet normal 2.168403e-17 1 0
+    outer loop
+       vertex 0.06666667 -4.336809e-19 -0.04
+       vertex 0.06666667 -4.336809e-19 -0.05
+       vertex 0.06 -2.891206e-19 -0.05
+    endloop
+  endfacet
+  facet normal 2.168407e-17 1 -0
+    outer loop
+       vertex 0.06666667 -4.336809e-19 -0.05
+       vertex 0.06666667 -4.336809e-19 -0.04
+       vertex 0.07333333 -5.782412e-19 -0.04
+    endloop
+  endfacet
+  facet normal 2.168407e-17 1 0
+    outer loop
+       vertex 0.07333333 -5.782412e-19 -0.04
+       vertex 0.07333333 -5.782412e-19 -0.05
+       vertex 0.06666667 -4.336809e-19 -0.05
+    endloop
+  endfacet
+  facet normal -1.517882e-16 1 0
+    outer loop
+       vertex 0.07333333 -5.782412e-19 -0.05
+       vertex 0.07333333 -5.782412e-19 -0.04
+       vertex 0.08 4.336809e-19 -0.04
+    endloop
+  endfacet
+  facet normal -1.517882e-16 1 0
+    outer loop
+       vertex 0.08 4.336809e-19 -0.04
+       vertex 0.08 4.336809e-19 -0.05
+       vertex 0.07333333 -5.782412e-19 -0.05
+    endloop
+  endfacet
+  facet normal 2.168403e-17 1 -0
+    outer loop
+       vertex 0.08 4.336809e-19 -0.05
+       vertex 0.08 4.336809e-19 -0.04
+       vertex 0.08666667 2.891206e-19 -0.04
+    endloop
+  endfacet
+  facet normal 2.168403e-17 1 0
+    outer loop
+       vertex 0.08666667 2.891206e-19 -0.04
+       vertex 0.08666667 2.891206e-19 -0.05
+       vertex 0.08 4.336809e-19 -0.05
+    endloop
+  endfacet
+  facet normal 2.168407e-17 1 -0
+    outer loop
+       vertex 0.08666667 2.891206e-19 -0.05
+       vertex 0.08666667 2.891206e-19 -0.04
+       vertex 0.09333333 1.445603e-19 -0.04
+    endloop
+  endfacet
+  facet normal 2.168407e-17 1 0
+    outer loop
+       vertex 0.09333333 1.445603e-19 -0.04
+       vertex 0.09333333 1.445603e-19 -0.05
+       vertex 0.08666667 2.891206e-19 -0.05
+    endloop
+  endfacet
+  facet normal 2.168403e-17 1 -0
+    outer loop
+       vertex 0.09333333 1.445603e-19 -0.05
+       vertex 0.09333333 1.445603e-19 -0.04
+       vertex 0.1 0 -0.04
+    endloop
+  endfacet
+  facet normal 2.168403e-17 1 0
+    outer loop
+       vertex 0.1 0 -0.04
+       vertex 0.1 0 -0.05
+       vertex 0.09333333 1.445603e-19 -0.05
+    endloop
+  endfacet
+  facet normal 8.673614e-17 1 -0
+    outer loop
+       vertex 0.01333333 0 -0.04
+       vertex 0.01333333 0 -0.03
+       vertex 0.02 -5.782412e-19 -0.03
+    endloop
+  endfacet
+  facet normal 8.673614e-17 1 0
+    outer loop
+       vertex 0.02 -5.782412e-19 -0.03
+       vertex 0.02 -5.782412e-19 -0.04
+       vertex 0.01333333 0 -0.04
+    endloop
+  endfacet
+  facet normal -8.673614e-17 1 0
+    outer loop
+       vertex 0.02 -5.782412e-19 -0.04
+       vertex 0.02 -5.782412e-19 -0.03
+       vertex 0.02666667 0 -0.03
+    endloop
+  endfacet
+  facet normal -8.673614e-17 1 0
+    outer loop
+       vertex 0.02666667 0 -0.03
+       vertex 0.02666667 0 -0.04
+       vertex 0.02 -5.782412e-19 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02666667 0 -0.04
+       vertex 0.02666667 0 -0.03
+       vertex 0.03333333 0 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.03333333 0 -0.03
+       vertex 0.03333333 0 -0.04
+       vertex 0.02666667 0 -0.04
+    endloop
+  endfacet
+  facet normal 4.336807e-17 1 -0
+    outer loop
+       vertex 0.03333333 0 -0.04
+       vertex 0.03333333 0 -0.03
+       vertex 0.04 -2.891206e-19 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 2.891206e-17
+    outer loop
+       vertex 0.04 -2.891206e-19 -0.03
+       vertex 0.04 0 -0.04
+       vertex 0.03333333 0 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 2.891206e-17
+    outer loop
+       vertex 0.04 0 -0.04
+       vertex 0.04 -2.891206e-19 -0.03
+       vertex 0.04666667 -2.891206e-19 -0.03
+    endloop
+  endfacet
+  facet normal -4.336807e-17 1 5.782412e-17
+    outer loop
+       vertex 0.04666667 -2.891206e-19 -0.03
+       vertex 0.04666667 2.891206e-19 -0.04
+       vertex 0.04 0 -0.04
+    endloop
+  endfacet
+  facet normal -8.673627e-17 1 5.782412e-17
+    outer loop
+       vertex 0.04666667 2.891206e-19 -0.04
+       vertex 0.04666667 -2.891206e-19 -0.03
+       vertex 0.05333333 2.891206e-19 -0.03
+    endloop
+  endfacet
+  facet normal 4.336813e-17 1 -2.891206e-17
+    outer loop
+       vertex 0.05333333 2.891206e-19 -0.03
+       vertex 0.05333333 0 -0.04
+       vertex 0.04666667 2.891206e-19 -0.04
+    endloop
+  endfacet
+  facet normal 8.673614e-17 1 -2.891206e-17
+    outer loop
+       vertex 0.05333333 0 -0.04
+       vertex 0.05333333 2.891206e-19 -0.03
+       vertex 0.06 -2.891206e-19 -0.03
+    endloop
+  endfacet
+  facet normal 4.336807e-17 1 0
+    outer loop
+       vertex 0.06 -2.891206e-19 -0.03
+       vertex 0.06 -2.891206e-19 -0.04
+       vertex 0.05333333 0 -0.04
+    endloop
+  endfacet
+  facet normal 2.168403e-17 1 -0
+    outer loop
+       vertex 0.06 -2.891206e-19 -0.04
+       vertex 0.06 -2.891206e-19 -0.03
+       vertex 0.06666667 -4.336809e-19 -0.03
+    endloop
+  endfacet
+  facet normal 2.168403e-17 1 0
+    outer loop
+       vertex 0.06666667 -4.336809e-19 -0.03
+       vertex 0.06666667 -4.336809e-19 -0.04
+       vertex 0.06 -2.891206e-19 -0.04
+    endloop
+  endfacet
+  facet normal 2.168407e-17 1 -0
+    outer loop
+       vertex 0.06666667 -4.336809e-19 -0.04
+       vertex 0.06666667 -4.336809e-19 -0.03
+       vertex 0.07333333 -5.782412e-19 -0.03
+    endloop
+  endfacet
+  facet normal 2.168407e-17 1 0
+    outer loop
+       vertex 0.07333333 -5.782412e-19 -0.03
+       vertex 0.07333333 -5.782412e-19 -0.04
+       vertex 0.06666667 -4.336809e-19 -0.04
+    endloop
+  endfacet
+  facet normal -1.517882e-16 1 0
+    outer loop
+       vertex 0.07333333 -5.782412e-19 -0.04
+       vertex 0.07333333 -5.782412e-19 -0.03
+       vertex 0.08 4.336809e-19 -0.03
+    endloop
+  endfacet
+  facet normal -1.517882e-16 1 0
+    outer loop
+       vertex 0.08 4.336809e-19 -0.03
+       vertex 0.08 4.336809e-19 -0.04
+       vertex 0.07333333 -5.782412e-19 -0.04
+    endloop
+  endfacet
+  facet normal 2.168403e-17 1 -0
+    outer loop
+       vertex 0.08 4.336809e-19 -0.04
+       vertex 0.08 4.336809e-19 -0.03
+       vertex 0.08666667 2.891206e-19 -0.03
+    endloop
+  endfacet
+  facet normal 2.168403e-17 1 0
+    outer loop
+       vertex 0.08666667 2.891206e-19 -0.03
+       vertex 0.08666667 2.891206e-19 -0.04
+       vertex 0.08 4.336809e-19 -0.04
+    endloop
+  endfacet
+  facet normal 2.168407e-17 1 -0
+    outer loop
+       vertex 0.08666667 2.891206e-19 -0.04
+       vertex 0.08666667 2.891206e-19 -0.03
+       vertex 0.09333333 1.445603e-19 -0.03
+    endloop
+  endfacet
+  facet normal 2.168407e-17 1 0
+    outer loop
+       vertex 0.09333333 1.445603e-19 -0.03
+       vertex 0.09333333 1.445603e-19 -0.04
+       vertex 0.08666667 2.891206e-19 -0.04
+    endloop
+  endfacet
+  facet normal 2.168403e-17 1 -0
+    outer loop
+       vertex 0.09333333 1.445603e-19 -0.04
+       vertex 0.09333333 1.445603e-19 -0.03
+       vertex 0.1 0 -0.03
+    endloop
+  endfacet
+  facet normal 2.168403e-17 1 0
+    outer loop
+       vertex 0.1 0 -0.03
+       vertex 0.1 0 -0.04
+       vertex 0.09333333 1.445603e-19 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.01333333 0 -0.03
+       vertex 0.01333333 0 -0.02
+       vertex 0.02 0 -0.02
+    endloop
+  endfacet
+  facet normal 8.673614e-17 1 -5.782412e-17
+    outer loop
+       vertex 0.02 0 -0.02
+       vertex 0.02 -5.782412e-19 -0.03
+       vertex 0.01333333 0 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 -5.782412e-17
+    outer loop
+       vertex 0.02 -5.782412e-19 -0.03
+       vertex 0.02 0 -0.02
+       vertex 0.02666667 0 -0.02
+    endloop
+  endfacet
+  facet normal -8.673614e-17 1 0
+    outer loop
+       vertex 0.02666667 0 -0.02
+       vertex 0.02666667 0 -0.03
+       vertex 0.02 -5.782412e-19 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02666667 0 -0.03
+       vertex 0.02666667 0 -0.02
+       vertex 0.03333333 0 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.03333333 0 -0.02
+       vertex 0.03333333 0 -0.03
+       vertex 0.02666667 0 -0.03
+    endloop
+  endfacet
+  facet normal 4.336807e-17 1 -0
+    outer loop
+       vertex 0.03333333 0 -0.03
+       vertex 0.03333333 0 -0.02
+       vertex 0.04 -2.891206e-19 -0.02
+    endloop
+  endfacet
+  facet normal 4.336807e-17 1 0
+    outer loop
+       vertex 0.04 -2.891206e-19 -0.02
+       vertex 0.04 -2.891206e-19 -0.03
+       vertex 0.03333333 0 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04 -2.891206e-19 -0.03
+       vertex 0.04 -2.891206e-19 -0.02
+       vertex 0.04666667 -2.891206e-19 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04666667 -2.891206e-19 -0.02
+       vertex 0.04666667 -2.891206e-19 -0.03
+       vertex 0.04 -2.891206e-19 -0.03
+    endloop
+  endfacet
+  facet normal -4.336813e-17 1 0
+    outer loop
+       vertex 0.04666667 -2.891206e-19 -0.03
+       vertex 0.04666667 -2.891206e-19 -0.02
+       vertex 0.05333333 0 -0.02
+    endloop
+  endfacet
+  facet normal -8.673627e-17 1 2.891206e-17
+    outer loop
+       vertex 0.05333333 0 -0.02
+       vertex 0.05333333 2.891206e-19 -0.03
+       vertex 0.04666667 -2.891206e-19 -0.03
+    endloop
+  endfacet
+  facet normal 4.336807e-17 1 2.891206e-17
+    outer loop
+       vertex 0.05333333 2.891206e-19 -0.03
+       vertex 0.05333333 0 -0.02
+       vertex 0.06 -2.891206e-19 -0.02
+    endloop
+  endfacet
+  facet normal 8.673614e-17 1 0
+    outer loop
+       vertex 0.06 -2.891206e-19 -0.02
+       vertex 0.06 -2.891206e-19 -0.03
+       vertex 0.05333333 2.891206e-19 -0.03
+    endloop
+  endfacet
+  facet normal 2.168403e-17 1 -0
+    outer loop
+       vertex 0.06 -2.891206e-19 -0.03
+       vertex 0.06 -2.891206e-19 -0.02
+       vertex 0.06666667 -4.336809e-19 -0.02
+    endloop
+  endfacet
+  facet normal 2.168403e-17 1 0
+    outer loop
+       vertex 0.06666667 -4.336809e-19 -0.02
+       vertex 0.06666667 -4.336809e-19 -0.03
+       vertex 0.06 -2.891206e-19 -0.03
+    endloop
+  endfacet
+  facet normal 2.168407e-17 1 -0
+    outer loop
+       vertex 0.06666667 -4.336809e-19 -0.03
+       vertex 0.06666667 -4.336809e-19 -0.02
+       vertex 0.07333333 -5.782412e-19 -0.02
+    endloop
+  endfacet
+  facet normal 2.168407e-17 1 0
+    outer loop
+       vertex 0.07333333 -5.782412e-19 -0.02
+       vertex 0.07333333 -5.782412e-19 -0.03
+       vertex 0.06666667 -4.336809e-19 -0.03
+    endloop
+  endfacet
+  facet normal -1.517882e-16 1 0
+    outer loop
+       vertex 0.07333333 -5.782412e-19 -0.03
+       vertex 0.07333333 -5.782412e-19 -0.02
+       vertex 0.08 4.336809e-19 -0.02
+    endloop
+  endfacet
+  facet normal -1.517882e-16 1 0
+    outer loop
+       vertex 0.08 4.336809e-19 -0.02
+       vertex 0.08 4.336809e-19 -0.03
+       vertex 0.07333333 -5.782412e-19 -0.03
+    endloop
+  endfacet
+  facet normal 2.168403e-17 1 -0
+    outer loop
+       vertex 0.08 4.336809e-19 -0.03
+       vertex 0.08 4.336809e-19 -0.02
+       vertex 0.08666667 2.891206e-19 -0.02
+    endloop
+  endfacet
+  facet normal 2.168403e-17 1 0
+    outer loop
+       vertex 0.08666667 2.891206e-19 -0.02
+       vertex 0.08666667 2.891206e-19 -0.03
+       vertex 0.08 4.336809e-19 -0.03
+    endloop
+  endfacet
+  facet normal 2.168407e-17 1 -0
+    outer loop
+       vertex 0.08666667 2.891206e-19 -0.03
+       vertex 0.08666667 2.891206e-19 -0.02
+       vertex 0.09333333 1.445603e-19 -0.02
+    endloop
+  endfacet
+  facet normal 2.168407e-17 1 0
+    outer loop
+       vertex 0.09333333 1.445603e-19 -0.02
+       vertex 0.09333333 1.445603e-19 -0.03
+       vertex 0.08666667 2.891206e-19 -0.03
+    endloop
+  endfacet
+  facet normal 2.168403e-17 1 -0
+    outer loop
+       vertex 0.09333333 1.445603e-19 -0.03
+       vertex 0.09333333 1.445603e-19 -0.02
+       vertex 0.1 0 -0.02
+    endloop
+  endfacet
+  facet normal 2.168403e-17 1 0
+    outer loop
+       vertex 0.1 0 -0.02
+       vertex 0.1 0 -0.03
+       vertex 0.09333333 1.445603e-19 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.01333333 0 -0.02
+       vertex 0.01333333 0 -0.01
+       vertex 0.02 0 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02 0 -0.01
+       vertex 0.02 0 -0.02
+       vertex 0.01333333 0 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02 0 -0.02
+       vertex 0.02 0 -0.01
+       vertex 0.02666667 0 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02666667 0 -0.01
+       vertex 0.02666667 0 -0.02
+       vertex 0.02 0 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02666667 0 -0.02
+       vertex 0.02666667 0 -0.01
+       vertex 0.03333333 0 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.03333333 0 -0.01
+       vertex 0.03333333 0 -0.02
+       vertex 0.02666667 0 -0.02
+    endloop
+  endfacet
+  facet normal 4.336807e-17 1 -0
+    outer loop
+       vertex 0.03333333 0 -0.02
+       vertex 0.03333333 0 -0.01
+       vertex 0.04 -2.891206e-19 -0.01
+    endloop
+  endfacet
+  facet normal 4.336807e-17 1 0
+    outer loop
+       vertex 0.04 -2.891206e-19 -0.01
+       vertex 0.04 -2.891206e-19 -0.02
+       vertex 0.03333333 0 -0.02
+    endloop
+  endfacet
+  facet normal -8.673614e-17 1 0
+    outer loop
+       vertex 0.04 -2.891206e-19 -0.02
+       vertex 0.04 -2.891206e-19 -0.01
+       vertex 0.04666667 2.891206e-19 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 -5.782412e-17
+    outer loop
+       vertex 0.04666667 2.891206e-19 -0.01
+       vertex 0.04666667 -2.891206e-19 -0.02
+       vertex 0.04 -2.891206e-19 -0.02
+    endloop
+  endfacet
+  facet normal 4.336813e-17 1 -5.782412e-17
+    outer loop
+       vertex 0.04666667 -2.891206e-19 -0.02
+       vertex 0.04666667 2.891206e-19 -0.01
+       vertex 0.05333333 0 -0.01
+    endloop
+  endfacet
+  facet normal -4.336813e-17 1 0
+    outer loop
+       vertex 0.05333333 0 -0.01
+       vertex 0.05333333 0 -0.02
+       vertex 0.04666667 -2.891206e-19 -0.02
+    endloop
+  endfacet
+  facet normal 4.336807e-17 1 -0
+    outer loop
+       vertex 0.05333333 0 -0.02
+       vertex 0.05333333 0 -0.01
+       vertex 0.06 -2.891206e-19 -0.01
+    endloop
+  endfacet
+  facet normal 4.336807e-17 1 0
+    outer loop
+       vertex 0.06 -2.891206e-19 -0.01
+       vertex 0.06 -2.891206e-19 -0.02
+       vertex 0.05333333 0 -0.02
+    endloop
+  endfacet
+  facet normal 2.168403e-17 1 -0
+    outer loop
+       vertex 0.06 -2.891206e-19 -0.02
+       vertex 0.06 -2.891206e-19 -0.01
+       vertex 0.06666667 -4.336809e-19 -0.01
+    endloop
+  endfacet
+  facet normal 2.168403e-17 1 0
+    outer loop
+       vertex 0.06666667 -4.336809e-19 -0.01
+       vertex 0.06666667 -4.336809e-19 -0.02
+       vertex 0.06 -2.891206e-19 -0.02
+    endloop
+  endfacet
+  facet normal 2.168407e-17 1 -0
+    outer loop
+       vertex 0.06666667 -4.336809e-19 -0.02
+       vertex 0.06666667 -4.336809e-19 -0.01
+       vertex 0.07333333 -5.782412e-19 -0.01
+    endloop
+  endfacet
+  facet normal 2.168407e-17 1 0
+    outer loop
+       vertex 0.07333333 -5.782412e-19 -0.01
+       vertex 0.07333333 -5.782412e-19 -0.02
+       vertex 0.06666667 -4.336809e-19 -0.02
+    endloop
+  endfacet
+  facet normal -1.517882e-16 1 0
+    outer loop
+       vertex 0.07333333 -5.782412e-19 -0.02
+       vertex 0.07333333 -5.782412e-19 -0.01
+       vertex 0.08 4.336809e-19 -0.01
+    endloop
+  endfacet
+  facet normal -1.517882e-16 1 0
+    outer loop
+       vertex 0.08 4.336809e-19 -0.01
+       vertex 0.08 4.336809e-19 -0.02
+       vertex 0.07333333 -5.782412e-19 -0.02
+    endloop
+  endfacet
+  facet normal 2.168403e-17 1 -0
+    outer loop
+       vertex 0.08 4.336809e-19 -0.02
+       vertex 0.08 4.336809e-19 -0.01
+       vertex 0.08666667 2.891206e-19 -0.01
+    endloop
+  endfacet
+  facet normal 2.168403e-17 1 0
+    outer loop
+       vertex 0.08666667 2.891206e-19 -0.01
+       vertex 0.08666667 2.891206e-19 -0.02
+       vertex 0.08 4.336809e-19 -0.02
+    endloop
+  endfacet
+  facet normal 2.168407e-17 1 -0
+    outer loop
+       vertex 0.08666667 2.891206e-19 -0.02
+       vertex 0.08666667 2.891206e-19 -0.01
+       vertex 0.09333333 1.445603e-19 -0.01
+    endloop
+  endfacet
+  facet normal 2.168407e-17 1 0
+    outer loop
+       vertex 0.09333333 1.445603e-19 -0.01
+       vertex 0.09333333 1.445603e-19 -0.02
+       vertex 0.08666667 2.891206e-19 -0.02
+    endloop
+  endfacet
+  facet normal 2.168403e-17 1 -0
+    outer loop
+       vertex 0.09333333 1.445603e-19 -0.02
+       vertex 0.09333333 1.445603e-19 -0.01
+       vertex 0.1 0 -0.01
+    endloop
+  endfacet
+  facet normal 2.168403e-17 1 0
+    outer loop
+       vertex 0.1 0 -0.01
+       vertex 0.1 0 -0.02
+       vertex 0.09333333 1.445603e-19 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.01333333 0 -0.01
+       vertex 0.01333333 0 0
+       vertex 0.02 0 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02 0 0
+       vertex 0.02 0 -0.01
+       vertex 0.01333333 0 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02 0 -0.01
+       vertex 0.02 0 0
+       vertex 0.02666667 0 5.782412e-19
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02666667 0 5.782412e-19
+       vertex 0.02666667 0 -0.01
+       vertex 0.02 0 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02666667 0 -0.01
+       vertex 0.02666667 0 5.782412e-19
+       vertex 0.03333333 0 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.03333333 0 0
+       vertex 0.03333333 0 -0.01
+       vertex 0.02666667 0 -0.01
+    endloop
+  endfacet
+  facet normal 4.336807e-17 1 -0
+    outer loop
+       vertex 0.03333333 0 -0.01
+       vertex 0.03333333 0 0
+       vertex 0.04 -2.891206e-19 -5.782412e-19
+    endloop
+  endfacet
+  facet normal 4.336807e-17 1 0
+    outer loop
+       vertex 0.04 -2.891206e-19 -5.782412e-19
+       vertex 0.04 -2.891206e-19 -0.01
+       vertex 0.03333333 0 -0.01
+    endloop
+  endfacet
+  facet normal -8.673614e-17 1 0
+    outer loop
+       vertex 0.04 -2.891206e-19 -0.01
+       vertex 0.04 -2.891206e-19 -5.782412e-19
+       vertex 0.04666667 2.891206e-19 0
+    endloop
+  endfacet
+  facet normal -8.673614e-17 1 0
+    outer loop
+       vertex 0.04666667 2.891206e-19 0
+       vertex 0.04666667 2.891206e-19 -0.01
+       vertex 0.04 -2.891206e-19 -0.01
+    endloop
+  endfacet
+  facet normal 4.336813e-17 1 -0
+    outer loop
+       vertex 0.04666667 2.891206e-19 -0.01
+       vertex 0.04666667 2.891206e-19 0
+       vertex 0.05333333 0 -2.891206e-19
+    endloop
+  endfacet
+  facet normal 4.336813e-17 1 0
+    outer loop
+       vertex 0.05333333 0 -2.891206e-19
+       vertex 0.05333333 0 -0.01
+       vertex 0.04666667 2.891206e-19 -0.01
+    endloop
+  endfacet
+  facet normal 4.336807e-17 1 -0
+    outer loop
+       vertex 0.05333333 0 -0.01
+       vertex 0.05333333 0 -2.891206e-19
+       vertex 0.06 -2.891206e-19 5.782412e-19
+    endloop
+  endfacet
+  facet normal 4.336807e-17 1 0
+    outer loop
+       vertex 0.06 -2.891206e-19 5.782412e-19
+       vertex 0.06 -2.891206e-19 -0.01
+       vertex 0.05333333 0 -0.01
+    endloop
+  endfacet
+  facet normal 2.168403e-17 1 -0
+    outer loop
+       vertex 0.06 -2.891206e-19 -0.01
+       vertex 0.06 -2.891206e-19 5.782412e-19
+       vertex 0.06666667 -4.336809e-19 0
+    endloop
+  endfacet
+  facet normal 2.168403e-17 1 0
+    outer loop
+       vertex 0.06666667 -4.336809e-19 0
+       vertex 0.06666667 -4.336809e-19 -0.01
+       vertex 0.06 -2.891206e-19 -0.01
+    endloop
+  endfacet
+  facet normal 2.168407e-17 1 -0
+    outer loop
+       vertex 0.06666667 -4.336809e-19 -0.01
+       vertex 0.06666667 -4.336809e-19 0
+       vertex 0.07333333 -5.782412e-19 -4.336809e-19
+    endloop
+  endfacet
+  facet normal 2.168407e-17 1 0
+    outer loop
+       vertex 0.07333333 -5.782412e-19 -4.336809e-19
+       vertex 0.07333333 -5.782412e-19 -0.01
+       vertex 0.06666667 -4.336809e-19 -0.01
+    endloop
+  endfacet
+  facet normal -1.517882e-16 1 0
+    outer loop
+       vertex 0.07333333 -5.782412e-19 -0.01
+       vertex 0.07333333 -5.782412e-19 -4.336809e-19
+       vertex 0.08 4.336809e-19 2.891206e-19
+    endloop
+  endfacet
+  facet normal -1.517882e-16 1 0
+    outer loop
+       vertex 0.08 4.336809e-19 2.891206e-19
+       vertex 0.08 4.336809e-19 -0.01
+       vertex 0.07333333 -5.782412e-19 -0.01
+    endloop
+  endfacet
+  facet normal 2.168403e-17 1 -0
+    outer loop
+       vertex 0.08 4.336809e-19 -0.01
+       vertex 0.08 4.336809e-19 2.891206e-19
+       vertex 0.08666667 2.891206e-19 -2.168404e-19
+    endloop
+  endfacet
+  facet normal 2.168403e-17 1 0
+    outer loop
+       vertex 0.08666667 2.891206e-19 -2.168404e-19
+       vertex 0.08666667 2.891206e-19 -0.01
+       vertex 0.08 4.336809e-19 -0.01
+    endloop
+  endfacet
+  facet normal 2.168407e-17 1 -0
+    outer loop
+       vertex 0.08666667 2.891206e-19 -0.01
+       vertex 0.08666667 2.891206e-19 -2.168404e-19
+       vertex 0.09333333 1.445603e-19 4.698209e-19
+    endloop
+  endfacet
+  facet normal 2.168407e-17 1 0
+    outer loop
+       vertex 0.09333333 1.445603e-19 4.698209e-19
+       vertex 0.09333333 1.445603e-19 -0.01
+       vertex 0.08666667 2.891206e-19 -0.01
+    endloop
+  endfacet
+  facet normal 2.168403e-17 1 -0
+    outer loop
+       vertex 0.09333333 1.445603e-19 -0.01
+       vertex 0.09333333 1.445603e-19 4.698209e-19
+       vertex 0.1 0 0
+    endloop
+  endfacet
+  facet normal 2.168403e-17 1 0
+    outer loop
+       vertex 0.1 0 0
+       vertex 0.1 0 -0.01
+       vertex 0.09333333 1.445603e-19 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.01333333 0 0
+       vertex 0.01333333 0 0.01
+       vertex 0.02 0 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02 0 0.01
+       vertex 0.02 0 0
+       vertex 0.01333333 0 0
+    endloop
+  endfacet
+  facet normal -0 1 0
+    outer loop
+       vertex 0.02 0 0.01
+       vertex 0.02666667 0 0.01
+       vertex 0.02666667 0 5.782412e-19
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02666667 0 5.782412e-19
+       vertex 0.02 0 0
+       vertex 0.02 0 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02666667 0 5.782412e-19
+       vertex 0.02666667 0 0.01
+       vertex 0.03333333 0 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.03333333 0 0.01
+       vertex 0.03333333 0 0
+       vertex 0.02666667 0 5.782412e-19
+    endloop
+  endfacet
+  facet normal 4.336807e-17 1 -0
+    outer loop
+       vertex 0.03333333 0 0
+       vertex 0.03333333 0 0.01
+       vertex 0.04 -2.891206e-19 0.01
+    endloop
+  endfacet
+  facet normal 4.336807e-17 1 0
+    outer loop
+       vertex 0.04 -2.891206e-19 0.01
+       vertex 0.04 -2.891206e-19 -5.782412e-19
+       vertex 0.03333333 0 0
+    endloop
+  endfacet
+  facet normal -8.673614e-17 1 0
+    outer loop
+       vertex 0.04 -2.891206e-19 0.01
+       vertex 0.04666667 2.891206e-19 0.01
+       vertex 0.04666667 2.891206e-19 0
+    endloop
+  endfacet
+  facet normal -8.673614e-17 1 0
+    outer loop
+       vertex 0.04666667 2.891206e-19 0
+       vertex 0.04 -2.891206e-19 -5.782412e-19
+       vertex 0.04 -2.891206e-19 0.01
+    endloop
+  endfacet
+  facet normal 4.336813e-17 1 -0
+    outer loop
+       vertex 0.04666667 2.891206e-19 0
+       vertex 0.04666667 2.891206e-19 0.01
+       vertex 0.05333333 0 0.01
+    endloop
+  endfacet
+  facet normal 4.336813e-17 1 0
+    outer loop
+       vertex 0.05333333 0 0.01
+       vertex 0.05333333 0 -2.891206e-19
+       vertex 0.04666667 2.891206e-19 0
+    endloop
+  endfacet
+  facet normal 4.336807e-17 1 0
+    outer loop
+       vertex 0.05333333 0 0.01
+       vertex 0.06 -2.891206e-19 0.01
+       vertex 0.06 -2.891206e-19 5.782412e-19
+    endloop
+  endfacet
+  facet normal 4.336807e-17 1 0
+    outer loop
+       vertex 0.06 -2.891206e-19 5.782412e-19
+       vertex 0.05333333 0 -2.891206e-19
+       vertex 0.05333333 0 0.01
+    endloop
+  endfacet
+  facet normal 2.168403e-17 1 -0
+    outer loop
+       vertex 0.06 -2.891206e-19 5.782412e-19
+       vertex 0.06 -2.891206e-19 0.01
+       vertex 0.06666667 -4.336809e-19 0.01
+    endloop
+  endfacet
+  facet normal 2.168403e-17 1 0
+    outer loop
+       vertex 0.06666667 -4.336809e-19 0.01
+       vertex 0.06666667 -4.336809e-19 0
+       vertex 0.06 -2.891206e-19 5.782412e-19
+    endloop
+  endfacet
+  facet normal 2.168407e-17 1 -0
+    outer loop
+       vertex 0.06666667 -4.336809e-19 0
+       vertex 0.06666667 -4.336809e-19 0.01
+       vertex 0.07333333 -5.782412e-19 0.01
+    endloop
+  endfacet
+  facet normal 2.168407e-17 1 0
+    outer loop
+       vertex 0.07333333 -5.782412e-19 0.01
+       vertex 0.07333333 -5.782412e-19 -4.336809e-19
+       vertex 0.06666667 -4.336809e-19 0
+    endloop
+  endfacet
+  facet normal -1.517882e-16 1 0
+    outer loop
+       vertex 0.07333333 -5.782412e-19 0.01
+       vertex 0.08 4.336809e-19 0.01
+       vertex 0.08 4.336809e-19 2.891206e-19
+    endloop
+  endfacet
+  facet normal -1.517882e-16 1 0
+    outer loop
+       vertex 0.08 4.336809e-19 2.891206e-19
+       vertex 0.07333333 -5.782412e-19 -4.336809e-19
+       vertex 0.07333333 -5.782412e-19 0.01
+    endloop
+  endfacet
+  facet normal 2.168403e-17 1 -0
+    outer loop
+       vertex 0.08 4.336809e-19 2.891206e-19
+       vertex 0.08 4.336809e-19 0.01
+       vertex 0.08666667 2.891206e-19 0.01
+    endloop
+  endfacet
+  facet normal 2.168403e-17 1 0
+    outer loop
+       vertex 0.08666667 2.891206e-19 0.01
+       vertex 0.08666667 2.891206e-19 -2.168404e-19
+       vertex 0.08 4.336809e-19 2.891206e-19
+    endloop
+  endfacet
+  facet normal 2.168407e-17 1 0
+    outer loop
+       vertex 0.08666667 2.891206e-19 0.01
+       vertex 0.09333333 1.445603e-19 0.01
+       vertex 0.09333333 1.445603e-19 4.698209e-19
+    endloop
+  endfacet
+  facet normal 2.168407e-17 1 0
+    outer loop
+       vertex 0.09333333 1.445603e-19 4.698209e-19
+       vertex 0.08666667 2.891206e-19 -2.168404e-19
+       vertex 0.08666667 2.891206e-19 0.01
+    endloop
+  endfacet
+  facet normal 2.168403e-17 1 -0
+    outer loop
+       vertex 0.09333333 1.445603e-19 4.698209e-19
+       vertex 0.09333333 1.445603e-19 0.01
+       vertex 0.1 0 0.01
+    endloop
+  endfacet
+  facet normal 2.168403e-17 1 0
+    outer loop
+       vertex 0.1 0 0.01
+       vertex 0.1 0 0
+       vertex 0.09333333 1.445603e-19 4.698209e-19
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.01333333 0 0.01
+       vertex 0.01333333 0 0.02
+       vertex 0.02 0 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02 0 0.02
+       vertex 0.02 0 0.01
+       vertex 0.01333333 0 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02 0 0.01
+       vertex 0.02 0 0.02
+       vertex 0.02666667 0 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02666667 0 0.02
+       vertex 0.02666667 0 0.01
+       vertex 0.02 0 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02666667 0 0.01
+       vertex 0.02666667 0 0.02
+       vertex 0.03333333 0 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.03333333 0 0.02
+       vertex 0.03333333 0 0.01
+       vertex 0.02666667 0 0.01
+    endloop
+  endfacet
+  facet normal 4.336807e-17 1 -0
+    outer loop
+       vertex 0.03333333 0 0.01
+       vertex 0.03333333 0 0.02
+       vertex 0.04 -2.891206e-19 0.02
+    endloop
+  endfacet
+  facet normal 4.336807e-17 1 0
+    outer loop
+       vertex 0.04 -2.891206e-19 0.02
+       vertex 0.04 -2.891206e-19 0.01
+       vertex 0.03333333 0 0.01
+    endloop
+  endfacet
+  facet normal -8.673614e-17 1 0
+    outer loop
+       vertex 0.04 -2.891206e-19 0.01
+       vertex 0.04 -2.891206e-19 0.02
+       vertex 0.04666667 2.891206e-19 0.02
+    endloop
+  endfacet
+  facet normal -8.673614e-17 1 0
+    outer loop
+       vertex 0.04666667 2.891206e-19 0.02
+       vertex 0.04666667 2.891206e-19 0.01
+       vertex 0.04 -2.891206e-19 0.01
+    endloop
+  endfacet
+  facet normal 4.336813e-17 1 -0
+    outer loop
+       vertex 0.04666667 2.891206e-19 0.01
+       vertex 0.04666667 2.891206e-19 0.02
+       vertex 0.05333333 0 0.02
+    endloop
+  endfacet
+  facet normal 4.336813e-17 1 0
+    outer loop
+       vertex 0.05333333 0 0.02
+       vertex 0.05333333 0 0.01
+       vertex 0.04666667 2.891206e-19 0.01
+    endloop
+  endfacet
+  facet normal 4.336807e-17 1 -0
+    outer loop
+       vertex 0.05333333 0 0.01
+       vertex 0.05333333 0 0.02
+       vertex 0.06 -2.891206e-19 0.02
+    endloop
+  endfacet
+  facet normal 4.336807e-17 1 0
+    outer loop
+       vertex 0.06 -2.891206e-19 0.02
+       vertex 0.06 -2.891206e-19 0.01
+       vertex 0.05333333 0 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06 -2.891206e-19 0.01
+       vertex 0.06 -2.891206e-19 0.02
+       vertex 0.06666667 -2.891206e-19 0.02
+    endloop
+  endfacet
+  facet normal 2.168403e-17 1 -1.445603e-17
+    outer loop
+       vertex 0.06666667 -2.891206e-19 0.02
+       vertex 0.06666667 -4.336809e-19 0.01
+       vertex 0.06 -2.891206e-19 0.01
+    endloop
+  endfacet
+  facet normal 4.336813e-17 1 -1.445603e-17
+    outer loop
+       vertex 0.06666667 -4.336809e-19 0.01
+       vertex 0.06666667 -2.891206e-19 0.02
+       vertex 0.07333333 -5.782412e-19 0.02
+    endloop
+  endfacet
+  facet normal 2.168407e-17 1 0
+    outer loop
+       vertex 0.07333333 -5.782412e-19 0.02
+       vertex 0.07333333 -5.782412e-19 0.01
+       vertex 0.06666667 -4.336809e-19 0.01
+    endloop
+  endfacet
+  facet normal -1.517882e-16 1 0
+    outer loop
+       vertex 0.07333333 -5.782412e-19 0.01
+       vertex 0.07333333 -5.782412e-19 0.02
+       vertex 0.08 4.336809e-19 0.02
+    endloop
+  endfacet
+  facet normal -1.517882e-16 1 0
+    outer loop
+       vertex 0.08 4.336809e-19 0.02
+       vertex 0.08 4.336809e-19 0.01
+       vertex 0.07333333 -5.782412e-19 0.01
+    endloop
+  endfacet
+  facet normal 2.168403e-17 1 -0
+    outer loop
+       vertex 0.08 4.336809e-19 0.01
+       vertex 0.08 4.336809e-19 0.02
+       vertex 0.08666667 2.891206e-19 0.02
+    endloop
+  endfacet
+  facet normal 2.168403e-17 1 0
+    outer loop
+       vertex 0.08666667 2.891206e-19 0.02
+       vertex 0.08666667 2.891206e-19 0.01
+       vertex 0.08 4.336809e-19 0.01
+    endloop
+  endfacet
+  facet normal 2.168407e-17 1 -0
+    outer loop
+       vertex 0.08666667 2.891206e-19 0.01
+       vertex 0.08666667 2.891206e-19 0.02
+       vertex 0.09333333 1.445603e-19 0.02
+    endloop
+  endfacet
+  facet normal 2.168407e-17 1 0
+    outer loop
+       vertex 0.09333333 1.445603e-19 0.02
+       vertex 0.09333333 1.445603e-19 0.01
+       vertex 0.08666667 2.891206e-19 0.01
+    endloop
+  endfacet
+  facet normal 2.168403e-17 1 -0
+    outer loop
+       vertex 0.09333333 1.445603e-19 0.01
+       vertex 0.09333333 1.445603e-19 0.02
+       vertex 0.1 0 0.02
+    endloop
+  endfacet
+  facet normal 2.168403e-17 1 0
+    outer loop
+       vertex 0.1 0 0.02
+       vertex 0.1 0 0.01
+       vertex 0.09333333 1.445603e-19 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.01333333 0 0.02
+       vertex 0.01333333 0 0.03
+       vertex 0.02 0 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02 0 0.03
+       vertex 0.02 0 0.02
+       vertex 0.01333333 0 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02 0 0.02
+       vertex 0.02 0 0.03
+       vertex 0.02666667 0 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02666667 0 0.03
+       vertex 0.02666667 0 0.02
+       vertex 0.02 0 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02666667 0 0.02
+       vertex 0.02666667 0 0.03
+       vertex 0.03333333 0 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.03333333 0 0.03
+       vertex 0.03333333 0 0.02
+       vertex 0.02666667 0 0.02
+    endloop
+  endfacet
+  facet normal 4.336807e-17 1 -0
+    outer loop
+       vertex 0.03333333 0 0.02
+       vertex 0.03333333 0 0.03
+       vertex 0.04 -2.891206e-19 0.03
+    endloop
+  endfacet
+  facet normal 4.336807e-17 1 0
+    outer loop
+       vertex 0.04 -2.891206e-19 0.03
+       vertex 0.04 -2.891206e-19 0.02
+       vertex 0.03333333 0 0.02
+    endloop
+  endfacet
+  facet normal -8.673614e-17 1 0
+    outer loop
+       vertex 0.04 -2.891206e-19 0.02
+       vertex 0.04 -2.891206e-19 0.03
+       vertex 0.04666667 2.891206e-19 0.03
+    endloop
+  endfacet
+  facet normal -8.673614e-17 1 0
+    outer loop
+       vertex 0.04666667 2.891206e-19 0.03
+       vertex 0.04666667 2.891206e-19 0.02
+       vertex 0.04 -2.891206e-19 0.02
+    endloop
+  endfacet
+  facet normal 4.336813e-17 1 -0
+    outer loop
+       vertex 0.04666667 2.891206e-19 0.02
+       vertex 0.04666667 2.891206e-19 0.03
+       vertex 0.05333333 0 0.03
+    endloop
+  endfacet
+  facet normal 4.336813e-17 1 0
+    outer loop
+       vertex 0.05333333 0 0.03
+       vertex 0.05333333 0 0.02
+       vertex 0.04666667 2.891206e-19 0.02
+    endloop
+  endfacet
+  facet normal 4.336807e-17 1 -0
+    outer loop
+       vertex 0.05333333 0 0.02
+       vertex 0.05333333 0 0.03
+       vertex 0.06 -2.891206e-19 0.03
+    endloop
+  endfacet
+  facet normal 4.336807e-17 1 0
+    outer loop
+       vertex 0.06 -2.891206e-19 0.03
+       vertex 0.06 -2.891206e-19 0.02
+       vertex 0.05333333 0 0.02
+    endloop
+  endfacet
+  facet normal 2.168403e-17 1 -0
+    outer loop
+       vertex 0.06 -2.891206e-19 0.02
+       vertex 0.06 -2.891206e-19 0.03
+       vertex 0.06666667 -4.336809e-19 0.03
+    endloop
+  endfacet
+  facet normal 0 1 1.445603e-17
+    outer loop
+       vertex 0.06666667 -4.336809e-19 0.03
+       vertex 0.06666667 -2.891206e-19 0.02
+       vertex 0.06 -2.891206e-19 0.02
+    endloop
+  endfacet
+  facet normal 2.168407e-17 1 1.445603e-17
+    outer loop
+       vertex 0.06666667 -2.891206e-19 0.02
+       vertex 0.06666667 -4.336809e-19 0.03
+       vertex 0.07333333 -5.782412e-19 0.03
+    endloop
+  endfacet
+  facet normal 4.336813e-17 1 0
+    outer loop
+       vertex 0.07333333 -5.782412e-19 0.03
+       vertex 0.07333333 -5.782412e-19 0.02
+       vertex 0.06666667 -2.891206e-19 0.02
+    endloop
+  endfacet
+  facet normal -1.517882e-16 1 0
+    outer loop
+       vertex 0.07333333 -5.782412e-19 0.02
+       vertex 0.07333333 -5.782412e-19 0.03
+       vertex 0.08 4.336809e-19 0.03
+    endloop
+  endfacet
+  facet normal -1.517882e-16 1 0
+    outer loop
+       vertex 0.08 4.336809e-19 0.03
+       vertex 0.08 4.336809e-19 0.02
+       vertex 0.07333333 -5.782412e-19 0.02
+    endloop
+  endfacet
+  facet normal 2.168403e-17 1 -0
+    outer loop
+       vertex 0.08 4.336809e-19 0.02
+       vertex 0.08 4.336809e-19 0.03
+       vertex 0.08666667 2.891206e-19 0.03
+    endloop
+  endfacet
+  facet normal 2.168403e-17 1 0
+    outer loop
+       vertex 0.08666667 2.891206e-19 0.03
+       vertex 0.08666667 2.891206e-19 0.02
+       vertex 0.08 4.336809e-19 0.02
+    endloop
+  endfacet
+  facet normal 2.168407e-17 1 -0
+    outer loop
+       vertex 0.08666667 2.891206e-19 0.02
+       vertex 0.08666667 2.891206e-19 0.03
+       vertex 0.09333333 1.445603e-19 0.03
+    endloop
+  endfacet
+  facet normal 2.168407e-17 1 0
+    outer loop
+       vertex 0.09333333 1.445603e-19 0.03
+       vertex 0.09333333 1.445603e-19 0.02
+       vertex 0.08666667 2.891206e-19 0.02
+    endloop
+  endfacet
+  facet normal 2.168403e-17 1 -0
+    outer loop
+       vertex 0.09333333 1.445603e-19 0.02
+       vertex 0.09333333 1.445603e-19 0.03
+       vertex 0.1 0 0.03
+    endloop
+  endfacet
+  facet normal 2.168403e-17 1 0
+    outer loop
+       vertex 0.1 0 0.03
+       vertex 0.1 0 0.02
+       vertex 0.09333333 1.445603e-19 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.01333333 0 0.03
+       vertex 0.01333333 0 0.04
+       vertex 0.02 0 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02 0 0.04
+       vertex 0.02 0 0.03
+       vertex 0.01333333 0 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02 0 0.03
+       vertex 0.02 0 0.04
+       vertex 0.02666667 0 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02666667 0 0.04
+       vertex 0.02666667 0 0.03
+       vertex 0.02 0 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02666667 0 0.03
+       vertex 0.02666667 0 0.04
+       vertex 0.03333333 0 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.03333333 0 0.04
+       vertex 0.03333333 0 0.03
+       vertex 0.02666667 0 0.03
+    endloop
+  endfacet
+  facet normal 4.336807e-17 1 -0
+    outer loop
+       vertex 0.03333333 0 0.03
+       vertex 0.03333333 0 0.04
+       vertex 0.04 -2.891206e-19 0.04
+    endloop
+  endfacet
+  facet normal 4.336807e-17 1 0
+    outer loop
+       vertex 0.04 -2.891206e-19 0.04
+       vertex 0.04 -2.891206e-19 0.03
+       vertex 0.03333333 0 0.03
+    endloop
+  endfacet
+  facet normal 4.336807e-17 1 -0
+    outer loop
+       vertex 0.04 -2.891206e-19 0.03
+       vertex 0.04 -2.891206e-19 0.04
+       vertex 0.04666667 -5.782412e-19 0.04
+    endloop
+  endfacet
+  facet normal -8.673614e-17 1 8.673618e-17
+    outer loop
+       vertex 0.04666667 -5.782412e-19 0.04
+       vertex 0.04666667 2.891206e-19 0.03
+       vertex 0.04 -2.891206e-19 0.03
+    endloop
+  endfacet
+  facet normal -8.673627e-17 1 8.673618e-17
+    outer loop
+       vertex 0.04666667 2.891206e-19 0.03
+       vertex 0.04666667 -5.782412e-19 0.04
+       vertex 0.05333333 0 0.04
+    endloop
+  endfacet
+  facet normal 4.336813e-17 1 0
+    outer loop
+       vertex 0.05333333 0 0.04
+       vertex 0.05333333 0 0.03
+       vertex 0.04666667 2.891206e-19 0.03
+    endloop
+  endfacet
+  facet normal 4.336807e-17 1 -0
+    outer loop
+       vertex 0.05333333 0 0.03
+       vertex 0.05333333 0 0.04
+       vertex 0.06 -2.891206e-19 0.04
+    endloop
+  endfacet
+  facet normal 4.336807e-17 1 0
+    outer loop
+       vertex 0.06 -2.891206e-19 0.04
+       vertex 0.06 -2.891206e-19 0.03
+       vertex 0.05333333 0 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06 -2.891206e-19 0.03
+       vertex 0.06 -2.891206e-19 0.04
+       vertex 0.06666667 -2.891206e-19 0.04
+    endloop
+  endfacet
+  facet normal 2.168403e-17 1 -1.445603e-17
+    outer loop
+       vertex 0.06666667 -2.891206e-19 0.04
+       vertex 0.06666667 -4.336809e-19 0.03
+       vertex 0.06 -2.891206e-19 0.03
+    endloop
+  endfacet
+  facet normal 4.336813e-17 1 -1.445603e-17
+    outer loop
+       vertex 0.06666667 -4.336809e-19 0.03
+       vertex 0.06666667 -2.891206e-19 0.04
+       vertex 0.07333333 -5.782412e-19 0.04
+    endloop
+  endfacet
+  facet normal 2.168407e-17 1 0
+    outer loop
+       vertex 0.07333333 -5.782412e-19 0.04
+       vertex 0.07333333 -5.782412e-19 0.03
+       vertex 0.06666667 -4.336809e-19 0.03
+    endloop
+  endfacet
+  facet normal -1.517882e-16 1 0
+    outer loop
+       vertex 0.07333333 -5.782412e-19 0.03
+       vertex 0.07333333 -5.782412e-19 0.04
+       vertex 0.08 4.336809e-19 0.04
+    endloop
+  endfacet
+  facet normal -1.517882e-16 1 0
+    outer loop
+       vertex 0.08 4.336809e-19 0.04
+       vertex 0.08 4.336809e-19 0.03
+       vertex 0.07333333 -5.782412e-19 0.03
+    endloop
+  endfacet
+  facet normal 2.168403e-17 1 -0
+    outer loop
+       vertex 0.08 4.336809e-19 0.03
+       vertex 0.08 4.336809e-19 0.04
+       vertex 0.08666667 2.891206e-19 0.04
+    endloop
+  endfacet
+  facet normal 2.168403e-17 1 0
+    outer loop
+       vertex 0.08666667 2.891206e-19 0.04
+       vertex 0.08666667 2.891206e-19 0.03
+       vertex 0.08 4.336809e-19 0.03
+    endloop
+  endfacet
+  facet normal 2.168407e-17 1 -0
+    outer loop
+       vertex 0.08666667 2.891206e-19 0.03
+       vertex 0.08666667 2.891206e-19 0.04
+       vertex 0.09333333 1.445603e-19 0.04
+    endloop
+  endfacet
+  facet normal 2.168407e-17 1 0
+    outer loop
+       vertex 0.09333333 1.445603e-19 0.04
+       vertex 0.09333333 1.445603e-19 0.03
+       vertex 0.08666667 2.891206e-19 0.03
+    endloop
+  endfacet
+  facet normal 2.168403e-17 1 -0
+    outer loop
+       vertex 0.09333333 1.445603e-19 0.03
+       vertex 0.09333333 1.445603e-19 0.04
+       vertex 0.1 0 0.04
+    endloop
+  endfacet
+  facet normal 2.168403e-17 1 0
+    outer loop
+       vertex 0.1 0 0.04
+       vertex 0.1 0 0.03
+       vertex 0.09333333 1.445603e-19 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.01333333 0 0.04
+       vertex 0.01333333 0 0.05
+       vertex 0.02 0 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02 0 0.05
+       vertex 0.02 0 0.04
+       vertex 0.01333333 0 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02 0 0.04
+       vertex 0.02 0 0.05
+       vertex 0.02666667 0 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02666667 0 0.05
+       vertex 0.02666667 0 0.04
+       vertex 0.02 0 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02666667 0 0.04
+       vertex 0.02666667 0 0.05
+       vertex 0.03333333 0 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.03333333 0 0.05
+       vertex 0.03333333 0 0.04
+       vertex 0.02666667 0 0.04
+    endloop
+  endfacet
+  facet normal 4.336807e-17 1 -0
+    outer loop
+       vertex 0.03333333 0 0.04
+       vertex 0.03333333 0 0.05
+       vertex 0.04 -2.891206e-19 0.05
+    endloop
+  endfacet
+  facet normal 4.336807e-17 1 0
+    outer loop
+       vertex 0.04 -2.891206e-19 0.05
+       vertex 0.04 -2.891206e-19 0.04
+       vertex 0.03333333 0 0.04
+    endloop
+  endfacet
+  facet normal -8.673614e-17 1 0
+    outer loop
+       vertex 0.04 -2.891206e-19 0.04
+       vertex 0.04 -2.891206e-19 0.05
+       vertex 0.04666667 2.891206e-19 0.05
+    endloop
+  endfacet
+  facet normal 4.336807e-17 1 -8.673618e-17
+    outer loop
+       vertex 0.04666667 2.891206e-19 0.05
+       vertex 0.04666667 -5.782412e-19 0.04
+       vertex 0.04 -2.891206e-19 0.04
+    endloop
+  endfacet
+  facet normal 4.336813e-17 1 -8.673618e-17
+    outer loop
+       vertex 0.04666667 -5.782412e-19 0.04
+       vertex 0.04666667 2.891206e-19 0.05
+       vertex 0.05333333 0 0.05
+    endloop
+  endfacet
+  facet normal -8.673627e-17 1 0
+    outer loop
+       vertex 0.05333333 0 0.05
+       vertex 0.05333333 0 0.04
+       vertex 0.04666667 -5.782412e-19 0.04
+    endloop
+  endfacet
+  facet normal 4.336807e-17 1 -0
+    outer loop
+       vertex 0.05333333 0 0.04
+       vertex 0.05333333 0 0.05
+       vertex 0.06 -2.891206e-19 0.05
+    endloop
+  endfacet
+  facet normal 4.336807e-17 1 0
+    outer loop
+       vertex 0.06 -2.891206e-19 0.05
+       vertex 0.06 -2.891206e-19 0.04
+       vertex 0.05333333 0 0.04
+    endloop
+  endfacet
+  facet normal 2.168403e-17 1 -0
+    outer loop
+       vertex 0.06 -2.891206e-19 0.04
+       vertex 0.06 -2.891206e-19 0.05
+       vertex 0.06666667 -4.336809e-19 0.05
+    endloop
+  endfacet
+  facet normal 0 1 1.445603e-17
+    outer loop
+       vertex 0.06666667 -4.336809e-19 0.05
+       vertex 0.06666667 -2.891206e-19 0.04
+       vertex 0.06 -2.891206e-19 0.04
+    endloop
+  endfacet
+  facet normal 2.168407e-17 1 1.445603e-17
+    outer loop
+       vertex 0.06666667 -2.891206e-19 0.04
+       vertex 0.06666667 -4.336809e-19 0.05
+       vertex 0.07333333 -5.782412e-19 0.05
+    endloop
+  endfacet
+  facet normal 4.336813e-17 1 0
+    outer loop
+       vertex 0.07333333 -5.782412e-19 0.05
+       vertex 0.07333333 -5.782412e-19 0.04
+       vertex 0.06666667 -2.891206e-19 0.04
+    endloop
+  endfacet
+  facet normal -1.517882e-16 1 0
+    outer loop
+       vertex 0.07333333 -5.782412e-19 0.04
+       vertex 0.07333333 -5.782412e-19 0.05
+       vertex 0.08 4.336809e-19 0.05
+    endloop
+  endfacet
+  facet normal -1.517882e-16 1 0
+    outer loop
+       vertex 0.08 4.336809e-19 0.05
+       vertex 0.08 4.336809e-19 0.04
+       vertex 0.07333333 -5.782412e-19 0.04
+    endloop
+  endfacet
+  facet normal 2.168403e-17 1 -0
+    outer loop
+       vertex 0.08 4.336809e-19 0.04
+       vertex 0.08 4.336809e-19 0.05
+       vertex 0.08666667 2.891206e-19 0.05
+    endloop
+  endfacet
+  facet normal 2.168403e-17 1 0
+    outer loop
+       vertex 0.08666667 2.891206e-19 0.05
+       vertex 0.08666667 2.891206e-19 0.04
+       vertex 0.08 4.336809e-19 0.04
+    endloop
+  endfacet
+  facet normal 2.168407e-17 1 -0
+    outer loop
+       vertex 0.08666667 2.891206e-19 0.04
+       vertex 0.08666667 2.891206e-19 0.05
+       vertex 0.09333333 1.445603e-19 0.05
+    endloop
+  endfacet
+  facet normal 2.168407e-17 1 0
+    outer loop
+       vertex 0.09333333 1.445603e-19 0.05
+       vertex 0.09333333 1.445603e-19 0.04
+       vertex 0.08666667 2.891206e-19 0.04
+    endloop
+  endfacet
+  facet normal 2.168403e-17 1 -0
+    outer loop
+       vertex 0.09333333 1.445603e-19 0.04
+       vertex 0.09333333 1.445603e-19 0.05
+       vertex 0.1 0 0.05
+    endloop
+  endfacet
+  facet normal 2.168403e-17 1 0
+    outer loop
+       vertex 0.1 0 0.05
+       vertex 0.1 0 0.04
+       vertex 0.09333333 1.445603e-19 0.04
+    endloop
+  endfacet
+endsolid bottomAir_to_rightSolid
+solid bottomAir_to_leftSolid
+  facet normal 0 1 0
+    outer loop
+       vertex -0.1 0 -0.05
+       vertex -0.1 0 -0.04
+       vertex -0.09333333 0 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.09333333 0 -0.04
+       vertex -0.09333333 0 -0.05
+       vertex -0.1 0 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.09333333 0 -0.05
+       vertex -0.09333333 0 -0.04
+       vertex -0.08666667 0 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08666667 0 -0.04
+       vertex -0.08666667 0 -0.05
+       vertex -0.09333333 0 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08666667 0 -0.05
+       vertex -0.08666667 0 -0.04
+       vertex -0.08 0 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08 0 -0.04
+       vertex -0.08 0 -0.05
+       vertex -0.08666667 0 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08 0 -0.05
+       vertex -0.08 0 -0.04
+       vertex -0.07333333 0 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.07333333 0 -0.04
+       vertex -0.07333333 0 -0.05
+       vertex -0.08 0 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.07333333 0 -0.05
+       vertex -0.07333333 0 -0.04
+       vertex -0.06666667 0 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06666667 0 -0.04
+       vertex -0.06666667 0 -0.05
+       vertex -0.07333333 0 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06666667 0 -0.05
+       vertex -0.06666667 0 -0.04
+       vertex -0.06 0 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06 0 -0.04
+       vertex -0.06 0 -0.05
+       vertex -0.06666667 0 -0.05
+    endloop
+  endfacet
+  facet normal 8.673614e-17 1 -0
+    outer loop
+       vertex -0.06 0 -0.05
+       vertex -0.06 0 -0.04
+       vertex -0.05333333 -5.782412e-19 -0.04
+    endloop
+  endfacet
+  facet normal 8.673614e-17 1 0
+    outer loop
+       vertex -0.05333333 -5.782412e-19 -0.04
+       vertex -0.05333333 -5.782412e-19 -0.05
+       vertex -0.06 0 -0.05
+    endloop
+  endfacet
+  facet normal -8.673627e-17 1 0
+    outer loop
+       vertex -0.05333333 -5.782412e-19 -0.05
+       vertex -0.05333333 -5.782412e-19 -0.04
+       vertex -0.04666667 0 -0.04
+    endloop
+  endfacet
+  facet normal -8.673627e-17 1 0
+    outer loop
+       vertex -0.04666667 0 -0.04
+       vertex -0.04666667 0 -0.05
+       vertex -0.05333333 -5.782412e-19 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04666667 0 -0.05
+       vertex -0.04666667 0 -0.04
+       vertex -0.04 0 -0.04
+    endloop
+  endfacet
+  facet normal -8.673614e-17 1 5.782412e-17
+    outer loop
+       vertex -0.04 0 -0.04
+       vertex -0.04 5.782412e-19 -0.05
+       vertex -0.04666667 0 -0.05
+    endloop
+  endfacet
+  facet normal 8.673614e-17 1 5.782412e-17
+    outer loop
+       vertex -0.04 5.782412e-19 -0.05
+       vertex -0.04 0 -0.04
+       vertex -0.03333333 -5.782412e-19 -0.04
+    endloop
+  endfacet
+  facet normal 1.734723e-16 1 0
+    outer loop
+       vertex -0.03333333 -5.782412e-19 -0.04
+       vertex -0.03333333 -5.782412e-19 -0.05
+       vertex -0.04 5.782412e-19 -0.05
+    endloop
+  endfacet
+  facet normal -8.673627e-17 1 0
+    outer loop
+       vertex -0.03333333 -5.782412e-19 -0.05
+       vertex -0.03333333 -5.782412e-19 -0.04
+       vertex -0.02666667 0 -0.04
+    endloop
+  endfacet
+  facet normal -8.673627e-17 1 0
+    outer loop
+       vertex -0.02666667 0 -0.04
+       vertex -0.02666667 0 -0.05
+       vertex -0.03333333 -5.782412e-19 -0.05
+    endloop
+  endfacet
+  facet normal 8.673614e-17 1 -0
+    outer loop
+       vertex -0.02666667 0 -0.05
+       vertex -0.02666667 0 -0.04
+       vertex -0.02 -5.782412e-19 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 5.782412e-17
+    outer loop
+       vertex -0.02 -5.782412e-19 -0.04
+       vertex -0.02 0 -0.05
+       vertex -0.02666667 0 -0.05
+    endloop
+  endfacet
+  facet normal -8.673614e-17 1 5.782412e-17
+    outer loop
+       vertex -0.02 0 -0.05
+       vertex -0.02 -5.782412e-19 -0.04
+       vertex -0.01333333 0 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.01333333 0 -0.04
+       vertex -0.01333333 0 -0.05
+       vertex -0.02 0 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.1 0 -0.04
+       vertex -0.1 0 -0.03
+       vertex -0.09333333 0 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.09333333 0 -0.03
+       vertex -0.09333333 0 -0.04
+       vertex -0.1 0 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.09333333 0 -0.04
+       vertex -0.09333333 0 -0.03
+       vertex -0.08666667 0 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08666667 0 -0.03
+       vertex -0.08666667 0 -0.04
+       vertex -0.09333333 0 -0.04
+    endloop
+  endfacet
+  facet normal -1.734722e-16 1 0
+    outer loop
+       vertex -0.08666667 0 -0.04
+       vertex -0.08666667 0 -0.03
+       vertex -0.08 1.156482e-18 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 -1.156482e-16
+    outer loop
+       vertex -0.08 1.156482e-18 -0.03
+       vertex -0.08 0 -0.04
+       vertex -0.08666667 0 -0.04
+    endloop
+  endfacet
+  facet normal 1.734722e-16 1 -1.156482e-16
+    outer loop
+       vertex -0.08 0 -0.04
+       vertex -0.08 1.156482e-18 -0.03
+       vertex -0.07333333 0 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.07333333 0 -0.03
+       vertex -0.07333333 0 -0.04
+       vertex -0.08 0 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.07333333 0 -0.04
+       vertex -0.07333333 0 -0.03
+       vertex -0.06666667 0 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06666667 0 -0.03
+       vertex -0.06666667 0 -0.04
+       vertex -0.07333333 0 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06666667 0 -0.04
+       vertex -0.06666667 0 -0.03
+       vertex -0.06 0 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06 0 -0.03
+       vertex -0.06 0 -0.04
+       vertex -0.06666667 0 -0.04
+    endloop
+  endfacet
+  facet normal 8.673614e-17 1 -0
+    outer loop
+       vertex -0.06 0 -0.04
+       vertex -0.06 0 -0.03
+       vertex -0.05333333 -5.782412e-19 -0.03
+    endloop
+  endfacet
+  facet normal 8.673614e-17 1 0
+    outer loop
+       vertex -0.05333333 -5.782412e-19 -0.03
+       vertex -0.05333333 -5.782412e-19 -0.04
+       vertex -0.06 0 -0.04
+    endloop
+  endfacet
+  facet normal -8.673627e-17 1 0
+    outer loop
+       vertex -0.05333333 -5.782412e-19 -0.04
+       vertex -0.05333333 -5.782412e-19 -0.03
+       vertex -0.04666667 0 -0.03
+    endloop
+  endfacet
+  facet normal -8.673627e-17 1 0
+    outer loop
+       vertex -0.04666667 0 -0.03
+       vertex -0.04666667 0 -0.04
+       vertex -0.05333333 -5.782412e-19 -0.04
+    endloop
+  endfacet
+  facet normal -8.673614e-17 1 0
+    outer loop
+       vertex -0.04666667 0 -0.04
+       vertex -0.04666667 0 -0.03
+       vertex -0.04 5.782412e-19 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 -5.782412e-17
+    outer loop
+       vertex -0.04 5.782412e-19 -0.03
+       vertex -0.04 0 -0.04
+       vertex -0.04666667 0 -0.04
+    endloop
+  endfacet
+  facet normal 1.734723e-16 1 -5.782412e-17
+    outer loop
+       vertex -0.04 0 -0.04
+       vertex -0.04 5.782412e-19 -0.03
+       vertex -0.03333333 -5.782412e-19 -0.03
+    endloop
+  endfacet
+  facet normal 8.673614e-17 1 0
+    outer loop
+       vertex -0.03333333 -5.782412e-19 -0.03
+       vertex -0.03333333 -5.782412e-19 -0.04
+       vertex -0.04 0 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.03333333 -5.782412e-19 -0.04
+       vertex -0.03333333 -5.782412e-19 -0.03
+       vertex -0.02666667 -5.782412e-19 -0.03
+    endloop
+  endfacet
+  facet normal -8.673627e-17 1 5.782412e-17
+    outer loop
+       vertex -0.02666667 -5.782412e-19 -0.03
+       vertex -0.02666667 0 -0.04
+       vertex -0.03333333 -5.782412e-19 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 5.782412e-17
+    outer loop
+       vertex -0.02666667 0 -0.04
+       vertex -0.02666667 -5.782412e-19 -0.03
+       vertex -0.02 -5.782412e-19 -0.03
+    endloop
+  endfacet
+  facet normal 8.673614e-17 1 0
+    outer loop
+       vertex -0.02 -5.782412e-19 -0.03
+       vertex -0.02 -5.782412e-19 -0.04
+       vertex -0.02666667 0 -0.04
+    endloop
+  endfacet
+  facet normal -8.673614e-17 1 0
+    outer loop
+       vertex -0.02 -5.782412e-19 -0.04
+       vertex -0.02 -5.782412e-19 -0.03
+       vertex -0.01333333 0 -0.03
+    endloop
+  endfacet
+  facet normal -8.673614e-17 1 0
+    outer loop
+       vertex -0.01333333 0 -0.03
+       vertex -0.01333333 0 -0.04
+       vertex -0.02 -5.782412e-19 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.1 0 -0.03
+       vertex -0.1 0 -0.02
+       vertex -0.09333333 0 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.09333333 0 -0.02
+       vertex -0.09333333 0 -0.03
+       vertex -0.1 0 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.09333333 0 -0.03
+       vertex -0.09333333 0 -0.02
+       vertex -0.08666667 0 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08666667 0 -0.02
+       vertex -0.08666667 0 -0.03
+       vertex -0.09333333 0 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08666667 0 -0.03
+       vertex -0.08666667 0 -0.02
+       vertex -0.08 0 -0.02
+    endloop
+  endfacet
+  facet normal -1.734722e-16 1 1.156482e-16
+    outer loop
+       vertex -0.08 0 -0.02
+       vertex -0.08 1.156482e-18 -0.03
+       vertex -0.08666667 0 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 1.156482e-16
+    outer loop
+       vertex -0.08 1.156482e-18 -0.03
+       vertex -0.08 0 -0.02
+       vertex -0.07333333 0 -0.02
+    endloop
+  endfacet
+  facet normal 1.734722e-16 1 0
+    outer loop
+       vertex -0.07333333 0 -0.02
+       vertex -0.07333333 0 -0.03
+       vertex -0.08 1.156482e-18 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.07333333 0 -0.03
+       vertex -0.07333333 0 -0.02
+       vertex -0.06666667 0 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06666667 0 -0.02
+       vertex -0.06666667 0 -0.03
+       vertex -0.07333333 0 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06666667 0 -0.03
+       vertex -0.06666667 0 -0.02
+       vertex -0.06 0 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06 0 -0.02
+       vertex -0.06 0 -0.03
+       vertex -0.06666667 0 -0.03
+    endloop
+  endfacet
+  facet normal 8.673614e-17 1 -0
+    outer loop
+       vertex -0.06 0 -0.03
+       vertex -0.06 0 -0.02
+       vertex -0.05333333 -5.782412e-19 -0.02
+    endloop
+  endfacet
+  facet normal 8.673614e-17 1 0
+    outer loop
+       vertex -0.05333333 -5.782412e-19 -0.02
+       vertex -0.05333333 -5.782412e-19 -0.03
+       vertex -0.06 0 -0.03
+    endloop
+  endfacet
+  facet normal -8.673627e-17 1 0
+    outer loop
+       vertex -0.05333333 -5.782412e-19 -0.03
+       vertex -0.05333333 -5.782412e-19 -0.02
+       vertex -0.04666667 0 -0.02
+    endloop
+  endfacet
+  facet normal -8.673627e-17 1 0
+    outer loop
+       vertex -0.04666667 0 -0.02
+       vertex -0.04666667 0 -0.03
+       vertex -0.05333333 -5.782412e-19 -0.03
+    endloop
+  endfacet
+  facet normal -8.673614e-17 1 0
+    outer loop
+       vertex -0.04666667 0 -0.03
+       vertex -0.04666667 0 -0.02
+       vertex -0.04 5.782412e-19 -0.02
+    endloop
+  endfacet
+  facet normal -8.673614e-17 1 0
+    outer loop
+       vertex -0.04 5.782412e-19 -0.02
+       vertex -0.04 5.782412e-19 -0.03
+       vertex -0.04666667 0 -0.03
+    endloop
+  endfacet
+  facet normal 1.734723e-16 1 -0
+    outer loop
+       vertex -0.04 5.782412e-19 -0.03
+       vertex -0.04 5.782412e-19 -0.02
+       vertex -0.03333333 -5.782412e-19 -0.02
+    endloop
+  endfacet
+  facet normal 1.734723e-16 1 0
+    outer loop
+       vertex -0.03333333 -5.782412e-19 -0.02
+       vertex -0.03333333 -5.782412e-19 -0.03
+       vertex -0.04 5.782412e-19 -0.03
+    endloop
+  endfacet
+  facet normal -8.673627e-17 1 0
+    outer loop
+       vertex -0.03333333 -5.782412e-19 -0.03
+       vertex -0.03333333 -5.782412e-19 -0.02
+       vertex -0.02666667 0 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 -5.782412e-17
+    outer loop
+       vertex -0.02666667 0 -0.02
+       vertex -0.02666667 -5.782412e-19 -0.03
+       vertex -0.03333333 -5.782412e-19 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 -5.782412e-17
+    outer loop
+       vertex -0.02666667 -5.782412e-19 -0.03
+       vertex -0.02666667 0 -0.02
+       vertex -0.02 0 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 -5.782412e-17
+    outer loop
+       vertex -0.02 0 -0.02
+       vertex -0.02 -5.782412e-19 -0.03
+       vertex -0.02666667 -5.782412e-19 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 -5.782412e-17
+    outer loop
+       vertex -0.02 -5.782412e-19 -0.03
+       vertex -0.02 0 -0.02
+       vertex -0.01333333 0 -0.02
+    endloop
+  endfacet
+  facet normal -8.673614e-17 1 0
+    outer loop
+       vertex -0.01333333 0 -0.02
+       vertex -0.01333333 0 -0.03
+       vertex -0.02 -5.782412e-19 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.1 0 -0.02
+       vertex -0.1 0 -0.01
+       vertex -0.09333333 0 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.09333333 0 -0.01
+       vertex -0.09333333 0 -0.02
+       vertex -0.1 0 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.09333333 0 -0.02
+       vertex -0.09333333 0 -0.01
+       vertex -0.08666667 0 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08666667 0 -0.01
+       vertex -0.08666667 0 -0.02
+       vertex -0.09333333 0 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08666667 0 -0.02
+       vertex -0.08666667 0 -0.01
+       vertex -0.08 0 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08 0 -0.01
+       vertex -0.08 0 -0.02
+       vertex -0.08666667 0 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08 0 -0.02
+       vertex -0.08 0 -0.01
+       vertex -0.07333333 0 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.07333333 0 -0.01
+       vertex -0.07333333 0 -0.02
+       vertex -0.08 0 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.07333333 0 -0.02
+       vertex -0.07333333 0 -0.01
+       vertex -0.06666667 0 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06666667 0 -0.01
+       vertex -0.06666667 0 -0.02
+       vertex -0.07333333 0 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06666667 0 -0.02
+       vertex -0.06666667 0 -0.01
+       vertex -0.06 0 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06 0 -0.01
+       vertex -0.06 0 -0.02
+       vertex -0.06666667 0 -0.02
+    endloop
+  endfacet
+  facet normal 8.673614e-17 1 -0
+    outer loop
+       vertex -0.06 0 -0.02
+       vertex -0.06 0 -0.01
+       vertex -0.05333333 -5.782412e-19 -0.01
+    endloop
+  endfacet
+  facet normal 8.673614e-17 1 0
+    outer loop
+       vertex -0.05333333 -5.782412e-19 -0.01
+       vertex -0.05333333 -5.782412e-19 -0.02
+       vertex -0.06 0 -0.02
+    endloop
+  endfacet
+  facet normal -8.673627e-17 1 0
+    outer loop
+       vertex -0.05333333 -5.782412e-19 -0.02
+       vertex -0.05333333 -5.782412e-19 -0.01
+       vertex -0.04666667 0 -0.01
+    endloop
+  endfacet
+  facet normal -8.673627e-17 1 0
+    outer loop
+       vertex -0.04666667 0 -0.01
+       vertex -0.04666667 0 -0.02
+       vertex -0.05333333 -5.782412e-19 -0.02
+    endloop
+  endfacet
+  facet normal -8.673614e-17 1 0
+    outer loop
+       vertex -0.04666667 0 -0.02
+       vertex -0.04666667 0 -0.01
+       vertex -0.04 5.782412e-19 -0.01
+    endloop
+  endfacet
+  facet normal -8.673614e-17 1 0
+    outer loop
+       vertex -0.04 5.782412e-19 -0.01
+       vertex -0.04 5.782412e-19 -0.02
+       vertex -0.04666667 0 -0.02
+    endloop
+  endfacet
+  facet normal 1.734723e-16 1 -0
+    outer loop
+       vertex -0.04 5.782412e-19 -0.02
+       vertex -0.04 5.782412e-19 -0.01
+       vertex -0.03333333 -5.782412e-19 -0.01
+    endloop
+  endfacet
+  facet normal 1.734723e-16 1 0
+    outer loop
+       vertex -0.03333333 -5.782412e-19 -0.01
+       vertex -0.03333333 -5.782412e-19 -0.02
+       vertex -0.04 5.782412e-19 -0.02
+    endloop
+  endfacet
+  facet normal -8.673627e-17 1 0
+    outer loop
+       vertex -0.03333333 -5.782412e-19 -0.02
+       vertex -0.03333333 -5.782412e-19 -0.01
+       vertex -0.02666667 0 -0.01
+    endloop
+  endfacet
+  facet normal -8.673627e-17 1 0
+    outer loop
+       vertex -0.02666667 0 -0.01
+       vertex -0.02666667 0 -0.02
+       vertex -0.03333333 -5.782412e-19 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02666667 0 -0.02
+       vertex -0.02666667 0 -0.01
+       vertex -0.02 0 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02 0 -0.01
+       vertex -0.02 0 -0.02
+       vertex -0.02666667 0 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02 0 -0.02
+       vertex -0.02 0 -0.01
+       vertex -0.01333333 0 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.01333333 0 -0.01
+       vertex -0.01333333 0 -0.02
+       vertex -0.02 0 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.1 0 -0.01
+       vertex -0.1 0 0
+       vertex -0.09333333 0 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.09333333 0 0
+       vertex -0.09333333 0 -0.01
+       vertex -0.1 0 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.09333333 0 -0.01
+       vertex -0.09333333 0 0
+       vertex -0.08666667 0 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08666667 0 0
+       vertex -0.08666667 0 -0.01
+       vertex -0.09333333 0 -0.01
+    endloop
+  endfacet
+  facet normal -0 1 0
+    outer loop
+       vertex -0.08666667 0 0
+       vertex -0.08 0 1.156482e-18
+       vertex -0.08 0 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08 0 -0.01
+       vertex -0.08666667 0 -0.01
+       vertex -0.08666667 0 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.07333333 0 0
+       vertex -0.07333333 0 -0.01
+       vertex -0.08 0 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08 0 -0.01
+       vertex -0.08 0 1.156482e-18
+       vertex -0.07333333 0 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.07333333 0 -0.01
+       vertex -0.07333333 0 0
+       vertex -0.06666667 0 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06666667 0 0
+       vertex -0.06666667 0 -0.01
+       vertex -0.07333333 0 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06666667 0 -0.01
+       vertex -0.06666667 0 0
+       vertex -0.06 0 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06 0 0
+       vertex -0.06 0 -0.01
+       vertex -0.06666667 0 -0.01
+    endloop
+  endfacet
+  facet normal 8.673614e-17 1 -0
+    outer loop
+       vertex -0.06 0 -0.01
+       vertex -0.06 0 0
+       vertex -0.05333333 -5.782412e-19 0
+    endloop
+  endfacet
+  facet normal 8.673614e-17 1 0
+    outer loop
+       vertex -0.05333333 -5.782412e-19 0
+       vertex -0.05333333 -5.782412e-19 -0.01
+       vertex -0.06 0 -0.01
+    endloop
+  endfacet
+  facet normal -8.673627e-17 1 0
+    outer loop
+       vertex -0.05333333 -5.782412e-19 -0.01
+       vertex -0.05333333 -5.782412e-19 0
+       vertex -0.04666667 0 0
+    endloop
+  endfacet
+  facet normal -8.673627e-17 1 0
+    outer loop
+       vertex -0.04666667 0 0
+       vertex -0.04666667 0 -0.01
+       vertex -0.05333333 -5.782412e-19 -0.01
+    endloop
+  endfacet
+  facet normal -8.673614e-17 1 0
+    outer loop
+       vertex -0.04666667 0 -0.01
+       vertex -0.04666667 0 0
+       vertex -0.04 5.782412e-19 0
+    endloop
+  endfacet
+  facet normal -8.673614e-17 1 0
+    outer loop
+       vertex -0.04 5.782412e-19 0
+       vertex -0.04 5.782412e-19 -0.01
+       vertex -0.04666667 0 -0.01
+    endloop
+  endfacet
+  facet normal 1.734723e-16 1 -0
+    outer loop
+       vertex -0.04 5.782412e-19 -0.01
+       vertex -0.04 5.782412e-19 0
+       vertex -0.03333333 -5.782412e-19 0
+    endloop
+  endfacet
+  facet normal 1.734723e-16 1 0
+    outer loop
+       vertex -0.03333333 -5.782412e-19 0
+       vertex -0.03333333 -5.782412e-19 -0.01
+       vertex -0.04 5.782412e-19 -0.01
+    endloop
+  endfacet
+  facet normal -8.673627e-17 1 0
+    outer loop
+       vertex -0.03333333 -5.782412e-19 -0.01
+       vertex -0.03333333 -5.782412e-19 0
+       vertex -0.02666667 0 0
+    endloop
+  endfacet
+  facet normal -8.673627e-17 1 0
+    outer loop
+       vertex -0.02666667 0 0
+       vertex -0.02666667 0 -0.01
+       vertex -0.03333333 -5.782412e-19 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02666667 0 -0.01
+       vertex -0.02666667 0 0
+       vertex -0.02 0 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02 0 0
+       vertex -0.02 0 -0.01
+       vertex -0.02666667 0 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02 0 -0.01
+       vertex -0.02 0 0
+       vertex -0.01333333 0 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.01333333 0 0
+       vertex -0.01333333 0 -0.01
+       vertex -0.02 0 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.1 0 0
+       vertex -0.1 0 0.01
+       vertex -0.09333333 0 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.09333333 0 0.01
+       vertex -0.09333333 0 0
+       vertex -0.1 0 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.09333333 0 0
+       vertex -0.09333333 0 0.01
+       vertex -0.08666667 0 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08666667 0 0.01
+       vertex -0.08666667 0 0
+       vertex -0.09333333 0 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08 0 1.156482e-18
+       vertex -0.08666667 0 0
+       vertex -0.08666667 0 0.01
+    endloop
+  endfacet
+  facet normal -0 1 0
+    outer loop
+       vertex -0.08666667 0 0.01
+       vertex -0.08 0 0.01
+       vertex -0.08 0 1.156482e-18
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08 0 1.156482e-18
+       vertex -0.08 0 0.01
+       vertex -0.07333333 0 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.07333333 0 0.01
+       vertex -0.07333333 0 0
+       vertex -0.08 0 1.156482e-18
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.07333333 0 0
+       vertex -0.07333333 0 0.01
+       vertex -0.06666667 0 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06666667 0 0.01
+       vertex -0.06666667 0 0
+       vertex -0.07333333 0 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06666667 0 0
+       vertex -0.06666667 0 0.01
+       vertex -0.06 0 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06 0 0.01
+       vertex -0.06 0 0
+       vertex -0.06666667 0 0
+    endloop
+  endfacet
+  facet normal 8.673614e-17 1 -0
+    outer loop
+       vertex -0.06 0 0
+       vertex -0.06 0 0.01
+       vertex -0.05333333 -5.782412e-19 0.01
+    endloop
+  endfacet
+  facet normal 8.673614e-17 1 0
+    outer loop
+       vertex -0.05333333 -5.782412e-19 0.01
+       vertex -0.05333333 -5.782412e-19 0
+       vertex -0.06 0 0
+    endloop
+  endfacet
+  facet normal -8.673627e-17 1 0
+    outer loop
+       vertex -0.05333333 -5.782412e-19 0
+       vertex -0.05333333 -5.782412e-19 0.01
+       vertex -0.04666667 0 0.01
+    endloop
+  endfacet
+  facet normal -8.673627e-17 1 0
+    outer loop
+       vertex -0.04666667 0 0.01
+       vertex -0.04666667 0 0
+       vertex -0.05333333 -5.782412e-19 0
+    endloop
+  endfacet
+  facet normal -8.673614e-17 1 0
+    outer loop
+       vertex -0.04666667 0 0
+       vertex -0.04666667 0 0.01
+       vertex -0.04 5.782412e-19 0.01
+    endloop
+  endfacet
+  facet normal -8.673614e-17 1 0
+    outer loop
+       vertex -0.04 5.782412e-19 0.01
+       vertex -0.04 5.782412e-19 0
+       vertex -0.04666667 0 0
+    endloop
+  endfacet
+  facet normal 1.734723e-16 1 -0
+    outer loop
+       vertex -0.04 5.782412e-19 0
+       vertex -0.04 5.782412e-19 0.01
+       vertex -0.03333333 -5.782412e-19 0.01
+    endloop
+  endfacet
+  facet normal 1.734723e-16 1 0
+    outer loop
+       vertex -0.03333333 -5.782412e-19 0.01
+       vertex -0.03333333 -5.782412e-19 0
+       vertex -0.04 5.782412e-19 0
+    endloop
+  endfacet
+  facet normal -8.673627e-17 1 0
+    outer loop
+       vertex -0.03333333 -5.782412e-19 0
+       vertex -0.03333333 -5.782412e-19 0.01
+       vertex -0.02666667 0 0.01
+    endloop
+  endfacet
+  facet normal -8.673627e-17 1 0
+    outer loop
+       vertex -0.02666667 0 0.01
+       vertex -0.02666667 0 0
+       vertex -0.03333333 -5.782412e-19 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02666667 0 0
+       vertex -0.02666667 0 0.01
+       vertex -0.02 0 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02 0 0.01
+       vertex -0.02 0 0
+       vertex -0.02666667 0 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02 0 0
+       vertex -0.02 0 0.01
+       vertex -0.01333333 0 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.01333333 0 0.01
+       vertex -0.01333333 0 0
+       vertex -0.02 0 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.1 0 0.01
+       vertex -0.1 0 0.02
+       vertex -0.09333333 0 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.09333333 0 0.02
+       vertex -0.09333333 0 0.01
+       vertex -0.1 0 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.09333333 0 0.01
+       vertex -0.09333333 0 0.02
+       vertex -0.08666667 0 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08666667 0 0.02
+       vertex -0.08666667 0 0.01
+       vertex -0.09333333 0 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08666667 0 0.01
+       vertex -0.08666667 0 0.02
+       vertex -0.08 0 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08 0 0.02
+       vertex -0.08 0 0.01
+       vertex -0.08666667 0 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08 0 0.01
+       vertex -0.08 0 0.02
+       vertex -0.07333333 0 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.07333333 0 0.02
+       vertex -0.07333333 0 0.01
+       vertex -0.08 0 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.07333333 0 0.01
+       vertex -0.07333333 0 0.02
+       vertex -0.06666667 0 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06666667 0 0.02
+       vertex -0.06666667 0 0.01
+       vertex -0.07333333 0 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06666667 0 0.01
+       vertex -0.06666667 0 0.02
+       vertex -0.06 0 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06 0 0.02
+       vertex -0.06 0 0.01
+       vertex -0.06666667 0 0.01
+    endloop
+  endfacet
+  facet normal 8.673614e-17 1 -0
+    outer loop
+       vertex -0.06 0 0.01
+       vertex -0.06 0 0.02
+       vertex -0.05333333 -5.782412e-19 0.02
+    endloop
+  endfacet
+  facet normal 8.673614e-17 1 0
+    outer loop
+       vertex -0.05333333 -5.782412e-19 0.02
+       vertex -0.05333333 -5.782412e-19 0.01
+       vertex -0.06 0 0.01
+    endloop
+  endfacet
+  facet normal -8.673627e-17 1 0
+    outer loop
+       vertex -0.05333333 -5.782412e-19 0.01
+       vertex -0.05333333 -5.782412e-19 0.02
+       vertex -0.04666667 0 0.02
+    endloop
+  endfacet
+  facet normal -8.673627e-17 1 0
+    outer loop
+       vertex -0.04666667 0 0.02
+       vertex -0.04666667 0 0.01
+       vertex -0.05333333 -5.782412e-19 0.01
+    endloop
+  endfacet
+  facet normal -8.673614e-17 1 0
+    outer loop
+       vertex -0.04666667 0 0.01
+       vertex -0.04666667 0 0.02
+       vertex -0.04 5.782412e-19 0.02
+    endloop
+  endfacet
+  facet normal -8.673614e-17 1 0
+    outer loop
+       vertex -0.04 5.782412e-19 0.02
+       vertex -0.04 5.782412e-19 0.01
+       vertex -0.04666667 0 0.01
+    endloop
+  endfacet
+  facet normal 1.734723e-16 1 -0
+    outer loop
+       vertex -0.04 5.782412e-19 0.01
+       vertex -0.04 5.782412e-19 0.02
+       vertex -0.03333333 -5.782412e-19 0.02
+    endloop
+  endfacet
+  facet normal 1.734723e-16 1 0
+    outer loop
+       vertex -0.03333333 -5.782412e-19 0.02
+       vertex -0.03333333 -5.782412e-19 0.01
+       vertex -0.04 5.782412e-19 0.01
+    endloop
+  endfacet
+  facet normal -8.673627e-17 1 0
+    outer loop
+       vertex -0.03333333 -5.782412e-19 0.01
+       vertex -0.03333333 -5.782412e-19 0.02
+       vertex -0.02666667 0 0.02
+    endloop
+  endfacet
+  facet normal -8.673627e-17 1 0
+    outer loop
+       vertex -0.02666667 0 0.02
+       vertex -0.02666667 0 0.01
+       vertex -0.03333333 -5.782412e-19 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02666667 0 0.01
+       vertex -0.02666667 0 0.02
+       vertex -0.02 0 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02 0 0.02
+       vertex -0.02 0 0.01
+       vertex -0.02666667 0 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02 0 0.01
+       vertex -0.02 0 0.02
+       vertex -0.01333333 0 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.01333333 0 0.02
+       vertex -0.01333333 0 0.01
+       vertex -0.02 0 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.1 0 0.02
+       vertex -0.1 0 0.03
+       vertex -0.09333333 0 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.09333333 0 0.03
+       vertex -0.09333333 0 0.02
+       vertex -0.1 0 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.09333333 0 0.02
+       vertex -0.09333333 0 0.03
+       vertex -0.08666667 0 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08666667 0 0.03
+       vertex -0.08666667 0 0.02
+       vertex -0.09333333 0 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08666667 0 0.02
+       vertex -0.08666667 0 0.03
+       vertex -0.08 0 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08 0 0.03
+       vertex -0.08 0 0.02
+       vertex -0.08666667 0 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08 0 0.02
+       vertex -0.08 0 0.03
+       vertex -0.07333333 0 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.07333333 0 0.03
+       vertex -0.07333333 0 0.02
+       vertex -0.08 0 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.07333333 0 0.02
+       vertex -0.07333333 0 0.03
+       vertex -0.06666667 0 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06666667 0 0.03
+       vertex -0.06666667 0 0.02
+       vertex -0.07333333 0 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06666667 0 0.02
+       vertex -0.06666667 0 0.03
+       vertex -0.06 0 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06 0 0.03
+       vertex -0.06 0 0.02
+       vertex -0.06666667 0 0.02
+    endloop
+  endfacet
+  facet normal 8.673614e-17 1 -0
+    outer loop
+       vertex -0.06 0 0.02
+       vertex -0.06 0 0.03
+       vertex -0.05333333 -5.782412e-19 0.03
+    endloop
+  endfacet
+  facet normal 8.673614e-17 1 0
+    outer loop
+       vertex -0.05333333 -5.782412e-19 0.03
+       vertex -0.05333333 -5.782412e-19 0.02
+       vertex -0.06 0 0.02
+    endloop
+  endfacet
+  facet normal -8.673627e-17 1 0
+    outer loop
+       vertex -0.05333333 -5.782412e-19 0.02
+       vertex -0.05333333 -5.782412e-19 0.03
+       vertex -0.04666667 0 0.03
+    endloop
+  endfacet
+  facet normal -8.673627e-17 1 0
+    outer loop
+       vertex -0.04666667 0 0.03
+       vertex -0.04666667 0 0.02
+       vertex -0.05333333 -5.782412e-19 0.02
+    endloop
+  endfacet
+  facet normal -8.673614e-17 1 0
+    outer loop
+       vertex -0.04666667 0 0.02
+       vertex -0.04666667 0 0.03
+       vertex -0.04 5.782412e-19 0.03
+    endloop
+  endfacet
+  facet normal -8.673614e-17 1 0
+    outer loop
+       vertex -0.04 5.782412e-19 0.03
+       vertex -0.04 5.782412e-19 0.02
+       vertex -0.04666667 0 0.02
+    endloop
+  endfacet
+  facet normal 1.734723e-16 1 -0
+    outer loop
+       vertex -0.04 5.782412e-19 0.02
+       vertex -0.04 5.782412e-19 0.03
+       vertex -0.03333333 -5.782412e-19 0.03
+    endloop
+  endfacet
+  facet normal 1.734723e-16 1 0
+    outer loop
+       vertex -0.03333333 -5.782412e-19 0.03
+       vertex -0.03333333 -5.782412e-19 0.02
+       vertex -0.04 5.782412e-19 0.02
+    endloop
+  endfacet
+  facet normal -8.673627e-17 1 0
+    outer loop
+       vertex -0.03333333 -5.782412e-19 0.02
+       vertex -0.03333333 -5.782412e-19 0.03
+       vertex -0.02666667 0 0.03
+    endloop
+  endfacet
+  facet normal -8.673627e-17 1 0
+    outer loop
+       vertex -0.02666667 0 0.03
+       vertex -0.02666667 0 0.02
+       vertex -0.03333333 -5.782412e-19 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02666667 0 0.02
+       vertex -0.02666667 0 0.03
+       vertex -0.02 0 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02 0 0.03
+       vertex -0.02 0 0.02
+       vertex -0.02666667 0 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02 0 0.02
+       vertex -0.02 0 0.03
+       vertex -0.01333333 0 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.01333333 0 0.03
+       vertex -0.01333333 0 0.02
+       vertex -0.02 0 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.1 0 0.03
+       vertex -0.1 0 0.04
+       vertex -0.09333333 0 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.09333333 0 0.04
+       vertex -0.09333333 0 0.03
+       vertex -0.1 0 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.09333333 0 0.03
+       vertex -0.09333333 0 0.04
+       vertex -0.08666667 0 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08666667 0 0.04
+       vertex -0.08666667 0 0.03
+       vertex -0.09333333 0 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08666667 0 0.03
+       vertex -0.08666667 0 0.04
+       vertex -0.08 0 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08 0 0.04
+       vertex -0.08 0 0.03
+       vertex -0.08666667 0 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08 0 0.03
+       vertex -0.08 0 0.04
+       vertex -0.07333333 0 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.07333333 0 0.04
+       vertex -0.07333333 0 0.03
+       vertex -0.08 0 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.07333333 0 0.03
+       vertex -0.07333333 0 0.04
+       vertex -0.06666667 0 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06666667 0 0.04
+       vertex -0.06666667 0 0.03
+       vertex -0.07333333 0 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06666667 0 0.03
+       vertex -0.06666667 0 0.04
+       vertex -0.06 0 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06 0 0.04
+       vertex -0.06 0 0.03
+       vertex -0.06666667 0 0.03
+    endloop
+  endfacet
+  facet normal 8.673614e-17 1 -0
+    outer loop
+       vertex -0.06 0 0.03
+       vertex -0.06 0 0.04
+       vertex -0.05333333 -5.782412e-19 0.04
+    endloop
+  endfacet
+  facet normal 8.673614e-17 1 0
+    outer loop
+       vertex -0.05333333 -5.782412e-19 0.04
+       vertex -0.05333333 -5.782412e-19 0.03
+       vertex -0.06 0 0.03
+    endloop
+  endfacet
+  facet normal -8.673627e-17 1 0
+    outer loop
+       vertex -0.05333333 -5.782412e-19 0.03
+       vertex -0.05333333 -5.782412e-19 0.04
+       vertex -0.04666667 0 0.04
+    endloop
+  endfacet
+  facet normal -8.673627e-17 1 0
+    outer loop
+       vertex -0.04666667 0 0.04
+       vertex -0.04666667 0 0.03
+       vertex -0.05333333 -5.782412e-19 0.03
+    endloop
+  endfacet
+  facet normal -8.673614e-17 1 0
+    outer loop
+       vertex -0.04666667 0 0.03
+       vertex -0.04666667 0 0.04
+       vertex -0.04 5.782412e-19 0.04
+    endloop
+  endfacet
+  facet normal -8.673614e-17 1 0
+    outer loop
+       vertex -0.04 5.782412e-19 0.04
+       vertex -0.04 5.782412e-19 0.03
+       vertex -0.04666667 0 0.03
+    endloop
+  endfacet
+  facet normal 1.734723e-16 1 -0
+    outer loop
+       vertex -0.04 5.782412e-19 0.03
+       vertex -0.04 5.782412e-19 0.04
+       vertex -0.03333333 -5.782412e-19 0.04
+    endloop
+  endfacet
+  facet normal 1.734723e-16 1 0
+    outer loop
+       vertex -0.03333333 -5.782412e-19 0.04
+       vertex -0.03333333 -5.782412e-19 0.03
+       vertex -0.04 5.782412e-19 0.03
+    endloop
+  endfacet
+  facet normal -1.734725e-16 1 0
+    outer loop
+       vertex -0.03333333 -5.782412e-19 0.03
+       vertex -0.03333333 -5.782412e-19 0.04
+       vertex -0.02666667 5.782412e-19 0.04
+    endloop
+  endfacet
+  facet normal -8.673627e-17 1 -5.782412e-17
+    outer loop
+       vertex -0.02666667 5.782412e-19 0.04
+       vertex -0.02666667 0 0.03
+       vertex -0.03333333 -5.782412e-19 0.03
+    endloop
+  endfacet
+  facet normal 8.673614e-17 1 -5.782412e-17
+    outer loop
+       vertex -0.02666667 0 0.03
+       vertex -0.02666667 5.782412e-19 0.04
+       vertex -0.02 0 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02 0 0.04
+       vertex -0.02 0 0.03
+       vertex -0.02666667 0 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02 0 0.03
+       vertex -0.02 0 0.04
+       vertex -0.01333333 0 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.01333333 0 0.04
+       vertex -0.01333333 0 0.03
+       vertex -0.02 0 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.1 0 0.04
+       vertex -0.1 0 0.05
+       vertex -0.09333333 0 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.09333333 0 0.05
+       vertex -0.09333333 0 0.04
+       vertex -0.1 0 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.09333333 0 0.04
+       vertex -0.09333333 0 0.05
+       vertex -0.08666667 0 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08666667 0 0.05
+       vertex -0.08666667 0 0.04
+       vertex -0.09333333 0 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08666667 0 0.04
+       vertex -0.08666667 0 0.05
+       vertex -0.08 0 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08 0 0.05
+       vertex -0.08 0 0.04
+       vertex -0.08666667 0 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08 0 0.04
+       vertex -0.08 0 0.05
+       vertex -0.07333333 0 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.07333333 0 0.05
+       vertex -0.07333333 0 0.04
+       vertex -0.08 0 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.07333333 0 0.04
+       vertex -0.07333333 0 0.05
+       vertex -0.06666667 0 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06666667 0 0.05
+       vertex -0.06666667 0 0.04
+       vertex -0.07333333 0 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06666667 0 0.04
+       vertex -0.06666667 0 0.05
+       vertex -0.06 0 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06 0 0.05
+       vertex -0.06 0 0.04
+       vertex -0.06666667 0 0.04
+    endloop
+  endfacet
+  facet normal 8.673614e-17 1 -0
+    outer loop
+       vertex -0.06 0 0.04
+       vertex -0.06 0 0.05
+       vertex -0.05333333 -5.782412e-19 0.05
+    endloop
+  endfacet
+  facet normal 8.673614e-17 1 0
+    outer loop
+       vertex -0.05333333 -5.782412e-19 0.05
+       vertex -0.05333333 -5.782412e-19 0.04
+       vertex -0.06 0 0.04
+    endloop
+  endfacet
+  facet normal -8.673627e-17 1 0
+    outer loop
+       vertex -0.05333333 -5.782412e-19 0.04
+       vertex -0.05333333 -5.782412e-19 0.05
+       vertex -0.04666667 0 0.05
+    endloop
+  endfacet
+  facet normal -8.673627e-17 1 0
+    outer loop
+       vertex -0.04666667 0 0.05
+       vertex -0.04666667 0 0.04
+       vertex -0.05333333 -5.782412e-19 0.04
+    endloop
+  endfacet
+  facet normal -8.673614e-17 1 0
+    outer loop
+       vertex -0.04666667 0 0.04
+       vertex -0.04666667 0 0.05
+       vertex -0.04 5.782412e-19 0.05
+    endloop
+  endfacet
+  facet normal -8.673614e-17 1 0
+    outer loop
+       vertex -0.04 5.782412e-19 0.05
+       vertex -0.04 5.782412e-19 0.04
+       vertex -0.04666667 0 0.04
+    endloop
+  endfacet
+  facet normal 1.734723e-16 1 -0
+    outer loop
+       vertex -0.04 5.782412e-19 0.04
+       vertex -0.04 5.782412e-19 0.05
+       vertex -0.03333333 -5.782412e-19 0.05
+    endloop
+  endfacet
+  facet normal 1.734723e-16 1 0
+    outer loop
+       vertex -0.03333333 -5.782412e-19 0.05
+       vertex -0.03333333 -5.782412e-19 0.04
+       vertex -0.04 5.782412e-19 0.04
+    endloop
+  endfacet
+  facet normal -8.673627e-17 1 0
+    outer loop
+       vertex -0.03333333 -5.782412e-19 0.04
+       vertex -0.03333333 -5.782412e-19 0.05
+       vertex -0.02666667 0 0.05
+    endloop
+  endfacet
+  facet normal -1.734725e-16 1 5.782412e-17
+    outer loop
+       vertex -0.02666667 0 0.05
+       vertex -0.02666667 5.782412e-19 0.04
+       vertex -0.03333333 -5.782412e-19 0.04
+    endloop
+  endfacet
+  facet normal 0 1 5.782412e-17
+    outer loop
+       vertex -0.02666667 5.782412e-19 0.04
+       vertex -0.02666667 0 0.05
+       vertex -0.02 0 0.05
+    endloop
+  endfacet
+  facet normal 8.673614e-17 1 0
+    outer loop
+       vertex -0.02 0 0.05
+       vertex -0.02 0 0.04
+       vertex -0.02666667 5.782412e-19 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02 0 0.04
+       vertex -0.02 0 0.05
+       vertex -0.01333333 0 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.01333333 0 0.05
+       vertex -0.01333333 0 0.04
+       vertex -0.02 0 0.04
+    endloop
+  endfacet
+endsolid bottomAir_to_leftSolid
+solid bottomAir_to_heater
+  facet normal 0 1 0
+    outer loop
+       vertex -0.01333333 0 -0.05
+       vertex -0.01333333 0 -0.04
+       vertex -0.006666667 0 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.006666667 0 -0.04
+       vertex -0.006666667 0 -0.05
+       vertex -0.01333333 0 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.006666667 0 -0.05
+       vertex -0.006666667 0 -0.04
+       vertex 0 0 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0 0 -0.04
+       vertex 0 0 -0.05
+       vertex -0.006666667 0 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0 0 -0.05
+       vertex 0 0 -0.04
+       vertex 0.006666667 0 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.006666667 0 -0.04
+       vertex 0.006666667 0 -0.05
+       vertex 0 0 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.006666667 0 -0.05
+       vertex 0.006666667 0 -0.04
+       vertex 0.01333333 0 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.01333333 0 -0.04
+       vertex 0.01333333 0 -0.05
+       vertex 0.006666667 0 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.01333333 0 -0.04
+       vertex -0.01333333 0 -0.03
+       vertex -0.006666667 0 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.006666667 0 -0.03
+       vertex -0.006666667 0 -0.04
+       vertex -0.01333333 0 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.006666667 0 -0.04
+       vertex -0.006666667 0 -0.03
+       vertex 0 0 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0 0 -0.03
+       vertex 0 0 -0.04
+       vertex -0.006666667 0 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0 0 -0.04
+       vertex 0 0 -0.03
+       vertex 0.006666667 0 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.006666667 0 -0.03
+       vertex 0.006666667 0 -0.04
+       vertex 0 0 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.006666667 0 -0.04
+       vertex 0.006666667 0 -0.03
+       vertex 0.01333333 0 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.01333333 0 -0.03
+       vertex 0.01333333 0 -0.04
+       vertex 0.006666667 0 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.01333333 0 -0.03
+       vertex -0.01333333 0 -0.02
+       vertex -0.006666667 0 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.006666667 0 -0.02
+       vertex -0.006666667 0 -0.03
+       vertex -0.01333333 0 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.006666667 0 -0.03
+       vertex -0.006666667 0 -0.02
+       vertex 0 0 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0 0 -0.02
+       vertex 0 0 -0.03
+       vertex -0.006666667 0 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0 0 -0.03
+       vertex 0 0 -0.02
+       vertex 0.006666667 0 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.006666667 0 -0.02
+       vertex 0.006666667 0 -0.03
+       vertex 0 0 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.006666667 0 -0.03
+       vertex 0.006666667 0 -0.02
+       vertex 0.01333333 0 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.01333333 0 -0.02
+       vertex 0.01333333 0 -0.03
+       vertex 0.006666667 0 -0.03
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.01333333 -0.04 -0.01
+       vertex -0.006666667 -0.04 -0.01
+       vertex -0.006666667 -0.032 -0.01
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.006666667 -0.032 -0.01
+       vertex -0.01333333 -0.032 -0.01
+       vertex -0.01333333 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.006666667 -0.04 -0.01
+       vertex 0 -0.04 -0.01
+       vertex 0 -0.032 -0.01
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0 -0.032 -0.01
+       vertex -0.006666667 -0.032 -0.01
+       vertex -0.006666667 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0 -0.04 -0.01
+       vertex 0.006666667 -0.04 -0.01
+       vertex 0.006666667 -0.032 -0.01
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.006666667 -0.032 -0.01
+       vertex 0 -0.032 -0.01
+       vertex 0 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.006666667 -0.04 -0.01
+       vertex 0.01333333 -0.04 -0.01
+       vertex 0.01333333 -0.032 -0.01
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.01333333 -0.032 -0.01
+       vertex 0.006666667 -0.032 -0.01
+       vertex 0.006666667 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.01333333 -0.032 -0.01
+       vertex -0.006666667 -0.032 -0.01
+       vertex -0.006666667 -0.024 -0.01
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.006666667 -0.024 -0.01
+       vertex -0.01333333 -0.024 -0.01
+       vertex -0.01333333 -0.032 -0.01
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.006666667 -0.032 -0.01
+       vertex 0 -0.032 -0.01
+       vertex 0 -0.024 -0.01
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0 -0.024 -0.01
+       vertex -0.006666667 -0.024 -0.01
+       vertex -0.006666667 -0.032 -0.01
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0 -0.032 -0.01
+       vertex 0.006666667 -0.032 -0.01
+       vertex 0.006666667 -0.024 -0.01
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.006666667 -0.024 -0.01
+       vertex 0 -0.024 -0.01
+       vertex 0 -0.032 -0.01
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.006666667 -0.032 -0.01
+       vertex 0.01333333 -0.032 -0.01
+       vertex 0.01333333 -0.024 -0.01
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.01333333 -0.024 -0.01
+       vertex 0.006666667 -0.024 -0.01
+       vertex 0.006666667 -0.032 -0.01
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.01333333 -0.024 -0.01
+       vertex -0.006666667 -0.024 -0.01
+       vertex -0.006666667 -0.016 -0.01
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.006666667 -0.016 -0.01
+       vertex -0.01333333 -0.016 -0.01
+       vertex -0.01333333 -0.024 -0.01
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.006666667 -0.024 -0.01
+       vertex 0 -0.024 -0.01
+       vertex 0 -0.016 -0.01
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0 -0.016 -0.01
+       vertex -0.006666667 -0.016 -0.01
+       vertex -0.006666667 -0.024 -0.01
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0 -0.024 -0.01
+       vertex 0.006666667 -0.024 -0.01
+       vertex 0.006666667 -0.016 -0.01
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.006666667 -0.016 -0.01
+       vertex 0 -0.016 -0.01
+       vertex 0 -0.024 -0.01
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.006666667 -0.024 -0.01
+       vertex 0.01333333 -0.024 -0.01
+       vertex 0.01333333 -0.016 -0.01
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.01333333 -0.016 -0.01
+       vertex 0.006666667 -0.016 -0.01
+       vertex 0.006666667 -0.024 -0.01
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.01333333 -0.016 -0.01
+       vertex -0.006666667 -0.016 -0.01
+       vertex -0.006666667 -0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.006666667 -0.008 -0.01
+       vertex -0.01333333 -0.008 -0.01
+       vertex -0.01333333 -0.016 -0.01
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.006666667 -0.016 -0.01
+       vertex 0 -0.016 -0.01
+       vertex 0 -0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0 -0.008 -0.01
+       vertex -0.006666667 -0.008 -0.01
+       vertex -0.006666667 -0.016 -0.01
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0 -0.016 -0.01
+       vertex 0.006666667 -0.016 -0.01
+       vertex 0.006666667 -0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.006666667 -0.008 -0.01
+       vertex 0 -0.008 -0.01
+       vertex 0 -0.016 -0.01
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.006666667 -0.016 -0.01
+       vertex 0.01333333 -0.016 -0.01
+       vertex 0.01333333 -0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.01333333 -0.008 -0.01
+       vertex 0.006666667 -0.008 -0.01
+       vertex 0.006666667 -0.016 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.01333333 0 -0.02
+       vertex -0.01333333 0 -0.01
+       vertex -0.006666667 0 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.006666667 0 -0.01
+       vertex -0.006666667 0 -0.02
+       vertex -0.01333333 0 -0.02
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.01333333 -0.008 -0.01
+       vertex -0.006666667 -0.008 -0.01
+       vertex -0.006666667 0 -0.01
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.006666667 0 -0.01
+       vertex -0.01333333 0 -0.01
+       vertex -0.01333333 -0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.006666667 0 -0.02
+       vertex -0.006666667 0 -0.01
+       vertex 0 0 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0 0 -0.01
+       vertex 0 0 -0.02
+       vertex -0.006666667 0 -0.02
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.006666667 -0.008 -0.01
+       vertex 0 -0.008 -0.01
+       vertex 0 0 -0.01
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0 0 -0.01
+       vertex -0.006666667 0 -0.01
+       vertex -0.006666667 -0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0 0 -0.02
+       vertex 0 0 -0.01
+       vertex 0.006666667 0 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.006666667 0 -0.01
+       vertex 0.006666667 0 -0.02
+       vertex 0 0 -0.02
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0 -0.008 -0.01
+       vertex 0.006666667 -0.008 -0.01
+       vertex 0.006666667 0 -0.01
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.006666667 0 -0.01
+       vertex 0 0 -0.01
+       vertex 0 -0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.006666667 0 -0.02
+       vertex 0.006666667 0 -0.01
+       vertex 0.01333333 0 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.01333333 0 -0.01
+       vertex 0.01333333 0 -0.02
+       vertex 0.006666667 0 -0.02
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.006666667 -0.008 -0.01
+       vertex 0.01333333 -0.008 -0.01
+       vertex 0.01333333 0 -0.01
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.01333333 0 -0.01
+       vertex 0.006666667 0 -0.01
+       vertex 0.006666667 -0.008 -0.01
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex -0.01333333 -0.04 -0.01
+       vertex -0.01333333 -0.032 -0.01
+       vertex -0.01333333 -0.032 1.156482e-18
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex -0.01333333 -0.032 1.156482e-18
+       vertex -0.01333333 -0.04 0
+       vertex -0.01333333 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex 0.01333333 -0.04 -0.01
+       vertex 0.01333333 -0.04 0
+       vertex 0.01333333 -0.032 1.156482e-18
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex 0.01333333 -0.032 1.156482e-18
+       vertex 0.01333333 -0.032 -0.01
+       vertex 0.01333333 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex -0.01333333 -0.032 -0.01
+       vertex -0.01333333 -0.024 -0.01
+       vertex -0.01333333 -0.024 0
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex -0.01333333 -0.024 0
+       vertex -0.01333333 -0.032 1.156482e-18
+       vertex -0.01333333 -0.032 -0.01
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex 0.01333333 -0.032 -0.01
+       vertex 0.01333333 -0.032 1.156482e-18
+       vertex 0.01333333 -0.024 0
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex 0.01333333 -0.024 0
+       vertex 0.01333333 -0.024 -0.01
+       vertex 0.01333333 -0.032 -0.01
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex -0.01333333 -0.024 -0.01
+       vertex -0.01333333 -0.016 -0.01
+       vertex -0.01333333 -0.016 -1.156482e-18
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex -0.01333333 -0.016 -1.156482e-18
+       vertex -0.01333333 -0.024 0
+       vertex -0.01333333 -0.024 -0.01
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex 0.01333333 -0.024 -0.01
+       vertex 0.01333333 -0.024 0
+       vertex 0.01333333 -0.016 -1.156482e-18
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex 0.01333333 -0.016 -1.156482e-18
+       vertex 0.01333333 -0.016 -0.01
+       vertex 0.01333333 -0.024 -0.01
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex -0.01333333 -0.016 -0.01
+       vertex -0.01333333 -0.008 -0.01
+       vertex -0.01333333 -0.008 0
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex -0.01333333 -0.008 0
+       vertex -0.01333333 -0.016 -1.156482e-18
+       vertex -0.01333333 -0.016 -0.01
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex 0.01333333 -0.016 -0.01
+       vertex 0.01333333 -0.016 -1.156482e-18
+       vertex 0.01333333 -0.008 0
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex 0.01333333 -0.008 0
+       vertex 0.01333333 -0.008 -0.01
+       vertex 0.01333333 -0.016 -0.01
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex -0.01333333 -0.008 -0.01
+       vertex -0.01333333 0 -0.01
+       vertex -0.01333333 0 0
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex -0.01333333 0 0
+       vertex -0.01333333 -0.008 0
+       vertex -0.01333333 -0.008 -0.01
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex 0.01333333 -0.008 -0.01
+       vertex 0.01333333 -0.008 0
+       vertex 0.01333333 0 0
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex 0.01333333 0 0
+       vertex 0.01333333 0 -0.01
+       vertex 0.01333333 -0.008 -0.01
+    endloop
+  endfacet
+  facet normal 1 0 -0
+    outer loop
+       vertex -0.01333333 -0.032 1.156482e-18
+       vertex -0.01333333 -0.032 0.01
+       vertex -0.01333333 -0.04 0.01
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex -0.01333333 -0.04 0.01
+       vertex -0.01333333 -0.04 0
+       vertex -0.01333333 -0.032 1.156482e-18
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.01333333 -0.04 0.01
+       vertex -0.01333333 -0.032 0.01
+       vertex -0.006666667 -0.032 0.01
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.006666667 -0.032 0.01
+       vertex -0.006666667 -0.04 0.01
+       vertex -0.01333333 -0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.006666667 -0.04 0.01
+       vertex -0.006666667 -0.032 0.01
+       vertex 0 -0.032 0.01
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0 -0.032 0.01
+       vertex 0 -0.04 0.01
+       vertex -0.006666667 -0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0 -0.04 0.01
+       vertex 0 -0.032 0.01
+       vertex 0.006666667 -0.032 0.01
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.006666667 -0.032 0.01
+       vertex 0.006666667 -0.04 0.01
+       vertex 0 -0.04 0.01
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex 0.01333333 -0.04 0.01
+       vertex 0.01333333 -0.032 0.01
+       vertex 0.01333333 -0.032 1.156482e-18
+    endloop
+  endfacet
+  facet normal -1 -0 0
+    outer loop
+       vertex 0.01333333 -0.032 1.156482e-18
+       vertex 0.01333333 -0.04 0
+       vertex 0.01333333 -0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.006666667 -0.04 0.01
+       vertex 0.006666667 -0.032 0.01
+       vertex 0.01333333 -0.032 0.01
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.01333333 -0.032 0.01
+       vertex 0.01333333 -0.04 0.01
+       vertex 0.006666667 -0.04 0.01
+    endloop
+  endfacet
+  facet normal 1 -0 0
+    outer loop
+       vertex -0.01333333 -0.032 1.156482e-18
+       vertex -0.01333333 -0.024 0
+       vertex -0.01333333 -0.024 0.01
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex -0.01333333 -0.024 0.01
+       vertex -0.01333333 -0.032 0.01
+       vertex -0.01333333 -0.032 1.156482e-18
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.01333333 -0.032 0.01
+       vertex -0.01333333 -0.024 0.01
+       vertex -0.006666667 -0.024 0.01
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.006666667 -0.024 0.01
+       vertex -0.006666667 -0.032 0.01
+       vertex -0.01333333 -0.032 0.01
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.006666667 -0.032 0.01
+       vertex -0.006666667 -0.024 0.01
+       vertex 0 -0.024 0.01
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0 -0.024 0.01
+       vertex 0 -0.032 0.01
+       vertex -0.006666667 -0.032 0.01
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0 -0.032 0.01
+       vertex 0 -0.024 0.01
+       vertex 0.006666667 -0.024 0.01
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.006666667 -0.024 0.01
+       vertex 0.006666667 -0.032 0.01
+       vertex 0 -0.032 0.01
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex 0.01333333 -0.032 1.156482e-18
+       vertex 0.01333333 -0.032 0.01
+       vertex 0.01333333 -0.024 0.01
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex 0.01333333 -0.024 0.01
+       vertex 0.01333333 -0.024 0
+       vertex 0.01333333 -0.032 1.156482e-18
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.006666667 -0.032 0.01
+       vertex 0.006666667 -0.024 0.01
+       vertex 0.01333333 -0.024 0.01
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.01333333 -0.024 0.01
+       vertex 0.01333333 -0.032 0.01
+       vertex 0.006666667 -0.032 0.01
+    endloop
+  endfacet
+  facet normal 1 -0 0
+    outer loop
+       vertex -0.01333333 -0.024 0
+       vertex -0.01333333 -0.016 -1.156482e-18
+       vertex -0.01333333 -0.016 0.01
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex -0.01333333 -0.016 0.01
+       vertex -0.01333333 -0.024 0.01
+       vertex -0.01333333 -0.024 0
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.01333333 -0.024 0.01
+       vertex -0.01333333 -0.016 0.01
+       vertex -0.006666667 -0.016 0.01
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.006666667 -0.016 0.01
+       vertex -0.006666667 -0.024 0.01
+       vertex -0.01333333 -0.024 0.01
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.006666667 -0.024 0.01
+       vertex -0.006666667 -0.016 0.01
+       vertex 0 -0.016 0.01
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0 -0.016 0.01
+       vertex 0 -0.024 0.01
+       vertex -0.006666667 -0.024 0.01
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0 -0.024 0.01
+       vertex 0 -0.016 0.01
+       vertex 0.006666667 -0.016 0.01
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.006666667 -0.016 0.01
+       vertex 0.006666667 -0.024 0.01
+       vertex 0 -0.024 0.01
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex 0.01333333 -0.024 0
+       vertex 0.01333333 -0.024 0.01
+       vertex 0.01333333 -0.016 0.01
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex 0.01333333 -0.016 0.01
+       vertex 0.01333333 -0.016 -1.156482e-18
+       vertex 0.01333333 -0.024 0
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.006666667 -0.024 0.01
+       vertex 0.006666667 -0.016 0.01
+       vertex 0.01333333 -0.016 0.01
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.01333333 -0.016 0.01
+       vertex 0.01333333 -0.024 0.01
+       vertex 0.006666667 -0.024 0.01
+    endloop
+  endfacet
+  facet normal 1 0 -0
+    outer loop
+       vertex -0.01333333 -0.008 0
+       vertex -0.01333333 -0.008 0.01
+       vertex -0.01333333 -0.016 0.01
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex -0.01333333 -0.016 0.01
+       vertex -0.01333333 -0.016 -1.156482e-18
+       vertex -0.01333333 -0.008 0
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.01333333 -0.016 0.01
+       vertex -0.01333333 -0.008 0.01
+       vertex -0.006666667 -0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.006666667 -0.008 0.01
+       vertex -0.006666667 -0.016 0.01
+       vertex -0.01333333 -0.016 0.01
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.006666667 -0.016 0.01
+       vertex -0.006666667 -0.008 0.01
+       vertex 0 -0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0 -0.008 0.01
+       vertex 0 -0.016 0.01
+       vertex -0.006666667 -0.016 0.01
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0 -0.016 0.01
+       vertex 0 -0.008 0.01
+       vertex 0.006666667 -0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.006666667 -0.008 0.01
+       vertex 0.006666667 -0.016 0.01
+       vertex 0 -0.016 0.01
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex 0.01333333 -0.016 0.01
+       vertex 0.01333333 -0.008 0.01
+       vertex 0.01333333 -0.008 0
+    endloop
+  endfacet
+  facet normal -1 -0 0
+    outer loop
+       vertex 0.01333333 -0.008 0
+       vertex 0.01333333 -0.016 -1.156482e-18
+       vertex 0.01333333 -0.016 0.01
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.006666667 -0.016 0.01
+       vertex 0.006666667 -0.008 0.01
+       vertex 0.01333333 -0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.01333333 -0.008 0.01
+       vertex 0.01333333 -0.016 0.01
+       vertex 0.006666667 -0.016 0.01
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex -0.01333333 -0.008 0
+       vertex -0.01333333 0 0
+       vertex -0.01333333 0 0.01
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex -0.01333333 0 0.01
+       vertex -0.01333333 -0.008 0.01
+       vertex -0.01333333 -0.008 0
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.01333333 -0.008 0.01
+       vertex -0.01333333 0 0.01
+       vertex -0.006666667 0 0.01
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.006666667 0 0.01
+       vertex -0.006666667 -0.008 0.01
+       vertex -0.01333333 -0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.006666667 -0.008 0.01
+       vertex -0.006666667 0 0.01
+       vertex 0 0 0.01
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0 0 0.01
+       vertex 0 -0.008 0.01
+       vertex -0.006666667 -0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0 -0.008 0.01
+       vertex 0 0 0.01
+       vertex 0.006666667 0 0.01
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.006666667 0 0.01
+       vertex 0.006666667 -0.008 0.01
+       vertex 0 -0.008 0.01
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex 0.01333333 -0.008 0
+       vertex 0.01333333 -0.008 0.01
+       vertex 0.01333333 0 0.01
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex 0.01333333 0 0.01
+       vertex 0.01333333 0 0
+       vertex 0.01333333 -0.008 0
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.006666667 -0.008 0.01
+       vertex 0.006666667 0 0.01
+       vertex 0.01333333 0 0.01
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.01333333 0 0.01
+       vertex 0.01333333 -0.008 0.01
+       vertex 0.006666667 -0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.01333333 0 0.01
+       vertex -0.01333333 0 0.02
+       vertex -0.006666667 0 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.006666667 0 0.02
+       vertex -0.006666667 0 0.01
+       vertex -0.01333333 0 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.006666667 0 0.01
+       vertex -0.006666667 0 0.02
+       vertex 0 0 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0 0 0.02
+       vertex 0 0 0.01
+       vertex -0.006666667 0 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0 0 0.01
+       vertex 0 0 0.02
+       vertex 0.006666667 0 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.006666667 0 0.02
+       vertex 0.006666667 0 0.01
+       vertex 0 0 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.006666667 0 0.01
+       vertex 0.006666667 0 0.02
+       vertex 0.01333333 0 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.01333333 0 0.02
+       vertex 0.01333333 0 0.01
+       vertex 0.006666667 0 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.01333333 0 0.02
+       vertex -0.01333333 0 0.03
+       vertex -0.006666667 0 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.006666667 0 0.03
+       vertex -0.006666667 0 0.02
+       vertex -0.01333333 0 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.006666667 0 0.02
+       vertex -0.006666667 0 0.03
+       vertex 0 0 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0 0 0.03
+       vertex 0 0 0.02
+       vertex -0.006666667 0 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0 0 0.02
+       vertex 0 0 0.03
+       vertex 0.006666667 0 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.006666667 0 0.03
+       vertex 0.006666667 0 0.02
+       vertex 0 0 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.006666667 0 0.02
+       vertex 0.006666667 0 0.03
+       vertex 0.01333333 0 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.01333333 0 0.03
+       vertex 0.01333333 0 0.02
+       vertex 0.006666667 0 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.01333333 0 0.03
+       vertex -0.01333333 0 0.04
+       vertex -0.006666667 0 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.006666667 0 0.04
+       vertex -0.006666667 0 0.03
+       vertex -0.01333333 0 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.006666667 0 0.03
+       vertex -0.006666667 0 0.04
+       vertex 0 0 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0 0 0.04
+       vertex 0 0 0.03
+       vertex -0.006666667 0 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0 0 0.03
+       vertex 0 0 0.04
+       vertex 0.006666667 0 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.006666667 0 0.04
+       vertex 0.006666667 0 0.03
+       vertex 0 0 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.006666667 0 0.03
+       vertex 0.006666667 0 0.04
+       vertex 0.01333333 0 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.01333333 0 0.04
+       vertex 0.01333333 0 0.03
+       vertex 0.006666667 0 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.01333333 0 0.04
+       vertex -0.01333333 0 0.05
+       vertex -0.006666667 0 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.006666667 0 0.05
+       vertex -0.006666667 0 0.04
+       vertex -0.01333333 0 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.006666667 0 0.04
+       vertex -0.006666667 0 0.05
+       vertex 0 0 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0 0 0.05
+       vertex 0 0 0.04
+       vertex -0.006666667 0 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0 0 0.04
+       vertex 0 0 0.05
+       vertex 0.006666667 0 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.006666667 0 0.05
+       vertex 0.006666667 0 0.04
+       vertex 0 0 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.006666667 0 0.04
+       vertex 0.006666667 0 0.05
+       vertex 0.01333333 0 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.01333333 0 0.05
+       vertex 0.01333333 0 0.04
+       vertex 0.006666667 0 0.04
+    endloop
+  endfacet
+endsolid bottomAir_to_heater
diff --git a/tutorials/mesh/snappyHexMesh/multiRegionMesh/constant/triSurface/heater.stl b/tutorials/mesh/snappyHexMesh/multiRegionMesh/constant/triSurface/heater.stl
new file mode 100644
index 0000000000000000000000000000000000000000..a9b98f11f2d6fdfa038bab142d4a99ef2df0d11c
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/multiRegionMesh/constant/triSurface/heater.stl
@@ -0,0 +1,2366 @@
+solid minY
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.01333333 -0.04 -0.01
+       vertex -0.006666667 -0.04 -0.01
+       vertex -0.006666667 -0.04 0
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.006666667 -0.04 0
+       vertex -0.01333333 -0.04 0
+       vertex -0.01333333 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.01333333 -0.04 0
+       vertex -0.006666667 -0.04 0
+       vertex -0.006666667 -0.04 0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.006666667 -0.04 0.01
+       vertex -0.01333333 -0.04 0.01
+       vertex -0.01333333 -0.04 0
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.006666667 -0.04 -0.01
+       vertex 0 -0.04 -0.01
+       vertex 0 -0.04 0
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0 -0.04 0
+       vertex -0.006666667 -0.04 0
+       vertex -0.006666667 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.006666667 -0.04 0
+       vertex 0 -0.04 0
+       vertex 0 -0.04 0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0 -0.04 0.01
+       vertex -0.006666667 -0.04 0.01
+       vertex -0.006666667 -0.04 0
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0 -0.04 -0.01
+       vertex 0.006666667 -0.04 -0.01
+       vertex 0.006666667 -0.04 0
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.006666667 -0.04 0
+       vertex 0 -0.04 0
+       vertex 0 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0 -0.04 0
+       vertex 0.006666667 -0.04 0
+       vertex 0.006666667 -0.04 0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.006666667 -0.04 0.01
+       vertex 0 -0.04 0.01
+       vertex 0 -0.04 0
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.006666667 -0.04 -0.01
+       vertex 0.01333333 -0.04 -0.01
+       vertex 0.01333333 -0.04 0
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.01333333 -0.04 0
+       vertex 0.006666667 -0.04 0
+       vertex 0.006666667 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.006666667 -0.04 0
+       vertex 0.01333333 -0.04 0
+       vertex 0.01333333 -0.04 0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.01333333 -0.04 0.01
+       vertex 0.006666667 -0.04 0.01
+       vertex 0.006666667 -0.04 0
+    endloop
+  endfacet
+endsolid minY
+solid minZ
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.01333333 0 -0.05
+       vertex -0.01333333 0.008 -0.05
+       vertex -0.006666667 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.006666667 0.008 -0.05
+       vertex -0.006666667 0 -0.05
+       vertex -0.01333333 0 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.006666667 0 -0.05
+       vertex -0.006666667 0.008 -0.05
+       vertex 0 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0 0.008 -0.05
+       vertex 0 0 -0.05
+       vertex -0.006666667 0 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0 0 -0.05
+       vertex 0 0.008 -0.05
+       vertex 0.006666667 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.006666667 0.008 -0.05
+       vertex 0.006666667 0 -0.05
+       vertex 0 0 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.006666667 0 -0.05
+       vertex 0.006666667 0.008 -0.05
+       vertex 0.01333333 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.01333333 0.008 -0.05
+       vertex 0.01333333 0 -0.05
+       vertex 0.006666667 0 -0.05
+    endloop
+  endfacet
+endsolid minZ
+solid maxZ
+  facet normal 0 0 1
+    outer loop
+       vertex -0.01333333 0 0.05
+       vertex -0.006666667 0 0.05
+       vertex -0.006666667 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.006666667 0.008 0.05
+       vertex -0.01333333 0.008 0.05
+       vertex -0.01333333 0 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.006666667 0 0.05
+       vertex 0 0 0.05
+       vertex 0 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0 0.008 0.05
+       vertex -0.006666667 0.008 0.05
+       vertex -0.006666667 0 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0 0 0.05
+       vertex 0.006666667 0 0.05
+       vertex 0.006666667 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.006666667 0.008 0.05
+       vertex 0 0.008 0.05
+       vertex 0 0 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.006666667 0 0.05
+       vertex 0.01333333 0 0.05
+       vertex 0.01333333 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.01333333 0.008 0.05
+       vertex 0.006666667 0.008 0.05
+       vertex 0.006666667 0 0.05
+    endloop
+  endfacet
+endsolid maxZ
+solid heater_to_topAir
+  facet normal 0 1 0
+    outer loop
+       vertex -0.01333333 0.008 -0.05
+       vertex -0.01333333 0.008 -0.04
+       vertex -0.006666667 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.006666667 0.008 -0.04
+       vertex -0.006666667 0.008 -0.05
+       vertex -0.01333333 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.006666667 0.008 -0.05
+       vertex -0.006666667 0.008 -0.04
+       vertex 0 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0 0.008 -0.04
+       vertex 0 0.008 -0.05
+       vertex -0.006666667 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0 0.008 -0.05
+       vertex 0 0.008 -0.04
+       vertex 0.006666667 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.006666667 0.008 -0.04
+       vertex 0.006666667 0.008 -0.05
+       vertex 0 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.006666667 0.008 -0.05
+       vertex 0.006666667 0.008 -0.04
+       vertex 0.01333333 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.01333333 0.008 -0.04
+       vertex 0.01333333 0.008 -0.05
+       vertex 0.006666667 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.01333333 0.008 -0.04
+       vertex -0.01333333 0.008 -0.03
+       vertex -0.006666667 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.006666667 0.008 -0.03
+       vertex -0.006666667 0.008 -0.04
+       vertex -0.01333333 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.006666667 0.008 -0.04
+       vertex -0.006666667 0.008 -0.03
+       vertex 0 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0 0.008 -0.03
+       vertex 0 0.008 -0.04
+       vertex -0.006666667 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0 0.008 -0.04
+       vertex 0 0.008 -0.03
+       vertex 0.006666667 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.006666667 0.008 -0.03
+       vertex 0.006666667 0.008 -0.04
+       vertex 0 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.006666667 0.008 -0.04
+       vertex 0.006666667 0.008 -0.03
+       vertex 0.01333333 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.01333333 0.008 -0.03
+       vertex 0.01333333 0.008 -0.04
+       vertex 0.006666667 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.01333333 0.008 -0.03
+       vertex -0.01333333 0.008 -0.02
+       vertex -0.006666667 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.006666667 0.008 -0.02
+       vertex -0.006666667 0.008 -0.03
+       vertex -0.01333333 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.006666667 0.008 -0.03
+       vertex -0.006666667 0.008 -0.02
+       vertex 0 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0 0.008 -0.02
+       vertex 0 0.008 -0.03
+       vertex -0.006666667 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0 0.008 -0.03
+       vertex 0 0.008 -0.02
+       vertex 0.006666667 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.006666667 0.008 -0.02
+       vertex 0.006666667 0.008 -0.03
+       vertex 0 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.006666667 0.008 -0.03
+       vertex 0.006666667 0.008 -0.02
+       vertex 0.01333333 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.01333333 0.008 -0.02
+       vertex 0.01333333 0.008 -0.03
+       vertex 0.006666667 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.01333333 0.008 -0.02
+       vertex -0.01333333 0.008 -0.01
+       vertex -0.006666667 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.006666667 0.008 -0.01
+       vertex -0.006666667 0.008 -0.02
+       vertex -0.01333333 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.006666667 0.008 -0.02
+       vertex -0.006666667 0.008 -0.01
+       vertex 0 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0 0.008 -0.01
+       vertex 0 0.008 -0.02
+       vertex -0.006666667 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0 0.008 -0.02
+       vertex 0 0.008 -0.01
+       vertex 0.006666667 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.006666667 0.008 -0.01
+       vertex 0.006666667 0.008 -0.02
+       vertex 0 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.006666667 0.008 -0.02
+       vertex 0.006666667 0.008 -0.01
+       vertex 0.01333333 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.01333333 0.008 -0.01
+       vertex 0.01333333 0.008 -0.02
+       vertex 0.006666667 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.01333333 0.008 -0.01
+       vertex -0.01333333 0.008 0
+       vertex -0.006666667 0.008 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.006666667 0.008 0
+       vertex -0.006666667 0.008 -0.01
+       vertex -0.01333333 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.006666667 0.008 -0.01
+       vertex -0.006666667 0.008 0
+       vertex 0 0.008 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0 0.008 0
+       vertex 0 0.008 -0.01
+       vertex -0.006666667 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0 0.008 -0.01
+       vertex 0 0.008 0
+       vertex 0.006666667 0.008 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.006666667 0.008 0
+       vertex 0.006666667 0.008 -0.01
+       vertex 0 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.006666667 0.008 -0.01
+       vertex 0.006666667 0.008 0
+       vertex 0.01333333 0.008 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.01333333 0.008 0
+       vertex 0.01333333 0.008 -0.01
+       vertex 0.006666667 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.01333333 0.008 0
+       vertex -0.01333333 0.008 0.01
+       vertex -0.006666667 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.006666667 0.008 0.01
+       vertex -0.006666667 0.008 0
+       vertex -0.01333333 0.008 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.006666667 0.008 0
+       vertex -0.006666667 0.008 0.01
+       vertex 0 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0 0.008 0.01
+       vertex 0 0.008 0
+       vertex -0.006666667 0.008 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0 0.008 0
+       vertex 0 0.008 0.01
+       vertex 0.006666667 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.006666667 0.008 0.01
+       vertex 0.006666667 0.008 0
+       vertex 0 0.008 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.006666667 0.008 0
+       vertex 0.006666667 0.008 0.01
+       vertex 0.01333333 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.01333333 0.008 0.01
+       vertex 0.01333333 0.008 0
+       vertex 0.006666667 0.008 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.01333333 0.008 0.01
+       vertex -0.01333333 0.008 0.02
+       vertex -0.006666667 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.006666667 0.008 0.02
+       vertex -0.006666667 0.008 0.01
+       vertex -0.01333333 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.006666667 0.008 0.01
+       vertex -0.006666667 0.008 0.02
+       vertex 0 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0 0.008 0.02
+       vertex 0 0.008 0.01
+       vertex -0.006666667 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0 0.008 0.01
+       vertex 0 0.008 0.02
+       vertex 0.006666667 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.006666667 0.008 0.02
+       vertex 0.006666667 0.008 0.01
+       vertex 0 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.006666667 0.008 0.01
+       vertex 0.006666667 0.008 0.02
+       vertex 0.01333333 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.01333333 0.008 0.02
+       vertex 0.01333333 0.008 0.01
+       vertex 0.006666667 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.01333333 0.008 0.02
+       vertex -0.01333333 0.008 0.03
+       vertex -0.006666667 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.006666667 0.008 0.03
+       vertex -0.006666667 0.008 0.02
+       vertex -0.01333333 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.006666667 0.008 0.02
+       vertex -0.006666667 0.008 0.03
+       vertex 0 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0 0.008 0.03
+       vertex 0 0.008 0.02
+       vertex -0.006666667 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0 0.008 0.02
+       vertex 0 0.008 0.03
+       vertex 0.006666667 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.006666667 0.008 0.03
+       vertex 0.006666667 0.008 0.02
+       vertex 0 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.006666667 0.008 0.02
+       vertex 0.006666667 0.008 0.03
+       vertex 0.01333333 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.01333333 0.008 0.03
+       vertex 0.01333333 0.008 0.02
+       vertex 0.006666667 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.01333333 0.008 0.03
+       vertex -0.01333333 0.008 0.04
+       vertex -0.006666667 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.006666667 0.008 0.04
+       vertex -0.006666667 0.008 0.03
+       vertex -0.01333333 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.006666667 0.008 0.03
+       vertex -0.006666667 0.008 0.04
+       vertex 0 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0 0.008 0.04
+       vertex 0 0.008 0.03
+       vertex -0.006666667 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0 0.008 0.03
+       vertex 0 0.008 0.04
+       vertex 0.006666667 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.006666667 0.008 0.04
+       vertex 0.006666667 0.008 0.03
+       vertex 0 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.006666667 0.008 0.03
+       vertex 0.006666667 0.008 0.04
+       vertex 0.01333333 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.01333333 0.008 0.04
+       vertex 0.01333333 0.008 0.03
+       vertex 0.006666667 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.01333333 0.008 0.04
+       vertex -0.01333333 0.008 0.05
+       vertex -0.006666667 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.006666667 0.008 0.05
+       vertex -0.006666667 0.008 0.04
+       vertex -0.01333333 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.006666667 0.008 0.04
+       vertex -0.006666667 0.008 0.05
+       vertex 0 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0 0.008 0.05
+       vertex 0 0.008 0.04
+       vertex -0.006666667 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0 0.008 0.04
+       vertex 0 0.008 0.05
+       vertex 0.006666667 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.006666667 0.008 0.05
+       vertex 0.006666667 0.008 0.04
+       vertex 0 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.006666667 0.008 0.04
+       vertex 0.006666667 0.008 0.05
+       vertex 0.01333333 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.01333333 0.008 0.05
+       vertex 0.01333333 0.008 0.04
+       vertex 0.006666667 0.008 0.04
+    endloop
+  endfacet
+endsolid heater_to_topAir
+solid heater_to_rightSolid
+  facet normal 1 0 0
+    outer loop
+       vertex 0.01333333 0 -0.05
+       vertex 0.01333333 0.008 -0.05
+       vertex 0.01333333 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.01333333 0.008 -0.04
+       vertex 0.01333333 0 -0.04
+       vertex 0.01333333 0 -0.05
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.01333333 0 -0.04
+       vertex 0.01333333 0.008 -0.04
+       vertex 0.01333333 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.01333333 0.008 -0.03
+       vertex 0.01333333 0 -0.03
+       vertex 0.01333333 0 -0.04
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.01333333 0 -0.03
+       vertex 0.01333333 0.008 -0.03
+       vertex 0.01333333 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.01333333 0.008 -0.02
+       vertex 0.01333333 0 -0.02
+       vertex 0.01333333 0 -0.03
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.01333333 0 -0.02
+       vertex 0.01333333 0.008 -0.02
+       vertex 0.01333333 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.01333333 0.008 -0.01
+       vertex 0.01333333 0 -0.01
+       vertex 0.01333333 0 -0.02
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.01333333 0 -0.01
+       vertex 0.01333333 0.008 -0.01
+       vertex 0.01333333 0.008 0
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.01333333 0.008 0
+       vertex 0.01333333 0 0
+       vertex 0.01333333 0 -0.01
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.01333333 0 0
+       vertex 0.01333333 0.008 0
+       vertex 0.01333333 0.008 0.01
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.01333333 0.008 0.01
+       vertex 0.01333333 0 0.01
+       vertex 0.01333333 0 0
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.01333333 0 0.01
+       vertex 0.01333333 0.008 0.01
+       vertex 0.01333333 0.008 0.02
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.01333333 0.008 0.02
+       vertex 0.01333333 0 0.02
+       vertex 0.01333333 0 0.01
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.01333333 0 0.02
+       vertex 0.01333333 0.008 0.02
+       vertex 0.01333333 0.008 0.03
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.01333333 0.008 0.03
+       vertex 0.01333333 0 0.03
+       vertex 0.01333333 0 0.02
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.01333333 0 0.03
+       vertex 0.01333333 0.008 0.03
+       vertex 0.01333333 0.008 0.04
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.01333333 0.008 0.04
+       vertex 0.01333333 0 0.04
+       vertex 0.01333333 0 0.03
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.01333333 0 0.04
+       vertex 0.01333333 0.008 0.04
+       vertex 0.01333333 0.008 0.05
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.01333333 0.008 0.05
+       vertex 0.01333333 0 0.05
+       vertex 0.01333333 0 0.04
+    endloop
+  endfacet
+endsolid heater_to_rightSolid
+solid heater_to_leftSolid
+  facet normal -1 0 0
+    outer loop
+       vertex -0.01333333 0 -0.05
+       vertex -0.01333333 0 -0.04
+       vertex -0.01333333 0.008 -0.04
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.01333333 0.008 -0.04
+       vertex -0.01333333 0.008 -0.05
+       vertex -0.01333333 0 -0.05
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.01333333 0 -0.04
+       vertex -0.01333333 0 -0.03
+       vertex -0.01333333 0.008 -0.03
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.01333333 0.008 -0.03
+       vertex -0.01333333 0.008 -0.04
+       vertex -0.01333333 0 -0.04
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.01333333 0 -0.03
+       vertex -0.01333333 0 -0.02
+       vertex -0.01333333 0.008 -0.02
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.01333333 0.008 -0.02
+       vertex -0.01333333 0.008 -0.03
+       vertex -0.01333333 0 -0.03
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.01333333 0 -0.02
+       vertex -0.01333333 0 -0.01
+       vertex -0.01333333 0.008 -0.01
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.01333333 0.008 -0.01
+       vertex -0.01333333 0.008 -0.02
+       vertex -0.01333333 0 -0.02
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.01333333 0 -0.01
+       vertex -0.01333333 0 0
+       vertex -0.01333333 0.008 0
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.01333333 0.008 0
+       vertex -0.01333333 0.008 -0.01
+       vertex -0.01333333 0 -0.01
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.01333333 0 0
+       vertex -0.01333333 0 0.01
+       vertex -0.01333333 0.008 0.01
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.01333333 0.008 0.01
+       vertex -0.01333333 0.008 0
+       vertex -0.01333333 0 0
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.01333333 0 0.01
+       vertex -0.01333333 0 0.02
+       vertex -0.01333333 0.008 0.02
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.01333333 0.008 0.02
+       vertex -0.01333333 0.008 0.01
+       vertex -0.01333333 0 0.01
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.01333333 0 0.02
+       vertex -0.01333333 0 0.03
+       vertex -0.01333333 0.008 0.03
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.01333333 0.008 0.03
+       vertex -0.01333333 0.008 0.02
+       vertex -0.01333333 0 0.02
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.01333333 0 0.03
+       vertex -0.01333333 0 0.04
+       vertex -0.01333333 0.008 0.04
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.01333333 0.008 0.04
+       vertex -0.01333333 0.008 0.03
+       vertex -0.01333333 0 0.03
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.01333333 0 0.04
+       vertex -0.01333333 0 0.05
+       vertex -0.01333333 0.008 0.05
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.01333333 0.008 0.05
+       vertex -0.01333333 0.008 0.04
+       vertex -0.01333333 0 0.04
+    endloop
+  endfacet
+endsolid heater_to_leftSolid
+solid heater_to_bottomAir
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.01333333 0 -0.05
+       vertex -0.006666667 0 -0.05
+       vertex -0.006666667 0 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.006666667 0 -0.04
+       vertex -0.01333333 0 -0.04
+       vertex -0.01333333 0 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.006666667 0 -0.05
+       vertex 0 0 -0.05
+       vertex 0 0 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0 0 -0.04
+       vertex -0.006666667 0 -0.04
+       vertex -0.006666667 0 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0 0 -0.05
+       vertex 0.006666667 0 -0.05
+       vertex 0.006666667 0 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.006666667 0 -0.04
+       vertex 0 0 -0.04
+       vertex 0 0 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.006666667 0 -0.05
+       vertex 0.01333333 0 -0.05
+       vertex 0.01333333 0 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.01333333 0 -0.04
+       vertex 0.006666667 0 -0.04
+       vertex 0.006666667 0 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.01333333 0 -0.04
+       vertex -0.006666667 0 -0.04
+       vertex -0.006666667 0 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.006666667 0 -0.03
+       vertex -0.01333333 0 -0.03
+       vertex -0.01333333 0 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.006666667 0 -0.04
+       vertex 0 0 -0.04
+       vertex 0 0 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0 0 -0.03
+       vertex -0.006666667 0 -0.03
+       vertex -0.006666667 0 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0 0 -0.04
+       vertex 0.006666667 0 -0.04
+       vertex 0.006666667 0 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.006666667 0 -0.03
+       vertex 0 0 -0.03
+       vertex 0 0 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.006666667 0 -0.04
+       vertex 0.01333333 0 -0.04
+       vertex 0.01333333 0 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.01333333 0 -0.03
+       vertex 0.006666667 0 -0.03
+       vertex 0.006666667 0 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.01333333 0 -0.03
+       vertex -0.006666667 0 -0.03
+       vertex -0.006666667 0 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.006666667 0 -0.02
+       vertex -0.01333333 0 -0.02
+       vertex -0.01333333 0 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.006666667 0 -0.03
+       vertex 0 0 -0.03
+       vertex 0 0 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0 0 -0.02
+       vertex -0.006666667 0 -0.02
+       vertex -0.006666667 0 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0 0 -0.03
+       vertex 0.006666667 0 -0.03
+       vertex 0.006666667 0 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.006666667 0 -0.02
+       vertex 0 0 -0.02
+       vertex 0 0 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.006666667 0 -0.03
+       vertex 0.01333333 0 -0.03
+       vertex 0.01333333 0 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.01333333 0 -0.02
+       vertex 0.006666667 0 -0.02
+       vertex 0.006666667 0 -0.03
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.01333333 -0.04 -0.01
+       vertex -0.01333333 -0.032 -0.01
+       vertex -0.006666667 -0.032 -0.01
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.006666667 -0.032 -0.01
+       vertex -0.006666667 -0.04 -0.01
+       vertex -0.01333333 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.006666667 -0.04 -0.01
+       vertex -0.006666667 -0.032 -0.01
+       vertex 0 -0.032 -0.01
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0 -0.032 -0.01
+       vertex 0 -0.04 -0.01
+       vertex -0.006666667 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0 -0.04 -0.01
+       vertex 0 -0.032 -0.01
+       vertex 0.006666667 -0.032 -0.01
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.006666667 -0.032 -0.01
+       vertex 0.006666667 -0.04 -0.01
+       vertex 0 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.006666667 -0.04 -0.01
+       vertex 0.006666667 -0.032 -0.01
+       vertex 0.01333333 -0.032 -0.01
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.01333333 -0.032 -0.01
+       vertex 0.01333333 -0.04 -0.01
+       vertex 0.006666667 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.01333333 -0.032 -0.01
+       vertex -0.01333333 -0.024 -0.01
+       vertex -0.006666667 -0.024 -0.01
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.006666667 -0.024 -0.01
+       vertex -0.006666667 -0.032 -0.01
+       vertex -0.01333333 -0.032 -0.01
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.006666667 -0.032 -0.01
+       vertex -0.006666667 -0.024 -0.01
+       vertex 0 -0.024 -0.01
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0 -0.024 -0.01
+       vertex 0 -0.032 -0.01
+       vertex -0.006666667 -0.032 -0.01
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0 -0.032 -0.01
+       vertex 0 -0.024 -0.01
+       vertex 0.006666667 -0.024 -0.01
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.006666667 -0.024 -0.01
+       vertex 0.006666667 -0.032 -0.01
+       vertex 0 -0.032 -0.01
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.006666667 -0.032 -0.01
+       vertex 0.006666667 -0.024 -0.01
+       vertex 0.01333333 -0.024 -0.01
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.01333333 -0.024 -0.01
+       vertex 0.01333333 -0.032 -0.01
+       vertex 0.006666667 -0.032 -0.01
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.01333333 -0.024 -0.01
+       vertex -0.01333333 -0.016 -0.01
+       vertex -0.006666667 -0.016 -0.01
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.006666667 -0.016 -0.01
+       vertex -0.006666667 -0.024 -0.01
+       vertex -0.01333333 -0.024 -0.01
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.006666667 -0.024 -0.01
+       vertex -0.006666667 -0.016 -0.01
+       vertex 0 -0.016 -0.01
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0 -0.016 -0.01
+       vertex 0 -0.024 -0.01
+       vertex -0.006666667 -0.024 -0.01
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0 -0.024 -0.01
+       vertex 0 -0.016 -0.01
+       vertex 0.006666667 -0.016 -0.01
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.006666667 -0.016 -0.01
+       vertex 0.006666667 -0.024 -0.01
+       vertex 0 -0.024 -0.01
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.006666667 -0.024 -0.01
+       vertex 0.006666667 -0.016 -0.01
+       vertex 0.01333333 -0.016 -0.01
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.01333333 -0.016 -0.01
+       vertex 0.01333333 -0.024 -0.01
+       vertex 0.006666667 -0.024 -0.01
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.01333333 -0.016 -0.01
+       vertex -0.01333333 -0.008 -0.01
+       vertex -0.006666667 -0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.006666667 -0.008 -0.01
+       vertex -0.006666667 -0.016 -0.01
+       vertex -0.01333333 -0.016 -0.01
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.006666667 -0.016 -0.01
+       vertex -0.006666667 -0.008 -0.01
+       vertex 0 -0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0 -0.008 -0.01
+       vertex 0 -0.016 -0.01
+       vertex -0.006666667 -0.016 -0.01
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0 -0.016 -0.01
+       vertex 0 -0.008 -0.01
+       vertex 0.006666667 -0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.006666667 -0.008 -0.01
+       vertex 0.006666667 -0.016 -0.01
+       vertex 0 -0.016 -0.01
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.006666667 -0.016 -0.01
+       vertex 0.006666667 -0.008 -0.01
+       vertex 0.01333333 -0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.01333333 -0.008 -0.01
+       vertex 0.01333333 -0.016 -0.01
+       vertex 0.006666667 -0.016 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.01333333 0 -0.02
+       vertex -0.006666667 0 -0.02
+       vertex -0.006666667 0 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.006666667 0 -0.01
+       vertex -0.01333333 0 -0.01
+       vertex -0.01333333 0 -0.02
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.01333333 -0.008 -0.01
+       vertex -0.01333333 0 -0.01
+       vertex -0.006666667 0 -0.01
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.006666667 0 -0.01
+       vertex -0.006666667 -0.008 -0.01
+       vertex -0.01333333 -0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.006666667 0 -0.02
+       vertex 0 0 -0.02
+       vertex 0 0 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0 0 -0.01
+       vertex -0.006666667 0 -0.01
+       vertex -0.006666667 0 -0.02
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.006666667 -0.008 -0.01
+       vertex -0.006666667 0 -0.01
+       vertex 0 0 -0.01
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0 0 -0.01
+       vertex 0 -0.008 -0.01
+       vertex -0.006666667 -0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0 0 -0.02
+       vertex 0.006666667 0 -0.02
+       vertex 0.006666667 0 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.006666667 0 -0.01
+       vertex 0 0 -0.01
+       vertex 0 0 -0.02
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0 -0.008 -0.01
+       vertex 0 0 -0.01
+       vertex 0.006666667 0 -0.01
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.006666667 0 -0.01
+       vertex 0.006666667 -0.008 -0.01
+       vertex 0 -0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.006666667 0 -0.02
+       vertex 0.01333333 0 -0.02
+       vertex 0.01333333 0 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.01333333 0 -0.01
+       vertex 0.006666667 0 -0.01
+       vertex 0.006666667 0 -0.02
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.006666667 -0.008 -0.01
+       vertex 0.006666667 0 -0.01
+       vertex 0.01333333 0 -0.01
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.01333333 0 -0.01
+       vertex 0.01333333 -0.008 -0.01
+       vertex 0.006666667 -0.008 -0.01
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.01333333 -0.04 -0.01
+       vertex -0.01333333 -0.04 0
+       vertex -0.01333333 -0.032 1.156482e-18
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.01333333 -0.032 1.156482e-18
+       vertex -0.01333333 -0.032 -0.01
+       vertex -0.01333333 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.01333333 -0.04 -0.01
+       vertex 0.01333333 -0.032 -0.01
+       vertex 0.01333333 -0.032 1.156482e-18
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.01333333 -0.032 1.156482e-18
+       vertex 0.01333333 -0.04 0
+       vertex 0.01333333 -0.04 -0.01
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.01333333 -0.032 -0.01
+       vertex -0.01333333 -0.032 1.156482e-18
+       vertex -0.01333333 -0.024 0
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.01333333 -0.024 0
+       vertex -0.01333333 -0.024 -0.01
+       vertex -0.01333333 -0.032 -0.01
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.01333333 -0.032 -0.01
+       vertex 0.01333333 -0.024 -0.01
+       vertex 0.01333333 -0.024 0
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.01333333 -0.024 0
+       vertex 0.01333333 -0.032 1.156482e-18
+       vertex 0.01333333 -0.032 -0.01
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.01333333 -0.024 -0.01
+       vertex -0.01333333 -0.024 0
+       vertex -0.01333333 -0.016 -1.156482e-18
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.01333333 -0.016 -1.156482e-18
+       vertex -0.01333333 -0.016 -0.01
+       vertex -0.01333333 -0.024 -0.01
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.01333333 -0.024 -0.01
+       vertex 0.01333333 -0.016 -0.01
+       vertex 0.01333333 -0.016 -1.156482e-18
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.01333333 -0.016 -1.156482e-18
+       vertex 0.01333333 -0.024 0
+       vertex 0.01333333 -0.024 -0.01
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.01333333 -0.016 -0.01
+       vertex -0.01333333 -0.016 -1.156482e-18
+       vertex -0.01333333 -0.008 0
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.01333333 -0.008 0
+       vertex -0.01333333 -0.008 -0.01
+       vertex -0.01333333 -0.016 -0.01
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.01333333 -0.016 -0.01
+       vertex 0.01333333 -0.008 -0.01
+       vertex 0.01333333 -0.008 0
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.01333333 -0.008 0
+       vertex 0.01333333 -0.016 -1.156482e-18
+       vertex 0.01333333 -0.016 -0.01
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.01333333 -0.008 -0.01
+       vertex -0.01333333 -0.008 0
+       vertex -0.01333333 0 0
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.01333333 0 0
+       vertex -0.01333333 0 -0.01
+       vertex -0.01333333 -0.008 -0.01
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.01333333 -0.008 -0.01
+       vertex 0.01333333 0 -0.01
+       vertex 0.01333333 0 0
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.01333333 0 0
+       vertex 0.01333333 -0.008 0
+       vertex 0.01333333 -0.008 -0.01
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.01333333 -0.04 0.01
+       vertex -0.01333333 -0.032 0.01
+       vertex -0.01333333 -0.032 1.156482e-18
+    endloop
+  endfacet
+  facet normal -1 -0 0
+    outer loop
+       vertex -0.01333333 -0.032 1.156482e-18
+       vertex -0.01333333 -0.04 0
+       vertex -0.01333333 -0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.01333333 -0.04 0.01
+       vertex -0.006666667 -0.04 0.01
+       vertex -0.006666667 -0.032 0.01
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.006666667 -0.032 0.01
+       vertex -0.01333333 -0.032 0.01
+       vertex -0.01333333 -0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.006666667 -0.04 0.01
+       vertex 0 -0.04 0.01
+       vertex 0 -0.032 0.01
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0 -0.032 0.01
+       vertex -0.006666667 -0.032 0.01
+       vertex -0.006666667 -0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0 -0.04 0.01
+       vertex 0.006666667 -0.04 0.01
+       vertex 0.006666667 -0.032 0.01
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.006666667 -0.032 0.01
+       vertex 0 -0.032 0.01
+       vertex 0 -0.04 0.01
+    endloop
+  endfacet
+  facet normal 1 0 -0
+    outer loop
+       vertex 0.01333333 -0.032 1.156482e-18
+       vertex 0.01333333 -0.032 0.01
+       vertex 0.01333333 -0.04 0.01
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.01333333 -0.04 0.01
+       vertex 0.01333333 -0.04 0
+       vertex 0.01333333 -0.032 1.156482e-18
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.006666667 -0.04 0.01
+       vertex 0.01333333 -0.04 0.01
+       vertex 0.01333333 -0.032 0.01
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.01333333 -0.032 0.01
+       vertex 0.006666667 -0.032 0.01
+       vertex 0.006666667 -0.04 0.01
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.01333333 -0.032 1.156482e-18
+       vertex -0.01333333 -0.032 0.01
+       vertex -0.01333333 -0.024 0.01
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.01333333 -0.024 0.01
+       vertex -0.01333333 -0.024 0
+       vertex -0.01333333 -0.032 1.156482e-18
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.01333333 -0.032 0.01
+       vertex -0.006666667 -0.032 0.01
+       vertex -0.006666667 -0.024 0.01
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.006666667 -0.024 0.01
+       vertex -0.01333333 -0.024 0.01
+       vertex -0.01333333 -0.032 0.01
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.006666667 -0.032 0.01
+       vertex 0 -0.032 0.01
+       vertex 0 -0.024 0.01
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0 -0.024 0.01
+       vertex -0.006666667 -0.024 0.01
+       vertex -0.006666667 -0.032 0.01
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0 -0.032 0.01
+       vertex 0.006666667 -0.032 0.01
+       vertex 0.006666667 -0.024 0.01
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.006666667 -0.024 0.01
+       vertex 0 -0.024 0.01
+       vertex 0 -0.032 0.01
+    endloop
+  endfacet
+  facet normal 1 -0 0
+    outer loop
+       vertex 0.01333333 -0.032 1.156482e-18
+       vertex 0.01333333 -0.024 0
+       vertex 0.01333333 -0.024 0.01
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.01333333 -0.024 0.01
+       vertex 0.01333333 -0.032 0.01
+       vertex 0.01333333 -0.032 1.156482e-18
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.006666667 -0.032 0.01
+       vertex 0.01333333 -0.032 0.01
+       vertex 0.01333333 -0.024 0.01
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.01333333 -0.024 0.01
+       vertex 0.006666667 -0.024 0.01
+       vertex 0.006666667 -0.032 0.01
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.01333333 -0.024 0
+       vertex -0.01333333 -0.024 0.01
+       vertex -0.01333333 -0.016 0.01
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.01333333 -0.016 0.01
+       vertex -0.01333333 -0.016 -1.156482e-18
+       vertex -0.01333333 -0.024 0
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.01333333 -0.024 0.01
+       vertex -0.006666667 -0.024 0.01
+       vertex -0.006666667 -0.016 0.01
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.006666667 -0.016 0.01
+       vertex -0.01333333 -0.016 0.01
+       vertex -0.01333333 -0.024 0.01
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.006666667 -0.024 0.01
+       vertex 0 -0.024 0.01
+       vertex 0 -0.016 0.01
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0 -0.016 0.01
+       vertex -0.006666667 -0.016 0.01
+       vertex -0.006666667 -0.024 0.01
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0 -0.024 0.01
+       vertex 0.006666667 -0.024 0.01
+       vertex 0.006666667 -0.016 0.01
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.006666667 -0.016 0.01
+       vertex 0 -0.016 0.01
+       vertex 0 -0.024 0.01
+    endloop
+  endfacet
+  facet normal 1 -0 0
+    outer loop
+       vertex 0.01333333 -0.024 0
+       vertex 0.01333333 -0.016 -1.156482e-18
+       vertex 0.01333333 -0.016 0.01
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.01333333 -0.016 0.01
+       vertex 0.01333333 -0.024 0.01
+       vertex 0.01333333 -0.024 0
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.006666667 -0.024 0.01
+       vertex 0.01333333 -0.024 0.01
+       vertex 0.01333333 -0.016 0.01
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.01333333 -0.016 0.01
+       vertex 0.006666667 -0.016 0.01
+       vertex 0.006666667 -0.024 0.01
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.01333333 -0.016 0.01
+       vertex -0.01333333 -0.008 0.01
+       vertex -0.01333333 -0.008 0
+    endloop
+  endfacet
+  facet normal -1 -0 0
+    outer loop
+       vertex -0.01333333 -0.008 0
+       vertex -0.01333333 -0.016 -1.156482e-18
+       vertex -0.01333333 -0.016 0.01
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.01333333 -0.016 0.01
+       vertex -0.006666667 -0.016 0.01
+       vertex -0.006666667 -0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.006666667 -0.008 0.01
+       vertex -0.01333333 -0.008 0.01
+       vertex -0.01333333 -0.016 0.01
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.006666667 -0.016 0.01
+       vertex 0 -0.016 0.01
+       vertex 0 -0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0 -0.008 0.01
+       vertex -0.006666667 -0.008 0.01
+       vertex -0.006666667 -0.016 0.01
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0 -0.016 0.01
+       vertex 0.006666667 -0.016 0.01
+       vertex 0.006666667 -0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.006666667 -0.008 0.01
+       vertex 0 -0.008 0.01
+       vertex 0 -0.016 0.01
+    endloop
+  endfacet
+  facet normal 1 0 -0
+    outer loop
+       vertex 0.01333333 -0.008 0
+       vertex 0.01333333 -0.008 0.01
+       vertex 0.01333333 -0.016 0.01
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.01333333 -0.016 0.01
+       vertex 0.01333333 -0.016 -1.156482e-18
+       vertex 0.01333333 -0.008 0
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.006666667 -0.016 0.01
+       vertex 0.01333333 -0.016 0.01
+       vertex 0.01333333 -0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.01333333 -0.008 0.01
+       vertex 0.006666667 -0.008 0.01
+       vertex 0.006666667 -0.016 0.01
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.01333333 -0.008 0
+       vertex -0.01333333 -0.008 0.01
+       vertex -0.01333333 0 0.01
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.01333333 0 0.01
+       vertex -0.01333333 0 0
+       vertex -0.01333333 -0.008 0
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.01333333 -0.008 0.01
+       vertex -0.006666667 -0.008 0.01
+       vertex -0.006666667 0 0.01
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.006666667 0 0.01
+       vertex -0.01333333 0 0.01
+       vertex -0.01333333 -0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.006666667 -0.008 0.01
+       vertex 0 -0.008 0.01
+       vertex 0 0 0.01
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0 0 0.01
+       vertex -0.006666667 0 0.01
+       vertex -0.006666667 -0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0 -0.008 0.01
+       vertex 0.006666667 -0.008 0.01
+       vertex 0.006666667 0 0.01
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.006666667 0 0.01
+       vertex 0 0 0.01
+       vertex 0 -0.008 0.01
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.01333333 -0.008 0
+       vertex 0.01333333 0 0
+       vertex 0.01333333 0 0.01
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.01333333 0 0.01
+       vertex 0.01333333 -0.008 0.01
+       vertex 0.01333333 -0.008 0
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.006666667 -0.008 0.01
+       vertex 0.01333333 -0.008 0.01
+       vertex 0.01333333 0 0.01
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.01333333 0 0.01
+       vertex 0.006666667 0 0.01
+       vertex 0.006666667 -0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.01333333 0 0.01
+       vertex -0.006666667 0 0.01
+       vertex -0.006666667 0 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.006666667 0 0.02
+       vertex -0.01333333 0 0.02
+       vertex -0.01333333 0 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.006666667 0 0.01
+       vertex 0 0 0.01
+       vertex 0 0 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0 0 0.02
+       vertex -0.006666667 0 0.02
+       vertex -0.006666667 0 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0 0 0.01
+       vertex 0.006666667 0 0.01
+       vertex 0.006666667 0 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.006666667 0 0.02
+       vertex 0 0 0.02
+       vertex 0 0 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.006666667 0 0.01
+       vertex 0.01333333 0 0.01
+       vertex 0.01333333 0 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.01333333 0 0.02
+       vertex 0.006666667 0 0.02
+       vertex 0.006666667 0 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.01333333 0 0.02
+       vertex -0.006666667 0 0.02
+       vertex -0.006666667 0 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.006666667 0 0.03
+       vertex -0.01333333 0 0.03
+       vertex -0.01333333 0 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.006666667 0 0.02
+       vertex 0 0 0.02
+       vertex 0 0 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0 0 0.03
+       vertex -0.006666667 0 0.03
+       vertex -0.006666667 0 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0 0 0.02
+       vertex 0.006666667 0 0.02
+       vertex 0.006666667 0 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.006666667 0 0.03
+       vertex 0 0 0.03
+       vertex 0 0 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.006666667 0 0.02
+       vertex 0.01333333 0 0.02
+       vertex 0.01333333 0 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.01333333 0 0.03
+       vertex 0.006666667 0 0.03
+       vertex 0.006666667 0 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.01333333 0 0.03
+       vertex -0.006666667 0 0.03
+       vertex -0.006666667 0 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.006666667 0 0.04
+       vertex -0.01333333 0 0.04
+       vertex -0.01333333 0 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.006666667 0 0.03
+       vertex 0 0 0.03
+       vertex 0 0 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0 0 0.04
+       vertex -0.006666667 0 0.04
+       vertex -0.006666667 0 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0 0 0.03
+       vertex 0.006666667 0 0.03
+       vertex 0.006666667 0 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.006666667 0 0.04
+       vertex 0 0 0.04
+       vertex 0 0 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.006666667 0 0.03
+       vertex 0.01333333 0 0.03
+       vertex 0.01333333 0 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.01333333 0 0.04
+       vertex 0.006666667 0 0.04
+       vertex 0.006666667 0 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.01333333 0 0.04
+       vertex -0.006666667 0 0.04
+       vertex -0.006666667 0 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.006666667 0 0.05
+       vertex -0.01333333 0 0.05
+       vertex -0.01333333 0 0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.006666667 0 0.04
+       vertex 0 0 0.04
+       vertex 0 0 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0 0 0.05
+       vertex -0.006666667 0 0.05
+       vertex -0.006666667 0 0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0 0 0.04
+       vertex 0.006666667 0 0.04
+       vertex 0.006666667 0 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.006666667 0 0.05
+       vertex 0 0 0.05
+       vertex 0 0 0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.006666667 0 0.04
+       vertex 0.01333333 0 0.04
+       vertex 0.01333333 0 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.01333333 0 0.05
+       vertex 0.006666667 0 0.05
+       vertex 0.006666667 0 0.04
+    endloop
+  endfacet
+endsolid heater_to_bottomAir
diff --git a/tutorials/mesh/snappyHexMesh/multiRegionMesh/constant/triSurface/leftSolid.stl b/tutorials/mesh/snappyHexMesh/multiRegionMesh/constant/triSurface/leftSolid.stl
new file mode 100644
index 0000000000000000000000000000000000000000..0cdc26c08492dad27cf5b7afde642f83f6045908
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/multiRegionMesh/constant/triSurface/leftSolid.stl
@@ -0,0 +1,4296 @@
+solid minX
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 0 -0.05
+       vertex -0.1 0 -0.04
+       vertex -0.1 0.008 -0.04
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 0.008 -0.04
+       vertex -0.1 0.008 -0.05
+       vertex -0.1 0 -0.05
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 0 -0.04
+       vertex -0.1 0 -0.03
+       vertex -0.1 0.008 -0.03
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 0.008 -0.03
+       vertex -0.1 0.008 -0.04
+       vertex -0.1 0 -0.04
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 0 -0.03
+       vertex -0.1 0 -0.02
+       vertex -0.1 0.008 -0.02
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 0.008 -0.02
+       vertex -0.1 0.008 -0.03
+       vertex -0.1 0 -0.03
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 0 -0.02
+       vertex -0.1 0 -0.01
+       vertex -0.1 0.008 -0.01
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 0.008 -0.01
+       vertex -0.1 0.008 -0.02
+       vertex -0.1 0 -0.02
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 0 -0.01
+       vertex -0.1 0 0
+       vertex -0.1 0.008 0
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 0.008 0
+       vertex -0.1 0.008 -0.01
+       vertex -0.1 0 -0.01
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 0 0
+       vertex -0.1 0 0.01
+       vertex -0.1 0.008 0.01
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 0.008 0.01
+       vertex -0.1 0.008 0
+       vertex -0.1 0 0
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 0 0.01
+       vertex -0.1 0 0.02
+       vertex -0.1 0.008 0.02
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 0.008 0.02
+       vertex -0.1 0.008 0.01
+       vertex -0.1 0 0.01
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 0 0.02
+       vertex -0.1 0 0.03
+       vertex -0.1 0.008 0.03
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 0.008 0.03
+       vertex -0.1 0.008 0.02
+       vertex -0.1 0 0.02
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 0 0.03
+       vertex -0.1 0 0.04
+       vertex -0.1 0.008 0.04
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 0.008 0.04
+       vertex -0.1 0.008 0.03
+       vertex -0.1 0 0.03
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 0 0.04
+       vertex -0.1 0 0.05
+       vertex -0.1 0.008 0.05
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 0.008 0.05
+       vertex -0.1 0.008 0.04
+       vertex -0.1 0 0.04
+    endloop
+  endfacet
+endsolid minX
+solid minZ
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.1 0 -0.05
+       vertex -0.1 0.008 -0.05
+       vertex -0.09333333 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.09333333 0.008 -0.05
+       vertex -0.09333333 0 -0.05
+       vertex -0.1 0 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.09333333 0 -0.05
+       vertex -0.09333333 0.008 -0.05
+       vertex -0.08666667 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.08666667 0.008 -0.05
+       vertex -0.08666667 0 -0.05
+       vertex -0.09333333 0 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.08666667 0 -0.05
+       vertex -0.08666667 0.008 -0.05
+       vertex -0.08 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.08 0.008 -0.05
+       vertex -0.08 0 -0.05
+       vertex -0.08666667 0 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.08 0 -0.05
+       vertex -0.08 0.008 -0.05
+       vertex -0.07333333 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.07333333 0.008 -0.05
+       vertex -0.07333333 0 -0.05
+       vertex -0.08 0 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.07333333 0 -0.05
+       vertex -0.07333333 0.008 -0.05
+       vertex -0.06666667 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.06666667 0.008 -0.05
+       vertex -0.06666667 0 -0.05
+       vertex -0.07333333 0 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.06666667 0 -0.05
+       vertex -0.06666667 0.008 -0.05
+       vertex -0.06 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.06 0.008 -0.05
+       vertex -0.06 0 -0.05
+       vertex -0.06666667 0 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.06 0 -0.05
+       vertex -0.06 0.008 -0.05
+       vertex -0.05333333 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.05333333 0.008 -0.05
+       vertex -0.05333333 -5.782412e-19 -0.05
+       vertex -0.06 0 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.05333333 0.008 -0.05
+       vertex -0.04666667 0.008 -0.05
+       vertex -0.04666667 0 -0.05
+    endloop
+  endfacet
+  facet normal -0 0 -1
+    outer loop
+       vertex -0.04666667 0 -0.05
+       vertex -0.05333333 -5.782412e-19 -0.05
+       vertex -0.05333333 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.04666667 0.008 -0.05
+       vertex -0.04 0.008 -0.05
+       vertex -0.04 5.782412e-19 -0.05
+    endloop
+  endfacet
+  facet normal -0 0 -1
+    outer loop
+       vertex -0.04 5.782412e-19 -0.05
+       vertex -0.04666667 0 -0.05
+       vertex -0.04666667 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.04 5.782412e-19 -0.05
+       vertex -0.04 0.008 -0.05
+       vertex -0.03333333 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.03333333 0.008 -0.05
+       vertex -0.03333333 -5.782412e-19 -0.05
+       vertex -0.04 5.782412e-19 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.03333333 0.008 -0.05
+       vertex -0.02666667 0.008 -0.05
+       vertex -0.02666667 0 -0.05
+    endloop
+  endfacet
+  facet normal -0 0 -1
+    outer loop
+       vertex -0.02666667 0 -0.05
+       vertex -0.03333333 -5.782412e-19 -0.05
+       vertex -0.03333333 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.02666667 0 -0.05
+       vertex -0.02666667 0.008 -0.05
+       vertex -0.02 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.02 0.008 -0.05
+       vertex -0.02 0 -0.05
+       vertex -0.02666667 0 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.02 0 -0.05
+       vertex -0.02 0.008 -0.05
+       vertex -0.01333333 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.01333333 0.008 -0.05
+       vertex -0.01333333 0 -0.05
+       vertex -0.02 0 -0.05
+    endloop
+  endfacet
+endsolid minZ
+solid maxZ
+  facet normal 0 0 1
+    outer loop
+       vertex -0.1 0 0.05
+       vertex -0.09333333 0 0.05
+       vertex -0.09333333 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.09333333 0.008 0.05
+       vertex -0.1 0.008 0.05
+       vertex -0.1 0 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.09333333 0 0.05
+       vertex -0.08666667 0 0.05
+       vertex -0.08666667 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.08666667 0.008 0.05
+       vertex -0.09333333 0.008 0.05
+       vertex -0.09333333 0 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.08666667 0 0.05
+       vertex -0.08 0 0.05
+       vertex -0.08 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.08 0.008 0.05
+       vertex -0.08666667 0.008 0.05
+       vertex -0.08666667 0 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.08 0 0.05
+       vertex -0.07333333 0 0.05
+       vertex -0.07333333 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.07333333 0.008 0.05
+       vertex -0.08 0.008 0.05
+       vertex -0.08 0 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.07333333 0 0.05
+       vertex -0.06666667 0 0.05
+       vertex -0.06666667 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.06666667 0.008 0.05
+       vertex -0.07333333 0.008 0.05
+       vertex -0.07333333 0 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.06666667 0 0.05
+       vertex -0.06 0 0.05
+       vertex -0.06 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.06 0.008 0.05
+       vertex -0.06666667 0.008 0.05
+       vertex -0.06666667 0 0.05
+    endloop
+  endfacet
+  facet normal -0 0 1
+    outer loop
+       vertex -0.06 0 0.05
+       vertex -0.05333333 -5.782412e-19 0.05
+       vertex -0.05333333 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.05333333 0.008 0.05
+       vertex -0.06 0.008 0.05
+       vertex -0.06 0 0.05
+    endloop
+  endfacet
+  facet normal 0 -0 1
+    outer loop
+       vertex -0.04666667 0 0.05
+       vertex -0.04666667 0.008 0.05
+       vertex -0.05333333 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.05333333 0.008 0.05
+       vertex -0.05333333 -5.782412e-19 0.05
+       vertex -0.04666667 0 0.05
+    endloop
+  endfacet
+  facet normal 0 -0 1
+    outer loop
+       vertex -0.04 5.782412e-19 0.05
+       vertex -0.04 0.008 0.05
+       vertex -0.04666667 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.04666667 0.008 0.05
+       vertex -0.04666667 0 0.05
+       vertex -0.04 5.782412e-19 0.05
+    endloop
+  endfacet
+  facet normal -0 0 1
+    outer loop
+       vertex -0.04 5.782412e-19 0.05
+       vertex -0.03333333 -5.782412e-19 0.05
+       vertex -0.03333333 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.03333333 0.008 0.05
+       vertex -0.04 0.008 0.05
+       vertex -0.04 5.782412e-19 0.05
+    endloop
+  endfacet
+  facet normal 0 -0 1
+    outer loop
+       vertex -0.02666667 0 0.05
+       vertex -0.02666667 0.008 0.05
+       vertex -0.03333333 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.03333333 0.008 0.05
+       vertex -0.03333333 -5.782412e-19 0.05
+       vertex -0.02666667 0 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.02666667 0 0.05
+       vertex -0.02 0 0.05
+       vertex -0.02 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.02 0.008 0.05
+       vertex -0.02666667 0.008 0.05
+       vertex -0.02666667 0 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.02 0 0.05
+       vertex -0.01333333 0 0.05
+       vertex -0.01333333 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.01333333 0.008 0.05
+       vertex -0.02 0.008 0.05
+       vertex -0.02 0 0.05
+    endloop
+  endfacet
+endsolid maxZ
+solid leftSolid_to_bottomAir
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.1 0 -0.05
+       vertex -0.09333333 0 -0.05
+       vertex -0.09333333 0 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.09333333 0 -0.04
+       vertex -0.1 0 -0.04
+       vertex -0.1 0 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.09333333 0 -0.05
+       vertex -0.08666667 0 -0.05
+       vertex -0.08666667 0 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.08666667 0 -0.04
+       vertex -0.09333333 0 -0.04
+       vertex -0.09333333 0 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.08666667 0 -0.05
+       vertex -0.08 0 -0.05
+       vertex -0.08 0 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.08 0 -0.04
+       vertex -0.08666667 0 -0.04
+       vertex -0.08666667 0 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.08 0 -0.05
+       vertex -0.07333333 0 -0.05
+       vertex -0.07333333 0 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.07333333 0 -0.04
+       vertex -0.08 0 -0.04
+       vertex -0.08 0 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.07333333 0 -0.05
+       vertex -0.06666667 0 -0.05
+       vertex -0.06666667 0 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.06666667 0 -0.04
+       vertex -0.07333333 0 -0.04
+       vertex -0.07333333 0 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.06666667 0 -0.05
+       vertex -0.06 0 -0.05
+       vertex -0.06 0 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.06 0 -0.04
+       vertex -0.06666667 0 -0.04
+       vertex -0.06666667 0 -0.05
+    endloop
+  endfacet
+  facet normal -8.673614e-17 -1 0
+    outer loop
+       vertex -0.06 0 -0.05
+       vertex -0.05333333 -5.782412e-19 -0.05
+       vertex -0.05333333 -5.782412e-19 -0.04
+    endloop
+  endfacet
+  facet normal -8.673614e-17 -1 0
+    outer loop
+       vertex -0.05333333 -5.782412e-19 -0.04
+       vertex -0.06 0 -0.04
+       vertex -0.06 0 -0.05
+    endloop
+  endfacet
+  facet normal 8.673627e-17 -1 0
+    outer loop
+       vertex -0.05333333 -5.782412e-19 -0.05
+       vertex -0.04666667 0 -0.05
+       vertex -0.04666667 0 -0.04
+    endloop
+  endfacet
+  facet normal 8.673627e-17 -1 0
+    outer loop
+       vertex -0.04666667 0 -0.04
+       vertex -0.05333333 -5.782412e-19 -0.04
+       vertex -0.05333333 -5.782412e-19 -0.05
+    endloop
+  endfacet
+  facet normal 8.673614e-17 -1 -5.782412e-17
+    outer loop
+       vertex -0.04666667 0 -0.05
+       vertex -0.04 5.782412e-19 -0.05
+       vertex -0.04 0 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.04 0 -0.04
+       vertex -0.04666667 0 -0.04
+       vertex -0.04666667 0 -0.05
+    endloop
+  endfacet
+  facet normal -1.734723e-16 -1 0
+    outer loop
+       vertex -0.04 5.782412e-19 -0.05
+       vertex -0.03333333 -5.782412e-19 -0.05
+       vertex -0.03333333 -5.782412e-19 -0.04
+    endloop
+  endfacet
+  facet normal -8.673614e-17 -1 -5.782412e-17
+    outer loop
+       vertex -0.03333333 -5.782412e-19 -0.04
+       vertex -0.04 0 -0.04
+       vertex -0.04 5.782412e-19 -0.05
+    endloop
+  endfacet
+  facet normal 8.673627e-17 -1 0
+    outer loop
+       vertex -0.03333333 -5.782412e-19 -0.05
+       vertex -0.02666667 0 -0.05
+       vertex -0.02666667 0 -0.04
+    endloop
+  endfacet
+  facet normal 8.673627e-17 -1 0
+    outer loop
+       vertex -0.02666667 0 -0.04
+       vertex -0.03333333 -5.782412e-19 -0.04
+       vertex -0.03333333 -5.782412e-19 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 -5.782412e-17
+    outer loop
+       vertex -0.02666667 0 -0.05
+       vertex -0.02 0 -0.05
+       vertex -0.02 -5.782412e-19 -0.04
+    endloop
+  endfacet
+  facet normal -8.673614e-17 -1 0
+    outer loop
+       vertex -0.02 -5.782412e-19 -0.04
+       vertex -0.02666667 0 -0.04
+       vertex -0.02666667 0 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.02 0 -0.05
+       vertex -0.01333333 0 -0.05
+       vertex -0.01333333 0 -0.04
+    endloop
+  endfacet
+  facet normal 8.673614e-17 -1 -5.782412e-17
+    outer loop
+       vertex -0.01333333 0 -0.04
+       vertex -0.02 -5.782412e-19 -0.04
+       vertex -0.02 0 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.1 0 -0.04
+       vertex -0.09333333 0 -0.04
+       vertex -0.09333333 0 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.09333333 0 -0.03
+       vertex -0.1 0 -0.03
+       vertex -0.1 0 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.09333333 0 -0.04
+       vertex -0.08666667 0 -0.04
+       vertex -0.08666667 0 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.08666667 0 -0.03
+       vertex -0.09333333 0 -0.03
+       vertex -0.09333333 0 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 1.156482e-16
+    outer loop
+       vertex -0.08666667 0 -0.04
+       vertex -0.08 0 -0.04
+       vertex -0.08 1.156482e-18 -0.03
+    endloop
+  endfacet
+  facet normal 1.734722e-16 -1 0
+    outer loop
+       vertex -0.08 1.156482e-18 -0.03
+       vertex -0.08666667 0 -0.03
+       vertex -0.08666667 0 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.08 0 -0.04
+       vertex -0.07333333 0 -0.04
+       vertex -0.07333333 0 -0.03
+    endloop
+  endfacet
+  facet normal -1.734722e-16 -1 1.156482e-16
+    outer loop
+       vertex -0.07333333 0 -0.03
+       vertex -0.08 1.156482e-18 -0.03
+       vertex -0.08 0 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.07333333 0 -0.04
+       vertex -0.06666667 0 -0.04
+       vertex -0.06666667 0 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.06666667 0 -0.03
+       vertex -0.07333333 0 -0.03
+       vertex -0.07333333 0 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.06666667 0 -0.04
+       vertex -0.06 0 -0.04
+       vertex -0.06 0 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.06 0 -0.03
+       vertex -0.06666667 0 -0.03
+       vertex -0.06666667 0 -0.04
+    endloop
+  endfacet
+  facet normal -8.673614e-17 -1 0
+    outer loop
+       vertex -0.06 0 -0.04
+       vertex -0.05333333 -5.782412e-19 -0.04
+       vertex -0.05333333 -5.782412e-19 -0.03
+    endloop
+  endfacet
+  facet normal -8.673614e-17 -1 0
+    outer loop
+       vertex -0.05333333 -5.782412e-19 -0.03
+       vertex -0.06 0 -0.03
+       vertex -0.06 0 -0.04
+    endloop
+  endfacet
+  facet normal 8.673627e-17 -1 0
+    outer loop
+       vertex -0.05333333 -5.782412e-19 -0.04
+       vertex -0.04666667 0 -0.04
+       vertex -0.04666667 0 -0.03
+    endloop
+  endfacet
+  facet normal 8.673627e-17 -1 0
+    outer loop
+       vertex -0.04666667 0 -0.03
+       vertex -0.05333333 -5.782412e-19 -0.03
+       vertex -0.05333333 -5.782412e-19 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 5.782412e-17
+    outer loop
+       vertex -0.04666667 0 -0.04
+       vertex -0.04 0 -0.04
+       vertex -0.04 5.782412e-19 -0.03
+    endloop
+  endfacet
+  facet normal 8.673614e-17 -1 0
+    outer loop
+       vertex -0.04 5.782412e-19 -0.03
+       vertex -0.04666667 0 -0.03
+       vertex -0.04666667 0 -0.04
+    endloop
+  endfacet
+  facet normal -8.673614e-17 -1 0
+    outer loop
+       vertex -0.04 0 -0.04
+       vertex -0.03333333 -5.782412e-19 -0.04
+       vertex -0.03333333 -5.782412e-19 -0.03
+    endloop
+  endfacet
+  facet normal -1.734723e-16 -1 5.782412e-17
+    outer loop
+       vertex -0.03333333 -5.782412e-19 -0.03
+       vertex -0.04 5.782412e-19 -0.03
+       vertex -0.04 0 -0.04
+    endloop
+  endfacet
+  facet normal 8.673627e-17 -1 -5.782412e-17
+    outer loop
+       vertex -0.03333333 -5.782412e-19 -0.04
+       vertex -0.02666667 0 -0.04
+       vertex -0.02666667 -5.782412e-19 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.02666667 -5.782412e-19 -0.03
+       vertex -0.03333333 -5.782412e-19 -0.03
+       vertex -0.03333333 -5.782412e-19 -0.04
+    endloop
+  endfacet
+  facet normal -8.673614e-17 -1 0
+    outer loop
+       vertex -0.02666667 0 -0.04
+       vertex -0.02 -5.782412e-19 -0.04
+       vertex -0.02 -5.782412e-19 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 -5.782412e-17
+    outer loop
+       vertex -0.02 -5.782412e-19 -0.03
+       vertex -0.02666667 -5.782412e-19 -0.03
+       vertex -0.02666667 0 -0.04
+    endloop
+  endfacet
+  facet normal 8.673614e-17 -1 0
+    outer loop
+       vertex -0.02 -5.782412e-19 -0.04
+       vertex -0.01333333 0 -0.04
+       vertex -0.01333333 0 -0.03
+    endloop
+  endfacet
+  facet normal 8.673614e-17 -1 0
+    outer loop
+       vertex -0.01333333 0 -0.03
+       vertex -0.02 -5.782412e-19 -0.03
+       vertex -0.02 -5.782412e-19 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.1 0 -0.03
+       vertex -0.09333333 0 -0.03
+       vertex -0.09333333 0 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.09333333 0 -0.02
+       vertex -0.1 0 -0.02
+       vertex -0.1 0 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.09333333 0 -0.03
+       vertex -0.08666667 0 -0.03
+       vertex -0.08666667 0 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.08666667 0 -0.02
+       vertex -0.09333333 0 -0.02
+       vertex -0.09333333 0 -0.03
+    endloop
+  endfacet
+  facet normal 1.734722e-16 -1 -1.156482e-16
+    outer loop
+       vertex -0.08666667 0 -0.03
+       vertex -0.08 1.156482e-18 -0.03
+       vertex -0.08 0 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.08 0 -0.02
+       vertex -0.08666667 0 -0.02
+       vertex -0.08666667 0 -0.03
+    endloop
+  endfacet
+  facet normal -1.734722e-16 -1 0
+    outer loop
+       vertex -0.08 1.156482e-18 -0.03
+       vertex -0.07333333 0 -0.03
+       vertex -0.07333333 0 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 -1.156482e-16
+    outer loop
+       vertex -0.07333333 0 -0.02
+       vertex -0.08 0 -0.02
+       vertex -0.08 1.156482e-18 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.07333333 0 -0.03
+       vertex -0.06666667 0 -0.03
+       vertex -0.06666667 0 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.06666667 0 -0.02
+       vertex -0.07333333 0 -0.02
+       vertex -0.07333333 0 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.06666667 0 -0.03
+       vertex -0.06 0 -0.03
+       vertex -0.06 0 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.06 0 -0.02
+       vertex -0.06666667 0 -0.02
+       vertex -0.06666667 0 -0.03
+    endloop
+  endfacet
+  facet normal -8.673614e-17 -1 0
+    outer loop
+       vertex -0.06 0 -0.03
+       vertex -0.05333333 -5.782412e-19 -0.03
+       vertex -0.05333333 -5.782412e-19 -0.02
+    endloop
+  endfacet
+  facet normal -8.673614e-17 -1 0
+    outer loop
+       vertex -0.05333333 -5.782412e-19 -0.02
+       vertex -0.06 0 -0.02
+       vertex -0.06 0 -0.03
+    endloop
+  endfacet
+  facet normal 8.673627e-17 -1 0
+    outer loop
+       vertex -0.05333333 -5.782412e-19 -0.03
+       vertex -0.04666667 0 -0.03
+       vertex -0.04666667 0 -0.02
+    endloop
+  endfacet
+  facet normal 8.673627e-17 -1 0
+    outer loop
+       vertex -0.04666667 0 -0.02
+       vertex -0.05333333 -5.782412e-19 -0.02
+       vertex -0.05333333 -5.782412e-19 -0.03
+    endloop
+  endfacet
+  facet normal 8.673614e-17 -1 0
+    outer loop
+       vertex -0.04666667 0 -0.03
+       vertex -0.04 5.782412e-19 -0.03
+       vertex -0.04 5.782412e-19 -0.02
+    endloop
+  endfacet
+  facet normal 8.673614e-17 -1 0
+    outer loop
+       vertex -0.04 5.782412e-19 -0.02
+       vertex -0.04666667 0 -0.02
+       vertex -0.04666667 0 -0.03
+    endloop
+  endfacet
+  facet normal -1.734723e-16 -1 0
+    outer loop
+       vertex -0.04 5.782412e-19 -0.03
+       vertex -0.03333333 -5.782412e-19 -0.03
+       vertex -0.03333333 -5.782412e-19 -0.02
+    endloop
+  endfacet
+  facet normal -1.734723e-16 -1 0
+    outer loop
+       vertex -0.03333333 -5.782412e-19 -0.02
+       vertex -0.04 5.782412e-19 -0.02
+       vertex -0.04 5.782412e-19 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 5.782412e-17
+    outer loop
+       vertex -0.03333333 -5.782412e-19 -0.03
+       vertex -0.02666667 -5.782412e-19 -0.03
+       vertex -0.02666667 0 -0.02
+    endloop
+  endfacet
+  facet normal 8.673627e-17 -1 0
+    outer loop
+       vertex -0.02666667 0 -0.02
+       vertex -0.03333333 -5.782412e-19 -0.02
+       vertex -0.03333333 -5.782412e-19 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 5.782412e-17
+    outer loop
+       vertex -0.02666667 -5.782412e-19 -0.03
+       vertex -0.02 -5.782412e-19 -0.03
+       vertex -0.02 0 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 5.782412e-17
+    outer loop
+       vertex -0.02 0 -0.02
+       vertex -0.02666667 0 -0.02
+       vertex -0.02666667 -5.782412e-19 -0.03
+    endloop
+  endfacet
+  facet normal 8.673614e-17 -1 0
+    outer loop
+       vertex -0.02 -5.782412e-19 -0.03
+       vertex -0.01333333 0 -0.03
+       vertex -0.01333333 0 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 5.782412e-17
+    outer loop
+       vertex -0.01333333 0 -0.02
+       vertex -0.02 0 -0.02
+       vertex -0.02 -5.782412e-19 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.1 0 -0.02
+       vertex -0.09333333 0 -0.02
+       vertex -0.09333333 0 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.09333333 0 -0.01
+       vertex -0.1 0 -0.01
+       vertex -0.1 0 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.09333333 0 -0.02
+       vertex -0.08666667 0 -0.02
+       vertex -0.08666667 0 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.08666667 0 -0.01
+       vertex -0.09333333 0 -0.01
+       vertex -0.09333333 0 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.08666667 0 -0.02
+       vertex -0.08 0 -0.02
+       vertex -0.08 0 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.08 0 -0.01
+       vertex -0.08666667 0 -0.01
+       vertex -0.08666667 0 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.08 0 -0.02
+       vertex -0.07333333 0 -0.02
+       vertex -0.07333333 0 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.07333333 0 -0.01
+       vertex -0.08 0 -0.01
+       vertex -0.08 0 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.07333333 0 -0.02
+       vertex -0.06666667 0 -0.02
+       vertex -0.06666667 0 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.06666667 0 -0.01
+       vertex -0.07333333 0 -0.01
+       vertex -0.07333333 0 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.06666667 0 -0.02
+       vertex -0.06 0 -0.02
+       vertex -0.06 0 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.06 0 -0.01
+       vertex -0.06666667 0 -0.01
+       vertex -0.06666667 0 -0.02
+    endloop
+  endfacet
+  facet normal -8.673614e-17 -1 0
+    outer loop
+       vertex -0.06 0 -0.02
+       vertex -0.05333333 -5.782412e-19 -0.02
+       vertex -0.05333333 -5.782412e-19 -0.01
+    endloop
+  endfacet
+  facet normal -8.673614e-17 -1 0
+    outer loop
+       vertex -0.05333333 -5.782412e-19 -0.01
+       vertex -0.06 0 -0.01
+       vertex -0.06 0 -0.02
+    endloop
+  endfacet
+  facet normal 8.673627e-17 -1 0
+    outer loop
+       vertex -0.05333333 -5.782412e-19 -0.02
+       vertex -0.04666667 0 -0.02
+       vertex -0.04666667 0 -0.01
+    endloop
+  endfacet
+  facet normal 8.673627e-17 -1 0
+    outer loop
+       vertex -0.04666667 0 -0.01
+       vertex -0.05333333 -5.782412e-19 -0.01
+       vertex -0.05333333 -5.782412e-19 -0.02
+    endloop
+  endfacet
+  facet normal 8.673614e-17 -1 0
+    outer loop
+       vertex -0.04666667 0 -0.02
+       vertex -0.04 5.782412e-19 -0.02
+       vertex -0.04 5.782412e-19 -0.01
+    endloop
+  endfacet
+  facet normal 8.673614e-17 -1 0
+    outer loop
+       vertex -0.04 5.782412e-19 -0.01
+       vertex -0.04666667 0 -0.01
+       vertex -0.04666667 0 -0.02
+    endloop
+  endfacet
+  facet normal -1.734723e-16 -1 0
+    outer loop
+       vertex -0.04 5.782412e-19 -0.02
+       vertex -0.03333333 -5.782412e-19 -0.02
+       vertex -0.03333333 -5.782412e-19 -0.01
+    endloop
+  endfacet
+  facet normal -1.734723e-16 -1 0
+    outer loop
+       vertex -0.03333333 -5.782412e-19 -0.01
+       vertex -0.04 5.782412e-19 -0.01
+       vertex -0.04 5.782412e-19 -0.02
+    endloop
+  endfacet
+  facet normal 8.673627e-17 -1 0
+    outer loop
+       vertex -0.03333333 -5.782412e-19 -0.02
+       vertex -0.02666667 0 -0.02
+       vertex -0.02666667 0 -0.01
+    endloop
+  endfacet
+  facet normal 8.673627e-17 -1 0
+    outer loop
+       vertex -0.02666667 0 -0.01
+       vertex -0.03333333 -5.782412e-19 -0.01
+       vertex -0.03333333 -5.782412e-19 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.02666667 0 -0.02
+       vertex -0.02 0 -0.02
+       vertex -0.02 0 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.02 0 -0.01
+       vertex -0.02666667 0 -0.01
+       vertex -0.02666667 0 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.02 0 -0.02
+       vertex -0.01333333 0 -0.02
+       vertex -0.01333333 0 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.01333333 0 -0.01
+       vertex -0.02 0 -0.01
+       vertex -0.02 0 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.1 0 -0.01
+       vertex -0.09333333 0 -0.01
+       vertex -0.09333333 0 0
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.09333333 0 0
+       vertex -0.1 0 0
+       vertex -0.1 0 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.09333333 0 -0.01
+       vertex -0.08666667 0 -0.01
+       vertex -0.08666667 0 0
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.08666667 0 0
+       vertex -0.09333333 0 0
+       vertex -0.09333333 0 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.08666667 0 0
+       vertex -0.08666667 0 -0.01
+       vertex -0.08 0 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.08 0 -0.01
+       vertex -0.08 0 1.156482e-18
+       vertex -0.08666667 0 0
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.07333333 0 0
+       vertex -0.08 0 1.156482e-18
+       vertex -0.08 0 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.08 0 -0.01
+       vertex -0.07333333 0 -0.01
+       vertex -0.07333333 0 0
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.07333333 0 -0.01
+       vertex -0.06666667 0 -0.01
+       vertex -0.06666667 0 0
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.06666667 0 0
+       vertex -0.07333333 0 0
+       vertex -0.07333333 0 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.06666667 0 -0.01
+       vertex -0.06 0 -0.01
+       vertex -0.06 0 0
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.06 0 0
+       vertex -0.06666667 0 0
+       vertex -0.06666667 0 -0.01
+    endloop
+  endfacet
+  facet normal -8.673614e-17 -1 0
+    outer loop
+       vertex -0.06 0 -0.01
+       vertex -0.05333333 -5.782412e-19 -0.01
+       vertex -0.05333333 -5.782412e-19 0
+    endloop
+  endfacet
+  facet normal -8.673614e-17 -1 0
+    outer loop
+       vertex -0.05333333 -5.782412e-19 0
+       vertex -0.06 0 0
+       vertex -0.06 0 -0.01
+    endloop
+  endfacet
+  facet normal 8.673627e-17 -1 0
+    outer loop
+       vertex -0.05333333 -5.782412e-19 -0.01
+       vertex -0.04666667 0 -0.01
+       vertex -0.04666667 0 0
+    endloop
+  endfacet
+  facet normal 8.673627e-17 -1 0
+    outer loop
+       vertex -0.04666667 0 0
+       vertex -0.05333333 -5.782412e-19 0
+       vertex -0.05333333 -5.782412e-19 -0.01
+    endloop
+  endfacet
+  facet normal 8.673614e-17 -1 0
+    outer loop
+       vertex -0.04666667 0 -0.01
+       vertex -0.04 5.782412e-19 -0.01
+       vertex -0.04 5.782412e-19 0
+    endloop
+  endfacet
+  facet normal 8.673614e-17 -1 0
+    outer loop
+       vertex -0.04 5.782412e-19 0
+       vertex -0.04666667 0 0
+       vertex -0.04666667 0 -0.01
+    endloop
+  endfacet
+  facet normal -1.734723e-16 -1 0
+    outer loop
+       vertex -0.04 5.782412e-19 -0.01
+       vertex -0.03333333 -5.782412e-19 -0.01
+       vertex -0.03333333 -5.782412e-19 0
+    endloop
+  endfacet
+  facet normal -1.734723e-16 -1 0
+    outer loop
+       vertex -0.03333333 -5.782412e-19 0
+       vertex -0.04 5.782412e-19 0
+       vertex -0.04 5.782412e-19 -0.01
+    endloop
+  endfacet
+  facet normal 8.673627e-17 -1 0
+    outer loop
+       vertex -0.03333333 -5.782412e-19 -0.01
+       vertex -0.02666667 0 -0.01
+       vertex -0.02666667 0 0
+    endloop
+  endfacet
+  facet normal 8.673627e-17 -1 0
+    outer loop
+       vertex -0.02666667 0 0
+       vertex -0.03333333 -5.782412e-19 0
+       vertex -0.03333333 -5.782412e-19 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.02666667 0 -0.01
+       vertex -0.02 0 -0.01
+       vertex -0.02 0 0
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.02 0 0
+       vertex -0.02666667 0 0
+       vertex -0.02666667 0 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.02 0 -0.01
+       vertex -0.01333333 0 -0.01
+       vertex -0.01333333 0 0
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.01333333 0 0
+       vertex -0.02 0 0
+       vertex -0.02 0 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.1 0 0
+       vertex -0.09333333 0 0
+       vertex -0.09333333 0 0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.09333333 0 0.01
+       vertex -0.1 0 0.01
+       vertex -0.1 0 0
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.09333333 0 0
+       vertex -0.08666667 0 0
+       vertex -0.08666667 0 0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.08666667 0 0.01
+       vertex -0.09333333 0 0.01
+       vertex -0.09333333 0 0
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.08 0 1.156482e-18
+       vertex -0.08 0 0.01
+       vertex -0.08666667 0 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.08666667 0 0.01
+       vertex -0.08666667 0 0
+       vertex -0.08 0 1.156482e-18
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.08 0 1.156482e-18
+       vertex -0.07333333 0 0
+       vertex -0.07333333 0 0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.07333333 0 0.01
+       vertex -0.08 0 0.01
+       vertex -0.08 0 1.156482e-18
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.07333333 0 0
+       vertex -0.06666667 0 0
+       vertex -0.06666667 0 0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.06666667 0 0.01
+       vertex -0.07333333 0 0.01
+       vertex -0.07333333 0 0
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.06666667 0 0
+       vertex -0.06 0 0
+       vertex -0.06 0 0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.06 0 0.01
+       vertex -0.06666667 0 0.01
+       vertex -0.06666667 0 0
+    endloop
+  endfacet
+  facet normal -8.673614e-17 -1 0
+    outer loop
+       vertex -0.06 0 0
+       vertex -0.05333333 -5.782412e-19 0
+       vertex -0.05333333 -5.782412e-19 0.01
+    endloop
+  endfacet
+  facet normal -8.673614e-17 -1 0
+    outer loop
+       vertex -0.05333333 -5.782412e-19 0.01
+       vertex -0.06 0 0.01
+       vertex -0.06 0 0
+    endloop
+  endfacet
+  facet normal 8.673627e-17 -1 0
+    outer loop
+       vertex -0.05333333 -5.782412e-19 0
+       vertex -0.04666667 0 0
+       vertex -0.04666667 0 0.01
+    endloop
+  endfacet
+  facet normal 8.673627e-17 -1 0
+    outer loop
+       vertex -0.04666667 0 0.01
+       vertex -0.05333333 -5.782412e-19 0.01
+       vertex -0.05333333 -5.782412e-19 0
+    endloop
+  endfacet
+  facet normal 8.673614e-17 -1 0
+    outer loop
+       vertex -0.04666667 0 0
+       vertex -0.04 5.782412e-19 0
+       vertex -0.04 5.782412e-19 0.01
+    endloop
+  endfacet
+  facet normal 8.673614e-17 -1 0
+    outer loop
+       vertex -0.04 5.782412e-19 0.01
+       vertex -0.04666667 0 0.01
+       vertex -0.04666667 0 0
+    endloop
+  endfacet
+  facet normal -1.734723e-16 -1 0
+    outer loop
+       vertex -0.04 5.782412e-19 0
+       vertex -0.03333333 -5.782412e-19 0
+       vertex -0.03333333 -5.782412e-19 0.01
+    endloop
+  endfacet
+  facet normal -1.734723e-16 -1 0
+    outer loop
+       vertex -0.03333333 -5.782412e-19 0.01
+       vertex -0.04 5.782412e-19 0.01
+       vertex -0.04 5.782412e-19 0
+    endloop
+  endfacet
+  facet normal 8.673627e-17 -1 0
+    outer loop
+       vertex -0.03333333 -5.782412e-19 0
+       vertex -0.02666667 0 0
+       vertex -0.02666667 0 0.01
+    endloop
+  endfacet
+  facet normal 8.673627e-17 -1 0
+    outer loop
+       vertex -0.02666667 0 0.01
+       vertex -0.03333333 -5.782412e-19 0.01
+       vertex -0.03333333 -5.782412e-19 0
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.02666667 0 0
+       vertex -0.02 0 0
+       vertex -0.02 0 0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.02 0 0.01
+       vertex -0.02666667 0 0.01
+       vertex -0.02666667 0 0
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.02 0 0
+       vertex -0.01333333 0 0
+       vertex -0.01333333 0 0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.01333333 0 0.01
+       vertex -0.02 0 0.01
+       vertex -0.02 0 0
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.1 0 0.01
+       vertex -0.09333333 0 0.01
+       vertex -0.09333333 0 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.09333333 0 0.02
+       vertex -0.1 0 0.02
+       vertex -0.1 0 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.09333333 0 0.01
+       vertex -0.08666667 0 0.01
+       vertex -0.08666667 0 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.08666667 0 0.02
+       vertex -0.09333333 0 0.02
+       vertex -0.09333333 0 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.08666667 0 0.01
+       vertex -0.08 0 0.01
+       vertex -0.08 0 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.08 0 0.02
+       vertex -0.08666667 0 0.02
+       vertex -0.08666667 0 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.08 0 0.01
+       vertex -0.07333333 0 0.01
+       vertex -0.07333333 0 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.07333333 0 0.02
+       vertex -0.08 0 0.02
+       vertex -0.08 0 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.07333333 0 0.01
+       vertex -0.06666667 0 0.01
+       vertex -0.06666667 0 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.06666667 0 0.02
+       vertex -0.07333333 0 0.02
+       vertex -0.07333333 0 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.06666667 0 0.01
+       vertex -0.06 0 0.01
+       vertex -0.06 0 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.06 0 0.02
+       vertex -0.06666667 0 0.02
+       vertex -0.06666667 0 0.01
+    endloop
+  endfacet
+  facet normal -8.673614e-17 -1 0
+    outer loop
+       vertex -0.06 0 0.01
+       vertex -0.05333333 -5.782412e-19 0.01
+       vertex -0.05333333 -5.782412e-19 0.02
+    endloop
+  endfacet
+  facet normal -8.673614e-17 -1 0
+    outer loop
+       vertex -0.05333333 -5.782412e-19 0.02
+       vertex -0.06 0 0.02
+       vertex -0.06 0 0.01
+    endloop
+  endfacet
+  facet normal 8.673627e-17 -1 0
+    outer loop
+       vertex -0.05333333 -5.782412e-19 0.01
+       vertex -0.04666667 0 0.01
+       vertex -0.04666667 0 0.02
+    endloop
+  endfacet
+  facet normal 8.673627e-17 -1 0
+    outer loop
+       vertex -0.04666667 0 0.02
+       vertex -0.05333333 -5.782412e-19 0.02
+       vertex -0.05333333 -5.782412e-19 0.01
+    endloop
+  endfacet
+  facet normal 8.673614e-17 -1 0
+    outer loop
+       vertex -0.04666667 0 0.01
+       vertex -0.04 5.782412e-19 0.01
+       vertex -0.04 5.782412e-19 0.02
+    endloop
+  endfacet
+  facet normal 8.673614e-17 -1 0
+    outer loop
+       vertex -0.04 5.782412e-19 0.02
+       vertex -0.04666667 0 0.02
+       vertex -0.04666667 0 0.01
+    endloop
+  endfacet
+  facet normal -1.734723e-16 -1 0
+    outer loop
+       vertex -0.04 5.782412e-19 0.01
+       vertex -0.03333333 -5.782412e-19 0.01
+       vertex -0.03333333 -5.782412e-19 0.02
+    endloop
+  endfacet
+  facet normal -1.734723e-16 -1 0
+    outer loop
+       vertex -0.03333333 -5.782412e-19 0.02
+       vertex -0.04 5.782412e-19 0.02
+       vertex -0.04 5.782412e-19 0.01
+    endloop
+  endfacet
+  facet normal 8.673627e-17 -1 0
+    outer loop
+       vertex -0.03333333 -5.782412e-19 0.01
+       vertex -0.02666667 0 0.01
+       vertex -0.02666667 0 0.02
+    endloop
+  endfacet
+  facet normal 8.673627e-17 -1 0
+    outer loop
+       vertex -0.02666667 0 0.02
+       vertex -0.03333333 -5.782412e-19 0.02
+       vertex -0.03333333 -5.782412e-19 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.02666667 0 0.01
+       vertex -0.02 0 0.01
+       vertex -0.02 0 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.02 0 0.02
+       vertex -0.02666667 0 0.02
+       vertex -0.02666667 0 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.02 0 0.01
+       vertex -0.01333333 0 0.01
+       vertex -0.01333333 0 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.01333333 0 0.02
+       vertex -0.02 0 0.02
+       vertex -0.02 0 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.1 0 0.02
+       vertex -0.09333333 0 0.02
+       vertex -0.09333333 0 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.09333333 0 0.03
+       vertex -0.1 0 0.03
+       vertex -0.1 0 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.09333333 0 0.02
+       vertex -0.08666667 0 0.02
+       vertex -0.08666667 0 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.08666667 0 0.03
+       vertex -0.09333333 0 0.03
+       vertex -0.09333333 0 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.08666667 0 0.02
+       vertex -0.08 0 0.02
+       vertex -0.08 0 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.08 0 0.03
+       vertex -0.08666667 0 0.03
+       vertex -0.08666667 0 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.08 0 0.02
+       vertex -0.07333333 0 0.02
+       vertex -0.07333333 0 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.07333333 0 0.03
+       vertex -0.08 0 0.03
+       vertex -0.08 0 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.07333333 0 0.02
+       vertex -0.06666667 0 0.02
+       vertex -0.06666667 0 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.06666667 0 0.03
+       vertex -0.07333333 0 0.03
+       vertex -0.07333333 0 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.06666667 0 0.02
+       vertex -0.06 0 0.02
+       vertex -0.06 0 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.06 0 0.03
+       vertex -0.06666667 0 0.03
+       vertex -0.06666667 0 0.02
+    endloop
+  endfacet
+  facet normal -8.673614e-17 -1 0
+    outer loop
+       vertex -0.06 0 0.02
+       vertex -0.05333333 -5.782412e-19 0.02
+       vertex -0.05333333 -5.782412e-19 0.03
+    endloop
+  endfacet
+  facet normal -8.673614e-17 -1 0
+    outer loop
+       vertex -0.05333333 -5.782412e-19 0.03
+       vertex -0.06 0 0.03
+       vertex -0.06 0 0.02
+    endloop
+  endfacet
+  facet normal 8.673627e-17 -1 0
+    outer loop
+       vertex -0.05333333 -5.782412e-19 0.02
+       vertex -0.04666667 0 0.02
+       vertex -0.04666667 0 0.03
+    endloop
+  endfacet
+  facet normal 8.673627e-17 -1 0
+    outer loop
+       vertex -0.04666667 0 0.03
+       vertex -0.05333333 -5.782412e-19 0.03
+       vertex -0.05333333 -5.782412e-19 0.02
+    endloop
+  endfacet
+  facet normal 8.673614e-17 -1 0
+    outer loop
+       vertex -0.04666667 0 0.02
+       vertex -0.04 5.782412e-19 0.02
+       vertex -0.04 5.782412e-19 0.03
+    endloop
+  endfacet
+  facet normal 8.673614e-17 -1 0
+    outer loop
+       vertex -0.04 5.782412e-19 0.03
+       vertex -0.04666667 0 0.03
+       vertex -0.04666667 0 0.02
+    endloop
+  endfacet
+  facet normal -1.734723e-16 -1 0
+    outer loop
+       vertex -0.04 5.782412e-19 0.02
+       vertex -0.03333333 -5.782412e-19 0.02
+       vertex -0.03333333 -5.782412e-19 0.03
+    endloop
+  endfacet
+  facet normal -1.734723e-16 -1 0
+    outer loop
+       vertex -0.03333333 -5.782412e-19 0.03
+       vertex -0.04 5.782412e-19 0.03
+       vertex -0.04 5.782412e-19 0.02
+    endloop
+  endfacet
+  facet normal 8.673627e-17 -1 0
+    outer loop
+       vertex -0.03333333 -5.782412e-19 0.02
+       vertex -0.02666667 0 0.02
+       vertex -0.02666667 0 0.03
+    endloop
+  endfacet
+  facet normal 8.673627e-17 -1 0
+    outer loop
+       vertex -0.02666667 0 0.03
+       vertex -0.03333333 -5.782412e-19 0.03
+       vertex -0.03333333 -5.782412e-19 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.02666667 0 0.02
+       vertex -0.02 0 0.02
+       vertex -0.02 0 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.02 0 0.03
+       vertex -0.02666667 0 0.03
+       vertex -0.02666667 0 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.02 0 0.02
+       vertex -0.01333333 0 0.02
+       vertex -0.01333333 0 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.01333333 0 0.03
+       vertex -0.02 0 0.03
+       vertex -0.02 0 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.1 0 0.03
+       vertex -0.09333333 0 0.03
+       vertex -0.09333333 0 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.09333333 0 0.04
+       vertex -0.1 0 0.04
+       vertex -0.1 0 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.09333333 0 0.03
+       vertex -0.08666667 0 0.03
+       vertex -0.08666667 0 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.08666667 0 0.04
+       vertex -0.09333333 0 0.04
+       vertex -0.09333333 0 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.08666667 0 0.03
+       vertex -0.08 0 0.03
+       vertex -0.08 0 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.08 0 0.04
+       vertex -0.08666667 0 0.04
+       vertex -0.08666667 0 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.08 0 0.03
+       vertex -0.07333333 0 0.03
+       vertex -0.07333333 0 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.07333333 0 0.04
+       vertex -0.08 0 0.04
+       vertex -0.08 0 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.07333333 0 0.03
+       vertex -0.06666667 0 0.03
+       vertex -0.06666667 0 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.06666667 0 0.04
+       vertex -0.07333333 0 0.04
+       vertex -0.07333333 0 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.06666667 0 0.03
+       vertex -0.06 0 0.03
+       vertex -0.06 0 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.06 0 0.04
+       vertex -0.06666667 0 0.04
+       vertex -0.06666667 0 0.03
+    endloop
+  endfacet
+  facet normal -8.673614e-17 -1 0
+    outer loop
+       vertex -0.06 0 0.03
+       vertex -0.05333333 -5.782412e-19 0.03
+       vertex -0.05333333 -5.782412e-19 0.04
+    endloop
+  endfacet
+  facet normal -8.673614e-17 -1 0
+    outer loop
+       vertex -0.05333333 -5.782412e-19 0.04
+       vertex -0.06 0 0.04
+       vertex -0.06 0 0.03
+    endloop
+  endfacet
+  facet normal 8.673627e-17 -1 0
+    outer loop
+       vertex -0.05333333 -5.782412e-19 0.03
+       vertex -0.04666667 0 0.03
+       vertex -0.04666667 0 0.04
+    endloop
+  endfacet
+  facet normal 8.673627e-17 -1 0
+    outer loop
+       vertex -0.04666667 0 0.04
+       vertex -0.05333333 -5.782412e-19 0.04
+       vertex -0.05333333 -5.782412e-19 0.03
+    endloop
+  endfacet
+  facet normal 8.673614e-17 -1 0
+    outer loop
+       vertex -0.04666667 0 0.03
+       vertex -0.04 5.782412e-19 0.03
+       vertex -0.04 5.782412e-19 0.04
+    endloop
+  endfacet
+  facet normal 8.673614e-17 -1 0
+    outer loop
+       vertex -0.04 5.782412e-19 0.04
+       vertex -0.04666667 0 0.04
+       vertex -0.04666667 0 0.03
+    endloop
+  endfacet
+  facet normal -1.734723e-16 -1 0
+    outer loop
+       vertex -0.04 5.782412e-19 0.03
+       vertex -0.03333333 -5.782412e-19 0.03
+       vertex -0.03333333 -5.782412e-19 0.04
+    endloop
+  endfacet
+  facet normal -1.734723e-16 -1 0
+    outer loop
+       vertex -0.03333333 -5.782412e-19 0.04
+       vertex -0.04 5.782412e-19 0.04
+       vertex -0.04 5.782412e-19 0.03
+    endloop
+  endfacet
+  facet normal 8.673627e-17 -1 5.782412e-17
+    outer loop
+       vertex -0.03333333 -5.782412e-19 0.03
+       vertex -0.02666667 0 0.03
+       vertex -0.02666667 5.782412e-19 0.04
+    endloop
+  endfacet
+  facet normal 1.734725e-16 -1 0
+    outer loop
+       vertex -0.02666667 5.782412e-19 0.04
+       vertex -0.03333333 -5.782412e-19 0.04
+       vertex -0.03333333 -5.782412e-19 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.02666667 0 0.03
+       vertex -0.02 0 0.03
+       vertex -0.02 0 0.04
+    endloop
+  endfacet
+  facet normal -8.673614e-17 -1 5.782412e-17
+    outer loop
+       vertex -0.02 0 0.04
+       vertex -0.02666667 5.782412e-19 0.04
+       vertex -0.02666667 0 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.02 0 0.03
+       vertex -0.01333333 0 0.03
+       vertex -0.01333333 0 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.01333333 0 0.04
+       vertex -0.02 0 0.04
+       vertex -0.02 0 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.1 0 0.04
+       vertex -0.09333333 0 0.04
+       vertex -0.09333333 0 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.09333333 0 0.05
+       vertex -0.1 0 0.05
+       vertex -0.1 0 0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.09333333 0 0.04
+       vertex -0.08666667 0 0.04
+       vertex -0.08666667 0 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.08666667 0 0.05
+       vertex -0.09333333 0 0.05
+       vertex -0.09333333 0 0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.08666667 0 0.04
+       vertex -0.08 0 0.04
+       vertex -0.08 0 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.08 0 0.05
+       vertex -0.08666667 0 0.05
+       vertex -0.08666667 0 0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.08 0 0.04
+       vertex -0.07333333 0 0.04
+       vertex -0.07333333 0 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.07333333 0 0.05
+       vertex -0.08 0 0.05
+       vertex -0.08 0 0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.07333333 0 0.04
+       vertex -0.06666667 0 0.04
+       vertex -0.06666667 0 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.06666667 0 0.05
+       vertex -0.07333333 0 0.05
+       vertex -0.07333333 0 0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.06666667 0 0.04
+       vertex -0.06 0 0.04
+       vertex -0.06 0 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.06 0 0.05
+       vertex -0.06666667 0 0.05
+       vertex -0.06666667 0 0.04
+    endloop
+  endfacet
+  facet normal -8.673614e-17 -1 0
+    outer loop
+       vertex -0.06 0 0.04
+       vertex -0.05333333 -5.782412e-19 0.04
+       vertex -0.05333333 -5.782412e-19 0.05
+    endloop
+  endfacet
+  facet normal -8.673614e-17 -1 0
+    outer loop
+       vertex -0.05333333 -5.782412e-19 0.05
+       vertex -0.06 0 0.05
+       vertex -0.06 0 0.04
+    endloop
+  endfacet
+  facet normal 8.673627e-17 -1 0
+    outer loop
+       vertex -0.05333333 -5.782412e-19 0.04
+       vertex -0.04666667 0 0.04
+       vertex -0.04666667 0 0.05
+    endloop
+  endfacet
+  facet normal 8.673627e-17 -1 0
+    outer loop
+       vertex -0.04666667 0 0.05
+       vertex -0.05333333 -5.782412e-19 0.05
+       vertex -0.05333333 -5.782412e-19 0.04
+    endloop
+  endfacet
+  facet normal 8.673614e-17 -1 0
+    outer loop
+       vertex -0.04666667 0 0.04
+       vertex -0.04 5.782412e-19 0.04
+       vertex -0.04 5.782412e-19 0.05
+    endloop
+  endfacet
+  facet normal 8.673614e-17 -1 0
+    outer loop
+       vertex -0.04 5.782412e-19 0.05
+       vertex -0.04666667 0 0.05
+       vertex -0.04666667 0 0.04
+    endloop
+  endfacet
+  facet normal -1.734723e-16 -1 0
+    outer loop
+       vertex -0.04 5.782412e-19 0.04
+       vertex -0.03333333 -5.782412e-19 0.04
+       vertex -0.03333333 -5.782412e-19 0.05
+    endloop
+  endfacet
+  facet normal -1.734723e-16 -1 0
+    outer loop
+       vertex -0.03333333 -5.782412e-19 0.05
+       vertex -0.04 5.782412e-19 0.05
+       vertex -0.04 5.782412e-19 0.04
+    endloop
+  endfacet
+  facet normal 1.734725e-16 -1 -5.782412e-17
+    outer loop
+       vertex -0.03333333 -5.782412e-19 0.04
+       vertex -0.02666667 5.782412e-19 0.04
+       vertex -0.02666667 0 0.05
+    endloop
+  endfacet
+  facet normal 8.673627e-17 -1 0
+    outer loop
+       vertex -0.02666667 0 0.05
+       vertex -0.03333333 -5.782412e-19 0.05
+       vertex -0.03333333 -5.782412e-19 0.04
+    endloop
+  endfacet
+  facet normal -8.673614e-17 -1 0
+    outer loop
+       vertex -0.02666667 5.782412e-19 0.04
+       vertex -0.02 0 0.04
+       vertex -0.02 0 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 -5.782412e-17
+    outer loop
+       vertex -0.02 0 0.05
+       vertex -0.02666667 0 0.05
+       vertex -0.02666667 5.782412e-19 0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.02 0 0.04
+       vertex -0.01333333 0 0.04
+       vertex -0.01333333 0 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.01333333 0 0.05
+       vertex -0.02 0 0.05
+       vertex -0.02 0 0.04
+    endloop
+  endfacet
+endsolid leftSolid_to_bottomAir
+solid leftSolid_to_heater
+  facet normal 1 0 0
+    outer loop
+       vertex -0.01333333 0 -0.05
+       vertex -0.01333333 0.008 -0.05
+       vertex -0.01333333 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex -0.01333333 0.008 -0.04
+       vertex -0.01333333 0 -0.04
+       vertex -0.01333333 0 -0.05
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex -0.01333333 0 -0.04
+       vertex -0.01333333 0.008 -0.04
+       vertex -0.01333333 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex -0.01333333 0.008 -0.03
+       vertex -0.01333333 0 -0.03
+       vertex -0.01333333 0 -0.04
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex -0.01333333 0 -0.03
+       vertex -0.01333333 0.008 -0.03
+       vertex -0.01333333 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex -0.01333333 0.008 -0.02
+       vertex -0.01333333 0 -0.02
+       vertex -0.01333333 0 -0.03
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex -0.01333333 0 -0.02
+       vertex -0.01333333 0.008 -0.02
+       vertex -0.01333333 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex -0.01333333 0.008 -0.01
+       vertex -0.01333333 0 -0.01
+       vertex -0.01333333 0 -0.02
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex -0.01333333 0 -0.01
+       vertex -0.01333333 0.008 -0.01
+       vertex -0.01333333 0.008 0
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex -0.01333333 0.008 0
+       vertex -0.01333333 0 0
+       vertex -0.01333333 0 -0.01
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex -0.01333333 0 0
+       vertex -0.01333333 0.008 0
+       vertex -0.01333333 0.008 0.01
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex -0.01333333 0.008 0.01
+       vertex -0.01333333 0 0.01
+       vertex -0.01333333 0 0
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex -0.01333333 0 0.01
+       vertex -0.01333333 0.008 0.01
+       vertex -0.01333333 0.008 0.02
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex -0.01333333 0.008 0.02
+       vertex -0.01333333 0 0.02
+       vertex -0.01333333 0 0.01
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex -0.01333333 0 0.02
+       vertex -0.01333333 0.008 0.02
+       vertex -0.01333333 0.008 0.03
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex -0.01333333 0.008 0.03
+       vertex -0.01333333 0 0.03
+       vertex -0.01333333 0 0.02
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex -0.01333333 0 0.03
+       vertex -0.01333333 0.008 0.03
+       vertex -0.01333333 0.008 0.04
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex -0.01333333 0.008 0.04
+       vertex -0.01333333 0 0.04
+       vertex -0.01333333 0 0.03
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex -0.01333333 0 0.04
+       vertex -0.01333333 0.008 0.04
+       vertex -0.01333333 0.008 0.05
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex -0.01333333 0.008 0.05
+       vertex -0.01333333 0 0.05
+       vertex -0.01333333 0 0.04
+    endloop
+  endfacet
+endsolid leftSolid_to_heater
+solid leftSolid_to_topAir
+  facet normal 0 1 0
+    outer loop
+       vertex -0.1 0.008 -0.05
+       vertex -0.1 0.008 -0.04
+       vertex -0.09333333 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.09333333 0.008 -0.04
+       vertex -0.09333333 0.008 -0.05
+       vertex -0.1 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.09333333 0.008 -0.05
+       vertex -0.09333333 0.008 -0.04
+       vertex -0.08666667 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08666667 0.008 -0.04
+       vertex -0.08666667 0.008 -0.05
+       vertex -0.09333333 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08666667 0.008 -0.05
+       vertex -0.08666667 0.008 -0.04
+       vertex -0.08 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08 0.008 -0.04
+       vertex -0.08 0.008 -0.05
+       vertex -0.08666667 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08 0.008 -0.05
+       vertex -0.08 0.008 -0.04
+       vertex -0.07333333 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.07333333 0.008 -0.04
+       vertex -0.07333333 0.008 -0.05
+       vertex -0.08 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.07333333 0.008 -0.05
+       vertex -0.07333333 0.008 -0.04
+       vertex -0.06666667 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06666667 0.008 -0.04
+       vertex -0.06666667 0.008 -0.05
+       vertex -0.07333333 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06666667 0.008 -0.05
+       vertex -0.06666667 0.008 -0.04
+       vertex -0.06 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06 0.008 -0.04
+       vertex -0.06 0.008 -0.05
+       vertex -0.06666667 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06 0.008 -0.05
+       vertex -0.06 0.008 -0.04
+       vertex -0.05333333 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.05333333 0.008 -0.04
+       vertex -0.05333333 0.008 -0.05
+       vertex -0.06 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.05333333 0.008 -0.05
+       vertex -0.05333333 0.008 -0.04
+       vertex -0.04666667 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04666667 0.008 -0.04
+       vertex -0.04666667 0.008 -0.05
+       vertex -0.05333333 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04666667 0.008 -0.05
+       vertex -0.04666667 0.008 -0.04
+       vertex -0.04 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04 0.008 -0.04
+       vertex -0.04 0.008 -0.05
+       vertex -0.04666667 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04 0.008 -0.05
+       vertex -0.04 0.008 -0.04
+       vertex -0.03333333 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.03333333 0.008 -0.04
+       vertex -0.03333333 0.008 -0.05
+       vertex -0.04 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.03333333 0.008 -0.05
+       vertex -0.03333333 0.008 -0.04
+       vertex -0.02666667 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02666667 0.008 -0.04
+       vertex -0.02666667 0.008 -0.05
+       vertex -0.03333333 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02666667 0.008 -0.05
+       vertex -0.02666667 0.008 -0.04
+       vertex -0.02 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02 0.008 -0.04
+       vertex -0.02 0.008 -0.05
+       vertex -0.02666667 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02 0.008 -0.05
+       vertex -0.02 0.008 -0.04
+       vertex -0.01333333 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.01333333 0.008 -0.04
+       vertex -0.01333333 0.008 -0.05
+       vertex -0.02 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.1 0.008 -0.04
+       vertex -0.1 0.008 -0.03
+       vertex -0.09333333 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.09333333 0.008 -0.03
+       vertex -0.09333333 0.008 -0.04
+       vertex -0.1 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.09333333 0.008 -0.04
+       vertex -0.09333333 0.008 -0.03
+       vertex -0.08666667 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08666667 0.008 -0.03
+       vertex -0.08666667 0.008 -0.04
+       vertex -0.09333333 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08666667 0.008 -0.04
+       vertex -0.08666667 0.008 -0.03
+       vertex -0.08 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08 0.008 -0.03
+       vertex -0.08 0.008 -0.04
+       vertex -0.08666667 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08 0.008 -0.04
+       vertex -0.08 0.008 -0.03
+       vertex -0.07333333 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.07333333 0.008 -0.03
+       vertex -0.07333333 0.008 -0.04
+       vertex -0.08 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.07333333 0.008 -0.04
+       vertex -0.07333333 0.008 -0.03
+       vertex -0.06666667 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06666667 0.008 -0.03
+       vertex -0.06666667 0.008 -0.04
+       vertex -0.07333333 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06666667 0.008 -0.04
+       vertex -0.06666667 0.008 -0.03
+       vertex -0.06 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06 0.008 -0.03
+       vertex -0.06 0.008 -0.04
+       vertex -0.06666667 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06 0.008 -0.04
+       vertex -0.06 0.008 -0.03
+       vertex -0.05333333 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.05333333 0.008 -0.03
+       vertex -0.05333333 0.008 -0.04
+       vertex -0.06 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.05333333 0.008 -0.04
+       vertex -0.05333333 0.008 -0.03
+       vertex -0.04666667 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04666667 0.008 -0.03
+       vertex -0.04666667 0.008 -0.04
+       vertex -0.05333333 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04666667 0.008 -0.04
+       vertex -0.04666667 0.008 -0.03
+       vertex -0.04 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04 0.008 -0.03
+       vertex -0.04 0.008 -0.04
+       vertex -0.04666667 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04 0.008 -0.04
+       vertex -0.04 0.008 -0.03
+       vertex -0.03333333 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.03333333 0.008 -0.03
+       vertex -0.03333333 0.008 -0.04
+       vertex -0.04 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.03333333 0.008 -0.04
+       vertex -0.03333333 0.008 -0.03
+       vertex -0.02666667 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02666667 0.008 -0.03
+       vertex -0.02666667 0.008 -0.04
+       vertex -0.03333333 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02666667 0.008 -0.04
+       vertex -0.02666667 0.008 -0.03
+       vertex -0.02 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02 0.008 -0.03
+       vertex -0.02 0.008 -0.04
+       vertex -0.02666667 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02 0.008 -0.04
+       vertex -0.02 0.008 -0.03
+       vertex -0.01333333 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.01333333 0.008 -0.03
+       vertex -0.01333333 0.008 -0.04
+       vertex -0.02 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.1 0.008 -0.03
+       vertex -0.1 0.008 -0.02
+       vertex -0.09333333 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.09333333 0.008 -0.02
+       vertex -0.09333333 0.008 -0.03
+       vertex -0.1 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.09333333 0.008 -0.03
+       vertex -0.09333333 0.008 -0.02
+       vertex -0.08666667 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08666667 0.008 -0.02
+       vertex -0.08666667 0.008 -0.03
+       vertex -0.09333333 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08666667 0.008 -0.03
+       vertex -0.08666667 0.008 -0.02
+       vertex -0.08 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08 0.008 -0.02
+       vertex -0.08 0.008 -0.03
+       vertex -0.08666667 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08 0.008 -0.03
+       vertex -0.08 0.008 -0.02
+       vertex -0.07333333 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.07333333 0.008 -0.02
+       vertex -0.07333333 0.008 -0.03
+       vertex -0.08 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.07333333 0.008 -0.03
+       vertex -0.07333333 0.008 -0.02
+       vertex -0.06666667 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06666667 0.008 -0.02
+       vertex -0.06666667 0.008 -0.03
+       vertex -0.07333333 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06666667 0.008 -0.03
+       vertex -0.06666667 0.008 -0.02
+       vertex -0.06 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06 0.008 -0.02
+       vertex -0.06 0.008 -0.03
+       vertex -0.06666667 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06 0.008 -0.03
+       vertex -0.06 0.008 -0.02
+       vertex -0.05333333 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.05333333 0.008 -0.02
+       vertex -0.05333333 0.008 -0.03
+       vertex -0.06 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.05333333 0.008 -0.03
+       vertex -0.05333333 0.008 -0.02
+       vertex -0.04666667 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04666667 0.008 -0.02
+       vertex -0.04666667 0.008 -0.03
+       vertex -0.05333333 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04666667 0.008 -0.03
+       vertex -0.04666667 0.008 -0.02
+       vertex -0.04 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04 0.008 -0.02
+       vertex -0.04 0.008 -0.03
+       vertex -0.04666667 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04 0.008 -0.03
+       vertex -0.04 0.008 -0.02
+       vertex -0.03333333 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.03333333 0.008 -0.02
+       vertex -0.03333333 0.008 -0.03
+       vertex -0.04 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.03333333 0.008 -0.03
+       vertex -0.03333333 0.008 -0.02
+       vertex -0.02666667 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02666667 0.008 -0.02
+       vertex -0.02666667 0.008 -0.03
+       vertex -0.03333333 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02666667 0.008 -0.03
+       vertex -0.02666667 0.008 -0.02
+       vertex -0.02 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02 0.008 -0.02
+       vertex -0.02 0.008 -0.03
+       vertex -0.02666667 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02 0.008 -0.03
+       vertex -0.02 0.008 -0.02
+       vertex -0.01333333 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.01333333 0.008 -0.02
+       vertex -0.01333333 0.008 -0.03
+       vertex -0.02 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.1 0.008 -0.02
+       vertex -0.1 0.008 -0.01
+       vertex -0.09333333 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.09333333 0.008 -0.01
+       vertex -0.09333333 0.008 -0.02
+       vertex -0.1 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.09333333 0.008 -0.02
+       vertex -0.09333333 0.008 -0.01
+       vertex -0.08666667 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08666667 0.008 -0.01
+       vertex -0.08666667 0.008 -0.02
+       vertex -0.09333333 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08666667 0.008 -0.02
+       vertex -0.08666667 0.008 -0.01
+       vertex -0.08 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08 0.008 -0.01
+       vertex -0.08 0.008 -0.02
+       vertex -0.08666667 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08 0.008 -0.02
+       vertex -0.08 0.008 -0.01
+       vertex -0.07333333 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.07333333 0.008 -0.01
+       vertex -0.07333333 0.008 -0.02
+       vertex -0.08 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.07333333 0.008 -0.02
+       vertex -0.07333333 0.008 -0.01
+       vertex -0.06666667 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06666667 0.008 -0.01
+       vertex -0.06666667 0.008 -0.02
+       vertex -0.07333333 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06666667 0.008 -0.02
+       vertex -0.06666667 0.008 -0.01
+       vertex -0.06 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06 0.008 -0.01
+       vertex -0.06 0.008 -0.02
+       vertex -0.06666667 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06 0.008 -0.02
+       vertex -0.06 0.008 -0.01
+       vertex -0.05333333 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.05333333 0.008 -0.01
+       vertex -0.05333333 0.008 -0.02
+       vertex -0.06 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.05333333 0.008 -0.02
+       vertex -0.05333333 0.008 -0.01
+       vertex -0.04666667 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04666667 0.008 -0.01
+       vertex -0.04666667 0.008 -0.02
+       vertex -0.05333333 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04666667 0.008 -0.02
+       vertex -0.04666667 0.008 -0.01
+       vertex -0.04 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04 0.008 -0.01
+       vertex -0.04 0.008 -0.02
+       vertex -0.04666667 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04 0.008 -0.02
+       vertex -0.04 0.008 -0.01
+       vertex -0.03333333 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.03333333 0.008 -0.01
+       vertex -0.03333333 0.008 -0.02
+       vertex -0.04 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.03333333 0.008 -0.02
+       vertex -0.03333333 0.008 -0.01
+       vertex -0.02666667 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02666667 0.008 -0.01
+       vertex -0.02666667 0.008 -0.02
+       vertex -0.03333333 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02666667 0.008 -0.02
+       vertex -0.02666667 0.008 -0.01
+       vertex -0.02 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02 0.008 -0.01
+       vertex -0.02 0.008 -0.02
+       vertex -0.02666667 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02 0.008 -0.02
+       vertex -0.02 0.008 -0.01
+       vertex -0.01333333 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.01333333 0.008 -0.01
+       vertex -0.01333333 0.008 -0.02
+       vertex -0.02 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.1 0.008 -0.01
+       vertex -0.1 0.008 0
+       vertex -0.09333333 0.008 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.09333333 0.008 0
+       vertex -0.09333333 0.008 -0.01
+       vertex -0.1 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.09333333 0.008 -0.01
+       vertex -0.09333333 0.008 0
+       vertex -0.08666667 0.008 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08666667 0.008 0
+       vertex -0.08666667 0.008 -0.01
+       vertex -0.09333333 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08666667 0.008 -0.01
+       vertex -0.08666667 0.008 0
+       vertex -0.08 0.008 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08 0.008 0
+       vertex -0.08 0.008 -0.01
+       vertex -0.08666667 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08 0.008 -0.01
+       vertex -0.08 0.008 0
+       vertex -0.07333333 0.008 5.782412e-19
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.07333333 0.008 5.782412e-19
+       vertex -0.07333333 0.008 -0.01
+       vertex -0.08 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.07333333 0.008 -0.01
+       vertex -0.07333333 0.008 5.782412e-19
+       vertex -0.06666667 0.008 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06666667 0.008 0
+       vertex -0.06666667 0.008 -0.01
+       vertex -0.07333333 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06666667 0.008 -0.01
+       vertex -0.06666667 0.008 0
+       vertex -0.06 0.008 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06 0.008 0
+       vertex -0.06 0.008 -0.01
+       vertex -0.06666667 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06 0.008 -0.01
+       vertex -0.06 0.008 0
+       vertex -0.05333333 0.008 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.05333333 0.008 0
+       vertex -0.05333333 0.008 -0.01
+       vertex -0.06 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.05333333 0.008 -0.01
+       vertex -0.05333333 0.008 0
+       vertex -0.04666667 0.008 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04666667 0.008 0
+       vertex -0.04666667 0.008 -0.01
+       vertex -0.05333333 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04666667 0.008 -0.01
+       vertex -0.04666667 0.008 0
+       vertex -0.04 0.008 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04 0.008 0
+       vertex -0.04 0.008 -0.01
+       vertex -0.04666667 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04 0.008 -0.01
+       vertex -0.04 0.008 0
+       vertex -0.03333333 0.008 5.782412e-19
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.03333333 0.008 5.782412e-19
+       vertex -0.03333333 0.008 -0.01
+       vertex -0.04 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02666667 0.008 -5.782412e-19
+       vertex -0.02666667 0.008 -0.01
+       vertex -0.03333333 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.03333333 0.008 -0.01
+       vertex -0.03333333 0.008 5.782412e-19
+       vertex -0.02666667 0.008 -5.782412e-19
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02666667 0.008 -0.01
+       vertex -0.02666667 0.008 -5.782412e-19
+       vertex -0.02 0.008 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02 0.008 0
+       vertex -0.02 0.008 -0.01
+       vertex -0.02666667 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02 0.008 -0.01
+       vertex -0.02 0.008 0
+       vertex -0.01333333 0.008 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.01333333 0.008 0
+       vertex -0.01333333 0.008 -0.01
+       vertex -0.02 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.1 0.008 0
+       vertex -0.1 0.008 0.01
+       vertex -0.09333333 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.09333333 0.008 0.01
+       vertex -0.09333333 0.008 0
+       vertex -0.1 0.008 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.09333333 0.008 0
+       vertex -0.09333333 0.008 0.01
+       vertex -0.08666667 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08666667 0.008 0.01
+       vertex -0.08666667 0.008 0
+       vertex -0.09333333 0.008 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08666667 0.008 0
+       vertex -0.08666667 0.008 0.01
+       vertex -0.08 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08 0.008 0.01
+       vertex -0.08 0.008 0
+       vertex -0.08666667 0.008 0
+    endloop
+  endfacet
+  facet normal -0 1 0
+    outer loop
+       vertex -0.08 0.008 0.01
+       vertex -0.07333333 0.008 0.01
+       vertex -0.07333333 0.008 5.782412e-19
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.07333333 0.008 5.782412e-19
+       vertex -0.08 0.008 0
+       vertex -0.08 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.07333333 0.008 5.782412e-19
+       vertex -0.07333333 0.008 0.01
+       vertex -0.06666667 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06666667 0.008 0.01
+       vertex -0.06666667 0.008 0
+       vertex -0.07333333 0.008 5.782412e-19
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06666667 0.008 0
+       vertex -0.06666667 0.008 0.01
+       vertex -0.06 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06 0.008 0.01
+       vertex -0.06 0.008 0
+       vertex -0.06666667 0.008 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06 0.008 0
+       vertex -0.06 0.008 0.01
+       vertex -0.05333333 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.05333333 0.008 0.01
+       vertex -0.05333333 0.008 0
+       vertex -0.06 0.008 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.05333333 0.008 0
+       vertex -0.05333333 0.008 0.01
+       vertex -0.04666667 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04666667 0.008 0.01
+       vertex -0.04666667 0.008 0
+       vertex -0.05333333 0.008 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04666667 0.008 0
+       vertex -0.04666667 0.008 0.01
+       vertex -0.04 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04 0.008 0.01
+       vertex -0.04 0.008 0
+       vertex -0.04666667 0.008 0
+    endloop
+  endfacet
+  facet normal -0 1 0
+    outer loop
+       vertex -0.04 0.008 0.01
+       vertex -0.03333333 0.008 0.01
+       vertex -0.03333333 0.008 5.782412e-19
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.03333333 0.008 5.782412e-19
+       vertex -0.04 0.008 0
+       vertex -0.04 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.03333333 0.008 5.782412e-19
+       vertex -0.03333333 0.008 0.01
+       vertex -0.02666667 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02666667 0.008 0.01
+       vertex -0.02666667 0.008 -5.782412e-19
+       vertex -0.03333333 0.008 5.782412e-19
+    endloop
+  endfacet
+  facet normal -0 1 0
+    outer loop
+       vertex -0.02666667 0.008 0.01
+       vertex -0.02 0.008 0.01
+       vertex -0.02 0.008 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02 0.008 0
+       vertex -0.02666667 0.008 -5.782412e-19
+       vertex -0.02666667 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02 0.008 0
+       vertex -0.02 0.008 0.01
+       vertex -0.01333333 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.01333333 0.008 0.01
+       vertex -0.01333333 0.008 0
+       vertex -0.02 0.008 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.1 0.008 0.01
+       vertex -0.1 0.008 0.02
+       vertex -0.09333333 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.09333333 0.008 0.02
+       vertex -0.09333333 0.008 0.01
+       vertex -0.1 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.09333333 0.008 0.01
+       vertex -0.09333333 0.008 0.02
+       vertex -0.08666667 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08666667 0.008 0.02
+       vertex -0.08666667 0.008 0.01
+       vertex -0.09333333 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08666667 0.008 0.01
+       vertex -0.08666667 0.008 0.02
+       vertex -0.08 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08 0.008 0.02
+       vertex -0.08 0.008 0.01
+       vertex -0.08666667 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08 0.008 0.01
+       vertex -0.08 0.008 0.02
+       vertex -0.07333333 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.07333333 0.008 0.02
+       vertex -0.07333333 0.008 0.01
+       vertex -0.08 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.07333333 0.008 0.01
+       vertex -0.07333333 0.008 0.02
+       vertex -0.06666667 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06666667 0.008 0.02
+       vertex -0.06666667 0.008 0.01
+       vertex -0.07333333 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06666667 0.008 0.01
+       vertex -0.06666667 0.008 0.02
+       vertex -0.06 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06 0.008 0.02
+       vertex -0.06 0.008 0.01
+       vertex -0.06666667 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06 0.008 0.01
+       vertex -0.06 0.008 0.02
+       vertex -0.05333333 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.05333333 0.008 0.02
+       vertex -0.05333333 0.008 0.01
+       vertex -0.06 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.05333333 0.008 0.01
+       vertex -0.05333333 0.008 0.02
+       vertex -0.04666667 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04666667 0.008 0.02
+       vertex -0.04666667 0.008 0.01
+       vertex -0.05333333 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04666667 0.008 0.01
+       vertex -0.04666667 0.008 0.02
+       vertex -0.04 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04 0.008 0.02
+       vertex -0.04 0.008 0.01
+       vertex -0.04666667 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04 0.008 0.01
+       vertex -0.04 0.008 0.02
+       vertex -0.03333333 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.03333333 0.008 0.02
+       vertex -0.03333333 0.008 0.01
+       vertex -0.04 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.03333333 0.008 0.01
+       vertex -0.03333333 0.008 0.02
+       vertex -0.02666667 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02666667 0.008 0.02
+       vertex -0.02666667 0.008 0.01
+       vertex -0.03333333 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02666667 0.008 0.01
+       vertex -0.02666667 0.008 0.02
+       vertex -0.02 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02 0.008 0.02
+       vertex -0.02 0.008 0.01
+       vertex -0.02666667 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02 0.008 0.01
+       vertex -0.02 0.008 0.02
+       vertex -0.01333333 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.01333333 0.008 0.02
+       vertex -0.01333333 0.008 0.01
+       vertex -0.02 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.1 0.008 0.02
+       vertex -0.1 0.008 0.03
+       vertex -0.09333333 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.09333333 0.008 0.03
+       vertex -0.09333333 0.008 0.02
+       vertex -0.1 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.09333333 0.008 0.02
+       vertex -0.09333333 0.008 0.03
+       vertex -0.08666667 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08666667 0.008 0.03
+       vertex -0.08666667 0.008 0.02
+       vertex -0.09333333 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08666667 0.008 0.02
+       vertex -0.08666667 0.008 0.03
+       vertex -0.08 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08 0.008 0.03
+       vertex -0.08 0.008 0.02
+       vertex -0.08666667 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08 0.008 0.02
+       vertex -0.08 0.008 0.03
+       vertex -0.07333333 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.07333333 0.008 0.03
+       vertex -0.07333333 0.008 0.02
+       vertex -0.08 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.07333333 0.008 0.02
+       vertex -0.07333333 0.008 0.03
+       vertex -0.06666667 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06666667 0.008 0.03
+       vertex -0.06666667 0.008 0.02
+       vertex -0.07333333 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06666667 0.008 0.02
+       vertex -0.06666667 0.008 0.03
+       vertex -0.06 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06 0.008 0.03
+       vertex -0.06 0.008 0.02
+       vertex -0.06666667 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06 0.008 0.02
+       vertex -0.06 0.008 0.03
+       vertex -0.05333333 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.05333333 0.008 0.03
+       vertex -0.05333333 0.008 0.02
+       vertex -0.06 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.05333333 0.008 0.02
+       vertex -0.05333333 0.008 0.03
+       vertex -0.04666667 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04666667 0.008 0.03
+       vertex -0.04666667 0.008 0.02
+       vertex -0.05333333 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04666667 0.008 0.02
+       vertex -0.04666667 0.008 0.03
+       vertex -0.04 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04 0.008 0.03
+       vertex -0.04 0.008 0.02
+       vertex -0.04666667 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04 0.008 0.02
+       vertex -0.04 0.008 0.03
+       vertex -0.03333333 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.03333333 0.008 0.03
+       vertex -0.03333333 0.008 0.02
+       vertex -0.04 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.03333333 0.008 0.02
+       vertex -0.03333333 0.008 0.03
+       vertex -0.02666667 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02666667 0.008 0.03
+       vertex -0.02666667 0.008 0.02
+       vertex -0.03333333 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02666667 0.008 0.02
+       vertex -0.02666667 0.008 0.03
+       vertex -0.02 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02 0.008 0.03
+       vertex -0.02 0.008 0.02
+       vertex -0.02666667 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02 0.008 0.02
+       vertex -0.02 0.008 0.03
+       vertex -0.01333333 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.01333333 0.008 0.03
+       vertex -0.01333333 0.008 0.02
+       vertex -0.02 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.1 0.008 0.03
+       vertex -0.1 0.008 0.04
+       vertex -0.09333333 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.09333333 0.008 0.04
+       vertex -0.09333333 0.008 0.03
+       vertex -0.1 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.09333333 0.008 0.03
+       vertex -0.09333333 0.008 0.04
+       vertex -0.08666667 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08666667 0.008 0.04
+       vertex -0.08666667 0.008 0.03
+       vertex -0.09333333 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08666667 0.008 0.03
+       vertex -0.08666667 0.008 0.04
+       vertex -0.08 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08 0.008 0.04
+       vertex -0.08 0.008 0.03
+       vertex -0.08666667 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08 0.008 0.03
+       vertex -0.08 0.008 0.04
+       vertex -0.07333333 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.07333333 0.008 0.04
+       vertex -0.07333333 0.008 0.03
+       vertex -0.08 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.07333333 0.008 0.03
+       vertex -0.07333333 0.008 0.04
+       vertex -0.06666667 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06666667 0.008 0.04
+       vertex -0.06666667 0.008 0.03
+       vertex -0.07333333 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06666667 0.008 0.03
+       vertex -0.06666667 0.008 0.04
+       vertex -0.06 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06 0.008 0.04
+       vertex -0.06 0.008 0.03
+       vertex -0.06666667 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06 0.008 0.03
+       vertex -0.06 0.008 0.04
+       vertex -0.05333333 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.05333333 0.008 0.04
+       vertex -0.05333333 0.008 0.03
+       vertex -0.06 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.05333333 0.008 0.03
+       vertex -0.05333333 0.008 0.04
+       vertex -0.04666667 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04666667 0.008 0.04
+       vertex -0.04666667 0.008 0.03
+       vertex -0.05333333 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04666667 0.008 0.03
+       vertex -0.04666667 0.008 0.04
+       vertex -0.04 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04 0.008 0.04
+       vertex -0.04 0.008 0.03
+       vertex -0.04666667 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04 0.008 0.03
+       vertex -0.04 0.008 0.04
+       vertex -0.03333333 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.03333333 0.008 0.04
+       vertex -0.03333333 0.008 0.03
+       vertex -0.04 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.03333333 0.008 0.03
+       vertex -0.03333333 0.008 0.04
+       vertex -0.02666667 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02666667 0.008 0.04
+       vertex -0.02666667 0.008 0.03
+       vertex -0.03333333 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02666667 0.008 0.03
+       vertex -0.02666667 0.008 0.04
+       vertex -0.02 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02 0.008 0.04
+       vertex -0.02 0.008 0.03
+       vertex -0.02666667 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02 0.008 0.03
+       vertex -0.02 0.008 0.04
+       vertex -0.01333333 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.01333333 0.008 0.04
+       vertex -0.01333333 0.008 0.03
+       vertex -0.02 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.1 0.008 0.04
+       vertex -0.1 0.008 0.05
+       vertex -0.09333333 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.09333333 0.008 0.05
+       vertex -0.09333333 0.008 0.04
+       vertex -0.1 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.09333333 0.008 0.04
+       vertex -0.09333333 0.008 0.05
+       vertex -0.08666667 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08666667 0.008 0.05
+       vertex -0.08666667 0.008 0.04
+       vertex -0.09333333 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08666667 0.008 0.04
+       vertex -0.08666667 0.008 0.05
+       vertex -0.08 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08 0.008 0.05
+       vertex -0.08 0.008 0.04
+       vertex -0.08666667 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08 0.008 0.04
+       vertex -0.08 0.008 0.05
+       vertex -0.07333333 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.07333333 0.008 0.05
+       vertex -0.07333333 0.008 0.04
+       vertex -0.08 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.07333333 0.008 0.04
+       vertex -0.07333333 0.008 0.05
+       vertex -0.06666667 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06666667 0.008 0.05
+       vertex -0.06666667 0.008 0.04
+       vertex -0.07333333 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06666667 0.008 0.04
+       vertex -0.06666667 0.008 0.05
+       vertex -0.06 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06 0.008 0.05
+       vertex -0.06 0.008 0.04
+       vertex -0.06666667 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06 0.008 0.04
+       vertex -0.06 0.008 0.05
+       vertex -0.05333333 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.05333333 0.008 0.05
+       vertex -0.05333333 0.008 0.04
+       vertex -0.06 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.05333333 0.008 0.04
+       vertex -0.05333333 0.008 0.05
+       vertex -0.04666667 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04666667 0.008 0.05
+       vertex -0.04666667 0.008 0.04
+       vertex -0.05333333 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04666667 0.008 0.04
+       vertex -0.04666667 0.008 0.05
+       vertex -0.04 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04 0.008 0.05
+       vertex -0.04 0.008 0.04
+       vertex -0.04666667 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04 0.008 0.04
+       vertex -0.04 0.008 0.05
+       vertex -0.03333333 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.03333333 0.008 0.05
+       vertex -0.03333333 0.008 0.04
+       vertex -0.04 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.03333333 0.008 0.04
+       vertex -0.03333333 0.008 0.05
+       vertex -0.02666667 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02666667 0.008 0.05
+       vertex -0.02666667 0.008 0.04
+       vertex -0.03333333 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02666667 0.008 0.04
+       vertex -0.02666667 0.008 0.05
+       vertex -0.02 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02 0.008 0.05
+       vertex -0.02 0.008 0.04
+       vertex -0.02666667 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02 0.008 0.04
+       vertex -0.02 0.008 0.05
+       vertex -0.01333333 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.01333333 0.008 0.05
+       vertex -0.01333333 0.008 0.04
+       vertex -0.02 0.008 0.04
+    endloop
+  endfacet
+endsolid leftSolid_to_topAir
diff --git a/tutorials/mesh/snappyHexMesh/multiRegionMesh/constant/triSurface/rightSolid.stl b/tutorials/mesh/snappyHexMesh/multiRegionMesh/constant/triSurface/rightSolid.stl
new file mode 100644
index 0000000000000000000000000000000000000000..35d7ba781aac003d0bec68b81f3720ac99c15a01
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/multiRegionMesh/constant/triSurface/rightSolid.stl
@@ -0,0 +1,4296 @@
+solid maxX
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0 -0.05
+       vertex 0.1 0.008 -0.05
+       vertex 0.1 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.008 -0.04
+       vertex 0.1 0 -0.04
+       vertex 0.1 0 -0.05
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0 -0.04
+       vertex 0.1 0.008 -0.04
+       vertex 0.1 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.008 -0.03
+       vertex 0.1 0 -0.03
+       vertex 0.1 0 -0.04
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0 -0.03
+       vertex 0.1 0.008 -0.03
+       vertex 0.1 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.008 -0.02
+       vertex 0.1 0 -0.02
+       vertex 0.1 0 -0.03
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0 -0.02
+       vertex 0.1 0.008 -0.02
+       vertex 0.1 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.008 -0.01
+       vertex 0.1 0 -0.01
+       vertex 0.1 0 -0.02
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0 -0.01
+       vertex 0.1 0.008 -0.01
+       vertex 0.1 0.008 0
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.008 0
+       vertex 0.1 0 0
+       vertex 0.1 0 -0.01
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0 0
+       vertex 0.1 0.008 0
+       vertex 0.1 0.008 0.01
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.008 0.01
+       vertex 0.1 0 0.01
+       vertex 0.1 0 0
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0 0.01
+       vertex 0.1 0.008 0.01
+       vertex 0.1 0.008 0.02
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.008 0.02
+       vertex 0.1 0 0.02
+       vertex 0.1 0 0.01
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0 0.02
+       vertex 0.1 0.008 0.02
+       vertex 0.1 0.008 0.03
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.008 0.03
+       vertex 0.1 0 0.03
+       vertex 0.1 0 0.02
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0 0.03
+       vertex 0.1 0.008 0.03
+       vertex 0.1 0.008 0.04
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.008 0.04
+       vertex 0.1 0 0.04
+       vertex 0.1 0 0.03
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0 0.04
+       vertex 0.1 0.008 0.04
+       vertex 0.1 0.008 0.05
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.008 0.05
+       vertex 0.1 0 0.05
+       vertex 0.1 0 0.04
+    endloop
+  endfacet
+endsolid maxX
+solid minZ
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.01333333 0 -0.05
+       vertex 0.01333333 0.008 -0.05
+       vertex 0.02 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.02 0.008 -0.05
+       vertex 0.02 0 -0.05
+       vertex 0.01333333 0 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.02 0 -0.05
+       vertex 0.02 0.008 -0.05
+       vertex 0.02666667 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.02666667 0.008 -0.05
+       vertex 0.02666667 0 -0.05
+       vertex 0.02 0 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.02666667 0 -0.05
+       vertex 0.02666667 0.008 -0.05
+       vertex 0.03333333 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.03333333 0.008 -0.05
+       vertex 0.03333333 0 -0.05
+       vertex 0.02666667 0 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.03333333 0 -0.05
+       vertex 0.03333333 0.008 -0.05
+       vertex 0.04 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.04 0.008 -0.05
+       vertex 0.04 -2.891206e-19 -0.05
+       vertex 0.03333333 0 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.04 0.008 -0.05
+       vertex 0.04666667 0.008 -0.05
+       vertex 0.04666667 2.891206e-19 -0.05
+    endloop
+  endfacet
+  facet normal -0 0 -1
+    outer loop
+       vertex 0.04666667 2.891206e-19 -0.05
+       vertex 0.04 -2.891206e-19 -0.05
+       vertex 0.04 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.04666667 2.891206e-19 -0.05
+       vertex 0.04666667 0.008 -0.05
+       vertex 0.05333333 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.05333333 0.008 -0.05
+       vertex 0.05333333 0 -0.05
+       vertex 0.04666667 2.891206e-19 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.05333333 0 -0.05
+       vertex 0.05333333 0.008 -0.05
+       vertex 0.06 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.06 0.008 -0.05
+       vertex 0.06 -2.891206e-19 -0.05
+       vertex 0.05333333 0 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.06 -2.891206e-19 -0.05
+       vertex 0.06 0.008 -0.05
+       vertex 0.06666667 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.06666667 0.008 -0.05
+       vertex 0.06666667 -4.336809e-19 -0.05
+       vertex 0.06 -2.891206e-19 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.06666667 -4.336809e-19 -0.05
+       vertex 0.06666667 0.008 -0.05
+       vertex 0.07333333 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.07333333 0.008 -0.05
+       vertex 0.07333333 -5.782412e-19 -0.05
+       vertex 0.06666667 -4.336809e-19 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.07333333 0.008 -0.05
+       vertex 0.08 0.008 -0.05
+       vertex 0.08 4.336809e-19 -0.05
+    endloop
+  endfacet
+  facet normal -0 0 -1
+    outer loop
+       vertex 0.08 4.336809e-19 -0.05
+       vertex 0.07333333 -5.782412e-19 -0.05
+       vertex 0.07333333 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.08 4.336809e-19 -0.05
+       vertex 0.08 0.008 -0.05
+       vertex 0.08666667 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.08666667 0.008 -0.05
+       vertex 0.08666667 2.891206e-19 -0.05
+       vertex 0.08 4.336809e-19 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.08666667 2.891206e-19 -0.05
+       vertex 0.08666667 0.008 -0.05
+       vertex 0.09333333 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.09333333 0.008 -0.05
+       vertex 0.09333333 1.445603e-19 -0.05
+       vertex 0.08666667 2.891206e-19 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.09333333 1.445603e-19 -0.05
+       vertex 0.09333333 0.008 -0.05
+       vertex 0.1 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.1 0.008 -0.05
+       vertex 0.1 0 -0.05
+       vertex 0.09333333 1.445603e-19 -0.05
+    endloop
+  endfacet
+endsolid minZ
+solid maxZ
+  facet normal 0 0 1
+    outer loop
+       vertex 0.01333333 0 0.05
+       vertex 0.02 0 0.05
+       vertex 0.02 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.02 0.008 0.05
+       vertex 0.01333333 0.008 0.05
+       vertex 0.01333333 0 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.02 0 0.05
+       vertex 0.02666667 0 0.05
+       vertex 0.02666667 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.02666667 0.008 0.05
+       vertex 0.02 0.008 0.05
+       vertex 0.02 0 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.02666667 0 0.05
+       vertex 0.03333333 0 0.05
+       vertex 0.03333333 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.03333333 0.008 0.05
+       vertex 0.02666667 0.008 0.05
+       vertex 0.02666667 0 0.05
+    endloop
+  endfacet
+  facet normal -0 0 1
+    outer loop
+       vertex 0.03333333 0 0.05
+       vertex 0.04 -2.891206e-19 0.05
+       vertex 0.04 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.04 0.008 0.05
+       vertex 0.03333333 0.008 0.05
+       vertex 0.03333333 0 0.05
+    endloop
+  endfacet
+  facet normal 0 -0 1
+    outer loop
+       vertex 0.04666667 2.891206e-19 0.05
+       vertex 0.04666667 0.008 0.05
+       vertex 0.04 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.04 0.008 0.05
+       vertex 0.04 -2.891206e-19 0.05
+       vertex 0.04666667 2.891206e-19 0.05
+    endloop
+  endfacet
+  facet normal -0 0 1
+    outer loop
+       vertex 0.04666667 2.891206e-19 0.05
+       vertex 0.05333333 0 0.05
+       vertex 0.05333333 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.05333333 0.008 0.05
+       vertex 0.04666667 0.008 0.05
+       vertex 0.04666667 2.891206e-19 0.05
+    endloop
+  endfacet
+  facet normal -0 0 1
+    outer loop
+       vertex 0.05333333 0 0.05
+       vertex 0.06 -2.891206e-19 0.05
+       vertex 0.06 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.06 0.008 0.05
+       vertex 0.05333333 0.008 0.05
+       vertex 0.05333333 0 0.05
+    endloop
+  endfacet
+  facet normal -0 0 1
+    outer loop
+       vertex 0.06 -2.891206e-19 0.05
+       vertex 0.06666667 -4.336809e-19 0.05
+       vertex 0.06666667 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.06666667 0.008 0.05
+       vertex 0.06 0.008 0.05
+       vertex 0.06 -2.891206e-19 0.05
+    endloop
+  endfacet
+  facet normal -0 0 1
+    outer loop
+       vertex 0.06666667 -4.336809e-19 0.05
+       vertex 0.07333333 -5.782412e-19 0.05
+       vertex 0.07333333 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.07333333 0.008 0.05
+       vertex 0.06666667 0.008 0.05
+       vertex 0.06666667 -4.336809e-19 0.05
+    endloop
+  endfacet
+  facet normal 0 -0 1
+    outer loop
+       vertex 0.08 4.336809e-19 0.05
+       vertex 0.08 0.008 0.05
+       vertex 0.07333333 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.07333333 0.008 0.05
+       vertex 0.07333333 -5.782412e-19 0.05
+       vertex 0.08 4.336809e-19 0.05
+    endloop
+  endfacet
+  facet normal -0 0 1
+    outer loop
+       vertex 0.08 4.336809e-19 0.05
+       vertex 0.08666667 2.891206e-19 0.05
+       vertex 0.08666667 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.08666667 0.008 0.05
+       vertex 0.08 0.008 0.05
+       vertex 0.08 4.336809e-19 0.05
+    endloop
+  endfacet
+  facet normal -0 0 1
+    outer loop
+       vertex 0.08666667 2.891206e-19 0.05
+       vertex 0.09333333 1.445603e-19 0.05
+       vertex 0.09333333 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.09333333 0.008 0.05
+       vertex 0.08666667 0.008 0.05
+       vertex 0.08666667 2.891206e-19 0.05
+    endloop
+  endfacet
+  facet normal -0 0 1
+    outer loop
+       vertex 0.09333333 1.445603e-19 0.05
+       vertex 0.1 0 0.05
+       vertex 0.1 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.1 0.008 0.05
+       vertex 0.09333333 0.008 0.05
+       vertex 0.09333333 1.445603e-19 0.05
+    endloop
+  endfacet
+endsolid maxZ
+solid rightSolid_to_bottomAir
+  facet normal 0 -1 -5.782412e-17
+    outer loop
+       vertex 0.01333333 0 -0.05
+       vertex 0.02 0 -0.05
+       vertex 0.02 -5.782412e-19 -0.04
+    endloop
+  endfacet
+  facet normal -8.673614e-17 -1 0
+    outer loop
+       vertex 0.02 -5.782412e-19 -0.04
+       vertex 0.01333333 0 -0.04
+       vertex 0.01333333 0 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.02 0 -0.05
+       vertex 0.02666667 0 -0.05
+       vertex 0.02666667 0 -0.04
+    endloop
+  endfacet
+  facet normal 8.673614e-17 -1 -5.782412e-17
+    outer loop
+       vertex 0.02666667 0 -0.04
+       vertex 0.02 -5.782412e-19 -0.04
+       vertex 0.02 0 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.02666667 0 -0.05
+       vertex 0.03333333 0 -0.05
+       vertex 0.03333333 0 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.03333333 0 -0.04
+       vertex 0.02666667 0 -0.04
+       vertex 0.02666667 0 -0.05
+    endloop
+  endfacet
+  facet normal -4.336807e-17 -1 2.891206e-17
+    outer loop
+       vertex 0.03333333 0 -0.05
+       vertex 0.04 -2.891206e-19 -0.05
+       vertex 0.04 0 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.04 0 -0.04
+       vertex 0.03333333 0 -0.04
+       vertex 0.03333333 0 -0.05
+    endloop
+  endfacet
+  facet normal 8.673614e-17 -1 0
+    outer loop
+       vertex 0.04 -2.891206e-19 -0.05
+       vertex 0.04666667 2.891206e-19 -0.05
+       vertex 0.04666667 2.891206e-19 -0.04
+    endloop
+  endfacet
+  facet normal 4.336807e-17 -1 2.891206e-17
+    outer loop
+       vertex 0.04666667 2.891206e-19 -0.04
+       vertex 0.04 0 -0.04
+       vertex 0.04 -2.891206e-19 -0.05
+    endloop
+  endfacet
+  facet normal -4.336813e-17 -1 0
+    outer loop
+       vertex 0.04666667 2.891206e-19 -0.05
+       vertex 0.05333333 0 -0.05
+       vertex 0.05333333 0 -0.04
+    endloop
+  endfacet
+  facet normal -4.336813e-17 -1 0
+    outer loop
+       vertex 0.05333333 0 -0.04
+       vertex 0.04666667 2.891206e-19 -0.04
+       vertex 0.04666667 2.891206e-19 -0.05
+    endloop
+  endfacet
+  facet normal -4.336807e-17 -1 0
+    outer loop
+       vertex 0.05333333 0 -0.05
+       vertex 0.06 -2.891206e-19 -0.05
+       vertex 0.06 -2.891206e-19 -0.04
+    endloop
+  endfacet
+  facet normal -4.336807e-17 -1 0
+    outer loop
+       vertex 0.06 -2.891206e-19 -0.04
+       vertex 0.05333333 0 -0.04
+       vertex 0.05333333 0 -0.05
+    endloop
+  endfacet
+  facet normal -2.168403e-17 -1 0
+    outer loop
+       vertex 0.06 -2.891206e-19 -0.05
+       vertex 0.06666667 -4.336809e-19 -0.05
+       vertex 0.06666667 -4.336809e-19 -0.04
+    endloop
+  endfacet
+  facet normal -2.168403e-17 -1 0
+    outer loop
+       vertex 0.06666667 -4.336809e-19 -0.04
+       vertex 0.06 -2.891206e-19 -0.04
+       vertex 0.06 -2.891206e-19 -0.05
+    endloop
+  endfacet
+  facet normal -2.168407e-17 -1 0
+    outer loop
+       vertex 0.06666667 -4.336809e-19 -0.05
+       vertex 0.07333333 -5.782412e-19 -0.05
+       vertex 0.07333333 -5.782412e-19 -0.04
+    endloop
+  endfacet
+  facet normal -2.168407e-17 -1 0
+    outer loop
+       vertex 0.07333333 -5.782412e-19 -0.04
+       vertex 0.06666667 -4.336809e-19 -0.04
+       vertex 0.06666667 -4.336809e-19 -0.05
+    endloop
+  endfacet
+  facet normal 1.517882e-16 -1 0
+    outer loop
+       vertex 0.07333333 -5.782412e-19 -0.05
+       vertex 0.08 4.336809e-19 -0.05
+       vertex 0.08 4.336809e-19 -0.04
+    endloop
+  endfacet
+  facet normal 1.517882e-16 -1 0
+    outer loop
+       vertex 0.08 4.336809e-19 -0.04
+       vertex 0.07333333 -5.782412e-19 -0.04
+       vertex 0.07333333 -5.782412e-19 -0.05
+    endloop
+  endfacet
+  facet normal -2.168403e-17 -1 0
+    outer loop
+       vertex 0.08 4.336809e-19 -0.05
+       vertex 0.08666667 2.891206e-19 -0.05
+       vertex 0.08666667 2.891206e-19 -0.04
+    endloop
+  endfacet
+  facet normal -2.168403e-17 -1 0
+    outer loop
+       vertex 0.08666667 2.891206e-19 -0.04
+       vertex 0.08 4.336809e-19 -0.04
+       vertex 0.08 4.336809e-19 -0.05
+    endloop
+  endfacet
+  facet normal -2.168407e-17 -1 0
+    outer loop
+       vertex 0.08666667 2.891206e-19 -0.05
+       vertex 0.09333333 1.445603e-19 -0.05
+       vertex 0.09333333 1.445603e-19 -0.04
+    endloop
+  endfacet
+  facet normal -2.168407e-17 -1 0
+    outer loop
+       vertex 0.09333333 1.445603e-19 -0.04
+       vertex 0.08666667 2.891206e-19 -0.04
+       vertex 0.08666667 2.891206e-19 -0.05
+    endloop
+  endfacet
+  facet normal -2.168403e-17 -1 0
+    outer loop
+       vertex 0.09333333 1.445603e-19 -0.05
+       vertex 0.1 0 -0.05
+       vertex 0.1 0 -0.04
+    endloop
+  endfacet
+  facet normal -2.168403e-17 -1 0
+    outer loop
+       vertex 0.1 0 -0.04
+       vertex 0.09333333 1.445603e-19 -0.04
+       vertex 0.09333333 1.445603e-19 -0.05
+    endloop
+  endfacet
+  facet normal -8.673614e-17 -1 0
+    outer loop
+       vertex 0.01333333 0 -0.04
+       vertex 0.02 -5.782412e-19 -0.04
+       vertex 0.02 -5.782412e-19 -0.03
+    endloop
+  endfacet
+  facet normal -8.673614e-17 -1 0
+    outer loop
+       vertex 0.02 -5.782412e-19 -0.03
+       vertex 0.01333333 0 -0.03
+       vertex 0.01333333 0 -0.04
+    endloop
+  endfacet
+  facet normal 8.673614e-17 -1 0
+    outer loop
+       vertex 0.02 -5.782412e-19 -0.04
+       vertex 0.02666667 0 -0.04
+       vertex 0.02666667 0 -0.03
+    endloop
+  endfacet
+  facet normal 8.673614e-17 -1 0
+    outer loop
+       vertex 0.02666667 0 -0.03
+       vertex 0.02 -5.782412e-19 -0.03
+       vertex 0.02 -5.782412e-19 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.02666667 0 -0.04
+       vertex 0.03333333 0 -0.04
+       vertex 0.03333333 0 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.03333333 0 -0.03
+       vertex 0.02666667 0 -0.03
+       vertex 0.02666667 0 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 -2.891206e-17
+    outer loop
+       vertex 0.03333333 0 -0.04
+       vertex 0.04 0 -0.04
+       vertex 0.04 -2.891206e-19 -0.03
+    endloop
+  endfacet
+  facet normal -4.336807e-17 -1 0
+    outer loop
+       vertex 0.04 -2.891206e-19 -0.03
+       vertex 0.03333333 0 -0.03
+       vertex 0.03333333 0 -0.04
+    endloop
+  endfacet
+  facet normal 4.336807e-17 -1 -5.782412e-17
+    outer loop
+       vertex 0.04 0 -0.04
+       vertex 0.04666667 2.891206e-19 -0.04
+       vertex 0.04666667 -2.891206e-19 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 -2.891206e-17
+    outer loop
+       vertex 0.04666667 -2.891206e-19 -0.03
+       vertex 0.04 -2.891206e-19 -0.03
+       vertex 0.04 0 -0.04
+    endloop
+  endfacet
+  facet normal -4.336813e-17 -1 2.891206e-17
+    outer loop
+       vertex 0.04666667 2.891206e-19 -0.04
+       vertex 0.05333333 0 -0.04
+       vertex 0.05333333 2.891206e-19 -0.03
+    endloop
+  endfacet
+  facet normal 8.673627e-17 -1 -5.782412e-17
+    outer loop
+       vertex 0.05333333 2.891206e-19 -0.03
+       vertex 0.04666667 -2.891206e-19 -0.03
+       vertex 0.04666667 2.891206e-19 -0.04
+    endloop
+  endfacet
+  facet normal -4.336807e-17 -1 0
+    outer loop
+       vertex 0.05333333 0 -0.04
+       vertex 0.06 -2.891206e-19 -0.04
+       vertex 0.06 -2.891206e-19 -0.03
+    endloop
+  endfacet
+  facet normal -8.673614e-17 -1 2.891206e-17
+    outer loop
+       vertex 0.06 -2.891206e-19 -0.03
+       vertex 0.05333333 2.891206e-19 -0.03
+       vertex 0.05333333 0 -0.04
+    endloop
+  endfacet
+  facet normal -2.168403e-17 -1 0
+    outer loop
+       vertex 0.06 -2.891206e-19 -0.04
+       vertex 0.06666667 -4.336809e-19 -0.04
+       vertex 0.06666667 -4.336809e-19 -0.03
+    endloop
+  endfacet
+  facet normal -2.168403e-17 -1 0
+    outer loop
+       vertex 0.06666667 -4.336809e-19 -0.03
+       vertex 0.06 -2.891206e-19 -0.03
+       vertex 0.06 -2.891206e-19 -0.04
+    endloop
+  endfacet
+  facet normal -2.168407e-17 -1 0
+    outer loop
+       vertex 0.06666667 -4.336809e-19 -0.04
+       vertex 0.07333333 -5.782412e-19 -0.04
+       vertex 0.07333333 -5.782412e-19 -0.03
+    endloop
+  endfacet
+  facet normal -2.168407e-17 -1 0
+    outer loop
+       vertex 0.07333333 -5.782412e-19 -0.03
+       vertex 0.06666667 -4.336809e-19 -0.03
+       vertex 0.06666667 -4.336809e-19 -0.04
+    endloop
+  endfacet
+  facet normal 1.517882e-16 -1 0
+    outer loop
+       vertex 0.07333333 -5.782412e-19 -0.04
+       vertex 0.08 4.336809e-19 -0.04
+       vertex 0.08 4.336809e-19 -0.03
+    endloop
+  endfacet
+  facet normal 1.517882e-16 -1 0
+    outer loop
+       vertex 0.08 4.336809e-19 -0.03
+       vertex 0.07333333 -5.782412e-19 -0.03
+       vertex 0.07333333 -5.782412e-19 -0.04
+    endloop
+  endfacet
+  facet normal -2.168403e-17 -1 0
+    outer loop
+       vertex 0.08 4.336809e-19 -0.04
+       vertex 0.08666667 2.891206e-19 -0.04
+       vertex 0.08666667 2.891206e-19 -0.03
+    endloop
+  endfacet
+  facet normal -2.168403e-17 -1 0
+    outer loop
+       vertex 0.08666667 2.891206e-19 -0.03
+       vertex 0.08 4.336809e-19 -0.03
+       vertex 0.08 4.336809e-19 -0.04
+    endloop
+  endfacet
+  facet normal -2.168407e-17 -1 0
+    outer loop
+       vertex 0.08666667 2.891206e-19 -0.04
+       vertex 0.09333333 1.445603e-19 -0.04
+       vertex 0.09333333 1.445603e-19 -0.03
+    endloop
+  endfacet
+  facet normal -2.168407e-17 -1 0
+    outer loop
+       vertex 0.09333333 1.445603e-19 -0.03
+       vertex 0.08666667 2.891206e-19 -0.03
+       vertex 0.08666667 2.891206e-19 -0.04
+    endloop
+  endfacet
+  facet normal -2.168403e-17 -1 0
+    outer loop
+       vertex 0.09333333 1.445603e-19 -0.04
+       vertex 0.1 0 -0.04
+       vertex 0.1 0 -0.03
+    endloop
+  endfacet
+  facet normal -2.168403e-17 -1 0
+    outer loop
+       vertex 0.1 0 -0.03
+       vertex 0.09333333 1.445603e-19 -0.03
+       vertex 0.09333333 1.445603e-19 -0.04
+    endloop
+  endfacet
+  facet normal -8.673614e-17 -1 5.782412e-17
+    outer loop
+       vertex 0.01333333 0 -0.03
+       vertex 0.02 -5.782412e-19 -0.03
+       vertex 0.02 0 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.02 0 -0.02
+       vertex 0.01333333 0 -0.02
+       vertex 0.01333333 0 -0.03
+    endloop
+  endfacet
+  facet normal 8.673614e-17 -1 0
+    outer loop
+       vertex 0.02 -5.782412e-19 -0.03
+       vertex 0.02666667 0 -0.03
+       vertex 0.02666667 0 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 5.782412e-17
+    outer loop
+       vertex 0.02666667 0 -0.02
+       vertex 0.02 0 -0.02
+       vertex 0.02 -5.782412e-19 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.02666667 0 -0.03
+       vertex 0.03333333 0 -0.03
+       vertex 0.03333333 0 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.03333333 0 -0.02
+       vertex 0.02666667 0 -0.02
+       vertex 0.02666667 0 -0.03
+    endloop
+  endfacet
+  facet normal -4.336807e-17 -1 0
+    outer loop
+       vertex 0.03333333 0 -0.03
+       vertex 0.04 -2.891206e-19 -0.03
+       vertex 0.04 -2.891206e-19 -0.02
+    endloop
+  endfacet
+  facet normal -4.336807e-17 -1 0
+    outer loop
+       vertex 0.04 -2.891206e-19 -0.02
+       vertex 0.03333333 0 -0.02
+       vertex 0.03333333 0 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.04 -2.891206e-19 -0.03
+       vertex 0.04666667 -2.891206e-19 -0.03
+       vertex 0.04666667 -2.891206e-19 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.04666667 -2.891206e-19 -0.02
+       vertex 0.04 -2.891206e-19 -0.02
+       vertex 0.04 -2.891206e-19 -0.03
+    endloop
+  endfacet
+  facet normal 8.673627e-17 -1 -2.891206e-17
+    outer loop
+       vertex 0.04666667 -2.891206e-19 -0.03
+       vertex 0.05333333 2.891206e-19 -0.03
+       vertex 0.05333333 0 -0.02
+    endloop
+  endfacet
+  facet normal 4.336813e-17 -1 0
+    outer loop
+       vertex 0.05333333 0 -0.02
+       vertex 0.04666667 -2.891206e-19 -0.02
+       vertex 0.04666667 -2.891206e-19 -0.03
+    endloop
+  endfacet
+  facet normal -8.673614e-17 -1 0
+    outer loop
+       vertex 0.05333333 2.891206e-19 -0.03
+       vertex 0.06 -2.891206e-19 -0.03
+       vertex 0.06 -2.891206e-19 -0.02
+    endloop
+  endfacet
+  facet normal -4.336807e-17 -1 -2.891206e-17
+    outer loop
+       vertex 0.06 -2.891206e-19 -0.02
+       vertex 0.05333333 0 -0.02
+       vertex 0.05333333 2.891206e-19 -0.03
+    endloop
+  endfacet
+  facet normal -2.168403e-17 -1 0
+    outer loop
+       vertex 0.06 -2.891206e-19 -0.03
+       vertex 0.06666667 -4.336809e-19 -0.03
+       vertex 0.06666667 -4.336809e-19 -0.02
+    endloop
+  endfacet
+  facet normal -2.168403e-17 -1 0
+    outer loop
+       vertex 0.06666667 -4.336809e-19 -0.02
+       vertex 0.06 -2.891206e-19 -0.02
+       vertex 0.06 -2.891206e-19 -0.03
+    endloop
+  endfacet
+  facet normal -2.168407e-17 -1 0
+    outer loop
+       vertex 0.06666667 -4.336809e-19 -0.03
+       vertex 0.07333333 -5.782412e-19 -0.03
+       vertex 0.07333333 -5.782412e-19 -0.02
+    endloop
+  endfacet
+  facet normal -2.168407e-17 -1 0
+    outer loop
+       vertex 0.07333333 -5.782412e-19 -0.02
+       vertex 0.06666667 -4.336809e-19 -0.02
+       vertex 0.06666667 -4.336809e-19 -0.03
+    endloop
+  endfacet
+  facet normal 1.517882e-16 -1 0
+    outer loop
+       vertex 0.07333333 -5.782412e-19 -0.03
+       vertex 0.08 4.336809e-19 -0.03
+       vertex 0.08 4.336809e-19 -0.02
+    endloop
+  endfacet
+  facet normal 1.517882e-16 -1 0
+    outer loop
+       vertex 0.08 4.336809e-19 -0.02
+       vertex 0.07333333 -5.782412e-19 -0.02
+       vertex 0.07333333 -5.782412e-19 -0.03
+    endloop
+  endfacet
+  facet normal -2.168403e-17 -1 0
+    outer loop
+       vertex 0.08 4.336809e-19 -0.03
+       vertex 0.08666667 2.891206e-19 -0.03
+       vertex 0.08666667 2.891206e-19 -0.02
+    endloop
+  endfacet
+  facet normal -2.168403e-17 -1 0
+    outer loop
+       vertex 0.08666667 2.891206e-19 -0.02
+       vertex 0.08 4.336809e-19 -0.02
+       vertex 0.08 4.336809e-19 -0.03
+    endloop
+  endfacet
+  facet normal -2.168407e-17 -1 0
+    outer loop
+       vertex 0.08666667 2.891206e-19 -0.03
+       vertex 0.09333333 1.445603e-19 -0.03
+       vertex 0.09333333 1.445603e-19 -0.02
+    endloop
+  endfacet
+  facet normal -2.168407e-17 -1 0
+    outer loop
+       vertex 0.09333333 1.445603e-19 -0.02
+       vertex 0.08666667 2.891206e-19 -0.02
+       vertex 0.08666667 2.891206e-19 -0.03
+    endloop
+  endfacet
+  facet normal -2.168403e-17 -1 0
+    outer loop
+       vertex 0.09333333 1.445603e-19 -0.03
+       vertex 0.1 0 -0.03
+       vertex 0.1 0 -0.02
+    endloop
+  endfacet
+  facet normal -2.168403e-17 -1 0
+    outer loop
+       vertex 0.1 0 -0.02
+       vertex 0.09333333 1.445603e-19 -0.02
+       vertex 0.09333333 1.445603e-19 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.01333333 0 -0.02
+       vertex 0.02 0 -0.02
+       vertex 0.02 0 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.02 0 -0.01
+       vertex 0.01333333 0 -0.01
+       vertex 0.01333333 0 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.02 0 -0.02
+       vertex 0.02666667 0 -0.02
+       vertex 0.02666667 0 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.02666667 0 -0.01
+       vertex 0.02 0 -0.01
+       vertex 0.02 0 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.02666667 0 -0.02
+       vertex 0.03333333 0 -0.02
+       vertex 0.03333333 0 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.03333333 0 -0.01
+       vertex 0.02666667 0 -0.01
+       vertex 0.02666667 0 -0.02
+    endloop
+  endfacet
+  facet normal -4.336807e-17 -1 0
+    outer loop
+       vertex 0.03333333 0 -0.02
+       vertex 0.04 -2.891206e-19 -0.02
+       vertex 0.04 -2.891206e-19 -0.01
+    endloop
+  endfacet
+  facet normal -4.336807e-17 -1 0
+    outer loop
+       vertex 0.04 -2.891206e-19 -0.01
+       vertex 0.03333333 0 -0.01
+       vertex 0.03333333 0 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 5.782412e-17
+    outer loop
+       vertex 0.04 -2.891206e-19 -0.02
+       vertex 0.04666667 -2.891206e-19 -0.02
+       vertex 0.04666667 2.891206e-19 -0.01
+    endloop
+  endfacet
+  facet normal 8.673614e-17 -1 0
+    outer loop
+       vertex 0.04666667 2.891206e-19 -0.01
+       vertex 0.04 -2.891206e-19 -0.01
+       vertex 0.04 -2.891206e-19 -0.02
+    endloop
+  endfacet
+  facet normal 4.336813e-17 -1 0
+    outer loop
+       vertex 0.04666667 -2.891206e-19 -0.02
+       vertex 0.05333333 0 -0.02
+       vertex 0.05333333 0 -0.01
+    endloop
+  endfacet
+  facet normal -4.336813e-17 -1 5.782412e-17
+    outer loop
+       vertex 0.05333333 0 -0.01
+       vertex 0.04666667 2.891206e-19 -0.01
+       vertex 0.04666667 -2.891206e-19 -0.02
+    endloop
+  endfacet
+  facet normal -4.336807e-17 -1 0
+    outer loop
+       vertex 0.05333333 0 -0.02
+       vertex 0.06 -2.891206e-19 -0.02
+       vertex 0.06 -2.891206e-19 -0.01
+    endloop
+  endfacet
+  facet normal -4.336807e-17 -1 0
+    outer loop
+       vertex 0.06 -2.891206e-19 -0.01
+       vertex 0.05333333 0 -0.01
+       vertex 0.05333333 0 -0.02
+    endloop
+  endfacet
+  facet normal -2.168403e-17 -1 0
+    outer loop
+       vertex 0.06 -2.891206e-19 -0.02
+       vertex 0.06666667 -4.336809e-19 -0.02
+       vertex 0.06666667 -4.336809e-19 -0.01
+    endloop
+  endfacet
+  facet normal -2.168403e-17 -1 0
+    outer loop
+       vertex 0.06666667 -4.336809e-19 -0.01
+       vertex 0.06 -2.891206e-19 -0.01
+       vertex 0.06 -2.891206e-19 -0.02
+    endloop
+  endfacet
+  facet normal -2.168407e-17 -1 0
+    outer loop
+       vertex 0.06666667 -4.336809e-19 -0.02
+       vertex 0.07333333 -5.782412e-19 -0.02
+       vertex 0.07333333 -5.782412e-19 -0.01
+    endloop
+  endfacet
+  facet normal -2.168407e-17 -1 0
+    outer loop
+       vertex 0.07333333 -5.782412e-19 -0.01
+       vertex 0.06666667 -4.336809e-19 -0.01
+       vertex 0.06666667 -4.336809e-19 -0.02
+    endloop
+  endfacet
+  facet normal 1.517882e-16 -1 0
+    outer loop
+       vertex 0.07333333 -5.782412e-19 -0.02
+       vertex 0.08 4.336809e-19 -0.02
+       vertex 0.08 4.336809e-19 -0.01
+    endloop
+  endfacet
+  facet normal 1.517882e-16 -1 0
+    outer loop
+       vertex 0.08 4.336809e-19 -0.01
+       vertex 0.07333333 -5.782412e-19 -0.01
+       vertex 0.07333333 -5.782412e-19 -0.02
+    endloop
+  endfacet
+  facet normal -2.168403e-17 -1 0
+    outer loop
+       vertex 0.08 4.336809e-19 -0.02
+       vertex 0.08666667 2.891206e-19 -0.02
+       vertex 0.08666667 2.891206e-19 -0.01
+    endloop
+  endfacet
+  facet normal -2.168403e-17 -1 0
+    outer loop
+       vertex 0.08666667 2.891206e-19 -0.01
+       vertex 0.08 4.336809e-19 -0.01
+       vertex 0.08 4.336809e-19 -0.02
+    endloop
+  endfacet
+  facet normal -2.168407e-17 -1 0
+    outer loop
+       vertex 0.08666667 2.891206e-19 -0.02
+       vertex 0.09333333 1.445603e-19 -0.02
+       vertex 0.09333333 1.445603e-19 -0.01
+    endloop
+  endfacet
+  facet normal -2.168407e-17 -1 0
+    outer loop
+       vertex 0.09333333 1.445603e-19 -0.01
+       vertex 0.08666667 2.891206e-19 -0.01
+       vertex 0.08666667 2.891206e-19 -0.02
+    endloop
+  endfacet
+  facet normal -2.168403e-17 -1 0
+    outer loop
+       vertex 0.09333333 1.445603e-19 -0.02
+       vertex 0.1 0 -0.02
+       vertex 0.1 0 -0.01
+    endloop
+  endfacet
+  facet normal -2.168403e-17 -1 0
+    outer loop
+       vertex 0.1 0 -0.01
+       vertex 0.09333333 1.445603e-19 -0.01
+       vertex 0.09333333 1.445603e-19 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.01333333 0 -0.01
+       vertex 0.02 0 -0.01
+       vertex 0.02 0 0
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.02 0 0
+       vertex 0.01333333 0 0
+       vertex 0.01333333 0 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.02 0 -0.01
+       vertex 0.02666667 0 -0.01
+       vertex 0.02666667 0 5.782412e-19
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.02666667 0 5.782412e-19
+       vertex 0.02 0 0
+       vertex 0.02 0 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.02666667 0 -0.01
+       vertex 0.03333333 0 -0.01
+       vertex 0.03333333 0 0
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.03333333 0 0
+       vertex 0.02666667 0 5.782412e-19
+       vertex 0.02666667 0 -0.01
+    endloop
+  endfacet
+  facet normal -4.336807e-17 -1 0
+    outer loop
+       vertex 0.03333333 0 -0.01
+       vertex 0.04 -2.891206e-19 -0.01
+       vertex 0.04 -2.891206e-19 -5.782412e-19
+    endloop
+  endfacet
+  facet normal -4.336807e-17 -1 0
+    outer loop
+       vertex 0.04 -2.891206e-19 -5.782412e-19
+       vertex 0.03333333 0 0
+       vertex 0.03333333 0 -0.01
+    endloop
+  endfacet
+  facet normal 8.673614e-17 -1 0
+    outer loop
+       vertex 0.04 -2.891206e-19 -0.01
+       vertex 0.04666667 2.891206e-19 -0.01
+       vertex 0.04666667 2.891206e-19 0
+    endloop
+  endfacet
+  facet normal 8.673614e-17 -1 0
+    outer loop
+       vertex 0.04666667 2.891206e-19 0
+       vertex 0.04 -2.891206e-19 -5.782412e-19
+       vertex 0.04 -2.891206e-19 -0.01
+    endloop
+  endfacet
+  facet normal -4.336813e-17 -1 0
+    outer loop
+       vertex 0.04666667 2.891206e-19 -0.01
+       vertex 0.05333333 0 -0.01
+       vertex 0.05333333 0 -2.891206e-19
+    endloop
+  endfacet
+  facet normal -4.336813e-17 -1 0
+    outer loop
+       vertex 0.05333333 0 -2.891206e-19
+       vertex 0.04666667 2.891206e-19 0
+       vertex 0.04666667 2.891206e-19 -0.01
+    endloop
+  endfacet
+  facet normal -4.336807e-17 -1 0
+    outer loop
+       vertex 0.05333333 0 -0.01
+       vertex 0.06 -2.891206e-19 -0.01
+       vertex 0.06 -2.891206e-19 5.782412e-19
+    endloop
+  endfacet
+  facet normal -4.336807e-17 -1 0
+    outer loop
+       vertex 0.06 -2.891206e-19 5.782412e-19
+       vertex 0.05333333 0 -2.891206e-19
+       vertex 0.05333333 0 -0.01
+    endloop
+  endfacet
+  facet normal -2.168403e-17 -1 0
+    outer loop
+       vertex 0.06 -2.891206e-19 -0.01
+       vertex 0.06666667 -4.336809e-19 -0.01
+       vertex 0.06666667 -4.336809e-19 0
+    endloop
+  endfacet
+  facet normal -2.168403e-17 -1 0
+    outer loop
+       vertex 0.06666667 -4.336809e-19 0
+       vertex 0.06 -2.891206e-19 5.782412e-19
+       vertex 0.06 -2.891206e-19 -0.01
+    endloop
+  endfacet
+  facet normal -2.168407e-17 -1 0
+    outer loop
+       vertex 0.06666667 -4.336809e-19 -0.01
+       vertex 0.07333333 -5.782412e-19 -0.01
+       vertex 0.07333333 -5.782412e-19 -4.336809e-19
+    endloop
+  endfacet
+  facet normal -2.168407e-17 -1 0
+    outer loop
+       vertex 0.07333333 -5.782412e-19 -4.336809e-19
+       vertex 0.06666667 -4.336809e-19 0
+       vertex 0.06666667 -4.336809e-19 -0.01
+    endloop
+  endfacet
+  facet normal 1.517882e-16 -1 0
+    outer loop
+       vertex 0.07333333 -5.782412e-19 -0.01
+       vertex 0.08 4.336809e-19 -0.01
+       vertex 0.08 4.336809e-19 2.891206e-19
+    endloop
+  endfacet
+  facet normal 1.517882e-16 -1 0
+    outer loop
+       vertex 0.08 4.336809e-19 2.891206e-19
+       vertex 0.07333333 -5.782412e-19 -4.336809e-19
+       vertex 0.07333333 -5.782412e-19 -0.01
+    endloop
+  endfacet
+  facet normal -2.168403e-17 -1 0
+    outer loop
+       vertex 0.08 4.336809e-19 -0.01
+       vertex 0.08666667 2.891206e-19 -0.01
+       vertex 0.08666667 2.891206e-19 -2.168404e-19
+    endloop
+  endfacet
+  facet normal -2.168403e-17 -1 0
+    outer loop
+       vertex 0.08666667 2.891206e-19 -2.168404e-19
+       vertex 0.08 4.336809e-19 2.891206e-19
+       vertex 0.08 4.336809e-19 -0.01
+    endloop
+  endfacet
+  facet normal -2.168407e-17 -1 0
+    outer loop
+       vertex 0.08666667 2.891206e-19 -0.01
+       vertex 0.09333333 1.445603e-19 -0.01
+       vertex 0.09333333 1.445603e-19 4.698209e-19
+    endloop
+  endfacet
+  facet normal -2.168407e-17 -1 0
+    outer loop
+       vertex 0.09333333 1.445603e-19 4.698209e-19
+       vertex 0.08666667 2.891206e-19 -2.168404e-19
+       vertex 0.08666667 2.891206e-19 -0.01
+    endloop
+  endfacet
+  facet normal -2.168403e-17 -1 0
+    outer loop
+       vertex 0.09333333 1.445603e-19 -0.01
+       vertex 0.1 0 -0.01
+       vertex 0.1 0 0
+    endloop
+  endfacet
+  facet normal -2.168403e-17 -1 0
+    outer loop
+       vertex 0.1 0 0
+       vertex 0.09333333 1.445603e-19 4.698209e-19
+       vertex 0.09333333 1.445603e-19 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.01333333 0 0
+       vertex 0.02 0 0
+       vertex 0.02 0 0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.02 0 0.01
+       vertex 0.01333333 0 0.01
+       vertex 0.01333333 0 0
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.02666667 0 5.782412e-19
+       vertex 0.02666667 0 0.01
+       vertex 0.02 0 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.02 0 0.01
+       vertex 0.02 0 0
+       vertex 0.02666667 0 5.782412e-19
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.02666667 0 5.782412e-19
+       vertex 0.03333333 0 0
+       vertex 0.03333333 0 0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.03333333 0 0.01
+       vertex 0.02666667 0 0.01
+       vertex 0.02666667 0 5.782412e-19
+    endloop
+  endfacet
+  facet normal -4.336807e-17 -1 0
+    outer loop
+       vertex 0.03333333 0 0
+       vertex 0.04 -2.891206e-19 -5.782412e-19
+       vertex 0.04 -2.891206e-19 0.01
+    endloop
+  endfacet
+  facet normal -4.336807e-17 -1 0
+    outer loop
+       vertex 0.04 -2.891206e-19 0.01
+       vertex 0.03333333 0 0.01
+       vertex 0.03333333 0 0
+    endloop
+  endfacet
+  facet normal 8.673614e-17 -1 0
+    outer loop
+       vertex 0.04666667 2.891206e-19 0
+       vertex 0.04666667 2.891206e-19 0.01
+       vertex 0.04 -2.891206e-19 0.01
+    endloop
+  endfacet
+  facet normal 8.673614e-17 -1 0
+    outer loop
+       vertex 0.04 -2.891206e-19 0.01
+       vertex 0.04 -2.891206e-19 -5.782412e-19
+       vertex 0.04666667 2.891206e-19 0
+    endloop
+  endfacet
+  facet normal -4.336813e-17 -1 0
+    outer loop
+       vertex 0.04666667 2.891206e-19 0
+       vertex 0.05333333 0 -2.891206e-19
+       vertex 0.05333333 0 0.01
+    endloop
+  endfacet
+  facet normal -4.336813e-17 -1 0
+    outer loop
+       vertex 0.05333333 0 0.01
+       vertex 0.04666667 2.891206e-19 0.01
+       vertex 0.04666667 2.891206e-19 0
+    endloop
+  endfacet
+  facet normal -4.336807e-17 -1 0
+    outer loop
+       vertex 0.06 -2.891206e-19 5.782412e-19
+       vertex 0.06 -2.891206e-19 0.01
+       vertex 0.05333333 0 0.01
+    endloop
+  endfacet
+  facet normal -4.336807e-17 -1 -0
+    outer loop
+       vertex 0.05333333 0 0.01
+       vertex 0.05333333 0 -2.891206e-19
+       vertex 0.06 -2.891206e-19 5.782412e-19
+    endloop
+  endfacet
+  facet normal -2.168403e-17 -1 0
+    outer loop
+       vertex 0.06 -2.891206e-19 5.782412e-19
+       vertex 0.06666667 -4.336809e-19 0
+       vertex 0.06666667 -4.336809e-19 0.01
+    endloop
+  endfacet
+  facet normal -2.168403e-17 -1 0
+    outer loop
+       vertex 0.06666667 -4.336809e-19 0.01
+       vertex 0.06 -2.891206e-19 0.01
+       vertex 0.06 -2.891206e-19 5.782412e-19
+    endloop
+  endfacet
+  facet normal -2.168407e-17 -1 0
+    outer loop
+       vertex 0.06666667 -4.336809e-19 0
+       vertex 0.07333333 -5.782412e-19 -4.336809e-19
+       vertex 0.07333333 -5.782412e-19 0.01
+    endloop
+  endfacet
+  facet normal -2.168407e-17 -1 0
+    outer loop
+       vertex 0.07333333 -5.782412e-19 0.01
+       vertex 0.06666667 -4.336809e-19 0.01
+       vertex 0.06666667 -4.336809e-19 0
+    endloop
+  endfacet
+  facet normal 1.517882e-16 -1 0
+    outer loop
+       vertex 0.08 4.336809e-19 2.891206e-19
+       vertex 0.08 4.336809e-19 0.01
+       vertex 0.07333333 -5.782412e-19 0.01
+    endloop
+  endfacet
+  facet normal 1.517882e-16 -1 0
+    outer loop
+       vertex 0.07333333 -5.782412e-19 0.01
+       vertex 0.07333333 -5.782412e-19 -4.336809e-19
+       vertex 0.08 4.336809e-19 2.891206e-19
+    endloop
+  endfacet
+  facet normal -2.168403e-17 -1 0
+    outer loop
+       vertex 0.08 4.336809e-19 2.891206e-19
+       vertex 0.08666667 2.891206e-19 -2.168404e-19
+       vertex 0.08666667 2.891206e-19 0.01
+    endloop
+  endfacet
+  facet normal -2.168403e-17 -1 0
+    outer loop
+       vertex 0.08666667 2.891206e-19 0.01
+       vertex 0.08 4.336809e-19 0.01
+       vertex 0.08 4.336809e-19 2.891206e-19
+    endloop
+  endfacet
+  facet normal -2.168407e-17 -1 0
+    outer loop
+       vertex 0.09333333 1.445603e-19 4.698209e-19
+       vertex 0.09333333 1.445603e-19 0.01
+       vertex 0.08666667 2.891206e-19 0.01
+    endloop
+  endfacet
+  facet normal -2.168407e-17 -1 -0
+    outer loop
+       vertex 0.08666667 2.891206e-19 0.01
+       vertex 0.08666667 2.891206e-19 -2.168404e-19
+       vertex 0.09333333 1.445603e-19 4.698209e-19
+    endloop
+  endfacet
+  facet normal -2.168403e-17 -1 0
+    outer loop
+       vertex 0.09333333 1.445603e-19 4.698209e-19
+       vertex 0.1 0 0
+       vertex 0.1 0 0.01
+    endloop
+  endfacet
+  facet normal -2.168403e-17 -1 0
+    outer loop
+       vertex 0.1 0 0.01
+       vertex 0.09333333 1.445603e-19 0.01
+       vertex 0.09333333 1.445603e-19 4.698209e-19
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.01333333 0 0.01
+       vertex 0.02 0 0.01
+       vertex 0.02 0 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.02 0 0.02
+       vertex 0.01333333 0 0.02
+       vertex 0.01333333 0 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.02 0 0.01
+       vertex 0.02666667 0 0.01
+       vertex 0.02666667 0 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.02666667 0 0.02
+       vertex 0.02 0 0.02
+       vertex 0.02 0 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.02666667 0 0.01
+       vertex 0.03333333 0 0.01
+       vertex 0.03333333 0 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.03333333 0 0.02
+       vertex 0.02666667 0 0.02
+       vertex 0.02666667 0 0.01
+    endloop
+  endfacet
+  facet normal -4.336807e-17 -1 0
+    outer loop
+       vertex 0.03333333 0 0.01
+       vertex 0.04 -2.891206e-19 0.01
+       vertex 0.04 -2.891206e-19 0.02
+    endloop
+  endfacet
+  facet normal -4.336807e-17 -1 0
+    outer loop
+       vertex 0.04 -2.891206e-19 0.02
+       vertex 0.03333333 0 0.02
+       vertex 0.03333333 0 0.01
+    endloop
+  endfacet
+  facet normal 8.673614e-17 -1 0
+    outer loop
+       vertex 0.04 -2.891206e-19 0.01
+       vertex 0.04666667 2.891206e-19 0.01
+       vertex 0.04666667 2.891206e-19 0.02
+    endloop
+  endfacet
+  facet normal 8.673614e-17 -1 0
+    outer loop
+       vertex 0.04666667 2.891206e-19 0.02
+       vertex 0.04 -2.891206e-19 0.02
+       vertex 0.04 -2.891206e-19 0.01
+    endloop
+  endfacet
+  facet normal -4.336813e-17 -1 0
+    outer loop
+       vertex 0.04666667 2.891206e-19 0.01
+       vertex 0.05333333 0 0.01
+       vertex 0.05333333 0 0.02
+    endloop
+  endfacet
+  facet normal -4.336813e-17 -1 0
+    outer loop
+       vertex 0.05333333 0 0.02
+       vertex 0.04666667 2.891206e-19 0.02
+       vertex 0.04666667 2.891206e-19 0.01
+    endloop
+  endfacet
+  facet normal -4.336807e-17 -1 0
+    outer loop
+       vertex 0.05333333 0 0.01
+       vertex 0.06 -2.891206e-19 0.01
+       vertex 0.06 -2.891206e-19 0.02
+    endloop
+  endfacet
+  facet normal -4.336807e-17 -1 0
+    outer loop
+       vertex 0.06 -2.891206e-19 0.02
+       vertex 0.05333333 0 0.02
+       vertex 0.05333333 0 0.01
+    endloop
+  endfacet
+  facet normal -2.168403e-17 -1 1.445603e-17
+    outer loop
+       vertex 0.06 -2.891206e-19 0.01
+       vertex 0.06666667 -4.336809e-19 0.01
+       vertex 0.06666667 -2.891206e-19 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.06666667 -2.891206e-19 0.02
+       vertex 0.06 -2.891206e-19 0.02
+       vertex 0.06 -2.891206e-19 0.01
+    endloop
+  endfacet
+  facet normal -2.168407e-17 -1 0
+    outer loop
+       vertex 0.06666667 -4.336809e-19 0.01
+       vertex 0.07333333 -5.782412e-19 0.01
+       vertex 0.07333333 -5.782412e-19 0.02
+    endloop
+  endfacet
+  facet normal -4.336813e-17 -1 1.445603e-17
+    outer loop
+       vertex 0.07333333 -5.782412e-19 0.02
+       vertex 0.06666667 -2.891206e-19 0.02
+       vertex 0.06666667 -4.336809e-19 0.01
+    endloop
+  endfacet
+  facet normal 1.517882e-16 -1 0
+    outer loop
+       vertex 0.07333333 -5.782412e-19 0.01
+       vertex 0.08 4.336809e-19 0.01
+       vertex 0.08 4.336809e-19 0.02
+    endloop
+  endfacet
+  facet normal 1.517882e-16 -1 0
+    outer loop
+       vertex 0.08 4.336809e-19 0.02
+       vertex 0.07333333 -5.782412e-19 0.02
+       vertex 0.07333333 -5.782412e-19 0.01
+    endloop
+  endfacet
+  facet normal -2.168403e-17 -1 0
+    outer loop
+       vertex 0.08 4.336809e-19 0.01
+       vertex 0.08666667 2.891206e-19 0.01
+       vertex 0.08666667 2.891206e-19 0.02
+    endloop
+  endfacet
+  facet normal -2.168403e-17 -1 0
+    outer loop
+       vertex 0.08666667 2.891206e-19 0.02
+       vertex 0.08 4.336809e-19 0.02
+       vertex 0.08 4.336809e-19 0.01
+    endloop
+  endfacet
+  facet normal -2.168407e-17 -1 0
+    outer loop
+       vertex 0.08666667 2.891206e-19 0.01
+       vertex 0.09333333 1.445603e-19 0.01
+       vertex 0.09333333 1.445603e-19 0.02
+    endloop
+  endfacet
+  facet normal -2.168407e-17 -1 0
+    outer loop
+       vertex 0.09333333 1.445603e-19 0.02
+       vertex 0.08666667 2.891206e-19 0.02
+       vertex 0.08666667 2.891206e-19 0.01
+    endloop
+  endfacet
+  facet normal -2.168403e-17 -1 0
+    outer loop
+       vertex 0.09333333 1.445603e-19 0.01
+       vertex 0.1 0 0.01
+       vertex 0.1 0 0.02
+    endloop
+  endfacet
+  facet normal -2.168403e-17 -1 0
+    outer loop
+       vertex 0.1 0 0.02
+       vertex 0.09333333 1.445603e-19 0.02
+       vertex 0.09333333 1.445603e-19 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.01333333 0 0.02
+       vertex 0.02 0 0.02
+       vertex 0.02 0 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.02 0 0.03
+       vertex 0.01333333 0 0.03
+       vertex 0.01333333 0 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.02 0 0.02
+       vertex 0.02666667 0 0.02
+       vertex 0.02666667 0 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.02666667 0 0.03
+       vertex 0.02 0 0.03
+       vertex 0.02 0 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.02666667 0 0.02
+       vertex 0.03333333 0 0.02
+       vertex 0.03333333 0 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.03333333 0 0.03
+       vertex 0.02666667 0 0.03
+       vertex 0.02666667 0 0.02
+    endloop
+  endfacet
+  facet normal -4.336807e-17 -1 0
+    outer loop
+       vertex 0.03333333 0 0.02
+       vertex 0.04 -2.891206e-19 0.02
+       vertex 0.04 -2.891206e-19 0.03
+    endloop
+  endfacet
+  facet normal -4.336807e-17 -1 0
+    outer loop
+       vertex 0.04 -2.891206e-19 0.03
+       vertex 0.03333333 0 0.03
+       vertex 0.03333333 0 0.02
+    endloop
+  endfacet
+  facet normal 8.673614e-17 -1 0
+    outer loop
+       vertex 0.04 -2.891206e-19 0.02
+       vertex 0.04666667 2.891206e-19 0.02
+       vertex 0.04666667 2.891206e-19 0.03
+    endloop
+  endfacet
+  facet normal 8.673614e-17 -1 0
+    outer loop
+       vertex 0.04666667 2.891206e-19 0.03
+       vertex 0.04 -2.891206e-19 0.03
+       vertex 0.04 -2.891206e-19 0.02
+    endloop
+  endfacet
+  facet normal -4.336813e-17 -1 0
+    outer loop
+       vertex 0.04666667 2.891206e-19 0.02
+       vertex 0.05333333 0 0.02
+       vertex 0.05333333 0 0.03
+    endloop
+  endfacet
+  facet normal -4.336813e-17 -1 0
+    outer loop
+       vertex 0.05333333 0 0.03
+       vertex 0.04666667 2.891206e-19 0.03
+       vertex 0.04666667 2.891206e-19 0.02
+    endloop
+  endfacet
+  facet normal -4.336807e-17 -1 0
+    outer loop
+       vertex 0.05333333 0 0.02
+       vertex 0.06 -2.891206e-19 0.02
+       vertex 0.06 -2.891206e-19 0.03
+    endloop
+  endfacet
+  facet normal -4.336807e-17 -1 0
+    outer loop
+       vertex 0.06 -2.891206e-19 0.03
+       vertex 0.05333333 0 0.03
+       vertex 0.05333333 0 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 -1.445603e-17
+    outer loop
+       vertex 0.06 -2.891206e-19 0.02
+       vertex 0.06666667 -2.891206e-19 0.02
+       vertex 0.06666667 -4.336809e-19 0.03
+    endloop
+  endfacet
+  facet normal -2.168403e-17 -1 0
+    outer loop
+       vertex 0.06666667 -4.336809e-19 0.03
+       vertex 0.06 -2.891206e-19 0.03
+       vertex 0.06 -2.891206e-19 0.02
+    endloop
+  endfacet
+  facet normal -4.336813e-17 -1 0
+    outer loop
+       vertex 0.06666667 -2.891206e-19 0.02
+       vertex 0.07333333 -5.782412e-19 0.02
+       vertex 0.07333333 -5.782412e-19 0.03
+    endloop
+  endfacet
+  facet normal -2.168407e-17 -1 -1.445603e-17
+    outer loop
+       vertex 0.07333333 -5.782412e-19 0.03
+       vertex 0.06666667 -4.336809e-19 0.03
+       vertex 0.06666667 -2.891206e-19 0.02
+    endloop
+  endfacet
+  facet normal 1.517882e-16 -1 0
+    outer loop
+       vertex 0.07333333 -5.782412e-19 0.02
+       vertex 0.08 4.336809e-19 0.02
+       vertex 0.08 4.336809e-19 0.03
+    endloop
+  endfacet
+  facet normal 1.517882e-16 -1 0
+    outer loop
+       vertex 0.08 4.336809e-19 0.03
+       vertex 0.07333333 -5.782412e-19 0.03
+       vertex 0.07333333 -5.782412e-19 0.02
+    endloop
+  endfacet
+  facet normal -2.168403e-17 -1 0
+    outer loop
+       vertex 0.08 4.336809e-19 0.02
+       vertex 0.08666667 2.891206e-19 0.02
+       vertex 0.08666667 2.891206e-19 0.03
+    endloop
+  endfacet
+  facet normal -2.168403e-17 -1 0
+    outer loop
+       vertex 0.08666667 2.891206e-19 0.03
+       vertex 0.08 4.336809e-19 0.03
+       vertex 0.08 4.336809e-19 0.02
+    endloop
+  endfacet
+  facet normal -2.168407e-17 -1 0
+    outer loop
+       vertex 0.08666667 2.891206e-19 0.02
+       vertex 0.09333333 1.445603e-19 0.02
+       vertex 0.09333333 1.445603e-19 0.03
+    endloop
+  endfacet
+  facet normal -2.168407e-17 -1 0
+    outer loop
+       vertex 0.09333333 1.445603e-19 0.03
+       vertex 0.08666667 2.891206e-19 0.03
+       vertex 0.08666667 2.891206e-19 0.02
+    endloop
+  endfacet
+  facet normal -2.168403e-17 -1 0
+    outer loop
+       vertex 0.09333333 1.445603e-19 0.02
+       vertex 0.1 0 0.02
+       vertex 0.1 0 0.03
+    endloop
+  endfacet
+  facet normal -2.168403e-17 -1 0
+    outer loop
+       vertex 0.1 0 0.03
+       vertex 0.09333333 1.445603e-19 0.03
+       vertex 0.09333333 1.445603e-19 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.01333333 0 0.03
+       vertex 0.02 0 0.03
+       vertex 0.02 0 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.02 0 0.04
+       vertex 0.01333333 0 0.04
+       vertex 0.01333333 0 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.02 0 0.03
+       vertex 0.02666667 0 0.03
+       vertex 0.02666667 0 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.02666667 0 0.04
+       vertex 0.02 0 0.04
+       vertex 0.02 0 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.02666667 0 0.03
+       vertex 0.03333333 0 0.03
+       vertex 0.03333333 0 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.03333333 0 0.04
+       vertex 0.02666667 0 0.04
+       vertex 0.02666667 0 0.03
+    endloop
+  endfacet
+  facet normal -4.336807e-17 -1 0
+    outer loop
+       vertex 0.03333333 0 0.03
+       vertex 0.04 -2.891206e-19 0.03
+       vertex 0.04 -2.891206e-19 0.04
+    endloop
+  endfacet
+  facet normal -4.336807e-17 -1 0
+    outer loop
+       vertex 0.04 -2.891206e-19 0.04
+       vertex 0.03333333 0 0.04
+       vertex 0.03333333 0 0.03
+    endloop
+  endfacet
+  facet normal 8.673614e-17 -1 -8.673618e-17
+    outer loop
+       vertex 0.04 -2.891206e-19 0.03
+       vertex 0.04666667 2.891206e-19 0.03
+       vertex 0.04666667 -5.782412e-19 0.04
+    endloop
+  endfacet
+  facet normal -4.336807e-17 -1 0
+    outer loop
+       vertex 0.04666667 -5.782412e-19 0.04
+       vertex 0.04 -2.891206e-19 0.04
+       vertex 0.04 -2.891206e-19 0.03
+    endloop
+  endfacet
+  facet normal -4.336813e-17 -1 0
+    outer loop
+       vertex 0.04666667 2.891206e-19 0.03
+       vertex 0.05333333 0 0.03
+       vertex 0.05333333 0 0.04
+    endloop
+  endfacet
+  facet normal 8.673627e-17 -1 -8.673618e-17
+    outer loop
+       vertex 0.05333333 0 0.04
+       vertex 0.04666667 -5.782412e-19 0.04
+       vertex 0.04666667 2.891206e-19 0.03
+    endloop
+  endfacet
+  facet normal -4.336807e-17 -1 0
+    outer loop
+       vertex 0.05333333 0 0.03
+       vertex 0.06 -2.891206e-19 0.03
+       vertex 0.06 -2.891206e-19 0.04
+    endloop
+  endfacet
+  facet normal -4.336807e-17 -1 0
+    outer loop
+       vertex 0.06 -2.891206e-19 0.04
+       vertex 0.05333333 0 0.04
+       vertex 0.05333333 0 0.03
+    endloop
+  endfacet
+  facet normal -2.168403e-17 -1 1.445603e-17
+    outer loop
+       vertex 0.06 -2.891206e-19 0.03
+       vertex 0.06666667 -4.336809e-19 0.03
+       vertex 0.06666667 -2.891206e-19 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.06666667 -2.891206e-19 0.04
+       vertex 0.06 -2.891206e-19 0.04
+       vertex 0.06 -2.891206e-19 0.03
+    endloop
+  endfacet
+  facet normal -2.168407e-17 -1 0
+    outer loop
+       vertex 0.06666667 -4.336809e-19 0.03
+       vertex 0.07333333 -5.782412e-19 0.03
+       vertex 0.07333333 -5.782412e-19 0.04
+    endloop
+  endfacet
+  facet normal -4.336813e-17 -1 1.445603e-17
+    outer loop
+       vertex 0.07333333 -5.782412e-19 0.04
+       vertex 0.06666667 -2.891206e-19 0.04
+       vertex 0.06666667 -4.336809e-19 0.03
+    endloop
+  endfacet
+  facet normal 1.517882e-16 -1 0
+    outer loop
+       vertex 0.07333333 -5.782412e-19 0.03
+       vertex 0.08 4.336809e-19 0.03
+       vertex 0.08 4.336809e-19 0.04
+    endloop
+  endfacet
+  facet normal 1.517882e-16 -1 0
+    outer loop
+       vertex 0.08 4.336809e-19 0.04
+       vertex 0.07333333 -5.782412e-19 0.04
+       vertex 0.07333333 -5.782412e-19 0.03
+    endloop
+  endfacet
+  facet normal -2.168403e-17 -1 0
+    outer loop
+       vertex 0.08 4.336809e-19 0.03
+       vertex 0.08666667 2.891206e-19 0.03
+       vertex 0.08666667 2.891206e-19 0.04
+    endloop
+  endfacet
+  facet normal -2.168403e-17 -1 0
+    outer loop
+       vertex 0.08666667 2.891206e-19 0.04
+       vertex 0.08 4.336809e-19 0.04
+       vertex 0.08 4.336809e-19 0.03
+    endloop
+  endfacet
+  facet normal -2.168407e-17 -1 0
+    outer loop
+       vertex 0.08666667 2.891206e-19 0.03
+       vertex 0.09333333 1.445603e-19 0.03
+       vertex 0.09333333 1.445603e-19 0.04
+    endloop
+  endfacet
+  facet normal -2.168407e-17 -1 0
+    outer loop
+       vertex 0.09333333 1.445603e-19 0.04
+       vertex 0.08666667 2.891206e-19 0.04
+       vertex 0.08666667 2.891206e-19 0.03
+    endloop
+  endfacet
+  facet normal -2.168403e-17 -1 0
+    outer loop
+       vertex 0.09333333 1.445603e-19 0.03
+       vertex 0.1 0 0.03
+       vertex 0.1 0 0.04
+    endloop
+  endfacet
+  facet normal -2.168403e-17 -1 0
+    outer loop
+       vertex 0.1 0 0.04
+       vertex 0.09333333 1.445603e-19 0.04
+       vertex 0.09333333 1.445603e-19 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.01333333 0 0.04
+       vertex 0.02 0 0.04
+       vertex 0.02 0 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.02 0 0.05
+       vertex 0.01333333 0 0.05
+       vertex 0.01333333 0 0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.02 0 0.04
+       vertex 0.02666667 0 0.04
+       vertex 0.02666667 0 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.02666667 0 0.05
+       vertex 0.02 0 0.05
+       vertex 0.02 0 0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.02666667 0 0.04
+       vertex 0.03333333 0 0.04
+       vertex 0.03333333 0 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.03333333 0 0.05
+       vertex 0.02666667 0 0.05
+       vertex 0.02666667 0 0.04
+    endloop
+  endfacet
+  facet normal -4.336807e-17 -1 0
+    outer loop
+       vertex 0.03333333 0 0.04
+       vertex 0.04 -2.891206e-19 0.04
+       vertex 0.04 -2.891206e-19 0.05
+    endloop
+  endfacet
+  facet normal -4.336807e-17 -1 0
+    outer loop
+       vertex 0.04 -2.891206e-19 0.05
+       vertex 0.03333333 0 0.05
+       vertex 0.03333333 0 0.04
+    endloop
+  endfacet
+  facet normal -4.336807e-17 -1 8.673618e-17
+    outer loop
+       vertex 0.04 -2.891206e-19 0.04
+       vertex 0.04666667 -5.782412e-19 0.04
+       vertex 0.04666667 2.891206e-19 0.05
+    endloop
+  endfacet
+  facet normal 8.673614e-17 -1 0
+    outer loop
+       vertex 0.04666667 2.891206e-19 0.05
+       vertex 0.04 -2.891206e-19 0.05
+       vertex 0.04 -2.891206e-19 0.04
+    endloop
+  endfacet
+  facet normal 8.673627e-17 -1 0
+    outer loop
+       vertex 0.04666667 -5.782412e-19 0.04
+       vertex 0.05333333 0 0.04
+       vertex 0.05333333 0 0.05
+    endloop
+  endfacet
+  facet normal -4.336813e-17 -1 8.673618e-17
+    outer loop
+       vertex 0.05333333 0 0.05
+       vertex 0.04666667 2.891206e-19 0.05
+       vertex 0.04666667 -5.782412e-19 0.04
+    endloop
+  endfacet
+  facet normal -4.336807e-17 -1 0
+    outer loop
+       vertex 0.05333333 0 0.04
+       vertex 0.06 -2.891206e-19 0.04
+       vertex 0.06 -2.891206e-19 0.05
+    endloop
+  endfacet
+  facet normal -4.336807e-17 -1 0
+    outer loop
+       vertex 0.06 -2.891206e-19 0.05
+       vertex 0.05333333 0 0.05
+       vertex 0.05333333 0 0.04
+    endloop
+  endfacet
+  facet normal 0 -1 -1.445603e-17
+    outer loop
+       vertex 0.06 -2.891206e-19 0.04
+       vertex 0.06666667 -2.891206e-19 0.04
+       vertex 0.06666667 -4.336809e-19 0.05
+    endloop
+  endfacet
+  facet normal -2.168403e-17 -1 0
+    outer loop
+       vertex 0.06666667 -4.336809e-19 0.05
+       vertex 0.06 -2.891206e-19 0.05
+       vertex 0.06 -2.891206e-19 0.04
+    endloop
+  endfacet
+  facet normal -4.336813e-17 -1 0
+    outer loop
+       vertex 0.06666667 -2.891206e-19 0.04
+       vertex 0.07333333 -5.782412e-19 0.04
+       vertex 0.07333333 -5.782412e-19 0.05
+    endloop
+  endfacet
+  facet normal -2.168407e-17 -1 -1.445603e-17
+    outer loop
+       vertex 0.07333333 -5.782412e-19 0.05
+       vertex 0.06666667 -4.336809e-19 0.05
+       vertex 0.06666667 -2.891206e-19 0.04
+    endloop
+  endfacet
+  facet normal 1.517882e-16 -1 0
+    outer loop
+       vertex 0.07333333 -5.782412e-19 0.04
+       vertex 0.08 4.336809e-19 0.04
+       vertex 0.08 4.336809e-19 0.05
+    endloop
+  endfacet
+  facet normal 1.517882e-16 -1 0
+    outer loop
+       vertex 0.08 4.336809e-19 0.05
+       vertex 0.07333333 -5.782412e-19 0.05
+       vertex 0.07333333 -5.782412e-19 0.04
+    endloop
+  endfacet
+  facet normal -2.168403e-17 -1 0
+    outer loop
+       vertex 0.08 4.336809e-19 0.04
+       vertex 0.08666667 2.891206e-19 0.04
+       vertex 0.08666667 2.891206e-19 0.05
+    endloop
+  endfacet
+  facet normal -2.168403e-17 -1 0
+    outer loop
+       vertex 0.08666667 2.891206e-19 0.05
+       vertex 0.08 4.336809e-19 0.05
+       vertex 0.08 4.336809e-19 0.04
+    endloop
+  endfacet
+  facet normal -2.168407e-17 -1 0
+    outer loop
+       vertex 0.08666667 2.891206e-19 0.04
+       vertex 0.09333333 1.445603e-19 0.04
+       vertex 0.09333333 1.445603e-19 0.05
+    endloop
+  endfacet
+  facet normal -2.168407e-17 -1 0
+    outer loop
+       vertex 0.09333333 1.445603e-19 0.05
+       vertex 0.08666667 2.891206e-19 0.05
+       vertex 0.08666667 2.891206e-19 0.04
+    endloop
+  endfacet
+  facet normal -2.168403e-17 -1 0
+    outer loop
+       vertex 0.09333333 1.445603e-19 0.04
+       vertex 0.1 0 0.04
+       vertex 0.1 0 0.05
+    endloop
+  endfacet
+  facet normal -2.168403e-17 -1 0
+    outer loop
+       vertex 0.1 0 0.05
+       vertex 0.09333333 1.445603e-19 0.05
+       vertex 0.09333333 1.445603e-19 0.04
+    endloop
+  endfacet
+endsolid rightSolid_to_bottomAir
+solid rightSolid_to_topAir
+  facet normal 0 1 0
+    outer loop
+       vertex 0.01333333 0.008 -0.05
+       vertex 0.01333333 0.008 -0.04
+       vertex 0.02 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02 0.008 -0.04
+       vertex 0.02 0.008 -0.05
+       vertex 0.01333333 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02 0.008 -0.05
+       vertex 0.02 0.008 -0.04
+       vertex 0.02666667 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02666667 0.008 -0.04
+       vertex 0.02666667 0.008 -0.05
+       vertex 0.02 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02666667 0.008 -0.05
+       vertex 0.02666667 0.008 -0.04
+       vertex 0.03333333 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.03333333 0.008 -0.04
+       vertex 0.03333333 0.008 -0.05
+       vertex 0.02666667 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.03333333 0.008 -0.05
+       vertex 0.03333333 0.008 -0.04
+       vertex 0.04 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04 0.008 -0.04
+       vertex 0.04 0.008 -0.05
+       vertex 0.03333333 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04 0.008 -0.05
+       vertex 0.04 0.008 -0.04
+       vertex 0.04666667 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04666667 0.008 -0.04
+       vertex 0.04666667 0.008 -0.05
+       vertex 0.04 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04666667 0.008 -0.05
+       vertex 0.04666667 0.008 -0.04
+       vertex 0.05333333 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.05333333 0.008 -0.04
+       vertex 0.05333333 0.008 -0.05
+       vertex 0.04666667 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.05333333 0.008 -0.05
+       vertex 0.05333333 0.008 -0.04
+       vertex 0.06 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06 0.008 -0.04
+       vertex 0.06 0.008 -0.05
+       vertex 0.05333333 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06 0.008 -0.05
+       vertex 0.06 0.008 -0.04
+       vertex 0.06666667 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06666667 0.008 -0.04
+       vertex 0.06666667 0.008 -0.05
+       vertex 0.06 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06666667 0.008 -0.05
+       vertex 0.06666667 0.008 -0.04
+       vertex 0.07333333 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.07333333 0.008 -0.04
+       vertex 0.07333333 0.008 -0.05
+       vertex 0.06666667 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.07333333 0.008 -0.05
+       vertex 0.07333333 0.008 -0.04
+       vertex 0.08 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08 0.008 -0.04
+       vertex 0.08 0.008 -0.05
+       vertex 0.07333333 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08 0.008 -0.05
+       vertex 0.08 0.008 -0.04
+       vertex 0.08666667 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08666667 0.008 -0.04
+       vertex 0.08666667 0.008 -0.05
+       vertex 0.08 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08666667 0.008 -0.05
+       vertex 0.08666667 0.008 -0.04
+       vertex 0.09333333 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.09333333 0.008 -0.04
+       vertex 0.09333333 0.008 -0.05
+       vertex 0.08666667 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.09333333 0.008 -0.05
+       vertex 0.09333333 0.008 -0.04
+       vertex 0.1 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.1 0.008 -0.04
+       vertex 0.1 0.008 -0.05
+       vertex 0.09333333 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.01333333 0.008 -0.04
+       vertex 0.01333333 0.008 -0.03
+       vertex 0.02 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02 0.008 -0.03
+       vertex 0.02 0.008 -0.04
+       vertex 0.01333333 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02 0.008 -0.04
+       vertex 0.02 0.008 -0.03
+       vertex 0.02666667 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02666667 0.008 -0.03
+       vertex 0.02666667 0.008 -0.04
+       vertex 0.02 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02666667 0.008 -0.04
+       vertex 0.02666667 0.008 -0.03
+       vertex 0.03333333 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.03333333 0.008 -0.03
+       vertex 0.03333333 0.008 -0.04
+       vertex 0.02666667 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.03333333 0.008 -0.04
+       vertex 0.03333333 0.008 -0.03
+       vertex 0.04 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04 0.008 -0.03
+       vertex 0.04 0.008 -0.04
+       vertex 0.03333333 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04 0.008 -0.04
+       vertex 0.04 0.008 -0.03
+       vertex 0.04666667 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04666667 0.008 -0.03
+       vertex 0.04666667 0.008 -0.04
+       vertex 0.04 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04666667 0.008 -0.04
+       vertex 0.04666667 0.008 -0.03
+       vertex 0.05333333 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.05333333 0.008 -0.03
+       vertex 0.05333333 0.008 -0.04
+       vertex 0.04666667 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.05333333 0.008 -0.04
+       vertex 0.05333333 0.008 -0.03
+       vertex 0.06 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06 0.008 -0.03
+       vertex 0.06 0.008 -0.04
+       vertex 0.05333333 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06 0.008 -0.04
+       vertex 0.06 0.008 -0.03
+       vertex 0.06666667 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06666667 0.008 -0.03
+       vertex 0.06666667 0.008 -0.04
+       vertex 0.06 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06666667 0.008 -0.04
+       vertex 0.06666667 0.008 -0.03
+       vertex 0.07333333 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.07333333 0.008 -0.03
+       vertex 0.07333333 0.008 -0.04
+       vertex 0.06666667 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.07333333 0.008 -0.04
+       vertex 0.07333333 0.008 -0.03
+       vertex 0.08 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08 0.008 -0.03
+       vertex 0.08 0.008 -0.04
+       vertex 0.07333333 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08 0.008 -0.04
+       vertex 0.08 0.008 -0.03
+       vertex 0.08666667 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08666667 0.008 -0.03
+       vertex 0.08666667 0.008 -0.04
+       vertex 0.08 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08666667 0.008 -0.04
+       vertex 0.08666667 0.008 -0.03
+       vertex 0.09333333 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.09333333 0.008 -0.03
+       vertex 0.09333333 0.008 -0.04
+       vertex 0.08666667 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.09333333 0.008 -0.04
+       vertex 0.09333333 0.008 -0.03
+       vertex 0.1 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.1 0.008 -0.03
+       vertex 0.1 0.008 -0.04
+       vertex 0.09333333 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.01333333 0.008 -0.03
+       vertex 0.01333333 0.008 -0.02
+       vertex 0.02 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02 0.008 -0.02
+       vertex 0.02 0.008 -0.03
+       vertex 0.01333333 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02 0.008 -0.03
+       vertex 0.02 0.008 -0.02
+       vertex 0.02666667 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02666667 0.008 -0.02
+       vertex 0.02666667 0.008 -0.03
+       vertex 0.02 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02666667 0.008 -0.03
+       vertex 0.02666667 0.008 -0.02
+       vertex 0.03333333 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.03333333 0.008 -0.02
+       vertex 0.03333333 0.008 -0.03
+       vertex 0.02666667 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.03333333 0.008 -0.03
+       vertex 0.03333333 0.008 -0.02
+       vertex 0.04 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04 0.008 -0.02
+       vertex 0.04 0.008 -0.03
+       vertex 0.03333333 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04 0.008 -0.03
+       vertex 0.04 0.008 -0.02
+       vertex 0.04666667 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04666667 0.008 -0.02
+       vertex 0.04666667 0.008 -0.03
+       vertex 0.04 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04666667 0.008 -0.03
+       vertex 0.04666667 0.008 -0.02
+       vertex 0.05333333 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.05333333 0.008 -0.02
+       vertex 0.05333333 0.008 -0.03
+       vertex 0.04666667 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.05333333 0.008 -0.03
+       vertex 0.05333333 0.008 -0.02
+       vertex 0.06 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06 0.008 -0.02
+       vertex 0.06 0.008 -0.03
+       vertex 0.05333333 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06 0.008 -0.03
+       vertex 0.06 0.008 -0.02
+       vertex 0.06666667 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06666667 0.008 -0.02
+       vertex 0.06666667 0.008 -0.03
+       vertex 0.06 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06666667 0.008 -0.03
+       vertex 0.06666667 0.008 -0.02
+       vertex 0.07333333 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.07333333 0.008 -0.02
+       vertex 0.07333333 0.008 -0.03
+       vertex 0.06666667 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.07333333 0.008 -0.03
+       vertex 0.07333333 0.008 -0.02
+       vertex 0.08 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08 0.008 -0.02
+       vertex 0.08 0.008 -0.03
+       vertex 0.07333333 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08 0.008 -0.03
+       vertex 0.08 0.008 -0.02
+       vertex 0.08666667 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08666667 0.008 -0.02
+       vertex 0.08666667 0.008 -0.03
+       vertex 0.08 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08666667 0.008 -0.03
+       vertex 0.08666667 0.008 -0.02
+       vertex 0.09333333 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.09333333 0.008 -0.02
+       vertex 0.09333333 0.008 -0.03
+       vertex 0.08666667 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.09333333 0.008 -0.03
+       vertex 0.09333333 0.008 -0.02
+       vertex 0.1 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.1 0.008 -0.02
+       vertex 0.1 0.008 -0.03
+       vertex 0.09333333 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.01333333 0.008 -0.02
+       vertex 0.01333333 0.008 -0.01
+       vertex 0.02 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02 0.008 -0.01
+       vertex 0.02 0.008 -0.02
+       vertex 0.01333333 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02 0.008 -0.02
+       vertex 0.02 0.008 -0.01
+       vertex 0.02666667 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02666667 0.008 -0.01
+       vertex 0.02666667 0.008 -0.02
+       vertex 0.02 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02666667 0.008 -0.02
+       vertex 0.02666667 0.008 -0.01
+       vertex 0.03333333 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.03333333 0.008 -0.01
+       vertex 0.03333333 0.008 -0.02
+       vertex 0.02666667 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.03333333 0.008 -0.02
+       vertex 0.03333333 0.008 -0.01
+       vertex 0.04 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04 0.008 -0.01
+       vertex 0.04 0.008 -0.02
+       vertex 0.03333333 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04 0.008 -0.02
+       vertex 0.04 0.008 -0.01
+       vertex 0.04666667 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04666667 0.008 -0.01
+       vertex 0.04666667 0.008 -0.02
+       vertex 0.04 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04666667 0.008 -0.02
+       vertex 0.04666667 0.008 -0.01
+       vertex 0.05333333 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.05333333 0.008 -0.01
+       vertex 0.05333333 0.008 -0.02
+       vertex 0.04666667 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.05333333 0.008 -0.02
+       vertex 0.05333333 0.008 -0.01
+       vertex 0.06 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06 0.008 -0.01
+       vertex 0.06 0.008 -0.02
+       vertex 0.05333333 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06 0.008 -0.02
+       vertex 0.06 0.008 -0.01
+       vertex 0.06666667 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06666667 0.008 -0.01
+       vertex 0.06666667 0.008 -0.02
+       vertex 0.06 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06666667 0.008 -0.02
+       vertex 0.06666667 0.008 -0.01
+       vertex 0.07333333 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.07333333 0.008 -0.01
+       vertex 0.07333333 0.008 -0.02
+       vertex 0.06666667 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.07333333 0.008 -0.02
+       vertex 0.07333333 0.008 -0.01
+       vertex 0.08 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08 0.008 -0.01
+       vertex 0.08 0.008 -0.02
+       vertex 0.07333333 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08 0.008 -0.02
+       vertex 0.08 0.008 -0.01
+       vertex 0.08666667 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08666667 0.008 -0.01
+       vertex 0.08666667 0.008 -0.02
+       vertex 0.08 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08666667 0.008 -0.02
+       vertex 0.08666667 0.008 -0.01
+       vertex 0.09333333 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.09333333 0.008 -0.01
+       vertex 0.09333333 0.008 -0.02
+       vertex 0.08666667 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.09333333 0.008 -0.02
+       vertex 0.09333333 0.008 -0.01
+       vertex 0.1 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.1 0.008 -0.01
+       vertex 0.1 0.008 -0.02
+       vertex 0.09333333 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.01333333 0.008 -0.01
+       vertex 0.01333333 0.008 0
+       vertex 0.02 0.008 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02 0.008 0
+       vertex 0.02 0.008 -0.01
+       vertex 0.01333333 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02 0.008 -0.01
+       vertex 0.02 0.008 0
+       vertex 0.02666667 0.008 5.782412e-19
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02666667 0.008 5.782412e-19
+       vertex 0.02666667 0.008 -0.01
+       vertex 0.02 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02666667 0.008 -0.01
+       vertex 0.02666667 0.008 5.782412e-19
+       vertex 0.03333333 0.008 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.03333333 0.008 0
+       vertex 0.03333333 0.008 -0.01
+       vertex 0.02666667 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.03333333 0.008 -0.01
+       vertex 0.03333333 0.008 0
+       vertex 0.04 0.008 -5.782412e-19
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04 0.008 -5.782412e-19
+       vertex 0.04 0.008 -0.01
+       vertex 0.03333333 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04 0.008 -0.01
+       vertex 0.04 0.008 -5.782412e-19
+       vertex 0.04666667 0.008 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04666667 0.008 0
+       vertex 0.04666667 0.008 -0.01
+       vertex 0.04 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04666667 0.008 -0.01
+       vertex 0.04666667 0.008 0
+       vertex 0.05333333 0.008 -2.891206e-19
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.05333333 0.008 -2.891206e-19
+       vertex 0.05333333 0.008 -0.01
+       vertex 0.04666667 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.05333333 0.008 -0.01
+       vertex 0.05333333 0.008 -2.891206e-19
+       vertex 0.06 0.008 5.782412e-19
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06 0.008 5.782412e-19
+       vertex 0.06 0.008 -0.01
+       vertex 0.05333333 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06 0.008 -0.01
+       vertex 0.06 0.008 5.782412e-19
+       vertex 0.06666667 0.008 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06666667 0.008 0
+       vertex 0.06666667 0.008 -0.01
+       vertex 0.06 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06666667 0.008 -0.01
+       vertex 0.06666667 0.008 0
+       vertex 0.07333333 0.008 -4.336809e-19
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.07333333 0.008 -4.336809e-19
+       vertex 0.07333333 0.008 -0.01
+       vertex 0.06666667 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.07333333 0.008 -0.01
+       vertex 0.07333333 0.008 -4.336809e-19
+       vertex 0.08 0.008 2.891206e-19
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08 0.008 2.891206e-19
+       vertex 0.08 0.008 -0.01
+       vertex 0.07333333 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08 0.008 -0.01
+       vertex 0.08 0.008 2.891206e-19
+       vertex 0.08666667 0.008 -2.168404e-19
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08666667 0.008 -2.168404e-19
+       vertex 0.08666667 0.008 -0.01
+       vertex 0.08 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08666667 0.008 -0.01
+       vertex 0.08666667 0.008 -2.168404e-19
+       vertex 0.09333333 0.008 4.698209e-19
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.09333333 0.008 4.698209e-19
+       vertex 0.09333333 0.008 -0.01
+       vertex 0.08666667 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.09333333 0.008 -0.01
+       vertex 0.09333333 0.008 4.698209e-19
+       vertex 0.1 0.008 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.1 0.008 0
+       vertex 0.1 0.008 -0.01
+       vertex 0.09333333 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.01333333 0.008 0
+       vertex 0.01333333 0.008 0.01
+       vertex 0.02 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02 0.008 0.01
+       vertex 0.02 0.008 0
+       vertex 0.01333333 0.008 0
+    endloop
+  endfacet
+  facet normal -0 1 0
+    outer loop
+       vertex 0.02 0.008 0.01
+       vertex 0.02666667 0.008 0.01
+       vertex 0.02666667 0.008 5.782412e-19
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02666667 0.008 5.782412e-19
+       vertex 0.02 0.008 0
+       vertex 0.02 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02666667 0.008 5.782412e-19
+       vertex 0.02666667 0.008 0.01
+       vertex 0.03333333 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.03333333 0.008 0.01
+       vertex 0.03333333 0.008 0
+       vertex 0.02666667 0.008 5.782412e-19
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.03333333 0.008 0
+       vertex 0.03333333 0.008 0.01
+       vertex 0.04 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04 0.008 0.01
+       vertex 0.04 0.008 -5.782412e-19
+       vertex 0.03333333 0.008 0
+    endloop
+  endfacet
+  facet normal -0 1 0
+    outer loop
+       vertex 0.04 0.008 0.01
+       vertex 0.04666667 0.008 0.01
+       vertex 0.04666667 0.008 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04666667 0.008 0
+       vertex 0.04 0.008 -5.782412e-19
+       vertex 0.04 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04666667 0.008 0
+       vertex 0.04666667 0.008 0.01
+       vertex 0.05333333 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.05333333 0.008 0.01
+       vertex 0.05333333 0.008 -2.891206e-19
+       vertex 0.04666667 0.008 0
+    endloop
+  endfacet
+  facet normal -0 1 0
+    outer loop
+       vertex 0.05333333 0.008 0.01
+       vertex 0.06 0.008 0.01
+       vertex 0.06 0.008 5.782412e-19
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06 0.008 5.782412e-19
+       vertex 0.05333333 0.008 -2.891206e-19
+       vertex 0.05333333 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06 0.008 5.782412e-19
+       vertex 0.06 0.008 0.01
+       vertex 0.06666667 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06666667 0.008 0.01
+       vertex 0.06666667 0.008 0
+       vertex 0.06 0.008 5.782412e-19
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06666667 0.008 0
+       vertex 0.06666667 0.008 0.01
+       vertex 0.07333333 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.07333333 0.008 0.01
+       vertex 0.07333333 0.008 -4.336809e-19
+       vertex 0.06666667 0.008 0
+    endloop
+  endfacet
+  facet normal -0 1 0
+    outer loop
+       vertex 0.07333333 0.008 0.01
+       vertex 0.08 0.008 0.01
+       vertex 0.08 0.008 2.891206e-19
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08 0.008 2.891206e-19
+       vertex 0.07333333 0.008 -4.336809e-19
+       vertex 0.07333333 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08 0.008 2.891206e-19
+       vertex 0.08 0.008 0.01
+       vertex 0.08666667 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08666667 0.008 0.01
+       vertex 0.08666667 0.008 -2.168404e-19
+       vertex 0.08 0.008 2.891206e-19
+    endloop
+  endfacet
+  facet normal -0 1 0
+    outer loop
+       vertex 0.08666667 0.008 0.01
+       vertex 0.09333333 0.008 0.01
+       vertex 0.09333333 0.008 4.698209e-19
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.09333333 0.008 4.698209e-19
+       vertex 0.08666667 0.008 -2.168404e-19
+       vertex 0.08666667 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.09333333 0.008 4.698209e-19
+       vertex 0.09333333 0.008 0.01
+       vertex 0.1 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.1 0.008 0.01
+       vertex 0.1 0.008 0
+       vertex 0.09333333 0.008 4.698209e-19
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.01333333 0.008 0.01
+       vertex 0.01333333 0.008 0.02
+       vertex 0.02 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02 0.008 0.02
+       vertex 0.02 0.008 0.01
+       vertex 0.01333333 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02 0.008 0.01
+       vertex 0.02 0.008 0.02
+       vertex 0.02666667 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02666667 0.008 0.02
+       vertex 0.02666667 0.008 0.01
+       vertex 0.02 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02666667 0.008 0.01
+       vertex 0.02666667 0.008 0.02
+       vertex 0.03333333 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.03333333 0.008 0.02
+       vertex 0.03333333 0.008 0.01
+       vertex 0.02666667 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.03333333 0.008 0.01
+       vertex 0.03333333 0.008 0.02
+       vertex 0.04 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04 0.008 0.02
+       vertex 0.04 0.008 0.01
+       vertex 0.03333333 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04 0.008 0.01
+       vertex 0.04 0.008 0.02
+       vertex 0.04666667 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04666667 0.008 0.02
+       vertex 0.04666667 0.008 0.01
+       vertex 0.04 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04666667 0.008 0.01
+       vertex 0.04666667 0.008 0.02
+       vertex 0.05333333 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.05333333 0.008 0.02
+       vertex 0.05333333 0.008 0.01
+       vertex 0.04666667 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.05333333 0.008 0.01
+       vertex 0.05333333 0.008 0.02
+       vertex 0.06 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06 0.008 0.02
+       vertex 0.06 0.008 0.01
+       vertex 0.05333333 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06 0.008 0.01
+       vertex 0.06 0.008 0.02
+       vertex 0.06666667 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06666667 0.008 0.02
+       vertex 0.06666667 0.008 0.01
+       vertex 0.06 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06666667 0.008 0.01
+       vertex 0.06666667 0.008 0.02
+       vertex 0.07333333 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.07333333 0.008 0.02
+       vertex 0.07333333 0.008 0.01
+       vertex 0.06666667 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.07333333 0.008 0.01
+       vertex 0.07333333 0.008 0.02
+       vertex 0.08 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08 0.008 0.02
+       vertex 0.08 0.008 0.01
+       vertex 0.07333333 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08 0.008 0.01
+       vertex 0.08 0.008 0.02
+       vertex 0.08666667 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08666667 0.008 0.02
+       vertex 0.08666667 0.008 0.01
+       vertex 0.08 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08666667 0.008 0.01
+       vertex 0.08666667 0.008 0.02
+       vertex 0.09333333 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.09333333 0.008 0.02
+       vertex 0.09333333 0.008 0.01
+       vertex 0.08666667 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.09333333 0.008 0.01
+       vertex 0.09333333 0.008 0.02
+       vertex 0.1 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.1 0.008 0.02
+       vertex 0.1 0.008 0.01
+       vertex 0.09333333 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.01333333 0.008 0.02
+       vertex 0.01333333 0.008 0.03
+       vertex 0.02 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02 0.008 0.03
+       vertex 0.02 0.008 0.02
+       vertex 0.01333333 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02 0.008 0.02
+       vertex 0.02 0.008 0.03
+       vertex 0.02666667 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02666667 0.008 0.03
+       vertex 0.02666667 0.008 0.02
+       vertex 0.02 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02666667 0.008 0.02
+       vertex 0.02666667 0.008 0.03
+       vertex 0.03333333 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.03333333 0.008 0.03
+       vertex 0.03333333 0.008 0.02
+       vertex 0.02666667 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.03333333 0.008 0.02
+       vertex 0.03333333 0.008 0.03
+       vertex 0.04 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04 0.008 0.03
+       vertex 0.04 0.008 0.02
+       vertex 0.03333333 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04 0.008 0.02
+       vertex 0.04 0.008 0.03
+       vertex 0.04666667 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04666667 0.008 0.03
+       vertex 0.04666667 0.008 0.02
+       vertex 0.04 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04666667 0.008 0.02
+       vertex 0.04666667 0.008 0.03
+       vertex 0.05333333 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.05333333 0.008 0.03
+       vertex 0.05333333 0.008 0.02
+       vertex 0.04666667 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.05333333 0.008 0.02
+       vertex 0.05333333 0.008 0.03
+       vertex 0.06 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06 0.008 0.03
+       vertex 0.06 0.008 0.02
+       vertex 0.05333333 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06 0.008 0.02
+       vertex 0.06 0.008 0.03
+       vertex 0.06666667 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06666667 0.008 0.03
+       vertex 0.06666667 0.008 0.02
+       vertex 0.06 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06666667 0.008 0.02
+       vertex 0.06666667 0.008 0.03
+       vertex 0.07333333 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.07333333 0.008 0.03
+       vertex 0.07333333 0.008 0.02
+       vertex 0.06666667 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.07333333 0.008 0.02
+       vertex 0.07333333 0.008 0.03
+       vertex 0.08 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08 0.008 0.03
+       vertex 0.08 0.008 0.02
+       vertex 0.07333333 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08 0.008 0.02
+       vertex 0.08 0.008 0.03
+       vertex 0.08666667 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08666667 0.008 0.03
+       vertex 0.08666667 0.008 0.02
+       vertex 0.08 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08666667 0.008 0.02
+       vertex 0.08666667 0.008 0.03
+       vertex 0.09333333 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.09333333 0.008 0.03
+       vertex 0.09333333 0.008 0.02
+       vertex 0.08666667 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.09333333 0.008 0.02
+       vertex 0.09333333 0.008 0.03
+       vertex 0.1 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.1 0.008 0.03
+       vertex 0.1 0.008 0.02
+       vertex 0.09333333 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.01333333 0.008 0.03
+       vertex 0.01333333 0.008 0.04
+       vertex 0.02 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02 0.008 0.04
+       vertex 0.02 0.008 0.03
+       vertex 0.01333333 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02 0.008 0.03
+       vertex 0.02 0.008 0.04
+       vertex 0.02666667 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02666667 0.008 0.04
+       vertex 0.02666667 0.008 0.03
+       vertex 0.02 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02666667 0.008 0.03
+       vertex 0.02666667 0.008 0.04
+       vertex 0.03333333 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.03333333 0.008 0.04
+       vertex 0.03333333 0.008 0.03
+       vertex 0.02666667 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.03333333 0.008 0.03
+       vertex 0.03333333 0.008 0.04
+       vertex 0.04 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04 0.008 0.04
+       vertex 0.04 0.008 0.03
+       vertex 0.03333333 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04 0.008 0.03
+       vertex 0.04 0.008 0.04
+       vertex 0.04666667 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04666667 0.008 0.04
+       vertex 0.04666667 0.008 0.03
+       vertex 0.04 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04666667 0.008 0.03
+       vertex 0.04666667 0.008 0.04
+       vertex 0.05333333 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.05333333 0.008 0.04
+       vertex 0.05333333 0.008 0.03
+       vertex 0.04666667 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.05333333 0.008 0.03
+       vertex 0.05333333 0.008 0.04
+       vertex 0.06 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06 0.008 0.04
+       vertex 0.06 0.008 0.03
+       vertex 0.05333333 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06 0.008 0.03
+       vertex 0.06 0.008 0.04
+       vertex 0.06666667 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06666667 0.008 0.04
+       vertex 0.06666667 0.008 0.03
+       vertex 0.06 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06666667 0.008 0.03
+       vertex 0.06666667 0.008 0.04
+       vertex 0.07333333 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.07333333 0.008 0.04
+       vertex 0.07333333 0.008 0.03
+       vertex 0.06666667 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.07333333 0.008 0.03
+       vertex 0.07333333 0.008 0.04
+       vertex 0.08 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08 0.008 0.04
+       vertex 0.08 0.008 0.03
+       vertex 0.07333333 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08 0.008 0.03
+       vertex 0.08 0.008 0.04
+       vertex 0.08666667 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08666667 0.008 0.04
+       vertex 0.08666667 0.008 0.03
+       vertex 0.08 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08666667 0.008 0.03
+       vertex 0.08666667 0.008 0.04
+       vertex 0.09333333 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.09333333 0.008 0.04
+       vertex 0.09333333 0.008 0.03
+       vertex 0.08666667 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.09333333 0.008 0.03
+       vertex 0.09333333 0.008 0.04
+       vertex 0.1 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.1 0.008 0.04
+       vertex 0.1 0.008 0.03
+       vertex 0.09333333 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.01333333 0.008 0.04
+       vertex 0.01333333 0.008 0.05
+       vertex 0.02 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02 0.008 0.05
+       vertex 0.02 0.008 0.04
+       vertex 0.01333333 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02 0.008 0.04
+       vertex 0.02 0.008 0.05
+       vertex 0.02666667 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02666667 0.008 0.05
+       vertex 0.02666667 0.008 0.04
+       vertex 0.02 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02666667 0.008 0.04
+       vertex 0.02666667 0.008 0.05
+       vertex 0.03333333 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.03333333 0.008 0.05
+       vertex 0.03333333 0.008 0.04
+       vertex 0.02666667 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.03333333 0.008 0.04
+       vertex 0.03333333 0.008 0.05
+       vertex 0.04 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04 0.008 0.05
+       vertex 0.04 0.008 0.04
+       vertex 0.03333333 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04 0.008 0.04
+       vertex 0.04 0.008 0.05
+       vertex 0.04666667 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04666667 0.008 0.05
+       vertex 0.04666667 0.008 0.04
+       vertex 0.04 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04666667 0.008 0.04
+       vertex 0.04666667 0.008 0.05
+       vertex 0.05333333 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.05333333 0.008 0.05
+       vertex 0.05333333 0.008 0.04
+       vertex 0.04666667 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.05333333 0.008 0.04
+       vertex 0.05333333 0.008 0.05
+       vertex 0.06 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06 0.008 0.05
+       vertex 0.06 0.008 0.04
+       vertex 0.05333333 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06 0.008 0.04
+       vertex 0.06 0.008 0.05
+       vertex 0.06666667 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06666667 0.008 0.05
+       vertex 0.06666667 0.008 0.04
+       vertex 0.06 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06666667 0.008 0.04
+       vertex 0.06666667 0.008 0.05
+       vertex 0.07333333 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.07333333 0.008 0.05
+       vertex 0.07333333 0.008 0.04
+       vertex 0.06666667 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.07333333 0.008 0.04
+       vertex 0.07333333 0.008 0.05
+       vertex 0.08 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08 0.008 0.05
+       vertex 0.08 0.008 0.04
+       vertex 0.07333333 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08 0.008 0.04
+       vertex 0.08 0.008 0.05
+       vertex 0.08666667 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08666667 0.008 0.05
+       vertex 0.08666667 0.008 0.04
+       vertex 0.08 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08666667 0.008 0.04
+       vertex 0.08666667 0.008 0.05
+       vertex 0.09333333 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.09333333 0.008 0.05
+       vertex 0.09333333 0.008 0.04
+       vertex 0.08666667 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.09333333 0.008 0.04
+       vertex 0.09333333 0.008 0.05
+       vertex 0.1 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.1 0.008 0.05
+       vertex 0.1 0.008 0.04
+       vertex 0.09333333 0.008 0.04
+    endloop
+  endfacet
+endsolid rightSolid_to_topAir
+solid rightSolid_to_heater
+  facet normal -1 0 0
+    outer loop
+       vertex 0.01333333 0 -0.05
+       vertex 0.01333333 0 -0.04
+       vertex 0.01333333 0.008 -0.04
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex 0.01333333 0.008 -0.04
+       vertex 0.01333333 0.008 -0.05
+       vertex 0.01333333 0 -0.05
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex 0.01333333 0 -0.04
+       vertex 0.01333333 0 -0.03
+       vertex 0.01333333 0.008 -0.03
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex 0.01333333 0.008 -0.03
+       vertex 0.01333333 0.008 -0.04
+       vertex 0.01333333 0 -0.04
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex 0.01333333 0 -0.03
+       vertex 0.01333333 0 -0.02
+       vertex 0.01333333 0.008 -0.02
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex 0.01333333 0.008 -0.02
+       vertex 0.01333333 0.008 -0.03
+       vertex 0.01333333 0 -0.03
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex 0.01333333 0 -0.02
+       vertex 0.01333333 0 -0.01
+       vertex 0.01333333 0.008 -0.01
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex 0.01333333 0.008 -0.01
+       vertex 0.01333333 0.008 -0.02
+       vertex 0.01333333 0 -0.02
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex 0.01333333 0 -0.01
+       vertex 0.01333333 0 0
+       vertex 0.01333333 0.008 0
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex 0.01333333 0.008 0
+       vertex 0.01333333 0.008 -0.01
+       vertex 0.01333333 0 -0.01
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex 0.01333333 0 0
+       vertex 0.01333333 0 0.01
+       vertex 0.01333333 0.008 0.01
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex 0.01333333 0.008 0.01
+       vertex 0.01333333 0.008 0
+       vertex 0.01333333 0 0
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex 0.01333333 0 0.01
+       vertex 0.01333333 0 0.02
+       vertex 0.01333333 0.008 0.02
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex 0.01333333 0.008 0.02
+       vertex 0.01333333 0.008 0.01
+       vertex 0.01333333 0 0.01
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex 0.01333333 0 0.02
+       vertex 0.01333333 0 0.03
+       vertex 0.01333333 0.008 0.03
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex 0.01333333 0.008 0.03
+       vertex 0.01333333 0.008 0.02
+       vertex 0.01333333 0 0.02
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex 0.01333333 0 0.03
+       vertex 0.01333333 0 0.04
+       vertex 0.01333333 0.008 0.04
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex 0.01333333 0.008 0.04
+       vertex 0.01333333 0.008 0.03
+       vertex 0.01333333 0 0.03
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex 0.01333333 0 0.04
+       vertex 0.01333333 0 0.05
+       vertex 0.01333333 0.008 0.05
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex 0.01333333 0.008 0.05
+       vertex 0.01333333 0.008 0.04
+       vertex 0.01333333 0 0.04
+    endloop
+  endfacet
+endsolid rightSolid_to_heater
diff --git a/tutorials/mesh/snappyHexMesh/multiRegionMesh/constant/triSurface/topAir.stl b/tutorials/mesh/snappyHexMesh/multiRegionMesh/constant/triSurface/topAir.stl
new file mode 100644
index 0000000000000000000000000000000000000000..227f0317cd7ef09979234ddbf2055c7eb57f2b4b
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/multiRegionMesh/constant/triSurface/topAir.stl
@@ -0,0 +1,12896 @@
+solid maxY
+  facet normal 0 1 0
+    outer loop
+       vertex -0.1 0.04 -0.05
+       vertex -0.1 0.04 -0.04
+       vertex -0.09333333 0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.09333333 0.04 -0.04
+       vertex -0.09333333 0.04 -0.05
+       vertex -0.1 0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.1 0.04 -0.04
+       vertex -0.1 0.04 -0.03
+       vertex -0.09333333 0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.09333333 0.04 -0.03
+       vertex -0.09333333 0.04 -0.04
+       vertex -0.1 0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.1 0.04 -0.03
+       vertex -0.1 0.04 -0.02
+       vertex -0.09333333 0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.09333333 0.04 -0.02
+       vertex -0.09333333 0.04 -0.03
+       vertex -0.1 0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.1 0.04 -0.02
+       vertex -0.1 0.04 -0.01
+       vertex -0.09333333 0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.09333333 0.04 -0.01
+       vertex -0.09333333 0.04 -0.02
+       vertex -0.1 0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.1 0.04 -0.01
+       vertex -0.1 0.04 0
+       vertex -0.09333333 0.04 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.09333333 0.04 0
+       vertex -0.09333333 0.04 -0.01
+       vertex -0.1 0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.1 0.04 0
+       vertex -0.1 0.04 0.01
+       vertex -0.09333333 0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.09333333 0.04 0.01
+       vertex -0.09333333 0.04 0
+       vertex -0.1 0.04 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.1 0.04 0.01
+       vertex -0.1 0.04 0.02
+       vertex -0.09333333 0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.09333333 0.04 0.02
+       vertex -0.09333333 0.04 0.01
+       vertex -0.1 0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.1 0.04 0.02
+       vertex -0.1 0.04 0.03
+       vertex -0.09333333 0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.09333333 0.04 0.03
+       vertex -0.09333333 0.04 0.02
+       vertex -0.1 0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.1 0.04 0.03
+       vertex -0.1 0.04 0.04
+       vertex -0.09333333 0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.09333333 0.04 0.04
+       vertex -0.09333333 0.04 0.03
+       vertex -0.1 0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.1 0.04 0.04
+       vertex -0.1 0.04 0.05
+       vertex -0.09333333 0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.09333333 0.04 0.05
+       vertex -0.09333333 0.04 0.04
+       vertex -0.1 0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.09333333 0.04 -0.05
+       vertex -0.09333333 0.04 -0.04
+       vertex -0.08666667 0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08666667 0.04 -0.04
+       vertex -0.08666667 0.04 -0.05
+       vertex -0.09333333 0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.09333333 0.04 -0.04
+       vertex -0.09333333 0.04 -0.03
+       vertex -0.08666667 0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08666667 0.04 -0.03
+       vertex -0.08666667 0.04 -0.04
+       vertex -0.09333333 0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.09333333 0.04 -0.03
+       vertex -0.09333333 0.04 -0.02
+       vertex -0.08666667 0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08666667 0.04 -0.02
+       vertex -0.08666667 0.04 -0.03
+       vertex -0.09333333 0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.09333333 0.04 -0.02
+       vertex -0.09333333 0.04 -0.01
+       vertex -0.08666667 0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08666667 0.04 -0.01
+       vertex -0.08666667 0.04 -0.02
+       vertex -0.09333333 0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.09333333 0.04 -0.01
+       vertex -0.09333333 0.04 0
+       vertex -0.08666667 0.04 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08666667 0.04 0
+       vertex -0.08666667 0.04 -0.01
+       vertex -0.09333333 0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.09333333 0.04 0
+       vertex -0.09333333 0.04 0.01
+       vertex -0.08666667 0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08666667 0.04 0.01
+       vertex -0.08666667 0.04 0
+       vertex -0.09333333 0.04 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.09333333 0.04 0.01
+       vertex -0.09333333 0.04 0.02
+       vertex -0.08666667 0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08666667 0.04 0.02
+       vertex -0.08666667 0.04 0.01
+       vertex -0.09333333 0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.09333333 0.04 0.02
+       vertex -0.09333333 0.04 0.03
+       vertex -0.08666667 0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08666667 0.04 0.03
+       vertex -0.08666667 0.04 0.02
+       vertex -0.09333333 0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.09333333 0.04 0.03
+       vertex -0.09333333 0.04 0.04
+       vertex -0.08666667 0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08666667 0.04 0.04
+       vertex -0.08666667 0.04 0.03
+       vertex -0.09333333 0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.09333333 0.04 0.04
+       vertex -0.09333333 0.04 0.05
+       vertex -0.08666667 0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08666667 0.04 0.05
+       vertex -0.08666667 0.04 0.04
+       vertex -0.09333333 0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08666667 0.04 -0.05
+       vertex -0.08666667 0.04 -0.04
+       vertex -0.08 0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08 0.04 -0.04
+       vertex -0.08 0.04 -0.05
+       vertex -0.08666667 0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08666667 0.04 -0.04
+       vertex -0.08666667 0.04 -0.03
+       vertex -0.08 0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08 0.04 -0.03
+       vertex -0.08 0.04 -0.04
+       vertex -0.08666667 0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08666667 0.04 -0.03
+       vertex -0.08666667 0.04 -0.02
+       vertex -0.08 0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08 0.04 -0.02
+       vertex -0.08 0.04 -0.03
+       vertex -0.08666667 0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08666667 0.04 -0.02
+       vertex -0.08666667 0.04 -0.01
+       vertex -0.08 0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08 0.04 -0.01
+       vertex -0.08 0.04 -0.02
+       vertex -0.08666667 0.04 -0.02
+    endloop
+  endfacet
+  facet normal -0 1 0
+    outer loop
+       vertex -0.08666667 0.04 0
+       vertex -0.08 0.04 1.156482e-18
+       vertex -0.08 0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08 0.04 -0.01
+       vertex -0.08666667 0.04 -0.01
+       vertex -0.08666667 0.04 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08 0.04 1.156482e-18
+       vertex -0.08666667 0.04 0
+       vertex -0.08666667 0.04 0.01
+    endloop
+  endfacet
+  facet normal -0 1 0
+    outer loop
+       vertex -0.08666667 0.04 0.01
+       vertex -0.08 0.04 0.01
+       vertex -0.08 0.04 1.156482e-18
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08666667 0.04 0.01
+       vertex -0.08666667 0.04 0.02
+       vertex -0.08 0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08 0.04 0.02
+       vertex -0.08 0.04 0.01
+       vertex -0.08666667 0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08666667 0.04 0.02
+       vertex -0.08666667 0.04 0.03
+       vertex -0.08 0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08 0.04 0.03
+       vertex -0.08 0.04 0.02
+       vertex -0.08666667 0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08666667 0.04 0.03
+       vertex -0.08666667 0.04 0.04
+       vertex -0.08 0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08 0.04 0.04
+       vertex -0.08 0.04 0.03
+       vertex -0.08666667 0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08666667 0.04 0.04
+       vertex -0.08666667 0.04 0.05
+       vertex -0.08 0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08 0.04 0.05
+       vertex -0.08 0.04 0.04
+       vertex -0.08666667 0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08 0.04 -0.05
+       vertex -0.08 0.04 -0.04
+       vertex -0.07333333 0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.07333333 0.04 -0.04
+       vertex -0.07333333 0.04 -0.05
+       vertex -0.08 0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08 0.04 -0.04
+       vertex -0.08 0.04 -0.03
+       vertex -0.07333333 0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.07333333 0.04 -0.03
+       vertex -0.07333333 0.04 -0.04
+       vertex -0.08 0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08 0.04 -0.03
+       vertex -0.08 0.04 -0.02
+       vertex -0.07333333 0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.07333333 0.04 -0.02
+       vertex -0.07333333 0.04 -0.03
+       vertex -0.08 0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08 0.04 -0.02
+       vertex -0.08 0.04 -0.01
+       vertex -0.07333333 0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.07333333 0.04 -0.01
+       vertex -0.07333333 0.04 -0.02
+       vertex -0.08 0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.07333333 0.04 0
+       vertex -0.07333333 0.04 -0.01
+       vertex -0.08 0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08 0.04 -0.01
+       vertex -0.08 0.04 1.156482e-18
+       vertex -0.07333333 0.04 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08 0.04 1.156482e-18
+       vertex -0.08 0.04 0.01
+       vertex -0.07333333 0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.07333333 0.04 0.01
+       vertex -0.07333333 0.04 0
+       vertex -0.08 0.04 1.156482e-18
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08 0.04 0.01
+       vertex -0.08 0.04 0.02
+       vertex -0.07333333 0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.07333333 0.04 0.02
+       vertex -0.07333333 0.04 0.01
+       vertex -0.08 0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08 0.04 0.02
+       vertex -0.08 0.04 0.03
+       vertex -0.07333333 0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.07333333 0.04 0.03
+       vertex -0.07333333 0.04 0.02
+       vertex -0.08 0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08 0.04 0.03
+       vertex -0.08 0.04 0.04
+       vertex -0.07333333 0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.07333333 0.04 0.04
+       vertex -0.07333333 0.04 0.03
+       vertex -0.08 0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.08 0.04 0.04
+       vertex -0.08 0.04 0.05
+       vertex -0.07333333 0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.07333333 0.04 0.05
+       vertex -0.07333333 0.04 0.04
+       vertex -0.08 0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.07333333 0.04 -0.05
+       vertex -0.07333333 0.04 -0.04
+       vertex -0.06666667 0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06666667 0.04 -0.04
+       vertex -0.06666667 0.04 -0.05
+       vertex -0.07333333 0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.07333333 0.04 -0.04
+       vertex -0.07333333 0.04 -0.03
+       vertex -0.06666667 0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06666667 0.04 -0.03
+       vertex -0.06666667 0.04 -0.04
+       vertex -0.07333333 0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.07333333 0.04 -0.03
+       vertex -0.07333333 0.04 -0.02
+       vertex -0.06666667 0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06666667 0.04 -0.02
+       vertex -0.06666667 0.04 -0.03
+       vertex -0.07333333 0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.07333333 0.04 -0.02
+       vertex -0.07333333 0.04 -0.01
+       vertex -0.06666667 0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06666667 0.04 -0.01
+       vertex -0.06666667 0.04 -0.02
+       vertex -0.07333333 0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.07333333 0.04 -0.01
+       vertex -0.07333333 0.04 0
+       vertex -0.06666667 0.04 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06666667 0.04 0
+       vertex -0.06666667 0.04 -0.01
+       vertex -0.07333333 0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.07333333 0.04 0
+       vertex -0.07333333 0.04 0.01
+       vertex -0.06666667 0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06666667 0.04 0.01
+       vertex -0.06666667 0.04 0
+       vertex -0.07333333 0.04 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.07333333 0.04 0.01
+       vertex -0.07333333 0.04 0.02
+       vertex -0.06666667 0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06666667 0.04 0.02
+       vertex -0.06666667 0.04 0.01
+       vertex -0.07333333 0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.07333333 0.04 0.02
+       vertex -0.07333333 0.04 0.03
+       vertex -0.06666667 0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06666667 0.04 0.03
+       vertex -0.06666667 0.04 0.02
+       vertex -0.07333333 0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.07333333 0.04 0.03
+       vertex -0.07333333 0.04 0.04
+       vertex -0.06666667 0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06666667 0.04 0.04
+       vertex -0.06666667 0.04 0.03
+       vertex -0.07333333 0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.07333333 0.04 0.04
+       vertex -0.07333333 0.04 0.05
+       vertex -0.06666667 0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06666667 0.04 0.05
+       vertex -0.06666667 0.04 0.04
+       vertex -0.07333333 0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06666667 0.04 -0.05
+       vertex -0.06666667 0.04 -0.04
+       vertex -0.06 0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06 0.04 -0.04
+       vertex -0.06 0.04 -0.05
+       vertex -0.06666667 0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06666667 0.04 -0.04
+       vertex -0.06666667 0.04 -0.03
+       vertex -0.06 0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06 0.04 -0.03
+       vertex -0.06 0.04 -0.04
+       vertex -0.06666667 0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06666667 0.04 -0.03
+       vertex -0.06666667 0.04 -0.02
+       vertex -0.06 0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06 0.04 -0.02
+       vertex -0.06 0.04 -0.03
+       vertex -0.06666667 0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06666667 0.04 -0.02
+       vertex -0.06666667 0.04 -0.01
+       vertex -0.06 0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06 0.04 -0.01
+       vertex -0.06 0.04 -0.02
+       vertex -0.06666667 0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06666667 0.04 -0.01
+       vertex -0.06666667 0.04 0
+       vertex -0.06 0.04 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06 0.04 0
+       vertex -0.06 0.04 -0.01
+       vertex -0.06666667 0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06666667 0.04 0
+       vertex -0.06666667 0.04 0.01
+       vertex -0.06 0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06 0.04 0.01
+       vertex -0.06 0.04 0
+       vertex -0.06666667 0.04 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06666667 0.04 0.01
+       vertex -0.06666667 0.04 0.02
+       vertex -0.06 0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06 0.04 0.02
+       vertex -0.06 0.04 0.01
+       vertex -0.06666667 0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06666667 0.04 0.02
+       vertex -0.06666667 0.04 0.03
+       vertex -0.06 0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06 0.04 0.03
+       vertex -0.06 0.04 0.02
+       vertex -0.06666667 0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06666667 0.04 0.03
+       vertex -0.06666667 0.04 0.04
+       vertex -0.06 0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06 0.04 0.04
+       vertex -0.06 0.04 0.03
+       vertex -0.06666667 0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06666667 0.04 0.04
+       vertex -0.06666667 0.04 0.05
+       vertex -0.06 0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06 0.04 0.05
+       vertex -0.06 0.04 0.04
+       vertex -0.06666667 0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06 0.04 -0.05
+       vertex -0.06 0.04 -0.04
+       vertex -0.05333333 0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.05333333 0.04 -0.04
+       vertex -0.05333333 0.04 -0.05
+       vertex -0.06 0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06 0.04 -0.04
+       vertex -0.06 0.04 -0.03
+       vertex -0.05333333 0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.05333333 0.04 -0.03
+       vertex -0.05333333 0.04 -0.04
+       vertex -0.06 0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06 0.04 -0.03
+       vertex -0.06 0.04 -0.02
+       vertex -0.05333333 0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.05333333 0.04 -0.02
+       vertex -0.05333333 0.04 -0.03
+       vertex -0.06 0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06 0.04 -0.02
+       vertex -0.06 0.04 -0.01
+       vertex -0.05333333 0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.05333333 0.04 -0.01
+       vertex -0.05333333 0.04 -0.02
+       vertex -0.06 0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06 0.04 -0.01
+       vertex -0.06 0.04 0
+       vertex -0.05333333 0.04 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.05333333 0.04 0
+       vertex -0.05333333 0.04 -0.01
+       vertex -0.06 0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06 0.04 0
+       vertex -0.06 0.04 0.01
+       vertex -0.05333333 0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.05333333 0.04 0.01
+       vertex -0.05333333 0.04 0
+       vertex -0.06 0.04 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06 0.04 0.01
+       vertex -0.06 0.04 0.02
+       vertex -0.05333333 0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.05333333 0.04 0.02
+       vertex -0.05333333 0.04 0.01
+       vertex -0.06 0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06 0.04 0.02
+       vertex -0.06 0.04 0.03
+       vertex -0.05333333 0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.05333333 0.04 0.03
+       vertex -0.05333333 0.04 0.02
+       vertex -0.06 0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06 0.04 0.03
+       vertex -0.06 0.04 0.04
+       vertex -0.05333333 0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.05333333 0.04 0.04
+       vertex -0.05333333 0.04 0.03
+       vertex -0.06 0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.06 0.04 0.04
+       vertex -0.06 0.04 0.05
+       vertex -0.05333333 0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.05333333 0.04 0.05
+       vertex -0.05333333 0.04 0.04
+       vertex -0.06 0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.05333333 0.04 -0.05
+       vertex -0.05333333 0.04 -0.04
+       vertex -0.04666667 0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04666667 0.04 -0.04
+       vertex -0.04666667 0.04 -0.05
+       vertex -0.05333333 0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.05333333 0.04 -0.04
+       vertex -0.05333333 0.04 -0.03
+       vertex -0.04666667 0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04666667 0.04 -0.03
+       vertex -0.04666667 0.04 -0.04
+       vertex -0.05333333 0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.05333333 0.04 -0.03
+       vertex -0.05333333 0.04 -0.02
+       vertex -0.04666667 0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04666667 0.04 -0.02
+       vertex -0.04666667 0.04 -0.03
+       vertex -0.05333333 0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.05333333 0.04 -0.02
+       vertex -0.05333333 0.04 -0.01
+       vertex -0.04666667 0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04666667 0.04 -0.01
+       vertex -0.04666667 0.04 -0.02
+       vertex -0.05333333 0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.05333333 0.04 -0.01
+       vertex -0.05333333 0.04 0
+       vertex -0.04666667 0.04 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04666667 0.04 0
+       vertex -0.04666667 0.04 -0.01
+       vertex -0.05333333 0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.05333333 0.04 0
+       vertex -0.05333333 0.04 0.01
+       vertex -0.04666667 0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04666667 0.04 0.01
+       vertex -0.04666667 0.04 0
+       vertex -0.05333333 0.04 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.05333333 0.04 0.01
+       vertex -0.05333333 0.04 0.02
+       vertex -0.04666667 0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04666667 0.04 0.02
+       vertex -0.04666667 0.04 0.01
+       vertex -0.05333333 0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.05333333 0.04 0.02
+       vertex -0.05333333 0.04 0.03
+       vertex -0.04666667 0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04666667 0.04 0.03
+       vertex -0.04666667 0.04 0.02
+       vertex -0.05333333 0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.05333333 0.04 0.03
+       vertex -0.05333333 0.04 0.04
+       vertex -0.04666667 0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04666667 0.04 0.04
+       vertex -0.04666667 0.04 0.03
+       vertex -0.05333333 0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.05333333 0.04 0.04
+       vertex -0.05333333 0.04 0.05
+       vertex -0.04666667 0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04666667 0.04 0.05
+       vertex -0.04666667 0.04 0.04
+       vertex -0.05333333 0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04666667 0.04 -0.05
+       vertex -0.04666667 0.04 -0.04
+       vertex -0.04 0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04 0.04 -0.04
+       vertex -0.04 0.04 -0.05
+       vertex -0.04666667 0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04666667 0.04 -0.04
+       vertex -0.04666667 0.04 -0.03
+       vertex -0.04 0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04 0.04 -0.03
+       vertex -0.04 0.04 -0.04
+       vertex -0.04666667 0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04666667 0.04 -0.03
+       vertex -0.04666667 0.04 -0.02
+       vertex -0.04 0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04 0.04 -0.02
+       vertex -0.04 0.04 -0.03
+       vertex -0.04666667 0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04666667 0.04 -0.02
+       vertex -0.04666667 0.04 -0.01
+       vertex -0.04 0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04 0.04 -0.01
+       vertex -0.04 0.04 -0.02
+       vertex -0.04666667 0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04666667 0.04 -0.01
+       vertex -0.04666667 0.04 0
+       vertex -0.04 0.04 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04 0.04 0
+       vertex -0.04 0.04 -0.01
+       vertex -0.04666667 0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04666667 0.04 0
+       vertex -0.04666667 0.04 0.01
+       vertex -0.04 0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04 0.04 0.01
+       vertex -0.04 0.04 0
+       vertex -0.04666667 0.04 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04666667 0.04 0.01
+       vertex -0.04666667 0.04 0.02
+       vertex -0.04 0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04 0.04 0.02
+       vertex -0.04 0.04 0.01
+       vertex -0.04666667 0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04666667 0.04 0.02
+       vertex -0.04666667 0.04 0.03
+       vertex -0.04 0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04 0.04 0.03
+       vertex -0.04 0.04 0.02
+       vertex -0.04666667 0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04666667 0.04 0.03
+       vertex -0.04666667 0.04 0.04
+       vertex -0.04 0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04 0.04 0.04
+       vertex -0.04 0.04 0.03
+       vertex -0.04666667 0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04666667 0.04 0.04
+       vertex -0.04666667 0.04 0.05
+       vertex -0.04 0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04 0.04 0.05
+       vertex -0.04 0.04 0.04
+       vertex -0.04666667 0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04 0.04 -0.05
+       vertex -0.04 0.04 -0.04
+       vertex -0.03333333 0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.03333333 0.04 -0.04
+       vertex -0.03333333 0.04 -0.05
+       vertex -0.04 0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04 0.04 -0.04
+       vertex -0.04 0.04 -0.03
+       vertex -0.03333333 0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.03333333 0.04 -0.03
+       vertex -0.03333333 0.04 -0.04
+       vertex -0.04 0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04 0.04 -0.03
+       vertex -0.04 0.04 -0.02
+       vertex -0.03333333 0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.03333333 0.04 -0.02
+       vertex -0.03333333 0.04 -0.03
+       vertex -0.04 0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04 0.04 -0.02
+       vertex -0.04 0.04 -0.01
+       vertex -0.03333333 0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.03333333 0.04 -0.01
+       vertex -0.03333333 0.04 -0.02
+       vertex -0.04 0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04 0.04 -0.01
+       vertex -0.04 0.04 0
+       vertex -0.03333333 0.04 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.03333333 0.04 0
+       vertex -0.03333333 0.04 -0.01
+       vertex -0.04 0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04 0.04 0
+       vertex -0.04 0.04 0.01
+       vertex -0.03333333 0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.03333333 0.04 0.01
+       vertex -0.03333333 0.04 0
+       vertex -0.04 0.04 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04 0.04 0.01
+       vertex -0.04 0.04 0.02
+       vertex -0.03333333 0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.03333333 0.04 0.02
+       vertex -0.03333333 0.04 0.01
+       vertex -0.04 0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04 0.04 0.02
+       vertex -0.04 0.04 0.03
+       vertex -0.03333333 0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.03333333 0.04 0.03
+       vertex -0.03333333 0.04 0.02
+       vertex -0.04 0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04 0.04 0.03
+       vertex -0.04 0.04 0.04
+       vertex -0.03333333 0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.03333333 0.04 0.04
+       vertex -0.03333333 0.04 0.03
+       vertex -0.04 0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.04 0.04 0.04
+       vertex -0.04 0.04 0.05
+       vertex -0.03333333 0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.03333333 0.04 0.05
+       vertex -0.03333333 0.04 0.04
+       vertex -0.04 0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.03333333 0.04 -0.05
+       vertex -0.03333333 0.04 -0.04
+       vertex -0.02666667 0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02666667 0.04 -0.04
+       vertex -0.02666667 0.04 -0.05
+       vertex -0.03333333 0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.03333333 0.04 -0.04
+       vertex -0.03333333 0.04 -0.03
+       vertex -0.02666667 0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02666667 0.04 -0.03
+       vertex -0.02666667 0.04 -0.04
+       vertex -0.03333333 0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.03333333 0.04 -0.03
+       vertex -0.03333333 0.04 -0.02
+       vertex -0.02666667 0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02666667 0.04 -0.02
+       vertex -0.02666667 0.04 -0.03
+       vertex -0.03333333 0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.03333333 0.04 -0.02
+       vertex -0.03333333 0.04 -0.01
+       vertex -0.02666667 0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02666667 0.04 -0.01
+       vertex -0.02666667 0.04 -0.02
+       vertex -0.03333333 0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.03333333 0.04 -0.01
+       vertex -0.03333333 0.04 0
+       vertex -0.02666667 0.04 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02666667 0.04 0
+       vertex -0.02666667 0.04 -0.01
+       vertex -0.03333333 0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.03333333 0.04 0
+       vertex -0.03333333 0.04 0.01
+       vertex -0.02666667 0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02666667 0.04 0.01
+       vertex -0.02666667 0.04 0
+       vertex -0.03333333 0.04 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.03333333 0.04 0.01
+       vertex -0.03333333 0.04 0.02
+       vertex -0.02666667 0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02666667 0.04 0.02
+       vertex -0.02666667 0.04 0.01
+       vertex -0.03333333 0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.03333333 0.04 0.02
+       vertex -0.03333333 0.04 0.03
+       vertex -0.02666667 0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02666667 0.04 0.03
+       vertex -0.02666667 0.04 0.02
+       vertex -0.03333333 0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.03333333 0.04 0.03
+       vertex -0.03333333 0.04 0.04
+       vertex -0.02666667 0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02666667 0.04 0.04
+       vertex -0.02666667 0.04 0.03
+       vertex -0.03333333 0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.03333333 0.04 0.04
+       vertex -0.03333333 0.04 0.05
+       vertex -0.02666667 0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02666667 0.04 0.05
+       vertex -0.02666667 0.04 0.04
+       vertex -0.03333333 0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02666667 0.04 -0.05
+       vertex -0.02666667 0.04 -0.04
+       vertex -0.02 0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02 0.04 -0.04
+       vertex -0.02 0.04 -0.05
+       vertex -0.02666667 0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02666667 0.04 -0.04
+       vertex -0.02666667 0.04 -0.03
+       vertex -0.02 0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02 0.04 -0.03
+       vertex -0.02 0.04 -0.04
+       vertex -0.02666667 0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02666667 0.04 -0.03
+       vertex -0.02666667 0.04 -0.02
+       vertex -0.02 0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02 0.04 -0.02
+       vertex -0.02 0.04 -0.03
+       vertex -0.02666667 0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02666667 0.04 -0.02
+       vertex -0.02666667 0.04 -0.01
+       vertex -0.02 0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02 0.04 -0.01
+       vertex -0.02 0.04 -0.02
+       vertex -0.02666667 0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02666667 0.04 -0.01
+       vertex -0.02666667 0.04 0
+       vertex -0.02 0.04 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02 0.04 0
+       vertex -0.02 0.04 -0.01
+       vertex -0.02666667 0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02666667 0.04 0
+       vertex -0.02666667 0.04 0.01
+       vertex -0.02 0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02 0.04 0.01
+       vertex -0.02 0.04 0
+       vertex -0.02666667 0.04 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02666667 0.04 0.01
+       vertex -0.02666667 0.04 0.02
+       vertex -0.02 0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02 0.04 0.02
+       vertex -0.02 0.04 0.01
+       vertex -0.02666667 0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02666667 0.04 0.02
+       vertex -0.02666667 0.04 0.03
+       vertex -0.02 0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02 0.04 0.03
+       vertex -0.02 0.04 0.02
+       vertex -0.02666667 0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02666667 0.04 0.03
+       vertex -0.02666667 0.04 0.04
+       vertex -0.02 0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02 0.04 0.04
+       vertex -0.02 0.04 0.03
+       vertex -0.02666667 0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02666667 0.04 0.04
+       vertex -0.02666667 0.04 0.05
+       vertex -0.02 0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02 0.04 0.05
+       vertex -0.02 0.04 0.04
+       vertex -0.02666667 0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02 0.04 -0.05
+       vertex -0.02 0.04 -0.04
+       vertex -0.01333333 0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.01333333 0.04 -0.04
+       vertex -0.01333333 0.04 -0.05
+       vertex -0.02 0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02 0.04 -0.04
+       vertex -0.02 0.04 -0.03
+       vertex -0.01333333 0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.01333333 0.04 -0.03
+       vertex -0.01333333 0.04 -0.04
+       vertex -0.02 0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02 0.04 -0.03
+       vertex -0.02 0.04 -0.02
+       vertex -0.01333333 0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.01333333 0.04 -0.02
+       vertex -0.01333333 0.04 -0.03
+       vertex -0.02 0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02 0.04 -0.02
+       vertex -0.02 0.04 -0.01
+       vertex -0.01333333 0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.01333333 0.04 -0.01
+       vertex -0.01333333 0.04 -0.02
+       vertex -0.02 0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02 0.04 -0.01
+       vertex -0.02 0.04 0
+       vertex -0.01333333 0.04 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.01333333 0.04 0
+       vertex -0.01333333 0.04 -0.01
+       vertex -0.02 0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02 0.04 0
+       vertex -0.02 0.04 0.01
+       vertex -0.01333333 0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.01333333 0.04 0.01
+       vertex -0.01333333 0.04 0
+       vertex -0.02 0.04 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02 0.04 0.01
+       vertex -0.02 0.04 0.02
+       vertex -0.01333333 0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.01333333 0.04 0.02
+       vertex -0.01333333 0.04 0.01
+       vertex -0.02 0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02 0.04 0.02
+       vertex -0.02 0.04 0.03
+       vertex -0.01333333 0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.01333333 0.04 0.03
+       vertex -0.01333333 0.04 0.02
+       vertex -0.02 0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02 0.04 0.03
+       vertex -0.02 0.04 0.04
+       vertex -0.01333333 0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.01333333 0.04 0.04
+       vertex -0.01333333 0.04 0.03
+       vertex -0.02 0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.02 0.04 0.04
+       vertex -0.02 0.04 0.05
+       vertex -0.01333333 0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.01333333 0.04 0.05
+       vertex -0.01333333 0.04 0.04
+       vertex -0.02 0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.01333333 0.04 -0.05
+       vertex -0.01333333 0.04 -0.04
+       vertex -0.006666667 0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.006666667 0.04 -0.04
+       vertex -0.006666667 0.04 -0.05
+       vertex -0.01333333 0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.01333333 0.04 -0.04
+       vertex -0.01333333 0.04 -0.03
+       vertex -0.006666667 0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.006666667 0.04 -0.03
+       vertex -0.006666667 0.04 -0.04
+       vertex -0.01333333 0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.01333333 0.04 -0.03
+       vertex -0.01333333 0.04 -0.02
+       vertex -0.006666667 0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.006666667 0.04 -0.02
+       vertex -0.006666667 0.04 -0.03
+       vertex -0.01333333 0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.01333333 0.04 -0.02
+       vertex -0.01333333 0.04 -0.01
+       vertex -0.006666667 0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.006666667 0.04 -0.01
+       vertex -0.006666667 0.04 -0.02
+       vertex -0.01333333 0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.01333333 0.04 -0.01
+       vertex -0.01333333 0.04 0
+       vertex -0.006666667 0.04 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.006666667 0.04 0
+       vertex -0.006666667 0.04 -0.01
+       vertex -0.01333333 0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.01333333 0.04 0
+       vertex -0.01333333 0.04 0.01
+       vertex -0.006666667 0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.006666667 0.04 0.01
+       vertex -0.006666667 0.04 0
+       vertex -0.01333333 0.04 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.01333333 0.04 0.01
+       vertex -0.01333333 0.04 0.02
+       vertex -0.006666667 0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.006666667 0.04 0.02
+       vertex -0.006666667 0.04 0.01
+       vertex -0.01333333 0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.01333333 0.04 0.02
+       vertex -0.01333333 0.04 0.03
+       vertex -0.006666667 0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.006666667 0.04 0.03
+       vertex -0.006666667 0.04 0.02
+       vertex -0.01333333 0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.01333333 0.04 0.03
+       vertex -0.01333333 0.04 0.04
+       vertex -0.006666667 0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.006666667 0.04 0.04
+       vertex -0.006666667 0.04 0.03
+       vertex -0.01333333 0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.01333333 0.04 0.04
+       vertex -0.01333333 0.04 0.05
+       vertex -0.006666667 0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.006666667 0.04 0.05
+       vertex -0.006666667 0.04 0.04
+       vertex -0.01333333 0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.006666667 0.04 -0.05
+       vertex -0.006666667 0.04 -0.04
+       vertex 0 0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0 0.04 -0.04
+       vertex 0 0.04 -0.05
+       vertex -0.006666667 0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.006666667 0.04 -0.04
+       vertex -0.006666667 0.04 -0.03
+       vertex 0 0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0 0.04 -0.03
+       vertex 0 0.04 -0.04
+       vertex -0.006666667 0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.006666667 0.04 -0.03
+       vertex -0.006666667 0.04 -0.02
+       vertex 0 0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0 0.04 -0.02
+       vertex 0 0.04 -0.03
+       vertex -0.006666667 0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.006666667 0.04 -0.02
+       vertex -0.006666667 0.04 -0.01
+       vertex 0 0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0 0.04 -0.01
+       vertex 0 0.04 -0.02
+       vertex -0.006666667 0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.006666667 0.04 -0.01
+       vertex -0.006666667 0.04 0
+       vertex 0 0.04 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0 0.04 0
+       vertex 0 0.04 -0.01
+       vertex -0.006666667 0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.006666667 0.04 0
+       vertex -0.006666667 0.04 0.01
+       vertex 0 0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0 0.04 0.01
+       vertex 0 0.04 0
+       vertex -0.006666667 0.04 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.006666667 0.04 0.01
+       vertex -0.006666667 0.04 0.02
+       vertex 0 0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0 0.04 0.02
+       vertex 0 0.04 0.01
+       vertex -0.006666667 0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.006666667 0.04 0.02
+       vertex -0.006666667 0.04 0.03
+       vertex 0 0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0 0.04 0.03
+       vertex 0 0.04 0.02
+       vertex -0.006666667 0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.006666667 0.04 0.03
+       vertex -0.006666667 0.04 0.04
+       vertex 0 0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0 0.04 0.04
+       vertex 0 0.04 0.03
+       vertex -0.006666667 0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex -0.006666667 0.04 0.04
+       vertex -0.006666667 0.04 0.05
+       vertex 0 0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0 0.04 0.05
+       vertex 0 0.04 0.04
+       vertex -0.006666667 0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0 0.04 -0.05
+       vertex 0 0.04 -0.04
+       vertex 0.006666667 0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.006666667 0.04 -0.04
+       vertex 0.006666667 0.04 -0.05
+       vertex 0 0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0 0.04 -0.04
+       vertex 0 0.04 -0.03
+       vertex 0.006666667 0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.006666667 0.04 -0.03
+       vertex 0.006666667 0.04 -0.04
+       vertex 0 0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0 0.04 -0.03
+       vertex 0 0.04 -0.02
+       vertex 0.006666667 0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.006666667 0.04 -0.02
+       vertex 0.006666667 0.04 -0.03
+       vertex 0 0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0 0.04 -0.02
+       vertex 0 0.04 -0.01
+       vertex 0.006666667 0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.006666667 0.04 -0.01
+       vertex 0.006666667 0.04 -0.02
+       vertex 0 0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0 0.04 -0.01
+       vertex 0 0.04 0
+       vertex 0.006666667 0.04 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.006666667 0.04 0
+       vertex 0.006666667 0.04 -0.01
+       vertex 0 0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0 0.04 0
+       vertex 0 0.04 0.01
+       vertex 0.006666667 0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.006666667 0.04 0.01
+       vertex 0.006666667 0.04 0
+       vertex 0 0.04 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0 0.04 0.01
+       vertex 0 0.04 0.02
+       vertex 0.006666667 0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.006666667 0.04 0.02
+       vertex 0.006666667 0.04 0.01
+       vertex 0 0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0 0.04 0.02
+       vertex 0 0.04 0.03
+       vertex 0.006666667 0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.006666667 0.04 0.03
+       vertex 0.006666667 0.04 0.02
+       vertex 0 0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0 0.04 0.03
+       vertex 0 0.04 0.04
+       vertex 0.006666667 0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.006666667 0.04 0.04
+       vertex 0.006666667 0.04 0.03
+       vertex 0 0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0 0.04 0.04
+       vertex 0 0.04 0.05
+       vertex 0.006666667 0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.006666667 0.04 0.05
+       vertex 0.006666667 0.04 0.04
+       vertex 0 0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.006666667 0.04 -0.05
+       vertex 0.006666667 0.04 -0.04
+       vertex 0.01333333 0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.01333333 0.04 -0.04
+       vertex 0.01333333 0.04 -0.05
+       vertex 0.006666667 0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.006666667 0.04 -0.04
+       vertex 0.006666667 0.04 -0.03
+       vertex 0.01333333 0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.01333333 0.04 -0.03
+       vertex 0.01333333 0.04 -0.04
+       vertex 0.006666667 0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.006666667 0.04 -0.03
+       vertex 0.006666667 0.04 -0.02
+       vertex 0.01333333 0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.01333333 0.04 -0.02
+       vertex 0.01333333 0.04 -0.03
+       vertex 0.006666667 0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.006666667 0.04 -0.02
+       vertex 0.006666667 0.04 -0.01
+       vertex 0.01333333 0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.01333333 0.04 -0.01
+       vertex 0.01333333 0.04 -0.02
+       vertex 0.006666667 0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.006666667 0.04 -0.01
+       vertex 0.006666667 0.04 0
+       vertex 0.01333333 0.04 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.01333333 0.04 0
+       vertex 0.01333333 0.04 -0.01
+       vertex 0.006666667 0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.006666667 0.04 0
+       vertex 0.006666667 0.04 0.01
+       vertex 0.01333333 0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.01333333 0.04 0.01
+       vertex 0.01333333 0.04 0
+       vertex 0.006666667 0.04 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.006666667 0.04 0.01
+       vertex 0.006666667 0.04 0.02
+       vertex 0.01333333 0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.01333333 0.04 0.02
+       vertex 0.01333333 0.04 0.01
+       vertex 0.006666667 0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.006666667 0.04 0.02
+       vertex 0.006666667 0.04 0.03
+       vertex 0.01333333 0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.01333333 0.04 0.03
+       vertex 0.01333333 0.04 0.02
+       vertex 0.006666667 0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.006666667 0.04 0.03
+       vertex 0.006666667 0.04 0.04
+       vertex 0.01333333 0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.01333333 0.04 0.04
+       vertex 0.01333333 0.04 0.03
+       vertex 0.006666667 0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.006666667 0.04 0.04
+       vertex 0.006666667 0.04 0.05
+       vertex 0.01333333 0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.01333333 0.04 0.05
+       vertex 0.01333333 0.04 0.04
+       vertex 0.006666667 0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.01333333 0.04 -0.05
+       vertex 0.01333333 0.04 -0.04
+       vertex 0.02 0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02 0.04 -0.04
+       vertex 0.02 0.04 -0.05
+       vertex 0.01333333 0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.01333333 0.04 -0.04
+       vertex 0.01333333 0.04 -0.03
+       vertex 0.02 0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02 0.04 -0.03
+       vertex 0.02 0.04 -0.04
+       vertex 0.01333333 0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.01333333 0.04 -0.03
+       vertex 0.01333333 0.04 -0.02
+       vertex 0.02 0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02 0.04 -0.02
+       vertex 0.02 0.04 -0.03
+       vertex 0.01333333 0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.01333333 0.04 -0.02
+       vertex 0.01333333 0.04 -0.01
+       vertex 0.02 0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02 0.04 -0.01
+       vertex 0.02 0.04 -0.02
+       vertex 0.01333333 0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.01333333 0.04 -0.01
+       vertex 0.01333333 0.04 0
+       vertex 0.02 0.04 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02 0.04 0
+       vertex 0.02 0.04 -0.01
+       vertex 0.01333333 0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.01333333 0.04 0
+       vertex 0.01333333 0.04 0.01
+       vertex 0.02 0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02 0.04 0.01
+       vertex 0.02 0.04 0
+       vertex 0.01333333 0.04 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.01333333 0.04 0.01
+       vertex 0.01333333 0.04 0.02
+       vertex 0.02 0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02 0.04 0.02
+       vertex 0.02 0.04 0.01
+       vertex 0.01333333 0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.01333333 0.04 0.02
+       vertex 0.01333333 0.04 0.03
+       vertex 0.02 0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02 0.04 0.03
+       vertex 0.02 0.04 0.02
+       vertex 0.01333333 0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.01333333 0.04 0.03
+       vertex 0.01333333 0.04 0.04
+       vertex 0.02 0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02 0.04 0.04
+       vertex 0.02 0.04 0.03
+       vertex 0.01333333 0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.01333333 0.04 0.04
+       vertex 0.01333333 0.04 0.05
+       vertex 0.02 0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02 0.04 0.05
+       vertex 0.02 0.04 0.04
+       vertex 0.01333333 0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02 0.04 -0.05
+       vertex 0.02 0.04 -0.04
+       vertex 0.02666667 0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02666667 0.04 -0.04
+       vertex 0.02666667 0.04 -0.05
+       vertex 0.02 0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02 0.04 -0.04
+       vertex 0.02 0.04 -0.03
+       vertex 0.02666667 0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02666667 0.04 -0.03
+       vertex 0.02666667 0.04 -0.04
+       vertex 0.02 0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02 0.04 -0.03
+       vertex 0.02 0.04 -0.02
+       vertex 0.02666667 0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02666667 0.04 -0.02
+       vertex 0.02666667 0.04 -0.03
+       vertex 0.02 0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02 0.04 -0.02
+       vertex 0.02 0.04 -0.01
+       vertex 0.02666667 0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02666667 0.04 -0.01
+       vertex 0.02666667 0.04 -0.02
+       vertex 0.02 0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02 0.04 -0.01
+       vertex 0.02 0.04 0
+       vertex 0.02666667 0.04 5.782412e-19
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02666667 0.04 5.782412e-19
+       vertex 0.02666667 0.04 -0.01
+       vertex 0.02 0.04 -0.01
+    endloop
+  endfacet
+  facet normal -0 1 0
+    outer loop
+       vertex 0.02 0.04 0.01
+       vertex 0.02666667 0.04 0.01
+       vertex 0.02666667 0.04 5.782412e-19
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02666667 0.04 5.782412e-19
+       vertex 0.02 0.04 0
+       vertex 0.02 0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02 0.04 0.01
+       vertex 0.02 0.04 0.02
+       vertex 0.02666667 0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02666667 0.04 0.02
+       vertex 0.02666667 0.04 0.01
+       vertex 0.02 0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02 0.04 0.02
+       vertex 0.02 0.04 0.03
+       vertex 0.02666667 0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02666667 0.04 0.03
+       vertex 0.02666667 0.04 0.02
+       vertex 0.02 0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02 0.04 0.03
+       vertex 0.02 0.04 0.04
+       vertex 0.02666667 0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02666667 0.04 0.04
+       vertex 0.02666667 0.04 0.03
+       vertex 0.02 0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02 0.04 0.04
+       vertex 0.02 0.04 0.05
+       vertex 0.02666667 0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02666667 0.04 0.05
+       vertex 0.02666667 0.04 0.04
+       vertex 0.02 0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02666667 0.04 -0.05
+       vertex 0.02666667 0.04 -0.04
+       vertex 0.03333333 0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.03333333 0.04 -0.04
+       vertex 0.03333333 0.04 -0.05
+       vertex 0.02666667 0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02666667 0.04 -0.04
+       vertex 0.02666667 0.04 -0.03
+       vertex 0.03333333 0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.03333333 0.04 -0.03
+       vertex 0.03333333 0.04 -0.04
+       vertex 0.02666667 0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02666667 0.04 -0.03
+       vertex 0.02666667 0.04 -0.02
+       vertex 0.03333333 0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.03333333 0.04 -0.02
+       vertex 0.03333333 0.04 -0.03
+       vertex 0.02666667 0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02666667 0.04 -0.02
+       vertex 0.02666667 0.04 -0.01
+       vertex 0.03333333 0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.03333333 0.04 -0.01
+       vertex 0.03333333 0.04 -0.02
+       vertex 0.02666667 0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02666667 0.04 -0.01
+       vertex 0.02666667 0.04 5.782412e-19
+       vertex 0.03333333 0.04 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.03333333 0.04 0
+       vertex 0.03333333 0.04 -0.01
+       vertex 0.02666667 0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02666667 0.04 5.782412e-19
+       vertex 0.02666667 0.04 0.01
+       vertex 0.03333333 0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.03333333 0.04 0.01
+       vertex 0.03333333 0.04 0
+       vertex 0.02666667 0.04 5.782412e-19
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02666667 0.04 0.01
+       vertex 0.02666667 0.04 0.02
+       vertex 0.03333333 0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.03333333 0.04 0.02
+       vertex 0.03333333 0.04 0.01
+       vertex 0.02666667 0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02666667 0.04 0.02
+       vertex 0.02666667 0.04 0.03
+       vertex 0.03333333 0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.03333333 0.04 0.03
+       vertex 0.03333333 0.04 0.02
+       vertex 0.02666667 0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02666667 0.04 0.03
+       vertex 0.02666667 0.04 0.04
+       vertex 0.03333333 0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.03333333 0.04 0.04
+       vertex 0.03333333 0.04 0.03
+       vertex 0.02666667 0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.02666667 0.04 0.04
+       vertex 0.02666667 0.04 0.05
+       vertex 0.03333333 0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.03333333 0.04 0.05
+       vertex 0.03333333 0.04 0.04
+       vertex 0.02666667 0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.03333333 0.04 -0.05
+       vertex 0.03333333 0.04 -0.04
+       vertex 0.04 0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04 0.04 -0.04
+       vertex 0.04 0.04 -0.05
+       vertex 0.03333333 0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.03333333 0.04 -0.04
+       vertex 0.03333333 0.04 -0.03
+       vertex 0.04 0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04 0.04 -0.03
+       vertex 0.04 0.04 -0.04
+       vertex 0.03333333 0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.03333333 0.04 -0.03
+       vertex 0.03333333 0.04 -0.02
+       vertex 0.04 0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04 0.04 -0.02
+       vertex 0.04 0.04 -0.03
+       vertex 0.03333333 0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.03333333 0.04 -0.02
+       vertex 0.03333333 0.04 -0.01
+       vertex 0.04 0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04 0.04 -0.01
+       vertex 0.04 0.04 -0.02
+       vertex 0.03333333 0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.03333333 0.04 -0.01
+       vertex 0.03333333 0.04 0
+       vertex 0.04 0.04 -5.782412e-19
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04 0.04 -5.782412e-19
+       vertex 0.04 0.04 -0.01
+       vertex 0.03333333 0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.03333333 0.04 0
+       vertex 0.03333333 0.04 0.01
+       vertex 0.04 0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04 0.04 0.01
+       vertex 0.04 0.04 -5.782412e-19
+       vertex 0.03333333 0.04 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.03333333 0.04 0.01
+       vertex 0.03333333 0.04 0.02
+       vertex 0.04 0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04 0.04 0.02
+       vertex 0.04 0.04 0.01
+       vertex 0.03333333 0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.03333333 0.04 0.02
+       vertex 0.03333333 0.04 0.03
+       vertex 0.04 0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04 0.04 0.03
+       vertex 0.04 0.04 0.02
+       vertex 0.03333333 0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.03333333 0.04 0.03
+       vertex 0.03333333 0.04 0.04
+       vertex 0.04 0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04 0.04 0.04
+       vertex 0.04 0.04 0.03
+       vertex 0.03333333 0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.03333333 0.04 0.04
+       vertex 0.03333333 0.04 0.05
+       vertex 0.04 0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04 0.04 0.05
+       vertex 0.04 0.04 0.04
+       vertex 0.03333333 0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04 0.04 -0.05
+       vertex 0.04 0.04 -0.04
+       vertex 0.04666667 0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04666667 0.04 -0.04
+       vertex 0.04666667 0.04 -0.05
+       vertex 0.04 0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04 0.04 -0.04
+       vertex 0.04 0.04 -0.03
+       vertex 0.04666667 0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04666667 0.04 -0.03
+       vertex 0.04666667 0.04 -0.04
+       vertex 0.04 0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04 0.04 -0.03
+       vertex 0.04 0.04 -0.02
+       vertex 0.04666667 0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04666667 0.04 -0.02
+       vertex 0.04666667 0.04 -0.03
+       vertex 0.04 0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04 0.04 -0.02
+       vertex 0.04 0.04 -0.01
+       vertex 0.04666667 0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04666667 0.04 -0.01
+       vertex 0.04666667 0.04 -0.02
+       vertex 0.04 0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04 0.04 -0.01
+       vertex 0.04 0.04 -5.782412e-19
+       vertex 0.04666667 0.04 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04666667 0.04 0
+       vertex 0.04666667 0.04 -0.01
+       vertex 0.04 0.04 -0.01
+    endloop
+  endfacet
+  facet normal -0 1 0
+    outer loop
+       vertex 0.04 0.04 0.01
+       vertex 0.04666667 0.04 0.01
+       vertex 0.04666667 0.04 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04666667 0.04 0
+       vertex 0.04 0.04 -5.782412e-19
+       vertex 0.04 0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04 0.04 0.01
+       vertex 0.04 0.04 0.02
+       vertex 0.04666667 0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04666667 0.04 0.02
+       vertex 0.04666667 0.04 0.01
+       vertex 0.04 0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04 0.04 0.02
+       vertex 0.04 0.04 0.03
+       vertex 0.04666667 0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04666667 0.04 0.03
+       vertex 0.04666667 0.04 0.02
+       vertex 0.04 0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04 0.04 0.03
+       vertex 0.04 0.04 0.04
+       vertex 0.04666667 0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04666667 0.04 0.04
+       vertex 0.04666667 0.04 0.03
+       vertex 0.04 0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04 0.04 0.04
+       vertex 0.04 0.04 0.05
+       vertex 0.04666667 0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04666667 0.04 0.05
+       vertex 0.04666667 0.04 0.04
+       vertex 0.04 0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04666667 0.04 -0.05
+       vertex 0.04666667 0.04 -0.04
+       vertex 0.05333333 0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.05333333 0.04 -0.04
+       vertex 0.05333333 0.04 -0.05
+       vertex 0.04666667 0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04666667 0.04 -0.04
+       vertex 0.04666667 0.04 -0.03
+       vertex 0.05333333 0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.05333333 0.04 -0.03
+       vertex 0.05333333 0.04 -0.04
+       vertex 0.04666667 0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04666667 0.04 -0.03
+       vertex 0.04666667 0.04 -0.02
+       vertex 0.05333333 0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.05333333 0.04 -0.02
+       vertex 0.05333333 0.04 -0.03
+       vertex 0.04666667 0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04666667 0.04 -0.02
+       vertex 0.04666667 0.04 -0.01
+       vertex 0.05333333 0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.05333333 0.04 -0.01
+       vertex 0.05333333 0.04 -0.02
+       vertex 0.04666667 0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04666667 0.04 -0.01
+       vertex 0.04666667 0.04 0
+       vertex 0.05333333 0.04 -2.891206e-19
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.05333333 0.04 -2.891206e-19
+       vertex 0.05333333 0.04 -0.01
+       vertex 0.04666667 0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04666667 0.04 0
+       vertex 0.04666667 0.04 0.01
+       vertex 0.05333333 0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.05333333 0.04 0.01
+       vertex 0.05333333 0.04 -2.891206e-19
+       vertex 0.04666667 0.04 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04666667 0.04 0.01
+       vertex 0.04666667 0.04 0.02
+       vertex 0.05333333 0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.05333333 0.04 0.02
+       vertex 0.05333333 0.04 0.01
+       vertex 0.04666667 0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04666667 0.04 0.02
+       vertex 0.04666667 0.04 0.03
+       vertex 0.05333333 0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.05333333 0.04 0.03
+       vertex 0.05333333 0.04 0.02
+       vertex 0.04666667 0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04666667 0.04 0.03
+       vertex 0.04666667 0.04 0.04
+       vertex 0.05333333 0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.05333333 0.04 0.04
+       vertex 0.05333333 0.04 0.03
+       vertex 0.04666667 0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.04666667 0.04 0.04
+       vertex 0.04666667 0.04 0.05
+       vertex 0.05333333 0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.05333333 0.04 0.05
+       vertex 0.05333333 0.04 0.04
+       vertex 0.04666667 0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.05333333 0.04 -0.05
+       vertex 0.05333333 0.04 -0.04
+       vertex 0.06 0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06 0.04 -0.04
+       vertex 0.06 0.04 -0.05
+       vertex 0.05333333 0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.05333333 0.04 -0.04
+       vertex 0.05333333 0.04 -0.03
+       vertex 0.06 0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06 0.04 -0.03
+       vertex 0.06 0.04 -0.04
+       vertex 0.05333333 0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.05333333 0.04 -0.03
+       vertex 0.05333333 0.04 -0.02
+       vertex 0.06 0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06 0.04 -0.02
+       vertex 0.06 0.04 -0.03
+       vertex 0.05333333 0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.05333333 0.04 -0.02
+       vertex 0.05333333 0.04 -0.01
+       vertex 0.06 0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06 0.04 -0.01
+       vertex 0.06 0.04 -0.02
+       vertex 0.05333333 0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.05333333 0.04 -0.01
+       vertex 0.05333333 0.04 -2.891206e-19
+       vertex 0.06 0.04 5.782412e-19
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06 0.04 5.782412e-19
+       vertex 0.06 0.04 -0.01
+       vertex 0.05333333 0.04 -0.01
+    endloop
+  endfacet
+  facet normal -0 1 0
+    outer loop
+       vertex 0.05333333 0.04 0.01
+       vertex 0.06 0.04 0.01
+       vertex 0.06 0.04 5.782412e-19
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06 0.04 5.782412e-19
+       vertex 0.05333333 0.04 -2.891206e-19
+       vertex 0.05333333 0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.05333333 0.04 0.01
+       vertex 0.05333333 0.04 0.02
+       vertex 0.06 0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06 0.04 0.02
+       vertex 0.06 0.04 0.01
+       vertex 0.05333333 0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.05333333 0.04 0.02
+       vertex 0.05333333 0.04 0.03
+       vertex 0.06 0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06 0.04 0.03
+       vertex 0.06 0.04 0.02
+       vertex 0.05333333 0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.05333333 0.04 0.03
+       vertex 0.05333333 0.04 0.04
+       vertex 0.06 0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06 0.04 0.04
+       vertex 0.06 0.04 0.03
+       vertex 0.05333333 0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.05333333 0.04 0.04
+       vertex 0.05333333 0.04 0.05
+       vertex 0.06 0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06 0.04 0.05
+       vertex 0.06 0.04 0.04
+       vertex 0.05333333 0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06 0.04 -0.05
+       vertex 0.06 0.04 -0.04
+       vertex 0.06666667 0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06666667 0.04 -0.04
+       vertex 0.06666667 0.04 -0.05
+       vertex 0.06 0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06 0.04 -0.04
+       vertex 0.06 0.04 -0.03
+       vertex 0.06666667 0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06666667 0.04 -0.03
+       vertex 0.06666667 0.04 -0.04
+       vertex 0.06 0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06 0.04 -0.03
+       vertex 0.06 0.04 -0.02
+       vertex 0.06666667 0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06666667 0.04 -0.02
+       vertex 0.06666667 0.04 -0.03
+       vertex 0.06 0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06 0.04 -0.02
+       vertex 0.06 0.04 -0.01
+       vertex 0.06666667 0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06666667 0.04 -0.01
+       vertex 0.06666667 0.04 -0.02
+       vertex 0.06 0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06 0.04 -0.01
+       vertex 0.06 0.04 5.782412e-19
+       vertex 0.06666667 0.04 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06666667 0.04 0
+       vertex 0.06666667 0.04 -0.01
+       vertex 0.06 0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06 0.04 5.782412e-19
+       vertex 0.06 0.04 0.01
+       vertex 0.06666667 0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06666667 0.04 0.01
+       vertex 0.06666667 0.04 0
+       vertex 0.06 0.04 5.782412e-19
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06 0.04 0.01
+       vertex 0.06 0.04 0.02
+       vertex 0.06666667 0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06666667 0.04 0.02
+       vertex 0.06666667 0.04 0.01
+       vertex 0.06 0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06 0.04 0.02
+       vertex 0.06 0.04 0.03
+       vertex 0.06666667 0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06666667 0.04 0.03
+       vertex 0.06666667 0.04 0.02
+       vertex 0.06 0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06 0.04 0.03
+       vertex 0.06 0.04 0.04
+       vertex 0.06666667 0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06666667 0.04 0.04
+       vertex 0.06666667 0.04 0.03
+       vertex 0.06 0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06 0.04 0.04
+       vertex 0.06 0.04 0.05
+       vertex 0.06666667 0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06666667 0.04 0.05
+       vertex 0.06666667 0.04 0.04
+       vertex 0.06 0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06666667 0.04 -0.05
+       vertex 0.06666667 0.04 -0.04
+       vertex 0.07333333 0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.07333333 0.04 -0.04
+       vertex 0.07333333 0.04 -0.05
+       vertex 0.06666667 0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06666667 0.04 -0.04
+       vertex 0.06666667 0.04 -0.03
+       vertex 0.07333333 0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.07333333 0.04 -0.03
+       vertex 0.07333333 0.04 -0.04
+       vertex 0.06666667 0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06666667 0.04 -0.03
+       vertex 0.06666667 0.04 -0.02
+       vertex 0.07333333 0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.07333333 0.04 -0.02
+       vertex 0.07333333 0.04 -0.03
+       vertex 0.06666667 0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06666667 0.04 -0.02
+       vertex 0.06666667 0.04 -0.01
+       vertex 0.07333333 0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.07333333 0.04 -0.01
+       vertex 0.07333333 0.04 -0.02
+       vertex 0.06666667 0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06666667 0.04 -0.01
+       vertex 0.06666667 0.04 0
+       vertex 0.07333333 0.04 -4.336809e-19
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.07333333 0.04 -4.336809e-19
+       vertex 0.07333333 0.04 -0.01
+       vertex 0.06666667 0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06666667 0.04 0
+       vertex 0.06666667 0.04 0.01
+       vertex 0.07333333 0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.07333333 0.04 0.01
+       vertex 0.07333333 0.04 -4.336809e-19
+       vertex 0.06666667 0.04 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06666667 0.04 0.01
+       vertex 0.06666667 0.04 0.02
+       vertex 0.07333333 0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.07333333 0.04 0.02
+       vertex 0.07333333 0.04 0.01
+       vertex 0.06666667 0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06666667 0.04 0.02
+       vertex 0.06666667 0.04 0.03
+       vertex 0.07333333 0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.07333333 0.04 0.03
+       vertex 0.07333333 0.04 0.02
+       vertex 0.06666667 0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06666667 0.04 0.03
+       vertex 0.06666667 0.04 0.04
+       vertex 0.07333333 0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.07333333 0.04 0.04
+       vertex 0.07333333 0.04 0.03
+       vertex 0.06666667 0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.06666667 0.04 0.04
+       vertex 0.06666667 0.04 0.05
+       vertex 0.07333333 0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.07333333 0.04 0.05
+       vertex 0.07333333 0.04 0.04
+       vertex 0.06666667 0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.07333333 0.04 -0.05
+       vertex 0.07333333 0.04 -0.04
+       vertex 0.08 0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08 0.04 -0.04
+       vertex 0.08 0.04 -0.05
+       vertex 0.07333333 0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.07333333 0.04 -0.04
+       vertex 0.07333333 0.04 -0.03
+       vertex 0.08 0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08 0.04 -0.03
+       vertex 0.08 0.04 -0.04
+       vertex 0.07333333 0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.07333333 0.04 -0.03
+       vertex 0.07333333 0.04 -0.02
+       vertex 0.08 0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08 0.04 -0.02
+       vertex 0.08 0.04 -0.03
+       vertex 0.07333333 0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.07333333 0.04 -0.02
+       vertex 0.07333333 0.04 -0.01
+       vertex 0.08 0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08 0.04 -0.01
+       vertex 0.08 0.04 -0.02
+       vertex 0.07333333 0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.07333333 0.04 -0.01
+       vertex 0.07333333 0.04 -4.336809e-19
+       vertex 0.08 0.04 2.891206e-19
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08 0.04 2.891206e-19
+       vertex 0.08 0.04 -0.01
+       vertex 0.07333333 0.04 -0.01
+    endloop
+  endfacet
+  facet normal -0 1 0
+    outer loop
+       vertex 0.07333333 0.04 0.01
+       vertex 0.08 0.04 0.01
+       vertex 0.08 0.04 2.891206e-19
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08 0.04 2.891206e-19
+       vertex 0.07333333 0.04 -4.336809e-19
+       vertex 0.07333333 0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.07333333 0.04 0.01
+       vertex 0.07333333 0.04 0.02
+       vertex 0.08 0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08 0.04 0.02
+       vertex 0.08 0.04 0.01
+       vertex 0.07333333 0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.07333333 0.04 0.02
+       vertex 0.07333333 0.04 0.03
+       vertex 0.08 0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08 0.04 0.03
+       vertex 0.08 0.04 0.02
+       vertex 0.07333333 0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.07333333 0.04 0.03
+       vertex 0.07333333 0.04 0.04
+       vertex 0.08 0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08 0.04 0.04
+       vertex 0.08 0.04 0.03
+       vertex 0.07333333 0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.07333333 0.04 0.04
+       vertex 0.07333333 0.04 0.05
+       vertex 0.08 0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08 0.04 0.05
+       vertex 0.08 0.04 0.04
+       vertex 0.07333333 0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08 0.04 -0.05
+       vertex 0.08 0.04 -0.04
+       vertex 0.08666667 0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08666667 0.04 -0.04
+       vertex 0.08666667 0.04 -0.05
+       vertex 0.08 0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08 0.04 -0.04
+       vertex 0.08 0.04 -0.03
+       vertex 0.08666667 0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08666667 0.04 -0.03
+       vertex 0.08666667 0.04 -0.04
+       vertex 0.08 0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08 0.04 -0.03
+       vertex 0.08 0.04 -0.02
+       vertex 0.08666667 0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08666667 0.04 -0.02
+       vertex 0.08666667 0.04 -0.03
+       vertex 0.08 0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08 0.04 -0.02
+       vertex 0.08 0.04 -0.01
+       vertex 0.08666667 0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08666667 0.04 -0.01
+       vertex 0.08666667 0.04 -0.02
+       vertex 0.08 0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08 0.04 -0.01
+       vertex 0.08 0.04 2.891206e-19
+       vertex 0.08666667 0.04 -2.168404e-19
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08666667 0.04 -2.168404e-19
+       vertex 0.08666667 0.04 -0.01
+       vertex 0.08 0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08 0.04 2.891206e-19
+       vertex 0.08 0.04 0.01
+       vertex 0.08666667 0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08666667 0.04 0.01
+       vertex 0.08666667 0.04 -2.168404e-19
+       vertex 0.08 0.04 2.891206e-19
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08 0.04 0.01
+       vertex 0.08 0.04 0.02
+       vertex 0.08666667 0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08666667 0.04 0.02
+       vertex 0.08666667 0.04 0.01
+       vertex 0.08 0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08 0.04 0.02
+       vertex 0.08 0.04 0.03
+       vertex 0.08666667 0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08666667 0.04 0.03
+       vertex 0.08666667 0.04 0.02
+       vertex 0.08 0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08 0.04 0.03
+       vertex 0.08 0.04 0.04
+       vertex 0.08666667 0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08666667 0.04 0.04
+       vertex 0.08666667 0.04 0.03
+       vertex 0.08 0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08 0.04 0.04
+       vertex 0.08 0.04 0.05
+       vertex 0.08666667 0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08666667 0.04 0.05
+       vertex 0.08666667 0.04 0.04
+       vertex 0.08 0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08666667 0.04 -0.05
+       vertex 0.08666667 0.04 -0.04
+       vertex 0.09333333 0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.09333333 0.04 -0.04
+       vertex 0.09333333 0.04 -0.05
+       vertex 0.08666667 0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08666667 0.04 -0.04
+       vertex 0.08666667 0.04 -0.03
+       vertex 0.09333333 0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.09333333 0.04 -0.03
+       vertex 0.09333333 0.04 -0.04
+       vertex 0.08666667 0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08666667 0.04 -0.03
+       vertex 0.08666667 0.04 -0.02
+       vertex 0.09333333 0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.09333333 0.04 -0.02
+       vertex 0.09333333 0.04 -0.03
+       vertex 0.08666667 0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08666667 0.04 -0.02
+       vertex 0.08666667 0.04 -0.01
+       vertex 0.09333333 0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.09333333 0.04 -0.01
+       vertex 0.09333333 0.04 -0.02
+       vertex 0.08666667 0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08666667 0.04 -0.01
+       vertex 0.08666667 0.04 -2.168404e-19
+       vertex 0.09333333 0.04 4.698209e-19
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.09333333 0.04 4.698209e-19
+       vertex 0.09333333 0.04 -0.01
+       vertex 0.08666667 0.04 -0.01
+    endloop
+  endfacet
+  facet normal -0 1 0
+    outer loop
+       vertex 0.08666667 0.04 0.01
+       vertex 0.09333333 0.04 0.01
+       vertex 0.09333333 0.04 4.698209e-19
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.09333333 0.04 4.698209e-19
+       vertex 0.08666667 0.04 -2.168404e-19
+       vertex 0.08666667 0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08666667 0.04 0.01
+       vertex 0.08666667 0.04 0.02
+       vertex 0.09333333 0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.09333333 0.04 0.02
+       vertex 0.09333333 0.04 0.01
+       vertex 0.08666667 0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08666667 0.04 0.02
+       vertex 0.08666667 0.04 0.03
+       vertex 0.09333333 0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.09333333 0.04 0.03
+       vertex 0.09333333 0.04 0.02
+       vertex 0.08666667 0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08666667 0.04 0.03
+       vertex 0.08666667 0.04 0.04
+       vertex 0.09333333 0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.09333333 0.04 0.04
+       vertex 0.09333333 0.04 0.03
+       vertex 0.08666667 0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.08666667 0.04 0.04
+       vertex 0.08666667 0.04 0.05
+       vertex 0.09333333 0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.09333333 0.04 0.05
+       vertex 0.09333333 0.04 0.04
+       vertex 0.08666667 0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.09333333 0.04 -0.05
+       vertex 0.09333333 0.04 -0.04
+       vertex 0.1 0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.1 0.04 -0.04
+       vertex 0.1 0.04 -0.05
+       vertex 0.09333333 0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.09333333 0.04 -0.04
+       vertex 0.09333333 0.04 -0.03
+       vertex 0.1 0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.1 0.04 -0.03
+       vertex 0.1 0.04 -0.04
+       vertex 0.09333333 0.04 -0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.09333333 0.04 -0.03
+       vertex 0.09333333 0.04 -0.02
+       vertex 0.1 0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.1 0.04 -0.02
+       vertex 0.1 0.04 -0.03
+       vertex 0.09333333 0.04 -0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.09333333 0.04 -0.02
+       vertex 0.09333333 0.04 -0.01
+       vertex 0.1 0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.1 0.04 -0.01
+       vertex 0.1 0.04 -0.02
+       vertex 0.09333333 0.04 -0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.09333333 0.04 -0.01
+       vertex 0.09333333 0.04 4.698209e-19
+       vertex 0.1 0.04 0
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.1 0.04 0
+       vertex 0.1 0.04 -0.01
+       vertex 0.09333333 0.04 -0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.09333333 0.04 4.698209e-19
+       vertex 0.09333333 0.04 0.01
+       vertex 0.1 0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.1 0.04 0.01
+       vertex 0.1 0.04 0
+       vertex 0.09333333 0.04 4.698209e-19
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.09333333 0.04 0.01
+       vertex 0.09333333 0.04 0.02
+       vertex 0.1 0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.1 0.04 0.02
+       vertex 0.1 0.04 0.01
+       vertex 0.09333333 0.04 0.01
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.09333333 0.04 0.02
+       vertex 0.09333333 0.04 0.03
+       vertex 0.1 0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.1 0.04 0.03
+       vertex 0.1 0.04 0.02
+       vertex 0.09333333 0.04 0.02
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.09333333 0.04 0.03
+       vertex 0.09333333 0.04 0.04
+       vertex 0.1 0.04 0.04
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.1 0.04 0.04
+       vertex 0.1 0.04 0.03
+       vertex 0.09333333 0.04 0.03
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.09333333 0.04 0.04
+       vertex 0.09333333 0.04 0.05
+       vertex 0.1 0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 1 0
+    outer loop
+       vertex 0.1 0.04 0.05
+       vertex 0.1 0.04 0.04
+       vertex 0.09333333 0.04 0.04
+    endloop
+  endfacet
+endsolid maxY
+solid minX
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 0.008 -0.05
+       vertex -0.1 0.008 -0.04
+       vertex -0.1 0.016 -0.04
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 0.016 -0.04
+       vertex -0.1 0.016 -0.05
+       vertex -0.1 0.008 -0.05
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 0.016 -0.05
+       vertex -0.1 0.016 -0.04
+       vertex -0.1 0.024 -0.04
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 0.024 -0.04
+       vertex -0.1 0.024 -0.05
+       vertex -0.1 0.016 -0.05
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 0.024 -0.05
+       vertex -0.1 0.024 -0.04
+       vertex -0.1 0.032 -0.04
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 0.032 -0.04
+       vertex -0.1 0.032 -0.05
+       vertex -0.1 0.024 -0.05
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 0.032 -0.05
+       vertex -0.1 0.032 -0.04
+       vertex -0.1 0.04 -0.04
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 0.04 -0.04
+       vertex -0.1 0.04 -0.05
+       vertex -0.1 0.032 -0.05
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 0.008 -0.04
+       vertex -0.1 0.008 -0.03
+       vertex -0.1 0.016 -0.03
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 0.016 -0.03
+       vertex -0.1 0.016 -0.04
+       vertex -0.1 0.008 -0.04
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 0.016 -0.04
+       vertex -0.1 0.016 -0.03
+       vertex -0.1 0.024 -0.03
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 0.024 -0.03
+       vertex -0.1 0.024 -0.04
+       vertex -0.1 0.016 -0.04
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 0.024 -0.04
+       vertex -0.1 0.024 -0.03
+       vertex -0.1 0.032 -0.03
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 0.032 -0.03
+       vertex -0.1 0.032 -0.04
+       vertex -0.1 0.024 -0.04
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 0.032 -0.04
+       vertex -0.1 0.032 -0.03
+       vertex -0.1 0.04 -0.03
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 0.04 -0.03
+       vertex -0.1 0.04 -0.04
+       vertex -0.1 0.032 -0.04
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 0.008 -0.03
+       vertex -0.1 0.008 -0.02
+       vertex -0.1 0.016 -0.02
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 0.016 -0.02
+       vertex -0.1 0.016 -0.03
+       vertex -0.1 0.008 -0.03
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 0.016 -0.03
+       vertex -0.1 0.016 -0.02
+       vertex -0.1 0.024 -0.02
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 0.024 -0.02
+       vertex -0.1 0.024 -0.03
+       vertex -0.1 0.016 -0.03
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 0.024 -0.03
+       vertex -0.1 0.024 -0.02
+       vertex -0.1 0.032 -0.02
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 0.032 -0.02
+       vertex -0.1 0.032 -0.03
+       vertex -0.1 0.024 -0.03
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 0.032 -0.03
+       vertex -0.1 0.032 -0.02
+       vertex -0.1 0.04 -0.02
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 0.04 -0.02
+       vertex -0.1 0.04 -0.03
+       vertex -0.1 0.032 -0.03
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 0.008 -0.02
+       vertex -0.1 0.008 -0.01
+       vertex -0.1 0.016 -0.01
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 0.016 -0.01
+       vertex -0.1 0.016 -0.02
+       vertex -0.1 0.008 -0.02
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 0.016 -0.02
+       vertex -0.1 0.016 -0.01
+       vertex -0.1 0.024 -0.01
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 0.024 -0.01
+       vertex -0.1 0.024 -0.02
+       vertex -0.1 0.016 -0.02
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 0.024 -0.02
+       vertex -0.1 0.024 -0.01
+       vertex -0.1 0.032 -0.01
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 0.032 -0.01
+       vertex -0.1 0.032 -0.02
+       vertex -0.1 0.024 -0.02
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 0.032 -0.02
+       vertex -0.1 0.032 -0.01
+       vertex -0.1 0.04 -0.01
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 0.04 -0.01
+       vertex -0.1 0.04 -0.02
+       vertex -0.1 0.032 -0.02
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 0.008 -0.01
+       vertex -0.1 0.008 0
+       vertex -0.1 0.016 -2.891206e-19
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 0.016 -2.891206e-19
+       vertex -0.1 0.016 -0.01
+       vertex -0.1 0.008 -0.01
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 0.016 -0.01
+       vertex -0.1 0.016 -2.891206e-19
+       vertex -0.1 0.024 5.782412e-19
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 0.024 5.782412e-19
+       vertex -0.1 0.024 -0.01
+       vertex -0.1 0.016 -0.01
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 0.024 -0.01
+       vertex -0.1 0.024 5.782412e-19
+       vertex -0.1 0.032 2.891206e-19
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 0.032 2.891206e-19
+       vertex -0.1 0.032 -0.01
+       vertex -0.1 0.024 -0.01
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 0.032 -0.01
+       vertex -0.1 0.032 2.891206e-19
+       vertex -0.1 0.04 0
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 0.04 0
+       vertex -0.1 0.04 -0.01
+       vertex -0.1 0.032 -0.01
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 0.008 0
+       vertex -0.1 0.008 0.01
+       vertex -0.1 0.016 0.01
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 0.016 0.01
+       vertex -0.1 0.016 -2.891206e-19
+       vertex -0.1 0.008 0
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 0.016 0.01
+       vertex -0.1 0.024 0.01
+       vertex -0.1 0.024 5.782412e-19
+    endloop
+  endfacet
+  facet normal -1 -0 0
+    outer loop
+       vertex -0.1 0.024 5.782412e-19
+       vertex -0.1 0.016 -2.891206e-19
+       vertex -0.1 0.016 0.01
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 0.024 5.782412e-19
+       vertex -0.1 0.024 0.01
+       vertex -0.1 0.032 0.01
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 0.032 0.01
+       vertex -0.1 0.032 2.891206e-19
+       vertex -0.1 0.024 5.782412e-19
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 0.032 2.891206e-19
+       vertex -0.1 0.032 0.01
+       vertex -0.1 0.04 0.01
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 0.04 0.01
+       vertex -0.1 0.04 0
+       vertex -0.1 0.032 2.891206e-19
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 0.008 0.01
+       vertex -0.1 0.008 0.02
+       vertex -0.1 0.016 0.02
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 0.016 0.02
+       vertex -0.1 0.016 0.01
+       vertex -0.1 0.008 0.01
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 0.016 0.01
+       vertex -0.1 0.016 0.02
+       vertex -0.1 0.024 0.02
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 0.024 0.02
+       vertex -0.1 0.024 0.01
+       vertex -0.1 0.016 0.01
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 0.024 0.01
+       vertex -0.1 0.024 0.02
+       vertex -0.1 0.032 0.02
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 0.032 0.02
+       vertex -0.1 0.032 0.01
+       vertex -0.1 0.024 0.01
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 0.032 0.01
+       vertex -0.1 0.032 0.02
+       vertex -0.1 0.04 0.02
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 0.04 0.02
+       vertex -0.1 0.04 0.01
+       vertex -0.1 0.032 0.01
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 0.008 0.02
+       vertex -0.1 0.008 0.03
+       vertex -0.1 0.016 0.03
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 0.016 0.03
+       vertex -0.1 0.016 0.02
+       vertex -0.1 0.008 0.02
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 0.016 0.02
+       vertex -0.1 0.016 0.03
+       vertex -0.1 0.024 0.03
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 0.024 0.03
+       vertex -0.1 0.024 0.02
+       vertex -0.1 0.016 0.02
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 0.024 0.02
+       vertex -0.1 0.024 0.03
+       vertex -0.1 0.032 0.03
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 0.032 0.03
+       vertex -0.1 0.032 0.02
+       vertex -0.1 0.024 0.02
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 0.032 0.02
+       vertex -0.1 0.032 0.03
+       vertex -0.1 0.04 0.03
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 0.04 0.03
+       vertex -0.1 0.04 0.02
+       vertex -0.1 0.032 0.02
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 0.008 0.03
+       vertex -0.1 0.008 0.04
+       vertex -0.1 0.016 0.04
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 0.016 0.04
+       vertex -0.1 0.016 0.03
+       vertex -0.1 0.008 0.03
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 0.016 0.03
+       vertex -0.1 0.016 0.04
+       vertex -0.1 0.024 0.04
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 0.024 0.04
+       vertex -0.1 0.024 0.03
+       vertex -0.1 0.016 0.03
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 0.024 0.03
+       vertex -0.1 0.024 0.04
+       vertex -0.1 0.032 0.04
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 0.032 0.04
+       vertex -0.1 0.032 0.03
+       vertex -0.1 0.024 0.03
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 0.032 0.03
+       vertex -0.1 0.032 0.04
+       vertex -0.1 0.04 0.04
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 0.04 0.04
+       vertex -0.1 0.04 0.03
+       vertex -0.1 0.032 0.03
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 0.008 0.04
+       vertex -0.1 0.008 0.05
+       vertex -0.1 0.016 0.05
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 0.016 0.05
+       vertex -0.1 0.016 0.04
+       vertex -0.1 0.008 0.04
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 0.016 0.04
+       vertex -0.1 0.016 0.05
+       vertex -0.1 0.024 0.05
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 0.024 0.05
+       vertex -0.1 0.024 0.04
+       vertex -0.1 0.016 0.04
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 0.024 0.04
+       vertex -0.1 0.024 0.05
+       vertex -0.1 0.032 0.05
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 0.032 0.05
+       vertex -0.1 0.032 0.04
+       vertex -0.1 0.024 0.04
+    endloop
+  endfacet
+  facet normal -1 0 0
+    outer loop
+       vertex -0.1 0.032 0.04
+       vertex -0.1 0.032 0.05
+       vertex -0.1 0.04 0.05
+    endloop
+  endfacet
+  facet normal -1 0 -0
+    outer loop
+       vertex -0.1 0.04 0.05
+       vertex -0.1 0.04 0.04
+       vertex -0.1 0.032 0.04
+    endloop
+  endfacet
+endsolid minX
+solid maxX
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.008 -0.05
+       vertex 0.1 0.016 -0.05
+       vertex 0.1 0.016 -0.04
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.016 -0.04
+       vertex 0.1 0.008 -0.04
+       vertex 0.1 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.016 -0.05
+       vertex 0.1 0.024 -0.05
+       vertex 0.1 0.024 -0.04
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.024 -0.04
+       vertex 0.1 0.016 -0.04
+       vertex 0.1 0.016 -0.05
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.024 -0.05
+       vertex 0.1 0.032 -0.05
+       vertex 0.1 0.032 -0.04
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.032 -0.04
+       vertex 0.1 0.024 -0.04
+       vertex 0.1 0.024 -0.05
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.032 -0.05
+       vertex 0.1 0.04 -0.05
+       vertex 0.1 0.04 -0.04
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.04 -0.04
+       vertex 0.1 0.032 -0.04
+       vertex 0.1 0.032 -0.05
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.008 -0.04
+       vertex 0.1 0.016 -0.04
+       vertex 0.1 0.016 -0.03
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.016 -0.03
+       vertex 0.1 0.008 -0.03
+       vertex 0.1 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.016 -0.04
+       vertex 0.1 0.024 -0.04
+       vertex 0.1 0.024 -0.03
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.024 -0.03
+       vertex 0.1 0.016 -0.03
+       vertex 0.1 0.016 -0.04
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.024 -0.04
+       vertex 0.1 0.032 -0.04
+       vertex 0.1 0.032 -0.03
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.032 -0.03
+       vertex 0.1 0.024 -0.03
+       vertex 0.1 0.024 -0.04
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.032 -0.04
+       vertex 0.1 0.04 -0.04
+       vertex 0.1 0.04 -0.03
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.04 -0.03
+       vertex 0.1 0.032 -0.03
+       vertex 0.1 0.032 -0.04
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.008 -0.03
+       vertex 0.1 0.016 -0.03
+       vertex 0.1 0.016 -0.02
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.016 -0.02
+       vertex 0.1 0.008 -0.02
+       vertex 0.1 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.016 -0.03
+       vertex 0.1 0.024 -0.03
+       vertex 0.1 0.024 -0.02
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.024 -0.02
+       vertex 0.1 0.016 -0.02
+       vertex 0.1 0.016 -0.03
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.024 -0.03
+       vertex 0.1 0.032 -0.03
+       vertex 0.1 0.032 -0.02
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.032 -0.02
+       vertex 0.1 0.024 -0.02
+       vertex 0.1 0.024 -0.03
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.032 -0.03
+       vertex 0.1 0.04 -0.03
+       vertex 0.1 0.04 -0.02
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.04 -0.02
+       vertex 0.1 0.032 -0.02
+       vertex 0.1 0.032 -0.03
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.008 -0.02
+       vertex 0.1 0.016 -0.02
+       vertex 0.1 0.016 -0.01
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.016 -0.01
+       vertex 0.1 0.008 -0.01
+       vertex 0.1 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.016 -0.02
+       vertex 0.1 0.024 -0.02
+       vertex 0.1 0.024 -0.01
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.024 -0.01
+       vertex 0.1 0.016 -0.01
+       vertex 0.1 0.016 -0.02
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.024 -0.02
+       vertex 0.1 0.032 -0.02
+       vertex 0.1 0.032 -0.01
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.032 -0.01
+       vertex 0.1 0.024 -0.01
+       vertex 0.1 0.024 -0.02
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.032 -0.02
+       vertex 0.1 0.04 -0.02
+       vertex 0.1 0.04 -0.01
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.04 -0.01
+       vertex 0.1 0.032 -0.01
+       vertex 0.1 0.032 -0.02
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.008 -0.01
+       vertex 0.1 0.016 -0.01
+       vertex 0.1 0.016 -2.891206e-19
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.016 -2.891206e-19
+       vertex 0.1 0.008 0
+       vertex 0.1 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.016 -0.01
+       vertex 0.1 0.024 -0.01
+       vertex 0.1 0.024 5.782412e-19
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.024 5.782412e-19
+       vertex 0.1 0.016 -2.891206e-19
+       vertex 0.1 0.016 -0.01
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.024 -0.01
+       vertex 0.1 0.032 -0.01
+       vertex 0.1 0.032 2.891206e-19
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.032 2.891206e-19
+       vertex 0.1 0.024 5.782412e-19
+       vertex 0.1 0.024 -0.01
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.032 -0.01
+       vertex 0.1 0.04 -0.01
+       vertex 0.1 0.04 0
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.04 0
+       vertex 0.1 0.032 2.891206e-19
+       vertex 0.1 0.032 -0.01
+    endloop
+  endfacet
+  facet normal 1 -0 0
+    outer loop
+       vertex 0.1 0.008 0
+       vertex 0.1 0.016 -2.891206e-19
+       vertex 0.1 0.016 0.01
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.016 0.01
+       vertex 0.1 0.008 0.01
+       vertex 0.1 0.008 0
+    endloop
+  endfacet
+  facet normal 1 0 -0
+    outer loop
+       vertex 0.1 0.024 5.782412e-19
+       vertex 0.1 0.024 0.01
+       vertex 0.1 0.016 0.01
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.016 0.01
+       vertex 0.1 0.016 -2.891206e-19
+       vertex 0.1 0.024 5.782412e-19
+    endloop
+  endfacet
+  facet normal 1 -0 0
+    outer loop
+       vertex 0.1 0.024 5.782412e-19
+       vertex 0.1 0.032 2.891206e-19
+       vertex 0.1 0.032 0.01
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.032 0.01
+       vertex 0.1 0.024 0.01
+       vertex 0.1 0.024 5.782412e-19
+    endloop
+  endfacet
+  facet normal 1 -0 0
+    outer loop
+       vertex 0.1 0.032 2.891206e-19
+       vertex 0.1 0.04 0
+       vertex 0.1 0.04 0.01
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.04 0.01
+       vertex 0.1 0.032 0.01
+       vertex 0.1 0.032 2.891206e-19
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.008 0.01
+       vertex 0.1 0.016 0.01
+       vertex 0.1 0.016 0.02
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.016 0.02
+       vertex 0.1 0.008 0.02
+       vertex 0.1 0.008 0.01
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.016 0.01
+       vertex 0.1 0.024 0.01
+       vertex 0.1 0.024 0.02
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.024 0.02
+       vertex 0.1 0.016 0.02
+       vertex 0.1 0.016 0.01
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.024 0.01
+       vertex 0.1 0.032 0.01
+       vertex 0.1 0.032 0.02
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.032 0.02
+       vertex 0.1 0.024 0.02
+       vertex 0.1 0.024 0.01
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.032 0.01
+       vertex 0.1 0.04 0.01
+       vertex 0.1 0.04 0.02
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.04 0.02
+       vertex 0.1 0.032 0.02
+       vertex 0.1 0.032 0.01
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.008 0.02
+       vertex 0.1 0.016 0.02
+       vertex 0.1 0.016 0.03
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.016 0.03
+       vertex 0.1 0.008 0.03
+       vertex 0.1 0.008 0.02
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.016 0.02
+       vertex 0.1 0.024 0.02
+       vertex 0.1 0.024 0.03
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.024 0.03
+       vertex 0.1 0.016 0.03
+       vertex 0.1 0.016 0.02
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.024 0.02
+       vertex 0.1 0.032 0.02
+       vertex 0.1 0.032 0.03
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.032 0.03
+       vertex 0.1 0.024 0.03
+       vertex 0.1 0.024 0.02
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.032 0.02
+       vertex 0.1 0.04 0.02
+       vertex 0.1 0.04 0.03
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.04 0.03
+       vertex 0.1 0.032 0.03
+       vertex 0.1 0.032 0.02
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.008 0.03
+       vertex 0.1 0.016 0.03
+       vertex 0.1 0.016 0.04
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.016 0.04
+       vertex 0.1 0.008 0.04
+       vertex 0.1 0.008 0.03
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.016 0.03
+       vertex 0.1 0.024 0.03
+       vertex 0.1 0.024 0.04
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.024 0.04
+       vertex 0.1 0.016 0.04
+       vertex 0.1 0.016 0.03
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.024 0.03
+       vertex 0.1 0.032 0.03
+       vertex 0.1 0.032 0.04
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.032 0.04
+       vertex 0.1 0.024 0.04
+       vertex 0.1 0.024 0.03
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.032 0.03
+       vertex 0.1 0.04 0.03
+       vertex 0.1 0.04 0.04
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.04 0.04
+       vertex 0.1 0.032 0.04
+       vertex 0.1 0.032 0.03
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.008 0.04
+       vertex 0.1 0.016 0.04
+       vertex 0.1 0.016 0.05
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.016 0.05
+       vertex 0.1 0.008 0.05
+       vertex 0.1 0.008 0.04
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.016 0.04
+       vertex 0.1 0.024 0.04
+       vertex 0.1 0.024 0.05
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.024 0.05
+       vertex 0.1 0.016 0.05
+       vertex 0.1 0.016 0.04
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.024 0.04
+       vertex 0.1 0.032 0.04
+       vertex 0.1 0.032 0.05
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.032 0.05
+       vertex 0.1 0.024 0.05
+       vertex 0.1 0.024 0.04
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.032 0.04
+       vertex 0.1 0.04 0.04
+       vertex 0.1 0.04 0.05
+    endloop
+  endfacet
+  facet normal 1 0 0
+    outer loop
+       vertex 0.1 0.04 0.05
+       vertex 0.1 0.032 0.05
+       vertex 0.1 0.032 0.04
+    endloop
+  endfacet
+endsolid maxX
+solid minZ
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.1 0.008 -0.05
+       vertex -0.1 0.016 -0.05
+       vertex -0.09333333 0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.09333333 0.016 -0.05
+       vertex -0.09333333 0.008 -0.05
+       vertex -0.1 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.1 0.016 -0.05
+       vertex -0.1 0.024 -0.05
+       vertex -0.09333333 0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.09333333 0.024 -0.05
+       vertex -0.09333333 0.016 -0.05
+       vertex -0.1 0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.1 0.024 -0.05
+       vertex -0.1 0.032 -0.05
+       vertex -0.09333333 0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.09333333 0.032 -0.05
+       vertex -0.09333333 0.024 -0.05
+       vertex -0.1 0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.1 0.032 -0.05
+       vertex -0.1 0.04 -0.05
+       vertex -0.09333333 0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.09333333 0.04 -0.05
+       vertex -0.09333333 0.032 -0.05
+       vertex -0.1 0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.09333333 0.008 -0.05
+       vertex -0.09333333 0.016 -0.05
+       vertex -0.08666667 0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.08666667 0.016 -0.05
+       vertex -0.08666667 0.008 -0.05
+       vertex -0.09333333 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.09333333 0.016 -0.05
+       vertex -0.09333333 0.024 -0.05
+       vertex -0.08666667 0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.08666667 0.024 -0.05
+       vertex -0.08666667 0.016 -0.05
+       vertex -0.09333333 0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.09333333 0.024 -0.05
+       vertex -0.09333333 0.032 -0.05
+       vertex -0.08666667 0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.08666667 0.032 -0.05
+       vertex -0.08666667 0.024 -0.05
+       vertex -0.09333333 0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.09333333 0.032 -0.05
+       vertex -0.09333333 0.04 -0.05
+       vertex -0.08666667 0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.08666667 0.04 -0.05
+       vertex -0.08666667 0.032 -0.05
+       vertex -0.09333333 0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.08666667 0.008 -0.05
+       vertex -0.08666667 0.016 -0.05
+       vertex -0.08 0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.08 0.016 -0.05
+       vertex -0.08 0.008 -0.05
+       vertex -0.08666667 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.08666667 0.016 -0.05
+       vertex -0.08666667 0.024 -0.05
+       vertex -0.08 0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.08 0.024 -0.05
+       vertex -0.08 0.016 -0.05
+       vertex -0.08666667 0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.08666667 0.024 -0.05
+       vertex -0.08666667 0.032 -0.05
+       vertex -0.08 0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.08 0.032 -0.05
+       vertex -0.08 0.024 -0.05
+       vertex -0.08666667 0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.08666667 0.032 -0.05
+       vertex -0.08666667 0.04 -0.05
+       vertex -0.08 0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.08 0.04 -0.05
+       vertex -0.08 0.032 -0.05
+       vertex -0.08666667 0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.08 0.008 -0.05
+       vertex -0.08 0.016 -0.05
+       vertex -0.07333333 0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.07333333 0.016 -0.05
+       vertex -0.07333333 0.008 -0.05
+       vertex -0.08 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.08 0.016 -0.05
+       vertex -0.08 0.024 -0.05
+       vertex -0.07333333 0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.07333333 0.024 -0.05
+       vertex -0.07333333 0.016 -0.05
+       vertex -0.08 0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.08 0.024 -0.05
+       vertex -0.08 0.032 -0.05
+       vertex -0.07333333 0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.07333333 0.032 -0.05
+       vertex -0.07333333 0.024 -0.05
+       vertex -0.08 0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.08 0.032 -0.05
+       vertex -0.08 0.04 -0.05
+       vertex -0.07333333 0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.07333333 0.04 -0.05
+       vertex -0.07333333 0.032 -0.05
+       vertex -0.08 0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.07333333 0.008 -0.05
+       vertex -0.07333333 0.016 -0.05
+       vertex -0.06666667 0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.06666667 0.016 -0.05
+       vertex -0.06666667 0.008 -0.05
+       vertex -0.07333333 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.07333333 0.016 -0.05
+       vertex -0.07333333 0.024 -0.05
+       vertex -0.06666667 0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.06666667 0.024 -0.05
+       vertex -0.06666667 0.016 -0.05
+       vertex -0.07333333 0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.07333333 0.024 -0.05
+       vertex -0.07333333 0.032 -0.05
+       vertex -0.06666667 0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.06666667 0.032 -0.05
+       vertex -0.06666667 0.024 -0.05
+       vertex -0.07333333 0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.07333333 0.032 -0.05
+       vertex -0.07333333 0.04 -0.05
+       vertex -0.06666667 0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.06666667 0.04 -0.05
+       vertex -0.06666667 0.032 -0.05
+       vertex -0.07333333 0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.06666667 0.008 -0.05
+       vertex -0.06666667 0.016 -0.05
+       vertex -0.06 0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.06 0.016 -0.05
+       vertex -0.06 0.008 -0.05
+       vertex -0.06666667 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.06666667 0.016 -0.05
+       vertex -0.06666667 0.024 -0.05
+       vertex -0.06 0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.06 0.024 -0.05
+       vertex -0.06 0.016 -0.05
+       vertex -0.06666667 0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.06666667 0.024 -0.05
+       vertex -0.06666667 0.032 -0.05
+       vertex -0.06 0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.06 0.032 -0.05
+       vertex -0.06 0.024 -0.05
+       vertex -0.06666667 0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.06666667 0.032 -0.05
+       vertex -0.06666667 0.04 -0.05
+       vertex -0.06 0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.06 0.04 -0.05
+       vertex -0.06 0.032 -0.05
+       vertex -0.06666667 0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.06 0.008 -0.05
+       vertex -0.06 0.016 -0.05
+       vertex -0.05333333 0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.05333333 0.016 -0.05
+       vertex -0.05333333 0.008 -0.05
+       vertex -0.06 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.06 0.016 -0.05
+       vertex -0.06 0.024 -0.05
+       vertex -0.05333333 0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.05333333 0.024 -0.05
+       vertex -0.05333333 0.016 -0.05
+       vertex -0.06 0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.06 0.024 -0.05
+       vertex -0.06 0.032 -0.05
+       vertex -0.05333333 0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.05333333 0.032 -0.05
+       vertex -0.05333333 0.024 -0.05
+       vertex -0.06 0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.06 0.032 -0.05
+       vertex -0.06 0.04 -0.05
+       vertex -0.05333333 0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.05333333 0.04 -0.05
+       vertex -0.05333333 0.032 -0.05
+       vertex -0.06 0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.05333333 0.008 -0.05
+       vertex -0.05333333 0.016 -0.05
+       vertex -0.04666667 0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.04666667 0.016 -0.05
+       vertex -0.04666667 0.008 -0.05
+       vertex -0.05333333 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.05333333 0.016 -0.05
+       vertex -0.05333333 0.024 -0.05
+       vertex -0.04666667 0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.04666667 0.024 -0.05
+       vertex -0.04666667 0.016 -0.05
+       vertex -0.05333333 0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.05333333 0.024 -0.05
+       vertex -0.05333333 0.032 -0.05
+       vertex -0.04666667 0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.04666667 0.032 -0.05
+       vertex -0.04666667 0.024 -0.05
+       vertex -0.05333333 0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.05333333 0.032 -0.05
+       vertex -0.05333333 0.04 -0.05
+       vertex -0.04666667 0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.04666667 0.04 -0.05
+       vertex -0.04666667 0.032 -0.05
+       vertex -0.05333333 0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.04666667 0.008 -0.05
+       vertex -0.04666667 0.016 -0.05
+       vertex -0.04 0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.04 0.016 -0.05
+       vertex -0.04 0.008 -0.05
+       vertex -0.04666667 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.04666667 0.016 -0.05
+       vertex -0.04666667 0.024 -0.05
+       vertex -0.04 0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.04 0.024 -0.05
+       vertex -0.04 0.016 -0.05
+       vertex -0.04666667 0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.04666667 0.024 -0.05
+       vertex -0.04666667 0.032 -0.05
+       vertex -0.04 0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.04 0.032 -0.05
+       vertex -0.04 0.024 -0.05
+       vertex -0.04666667 0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.04666667 0.032 -0.05
+       vertex -0.04666667 0.04 -0.05
+       vertex -0.04 0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.04 0.04 -0.05
+       vertex -0.04 0.032 -0.05
+       vertex -0.04666667 0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.04 0.008 -0.05
+       vertex -0.04 0.016 -0.05
+       vertex -0.03333333 0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.03333333 0.016 -0.05
+       vertex -0.03333333 0.008 -0.05
+       vertex -0.04 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.04 0.016 -0.05
+       vertex -0.04 0.024 -0.05
+       vertex -0.03333333 0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.03333333 0.024 -0.05
+       vertex -0.03333333 0.016 -0.05
+       vertex -0.04 0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.04 0.024 -0.05
+       vertex -0.04 0.032 -0.05
+       vertex -0.03333333 0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.03333333 0.032 -0.05
+       vertex -0.03333333 0.024 -0.05
+       vertex -0.04 0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.04 0.032 -0.05
+       vertex -0.04 0.04 -0.05
+       vertex -0.03333333 0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.03333333 0.04 -0.05
+       vertex -0.03333333 0.032 -0.05
+       vertex -0.04 0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.03333333 0.008 -0.05
+       vertex -0.03333333 0.016 -0.05
+       vertex -0.02666667 0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.02666667 0.016 -0.05
+       vertex -0.02666667 0.008 -0.05
+       vertex -0.03333333 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.03333333 0.016 -0.05
+       vertex -0.03333333 0.024 -0.05
+       vertex -0.02666667 0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.02666667 0.024 -0.05
+       vertex -0.02666667 0.016 -0.05
+       vertex -0.03333333 0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.03333333 0.024 -0.05
+       vertex -0.03333333 0.032 -0.05
+       vertex -0.02666667 0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.02666667 0.032 -0.05
+       vertex -0.02666667 0.024 -0.05
+       vertex -0.03333333 0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.03333333 0.032 -0.05
+       vertex -0.03333333 0.04 -0.05
+       vertex -0.02666667 0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.02666667 0.04 -0.05
+       vertex -0.02666667 0.032 -0.05
+       vertex -0.03333333 0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.02666667 0.008 -0.05
+       vertex -0.02666667 0.016 -0.05
+       vertex -0.02 0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.02 0.016 -0.05
+       vertex -0.02 0.008 -0.05
+       vertex -0.02666667 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.02666667 0.016 -0.05
+       vertex -0.02666667 0.024 -0.05
+       vertex -0.02 0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.02 0.024 -0.05
+       vertex -0.02 0.016 -0.05
+       vertex -0.02666667 0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.02666667 0.024 -0.05
+       vertex -0.02666667 0.032 -0.05
+       vertex -0.02 0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.02 0.032 -0.05
+       vertex -0.02 0.024 -0.05
+       vertex -0.02666667 0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.02666667 0.032 -0.05
+       vertex -0.02666667 0.04 -0.05
+       vertex -0.02 0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.02 0.04 -0.05
+       vertex -0.02 0.032 -0.05
+       vertex -0.02666667 0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.02 0.008 -0.05
+       vertex -0.02 0.016 -0.05
+       vertex -0.01333333 0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.01333333 0.016 -0.05
+       vertex -0.01333333 0.008 -0.05
+       vertex -0.02 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.02 0.016 -0.05
+       vertex -0.02 0.024 -0.05
+       vertex -0.01333333 0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.01333333 0.024 -0.05
+       vertex -0.01333333 0.016 -0.05
+       vertex -0.02 0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.02 0.024 -0.05
+       vertex -0.02 0.032 -0.05
+       vertex -0.01333333 0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.01333333 0.032 -0.05
+       vertex -0.01333333 0.024 -0.05
+       vertex -0.02 0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.02 0.032 -0.05
+       vertex -0.02 0.04 -0.05
+       vertex -0.01333333 0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.01333333 0.04 -0.05
+       vertex -0.01333333 0.032 -0.05
+       vertex -0.02 0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.01333333 0.008 -0.05
+       vertex -0.01333333 0.016 -0.05
+       vertex -0.006666667 0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.006666667 0.016 -0.05
+       vertex -0.006666667 0.008 -0.05
+       vertex -0.01333333 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.01333333 0.016 -0.05
+       vertex -0.01333333 0.024 -0.05
+       vertex -0.006666667 0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.006666667 0.024 -0.05
+       vertex -0.006666667 0.016 -0.05
+       vertex -0.01333333 0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.01333333 0.024 -0.05
+       vertex -0.01333333 0.032 -0.05
+       vertex -0.006666667 0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.006666667 0.032 -0.05
+       vertex -0.006666667 0.024 -0.05
+       vertex -0.01333333 0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.01333333 0.032 -0.05
+       vertex -0.01333333 0.04 -0.05
+       vertex -0.006666667 0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex -0.006666667 0.04 -0.05
+       vertex -0.006666667 0.032 -0.05
+       vertex -0.01333333 0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.006666667 0.008 -0.05
+       vertex -0.006666667 0.016 -0.05
+       vertex 0 0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0 0.016 -0.05
+       vertex 0 0.008 -0.05
+       vertex -0.006666667 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.006666667 0.016 -0.05
+       vertex -0.006666667 0.024 -0.05
+       vertex 0 0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0 0.024 -0.05
+       vertex 0 0.016 -0.05
+       vertex -0.006666667 0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.006666667 0.024 -0.05
+       vertex -0.006666667 0.032 -0.05
+       vertex 0 0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0 0.032 -0.05
+       vertex 0 0.024 -0.05
+       vertex -0.006666667 0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex -0.006666667 0.032 -0.05
+       vertex -0.006666667 0.04 -0.05
+       vertex 0 0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0 0.04 -0.05
+       vertex 0 0.032 -0.05
+       vertex -0.006666667 0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0 0.008 -0.05
+       vertex 0 0.016 -0.05
+       vertex 0.006666667 0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.006666667 0.016 -0.05
+       vertex 0.006666667 0.008 -0.05
+       vertex 0 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0 0.016 -0.05
+       vertex 0 0.024 -0.05
+       vertex 0.006666667 0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.006666667 0.024 -0.05
+       vertex 0.006666667 0.016 -0.05
+       vertex 0 0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0 0.024 -0.05
+       vertex 0 0.032 -0.05
+       vertex 0.006666667 0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.006666667 0.032 -0.05
+       vertex 0.006666667 0.024 -0.05
+       vertex 0 0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0 0.032 -0.05
+       vertex 0 0.04 -0.05
+       vertex 0.006666667 0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.006666667 0.04 -0.05
+       vertex 0.006666667 0.032 -0.05
+       vertex 0 0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.006666667 0.008 -0.05
+       vertex 0.006666667 0.016 -0.05
+       vertex 0.01333333 0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.01333333 0.016 -0.05
+       vertex 0.01333333 0.008 -0.05
+       vertex 0.006666667 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.006666667 0.016 -0.05
+       vertex 0.006666667 0.024 -0.05
+       vertex 0.01333333 0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.01333333 0.024 -0.05
+       vertex 0.01333333 0.016 -0.05
+       vertex 0.006666667 0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.006666667 0.024 -0.05
+       vertex 0.006666667 0.032 -0.05
+       vertex 0.01333333 0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.01333333 0.032 -0.05
+       vertex 0.01333333 0.024 -0.05
+       vertex 0.006666667 0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.006666667 0.032 -0.05
+       vertex 0.006666667 0.04 -0.05
+       vertex 0.01333333 0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.01333333 0.04 -0.05
+       vertex 0.01333333 0.032 -0.05
+       vertex 0.006666667 0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.01333333 0.008 -0.05
+       vertex 0.01333333 0.016 -0.05
+       vertex 0.02 0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.02 0.016 -0.05
+       vertex 0.02 0.008 -0.05
+       vertex 0.01333333 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.01333333 0.016 -0.05
+       vertex 0.01333333 0.024 -0.05
+       vertex 0.02 0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.02 0.024 -0.05
+       vertex 0.02 0.016 -0.05
+       vertex 0.01333333 0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.01333333 0.024 -0.05
+       vertex 0.01333333 0.032 -0.05
+       vertex 0.02 0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.02 0.032 -0.05
+       vertex 0.02 0.024 -0.05
+       vertex 0.01333333 0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.01333333 0.032 -0.05
+       vertex 0.01333333 0.04 -0.05
+       vertex 0.02 0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.02 0.04 -0.05
+       vertex 0.02 0.032 -0.05
+       vertex 0.01333333 0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.02 0.008 -0.05
+       vertex 0.02 0.016 -0.05
+       vertex 0.02666667 0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.02666667 0.016 -0.05
+       vertex 0.02666667 0.008 -0.05
+       vertex 0.02 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.02 0.016 -0.05
+       vertex 0.02 0.024 -0.05
+       vertex 0.02666667 0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.02666667 0.024 -0.05
+       vertex 0.02666667 0.016 -0.05
+       vertex 0.02 0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.02 0.024 -0.05
+       vertex 0.02 0.032 -0.05
+       vertex 0.02666667 0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.02666667 0.032 -0.05
+       vertex 0.02666667 0.024 -0.05
+       vertex 0.02 0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.02 0.032 -0.05
+       vertex 0.02 0.04 -0.05
+       vertex 0.02666667 0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.02666667 0.04 -0.05
+       vertex 0.02666667 0.032 -0.05
+       vertex 0.02 0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.02666667 0.008 -0.05
+       vertex 0.02666667 0.016 -0.05
+       vertex 0.03333333 0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.03333333 0.016 -0.05
+       vertex 0.03333333 0.008 -0.05
+       vertex 0.02666667 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.02666667 0.016 -0.05
+       vertex 0.02666667 0.024 -0.05
+       vertex 0.03333333 0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.03333333 0.024 -0.05
+       vertex 0.03333333 0.016 -0.05
+       vertex 0.02666667 0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.02666667 0.024 -0.05
+       vertex 0.02666667 0.032 -0.05
+       vertex 0.03333333 0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.03333333 0.032 -0.05
+       vertex 0.03333333 0.024 -0.05
+       vertex 0.02666667 0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.02666667 0.032 -0.05
+       vertex 0.02666667 0.04 -0.05
+       vertex 0.03333333 0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.03333333 0.04 -0.05
+       vertex 0.03333333 0.032 -0.05
+       vertex 0.02666667 0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.03333333 0.008 -0.05
+       vertex 0.03333333 0.016 -0.05
+       vertex 0.04 0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.04 0.016 -0.05
+       vertex 0.04 0.008 -0.05
+       vertex 0.03333333 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.03333333 0.016 -0.05
+       vertex 0.03333333 0.024 -0.05
+       vertex 0.04 0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.04 0.024 -0.05
+       vertex 0.04 0.016 -0.05
+       vertex 0.03333333 0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.03333333 0.024 -0.05
+       vertex 0.03333333 0.032 -0.05
+       vertex 0.04 0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.04 0.032 -0.05
+       vertex 0.04 0.024 -0.05
+       vertex 0.03333333 0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.03333333 0.032 -0.05
+       vertex 0.03333333 0.04 -0.05
+       vertex 0.04 0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.04 0.04 -0.05
+       vertex 0.04 0.032 -0.05
+       vertex 0.03333333 0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.04 0.008 -0.05
+       vertex 0.04 0.016 -0.05
+       vertex 0.04666667 0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.04666667 0.016 -0.05
+       vertex 0.04666667 0.008 -0.05
+       vertex 0.04 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.04 0.016 -0.05
+       vertex 0.04 0.024 -0.05
+       vertex 0.04666667 0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.04666667 0.024 -0.05
+       vertex 0.04666667 0.016 -0.05
+       vertex 0.04 0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.04 0.024 -0.05
+       vertex 0.04 0.032 -0.05
+       vertex 0.04666667 0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.04666667 0.032 -0.05
+       vertex 0.04666667 0.024 -0.05
+       vertex 0.04 0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.04 0.032 -0.05
+       vertex 0.04 0.04 -0.05
+       vertex 0.04666667 0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.04666667 0.04 -0.05
+       vertex 0.04666667 0.032 -0.05
+       vertex 0.04 0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.04666667 0.008 -0.05
+       vertex 0.04666667 0.016 -0.05
+       vertex 0.05333333 0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.05333333 0.016 -0.05
+       vertex 0.05333333 0.008 -0.05
+       vertex 0.04666667 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.04666667 0.016 -0.05
+       vertex 0.04666667 0.024 -0.05
+       vertex 0.05333333 0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.05333333 0.024 -0.05
+       vertex 0.05333333 0.016 -0.05
+       vertex 0.04666667 0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.04666667 0.024 -0.05
+       vertex 0.04666667 0.032 -0.05
+       vertex 0.05333333 0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.05333333 0.032 -0.05
+       vertex 0.05333333 0.024 -0.05
+       vertex 0.04666667 0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.04666667 0.032 -0.05
+       vertex 0.04666667 0.04 -0.05
+       vertex 0.05333333 0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.05333333 0.04 -0.05
+       vertex 0.05333333 0.032 -0.05
+       vertex 0.04666667 0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.05333333 0.008 -0.05
+       vertex 0.05333333 0.016 -0.05
+       vertex 0.06 0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.06 0.016 -0.05
+       vertex 0.06 0.008 -0.05
+       vertex 0.05333333 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.05333333 0.016 -0.05
+       vertex 0.05333333 0.024 -0.05
+       vertex 0.06 0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.06 0.024 -0.05
+       vertex 0.06 0.016 -0.05
+       vertex 0.05333333 0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.05333333 0.024 -0.05
+       vertex 0.05333333 0.032 -0.05
+       vertex 0.06 0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.06 0.032 -0.05
+       vertex 0.06 0.024 -0.05
+       vertex 0.05333333 0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.05333333 0.032 -0.05
+       vertex 0.05333333 0.04 -0.05
+       vertex 0.06 0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.06 0.04 -0.05
+       vertex 0.06 0.032 -0.05
+       vertex 0.05333333 0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.06 0.008 -0.05
+       vertex 0.06 0.016 -0.05
+       vertex 0.06666667 0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.06666667 0.016 -0.05
+       vertex 0.06666667 0.008 -0.05
+       vertex 0.06 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.06 0.016 -0.05
+       vertex 0.06 0.024 -0.05
+       vertex 0.06666667 0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.06666667 0.024 -0.05
+       vertex 0.06666667 0.016 -0.05
+       vertex 0.06 0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.06 0.024 -0.05
+       vertex 0.06 0.032 -0.05
+       vertex 0.06666667 0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.06666667 0.032 -0.05
+       vertex 0.06666667 0.024 -0.05
+       vertex 0.06 0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.06 0.032 -0.05
+       vertex 0.06 0.04 -0.05
+       vertex 0.06666667 0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.06666667 0.04 -0.05
+       vertex 0.06666667 0.032 -0.05
+       vertex 0.06 0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.06666667 0.008 -0.05
+       vertex 0.06666667 0.016 -0.05
+       vertex 0.07333333 0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.07333333 0.016 -0.05
+       vertex 0.07333333 0.008 -0.05
+       vertex 0.06666667 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.06666667 0.016 -0.05
+       vertex 0.06666667 0.024 -0.05
+       vertex 0.07333333 0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.07333333 0.024 -0.05
+       vertex 0.07333333 0.016 -0.05
+       vertex 0.06666667 0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.06666667 0.024 -0.05
+       vertex 0.06666667 0.032 -0.05
+       vertex 0.07333333 0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.07333333 0.032 -0.05
+       vertex 0.07333333 0.024 -0.05
+       vertex 0.06666667 0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.06666667 0.032 -0.05
+       vertex 0.06666667 0.04 -0.05
+       vertex 0.07333333 0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.07333333 0.04 -0.05
+       vertex 0.07333333 0.032 -0.05
+       vertex 0.06666667 0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.07333333 0.008 -0.05
+       vertex 0.07333333 0.016 -0.05
+       vertex 0.08 0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.08 0.016 -0.05
+       vertex 0.08 0.008 -0.05
+       vertex 0.07333333 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.07333333 0.016 -0.05
+       vertex 0.07333333 0.024 -0.05
+       vertex 0.08 0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.08 0.024 -0.05
+       vertex 0.08 0.016 -0.05
+       vertex 0.07333333 0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.07333333 0.024 -0.05
+       vertex 0.07333333 0.032 -0.05
+       vertex 0.08 0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.08 0.032 -0.05
+       vertex 0.08 0.024 -0.05
+       vertex 0.07333333 0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.07333333 0.032 -0.05
+       vertex 0.07333333 0.04 -0.05
+       vertex 0.08 0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.08 0.04 -0.05
+       vertex 0.08 0.032 -0.05
+       vertex 0.07333333 0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.08 0.008 -0.05
+       vertex 0.08 0.016 -0.05
+       vertex 0.08666667 0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.08666667 0.016 -0.05
+       vertex 0.08666667 0.008 -0.05
+       vertex 0.08 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.08 0.016 -0.05
+       vertex 0.08 0.024 -0.05
+       vertex 0.08666667 0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.08666667 0.024 -0.05
+       vertex 0.08666667 0.016 -0.05
+       vertex 0.08 0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.08 0.024 -0.05
+       vertex 0.08 0.032 -0.05
+       vertex 0.08666667 0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.08666667 0.032 -0.05
+       vertex 0.08666667 0.024 -0.05
+       vertex 0.08 0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.08 0.032 -0.05
+       vertex 0.08 0.04 -0.05
+       vertex 0.08666667 0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.08666667 0.04 -0.05
+       vertex 0.08666667 0.032 -0.05
+       vertex 0.08 0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.08666667 0.008 -0.05
+       vertex 0.08666667 0.016 -0.05
+       vertex 0.09333333 0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.09333333 0.016 -0.05
+       vertex 0.09333333 0.008 -0.05
+       vertex 0.08666667 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.08666667 0.016 -0.05
+       vertex 0.08666667 0.024 -0.05
+       vertex 0.09333333 0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.09333333 0.024 -0.05
+       vertex 0.09333333 0.016 -0.05
+       vertex 0.08666667 0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.08666667 0.024 -0.05
+       vertex 0.08666667 0.032 -0.05
+       vertex 0.09333333 0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.09333333 0.032 -0.05
+       vertex 0.09333333 0.024 -0.05
+       vertex 0.08666667 0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.08666667 0.032 -0.05
+       vertex 0.08666667 0.04 -0.05
+       vertex 0.09333333 0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.09333333 0.04 -0.05
+       vertex 0.09333333 0.032 -0.05
+       vertex 0.08666667 0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.09333333 0.008 -0.05
+       vertex 0.09333333 0.016 -0.05
+       vertex 0.1 0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.1 0.016 -0.05
+       vertex 0.1 0.008 -0.05
+       vertex 0.09333333 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.09333333 0.016 -0.05
+       vertex 0.09333333 0.024 -0.05
+       vertex 0.1 0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.1 0.024 -0.05
+       vertex 0.1 0.016 -0.05
+       vertex 0.09333333 0.016 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.09333333 0.024 -0.05
+       vertex 0.09333333 0.032 -0.05
+       vertex 0.1 0.032 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.1 0.032 -0.05
+       vertex 0.1 0.024 -0.05
+       vertex 0.09333333 0.024 -0.05
+    endloop
+  endfacet
+  facet normal 0 0 -1
+    outer loop
+       vertex 0.09333333 0.032 -0.05
+       vertex 0.09333333 0.04 -0.05
+       vertex 0.1 0.04 -0.05
+    endloop
+  endfacet
+  facet normal 0 -0 -1
+    outer loop
+       vertex 0.1 0.04 -0.05
+       vertex 0.1 0.032 -0.05
+       vertex 0.09333333 0.032 -0.05
+    endloop
+  endfacet
+endsolid minZ
+solid maxZ
+  facet normal 0 0 1
+    outer loop
+       vertex -0.1 0.008 0.05
+       vertex -0.09333333 0.008 0.05
+       vertex -0.09333333 0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.09333333 0.016 0.05
+       vertex -0.1 0.016 0.05
+       vertex -0.1 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.1 0.016 0.05
+       vertex -0.09333333 0.016 0.05
+       vertex -0.09333333 0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.09333333 0.024 0.05
+       vertex -0.1 0.024 0.05
+       vertex -0.1 0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.1 0.024 0.05
+       vertex -0.09333333 0.024 0.05
+       vertex -0.09333333 0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.09333333 0.032 0.05
+       vertex -0.1 0.032 0.05
+       vertex -0.1 0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.1 0.032 0.05
+       vertex -0.09333333 0.032 0.05
+       vertex -0.09333333 0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.09333333 0.04 0.05
+       vertex -0.1 0.04 0.05
+       vertex -0.1 0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.09333333 0.008 0.05
+       vertex -0.08666667 0.008 0.05
+       vertex -0.08666667 0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.08666667 0.016 0.05
+       vertex -0.09333333 0.016 0.05
+       vertex -0.09333333 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.09333333 0.016 0.05
+       vertex -0.08666667 0.016 0.05
+       vertex -0.08666667 0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.08666667 0.024 0.05
+       vertex -0.09333333 0.024 0.05
+       vertex -0.09333333 0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.09333333 0.024 0.05
+       vertex -0.08666667 0.024 0.05
+       vertex -0.08666667 0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.08666667 0.032 0.05
+       vertex -0.09333333 0.032 0.05
+       vertex -0.09333333 0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.09333333 0.032 0.05
+       vertex -0.08666667 0.032 0.05
+       vertex -0.08666667 0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.08666667 0.04 0.05
+       vertex -0.09333333 0.04 0.05
+       vertex -0.09333333 0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.08666667 0.008 0.05
+       vertex -0.08 0.008 0.05
+       vertex -0.08 0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.08 0.016 0.05
+       vertex -0.08666667 0.016 0.05
+       vertex -0.08666667 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.08666667 0.016 0.05
+       vertex -0.08 0.016 0.05
+       vertex -0.08 0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.08 0.024 0.05
+       vertex -0.08666667 0.024 0.05
+       vertex -0.08666667 0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.08666667 0.024 0.05
+       vertex -0.08 0.024 0.05
+       vertex -0.08 0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.08 0.032 0.05
+       vertex -0.08666667 0.032 0.05
+       vertex -0.08666667 0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.08666667 0.032 0.05
+       vertex -0.08 0.032 0.05
+       vertex -0.08 0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.08 0.04 0.05
+       vertex -0.08666667 0.04 0.05
+       vertex -0.08666667 0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.08 0.008 0.05
+       vertex -0.07333333 0.008 0.05
+       vertex -0.07333333 0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.07333333 0.016 0.05
+       vertex -0.08 0.016 0.05
+       vertex -0.08 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.08 0.016 0.05
+       vertex -0.07333333 0.016 0.05
+       vertex -0.07333333 0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.07333333 0.024 0.05
+       vertex -0.08 0.024 0.05
+       vertex -0.08 0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.08 0.024 0.05
+       vertex -0.07333333 0.024 0.05
+       vertex -0.07333333 0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.07333333 0.032 0.05
+       vertex -0.08 0.032 0.05
+       vertex -0.08 0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.08 0.032 0.05
+       vertex -0.07333333 0.032 0.05
+       vertex -0.07333333 0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.07333333 0.04 0.05
+       vertex -0.08 0.04 0.05
+       vertex -0.08 0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.07333333 0.008 0.05
+       vertex -0.06666667 0.008 0.05
+       vertex -0.06666667 0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.06666667 0.016 0.05
+       vertex -0.07333333 0.016 0.05
+       vertex -0.07333333 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.07333333 0.016 0.05
+       vertex -0.06666667 0.016 0.05
+       vertex -0.06666667 0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.06666667 0.024 0.05
+       vertex -0.07333333 0.024 0.05
+       vertex -0.07333333 0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.07333333 0.024 0.05
+       vertex -0.06666667 0.024 0.05
+       vertex -0.06666667 0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.06666667 0.032 0.05
+       vertex -0.07333333 0.032 0.05
+       vertex -0.07333333 0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.07333333 0.032 0.05
+       vertex -0.06666667 0.032 0.05
+       vertex -0.06666667 0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.06666667 0.04 0.05
+       vertex -0.07333333 0.04 0.05
+       vertex -0.07333333 0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.06666667 0.008 0.05
+       vertex -0.06 0.008 0.05
+       vertex -0.06 0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.06 0.016 0.05
+       vertex -0.06666667 0.016 0.05
+       vertex -0.06666667 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.06666667 0.016 0.05
+       vertex -0.06 0.016 0.05
+       vertex -0.06 0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.06 0.024 0.05
+       vertex -0.06666667 0.024 0.05
+       vertex -0.06666667 0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.06666667 0.024 0.05
+       vertex -0.06 0.024 0.05
+       vertex -0.06 0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.06 0.032 0.05
+       vertex -0.06666667 0.032 0.05
+       vertex -0.06666667 0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.06666667 0.032 0.05
+       vertex -0.06 0.032 0.05
+       vertex -0.06 0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.06 0.04 0.05
+       vertex -0.06666667 0.04 0.05
+       vertex -0.06666667 0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.06 0.008 0.05
+       vertex -0.05333333 0.008 0.05
+       vertex -0.05333333 0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.05333333 0.016 0.05
+       vertex -0.06 0.016 0.05
+       vertex -0.06 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.06 0.016 0.05
+       vertex -0.05333333 0.016 0.05
+       vertex -0.05333333 0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.05333333 0.024 0.05
+       vertex -0.06 0.024 0.05
+       vertex -0.06 0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.06 0.024 0.05
+       vertex -0.05333333 0.024 0.05
+       vertex -0.05333333 0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.05333333 0.032 0.05
+       vertex -0.06 0.032 0.05
+       vertex -0.06 0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.06 0.032 0.05
+       vertex -0.05333333 0.032 0.05
+       vertex -0.05333333 0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.05333333 0.04 0.05
+       vertex -0.06 0.04 0.05
+       vertex -0.06 0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.05333333 0.008 0.05
+       vertex -0.04666667 0.008 0.05
+       vertex -0.04666667 0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.04666667 0.016 0.05
+       vertex -0.05333333 0.016 0.05
+       vertex -0.05333333 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.05333333 0.016 0.05
+       vertex -0.04666667 0.016 0.05
+       vertex -0.04666667 0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.04666667 0.024 0.05
+       vertex -0.05333333 0.024 0.05
+       vertex -0.05333333 0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.05333333 0.024 0.05
+       vertex -0.04666667 0.024 0.05
+       vertex -0.04666667 0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.04666667 0.032 0.05
+       vertex -0.05333333 0.032 0.05
+       vertex -0.05333333 0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.05333333 0.032 0.05
+       vertex -0.04666667 0.032 0.05
+       vertex -0.04666667 0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.04666667 0.04 0.05
+       vertex -0.05333333 0.04 0.05
+       vertex -0.05333333 0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.04666667 0.008 0.05
+       vertex -0.04 0.008 0.05
+       vertex -0.04 0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.04 0.016 0.05
+       vertex -0.04666667 0.016 0.05
+       vertex -0.04666667 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.04666667 0.016 0.05
+       vertex -0.04 0.016 0.05
+       vertex -0.04 0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.04 0.024 0.05
+       vertex -0.04666667 0.024 0.05
+       vertex -0.04666667 0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.04666667 0.024 0.05
+       vertex -0.04 0.024 0.05
+       vertex -0.04 0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.04 0.032 0.05
+       vertex -0.04666667 0.032 0.05
+       vertex -0.04666667 0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.04666667 0.032 0.05
+       vertex -0.04 0.032 0.05
+       vertex -0.04 0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.04 0.04 0.05
+       vertex -0.04666667 0.04 0.05
+       vertex -0.04666667 0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.04 0.008 0.05
+       vertex -0.03333333 0.008 0.05
+       vertex -0.03333333 0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.03333333 0.016 0.05
+       vertex -0.04 0.016 0.05
+       vertex -0.04 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.04 0.016 0.05
+       vertex -0.03333333 0.016 0.05
+       vertex -0.03333333 0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.03333333 0.024 0.05
+       vertex -0.04 0.024 0.05
+       vertex -0.04 0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.04 0.024 0.05
+       vertex -0.03333333 0.024 0.05
+       vertex -0.03333333 0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.03333333 0.032 0.05
+       vertex -0.04 0.032 0.05
+       vertex -0.04 0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.04 0.032 0.05
+       vertex -0.03333333 0.032 0.05
+       vertex -0.03333333 0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.03333333 0.04 0.05
+       vertex -0.04 0.04 0.05
+       vertex -0.04 0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.03333333 0.008 0.05
+       vertex -0.02666667 0.008 0.05
+       vertex -0.02666667 0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.02666667 0.016 0.05
+       vertex -0.03333333 0.016 0.05
+       vertex -0.03333333 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.03333333 0.016 0.05
+       vertex -0.02666667 0.016 0.05
+       vertex -0.02666667 0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.02666667 0.024 0.05
+       vertex -0.03333333 0.024 0.05
+       vertex -0.03333333 0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.03333333 0.024 0.05
+       vertex -0.02666667 0.024 0.05
+       vertex -0.02666667 0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.02666667 0.032 0.05
+       vertex -0.03333333 0.032 0.05
+       vertex -0.03333333 0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.03333333 0.032 0.05
+       vertex -0.02666667 0.032 0.05
+       vertex -0.02666667 0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.02666667 0.04 0.05
+       vertex -0.03333333 0.04 0.05
+       vertex -0.03333333 0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.02666667 0.008 0.05
+       vertex -0.02 0.008 0.05
+       vertex -0.02 0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.02 0.016 0.05
+       vertex -0.02666667 0.016 0.05
+       vertex -0.02666667 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.02666667 0.016 0.05
+       vertex -0.02 0.016 0.05
+       vertex -0.02 0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.02 0.024 0.05
+       vertex -0.02666667 0.024 0.05
+       vertex -0.02666667 0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.02666667 0.024 0.05
+       vertex -0.02 0.024 0.05
+       vertex -0.02 0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.02 0.032 0.05
+       vertex -0.02666667 0.032 0.05
+       vertex -0.02666667 0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.02666667 0.032 0.05
+       vertex -0.02 0.032 0.05
+       vertex -0.02 0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.02 0.04 0.05
+       vertex -0.02666667 0.04 0.05
+       vertex -0.02666667 0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.02 0.008 0.05
+       vertex -0.01333333 0.008 0.05
+       vertex -0.01333333 0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.01333333 0.016 0.05
+       vertex -0.02 0.016 0.05
+       vertex -0.02 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.02 0.016 0.05
+       vertex -0.01333333 0.016 0.05
+       vertex -0.01333333 0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.01333333 0.024 0.05
+       vertex -0.02 0.024 0.05
+       vertex -0.02 0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.02 0.024 0.05
+       vertex -0.01333333 0.024 0.05
+       vertex -0.01333333 0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.01333333 0.032 0.05
+       vertex -0.02 0.032 0.05
+       vertex -0.02 0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.02 0.032 0.05
+       vertex -0.01333333 0.032 0.05
+       vertex -0.01333333 0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.01333333 0.04 0.05
+       vertex -0.02 0.04 0.05
+       vertex -0.02 0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.01333333 0.008 0.05
+       vertex -0.006666667 0.008 0.05
+       vertex -0.006666667 0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.006666667 0.016 0.05
+       vertex -0.01333333 0.016 0.05
+       vertex -0.01333333 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.01333333 0.016 0.05
+       vertex -0.006666667 0.016 0.05
+       vertex -0.006666667 0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.006666667 0.024 0.05
+       vertex -0.01333333 0.024 0.05
+       vertex -0.01333333 0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.01333333 0.024 0.05
+       vertex -0.006666667 0.024 0.05
+       vertex -0.006666667 0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.006666667 0.032 0.05
+       vertex -0.01333333 0.032 0.05
+       vertex -0.01333333 0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.01333333 0.032 0.05
+       vertex -0.006666667 0.032 0.05
+       vertex -0.006666667 0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.006666667 0.04 0.05
+       vertex -0.01333333 0.04 0.05
+       vertex -0.01333333 0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.006666667 0.008 0.05
+       vertex 0 0.008 0.05
+       vertex 0 0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0 0.016 0.05
+       vertex -0.006666667 0.016 0.05
+       vertex -0.006666667 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.006666667 0.016 0.05
+       vertex 0 0.016 0.05
+       vertex 0 0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0 0.024 0.05
+       vertex -0.006666667 0.024 0.05
+       vertex -0.006666667 0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.006666667 0.024 0.05
+       vertex 0 0.024 0.05
+       vertex 0 0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0 0.032 0.05
+       vertex -0.006666667 0.032 0.05
+       vertex -0.006666667 0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex -0.006666667 0.032 0.05
+       vertex 0 0.032 0.05
+       vertex 0 0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0 0.04 0.05
+       vertex -0.006666667 0.04 0.05
+       vertex -0.006666667 0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0 0.008 0.05
+       vertex 0.006666667 0.008 0.05
+       vertex 0.006666667 0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.006666667 0.016 0.05
+       vertex 0 0.016 0.05
+       vertex 0 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0 0.016 0.05
+       vertex 0.006666667 0.016 0.05
+       vertex 0.006666667 0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.006666667 0.024 0.05
+       vertex 0 0.024 0.05
+       vertex 0 0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0 0.024 0.05
+       vertex 0.006666667 0.024 0.05
+       vertex 0.006666667 0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.006666667 0.032 0.05
+       vertex 0 0.032 0.05
+       vertex 0 0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0 0.032 0.05
+       vertex 0.006666667 0.032 0.05
+       vertex 0.006666667 0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.006666667 0.04 0.05
+       vertex 0 0.04 0.05
+       vertex 0 0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.006666667 0.008 0.05
+       vertex 0.01333333 0.008 0.05
+       vertex 0.01333333 0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.01333333 0.016 0.05
+       vertex 0.006666667 0.016 0.05
+       vertex 0.006666667 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.006666667 0.016 0.05
+       vertex 0.01333333 0.016 0.05
+       vertex 0.01333333 0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.01333333 0.024 0.05
+       vertex 0.006666667 0.024 0.05
+       vertex 0.006666667 0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.006666667 0.024 0.05
+       vertex 0.01333333 0.024 0.05
+       vertex 0.01333333 0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.01333333 0.032 0.05
+       vertex 0.006666667 0.032 0.05
+       vertex 0.006666667 0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.006666667 0.032 0.05
+       vertex 0.01333333 0.032 0.05
+       vertex 0.01333333 0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.01333333 0.04 0.05
+       vertex 0.006666667 0.04 0.05
+       vertex 0.006666667 0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.01333333 0.008 0.05
+       vertex 0.02 0.008 0.05
+       vertex 0.02 0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.02 0.016 0.05
+       vertex 0.01333333 0.016 0.05
+       vertex 0.01333333 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.01333333 0.016 0.05
+       vertex 0.02 0.016 0.05
+       vertex 0.02 0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.02 0.024 0.05
+       vertex 0.01333333 0.024 0.05
+       vertex 0.01333333 0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.01333333 0.024 0.05
+       vertex 0.02 0.024 0.05
+       vertex 0.02 0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.02 0.032 0.05
+       vertex 0.01333333 0.032 0.05
+       vertex 0.01333333 0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.01333333 0.032 0.05
+       vertex 0.02 0.032 0.05
+       vertex 0.02 0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.02 0.04 0.05
+       vertex 0.01333333 0.04 0.05
+       vertex 0.01333333 0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.02 0.008 0.05
+       vertex 0.02666667 0.008 0.05
+       vertex 0.02666667 0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.02666667 0.016 0.05
+       vertex 0.02 0.016 0.05
+       vertex 0.02 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.02 0.016 0.05
+       vertex 0.02666667 0.016 0.05
+       vertex 0.02666667 0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.02666667 0.024 0.05
+       vertex 0.02 0.024 0.05
+       vertex 0.02 0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.02 0.024 0.05
+       vertex 0.02666667 0.024 0.05
+       vertex 0.02666667 0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.02666667 0.032 0.05
+       vertex 0.02 0.032 0.05
+       vertex 0.02 0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.02 0.032 0.05
+       vertex 0.02666667 0.032 0.05
+       vertex 0.02666667 0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.02666667 0.04 0.05
+       vertex 0.02 0.04 0.05
+       vertex 0.02 0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.02666667 0.008 0.05
+       vertex 0.03333333 0.008 0.05
+       vertex 0.03333333 0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.03333333 0.016 0.05
+       vertex 0.02666667 0.016 0.05
+       vertex 0.02666667 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.02666667 0.016 0.05
+       vertex 0.03333333 0.016 0.05
+       vertex 0.03333333 0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.03333333 0.024 0.05
+       vertex 0.02666667 0.024 0.05
+       vertex 0.02666667 0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.02666667 0.024 0.05
+       vertex 0.03333333 0.024 0.05
+       vertex 0.03333333 0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.03333333 0.032 0.05
+       vertex 0.02666667 0.032 0.05
+       vertex 0.02666667 0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.02666667 0.032 0.05
+       vertex 0.03333333 0.032 0.05
+       vertex 0.03333333 0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.03333333 0.04 0.05
+       vertex 0.02666667 0.04 0.05
+       vertex 0.02666667 0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.03333333 0.008 0.05
+       vertex 0.04 0.008 0.05
+       vertex 0.04 0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.04 0.016 0.05
+       vertex 0.03333333 0.016 0.05
+       vertex 0.03333333 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.03333333 0.016 0.05
+       vertex 0.04 0.016 0.05
+       vertex 0.04 0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.04 0.024 0.05
+       vertex 0.03333333 0.024 0.05
+       vertex 0.03333333 0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.03333333 0.024 0.05
+       vertex 0.04 0.024 0.05
+       vertex 0.04 0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.04 0.032 0.05
+       vertex 0.03333333 0.032 0.05
+       vertex 0.03333333 0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.03333333 0.032 0.05
+       vertex 0.04 0.032 0.05
+       vertex 0.04 0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.04 0.04 0.05
+       vertex 0.03333333 0.04 0.05
+       vertex 0.03333333 0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.04 0.008 0.05
+       vertex 0.04666667 0.008 0.05
+       vertex 0.04666667 0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.04666667 0.016 0.05
+       vertex 0.04 0.016 0.05
+       vertex 0.04 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.04 0.016 0.05
+       vertex 0.04666667 0.016 0.05
+       vertex 0.04666667 0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.04666667 0.024 0.05
+       vertex 0.04 0.024 0.05
+       vertex 0.04 0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.04 0.024 0.05
+       vertex 0.04666667 0.024 0.05
+       vertex 0.04666667 0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.04666667 0.032 0.05
+       vertex 0.04 0.032 0.05
+       vertex 0.04 0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.04 0.032 0.05
+       vertex 0.04666667 0.032 0.05
+       vertex 0.04666667 0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.04666667 0.04 0.05
+       vertex 0.04 0.04 0.05
+       vertex 0.04 0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.04666667 0.008 0.05
+       vertex 0.05333333 0.008 0.05
+       vertex 0.05333333 0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.05333333 0.016 0.05
+       vertex 0.04666667 0.016 0.05
+       vertex 0.04666667 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.04666667 0.016 0.05
+       vertex 0.05333333 0.016 0.05
+       vertex 0.05333333 0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.05333333 0.024 0.05
+       vertex 0.04666667 0.024 0.05
+       vertex 0.04666667 0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.04666667 0.024 0.05
+       vertex 0.05333333 0.024 0.05
+       vertex 0.05333333 0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.05333333 0.032 0.05
+       vertex 0.04666667 0.032 0.05
+       vertex 0.04666667 0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.04666667 0.032 0.05
+       vertex 0.05333333 0.032 0.05
+       vertex 0.05333333 0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.05333333 0.04 0.05
+       vertex 0.04666667 0.04 0.05
+       vertex 0.04666667 0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.05333333 0.008 0.05
+       vertex 0.06 0.008 0.05
+       vertex 0.06 0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.06 0.016 0.05
+       vertex 0.05333333 0.016 0.05
+       vertex 0.05333333 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.05333333 0.016 0.05
+       vertex 0.06 0.016 0.05
+       vertex 0.06 0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.06 0.024 0.05
+       vertex 0.05333333 0.024 0.05
+       vertex 0.05333333 0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.05333333 0.024 0.05
+       vertex 0.06 0.024 0.05
+       vertex 0.06 0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.06 0.032 0.05
+       vertex 0.05333333 0.032 0.05
+       vertex 0.05333333 0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.05333333 0.032 0.05
+       vertex 0.06 0.032 0.05
+       vertex 0.06 0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.06 0.04 0.05
+       vertex 0.05333333 0.04 0.05
+       vertex 0.05333333 0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.06 0.008 0.05
+       vertex 0.06666667 0.008 0.05
+       vertex 0.06666667 0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.06666667 0.016 0.05
+       vertex 0.06 0.016 0.05
+       vertex 0.06 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.06 0.016 0.05
+       vertex 0.06666667 0.016 0.05
+       vertex 0.06666667 0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.06666667 0.024 0.05
+       vertex 0.06 0.024 0.05
+       vertex 0.06 0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.06 0.024 0.05
+       vertex 0.06666667 0.024 0.05
+       vertex 0.06666667 0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.06666667 0.032 0.05
+       vertex 0.06 0.032 0.05
+       vertex 0.06 0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.06 0.032 0.05
+       vertex 0.06666667 0.032 0.05
+       vertex 0.06666667 0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.06666667 0.04 0.05
+       vertex 0.06 0.04 0.05
+       vertex 0.06 0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.06666667 0.008 0.05
+       vertex 0.07333333 0.008 0.05
+       vertex 0.07333333 0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.07333333 0.016 0.05
+       vertex 0.06666667 0.016 0.05
+       vertex 0.06666667 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.06666667 0.016 0.05
+       vertex 0.07333333 0.016 0.05
+       vertex 0.07333333 0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.07333333 0.024 0.05
+       vertex 0.06666667 0.024 0.05
+       vertex 0.06666667 0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.06666667 0.024 0.05
+       vertex 0.07333333 0.024 0.05
+       vertex 0.07333333 0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.07333333 0.032 0.05
+       vertex 0.06666667 0.032 0.05
+       vertex 0.06666667 0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.06666667 0.032 0.05
+       vertex 0.07333333 0.032 0.05
+       vertex 0.07333333 0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.07333333 0.04 0.05
+       vertex 0.06666667 0.04 0.05
+       vertex 0.06666667 0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.07333333 0.008 0.05
+       vertex 0.08 0.008 0.05
+       vertex 0.08 0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.08 0.016 0.05
+       vertex 0.07333333 0.016 0.05
+       vertex 0.07333333 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.07333333 0.016 0.05
+       vertex 0.08 0.016 0.05
+       vertex 0.08 0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.08 0.024 0.05
+       vertex 0.07333333 0.024 0.05
+       vertex 0.07333333 0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.07333333 0.024 0.05
+       vertex 0.08 0.024 0.05
+       vertex 0.08 0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.08 0.032 0.05
+       vertex 0.07333333 0.032 0.05
+       vertex 0.07333333 0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.07333333 0.032 0.05
+       vertex 0.08 0.032 0.05
+       vertex 0.08 0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.08 0.04 0.05
+       vertex 0.07333333 0.04 0.05
+       vertex 0.07333333 0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.08 0.008 0.05
+       vertex 0.08666667 0.008 0.05
+       vertex 0.08666667 0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.08666667 0.016 0.05
+       vertex 0.08 0.016 0.05
+       vertex 0.08 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.08 0.016 0.05
+       vertex 0.08666667 0.016 0.05
+       vertex 0.08666667 0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.08666667 0.024 0.05
+       vertex 0.08 0.024 0.05
+       vertex 0.08 0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.08 0.024 0.05
+       vertex 0.08666667 0.024 0.05
+       vertex 0.08666667 0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.08666667 0.032 0.05
+       vertex 0.08 0.032 0.05
+       vertex 0.08 0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.08 0.032 0.05
+       vertex 0.08666667 0.032 0.05
+       vertex 0.08666667 0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.08666667 0.04 0.05
+       vertex 0.08 0.04 0.05
+       vertex 0.08 0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.08666667 0.008 0.05
+       vertex 0.09333333 0.008 0.05
+       vertex 0.09333333 0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.09333333 0.016 0.05
+       vertex 0.08666667 0.016 0.05
+       vertex 0.08666667 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.08666667 0.016 0.05
+       vertex 0.09333333 0.016 0.05
+       vertex 0.09333333 0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.09333333 0.024 0.05
+       vertex 0.08666667 0.024 0.05
+       vertex 0.08666667 0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.08666667 0.024 0.05
+       vertex 0.09333333 0.024 0.05
+       vertex 0.09333333 0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.09333333 0.032 0.05
+       vertex 0.08666667 0.032 0.05
+       vertex 0.08666667 0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.08666667 0.032 0.05
+       vertex 0.09333333 0.032 0.05
+       vertex 0.09333333 0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.09333333 0.04 0.05
+       vertex 0.08666667 0.04 0.05
+       vertex 0.08666667 0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.09333333 0.008 0.05
+       vertex 0.1 0.008 0.05
+       vertex 0.1 0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.1 0.016 0.05
+       vertex 0.09333333 0.016 0.05
+       vertex 0.09333333 0.008 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.09333333 0.016 0.05
+       vertex 0.1 0.016 0.05
+       vertex 0.1 0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.1 0.024 0.05
+       vertex 0.09333333 0.024 0.05
+       vertex 0.09333333 0.016 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.09333333 0.024 0.05
+       vertex 0.1 0.024 0.05
+       vertex 0.1 0.032 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.1 0.032 0.05
+       vertex 0.09333333 0.032 0.05
+       vertex 0.09333333 0.024 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.09333333 0.032 0.05
+       vertex 0.1 0.032 0.05
+       vertex 0.1 0.04 0.05
+    endloop
+  endfacet
+  facet normal 0 0 1
+    outer loop
+       vertex 0.1 0.04 0.05
+       vertex 0.09333333 0.04 0.05
+       vertex 0.09333333 0.032 0.05
+    endloop
+  endfacet
+endsolid maxZ
+solid topAir_to_rightSolid
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.01333333 0.008 -0.05
+       vertex 0.02 0.008 -0.05
+       vertex 0.02 0.008 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.02 0.008 -0.04
+       vertex 0.01333333 0.008 -0.04
+       vertex 0.01333333 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.02 0.008 -0.05
+       vertex 0.02666667 0.008 -0.05
+       vertex 0.02666667 0.008 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.02666667 0.008 -0.04
+       vertex 0.02 0.008 -0.04
+       vertex 0.02 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.02666667 0.008 -0.05
+       vertex 0.03333333 0.008 -0.05
+       vertex 0.03333333 0.008 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.03333333 0.008 -0.04
+       vertex 0.02666667 0.008 -0.04
+       vertex 0.02666667 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.03333333 0.008 -0.05
+       vertex 0.04 0.008 -0.05
+       vertex 0.04 0.008 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.04 0.008 -0.04
+       vertex 0.03333333 0.008 -0.04
+       vertex 0.03333333 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.04 0.008 -0.05
+       vertex 0.04666667 0.008 -0.05
+       vertex 0.04666667 0.008 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.04666667 0.008 -0.04
+       vertex 0.04 0.008 -0.04
+       vertex 0.04 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.04666667 0.008 -0.05
+       vertex 0.05333333 0.008 -0.05
+       vertex 0.05333333 0.008 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.05333333 0.008 -0.04
+       vertex 0.04666667 0.008 -0.04
+       vertex 0.04666667 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.05333333 0.008 -0.05
+       vertex 0.06 0.008 -0.05
+       vertex 0.06 0.008 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.06 0.008 -0.04
+       vertex 0.05333333 0.008 -0.04
+       vertex 0.05333333 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.06 0.008 -0.05
+       vertex 0.06666667 0.008 -0.05
+       vertex 0.06666667 0.008 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.06666667 0.008 -0.04
+       vertex 0.06 0.008 -0.04
+       vertex 0.06 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.06666667 0.008 -0.05
+       vertex 0.07333333 0.008 -0.05
+       vertex 0.07333333 0.008 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.07333333 0.008 -0.04
+       vertex 0.06666667 0.008 -0.04
+       vertex 0.06666667 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.07333333 0.008 -0.05
+       vertex 0.08 0.008 -0.05
+       vertex 0.08 0.008 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.08 0.008 -0.04
+       vertex 0.07333333 0.008 -0.04
+       vertex 0.07333333 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.08 0.008 -0.05
+       vertex 0.08666667 0.008 -0.05
+       vertex 0.08666667 0.008 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.08666667 0.008 -0.04
+       vertex 0.08 0.008 -0.04
+       vertex 0.08 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.08666667 0.008 -0.05
+       vertex 0.09333333 0.008 -0.05
+       vertex 0.09333333 0.008 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.09333333 0.008 -0.04
+       vertex 0.08666667 0.008 -0.04
+       vertex 0.08666667 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.09333333 0.008 -0.05
+       vertex 0.1 0.008 -0.05
+       vertex 0.1 0.008 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.1 0.008 -0.04
+       vertex 0.09333333 0.008 -0.04
+       vertex 0.09333333 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.01333333 0.008 -0.04
+       vertex 0.02 0.008 -0.04
+       vertex 0.02 0.008 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.02 0.008 -0.03
+       vertex 0.01333333 0.008 -0.03
+       vertex 0.01333333 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.02 0.008 -0.04
+       vertex 0.02666667 0.008 -0.04
+       vertex 0.02666667 0.008 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.02666667 0.008 -0.03
+       vertex 0.02 0.008 -0.03
+       vertex 0.02 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.02666667 0.008 -0.04
+       vertex 0.03333333 0.008 -0.04
+       vertex 0.03333333 0.008 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.03333333 0.008 -0.03
+       vertex 0.02666667 0.008 -0.03
+       vertex 0.02666667 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.03333333 0.008 -0.04
+       vertex 0.04 0.008 -0.04
+       vertex 0.04 0.008 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.04 0.008 -0.03
+       vertex 0.03333333 0.008 -0.03
+       vertex 0.03333333 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.04 0.008 -0.04
+       vertex 0.04666667 0.008 -0.04
+       vertex 0.04666667 0.008 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.04666667 0.008 -0.03
+       vertex 0.04 0.008 -0.03
+       vertex 0.04 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.04666667 0.008 -0.04
+       vertex 0.05333333 0.008 -0.04
+       vertex 0.05333333 0.008 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.05333333 0.008 -0.03
+       vertex 0.04666667 0.008 -0.03
+       vertex 0.04666667 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.05333333 0.008 -0.04
+       vertex 0.06 0.008 -0.04
+       vertex 0.06 0.008 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.06 0.008 -0.03
+       vertex 0.05333333 0.008 -0.03
+       vertex 0.05333333 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.06 0.008 -0.04
+       vertex 0.06666667 0.008 -0.04
+       vertex 0.06666667 0.008 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.06666667 0.008 -0.03
+       vertex 0.06 0.008 -0.03
+       vertex 0.06 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.06666667 0.008 -0.04
+       vertex 0.07333333 0.008 -0.04
+       vertex 0.07333333 0.008 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.07333333 0.008 -0.03
+       vertex 0.06666667 0.008 -0.03
+       vertex 0.06666667 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.07333333 0.008 -0.04
+       vertex 0.08 0.008 -0.04
+       vertex 0.08 0.008 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.08 0.008 -0.03
+       vertex 0.07333333 0.008 -0.03
+       vertex 0.07333333 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.08 0.008 -0.04
+       vertex 0.08666667 0.008 -0.04
+       vertex 0.08666667 0.008 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.08666667 0.008 -0.03
+       vertex 0.08 0.008 -0.03
+       vertex 0.08 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.08666667 0.008 -0.04
+       vertex 0.09333333 0.008 -0.04
+       vertex 0.09333333 0.008 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.09333333 0.008 -0.03
+       vertex 0.08666667 0.008 -0.03
+       vertex 0.08666667 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.09333333 0.008 -0.04
+       vertex 0.1 0.008 -0.04
+       vertex 0.1 0.008 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.1 0.008 -0.03
+       vertex 0.09333333 0.008 -0.03
+       vertex 0.09333333 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.01333333 0.008 -0.03
+       vertex 0.02 0.008 -0.03
+       vertex 0.02 0.008 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.02 0.008 -0.02
+       vertex 0.01333333 0.008 -0.02
+       vertex 0.01333333 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.02 0.008 -0.03
+       vertex 0.02666667 0.008 -0.03
+       vertex 0.02666667 0.008 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.02666667 0.008 -0.02
+       vertex 0.02 0.008 -0.02
+       vertex 0.02 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.02666667 0.008 -0.03
+       vertex 0.03333333 0.008 -0.03
+       vertex 0.03333333 0.008 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.03333333 0.008 -0.02
+       vertex 0.02666667 0.008 -0.02
+       vertex 0.02666667 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.03333333 0.008 -0.03
+       vertex 0.04 0.008 -0.03
+       vertex 0.04 0.008 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.04 0.008 -0.02
+       vertex 0.03333333 0.008 -0.02
+       vertex 0.03333333 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.04 0.008 -0.03
+       vertex 0.04666667 0.008 -0.03
+       vertex 0.04666667 0.008 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.04666667 0.008 -0.02
+       vertex 0.04 0.008 -0.02
+       vertex 0.04 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.04666667 0.008 -0.03
+       vertex 0.05333333 0.008 -0.03
+       vertex 0.05333333 0.008 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.05333333 0.008 -0.02
+       vertex 0.04666667 0.008 -0.02
+       vertex 0.04666667 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.05333333 0.008 -0.03
+       vertex 0.06 0.008 -0.03
+       vertex 0.06 0.008 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.06 0.008 -0.02
+       vertex 0.05333333 0.008 -0.02
+       vertex 0.05333333 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.06 0.008 -0.03
+       vertex 0.06666667 0.008 -0.03
+       vertex 0.06666667 0.008 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.06666667 0.008 -0.02
+       vertex 0.06 0.008 -0.02
+       vertex 0.06 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.06666667 0.008 -0.03
+       vertex 0.07333333 0.008 -0.03
+       vertex 0.07333333 0.008 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.07333333 0.008 -0.02
+       vertex 0.06666667 0.008 -0.02
+       vertex 0.06666667 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.07333333 0.008 -0.03
+       vertex 0.08 0.008 -0.03
+       vertex 0.08 0.008 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.08 0.008 -0.02
+       vertex 0.07333333 0.008 -0.02
+       vertex 0.07333333 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.08 0.008 -0.03
+       vertex 0.08666667 0.008 -0.03
+       vertex 0.08666667 0.008 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.08666667 0.008 -0.02
+       vertex 0.08 0.008 -0.02
+       vertex 0.08 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.08666667 0.008 -0.03
+       vertex 0.09333333 0.008 -0.03
+       vertex 0.09333333 0.008 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.09333333 0.008 -0.02
+       vertex 0.08666667 0.008 -0.02
+       vertex 0.08666667 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.09333333 0.008 -0.03
+       vertex 0.1 0.008 -0.03
+       vertex 0.1 0.008 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.1 0.008 -0.02
+       vertex 0.09333333 0.008 -0.02
+       vertex 0.09333333 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.01333333 0.008 -0.02
+       vertex 0.02 0.008 -0.02
+       vertex 0.02 0.008 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.02 0.008 -0.01
+       vertex 0.01333333 0.008 -0.01
+       vertex 0.01333333 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.02 0.008 -0.02
+       vertex 0.02666667 0.008 -0.02
+       vertex 0.02666667 0.008 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.02666667 0.008 -0.01
+       vertex 0.02 0.008 -0.01
+       vertex 0.02 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.02666667 0.008 -0.02
+       vertex 0.03333333 0.008 -0.02
+       vertex 0.03333333 0.008 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.03333333 0.008 -0.01
+       vertex 0.02666667 0.008 -0.01
+       vertex 0.02666667 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.03333333 0.008 -0.02
+       vertex 0.04 0.008 -0.02
+       vertex 0.04 0.008 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.04 0.008 -0.01
+       vertex 0.03333333 0.008 -0.01
+       vertex 0.03333333 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.04 0.008 -0.02
+       vertex 0.04666667 0.008 -0.02
+       vertex 0.04666667 0.008 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.04666667 0.008 -0.01
+       vertex 0.04 0.008 -0.01
+       vertex 0.04 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.04666667 0.008 -0.02
+       vertex 0.05333333 0.008 -0.02
+       vertex 0.05333333 0.008 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.05333333 0.008 -0.01
+       vertex 0.04666667 0.008 -0.01
+       vertex 0.04666667 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.05333333 0.008 -0.02
+       vertex 0.06 0.008 -0.02
+       vertex 0.06 0.008 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.06 0.008 -0.01
+       vertex 0.05333333 0.008 -0.01
+       vertex 0.05333333 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.06 0.008 -0.02
+       vertex 0.06666667 0.008 -0.02
+       vertex 0.06666667 0.008 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.06666667 0.008 -0.01
+       vertex 0.06 0.008 -0.01
+       vertex 0.06 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.06666667 0.008 -0.02
+       vertex 0.07333333 0.008 -0.02
+       vertex 0.07333333 0.008 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.07333333 0.008 -0.01
+       vertex 0.06666667 0.008 -0.01
+       vertex 0.06666667 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.07333333 0.008 -0.02
+       vertex 0.08 0.008 -0.02
+       vertex 0.08 0.008 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.08 0.008 -0.01
+       vertex 0.07333333 0.008 -0.01
+       vertex 0.07333333 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.08 0.008 -0.02
+       vertex 0.08666667 0.008 -0.02
+       vertex 0.08666667 0.008 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.08666667 0.008 -0.01
+       vertex 0.08 0.008 -0.01
+       vertex 0.08 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.08666667 0.008 -0.02
+       vertex 0.09333333 0.008 -0.02
+       vertex 0.09333333 0.008 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.09333333 0.008 -0.01
+       vertex 0.08666667 0.008 -0.01
+       vertex 0.08666667 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.09333333 0.008 -0.02
+       vertex 0.1 0.008 -0.02
+       vertex 0.1 0.008 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.1 0.008 -0.01
+       vertex 0.09333333 0.008 -0.01
+       vertex 0.09333333 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.01333333 0.008 -0.01
+       vertex 0.02 0.008 -0.01
+       vertex 0.02 0.008 0
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.02 0.008 0
+       vertex 0.01333333 0.008 0
+       vertex 0.01333333 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.02 0.008 -0.01
+       vertex 0.02666667 0.008 -0.01
+       vertex 0.02666667 0.008 5.782412e-19
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.02666667 0.008 5.782412e-19
+       vertex 0.02 0.008 0
+       vertex 0.02 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.02666667 0.008 -0.01
+       vertex 0.03333333 0.008 -0.01
+       vertex 0.03333333 0.008 0
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.03333333 0.008 0
+       vertex 0.02666667 0.008 5.782412e-19
+       vertex 0.02666667 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.03333333 0.008 -0.01
+       vertex 0.04 0.008 -0.01
+       vertex 0.04 0.008 -5.782412e-19
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.04 0.008 -5.782412e-19
+       vertex 0.03333333 0.008 0
+       vertex 0.03333333 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.04 0.008 -0.01
+       vertex 0.04666667 0.008 -0.01
+       vertex 0.04666667 0.008 0
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.04666667 0.008 0
+       vertex 0.04 0.008 -5.782412e-19
+       vertex 0.04 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.04666667 0.008 -0.01
+       vertex 0.05333333 0.008 -0.01
+       vertex 0.05333333 0.008 -2.891206e-19
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.05333333 0.008 -2.891206e-19
+       vertex 0.04666667 0.008 0
+       vertex 0.04666667 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.05333333 0.008 -0.01
+       vertex 0.06 0.008 -0.01
+       vertex 0.06 0.008 5.782412e-19
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.06 0.008 5.782412e-19
+       vertex 0.05333333 0.008 -2.891206e-19
+       vertex 0.05333333 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.06 0.008 -0.01
+       vertex 0.06666667 0.008 -0.01
+       vertex 0.06666667 0.008 0
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.06666667 0.008 0
+       vertex 0.06 0.008 5.782412e-19
+       vertex 0.06 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.06666667 0.008 -0.01
+       vertex 0.07333333 0.008 -0.01
+       vertex 0.07333333 0.008 -4.336809e-19
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.07333333 0.008 -4.336809e-19
+       vertex 0.06666667 0.008 0
+       vertex 0.06666667 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.07333333 0.008 -0.01
+       vertex 0.08 0.008 -0.01
+       vertex 0.08 0.008 2.891206e-19
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.08 0.008 2.891206e-19
+       vertex 0.07333333 0.008 -4.336809e-19
+       vertex 0.07333333 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.08 0.008 -0.01
+       vertex 0.08666667 0.008 -0.01
+       vertex 0.08666667 0.008 -2.168404e-19
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.08666667 0.008 -2.168404e-19
+       vertex 0.08 0.008 2.891206e-19
+       vertex 0.08 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.08666667 0.008 -0.01
+       vertex 0.09333333 0.008 -0.01
+       vertex 0.09333333 0.008 4.698209e-19
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.09333333 0.008 4.698209e-19
+       vertex 0.08666667 0.008 -2.168404e-19
+       vertex 0.08666667 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.09333333 0.008 -0.01
+       vertex 0.1 0.008 -0.01
+       vertex 0.1 0.008 0
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.1 0.008 0
+       vertex 0.09333333 0.008 4.698209e-19
+       vertex 0.09333333 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.01333333 0.008 0
+       vertex 0.02 0.008 0
+       vertex 0.02 0.008 0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.02 0.008 0.01
+       vertex 0.01333333 0.008 0.01
+       vertex 0.01333333 0.008 0
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.02666667 0.008 5.782412e-19
+       vertex 0.02666667 0.008 0.01
+       vertex 0.02 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.02 0.008 0.01
+       vertex 0.02 0.008 0
+       vertex 0.02666667 0.008 5.782412e-19
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.02666667 0.008 5.782412e-19
+       vertex 0.03333333 0.008 0
+       vertex 0.03333333 0.008 0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.03333333 0.008 0.01
+       vertex 0.02666667 0.008 0.01
+       vertex 0.02666667 0.008 5.782412e-19
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.03333333 0.008 0
+       vertex 0.04 0.008 -5.782412e-19
+       vertex 0.04 0.008 0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.04 0.008 0.01
+       vertex 0.03333333 0.008 0.01
+       vertex 0.03333333 0.008 0
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.04666667 0.008 0
+       vertex 0.04666667 0.008 0.01
+       vertex 0.04 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.04 0.008 0.01
+       vertex 0.04 0.008 -5.782412e-19
+       vertex 0.04666667 0.008 0
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.04666667 0.008 0
+       vertex 0.05333333 0.008 -2.891206e-19
+       vertex 0.05333333 0.008 0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.05333333 0.008 0.01
+       vertex 0.04666667 0.008 0.01
+       vertex 0.04666667 0.008 0
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.06 0.008 5.782412e-19
+       vertex 0.06 0.008 0.01
+       vertex 0.05333333 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.05333333 0.008 0.01
+       vertex 0.05333333 0.008 -2.891206e-19
+       vertex 0.06 0.008 5.782412e-19
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.06 0.008 5.782412e-19
+       vertex 0.06666667 0.008 0
+       vertex 0.06666667 0.008 0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.06666667 0.008 0.01
+       vertex 0.06 0.008 0.01
+       vertex 0.06 0.008 5.782412e-19
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.06666667 0.008 0
+       vertex 0.07333333 0.008 -4.336809e-19
+       vertex 0.07333333 0.008 0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.07333333 0.008 0.01
+       vertex 0.06666667 0.008 0.01
+       vertex 0.06666667 0.008 0
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.08 0.008 2.891206e-19
+       vertex 0.08 0.008 0.01
+       vertex 0.07333333 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.07333333 0.008 0.01
+       vertex 0.07333333 0.008 -4.336809e-19
+       vertex 0.08 0.008 2.891206e-19
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.08 0.008 2.891206e-19
+       vertex 0.08666667 0.008 -2.168404e-19
+       vertex 0.08666667 0.008 0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.08666667 0.008 0.01
+       vertex 0.08 0.008 0.01
+       vertex 0.08 0.008 2.891206e-19
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.09333333 0.008 4.698209e-19
+       vertex 0.09333333 0.008 0.01
+       vertex 0.08666667 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.08666667 0.008 0.01
+       vertex 0.08666667 0.008 -2.168404e-19
+       vertex 0.09333333 0.008 4.698209e-19
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.09333333 0.008 4.698209e-19
+       vertex 0.1 0.008 0
+       vertex 0.1 0.008 0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.1 0.008 0.01
+       vertex 0.09333333 0.008 0.01
+       vertex 0.09333333 0.008 4.698209e-19
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.01333333 0.008 0.01
+       vertex 0.02 0.008 0.01
+       vertex 0.02 0.008 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.02 0.008 0.02
+       vertex 0.01333333 0.008 0.02
+       vertex 0.01333333 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.02 0.008 0.01
+       vertex 0.02666667 0.008 0.01
+       vertex 0.02666667 0.008 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.02666667 0.008 0.02
+       vertex 0.02 0.008 0.02
+       vertex 0.02 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.02666667 0.008 0.01
+       vertex 0.03333333 0.008 0.01
+       vertex 0.03333333 0.008 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.03333333 0.008 0.02
+       vertex 0.02666667 0.008 0.02
+       vertex 0.02666667 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.03333333 0.008 0.01
+       vertex 0.04 0.008 0.01
+       vertex 0.04 0.008 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.04 0.008 0.02
+       vertex 0.03333333 0.008 0.02
+       vertex 0.03333333 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.04 0.008 0.01
+       vertex 0.04666667 0.008 0.01
+       vertex 0.04666667 0.008 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.04666667 0.008 0.02
+       vertex 0.04 0.008 0.02
+       vertex 0.04 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.04666667 0.008 0.01
+       vertex 0.05333333 0.008 0.01
+       vertex 0.05333333 0.008 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.05333333 0.008 0.02
+       vertex 0.04666667 0.008 0.02
+       vertex 0.04666667 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.05333333 0.008 0.01
+       vertex 0.06 0.008 0.01
+       vertex 0.06 0.008 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.06 0.008 0.02
+       vertex 0.05333333 0.008 0.02
+       vertex 0.05333333 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.06 0.008 0.01
+       vertex 0.06666667 0.008 0.01
+       vertex 0.06666667 0.008 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.06666667 0.008 0.02
+       vertex 0.06 0.008 0.02
+       vertex 0.06 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.06666667 0.008 0.01
+       vertex 0.07333333 0.008 0.01
+       vertex 0.07333333 0.008 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.07333333 0.008 0.02
+       vertex 0.06666667 0.008 0.02
+       vertex 0.06666667 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.07333333 0.008 0.01
+       vertex 0.08 0.008 0.01
+       vertex 0.08 0.008 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.08 0.008 0.02
+       vertex 0.07333333 0.008 0.02
+       vertex 0.07333333 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.08 0.008 0.01
+       vertex 0.08666667 0.008 0.01
+       vertex 0.08666667 0.008 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.08666667 0.008 0.02
+       vertex 0.08 0.008 0.02
+       vertex 0.08 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.08666667 0.008 0.01
+       vertex 0.09333333 0.008 0.01
+       vertex 0.09333333 0.008 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.09333333 0.008 0.02
+       vertex 0.08666667 0.008 0.02
+       vertex 0.08666667 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.09333333 0.008 0.01
+       vertex 0.1 0.008 0.01
+       vertex 0.1 0.008 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.1 0.008 0.02
+       vertex 0.09333333 0.008 0.02
+       vertex 0.09333333 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.01333333 0.008 0.02
+       vertex 0.02 0.008 0.02
+       vertex 0.02 0.008 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.02 0.008 0.03
+       vertex 0.01333333 0.008 0.03
+       vertex 0.01333333 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.02 0.008 0.02
+       vertex 0.02666667 0.008 0.02
+       vertex 0.02666667 0.008 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.02666667 0.008 0.03
+       vertex 0.02 0.008 0.03
+       vertex 0.02 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.02666667 0.008 0.02
+       vertex 0.03333333 0.008 0.02
+       vertex 0.03333333 0.008 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.03333333 0.008 0.03
+       vertex 0.02666667 0.008 0.03
+       vertex 0.02666667 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.03333333 0.008 0.02
+       vertex 0.04 0.008 0.02
+       vertex 0.04 0.008 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.04 0.008 0.03
+       vertex 0.03333333 0.008 0.03
+       vertex 0.03333333 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.04 0.008 0.02
+       vertex 0.04666667 0.008 0.02
+       vertex 0.04666667 0.008 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.04666667 0.008 0.03
+       vertex 0.04 0.008 0.03
+       vertex 0.04 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.04666667 0.008 0.02
+       vertex 0.05333333 0.008 0.02
+       vertex 0.05333333 0.008 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.05333333 0.008 0.03
+       vertex 0.04666667 0.008 0.03
+       vertex 0.04666667 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.05333333 0.008 0.02
+       vertex 0.06 0.008 0.02
+       vertex 0.06 0.008 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.06 0.008 0.03
+       vertex 0.05333333 0.008 0.03
+       vertex 0.05333333 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.06 0.008 0.02
+       vertex 0.06666667 0.008 0.02
+       vertex 0.06666667 0.008 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.06666667 0.008 0.03
+       vertex 0.06 0.008 0.03
+       vertex 0.06 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.06666667 0.008 0.02
+       vertex 0.07333333 0.008 0.02
+       vertex 0.07333333 0.008 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.07333333 0.008 0.03
+       vertex 0.06666667 0.008 0.03
+       vertex 0.06666667 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.07333333 0.008 0.02
+       vertex 0.08 0.008 0.02
+       vertex 0.08 0.008 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.08 0.008 0.03
+       vertex 0.07333333 0.008 0.03
+       vertex 0.07333333 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.08 0.008 0.02
+       vertex 0.08666667 0.008 0.02
+       vertex 0.08666667 0.008 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.08666667 0.008 0.03
+       vertex 0.08 0.008 0.03
+       vertex 0.08 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.08666667 0.008 0.02
+       vertex 0.09333333 0.008 0.02
+       vertex 0.09333333 0.008 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.09333333 0.008 0.03
+       vertex 0.08666667 0.008 0.03
+       vertex 0.08666667 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.09333333 0.008 0.02
+       vertex 0.1 0.008 0.02
+       vertex 0.1 0.008 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.1 0.008 0.03
+       vertex 0.09333333 0.008 0.03
+       vertex 0.09333333 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.01333333 0.008 0.03
+       vertex 0.02 0.008 0.03
+       vertex 0.02 0.008 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.02 0.008 0.04
+       vertex 0.01333333 0.008 0.04
+       vertex 0.01333333 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.02 0.008 0.03
+       vertex 0.02666667 0.008 0.03
+       vertex 0.02666667 0.008 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.02666667 0.008 0.04
+       vertex 0.02 0.008 0.04
+       vertex 0.02 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.02666667 0.008 0.03
+       vertex 0.03333333 0.008 0.03
+       vertex 0.03333333 0.008 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.03333333 0.008 0.04
+       vertex 0.02666667 0.008 0.04
+       vertex 0.02666667 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.03333333 0.008 0.03
+       vertex 0.04 0.008 0.03
+       vertex 0.04 0.008 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.04 0.008 0.04
+       vertex 0.03333333 0.008 0.04
+       vertex 0.03333333 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.04 0.008 0.03
+       vertex 0.04666667 0.008 0.03
+       vertex 0.04666667 0.008 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.04666667 0.008 0.04
+       vertex 0.04 0.008 0.04
+       vertex 0.04 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.04666667 0.008 0.03
+       vertex 0.05333333 0.008 0.03
+       vertex 0.05333333 0.008 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.05333333 0.008 0.04
+       vertex 0.04666667 0.008 0.04
+       vertex 0.04666667 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.05333333 0.008 0.03
+       vertex 0.06 0.008 0.03
+       vertex 0.06 0.008 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.06 0.008 0.04
+       vertex 0.05333333 0.008 0.04
+       vertex 0.05333333 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.06 0.008 0.03
+       vertex 0.06666667 0.008 0.03
+       vertex 0.06666667 0.008 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.06666667 0.008 0.04
+       vertex 0.06 0.008 0.04
+       vertex 0.06 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.06666667 0.008 0.03
+       vertex 0.07333333 0.008 0.03
+       vertex 0.07333333 0.008 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.07333333 0.008 0.04
+       vertex 0.06666667 0.008 0.04
+       vertex 0.06666667 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.07333333 0.008 0.03
+       vertex 0.08 0.008 0.03
+       vertex 0.08 0.008 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.08 0.008 0.04
+       vertex 0.07333333 0.008 0.04
+       vertex 0.07333333 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.08 0.008 0.03
+       vertex 0.08666667 0.008 0.03
+       vertex 0.08666667 0.008 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.08666667 0.008 0.04
+       vertex 0.08 0.008 0.04
+       vertex 0.08 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.08666667 0.008 0.03
+       vertex 0.09333333 0.008 0.03
+       vertex 0.09333333 0.008 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.09333333 0.008 0.04
+       vertex 0.08666667 0.008 0.04
+       vertex 0.08666667 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.09333333 0.008 0.03
+       vertex 0.1 0.008 0.03
+       vertex 0.1 0.008 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.1 0.008 0.04
+       vertex 0.09333333 0.008 0.04
+       vertex 0.09333333 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.01333333 0.008 0.04
+       vertex 0.02 0.008 0.04
+       vertex 0.02 0.008 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.02 0.008 0.05
+       vertex 0.01333333 0.008 0.05
+       vertex 0.01333333 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.02 0.008 0.04
+       vertex 0.02666667 0.008 0.04
+       vertex 0.02666667 0.008 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.02666667 0.008 0.05
+       vertex 0.02 0.008 0.05
+       vertex 0.02 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.02666667 0.008 0.04
+       vertex 0.03333333 0.008 0.04
+       vertex 0.03333333 0.008 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.03333333 0.008 0.05
+       vertex 0.02666667 0.008 0.05
+       vertex 0.02666667 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.03333333 0.008 0.04
+       vertex 0.04 0.008 0.04
+       vertex 0.04 0.008 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.04 0.008 0.05
+       vertex 0.03333333 0.008 0.05
+       vertex 0.03333333 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.04 0.008 0.04
+       vertex 0.04666667 0.008 0.04
+       vertex 0.04666667 0.008 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.04666667 0.008 0.05
+       vertex 0.04 0.008 0.05
+       vertex 0.04 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.04666667 0.008 0.04
+       vertex 0.05333333 0.008 0.04
+       vertex 0.05333333 0.008 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.05333333 0.008 0.05
+       vertex 0.04666667 0.008 0.05
+       vertex 0.04666667 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.05333333 0.008 0.04
+       vertex 0.06 0.008 0.04
+       vertex 0.06 0.008 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.06 0.008 0.05
+       vertex 0.05333333 0.008 0.05
+       vertex 0.05333333 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.06 0.008 0.04
+       vertex 0.06666667 0.008 0.04
+       vertex 0.06666667 0.008 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.06666667 0.008 0.05
+       vertex 0.06 0.008 0.05
+       vertex 0.06 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.06666667 0.008 0.04
+       vertex 0.07333333 0.008 0.04
+       vertex 0.07333333 0.008 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.07333333 0.008 0.05
+       vertex 0.06666667 0.008 0.05
+       vertex 0.06666667 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.07333333 0.008 0.04
+       vertex 0.08 0.008 0.04
+       vertex 0.08 0.008 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.08 0.008 0.05
+       vertex 0.07333333 0.008 0.05
+       vertex 0.07333333 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.08 0.008 0.04
+       vertex 0.08666667 0.008 0.04
+       vertex 0.08666667 0.008 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.08666667 0.008 0.05
+       vertex 0.08 0.008 0.05
+       vertex 0.08 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.08666667 0.008 0.04
+       vertex 0.09333333 0.008 0.04
+       vertex 0.09333333 0.008 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.09333333 0.008 0.05
+       vertex 0.08666667 0.008 0.05
+       vertex 0.08666667 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.09333333 0.008 0.04
+       vertex 0.1 0.008 0.04
+       vertex 0.1 0.008 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.1 0.008 0.05
+       vertex 0.09333333 0.008 0.05
+       vertex 0.09333333 0.008 0.04
+    endloop
+  endfacet
+endsolid topAir_to_rightSolid
+solid topAir_to_heater
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.01333333 0.008 -0.05
+       vertex -0.006666667 0.008 -0.05
+       vertex -0.006666667 0.008 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.006666667 0.008 -0.04
+       vertex -0.01333333 0.008 -0.04
+       vertex -0.01333333 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.006666667 0.008 -0.05
+       vertex 0 0.008 -0.05
+       vertex 0 0.008 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0 0.008 -0.04
+       vertex -0.006666667 0.008 -0.04
+       vertex -0.006666667 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0 0.008 -0.05
+       vertex 0.006666667 0.008 -0.05
+       vertex 0.006666667 0.008 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.006666667 0.008 -0.04
+       vertex 0 0.008 -0.04
+       vertex 0 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.006666667 0.008 -0.05
+       vertex 0.01333333 0.008 -0.05
+       vertex 0.01333333 0.008 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.01333333 0.008 -0.04
+       vertex 0.006666667 0.008 -0.04
+       vertex 0.006666667 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.01333333 0.008 -0.04
+       vertex -0.006666667 0.008 -0.04
+       vertex -0.006666667 0.008 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.006666667 0.008 -0.03
+       vertex -0.01333333 0.008 -0.03
+       vertex -0.01333333 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.006666667 0.008 -0.04
+       vertex 0 0.008 -0.04
+       vertex 0 0.008 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0 0.008 -0.03
+       vertex -0.006666667 0.008 -0.03
+       vertex -0.006666667 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0 0.008 -0.04
+       vertex 0.006666667 0.008 -0.04
+       vertex 0.006666667 0.008 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.006666667 0.008 -0.03
+       vertex 0 0.008 -0.03
+       vertex 0 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.006666667 0.008 -0.04
+       vertex 0.01333333 0.008 -0.04
+       vertex 0.01333333 0.008 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.01333333 0.008 -0.03
+       vertex 0.006666667 0.008 -0.03
+       vertex 0.006666667 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.01333333 0.008 -0.03
+       vertex -0.006666667 0.008 -0.03
+       vertex -0.006666667 0.008 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.006666667 0.008 -0.02
+       vertex -0.01333333 0.008 -0.02
+       vertex -0.01333333 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.006666667 0.008 -0.03
+       vertex 0 0.008 -0.03
+       vertex 0 0.008 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0 0.008 -0.02
+       vertex -0.006666667 0.008 -0.02
+       vertex -0.006666667 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0 0.008 -0.03
+       vertex 0.006666667 0.008 -0.03
+       vertex 0.006666667 0.008 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.006666667 0.008 -0.02
+       vertex 0 0.008 -0.02
+       vertex 0 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.006666667 0.008 -0.03
+       vertex 0.01333333 0.008 -0.03
+       vertex 0.01333333 0.008 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.01333333 0.008 -0.02
+       vertex 0.006666667 0.008 -0.02
+       vertex 0.006666667 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.01333333 0.008 -0.02
+       vertex -0.006666667 0.008 -0.02
+       vertex -0.006666667 0.008 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.006666667 0.008 -0.01
+       vertex -0.01333333 0.008 -0.01
+       vertex -0.01333333 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.006666667 0.008 -0.02
+       vertex 0 0.008 -0.02
+       vertex 0 0.008 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0 0.008 -0.01
+       vertex -0.006666667 0.008 -0.01
+       vertex -0.006666667 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0 0.008 -0.02
+       vertex 0.006666667 0.008 -0.02
+       vertex 0.006666667 0.008 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.006666667 0.008 -0.01
+       vertex 0 0.008 -0.01
+       vertex 0 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.006666667 0.008 -0.02
+       vertex 0.01333333 0.008 -0.02
+       vertex 0.01333333 0.008 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.01333333 0.008 -0.01
+       vertex 0.006666667 0.008 -0.01
+       vertex 0.006666667 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.01333333 0.008 -0.01
+       vertex -0.006666667 0.008 -0.01
+       vertex -0.006666667 0.008 0
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.006666667 0.008 0
+       vertex -0.01333333 0.008 0
+       vertex -0.01333333 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.006666667 0.008 -0.01
+       vertex 0 0.008 -0.01
+       vertex 0 0.008 0
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0 0.008 0
+       vertex -0.006666667 0.008 0
+       vertex -0.006666667 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0 0.008 -0.01
+       vertex 0.006666667 0.008 -0.01
+       vertex 0.006666667 0.008 0
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.006666667 0.008 0
+       vertex 0 0.008 0
+       vertex 0 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.006666667 0.008 -0.01
+       vertex 0.01333333 0.008 -0.01
+       vertex 0.01333333 0.008 0
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.01333333 0.008 0
+       vertex 0.006666667 0.008 0
+       vertex 0.006666667 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.01333333 0.008 0
+       vertex -0.006666667 0.008 0
+       vertex -0.006666667 0.008 0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.006666667 0.008 0.01
+       vertex -0.01333333 0.008 0.01
+       vertex -0.01333333 0.008 0
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.006666667 0.008 0
+       vertex 0 0.008 0
+       vertex 0 0.008 0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0 0.008 0.01
+       vertex -0.006666667 0.008 0.01
+       vertex -0.006666667 0.008 0
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0 0.008 0
+       vertex 0.006666667 0.008 0
+       vertex 0.006666667 0.008 0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.006666667 0.008 0.01
+       vertex 0 0.008 0.01
+       vertex 0 0.008 0
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.006666667 0.008 0
+       vertex 0.01333333 0.008 0
+       vertex 0.01333333 0.008 0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.01333333 0.008 0.01
+       vertex 0.006666667 0.008 0.01
+       vertex 0.006666667 0.008 0
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.01333333 0.008 0.01
+       vertex -0.006666667 0.008 0.01
+       vertex -0.006666667 0.008 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.006666667 0.008 0.02
+       vertex -0.01333333 0.008 0.02
+       vertex -0.01333333 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.006666667 0.008 0.01
+       vertex 0 0.008 0.01
+       vertex 0 0.008 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0 0.008 0.02
+       vertex -0.006666667 0.008 0.02
+       vertex -0.006666667 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0 0.008 0.01
+       vertex 0.006666667 0.008 0.01
+       vertex 0.006666667 0.008 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.006666667 0.008 0.02
+       vertex 0 0.008 0.02
+       vertex 0 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.006666667 0.008 0.01
+       vertex 0.01333333 0.008 0.01
+       vertex 0.01333333 0.008 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.01333333 0.008 0.02
+       vertex 0.006666667 0.008 0.02
+       vertex 0.006666667 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.01333333 0.008 0.02
+       vertex -0.006666667 0.008 0.02
+       vertex -0.006666667 0.008 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.006666667 0.008 0.03
+       vertex -0.01333333 0.008 0.03
+       vertex -0.01333333 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.006666667 0.008 0.02
+       vertex 0 0.008 0.02
+       vertex 0 0.008 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0 0.008 0.03
+       vertex -0.006666667 0.008 0.03
+       vertex -0.006666667 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0 0.008 0.02
+       vertex 0.006666667 0.008 0.02
+       vertex 0.006666667 0.008 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.006666667 0.008 0.03
+       vertex 0 0.008 0.03
+       vertex 0 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.006666667 0.008 0.02
+       vertex 0.01333333 0.008 0.02
+       vertex 0.01333333 0.008 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.01333333 0.008 0.03
+       vertex 0.006666667 0.008 0.03
+       vertex 0.006666667 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.01333333 0.008 0.03
+       vertex -0.006666667 0.008 0.03
+       vertex -0.006666667 0.008 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.006666667 0.008 0.04
+       vertex -0.01333333 0.008 0.04
+       vertex -0.01333333 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.006666667 0.008 0.03
+       vertex 0 0.008 0.03
+       vertex 0 0.008 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0 0.008 0.04
+       vertex -0.006666667 0.008 0.04
+       vertex -0.006666667 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0 0.008 0.03
+       vertex 0.006666667 0.008 0.03
+       vertex 0.006666667 0.008 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.006666667 0.008 0.04
+       vertex 0 0.008 0.04
+       vertex 0 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.006666667 0.008 0.03
+       vertex 0.01333333 0.008 0.03
+       vertex 0.01333333 0.008 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.01333333 0.008 0.04
+       vertex 0.006666667 0.008 0.04
+       vertex 0.006666667 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.01333333 0.008 0.04
+       vertex -0.006666667 0.008 0.04
+       vertex -0.006666667 0.008 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.006666667 0.008 0.05
+       vertex -0.01333333 0.008 0.05
+       vertex -0.01333333 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.006666667 0.008 0.04
+       vertex 0 0.008 0.04
+       vertex 0 0.008 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0 0.008 0.05
+       vertex -0.006666667 0.008 0.05
+       vertex -0.006666667 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0 0.008 0.04
+       vertex 0.006666667 0.008 0.04
+       vertex 0.006666667 0.008 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.006666667 0.008 0.05
+       vertex 0 0.008 0.05
+       vertex 0 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex 0.006666667 0.008 0.04
+       vertex 0.01333333 0.008 0.04
+       vertex 0.01333333 0.008 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex 0.01333333 0.008 0.05
+       vertex 0.006666667 0.008 0.05
+       vertex 0.006666667 0.008 0.04
+    endloop
+  endfacet
+endsolid topAir_to_heater
+solid topAir_to_leftSolid
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.1 0.008 -0.05
+       vertex -0.09333333 0.008 -0.05
+       vertex -0.09333333 0.008 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.09333333 0.008 -0.04
+       vertex -0.1 0.008 -0.04
+       vertex -0.1 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.09333333 0.008 -0.05
+       vertex -0.08666667 0.008 -0.05
+       vertex -0.08666667 0.008 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.08666667 0.008 -0.04
+       vertex -0.09333333 0.008 -0.04
+       vertex -0.09333333 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.08666667 0.008 -0.05
+       vertex -0.08 0.008 -0.05
+       vertex -0.08 0.008 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.08 0.008 -0.04
+       vertex -0.08666667 0.008 -0.04
+       vertex -0.08666667 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.08 0.008 -0.05
+       vertex -0.07333333 0.008 -0.05
+       vertex -0.07333333 0.008 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.07333333 0.008 -0.04
+       vertex -0.08 0.008 -0.04
+       vertex -0.08 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.07333333 0.008 -0.05
+       vertex -0.06666667 0.008 -0.05
+       vertex -0.06666667 0.008 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.06666667 0.008 -0.04
+       vertex -0.07333333 0.008 -0.04
+       vertex -0.07333333 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.06666667 0.008 -0.05
+       vertex -0.06 0.008 -0.05
+       vertex -0.06 0.008 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.06 0.008 -0.04
+       vertex -0.06666667 0.008 -0.04
+       vertex -0.06666667 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.06 0.008 -0.05
+       vertex -0.05333333 0.008 -0.05
+       vertex -0.05333333 0.008 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.05333333 0.008 -0.04
+       vertex -0.06 0.008 -0.04
+       vertex -0.06 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.05333333 0.008 -0.05
+       vertex -0.04666667 0.008 -0.05
+       vertex -0.04666667 0.008 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.04666667 0.008 -0.04
+       vertex -0.05333333 0.008 -0.04
+       vertex -0.05333333 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.04666667 0.008 -0.05
+       vertex -0.04 0.008 -0.05
+       vertex -0.04 0.008 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.04 0.008 -0.04
+       vertex -0.04666667 0.008 -0.04
+       vertex -0.04666667 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.04 0.008 -0.05
+       vertex -0.03333333 0.008 -0.05
+       vertex -0.03333333 0.008 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.03333333 0.008 -0.04
+       vertex -0.04 0.008 -0.04
+       vertex -0.04 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.03333333 0.008 -0.05
+       vertex -0.02666667 0.008 -0.05
+       vertex -0.02666667 0.008 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.02666667 0.008 -0.04
+       vertex -0.03333333 0.008 -0.04
+       vertex -0.03333333 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.02666667 0.008 -0.05
+       vertex -0.02 0.008 -0.05
+       vertex -0.02 0.008 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.02 0.008 -0.04
+       vertex -0.02666667 0.008 -0.04
+       vertex -0.02666667 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.02 0.008 -0.05
+       vertex -0.01333333 0.008 -0.05
+       vertex -0.01333333 0.008 -0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.01333333 0.008 -0.04
+       vertex -0.02 0.008 -0.04
+       vertex -0.02 0.008 -0.05
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.1 0.008 -0.04
+       vertex -0.09333333 0.008 -0.04
+       vertex -0.09333333 0.008 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.09333333 0.008 -0.03
+       vertex -0.1 0.008 -0.03
+       vertex -0.1 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.09333333 0.008 -0.04
+       vertex -0.08666667 0.008 -0.04
+       vertex -0.08666667 0.008 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.08666667 0.008 -0.03
+       vertex -0.09333333 0.008 -0.03
+       vertex -0.09333333 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.08666667 0.008 -0.04
+       vertex -0.08 0.008 -0.04
+       vertex -0.08 0.008 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.08 0.008 -0.03
+       vertex -0.08666667 0.008 -0.03
+       vertex -0.08666667 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.08 0.008 -0.04
+       vertex -0.07333333 0.008 -0.04
+       vertex -0.07333333 0.008 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.07333333 0.008 -0.03
+       vertex -0.08 0.008 -0.03
+       vertex -0.08 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.07333333 0.008 -0.04
+       vertex -0.06666667 0.008 -0.04
+       vertex -0.06666667 0.008 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.06666667 0.008 -0.03
+       vertex -0.07333333 0.008 -0.03
+       vertex -0.07333333 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.06666667 0.008 -0.04
+       vertex -0.06 0.008 -0.04
+       vertex -0.06 0.008 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.06 0.008 -0.03
+       vertex -0.06666667 0.008 -0.03
+       vertex -0.06666667 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.06 0.008 -0.04
+       vertex -0.05333333 0.008 -0.04
+       vertex -0.05333333 0.008 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.05333333 0.008 -0.03
+       vertex -0.06 0.008 -0.03
+       vertex -0.06 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.05333333 0.008 -0.04
+       vertex -0.04666667 0.008 -0.04
+       vertex -0.04666667 0.008 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.04666667 0.008 -0.03
+       vertex -0.05333333 0.008 -0.03
+       vertex -0.05333333 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.04666667 0.008 -0.04
+       vertex -0.04 0.008 -0.04
+       vertex -0.04 0.008 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.04 0.008 -0.03
+       vertex -0.04666667 0.008 -0.03
+       vertex -0.04666667 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.04 0.008 -0.04
+       vertex -0.03333333 0.008 -0.04
+       vertex -0.03333333 0.008 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.03333333 0.008 -0.03
+       vertex -0.04 0.008 -0.03
+       vertex -0.04 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.03333333 0.008 -0.04
+       vertex -0.02666667 0.008 -0.04
+       vertex -0.02666667 0.008 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.02666667 0.008 -0.03
+       vertex -0.03333333 0.008 -0.03
+       vertex -0.03333333 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.02666667 0.008 -0.04
+       vertex -0.02 0.008 -0.04
+       vertex -0.02 0.008 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.02 0.008 -0.03
+       vertex -0.02666667 0.008 -0.03
+       vertex -0.02666667 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.02 0.008 -0.04
+       vertex -0.01333333 0.008 -0.04
+       vertex -0.01333333 0.008 -0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.01333333 0.008 -0.03
+       vertex -0.02 0.008 -0.03
+       vertex -0.02 0.008 -0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.1 0.008 -0.03
+       vertex -0.09333333 0.008 -0.03
+       vertex -0.09333333 0.008 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.09333333 0.008 -0.02
+       vertex -0.1 0.008 -0.02
+       vertex -0.1 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.09333333 0.008 -0.03
+       vertex -0.08666667 0.008 -0.03
+       vertex -0.08666667 0.008 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.08666667 0.008 -0.02
+       vertex -0.09333333 0.008 -0.02
+       vertex -0.09333333 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.08666667 0.008 -0.03
+       vertex -0.08 0.008 -0.03
+       vertex -0.08 0.008 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.08 0.008 -0.02
+       vertex -0.08666667 0.008 -0.02
+       vertex -0.08666667 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.08 0.008 -0.03
+       vertex -0.07333333 0.008 -0.03
+       vertex -0.07333333 0.008 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.07333333 0.008 -0.02
+       vertex -0.08 0.008 -0.02
+       vertex -0.08 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.07333333 0.008 -0.03
+       vertex -0.06666667 0.008 -0.03
+       vertex -0.06666667 0.008 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.06666667 0.008 -0.02
+       vertex -0.07333333 0.008 -0.02
+       vertex -0.07333333 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.06666667 0.008 -0.03
+       vertex -0.06 0.008 -0.03
+       vertex -0.06 0.008 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.06 0.008 -0.02
+       vertex -0.06666667 0.008 -0.02
+       vertex -0.06666667 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.06 0.008 -0.03
+       vertex -0.05333333 0.008 -0.03
+       vertex -0.05333333 0.008 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.05333333 0.008 -0.02
+       vertex -0.06 0.008 -0.02
+       vertex -0.06 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.05333333 0.008 -0.03
+       vertex -0.04666667 0.008 -0.03
+       vertex -0.04666667 0.008 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.04666667 0.008 -0.02
+       vertex -0.05333333 0.008 -0.02
+       vertex -0.05333333 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.04666667 0.008 -0.03
+       vertex -0.04 0.008 -0.03
+       vertex -0.04 0.008 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.04 0.008 -0.02
+       vertex -0.04666667 0.008 -0.02
+       vertex -0.04666667 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.04 0.008 -0.03
+       vertex -0.03333333 0.008 -0.03
+       vertex -0.03333333 0.008 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.03333333 0.008 -0.02
+       vertex -0.04 0.008 -0.02
+       vertex -0.04 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.03333333 0.008 -0.03
+       vertex -0.02666667 0.008 -0.03
+       vertex -0.02666667 0.008 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.02666667 0.008 -0.02
+       vertex -0.03333333 0.008 -0.02
+       vertex -0.03333333 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.02666667 0.008 -0.03
+       vertex -0.02 0.008 -0.03
+       vertex -0.02 0.008 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.02 0.008 -0.02
+       vertex -0.02666667 0.008 -0.02
+       vertex -0.02666667 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.02 0.008 -0.03
+       vertex -0.01333333 0.008 -0.03
+       vertex -0.01333333 0.008 -0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.01333333 0.008 -0.02
+       vertex -0.02 0.008 -0.02
+       vertex -0.02 0.008 -0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.1 0.008 -0.02
+       vertex -0.09333333 0.008 -0.02
+       vertex -0.09333333 0.008 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.09333333 0.008 -0.01
+       vertex -0.1 0.008 -0.01
+       vertex -0.1 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.09333333 0.008 -0.02
+       vertex -0.08666667 0.008 -0.02
+       vertex -0.08666667 0.008 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.08666667 0.008 -0.01
+       vertex -0.09333333 0.008 -0.01
+       vertex -0.09333333 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.08666667 0.008 -0.02
+       vertex -0.08 0.008 -0.02
+       vertex -0.08 0.008 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.08 0.008 -0.01
+       vertex -0.08666667 0.008 -0.01
+       vertex -0.08666667 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.08 0.008 -0.02
+       vertex -0.07333333 0.008 -0.02
+       vertex -0.07333333 0.008 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.07333333 0.008 -0.01
+       vertex -0.08 0.008 -0.01
+       vertex -0.08 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.07333333 0.008 -0.02
+       vertex -0.06666667 0.008 -0.02
+       vertex -0.06666667 0.008 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.06666667 0.008 -0.01
+       vertex -0.07333333 0.008 -0.01
+       vertex -0.07333333 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.06666667 0.008 -0.02
+       vertex -0.06 0.008 -0.02
+       vertex -0.06 0.008 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.06 0.008 -0.01
+       vertex -0.06666667 0.008 -0.01
+       vertex -0.06666667 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.06 0.008 -0.02
+       vertex -0.05333333 0.008 -0.02
+       vertex -0.05333333 0.008 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.05333333 0.008 -0.01
+       vertex -0.06 0.008 -0.01
+       vertex -0.06 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.05333333 0.008 -0.02
+       vertex -0.04666667 0.008 -0.02
+       vertex -0.04666667 0.008 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.04666667 0.008 -0.01
+       vertex -0.05333333 0.008 -0.01
+       vertex -0.05333333 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.04666667 0.008 -0.02
+       vertex -0.04 0.008 -0.02
+       vertex -0.04 0.008 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.04 0.008 -0.01
+       vertex -0.04666667 0.008 -0.01
+       vertex -0.04666667 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.04 0.008 -0.02
+       vertex -0.03333333 0.008 -0.02
+       vertex -0.03333333 0.008 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.03333333 0.008 -0.01
+       vertex -0.04 0.008 -0.01
+       vertex -0.04 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.03333333 0.008 -0.02
+       vertex -0.02666667 0.008 -0.02
+       vertex -0.02666667 0.008 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.02666667 0.008 -0.01
+       vertex -0.03333333 0.008 -0.01
+       vertex -0.03333333 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.02666667 0.008 -0.02
+       vertex -0.02 0.008 -0.02
+       vertex -0.02 0.008 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.02 0.008 -0.01
+       vertex -0.02666667 0.008 -0.01
+       vertex -0.02666667 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.02 0.008 -0.02
+       vertex -0.01333333 0.008 -0.02
+       vertex -0.01333333 0.008 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.01333333 0.008 -0.01
+       vertex -0.02 0.008 -0.01
+       vertex -0.02 0.008 -0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.1 0.008 -0.01
+       vertex -0.09333333 0.008 -0.01
+       vertex -0.09333333 0.008 0
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.09333333 0.008 0
+       vertex -0.1 0.008 0
+       vertex -0.1 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.09333333 0.008 -0.01
+       vertex -0.08666667 0.008 -0.01
+       vertex -0.08666667 0.008 0
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.08666667 0.008 0
+       vertex -0.09333333 0.008 0
+       vertex -0.09333333 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.08666667 0.008 -0.01
+       vertex -0.08 0.008 -0.01
+       vertex -0.08 0.008 0
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.08 0.008 0
+       vertex -0.08666667 0.008 0
+       vertex -0.08666667 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.08 0.008 -0.01
+       vertex -0.07333333 0.008 -0.01
+       vertex -0.07333333 0.008 5.782412e-19
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.07333333 0.008 5.782412e-19
+       vertex -0.08 0.008 0
+       vertex -0.08 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.07333333 0.008 -0.01
+       vertex -0.06666667 0.008 -0.01
+       vertex -0.06666667 0.008 0
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.06666667 0.008 0
+       vertex -0.07333333 0.008 5.782412e-19
+       vertex -0.07333333 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.06666667 0.008 -0.01
+       vertex -0.06 0.008 -0.01
+       vertex -0.06 0.008 0
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.06 0.008 0
+       vertex -0.06666667 0.008 0
+       vertex -0.06666667 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.06 0.008 -0.01
+       vertex -0.05333333 0.008 -0.01
+       vertex -0.05333333 0.008 0
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.05333333 0.008 0
+       vertex -0.06 0.008 0
+       vertex -0.06 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.05333333 0.008 -0.01
+       vertex -0.04666667 0.008 -0.01
+       vertex -0.04666667 0.008 0
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.04666667 0.008 0
+       vertex -0.05333333 0.008 0
+       vertex -0.05333333 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.04666667 0.008 -0.01
+       vertex -0.04 0.008 -0.01
+       vertex -0.04 0.008 0
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.04 0.008 0
+       vertex -0.04666667 0.008 0
+       vertex -0.04666667 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.04 0.008 -0.01
+       vertex -0.03333333 0.008 -0.01
+       vertex -0.03333333 0.008 5.782412e-19
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.03333333 0.008 5.782412e-19
+       vertex -0.04 0.008 0
+       vertex -0.04 0.008 -0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.02666667 0.008 -5.782412e-19
+       vertex -0.03333333 0.008 5.782412e-19
+       vertex -0.03333333 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.03333333 0.008 -0.01
+       vertex -0.02666667 0.008 -0.01
+       vertex -0.02666667 0.008 -5.782412e-19
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.02666667 0.008 -0.01
+       vertex -0.02 0.008 -0.01
+       vertex -0.02 0.008 0
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.02 0.008 0
+       vertex -0.02666667 0.008 -5.782412e-19
+       vertex -0.02666667 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.02 0.008 -0.01
+       vertex -0.01333333 0.008 -0.01
+       vertex -0.01333333 0.008 0
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.01333333 0.008 0
+       vertex -0.02 0.008 0
+       vertex -0.02 0.008 -0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.1 0.008 0
+       vertex -0.09333333 0.008 0
+       vertex -0.09333333 0.008 0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.09333333 0.008 0.01
+       vertex -0.1 0.008 0.01
+       vertex -0.1 0.008 0
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.09333333 0.008 0
+       vertex -0.08666667 0.008 0
+       vertex -0.08666667 0.008 0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.08666667 0.008 0.01
+       vertex -0.09333333 0.008 0.01
+       vertex -0.09333333 0.008 0
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.08666667 0.008 0
+       vertex -0.08 0.008 0
+       vertex -0.08 0.008 0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.08 0.008 0.01
+       vertex -0.08666667 0.008 0.01
+       vertex -0.08666667 0.008 0
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.07333333 0.008 5.782412e-19
+       vertex -0.07333333 0.008 0.01
+       vertex -0.08 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.08 0.008 0.01
+       vertex -0.08 0.008 0
+       vertex -0.07333333 0.008 5.782412e-19
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.07333333 0.008 5.782412e-19
+       vertex -0.06666667 0.008 0
+       vertex -0.06666667 0.008 0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.06666667 0.008 0.01
+       vertex -0.07333333 0.008 0.01
+       vertex -0.07333333 0.008 5.782412e-19
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.06666667 0.008 0
+       vertex -0.06 0.008 0
+       vertex -0.06 0.008 0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.06 0.008 0.01
+       vertex -0.06666667 0.008 0.01
+       vertex -0.06666667 0.008 0
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.06 0.008 0
+       vertex -0.05333333 0.008 0
+       vertex -0.05333333 0.008 0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.05333333 0.008 0.01
+       vertex -0.06 0.008 0.01
+       vertex -0.06 0.008 0
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.05333333 0.008 0
+       vertex -0.04666667 0.008 0
+       vertex -0.04666667 0.008 0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.04666667 0.008 0.01
+       vertex -0.05333333 0.008 0.01
+       vertex -0.05333333 0.008 0
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.04666667 0.008 0
+       vertex -0.04 0.008 0
+       vertex -0.04 0.008 0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.04 0.008 0.01
+       vertex -0.04666667 0.008 0.01
+       vertex -0.04666667 0.008 0
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.03333333 0.008 5.782412e-19
+       vertex -0.03333333 0.008 0.01
+       vertex -0.04 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.04 0.008 0.01
+       vertex -0.04 0.008 0
+       vertex -0.03333333 0.008 5.782412e-19
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.03333333 0.008 5.782412e-19
+       vertex -0.02666667 0.008 -5.782412e-19
+       vertex -0.02666667 0.008 0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.02666667 0.008 0.01
+       vertex -0.03333333 0.008 0.01
+       vertex -0.03333333 0.008 5.782412e-19
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.02 0.008 0
+       vertex -0.02 0.008 0.01
+       vertex -0.02666667 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.02666667 0.008 0.01
+       vertex -0.02666667 0.008 -5.782412e-19
+       vertex -0.02 0.008 0
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.02 0.008 0
+       vertex -0.01333333 0.008 0
+       vertex -0.01333333 0.008 0.01
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.01333333 0.008 0.01
+       vertex -0.02 0.008 0.01
+       vertex -0.02 0.008 0
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.1 0.008 0.01
+       vertex -0.09333333 0.008 0.01
+       vertex -0.09333333 0.008 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.09333333 0.008 0.02
+       vertex -0.1 0.008 0.02
+       vertex -0.1 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.09333333 0.008 0.01
+       vertex -0.08666667 0.008 0.01
+       vertex -0.08666667 0.008 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.08666667 0.008 0.02
+       vertex -0.09333333 0.008 0.02
+       vertex -0.09333333 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.08666667 0.008 0.01
+       vertex -0.08 0.008 0.01
+       vertex -0.08 0.008 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.08 0.008 0.02
+       vertex -0.08666667 0.008 0.02
+       vertex -0.08666667 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.08 0.008 0.01
+       vertex -0.07333333 0.008 0.01
+       vertex -0.07333333 0.008 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.07333333 0.008 0.02
+       vertex -0.08 0.008 0.02
+       vertex -0.08 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.07333333 0.008 0.01
+       vertex -0.06666667 0.008 0.01
+       vertex -0.06666667 0.008 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.06666667 0.008 0.02
+       vertex -0.07333333 0.008 0.02
+       vertex -0.07333333 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.06666667 0.008 0.01
+       vertex -0.06 0.008 0.01
+       vertex -0.06 0.008 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.06 0.008 0.02
+       vertex -0.06666667 0.008 0.02
+       vertex -0.06666667 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.06 0.008 0.01
+       vertex -0.05333333 0.008 0.01
+       vertex -0.05333333 0.008 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.05333333 0.008 0.02
+       vertex -0.06 0.008 0.02
+       vertex -0.06 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.05333333 0.008 0.01
+       vertex -0.04666667 0.008 0.01
+       vertex -0.04666667 0.008 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.04666667 0.008 0.02
+       vertex -0.05333333 0.008 0.02
+       vertex -0.05333333 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.04666667 0.008 0.01
+       vertex -0.04 0.008 0.01
+       vertex -0.04 0.008 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.04 0.008 0.02
+       vertex -0.04666667 0.008 0.02
+       vertex -0.04666667 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.04 0.008 0.01
+       vertex -0.03333333 0.008 0.01
+       vertex -0.03333333 0.008 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.03333333 0.008 0.02
+       vertex -0.04 0.008 0.02
+       vertex -0.04 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.03333333 0.008 0.01
+       vertex -0.02666667 0.008 0.01
+       vertex -0.02666667 0.008 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.02666667 0.008 0.02
+       vertex -0.03333333 0.008 0.02
+       vertex -0.03333333 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.02666667 0.008 0.01
+       vertex -0.02 0.008 0.01
+       vertex -0.02 0.008 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.02 0.008 0.02
+       vertex -0.02666667 0.008 0.02
+       vertex -0.02666667 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.02 0.008 0.01
+       vertex -0.01333333 0.008 0.01
+       vertex -0.01333333 0.008 0.02
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.01333333 0.008 0.02
+       vertex -0.02 0.008 0.02
+       vertex -0.02 0.008 0.01
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.1 0.008 0.02
+       vertex -0.09333333 0.008 0.02
+       vertex -0.09333333 0.008 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.09333333 0.008 0.03
+       vertex -0.1 0.008 0.03
+       vertex -0.1 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.09333333 0.008 0.02
+       vertex -0.08666667 0.008 0.02
+       vertex -0.08666667 0.008 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.08666667 0.008 0.03
+       vertex -0.09333333 0.008 0.03
+       vertex -0.09333333 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.08666667 0.008 0.02
+       vertex -0.08 0.008 0.02
+       vertex -0.08 0.008 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.08 0.008 0.03
+       vertex -0.08666667 0.008 0.03
+       vertex -0.08666667 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.08 0.008 0.02
+       vertex -0.07333333 0.008 0.02
+       vertex -0.07333333 0.008 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.07333333 0.008 0.03
+       vertex -0.08 0.008 0.03
+       vertex -0.08 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.07333333 0.008 0.02
+       vertex -0.06666667 0.008 0.02
+       vertex -0.06666667 0.008 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.06666667 0.008 0.03
+       vertex -0.07333333 0.008 0.03
+       vertex -0.07333333 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.06666667 0.008 0.02
+       vertex -0.06 0.008 0.02
+       vertex -0.06 0.008 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.06 0.008 0.03
+       vertex -0.06666667 0.008 0.03
+       vertex -0.06666667 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.06 0.008 0.02
+       vertex -0.05333333 0.008 0.02
+       vertex -0.05333333 0.008 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.05333333 0.008 0.03
+       vertex -0.06 0.008 0.03
+       vertex -0.06 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.05333333 0.008 0.02
+       vertex -0.04666667 0.008 0.02
+       vertex -0.04666667 0.008 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.04666667 0.008 0.03
+       vertex -0.05333333 0.008 0.03
+       vertex -0.05333333 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.04666667 0.008 0.02
+       vertex -0.04 0.008 0.02
+       vertex -0.04 0.008 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.04 0.008 0.03
+       vertex -0.04666667 0.008 0.03
+       vertex -0.04666667 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.04 0.008 0.02
+       vertex -0.03333333 0.008 0.02
+       vertex -0.03333333 0.008 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.03333333 0.008 0.03
+       vertex -0.04 0.008 0.03
+       vertex -0.04 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.03333333 0.008 0.02
+       vertex -0.02666667 0.008 0.02
+       vertex -0.02666667 0.008 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.02666667 0.008 0.03
+       vertex -0.03333333 0.008 0.03
+       vertex -0.03333333 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.02666667 0.008 0.02
+       vertex -0.02 0.008 0.02
+       vertex -0.02 0.008 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.02 0.008 0.03
+       vertex -0.02666667 0.008 0.03
+       vertex -0.02666667 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.02 0.008 0.02
+       vertex -0.01333333 0.008 0.02
+       vertex -0.01333333 0.008 0.03
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.01333333 0.008 0.03
+       vertex -0.02 0.008 0.03
+       vertex -0.02 0.008 0.02
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.1 0.008 0.03
+       vertex -0.09333333 0.008 0.03
+       vertex -0.09333333 0.008 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.09333333 0.008 0.04
+       vertex -0.1 0.008 0.04
+       vertex -0.1 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.09333333 0.008 0.03
+       vertex -0.08666667 0.008 0.03
+       vertex -0.08666667 0.008 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.08666667 0.008 0.04
+       vertex -0.09333333 0.008 0.04
+       vertex -0.09333333 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.08666667 0.008 0.03
+       vertex -0.08 0.008 0.03
+       vertex -0.08 0.008 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.08 0.008 0.04
+       vertex -0.08666667 0.008 0.04
+       vertex -0.08666667 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.08 0.008 0.03
+       vertex -0.07333333 0.008 0.03
+       vertex -0.07333333 0.008 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.07333333 0.008 0.04
+       vertex -0.08 0.008 0.04
+       vertex -0.08 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.07333333 0.008 0.03
+       vertex -0.06666667 0.008 0.03
+       vertex -0.06666667 0.008 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.06666667 0.008 0.04
+       vertex -0.07333333 0.008 0.04
+       vertex -0.07333333 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.06666667 0.008 0.03
+       vertex -0.06 0.008 0.03
+       vertex -0.06 0.008 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.06 0.008 0.04
+       vertex -0.06666667 0.008 0.04
+       vertex -0.06666667 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.06 0.008 0.03
+       vertex -0.05333333 0.008 0.03
+       vertex -0.05333333 0.008 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.05333333 0.008 0.04
+       vertex -0.06 0.008 0.04
+       vertex -0.06 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.05333333 0.008 0.03
+       vertex -0.04666667 0.008 0.03
+       vertex -0.04666667 0.008 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.04666667 0.008 0.04
+       vertex -0.05333333 0.008 0.04
+       vertex -0.05333333 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.04666667 0.008 0.03
+       vertex -0.04 0.008 0.03
+       vertex -0.04 0.008 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.04 0.008 0.04
+       vertex -0.04666667 0.008 0.04
+       vertex -0.04666667 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.04 0.008 0.03
+       vertex -0.03333333 0.008 0.03
+       vertex -0.03333333 0.008 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.03333333 0.008 0.04
+       vertex -0.04 0.008 0.04
+       vertex -0.04 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.03333333 0.008 0.03
+       vertex -0.02666667 0.008 0.03
+       vertex -0.02666667 0.008 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.02666667 0.008 0.04
+       vertex -0.03333333 0.008 0.04
+       vertex -0.03333333 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.02666667 0.008 0.03
+       vertex -0.02 0.008 0.03
+       vertex -0.02 0.008 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.02 0.008 0.04
+       vertex -0.02666667 0.008 0.04
+       vertex -0.02666667 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.02 0.008 0.03
+       vertex -0.01333333 0.008 0.03
+       vertex -0.01333333 0.008 0.04
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.01333333 0.008 0.04
+       vertex -0.02 0.008 0.04
+       vertex -0.02 0.008 0.03
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.1 0.008 0.04
+       vertex -0.09333333 0.008 0.04
+       vertex -0.09333333 0.008 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.09333333 0.008 0.05
+       vertex -0.1 0.008 0.05
+       vertex -0.1 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.09333333 0.008 0.04
+       vertex -0.08666667 0.008 0.04
+       vertex -0.08666667 0.008 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.08666667 0.008 0.05
+       vertex -0.09333333 0.008 0.05
+       vertex -0.09333333 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.08666667 0.008 0.04
+       vertex -0.08 0.008 0.04
+       vertex -0.08 0.008 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.08 0.008 0.05
+       vertex -0.08666667 0.008 0.05
+       vertex -0.08666667 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.08 0.008 0.04
+       vertex -0.07333333 0.008 0.04
+       vertex -0.07333333 0.008 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.07333333 0.008 0.05
+       vertex -0.08 0.008 0.05
+       vertex -0.08 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.07333333 0.008 0.04
+       vertex -0.06666667 0.008 0.04
+       vertex -0.06666667 0.008 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.06666667 0.008 0.05
+       vertex -0.07333333 0.008 0.05
+       vertex -0.07333333 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.06666667 0.008 0.04
+       vertex -0.06 0.008 0.04
+       vertex -0.06 0.008 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.06 0.008 0.05
+       vertex -0.06666667 0.008 0.05
+       vertex -0.06666667 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.06 0.008 0.04
+       vertex -0.05333333 0.008 0.04
+       vertex -0.05333333 0.008 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.05333333 0.008 0.05
+       vertex -0.06 0.008 0.05
+       vertex -0.06 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.05333333 0.008 0.04
+       vertex -0.04666667 0.008 0.04
+       vertex -0.04666667 0.008 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.04666667 0.008 0.05
+       vertex -0.05333333 0.008 0.05
+       vertex -0.05333333 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.04666667 0.008 0.04
+       vertex -0.04 0.008 0.04
+       vertex -0.04 0.008 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.04 0.008 0.05
+       vertex -0.04666667 0.008 0.05
+       vertex -0.04666667 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.04 0.008 0.04
+       vertex -0.03333333 0.008 0.04
+       vertex -0.03333333 0.008 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.03333333 0.008 0.05
+       vertex -0.04 0.008 0.05
+       vertex -0.04 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.03333333 0.008 0.04
+       vertex -0.02666667 0.008 0.04
+       vertex -0.02666667 0.008 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.02666667 0.008 0.05
+       vertex -0.03333333 0.008 0.05
+       vertex -0.03333333 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.02666667 0.008 0.04
+       vertex -0.02 0.008 0.04
+       vertex -0.02 0.008 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.02 0.008 0.05
+       vertex -0.02666667 0.008 0.05
+       vertex -0.02666667 0.008 0.04
+    endloop
+  endfacet
+  facet normal 0 -1 0
+    outer loop
+       vertex -0.02 0.008 0.04
+       vertex -0.01333333 0.008 0.04
+       vertex -0.01333333 0.008 0.05
+    endloop
+  endfacet
+  facet normal -0 -1 0
+    outer loop
+       vertex -0.01333333 0.008 0.05
+       vertex -0.02 0.008 0.05
+       vertex -0.02 0.008 0.04
+    endloop
+  endfacet
+endsolid topAir_to_leftSolid
diff --git a/tutorials/mesh/snappyHexMesh/multiRegionMesh/makeCellSets.setSet b/tutorials/mesh/snappyHexMesh/multiRegionMesh/makeCellSets.setSet
new file mode 100644
index 0000000000000000000000000000000000000000..84c52f85b36fd8d8f90b07b24898b7b8857add26
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/multiRegionMesh/makeCellSets.setSet
@@ -0,0 +1,11 @@
+cellSet heater new boxToCell (-0.01    0 -100 )(0.01 0.01 100)
+cellSet heater add boxToCell (-0.01 -100 -0.01)(0.01 0.01 0.01)
+cellSet leftSolid new boxToCell (-100 0 -100 )(-0.01 0.01 100)
+cellSet rightSolid new boxToCell (0.01 0 -100 )(100 0.01 100)
+cellSet topAir new boxToCell (-100 0.01 -100 )(100 100 100)
+cellSet bottomAir clear
+cellSet bottomAir add cellToCell heater
+cellSet bottomAir add cellToCell leftSolid
+cellSet bottomAir add cellToCell rightSolid
+cellSet bottomAir add cellToCell topAir
+cellSet bottomAir invert
diff --git a/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/README b/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/README
new file mode 100644
index 0000000000000000000000000000000000000000..5a81b9a5708b0346c6cdd4bd2f6835feb3700bc1
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/README
@@ -0,0 +1,3 @@
+fvSolution is used for outer correctors specification.
+fvSchemes is only so that pre-processing activities can proceed
+
diff --git a/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/bottomAir/changeDictionaryDict b/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/bottomAir/changeDictionaryDict
new file mode 100644
index 0000000000000000000000000000000000000000..f3d186d1e81fb8541695551656604c4d3efaa6a4
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/bottomAir/changeDictionaryDict
@@ -0,0 +1,301 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      changeDictionaryDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dictionaryReplacement
+{
+    boundary
+    {
+        bottomAir_to_leftSolid
+        {
+            offset          ( 0 0 0 );
+            sampleMode      nearestPatchFace;
+            sampleRegion    leftSolid;
+            samplePatch     leftSolid_to_bottomAir;
+        }
+        bottomAir_to_rightSolid
+        {
+            offset          ( 0 0 0 );
+            sampleMode      nearestPatchFace;
+            sampleRegion    rightSolid;
+            samplePatch     rightSolid_to_bottomAir;
+        }
+        bottomAir_to_heater
+        {
+            offset          ( 0 0 0 );
+            sampleMode      nearestPatchFace;
+            sampleRegion    heater;
+            samplePatch     heater_to_bottomAir;
+        }
+    }
+
+    U
+    {
+        internalField   uniform (0 0 0);
+        boundaryField
+        {
+            minX
+            {
+                type            fixedValue;
+                value           uniform (0 0 0);
+            }
+            maxX
+            {
+                type            fixedValue;
+                value           uniform (0 0 0);
+            }
+
+            minY
+            {
+                type            fixedValue;
+                value           uniform (0 0 0);
+            }
+
+            minZ
+            {
+                type            fixedValue;
+                value           uniform (0 0 0);
+            }
+
+            maxZ
+            {
+                type            fixedValue;
+                value           uniform (0 0 0);
+            }
+
+            bottomAir_to_leftSolid
+            {
+                type            fixedValue;
+                value           uniform (0 0 0);
+
+            }
+            bottomAir_to_heater
+            {
+                type            fixedValue;
+                value           uniform (0 0 0);
+            }
+            bottomAir_to_rightSolid
+            {
+                type            fixedValue;
+                value           uniform (0 0 0);
+            }
+        }
+    }
+
+    T
+    {
+        boundaryField
+        {
+            minX
+            {
+                type            zeroGradient;
+            }
+            maxX
+            {
+                type            zeroGradient;
+            }
+            minY
+            {
+                type            zeroGradient;
+            }
+            minZ
+            {
+                type            zeroGradient;
+            }
+            maxZ
+            {
+                type            zeroGradient;
+            }
+            bottomAir_to_leftSolid
+            {
+                type            solidWallMixedTemperatureCoupled;
+                neighbourFieldName T;
+                K               K;
+                value           uniform 300;
+            }
+            bottomAir_to_heater
+            {
+                type            solidWallMixedTemperatureCoupled;
+                neighbourFieldName T;
+                K               K;
+                value           uniform 300;
+            }
+            bottomAir_to_rightSolid
+            {
+                type            solidWallMixedTemperatureCoupled;
+                neighbourFieldName T;
+                K               K;
+                value           uniform 300;
+            }
+        }
+    }
+
+    epsilon
+    {
+        // Set the value on all bc to non-zero. Not used in simulation
+        // since zeroGradient; only used in initialisation.
+        internalField   uniform 0.01;
+
+        boundaryField
+        {
+            minX
+            {
+                type            zeroGradient;
+                value           uniform 0.01;
+            }
+            maxX
+            {
+                type            zeroGradient;
+                value           uniform 0.01;
+            }
+
+            minY
+            {
+                type            zeroGradient;
+                value           uniform 0.01;
+            }
+
+            minZ
+            {
+                type            zeroGradient;
+                value           uniform 0.01;
+            }
+            maxZ
+            {
+                type            zeroGradient;
+                value           uniform 0.01;
+            }
+
+            bottomAir_to_leftSolid
+            {
+                type            zeroGradient;
+                value           uniform 0.01;
+            }
+            bottomAir_to_heater
+            {
+                type            zeroGradient;
+                value           uniform 0.01;
+            }
+            bottomAir_to_rightSolid
+            {
+                type            zeroGradient;
+                value           uniform 0.01;
+            }
+        }
+    }
+
+    k
+    {
+        internalField   uniform 0.1;
+        boundaryField
+        {
+            minX
+            {
+                type            zeroGradient;
+                value           uniform 0.1;
+            }
+            maxX
+            {
+                type            zeroGradient;
+                value           uniform 0.1;
+            }
+
+            minY
+            {
+                type            zeroGradient;
+                value           uniform 0.1;
+            }
+
+            minZ
+            {
+                type            zeroGradient;
+                value           uniform 0.1;
+            }
+            maxZ
+            {
+                type            zeroGradient;
+                value           uniform 0.1;
+            }
+
+            bottomAir_to_leftSolid
+            {
+                type            zeroGradient;
+                value           uniform 0.1;
+            }
+            bottomAir_to_heater
+            {
+                type            zeroGradient;
+                value           uniform 0.1;
+            }
+            bottomAir_to_rightSolid
+            {
+                type            zeroGradient;
+                value           uniform 0.1;
+            }
+        }
+    }
+
+    p
+    {
+        internalField   uniform 1E5;
+
+        boundaryField
+        {
+            minX
+            {
+                type            buoyantPressure;
+                value           1e5;
+            }
+            maxX
+            {
+                type            buoyantPressure;
+                value           1e5;
+            }
+            minY
+            {
+                type            buoyantPressure;
+                value           1e5;
+            }
+            minZ
+            {
+                type            buoyantPressure;
+                value           1e5;
+            }
+            maxZ
+            {
+                type            buoyantPressure;
+                value           1e5;
+            }
+            bottomAir_to_leftSolid
+            {
+                type            buoyantPressure;
+                value           1e5;
+            }
+            bottomAir_to_heater
+            {
+                type            buoyantPressure;
+                value           1e5;
+            }
+            bottomAir_to_rightSolid
+            {
+                type            buoyantPressure;
+                value           1e5;
+            }
+        }
+    }
+
+}
+
+// ************************************************************************* //
diff --git a/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/bottomAir/decomposeParDict b/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/bottomAir/decomposeParDict
new file mode 100644
index 0000000000000000000000000000000000000000..aad15ee459b6e01cdf6fabba08eb2fa5b8c2a4dd
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/bottomAir/decomposeParDict
@@ -0,0 +1,86 @@
+/*-------------------------------*- C++ -*---------------------------------*\
+|    =========                                                              |
+|    \\      /     OpenFOAM                                                 |
+|     \\    /                                                               |
+|      \\  /       The Open Source CFD Toolbox                              |
+|       \\/                                        http://www.OpenFOAM.org  |
+\*-------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    note        "mesh decomposition control dictionary";
+    location    "system";
+    object      decomposeParDict;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+numberOfSubdomains  4;
+
+//- Keep owner and neighbour on same processor for faces in zones:
+// preserveFaceZones (heater solid1 solid3);
+
+method          scotch;
+// method          hierarchical;
+// method          simple;
+// method          metis;
+// method          manual;
+
+simpleCoeffs
+{
+    n           (2 2 1);
+    delta       0.001;
+}
+
+hierarchicalCoeffs
+{
+    n           (2 2 1);
+    delta       0.001;
+    order       xyz;
+}
+
+metisCoeffs
+{
+ /*
+    processorWeights
+    (
+        1
+        1
+        1
+        1
+    );
+  */
+}
+
+scotchCoeffs
+{
+    //processorWeights
+    //(
+    //    1
+    //    1
+    //    1
+    //    1
+    //);
+    //writeGraph  true;
+    //strategy "b";
+}
+
+manualCoeffs
+{
+    dataFile    "decompositionData";
+}
+
+
+//// Is the case distributed
+//distributed     yes;
+//// Per slave (so nProcs-1 entries) the directory above the case.
+//roots           
+//(
+//    "/tmp"
+//    "/tmp"
+//);
+
+
+// ************************************************************************* //
diff --git a/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/bottomAir/fvSchemes b/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/bottomAir/fvSchemes
new file mode 100644
index 0000000000000000000000000000000000000000..5559e33626b9f62d129a9265641d3156edb4814d
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/bottomAir/fvSchemes
@@ -0,0 +1,69 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      fvSchemes;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ddtSchemes
+{
+    default Euler;
+    //default CoEuler phi rho 0.1;
+}
+
+gradSchemes
+{
+    default         Gauss linear;
+//    grad(U)         cellLimited Gauss linear 1;
+}
+
+divSchemes
+{
+    default         none;
+    div(phi,U)      Gauss upwind;
+    div(phiU,p)     Gauss linear;
+    div(phi,h)      Gauss upwind;
+    div(phi,k)      Gauss upwind;
+    div(phi,epsilon) Gauss upwind;
+    div(phi,R)      Gauss upwind;
+    div(R)          Gauss linear;
+    div((muEff*dev2(grad(U).T()))) Gauss linear;
+}
+
+laplacianSchemes
+{
+    default         none;
+    laplacian(muEff,U) Gauss linear limited 0.333;
+    laplacian((rho*(1|A(U))),p) Gauss linear limited 0.333;
+    laplacian(alphaEff,h) Gauss linear limited 0.333;
+    laplacian(DkEff,k) Gauss linear limited 0.333;
+    laplacian(DepsilonEff,epsilon) Gauss linear limited 0.333;
+    laplacian(DREff,R) Gauss linear limited 0.333;
+}
+
+interpolationSchemes
+{
+    default         linear;
+}
+
+snGradSchemes
+{
+    default         limited 0.333;
+}
+
+fluxRequired
+{
+    default         no;
+    p;
+}
+
+// ************************************************************************* //
diff --git a/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/bottomAir/fvSolution b/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/bottomAir/fvSolution
new file mode 100644
index 0000000000000000000000000000000000000000..e0ecb9405c6ee97475280b790e95176ff3b61e41
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/bottomAir/fvSolution
@@ -0,0 +1,123 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      fvSolution;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+solvers
+{
+    rho
+    {
+        solver          PCG
+        preconditioner  DIC;
+        tolerance       1e-8;
+        relTol          0;
+    };
+    p
+    {
+        solver           GAMG;
+        tolerance        1e-8;
+        relTol           0.01;
+
+        smoother         GaussSeidel;
+
+        cacheAgglomeration true;
+        nCellsInCoarsestLevel 10;
+        agglomerator     faceAreaPair;
+        mergeLevels      1;
+    };
+    pFinal
+    {
+        solver           GAMG;
+        tolerance        1e-8;
+        relTol           0;
+
+        smoother         GaussSeidel;
+
+        cacheAgglomeration true;
+        nCellsInCoarsestLevel 10;
+        agglomerator     faceAreaPair;
+        mergeLevels      1;
+    };
+    U
+    {
+        solver           PBiCG;
+        preconditioner   DILU;
+        tolerance        1e-08;
+        relTol           0;
+    };
+
+    h
+    {
+        solver           PBiCG;
+        preconditioner   DILU;
+        tolerance        1e-08;
+        relTol           0.1;
+    };
+    hFinal
+    {
+        solver           PBiCG;
+        preconditioner   DILU;
+        tolerance        1e-08;
+        relTol           0;
+    };
+
+    k
+    {
+        solver           PBiCG;
+        preconditioner   DILU;
+        tolerance        1e-08;
+        relTol           0;
+    };
+    epsilon
+    {
+        solver           PBiCG;
+        preconditioner   DILU;
+        tolerance        1e-08;
+        relTol           0;
+    };
+    R
+    {
+        solver           PBiCG;
+        preconditioner   DILU;
+        tolerance        1e-08;
+        relTol           0;
+    };
+}
+
+PISO
+{
+    momentumPredictor   off;
+    nOuterCorrectors     1;
+    nCorrectors     2;
+    nNonOrthogonalCorrectors 1;
+    pRefPoint       (-0.081 -0.0257 8.01);
+    pRefValue       1e5;
+}
+
+
+PIMPLE
+{
+    momentumPredictor   on;
+    nCorrectors         2;
+    nNonOrthogonalCorrectors 0;
+}
+
+
+relaxationFactors
+{
+//    h               0.9;
+//    U               0.9;
+}
+
+// ************************************************************************* //
diff --git a/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/controlDict b/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/controlDict
new file mode 100644
index 0000000000000000000000000000000000000000..71de8302ef042c04270bbd8376202ab23149f51c
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/controlDict
@@ -0,0 +1,52 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      controlDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+startFrom       latestTime;
+
+startTime       0.001;
+
+stopAt          endTime;
+
+endTime         200;
+
+deltaT          0.001;
+
+writeControl    adjustableRunTime;
+writeInterval   50;
+//writeControl    timeStep;
+//writeInterval   100;
+
+purgeWrite      0;
+
+writeFormat     ascii;
+
+writePrecision  7;
+
+writeCompression uncompressed;
+
+timeFormat      general;
+
+timePrecision   6;
+
+runTimeModifiable yes;
+
+maxCo           0.3;
+
+adjustTimeStep  yes;
+
+
+// ************************************************************************* //
diff --git a/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/decomposeParDict b/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/decomposeParDict
new file mode 100644
index 0000000000000000000000000000000000000000..aad15ee459b6e01cdf6fabba08eb2fa5b8c2a4dd
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/decomposeParDict
@@ -0,0 +1,86 @@
+/*-------------------------------*- C++ -*---------------------------------*\
+|    =========                                                              |
+|    \\      /     OpenFOAM                                                 |
+|     \\    /                                                               |
+|      \\  /       The Open Source CFD Toolbox                              |
+|       \\/                                        http://www.OpenFOAM.org  |
+\*-------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    note        "mesh decomposition control dictionary";
+    location    "system";
+    object      decomposeParDict;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+numberOfSubdomains  4;
+
+//- Keep owner and neighbour on same processor for faces in zones:
+// preserveFaceZones (heater solid1 solid3);
+
+method          scotch;
+// method          hierarchical;
+// method          simple;
+// method          metis;
+// method          manual;
+
+simpleCoeffs
+{
+    n           (2 2 1);
+    delta       0.001;
+}
+
+hierarchicalCoeffs
+{
+    n           (2 2 1);
+    delta       0.001;
+    order       xyz;
+}
+
+metisCoeffs
+{
+ /*
+    processorWeights
+    (
+        1
+        1
+        1
+        1
+    );
+  */
+}
+
+scotchCoeffs
+{
+    //processorWeights
+    //(
+    //    1
+    //    1
+    //    1
+    //    1
+    //);
+    //writeGraph  true;
+    //strategy "b";
+}
+
+manualCoeffs
+{
+    dataFile    "decompositionData";
+}
+
+
+//// Is the case distributed
+//distributed     yes;
+//// Per slave (so nProcs-1 entries) the directory above the case.
+//roots           
+//(
+//    "/tmp"
+//    "/tmp"
+//);
+
+
+// ************************************************************************* //
diff --git a/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/fvSchemes b/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/fvSchemes
new file mode 100644
index 0000000000000000000000000000000000000000..4c5f890224ae9fc5c14ce322600ab186c3d05c72
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/fvSchemes
@@ -0,0 +1,46 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      fvSchemes;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ddtSchemes
+{
+}
+
+gradSchemes
+{
+}
+
+divSchemes
+{
+}
+
+laplacianSchemes
+{
+}
+
+interpolationSchemes
+{
+}
+
+snGradSchemes
+{
+}
+
+fluxRequired
+{
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/fvSolution b/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/fvSolution
new file mode 100644
index 0000000000000000000000000000000000000000..50f28d672d7203b69ec909d90a6764a191c51631
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/fvSolution
@@ -0,0 +1,22 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      fvSolution;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+PIMPLE
+{
+    nOuterCorrectors 1;
+}
+
+// ************************************************************************* //
diff --git a/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/heater/changeDictionaryDict b/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/heater/changeDictionaryDict
new file mode 100644
index 0000000000000000000000000000000000000000..2bea6785224723f43db9cba91aaaf21d5ebf8998
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/heater/changeDictionaryDict
@@ -0,0 +1,216 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      changeDictionaryDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dictionaryReplacement
+{
+    boundary
+    {
+        heater_to_bottomAir
+        {
+            offset          ( 0 0 0 );
+            sampleMode      nearestPatchFace;
+            sampleRegion    bottomAir;
+            samplePatch     bottomAir_to_heater;
+        }
+        heater_to_leftSolid
+        {
+            offset          ( 0 0 0 );
+            sampleMode      nearestPatchFace;
+            sampleRegion    leftSolid;
+            samplePatch     leftSolid_to_heater;
+        }
+        heater_to_rightSolid
+        {
+            offset          ( 0 0 0 );
+            sampleMode      nearestPatchFace;
+            sampleRegion    rightSolid;
+            samplePatch     rightSolid_to_heater;
+        }
+        heater_to_topAir
+        {
+            offset          ( 0 0 0 );
+            sampleMode      nearestPatchFace;
+            sampleRegion    topAir;
+            samplePatch     topAir_to_heater;
+        }
+    }
+
+    T
+    {
+        internalField   uniform 300;
+
+        boundaryField
+        {
+            minY
+            {
+                type            fixedValue;
+                value           uniform 500;
+            }
+
+            minZ
+            {
+                type            zeroGradient;
+            }
+            maxZ
+            {
+                type            zeroGradient;
+            }
+
+            heater_to_bottomAir
+            {
+                type            solidWallMixedTemperatureCoupled;
+                neighbourFieldName T;
+                K               K;
+                value           uniform 300;
+
+            }
+            heater_to_leftSolid
+            {
+                type            solidWallMixedTemperatureCoupled;
+                neighbourFieldName T;
+                K               K;
+                value           uniform 300;
+            }
+            heater_to_rightSolid
+            {
+                type            solidWallMixedTemperatureCoupled;
+                neighbourFieldName T;
+                K               K;
+                value           uniform 300;
+            }
+            heater_to_topAir
+            {
+                type            solidWallMixedTemperatureCoupled;
+                neighbourFieldName T;
+                K               K;
+                value           uniform 300;
+            }
+        }
+    }
+
+    rho
+    {
+        internalField   uniform 8000;
+
+        boundaryField
+        {
+            minY
+            {
+                type            zeroGradient;
+            }
+            minZ
+            {
+                type            zeroGradient;
+            }
+            maxZ
+            {
+                type            zeroGradient;
+            }
+            heater_to_bottomAir
+            {
+                type            zeroGradient;
+            }
+            heater_to_leftSolid
+            {
+                type            zeroGradient;
+            }
+            heater_to_rightSolid
+            {
+                type            zeroGradient;
+            }
+            heater_to_topAir
+            {
+                type            zeroGradient;
+            }
+        }
+    }
+
+    K
+    {
+        internalField   uniform 80;
+
+        boundaryField
+        {
+            minY
+            {
+                type            zeroGradient;
+            }
+            minZ
+            {
+                type            zeroGradient;
+            }
+            maxZ
+            {
+                type            zeroGradient;
+            }
+            heater_to_bottomAir
+            {
+                type            zeroGradient;
+            }
+            heater_to_leftSolid
+            {
+                type            zeroGradient;
+            }
+            heater_to_rightSolid
+            {
+                type            zeroGradient;
+            }
+            heater_to_topAir
+            {
+                type            zeroGradient;
+            }
+        }
+    }
+
+    cp
+    {
+        internalField   uniform 450;
+
+        boundaryField
+        {
+            minY
+            {
+                type            zeroGradient;
+            }
+            minZ
+            {
+                type            zeroGradient;
+            }
+            maxZ
+            {
+                type            zeroGradient;
+            }
+            heater_to_bottomAir
+            {
+                type            zeroGradient;
+            }
+            heater_to_leftSolid
+            {
+                type            zeroGradient;
+            }
+            heater_to_rightSolid
+            {
+                type            zeroGradient;
+            }
+            heater_to_topAir
+            {
+                type            zeroGradient;
+            }
+        }
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/heater/decomposeParDict b/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/heater/decomposeParDict
new file mode 100644
index 0000000000000000000000000000000000000000..aad15ee459b6e01cdf6fabba08eb2fa5b8c2a4dd
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/heater/decomposeParDict
@@ -0,0 +1,86 @@
+/*-------------------------------*- C++ -*---------------------------------*\
+|    =========                                                              |
+|    \\      /     OpenFOAM                                                 |
+|     \\    /                                                               |
+|      \\  /       The Open Source CFD Toolbox                              |
+|       \\/                                        http://www.OpenFOAM.org  |
+\*-------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    note        "mesh decomposition control dictionary";
+    location    "system";
+    object      decomposeParDict;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+numberOfSubdomains  4;
+
+//- Keep owner and neighbour on same processor for faces in zones:
+// preserveFaceZones (heater solid1 solid3);
+
+method          scotch;
+// method          hierarchical;
+// method          simple;
+// method          metis;
+// method          manual;
+
+simpleCoeffs
+{
+    n           (2 2 1);
+    delta       0.001;
+}
+
+hierarchicalCoeffs
+{
+    n           (2 2 1);
+    delta       0.001;
+    order       xyz;
+}
+
+metisCoeffs
+{
+ /*
+    processorWeights
+    (
+        1
+        1
+        1
+        1
+    );
+  */
+}
+
+scotchCoeffs
+{
+    //processorWeights
+    //(
+    //    1
+    //    1
+    //    1
+    //    1
+    //);
+    //writeGraph  true;
+    //strategy "b";
+}
+
+manualCoeffs
+{
+    dataFile    "decompositionData";
+}
+
+
+//// Is the case distributed
+//distributed     yes;
+//// Per slave (so nProcs-1 entries) the directory above the case.
+//roots           
+//(
+//    "/tmp"
+//    "/tmp"
+//);
+
+
+// ************************************************************************* //
diff --git a/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/heater/fvSchemes b/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/heater/fvSchemes
new file mode 100644
index 0000000000000000000000000000000000000000..653c819be5bbf72737c34eeccec937508c2847fe
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/heater/fvSchemes
@@ -0,0 +1,53 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      fvSchemes;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ddtSchemes
+{
+    default Euler;
+}
+
+gradSchemes
+{
+    default         Gauss linear;
+}
+
+divSchemes
+{
+    default         none;
+}
+
+laplacianSchemes
+{
+    default         none;
+    laplacian(K,T) Gauss linear limited 0.333;
+}
+
+interpolationSchemes
+{
+    default         linear;
+}
+
+snGradSchemes
+{
+    default         limited 0.333;
+}
+
+fluxRequired
+{
+    default         no;
+}
+
+// ************************************************************************* //
diff --git a/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/heater/fvSolution b/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/heater/fvSolution
new file mode 100644
index 0000000000000000000000000000000000000000..342a7d4232540c1bcefb8362e4e638d7e9a3b9b0
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/heater/fvSolution
@@ -0,0 +1,38 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      fvSolution;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+solvers
+{
+    T
+    {
+        solver           PCG;
+        preconditioner   DIC;
+        tolerance        1E-06;
+        relTol           0;
+    };
+}
+
+PISO
+{
+    nNonOrthogonalCorrectors 1;
+}
+
+PIMPLE
+{
+    nNonOrthogonalCorrectors 1;
+}
+
+// ************************************************************************* //
diff --git a/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/leftSolid/changeDictionaryDict b/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/leftSolid/changeDictionaryDict
new file mode 100644
index 0000000000000000000000000000000000000000..0fb3ee191c8a06de31849237b5bdd5499d40f8f0
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/leftSolid/changeDictionaryDict
@@ -0,0 +1,187 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      changeDictionaryDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dictionaryReplacement
+{
+    boundary
+    {
+        leftSolid_to_bottomAir
+        {
+            offset          ( 0 0 0 );
+            sampleMode      nearestPatchFace;
+            sampleRegion    bottomAir;
+            samplePatch     bottomAir_to_leftSolid;
+        }
+        leftSolid_to_heater
+        {
+            offset          ( 0 0 0 );
+            sampleMode      nearestPatchFace;
+            sampleRegion    heater;
+            samplePatch     heater_to_leftSolid;;
+        }
+        leftSolid_to_topAir
+        {
+            offset          ( 0 0 0 );
+            sampleMode      nearestPatchFace;
+            sampleRegion    topAir;
+            samplePatch     topAir_to_leftSolid;;
+        }
+    }
+
+    T
+    {
+        internalField   uniform 300;
+
+        boundaryField
+        {
+            minX
+            {
+                type            zeroGradient;
+            }
+            minZ
+            {
+                type            zeroGradient;
+            }
+            maxZ
+            {
+                type            zeroGradient;
+            }
+            leftSolid_to_bottomAir
+            {
+                type            solidWallMixedTemperatureCoupled;
+                neighbourFieldName T;
+                K               K;
+                value           uniform 300;
+
+            }
+            leftSolid_to_heater
+            {
+                type            solidWallMixedTemperatureCoupled;
+                neighbourFieldName T;
+                K               K;
+                value           uniform 300;
+            }
+            leftSolid_to_topAir
+            {
+                type            solidWallMixedTemperatureCoupled;
+                neighbourFieldName T;
+                K               K;
+                value           uniform 300;
+            }
+        }
+    }
+
+    rho
+    {
+        internalField   uniform 8000;
+
+        boundaryField
+        {
+            minX
+            {
+                type            zeroGradient;
+            }
+            minZ
+            {
+                type            zeroGradient;
+            }
+            maxZ
+            {
+                type            zeroGradient;
+            }
+            leftSolid_to_bottomAir
+            {
+                type            zeroGradient;
+            }
+            leftSolid_to_heater
+            {
+                type            zeroGradient;
+            }
+            leftSolid_to_topAir
+            {
+                type            zeroGradient;
+            }
+        }
+    }
+
+    K
+    {
+        internalField   uniform 80;
+
+        boundaryField
+        {
+            minX
+            {
+                type            zeroGradient;
+            }
+            minZ
+            {
+                type            zeroGradient;
+            }
+            maxZ
+            {
+                type            zeroGradient;
+            }
+            leftSolid_to_bottomAir
+            {
+                type            zeroGradient;
+            }
+            leftSolid_to_heater
+            {
+                type            zeroGradient;
+            }
+            leftSolid_to_topAir
+            {
+                type            zeroGradient;
+            }
+        }
+    }
+
+    cp
+    {
+        internalField   uniform 450;
+
+        boundaryField
+        {
+            minX
+            {
+                type            zeroGradient;
+            }
+            minZ
+            {
+                type            zeroGradient;
+            }
+            maxZ
+            {
+                type            zeroGradient;
+            }
+            leftSolid_to_bottomAir
+            {
+                type            zeroGradient;
+            }
+            leftSolid_to_heater
+            {
+                type            zeroGradient;
+            }
+            leftSolid_to_topAir
+            {
+                type            zeroGradient;
+            }
+        }
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/leftSolid/decomposeParDict b/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/leftSolid/decomposeParDict
new file mode 100644
index 0000000000000000000000000000000000000000..aad15ee459b6e01cdf6fabba08eb2fa5b8c2a4dd
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/leftSolid/decomposeParDict
@@ -0,0 +1,86 @@
+/*-------------------------------*- C++ -*---------------------------------*\
+|    =========                                                              |
+|    \\      /     OpenFOAM                                                 |
+|     \\    /                                                               |
+|      \\  /       The Open Source CFD Toolbox                              |
+|       \\/                                        http://www.OpenFOAM.org  |
+\*-------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    note        "mesh decomposition control dictionary";
+    location    "system";
+    object      decomposeParDict;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+numberOfSubdomains  4;
+
+//- Keep owner and neighbour on same processor for faces in zones:
+// preserveFaceZones (heater solid1 solid3);
+
+method          scotch;
+// method          hierarchical;
+// method          simple;
+// method          metis;
+// method          manual;
+
+simpleCoeffs
+{
+    n           (2 2 1);
+    delta       0.001;
+}
+
+hierarchicalCoeffs
+{
+    n           (2 2 1);
+    delta       0.001;
+    order       xyz;
+}
+
+metisCoeffs
+{
+ /*
+    processorWeights
+    (
+        1
+        1
+        1
+        1
+    );
+  */
+}
+
+scotchCoeffs
+{
+    //processorWeights
+    //(
+    //    1
+    //    1
+    //    1
+    //    1
+    //);
+    //writeGraph  true;
+    //strategy "b";
+}
+
+manualCoeffs
+{
+    dataFile    "decompositionData";
+}
+
+
+//// Is the case distributed
+//distributed     yes;
+//// Per slave (so nProcs-1 entries) the directory above the case.
+//roots           
+//(
+//    "/tmp"
+//    "/tmp"
+//);
+
+
+// ************************************************************************* //
diff --git a/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/leftSolid/fvSchemes b/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/leftSolid/fvSchemes
new file mode 120000
index 0000000000000000000000000000000000000000..63236f302cfd79847ce312cced35784fa149c827
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/leftSolid/fvSchemes
@@ -0,0 +1 @@
+../heater/fvSchemes
\ No newline at end of file
diff --git a/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/leftSolid/fvSolution b/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/leftSolid/fvSolution
new file mode 120000
index 0000000000000000000000000000000000000000..0bde0fc62f58a1a111ce897344b26816ef3de04d
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/leftSolid/fvSolution
@@ -0,0 +1 @@
+../heater/fvSolution
\ No newline at end of file
diff --git a/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/rightSolid/changeDictionaryDict b/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/rightSolid/changeDictionaryDict
new file mode 100644
index 0000000000000000000000000000000000000000..c3d6b08a0d147cef9d91a02a45036fadc4cfa59b
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/rightSolid/changeDictionaryDict
@@ -0,0 +1,186 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      changeDictionaryDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dictionaryReplacement
+{
+    boundary
+    {
+        rightSolid_to_heater
+        {
+            offset          ( 0 0 0 );
+            sampleMode      nearestPatchFace;
+            sampleRegion    heater;
+            samplePatch     heater_to_rightSolid;
+        }
+        rightSolid_to_bottomAir
+        {
+            offset          ( 0 0 0 );
+            sampleMode      nearestPatchFace;
+            sampleRegion    bottomAir;
+            samplePatch     bottomAir_to_rightSolid;
+        }
+        rightSolid_to_topAir
+        {
+            offset          ( 0 0 0 );
+            sampleMode      nearestPatchFace;
+            sampleRegion    topAir;
+            samplePatch     topAir_to_rightSolid;
+        }
+    }
+
+    T
+    {
+        internalField   uniform 300;
+
+        boundaryField
+        {
+            maxX
+            {
+                type            zeroGradient;
+            }
+            minZ
+            {
+                type            zeroGradient;
+            }
+            maxZ
+            {
+                type            zeroGradient;
+            }
+            rightSolid_to_heater
+            {
+                type            solidWallMixedTemperatureCoupled;
+                neighbourFieldName T;
+                K               K;
+                value           uniform 300;
+            }
+            rightSolid_to_bottomAir
+            {
+                type            solidWallMixedTemperatureCoupled;
+                neighbourFieldName T;
+                K               K;
+                value           uniform 300;
+            }
+            rightSolid_to_topAir
+            {
+                type            solidWallMixedTemperatureCoupled;
+                neighbourFieldName T;
+                K               K;
+                value           uniform 300;
+            }
+        }
+    }
+
+    rho
+    {
+        internalField   uniform 8000;
+
+        boundaryField
+        {
+            maxX
+            {
+                type            zeroGradient;
+            }
+            minZ
+            {
+                type            zeroGradient;
+            }
+            maxZ
+            {
+                type            zeroGradient;
+            }
+            rightSolid_to_bottomAir
+            {
+                type            zeroGradient;
+            }
+            rightSolid_to_heater
+            {
+                type            zeroGradient;
+            }
+            rightSolid_to_topAir
+            {
+                type            zeroGradient;
+            }
+        }
+    }
+
+    K
+    {
+        internalField   uniform 80;
+
+        boundaryField
+        {
+            maxX
+            {
+                type            zeroGradient;
+            }
+            minZ
+            {
+                type            zeroGradient;
+            }
+            maxZ
+            {
+                type            zeroGradient;
+            }
+            rightSolid_to_bottomAir
+            {
+                type            zeroGradient;
+            }
+            rightSolid_to_heater
+            {
+                type            zeroGradient;
+            }
+            rightSolid_to_topAir
+            {
+                type            zeroGradient;
+            }
+        }
+    }
+
+    cp
+    {
+        internalField   uniform 450;
+
+        boundaryField
+        {
+            maxX
+            {
+                type            zeroGradient;
+            }
+            minZ
+            {
+                type            zeroGradient;
+            }
+            maxZ
+            {
+                type            zeroGradient;
+            }
+            rightSolid_to_bottomAir
+            {
+                type            zeroGradient;
+            }
+            rightSolid_to_heater
+            {
+                type            zeroGradient;
+            }
+            rightSolid_to_topAir
+            {
+                type            zeroGradient;
+            }
+        }
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/rightSolid/decomposeParDict b/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/rightSolid/decomposeParDict
new file mode 100644
index 0000000000000000000000000000000000000000..aad15ee459b6e01cdf6fabba08eb2fa5b8c2a4dd
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/rightSolid/decomposeParDict
@@ -0,0 +1,86 @@
+/*-------------------------------*- C++ -*---------------------------------*\
+|    =========                                                              |
+|    \\      /     OpenFOAM                                                 |
+|     \\    /                                                               |
+|      \\  /       The Open Source CFD Toolbox                              |
+|       \\/                                        http://www.OpenFOAM.org  |
+\*-------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    note        "mesh decomposition control dictionary";
+    location    "system";
+    object      decomposeParDict;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+numberOfSubdomains  4;
+
+//- Keep owner and neighbour on same processor for faces in zones:
+// preserveFaceZones (heater solid1 solid3);
+
+method          scotch;
+// method          hierarchical;
+// method          simple;
+// method          metis;
+// method          manual;
+
+simpleCoeffs
+{
+    n           (2 2 1);
+    delta       0.001;
+}
+
+hierarchicalCoeffs
+{
+    n           (2 2 1);
+    delta       0.001;
+    order       xyz;
+}
+
+metisCoeffs
+{
+ /*
+    processorWeights
+    (
+        1
+        1
+        1
+        1
+    );
+  */
+}
+
+scotchCoeffs
+{
+    //processorWeights
+    //(
+    //    1
+    //    1
+    //    1
+    //    1
+    //);
+    //writeGraph  true;
+    //strategy "b";
+}
+
+manualCoeffs
+{
+    dataFile    "decompositionData";
+}
+
+
+//// Is the case distributed
+//distributed     yes;
+//// Per slave (so nProcs-1 entries) the directory above the case.
+//roots           
+//(
+//    "/tmp"
+//    "/tmp"
+//);
+
+
+// ************************************************************************* //
diff --git a/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/rightSolid/fvSchemes b/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/rightSolid/fvSchemes
new file mode 120000
index 0000000000000000000000000000000000000000..63236f302cfd79847ce312cced35784fa149c827
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/rightSolid/fvSchemes
@@ -0,0 +1 @@
+../heater/fvSchemes
\ No newline at end of file
diff --git a/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/rightSolid/fvSolution b/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/rightSolid/fvSolution
new file mode 120000
index 0000000000000000000000000000000000000000..0bde0fc62f58a1a111ce897344b26816ef3de04d
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/rightSolid/fvSolution
@@ -0,0 +1 @@
+../heater/fvSolution
\ No newline at end of file
diff --git a/tutorials/mesh/snappyHexMesh/motorBike/system/snappyHexMeshDict b/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/snappyHexMeshDict
similarity index 71%
rename from tutorials/mesh/snappyHexMesh/motorBike/system/snappyHexMeshDict
rename to tutorials/mesh/snappyHexMesh/multiRegionMesh/system/snappyHexMeshDict
index 0d84177d8b422d750ef38dbf1536c4ba8383c6dc..9fb743af9d2cc4c27ed097fc05493875f95d4a35 100644
--- a/tutorials/mesh/snappyHexMesh/motorBike/system/snappyHexMeshDict
+++ b/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/snappyHexMeshDict
@@ -1,17 +1,23 @@
-/*--------------------------------*- C++ -*----------------------------------*\
+/*---------------------------------------------------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.5                                   |
-|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|  \\    /   O peration     | Version:  1.0                                   |
+|   \\  /    A nd           | Web:      http://www.openfoam.org               |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
+
 FoamFile
 {
-    version     2.0;
-    format      ascii;
-    class       dictionary;
-    location    "system";
-    object      snappyHexMeshDict;
+    version         2.0;
+    format          ascii;
+
+    root            "/home/penfold/mattijs/foam/mattijs2.1/run/icoFoam";
+    case            "cavity";
+    instance        "system";
+    local           "";
+
+    class           dictionary;
+    object          autoHexMeshDict;
 }
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,7 +25,7 @@ FoamFile
 // Which of the steps to run
 castellatedMesh true;
 snap            true;
-addLayers       true;
+addLayers       false;
 
 
 // Geometry. Definition of all surfaces. All surfaces are of class
@@ -30,19 +36,44 @@ addLayers       true;
 // - to 'snap' the mesh boundary to the surface
 geometry
 {
-    motorBike.stl
+    bottomAir.stl
     {
-        type            triSurfaceMesh;
-        name            motorBike;
+        type triSurfaceMesh;
+        name bottomAir;
     }
 
-    refinementBox
+    topAir.stl
     {
-        type            searchableBox;
-        min             ( -0.3 -0.4 -0.1 );
-        max             ( 3 0.4 1.4 );
+        type triSurfaceMesh;
+        name topAir;
     }
-}
+
+    leftSolid.stl
+    {
+        type triSurfaceMesh;
+        name leftSolid;
+    }
+
+    rightSolid.stl
+    {
+        type triSurfaceMesh;
+        name rightSolid;
+    }
+
+    heater.stl
+    {
+        type triSurfaceMesh;
+        name heater;
+    }
+
+    //refinementBox
+    //{
+    //    type searchableBox;
+    //    min (-0.3 -0.4 -0.1);
+    //    max ( 3.0  0.4  1.4);
+   // }
+};
+
 
 
 // Settings for the castellatedMesh generation.
@@ -55,15 +86,14 @@ castellatedMeshControls
     // While refining maximum number of cells per processor. This is basically
     // the number of cells that fit on a processor. If you choose this too small
     // it will do just more refinement iterations to obtain a similar mesh.
-    maxLocalCells   1000000;
-
+    maxLocalCells 1000000;
 
     // Overall cell limit (approximately). Refinement will stop immediately
     // upon reaching this number so a refinement level might not complete.
     // Note that this is the number of cells before removing the part which
     // is not 'visible' from the keepPoint. The final number of cells might
     // actually be a lot less.
-    maxGlobalCells  2000000;
+    maxGlobalCells 2000000;
 
     // The surface refinement loop might spend lots of iterations refining just a
     // few cells. This setting will cause refinement to stop if <= minimumRefine
@@ -85,10 +115,6 @@ castellatedMeshControls
     // This is a featureEdgeMesh, read from constant/triSurface for now.
     features
     (
-        //{
-        //    file "someLine.eMesh";
-        //    level 2;
-        //}
     );
 
 
@@ -104,10 +130,54 @@ castellatedMeshControls
 
     refinementSurfaces
     {
-        motorBike
+        bottomAir
+        {
+            // Surface-wise min and max refinement level
+            level (1 1);
+
+	    faceZone bottomAir;
+            cellZone bottomAir;
+            zoneInside true;
+        }
+
+        topAir
+        {
+            // Surface-wise min and max refinement level
+            level (1 1);
+
+	    faceZone topAir;
+            cellZone topAir;
+            zoneInside true;
+        }
+
+        heater
         {
             // Surface-wise min and max refinement level
-            level           ( 5 6 );
+            level (0 0);
+
+	    faceZone heater;
+            cellZone heater;
+            zoneInside true;
+        }
+
+        leftSolid
+        {
+            // Surface-wise min and max refinement level
+            level (1 1);
+
+	    faceZone leftSolid;
+            cellZone leftSolid;
+            zoneInside true;
+        }
+
+        rightSolid
+        {
+            // Surface-wise min and max refinement level
+            level (1 1);
+
+	    faceZone rightSolid;
+            cellZone rightSolid;
+            zoneInside true;
         }
     }
 
@@ -127,17 +197,17 @@ castellatedMeshControls
     //   cells inside the surface get refined up to the level. The surface
     //   needs to be closed for this to be possible.
     // - outside. Same but cells outside.
+
     refinementRegions
     {
-        refinementBox
-        {
-            mode            inside;
-            levels          ( ( 1e+15 4 ) );
-        }
+        //refinementBox
+        //{
+        //    mode inside;
+        //    levels ((1E15 4));
+        //}
     }
 
 
-
     // Mesh selection
     // ~~~~~~~~~~~~~~
 
@@ -146,16 +216,17 @@ castellatedMeshControls
     // section reachable from the locationInMesh is kept.
     // NOTE: This point should never be on a face, always inside a cell, even
     // after refinement.
-    locationInMesh  ( 3 3 0.43 );
+    locationInMesh (0.01 0.01 0.01);
 }
 
 
+
 // Settings for the snapping.
 snapControls
 {
     //- Number of patch smoothing iterations before finding correspondence
     //  to surface
-    nSmoothPatch    3;
+    nSmoothPatch 3;
 
     //- Relative distance for points to be attracted by surface feature point
     //  or edge. True distance is this factor times local
@@ -163,29 +234,35 @@ snapControls
     tolerance 4.0;
 
     //- Number of mesh displacement relaxation iterations.
-    nSolveIter      30;
+    nSolveIter 30;
 
     //- Maximum number of snapping relaxation iterations. Should stop
     //  before upon reaching a correct mesh.
-    nRelaxIter      5;
+    nRelaxIter 5;
 }
 
 
+
 // Settings for the layer addition.
 addLayersControls
 {
+    relativeSizes true;
+
     // Per final patch (so not geometry!) the layer information
     layers
     {
-        minZ
-        {
-            nSurfaceLayers  1;
-        }
-
-        "motorBike_.*"
-        {
-            nSurfaceLayers  1;
-        }
+	//flowAirDuctReagent_flowAirDuctReagent
+        //{
+        //    nSurfaceLayers 1;
+        //}
+	//flowAirDuctReagent_inlet1
+        //{
+        //    nSurfaceLayers 1;
+        //}
+	//flowAirDuctReagent_inlet2
+        //{
+        //    nSurfaceLayers 1;
+        //}
     }
 
     // Expansion factor for layer mesh
@@ -195,43 +272,43 @@ addLayersControls
     //  is the
     //  thickness of the layer furthest away from the wall.
     //  Relative to undistorted size of cell outside layer.
-    finalLayerRatio 0.3;
+    finalLayerThickness 0.3; 
 
     //- Minimum thickness of cell layer. If for any reason layer
     //  cannot be above minThickness do not add layer.
     //  Relative to undistorted size of cell outside layer.
-    minThickness    0.1;
+    minThickness 0.1;
 
     //- If points get not extruded do nGrow layers of connected faces that are
     //  also not grown. This helps convergence of the layer addition process
     //  close to features.
-    nGrow           1;
+    nGrow 0;
 
 
     // Advanced settings
 
     //- When not to extrude surface. 0 is flat surface, 90 is when two faces
     //  make straight angle.
-    featureAngle    30;
+    featureAngle 30;
 
     //- Maximum number of snapping relaxation iterations. Should stop
     //  before upon reaching a correct mesh.
-    nRelaxIter      3;
+    nRelaxIter 3;
 
-    // Number of smoothing iterations of surface normals
+    // Number of smoothing iterations of surface normals 
     nSmoothSurfaceNormals 1;
 
-    // Number of smoothing iterations of interior mesh movement direction
-    nSmoothNormals  3;
+    // Number of smoothing iterations of interior mesh movement direction  
+    nSmoothNormals 3;
 
     // Smooth layer thickness over surface patches
     nSmoothThickness 10;
 
-    // Stop layer growth on highly warped cells
+    // Stop layer growth on highly warped cells 
     maxFaceThicknessRatio 0.5;
 
-    // Reduce layer growth where ratio thickness to medial
-    // distance is large
+    // Reduce layer growth where ratio thickness to medial 
+    // distance is large 
     maxThicknessToMedialRatio 0.3;
 
     // Angle used to pick up medial axis points
@@ -239,19 +316,16 @@ addLayersControls
 
     // Create buffer region for new layer terminations
     nBufferCellsNoExtrude 0;
-
-
-    // Overall max number of layer addition iterations
-    nLayerIter 50;
 }
 
 
+
 // Generic mesh quality settings. At any undoable phase these determine
 // where to undo.
 meshQualityControls
 {
     //- Maximum non-orthogonality allowed. Set to 180 to disable.
-    maxNonOrtho     65;
+    maxNonOrtho 65;
 
     //- Max skewness allowed. Set to <0 to disable.
     maxBoundarySkewness 20;
@@ -260,31 +334,31 @@ meshQualityControls
     //- Max concaveness allowed. Is angle (in degrees) below which concavity
     //  is allowed. 0 is straight face, <0 would be convex face.
     //  Set to 180 to disable.
-    maxConcave      80;
+    maxConcave 80;
 
     //- Minimum projected area v.s. actual area. Set to -1 to disable.
-    minFlatness     0.5;
+    minFlatness 0.5;
 
     //- Minimum pyramid volume. Is absolute volume of cell pyramid.
     //  Set to very negative number (e.g. -1E30) to disable.
-    minVol          1e-13;
+    minVol 0;
 
     //- Minimum face area. Set to <0 to disable.
-    minArea         -1;
+    minArea -1;
 
     //- Minimum face twist. Set to <-1 to disable. dot product of face normal
     //- and face centre triangles normal
-    minTwist        0.02;
+    minTwist 0.02;
 
     //- minimum normalised cell determinant
     //- 1 = hex, <= 0 = folded or flattened illegal cell
-    minDeterminant  0.001;
+    minDeterminant 0.001;
 
-    //- minFaceWeight (0 -> 0.5)
-    minFaceWeight   0.02;
+    //- minFaceWeight (0 -> 0.5) 
+    minFaceWeight 0.02;
 
     //- minVolRatio (0 -> 1)
-    minVolRatio     0.01;
+    minVolRatio 0.01;
 
     //must be >0 for Fluent compatibility
     minTriangleTwist -1;
@@ -293,13 +367,12 @@ meshQualityControls
     // Advanced
 
     //- Number of error distribution iterations
-    nSmoothScale    4;
+    nSmoothScale 4;
     //- amount to scale back displacement at error points
-    errorReduction  0.75;
+    errorReduction 0.75;
 }
 
 
-
 // Advanced
 
 // Flags for optional output
@@ -307,12 +380,12 @@ meshQualityControls
 // 1 : write intermediate meshes
 // 2 : write volScalarField with cellLevel for postprocessing
 // 4 : write current intersections as .obj files
-debug           0;
+debug 0;
 
 
 // Merge tolerance. Is fraction of overall bounding box of initial mesh.
 // Note: the write tolerance needs to be higher than this.
-mergeTolerance  1e-06;
+mergeTolerance 1E-6;
 
 
 // ************************************************************************* //
diff --git a/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/topAir/changeDictionaryDict b/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/topAir/changeDictionaryDict
new file mode 100644
index 0000000000000000000000000000000000000000..ad82755773e1968fef95dc1aa7c688d5709e2374
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/topAir/changeDictionaryDict
@@ -0,0 +1,320 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      changeDictionaryDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dictionaryReplacement
+{
+    boundary
+    {
+        topAir_to_leftSolid
+        {
+            offset          ( 0 0 0 );
+            sampleMode      nearestPatchFace;
+            sampleRegion    leftSolid;
+            samplePatch     leftSolid_to_topAir;
+        }
+        topAir_to_heater
+        {
+            offset          ( 0 0 0 );
+            sampleMode      nearestPatchFace;
+            sampleRegion    heater;
+            samplePatch     heater_to_topAir;
+        }
+        topAir_to_rightSolid
+        {
+            offset          ( 0 0 0 );
+            sampleMode      nearestPatchFace;
+            sampleRegion    rightSolid;
+            samplePatch     rightSolid_to_topAir;
+        }
+    }
+
+    U
+    {
+        internalField   uniform ( 0.01 0 0 );
+        boundaryField
+        {
+            minX
+            {
+                type            fixedValue;
+                value           uniform (0.01 0 0);
+            }
+            maxX
+            {
+                type            inletOutlet;
+                inletValue      uniform (0 0 0);
+            }
+
+            maxY
+            {
+                type            fixedValue;
+                value           uniform (0 0 0);
+            }
+
+            minZ
+            {
+                type            fixedValue;
+                value           uniform (0 0 0);
+            }
+            maxZ
+            {
+                type            fixedValue;
+                value           uniform (0 0 0);
+            }
+
+            topAir_to_leftSolid
+            {
+                type            fixedValue;
+                value           uniform (0 0 0);
+
+            }
+            topAir_to_heater
+            {
+                type            fixedValue;
+                value           uniform (0 0 0);
+            }
+            topAir_to_rightSolid
+            {
+                type            fixedValue;
+                value           uniform (0 0 0);
+            }
+        }
+    }
+
+    T
+    {
+        internalField   uniform 300;
+
+        boundaryField
+        {
+            maxY
+            {
+                type            fixedValue;
+                value           uniform 300;
+            }
+            minX
+            {
+                type            fixedValue;
+                value           uniform 300;
+            }
+            maxX
+            {
+                type            fixedValue;
+                value           uniform 300;
+            }
+            minZ
+            {
+                type            fixedValue;
+                value           uniform 300;
+            }
+            maxZ
+            {
+                type            fixedValue;
+                value           uniform 300;
+            }
+            topAir_to_leftSolid
+            {
+                type            solidWallMixedTemperatureCoupled;
+                neighbourFieldName T;
+                K               K;
+                value           uniform 300;
+
+            }
+            topAir_to_heater
+            {
+                type            solidWallMixedTemperatureCoupled;
+                neighbourFieldName T;
+                K               K;
+                value           uniform 300;
+            }
+            topAir_to_rightSolid
+            {
+                type            solidWallMixedTemperatureCoupled;
+                neighbourFieldName T;
+                K               K;
+                value           uniform 300;
+            }
+        }
+    }
+
+    epsilon
+    {
+        // Set the value on all bc to non-zero. Not used in simulation
+        // since zeroGradient; only used in initialisation.
+        boundaryField
+        {
+            minX
+            {
+                type            fixedValue;
+                value           uniform 0.01;
+            }
+            maxX
+            {
+                type            zeroGradient;
+                value           uniform 0.01;
+            }
+
+            minY
+            {
+                type            zeroGradient;
+                value           uniform 0.01;
+            }
+            maxY
+            {
+                type            zeroGradient;
+                value           uniform 0.01;
+            }
+
+            minZ
+            {
+                type            zeroGradient;
+                value           uniform 0.01;
+            }
+            maxZ
+            {
+                type            zeroGradient;
+                value           uniform 0.01;
+            }
+            topAir_to_leftSolid
+            {
+                type            zeroGradient;
+                value           uniform 0.01;
+            }
+            topAir_to_heater
+            {
+                type            zeroGradient;
+                value           uniform 0.01;
+            }
+            topAir_to_rightSolid
+            {
+                type            zeroGradient;
+                value           uniform 0.01;
+            }
+        }
+    }
+
+    k
+    {
+        internalField   uniform 0.1;
+        boundaryField
+        {
+            minX
+            {
+                type            fixedValue;
+                value           uniform 0.1;
+            }
+
+            maxX
+            {
+                type            zeroGradient;
+                value           uniform 0.1;
+            }
+
+            maxY
+            {
+                type            zeroGradient;
+                value           uniform 0.1;
+            }
+
+            minZ
+            {
+                type            zeroGradient;
+                value           uniform 0.1;
+            }
+            maxZ
+            {
+                type            zeroGradient;
+                value           uniform 0.1;
+            }
+
+            topAir_to_leftSolid
+            {
+                type            zeroGradient;
+                value           uniform 0.1;
+            }
+            topAir_to_heater
+            {
+                type            zeroGradient;
+                value           uniform 0.1;
+            }
+            topAir_to_rightSolid
+            {
+                type            zeroGradient;
+                value           uniform 0.1;
+            }
+        }
+    }
+
+    p
+    {
+        internalField   uniform 1E5;
+
+        boundaryField
+        {
+            minX
+            {
+                type            buoyantPressure;
+                value           1e5;
+            }
+            maxX
+            {
+                type            waveTransmissive;
+                //field           p;
+                phi             phi;
+                rho             rho;
+                psi             psi;
+                gamma           1.4;    // cp/cv
+                fieldInf        1e5;
+                lInf            0.40;   // double length of domain
+                value           uniform 1e5;
+            }
+
+            maxY
+            {
+                type            buoyantPressure;
+                value           1e5;
+            }
+
+            minZ
+            {
+                type            buoyantPressure;
+                value           1e5;
+            }
+            maxZ
+            {
+                type            buoyantPressure;
+                value           1e5;
+            }
+
+            topAir_to_leftSolid
+            {
+                type            buoyantPressure;
+                value           1e5;
+            }
+            topAir_to_heater
+            {
+                type            buoyantPressure;
+                value           1e5;
+            }
+            topAir_to_rightSolid
+            {
+                type            buoyantPressure;
+                value           1e5;
+            }
+        }
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/topAir/decomposeParDict b/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/topAir/decomposeParDict
new file mode 100644
index 0000000000000000000000000000000000000000..aad15ee459b6e01cdf6fabba08eb2fa5b8c2a4dd
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/topAir/decomposeParDict
@@ -0,0 +1,86 @@
+/*-------------------------------*- C++ -*---------------------------------*\
+|    =========                                                              |
+|    \\      /     OpenFOAM                                                 |
+|     \\    /                                                               |
+|      \\  /       The Open Source CFD Toolbox                              |
+|       \\/                                        http://www.OpenFOAM.org  |
+\*-------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    note        "mesh decomposition control dictionary";
+    location    "system";
+    object      decomposeParDict;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+numberOfSubdomains  4;
+
+//- Keep owner and neighbour on same processor for faces in zones:
+// preserveFaceZones (heater solid1 solid3);
+
+method          scotch;
+// method          hierarchical;
+// method          simple;
+// method          metis;
+// method          manual;
+
+simpleCoeffs
+{
+    n           (2 2 1);
+    delta       0.001;
+}
+
+hierarchicalCoeffs
+{
+    n           (2 2 1);
+    delta       0.001;
+    order       xyz;
+}
+
+metisCoeffs
+{
+ /*
+    processorWeights
+    (
+        1
+        1
+        1
+        1
+    );
+  */
+}
+
+scotchCoeffs
+{
+    //processorWeights
+    //(
+    //    1
+    //    1
+    //    1
+    //    1
+    //);
+    //writeGraph  true;
+    //strategy "b";
+}
+
+manualCoeffs
+{
+    dataFile    "decompositionData";
+}
+
+
+//// Is the case distributed
+//distributed     yes;
+//// Per slave (so nProcs-1 entries) the directory above the case.
+//roots           
+//(
+//    "/tmp"
+//    "/tmp"
+//);
+
+
+// ************************************************************************* //
diff --git a/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/topAir/fvSchemes b/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/topAir/fvSchemes
new file mode 120000
index 0000000000000000000000000000000000000000..ff6aeb82d395e30f059d8a111d447f5dff18b137
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/topAir/fvSchemes
@@ -0,0 +1 @@
+../bottomAir/fvSchemes
\ No newline at end of file
diff --git a/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/topAir/fvSolution b/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/topAir/fvSolution
new file mode 120000
index 0000000000000000000000000000000000000000..745b2bcfe42a207d4eb7af7dc80b87a460405289
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/multiRegionMesh/system/topAir/fvSolution
@@ -0,0 +1 @@
+../bottomAir/fvSolution
\ No newline at end of file
diff --git a/tutorials/multiphase/cavitatingFoam/les/throttle/system/cellSetDict.1 b/tutorials/multiphase/cavitatingFoam/les/throttle/system/cellSetDict.1
index a7c7e625e5403387aa3b92c464b9d8c5615c7ba4..bfa0d6ac4f2b2b07aa49ade99f366371db345123 100644
--- a/tutorials/multiphase/cavitatingFoam/les/throttle/system/cellSetDict.1
+++ b/tutorials/multiphase/cavitatingFoam/les/throttle/system/cellSetDict.1
@@ -8,7 +8,7 @@
 FoamFile
 {
     version     2.0;
-    format      binary;
+    format      ascii;
     class       dictionary;
     location    "system";
     object      cellSetDict.1;
@@ -19,7 +19,13 @@ name            c0;
 
 action          new;
 
-topoSetSources  ( boxToCell { box ( 0.004 -0.001 -1 ) ( 0.012 0.001 1 ) ; } );
+topoSetSources
+(
+    boxToCell
+    {
+        box (0.004 -0.001 -1) (0.012 0.001 1);
+    }
+);
 
 
 // ************************************************************************* //
diff --git a/tutorials/multiphase/cavitatingFoam/les/throttle/system/cellSetDict.2 b/tutorials/multiphase/cavitatingFoam/les/throttle/system/cellSetDict.2
index 470258895d1a503d39431f85dc16d207019b0cc0..d9684898c824a0cf4cd22ad94cdc21297fc9d39d 100644
--- a/tutorials/multiphase/cavitatingFoam/les/throttle/system/cellSetDict.2
+++ b/tutorials/multiphase/cavitatingFoam/les/throttle/system/cellSetDict.2
@@ -8,7 +8,7 @@
 FoamFile
 {
     version     2.0;
-    format      binary;
+    format      ascii;
     class       dictionary;
     location    "system";
     object      cellSetDict.2;
@@ -19,7 +19,13 @@ name            c0;
 
 action          new;
 
-topoSetSources  ( boxToCell { box ( 0.0045 -0.00075 -1 ) ( 0.0095 0.00075 1 ) ; } );
+topoSetSources
+(
+    boxToCell
+    {
+        box (0.0045 -0.00075 -1) (0.0095 0.00075 1);
+    }
+);
 
 
 // ************************************************************************* //
diff --git a/tutorials/multiphase/cavitatingFoam/les/throttle/system/cellSetDict.3 b/tutorials/multiphase/cavitatingFoam/les/throttle/system/cellSetDict.3
index 530c710e1f0e6bae3655c4127e4bca08ecd7a049..10f2c880a56a0fd7ce1d75798a91bb082c68f865 100644
--- a/tutorials/multiphase/cavitatingFoam/les/throttle/system/cellSetDict.3
+++ b/tutorials/multiphase/cavitatingFoam/les/throttle/system/cellSetDict.3
@@ -8,7 +8,7 @@
 FoamFile
 {
     version     2.0;
-    format      binary;
+    format      ascii;
     class       dictionary;
     location    "system";
     object      cellSetDict.3;
@@ -19,7 +19,13 @@ name            c0;
 
 action          new;
 
-topoSetSources  ( boxToCell { box ( 0.00475 -0.000375 -1 ) ( 0.009 0.000375 1 ) ; } );
+topoSetSources
+(
+    boxToCell
+    {
+        box (0.00475 -0.000375 -1) (0.009 0.000375 1);
+    }
+);
 
 
 // ************************************************************************* //
diff --git a/tutorials/multiphase/cavitatingFoam/les/throttle3D/system/cellSetDict.1 b/tutorials/multiphase/cavitatingFoam/les/throttle3D/system/cellSetDict.1
index a7c7e625e5403387aa3b92c464b9d8c5615c7ba4..88755b22992e891570617b7aef7353ab23845086 100644
--- a/tutorials/multiphase/cavitatingFoam/les/throttle3D/system/cellSetDict.1
+++ b/tutorials/multiphase/cavitatingFoam/les/throttle3D/system/cellSetDict.1
@@ -8,7 +8,7 @@
 FoamFile
 {
     version     2.0;
-    format      binary;
+    format      ascii;
     class       dictionary;
     location    "system";
     object      cellSetDict.1;
@@ -19,7 +19,13 @@ name            c0;
 
 action          new;
 
-topoSetSources  ( boxToCell { box ( 0.004 -0.001 -1 ) ( 0.012 0.001 1 ) ; } );
+topoSetSources
+(
+    boxToCell
+    {
+        box ( 0.004 -0.001 -1 ) ( 0.012 0.001 1 );
+    }
+);
 
 
 // ************************************************************************* //
diff --git a/tutorials/multiphase/cavitatingFoam/les/throttle3D/system/cellSetDict.2 b/tutorials/multiphase/cavitatingFoam/les/throttle3D/system/cellSetDict.2
index 470258895d1a503d39431f85dc16d207019b0cc0..a29931d08f4c220bf54882641c2ac334e4bc3dd4 100644
--- a/tutorials/multiphase/cavitatingFoam/les/throttle3D/system/cellSetDict.2
+++ b/tutorials/multiphase/cavitatingFoam/les/throttle3D/system/cellSetDict.2
@@ -8,7 +8,7 @@
 FoamFile
 {
     version     2.0;
-    format      binary;
+    format      ascii;
     class       dictionary;
     location    "system";
     object      cellSetDict.2;
@@ -19,7 +19,13 @@ name            c0;
 
 action          new;
 
-topoSetSources  ( boxToCell { box ( 0.0045 -0.00075 -1 ) ( 0.0095 0.00075 1 ) ; } );
+topoSetSources
+(
+    boxToCell
+    {
+        box ( 0.0045 -0.00075 -1 ) ( 0.0095 0.00075 1 );
+    }
+);
 
 
 // ************************************************************************* //
diff --git a/tutorials/multiphase/cavitatingFoam/les/throttle3D/system/cellSetDict.3 b/tutorials/multiphase/cavitatingFoam/les/throttle3D/system/cellSetDict.3
index 530c710e1f0e6bae3655c4127e4bca08ecd7a049..8ff387dd87d81b0ef5435ec79df5d8fc34d21371 100644
--- a/tutorials/multiphase/cavitatingFoam/les/throttle3D/system/cellSetDict.3
+++ b/tutorials/multiphase/cavitatingFoam/les/throttle3D/system/cellSetDict.3
@@ -8,7 +8,7 @@
 FoamFile
 {
     version     2.0;
-    format      binary;
+    format      ascii;
     class       dictionary;
     location    "system";
     object      cellSetDict.3;
@@ -19,7 +19,13 @@ name            c0;
 
 action          new;
 
-topoSetSources  ( boxToCell { box ( 0.00475 -0.000375 -1 ) ( 0.009 0.000375 1 ) ; } );
+topoSetSources
+(
+    boxToCell
+    {
+        box ( 0.00475 -0.000375 -1 ) ( 0.009 0.000375 1 );
+    }
+);
 
 
 // ************************************************************************* //
diff --git a/tutorials/multiphase/compressibleInterFoam/les/depthCharge2D/0/pd.org b/tutorials/multiphase/compressibleInterFoam/les/depthCharge2D/0/p.org
similarity index 98%
rename from tutorials/multiphase/compressibleInterFoam/les/depthCharge2D/0/pd.org
rename to tutorials/multiphase/compressibleInterFoam/les/depthCharge2D/0/p.org
index 5f5f977f4311ab2cad0ebf9602845f7a3a48cf50..72b59f9e90996a5e37de42dfe70687f6855fbf13 100644
--- a/tutorials/multiphase/compressibleInterFoam/les/depthCharge2D/0/pd.org
+++ b/tutorials/multiphase/compressibleInterFoam/les/depthCharge2D/0/p.org
@@ -10,7 +10,7 @@ FoamFile
     version     2.0;
     format      ascii;
     class       volScalarField;
-    object      pd;
+    object      p;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
diff --git a/tutorials/multiphase/compressibleInterFoam/les/depthCharge2D/Allrun b/tutorials/multiphase/compressibleInterFoam/les/depthCharge2D/Allrun
index f4e775f4baa016ca5056f6c9dea078382d060095..f2a0345d68b030bcac62302fb71d10da0a137384 100755
--- a/tutorials/multiphase/compressibleInterFoam/les/depthCharge2D/Allrun
+++ b/tutorials/multiphase/compressibleInterFoam/les/depthCharge2D/Allrun
@@ -7,6 +7,6 @@ application="compressibleInterFoam"
 
 runApplication blockMesh
 cp 0/alpha1.org 0/alpha1
-cp 0/pd.org 0/pd
+cp 0/p.org 0/p
 runApplication setFields
 runApplication $application
diff --git a/tutorials/multiphase/compressibleInterFoam/les/depthCharge2D/system/fvSchemes b/tutorials/multiphase/compressibleInterFoam/les/depthCharge2D/system/fvSchemes
index 373e1ca67d95f93b6f87c25f206a931c6c14ba76..0233a5951ab53946c3f3452772a78c5f93d0174c 100644
--- a/tutorials/multiphase/compressibleInterFoam/les/depthCharge2D/system/fvSchemes
+++ b/tutorials/multiphase/compressibleInterFoam/les/depthCharge2D/system/fvSchemes
@@ -30,7 +30,7 @@ divSchemes
     div(rho*phi,U)  Gauss upwind;
     div(phi,alpha)  Gauss vanLeer;
     div(phirb,alpha) Gauss interfaceCompression 1;
-    div(phi,pd)     Gauss upwind;
+    div(phi,p)      Gauss upwind;
     div(phi,k)      Gauss vanLeer;
     div((nuEff*dev(grad(U).T()))) Gauss linear;
 }
@@ -53,9 +53,9 @@ snGradSchemes
 fluxRequired
 {
     default         no;
-    pd              ;
-    pcorr           ;
-    gamma           ;
+    p;
+    pcorr;
+    gamma;
 }
 
 
diff --git a/tutorials/multiphase/compressibleInterFoam/les/depthCharge2D/system/fvSolution b/tutorials/multiphase/compressibleInterFoam/les/depthCharge2D/system/fvSolution
index 3416674d0782e6a26af8e5de6eb075c7b792a6cf..f93b56c204b46b986ec5bb2d32ce87645e071874 100644
--- a/tutorials/multiphase/compressibleInterFoam/les/depthCharge2D/system/fvSolution
+++ b/tutorials/multiphase/compressibleInterFoam/les/depthCharge2D/system/fvSolution
@@ -45,7 +45,7 @@ solvers
         solver          diagonal;
     }
 
-    pd
+    p
     {
         solver          GAMG;
         tolerance       1e-07;
@@ -60,7 +60,7 @@ solvers
         mergeLevels     1;
     }
 
-    pdFinal
+    pFinal
     {
         solver          PCG;
         preconditioner
diff --git a/tutorials/multiphase/compressibleInterFoam/les/depthCharge2D/system/setFieldsDict b/tutorials/multiphase/compressibleInterFoam/les/depthCharge2D/system/setFieldsDict
index d1992643325e54bb632fa934b57dc0c257580c08..00e706b1e518efe1caece07029b5924ce9c8d75b 100644
--- a/tutorials/multiphase/compressibleInterFoam/les/depthCharge2D/system/setFieldsDict
+++ b/tutorials/multiphase/compressibleInterFoam/les/depthCharge2D/system/setFieldsDict
@@ -15,9 +15,33 @@ FoamFile
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-defaultFieldValues ( volScalarFieldValue alpha1 1 volScalarFieldValue pd 100000 );
+defaultFieldValues
+(
+    volScalarFieldValue alpha1 1
+    volScalarFieldValue p 100000
+);
 
-regions         ( sphereToCell { centre ( 0.5 0.5 0 ) ; radius 0.1 ; fieldValues ( volScalarFieldValue alpha1 0 volScalarFieldValue pd 1000000 ) ; } boxToCell { box ( -10 1 -1 ) ( 10 10 1 ) ; fieldValues ( volScalarFieldValue alpha1 0 ) ; } );
+regions
+(
+    sphereToCell
+    {
+        centre ( 0.5 0.5 0 );
+        radius 0.1;
+        fieldValues
+        (
+            volScalarFieldValue alpha1 0
+            volScalarFieldValue p 1000000
+        );
+    }
+    boxToCell
+    {
+        box ( -10 1 -1 ) ( 10 10 1 );
+        fieldValues
+        (
+            volScalarFieldValue alpha1 0
+        );
+    }
+);
 
 
 // ************************************************************************* //
diff --git a/tutorials/multiphase/compressibleInterFoam/les/depthCharge3D/0/pd.org b/tutorials/multiphase/compressibleInterFoam/les/depthCharge3D/0/p.org
similarity index 97%
rename from tutorials/multiphase/compressibleInterFoam/les/depthCharge3D/0/pd.org
rename to tutorials/multiphase/compressibleInterFoam/les/depthCharge3D/0/p.org
index efe6f4ca9c57592011bedf77d0c8ff218a2eea5c..3377670aaf545dacf540dac89e8f447059c57d4a 100644
--- a/tutorials/multiphase/compressibleInterFoam/les/depthCharge3D/0/pd.org
+++ b/tutorials/multiphase/compressibleInterFoam/les/depthCharge3D/0/p.org
@@ -10,7 +10,7 @@ FoamFile
     version     2.0;
     format      ascii;
     class       volScalarField;
-    object      pd.org;
+    object      p.org;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
diff --git a/tutorials/multiphase/compressibleInterFoam/les/depthCharge3D/Allclean b/tutorials/multiphase/compressibleInterFoam/les/depthCharge3D/Allclean
index c422ce058e162967e4924ab9cd8404a7ca807133..99cd62d9236e42bc0e1303987403265889e6fb6b 100755
--- a/tutorials/multiphase/compressibleInterFoam/les/depthCharge3D/Allclean
+++ b/tutorials/multiphase/compressibleInterFoam/les/depthCharge3D/Allclean
@@ -2,4 +2,4 @@
 
 foamCleanTutorials cases
 rm -rf processor*
-rm -rf 0/pd.gz 0/alpha1.gz
+rm -rf 0/p.gz 0/alpha1.gz
diff --git a/tutorials/multiphase/compressibleInterFoam/les/depthCharge3D/Allrun b/tutorials/multiphase/compressibleInterFoam/les/depthCharge3D/Allrun
index 3302513ed6e1d1fc3595aad7260bc8e4299e6efb..7b9b11445e018536c908fa896212a19c7c92eef3 100755
--- a/tutorials/multiphase/compressibleInterFoam/les/depthCharge3D/Allrun
+++ b/tutorials/multiphase/compressibleInterFoam/les/depthCharge3D/Allrun
@@ -7,7 +7,7 @@ application="compressibleInterFoam"
 
 runApplication blockMesh
 cp 0/alpha1.org 0/alpha1
-cp 0/pd.org 0/pd
+cp 0/p.org 0/p
 runApplication setFields
 runApplication decomposePar
 hostname > system/machines
diff --git a/tutorials/multiphase/compressibleInterFoam/les/depthCharge3D/system/fvSchemes b/tutorials/multiphase/compressibleInterFoam/les/depthCharge3D/system/fvSchemes
index 373e1ca67d95f93b6f87c25f206a931c6c14ba76..0233a5951ab53946c3f3452772a78c5f93d0174c 100644
--- a/tutorials/multiphase/compressibleInterFoam/les/depthCharge3D/system/fvSchemes
+++ b/tutorials/multiphase/compressibleInterFoam/les/depthCharge3D/system/fvSchemes
@@ -30,7 +30,7 @@ divSchemes
     div(rho*phi,U)  Gauss upwind;
     div(phi,alpha)  Gauss vanLeer;
     div(phirb,alpha) Gauss interfaceCompression 1;
-    div(phi,pd)     Gauss upwind;
+    div(phi,p)      Gauss upwind;
     div(phi,k)      Gauss vanLeer;
     div((nuEff*dev(grad(U).T()))) Gauss linear;
 }
@@ -53,9 +53,9 @@ snGradSchemes
 fluxRequired
 {
     default         no;
-    pd              ;
-    pcorr           ;
-    gamma           ;
+    p;
+    pcorr;
+    gamma;
 }
 
 
diff --git a/tutorials/multiphase/compressibleInterFoam/les/depthCharge3D/system/fvSolution b/tutorials/multiphase/compressibleInterFoam/les/depthCharge3D/system/fvSolution
index 3416674d0782e6a26af8e5de6eb075c7b792a6cf..f93b56c204b46b986ec5bb2d32ce87645e071874 100644
--- a/tutorials/multiphase/compressibleInterFoam/les/depthCharge3D/system/fvSolution
+++ b/tutorials/multiphase/compressibleInterFoam/les/depthCharge3D/system/fvSolution
@@ -45,7 +45,7 @@ solvers
         solver          diagonal;
     }
 
-    pd
+    p
     {
         solver          GAMG;
         tolerance       1e-07;
@@ -60,7 +60,7 @@ solvers
         mergeLevels     1;
     }
 
-    pdFinal
+    pFinal
     {
         solver          PCG;
         preconditioner
diff --git a/tutorials/multiphase/compressibleInterFoam/les/depthCharge3D/system/machines b/tutorials/multiphase/compressibleInterFoam/les/depthCharge3D/system/machines
deleted file mode 100644
index 4b24efafd5ca1ad451a6018d16f638079b1a4f8b..0000000000000000000000000000000000000000
--- a/tutorials/multiphase/compressibleInterFoam/les/depthCharge3D/system/machines
+++ /dev/null
@@ -1 +0,0 @@
-noisy
diff --git a/tutorials/multiphase/compressibleInterFoam/les/depthCharge3D/system/setFieldsDict b/tutorials/multiphase/compressibleInterFoam/les/depthCharge3D/system/setFieldsDict
index fb686e791c29a4621e44bf2cab9b086005d62bc0..3b3c397cb925ab34bb2ab7528cb67d3545196ee0 100644
--- a/tutorials/multiphase/compressibleInterFoam/les/depthCharge3D/system/setFieldsDict
+++ b/tutorials/multiphase/compressibleInterFoam/les/depthCharge3D/system/setFieldsDict
@@ -15,9 +15,33 @@ FoamFile
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-defaultFieldValues ( volScalarFieldValue alpha1 1 volScalarFieldValue pd 100000 );
+defaultFieldValues
+(
+    volScalarFieldValue alpha1 1
+    volScalarFieldValue p 100000
+);
 
-regions         ( sphereToCell { centre ( 0.5 0.5 0.5 ) ; radius 0.1 ; fieldValues ( volScalarFieldValue alpha1 0 volScalarFieldValue pd 1000000 ) ; } boxToCell { box ( -10 1 -1 ) ( 10 10 1 ) ; fieldValues ( volScalarFieldValue alpha1 0 ) ; } );
+regions
+(
+    sphereToCell
+    {
+        centre ( 0.5 0.5 0.5 );
+        radius 0.1;
+        fieldValues
+        (
+            volScalarFieldValue alpha1 0
+            volScalarFieldValue p 1000000
+        );
+    }
+    boxToCell
+    {
+        box ( -10 1 -1 ) ( 10 10 1 );
+        fieldValues
+        (
+            volScalarFieldValue alpha1 0
+        );
+    }
+);
 
 
 // ************************************************************************* //
diff --git a/tutorials/multiphase/interDyMFoam/ras/damBreakWithObstacle/0/pd b/tutorials/multiphase/interDyMFoam/ras/damBreakWithObstacle/0-orig/p
similarity index 98%
rename from tutorials/multiphase/interDyMFoam/ras/damBreakWithObstacle/0/pd
rename to tutorials/multiphase/interDyMFoam/ras/damBreakWithObstacle/0-orig/p
index 01361099097a2f6c771cf634ff96a3466c7b49b3..b3a944b216d11d7644902b0a094403caa9507154 100644
--- a/tutorials/multiphase/interDyMFoam/ras/damBreakWithObstacle/0/pd
+++ b/tutorials/multiphase/interDyMFoam/ras/damBreakWithObstacle/0-orig/p
@@ -10,7 +10,7 @@ FoamFile
     version     2.0;
     format      ascii;
     class       volScalarField;
-    object      pd;
+    object      p;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
diff --git a/tutorials/multiphase/interDyMFoam/ras/damBreakWithObstacle/0-orig/pd b/tutorials/multiphase/interDyMFoam/ras/damBreakWithObstacle/0/p
similarity index 98%
rename from tutorials/multiphase/interDyMFoam/ras/damBreakWithObstacle/0-orig/pd
rename to tutorials/multiphase/interDyMFoam/ras/damBreakWithObstacle/0/p
index 01361099097a2f6c771cf634ff96a3466c7b49b3..b3a944b216d11d7644902b0a094403caa9507154 100644
--- a/tutorials/multiphase/interDyMFoam/ras/damBreakWithObstacle/0-orig/pd
+++ b/tutorials/multiphase/interDyMFoam/ras/damBreakWithObstacle/0/p
@@ -10,7 +10,7 @@ FoamFile
     version     2.0;
     format      ascii;
     class       volScalarField;
-    object      pd;
+    object      p;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
diff --git a/tutorials/multiphase/interDyMFoam/ras/damBreakWithObstacle/constant/polyMesh/sets/c0 b/tutorials/multiphase/interDyMFoam/ras/damBreakWithObstacle/constant/polyMesh/sets/c0
deleted file mode 100644
index 2f7f7412e51609a949d7c20ea4fbb7d3a183fae3..0000000000000000000000000000000000000000
--- a/tutorials/multiphase/interDyMFoam/ras/damBreakWithObstacle/constant/polyMesh/sets/c0
+++ /dev/null
@@ -1,32277 +0,0 @@
-/*--------------------------------*- C++ -*----------------------------------*\
-| =========                 |                                                 |
-| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.5                                   |
-|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
-|    \\/     M anipulation  |                                                 |
-\*---------------------------------------------------------------------------*/
-FoamFile
-{
-    version     2.0;
-    format      ascii;
-    class       cellSet;
-    object      c0;
-}
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-32256
-(
-0 
-1 
-2 
-3 
-4 
-5 
-6 
-7 
-8 
-9 
-10 
-11 
-12 
-13 
-14 
-15 
-16 
-17 
-18 
-19 
-20 
-21 
-22 
-23 
-24 
-25 
-26 
-27 
-28 
-29 
-30 
-31 
-32 
-33 
-34 
-35 
-36 
-37 
-38 
-39 
-40 
-41 
-42 
-43 
-44 
-45 
-46 
-47 
-48 
-49 
-50 
-51 
-52 
-53 
-54 
-55 
-56 
-57 
-58 
-59 
-60 
-61 
-62 
-63 
-64 
-65 
-66 
-67 
-68 
-69 
-70 
-71 
-72 
-73 
-74 
-75 
-76 
-77 
-78 
-79 
-80 
-81 
-82 
-83 
-84 
-85 
-86 
-87 
-88 
-89 
-90 
-91 
-92 
-93 
-94 
-95 
-96 
-97 
-98 
-99 
-100 
-101 
-102 
-103 
-104 
-105 
-106 
-107 
-108 
-109 
-110 
-111 
-112 
-113 
-114 
-115 
-116 
-117 
-118 
-119 
-120 
-121 
-122 
-123 
-124 
-125 
-126 
-127 
-128 
-129 
-130 
-131 
-132 
-133 
-134 
-135 
-136 
-137 
-138 
-139 
-140 
-141 
-142 
-143 
-144 
-145 
-146 
-147 
-148 
-149 
-150 
-151 
-152 
-153 
-154 
-155 
-156 
-157 
-158 
-159 
-160 
-161 
-162 
-163 
-164 
-165 
-166 
-167 
-168 
-169 
-170 
-171 
-172 
-173 
-174 
-175 
-176 
-177 
-178 
-179 
-180 
-181 
-182 
-183 
-184 
-185 
-186 
-187 
-188 
-189 
-190 
-191 
-192 
-193 
-194 
-195 
-196 
-197 
-198 
-199 
-200 
-201 
-202 
-203 
-204 
-205 
-206 
-207 
-208 
-209 
-210 
-211 
-212 
-213 
-214 
-215 
-216 
-217 
-218 
-219 
-220 
-221 
-222 
-223 
-224 
-225 
-226 
-227 
-228 
-229 
-230 
-231 
-232 
-233 
-234 
-235 
-236 
-237 
-238 
-239 
-240 
-241 
-242 
-243 
-244 
-245 
-246 
-247 
-248 
-249 
-250 
-251 
-252 
-253 
-254 
-255 
-256 
-257 
-258 
-259 
-260 
-261 
-262 
-263 
-264 
-265 
-266 
-267 
-268 
-269 
-270 
-271 
-272 
-273 
-274 
-275 
-276 
-277 
-278 
-279 
-280 
-281 
-282 
-283 
-284 
-285 
-286 
-287 
-288 
-289 
-290 
-291 
-292 
-293 
-294 
-295 
-296 
-297 
-298 
-299 
-300 
-301 
-302 
-303 
-304 
-305 
-306 
-307 
-308 
-309 
-310 
-311 
-312 
-313 
-314 
-315 
-316 
-317 
-318 
-319 
-320 
-321 
-322 
-323 
-324 
-325 
-326 
-327 
-328 
-329 
-330 
-331 
-332 
-333 
-334 
-335 
-336 
-337 
-338 
-339 
-340 
-341 
-342 
-343 
-344 
-345 
-346 
-347 
-348 
-349 
-350 
-351 
-352 
-353 
-354 
-355 
-356 
-357 
-358 
-359 
-360 
-361 
-362 
-363 
-364 
-365 
-366 
-367 
-368 
-369 
-370 
-371 
-372 
-373 
-374 
-375 
-376 
-377 
-378 
-379 
-380 
-381 
-382 
-383 
-384 
-385 
-386 
-387 
-388 
-389 
-390 
-391 
-392 
-393 
-394 
-395 
-404 
-405 
-406 
-407 
-408 
-409 
-410 
-411 
-412 
-413 
-414 
-415 
-416 
-417 
-418 
-419 
-420 
-421 
-422 
-423 
-424 
-425 
-426 
-427 
-436 
-437 
-438 
-439 
-440 
-441 
-442 
-443 
-444 
-445 
-446 
-447 
-448 
-449 
-450 
-451 
-452 
-453 
-454 
-455 
-456 
-457 
-458 
-459 
-468 
-469 
-470 
-471 
-472 
-473 
-474 
-475 
-476 
-477 
-478 
-479 
-480 
-481 
-482 
-483 
-484 
-485 
-486 
-487 
-488 
-489 
-490 
-491 
-500 
-501 
-502 
-503 
-504 
-505 
-506 
-507 
-508 
-509 
-510 
-511 
-512 
-513 
-514 
-515 
-516 
-517 
-518 
-519 
-520 
-521 
-522 
-523 
-532 
-533 
-534 
-535 
-536 
-537 
-538 
-539 
-540 
-541 
-542 
-543 
-544 
-545 
-546 
-547 
-548 
-549 
-550 
-551 
-552 
-553 
-554 
-555 
-564 
-565 
-566 
-567 
-568 
-569 
-570 
-571 
-572 
-573 
-574 
-575 
-576 
-577 
-578 
-579 
-580 
-581 
-582 
-583 
-584 
-585 
-586 
-587 
-596 
-597 
-598 
-599 
-600 
-601 
-602 
-603 
-604 
-605 
-606 
-607 
-608 
-609 
-610 
-611 
-612 
-613 
-614 
-615 
-616 
-617 
-618 
-619 
-628 
-629 
-630 
-631 
-632 
-633 
-634 
-635 
-636 
-637 
-638 
-639 
-640 
-641 
-642 
-643 
-644 
-645 
-646 
-647 
-648 
-649 
-650 
-651 
-652 
-653 
-654 
-655 
-656 
-657 
-658 
-659 
-660 
-661 
-662 
-663 
-664 
-665 
-666 
-667 
-668 
-669 
-670 
-671 
-672 
-673 
-674 
-675 
-676 
-677 
-678 
-679 
-680 
-681 
-682 
-683 
-684 
-685 
-686 
-687 
-688 
-689 
-690 
-691 
-692 
-693 
-694 
-695 
-696 
-697 
-698 
-699 
-700 
-701 
-702 
-703 
-704 
-705 
-706 
-707 
-708 
-709 
-710 
-711 
-712 
-713 
-714 
-715 
-716 
-717 
-718 
-719 
-720 
-721 
-722 
-723 
-724 
-725 
-726 
-727 
-728 
-729 
-730 
-731 
-732 
-733 
-734 
-735 
-736 
-737 
-738 
-739 
-740 
-741 
-742 
-743 
-744 
-745 
-746 
-747 
-748 
-749 
-750 
-751 
-752 
-753 
-754 
-755 
-756 
-757 
-758 
-759 
-760 
-761 
-762 
-763 
-764 
-765 
-766 
-767 
-768 
-769 
-770 
-771 
-772 
-773 
-774 
-775 
-776 
-777 
-778 
-779 
-780 
-781 
-782 
-783 
-784 
-785 
-786 
-787 
-788 
-789 
-790 
-791 
-792 
-793 
-794 
-795 
-796 
-797 
-798 
-799 
-800 
-801 
-802 
-803 
-804 
-805 
-806 
-807 
-808 
-809 
-810 
-811 
-812 
-813 
-814 
-815 
-816 
-817 
-818 
-819 
-820 
-821 
-822 
-823 
-824 
-825 
-826 
-827 
-828 
-829 
-830 
-831 
-832 
-833 
-834 
-835 
-836 
-837 
-838 
-839 
-840 
-841 
-842 
-843 
-844 
-845 
-846 
-847 
-848 
-849 
-850 
-851 
-852 
-853 
-854 
-855 
-856 
-857 
-858 
-859 
-860 
-861 
-862 
-863 
-864 
-865 
-866 
-867 
-868 
-869 
-870 
-871 
-872 
-873 
-874 
-875 
-876 
-877 
-878 
-879 
-880 
-881 
-882 
-883 
-884 
-885 
-886 
-887 
-888 
-889 
-890 
-891 
-892 
-893 
-894 
-895 
-896 
-897 
-898 
-899 
-900 
-901 
-902 
-903 
-904 
-905 
-906 
-907 
-908 
-909 
-910 
-911 
-912 
-913 
-914 
-915 
-916 
-917 
-918 
-919 
-920 
-921 
-922 
-923 
-924 
-925 
-926 
-927 
-928 
-929 
-930 
-931 
-932 
-933 
-934 
-935 
-936 
-937 
-938 
-939 
-940 
-941 
-942 
-943 
-944 
-945 
-946 
-947 
-948 
-949 
-950 
-951 
-952 
-953 
-954 
-955 
-956 
-957 
-958 
-959 
-960 
-961 
-962 
-963 
-964 
-965 
-966 
-967 
-968 
-969 
-970 
-971 
-972 
-973 
-974 
-975 
-976 
-977 
-978 
-979 
-980 
-981 
-982 
-983 
-984 
-985 
-986 
-987 
-988 
-989 
-990 
-991 
-992 
-993 
-994 
-995 
-996 
-997 
-998 
-999 
-1000 
-1001 
-1002 
-1003 
-1004 
-1005 
-1006 
-1007 
-1008 
-1009 
-1010 
-1011 
-1012 
-1013 
-1014 
-1015 
-1016 
-1017 
-1018 
-1019 
-1020 
-1021 
-1022 
-1023 
-1024 
-1025 
-1026 
-1027 
-1028 
-1029 
-1030 
-1031 
-1032 
-1033 
-1034 
-1035 
-1036 
-1037 
-1038 
-1039 
-1040 
-1041 
-1042 
-1043 
-1044 
-1045 
-1046 
-1047 
-1048 
-1049 
-1050 
-1051 
-1052 
-1053 
-1054 
-1055 
-1056 
-1057 
-1058 
-1059 
-1060 
-1061 
-1062 
-1063 
-1064 
-1065 
-1066 
-1067 
-1068 
-1069 
-1070 
-1071 
-1072 
-1073 
-1074 
-1075 
-1076 
-1077 
-1078 
-1079 
-1080 
-1081 
-1082 
-1083 
-1084 
-1085 
-1086 
-1087 
-1088 
-1089 
-1090 
-1091 
-1092 
-1093 
-1094 
-1095 
-1096 
-1097 
-1098 
-1099 
-1100 
-1101 
-1102 
-1103 
-1104 
-1105 
-1106 
-1107 
-1108 
-1109 
-1110 
-1111 
-1112 
-1113 
-1114 
-1115 
-1116 
-1117 
-1118 
-1119 
-1120 
-1121 
-1122 
-1123 
-1124 
-1125 
-1126 
-1127 
-1128 
-1129 
-1130 
-1131 
-1132 
-1133 
-1134 
-1135 
-1136 
-1137 
-1138 
-1139 
-1140 
-1141 
-1142 
-1143 
-1144 
-1145 
-1146 
-1147 
-1148 
-1149 
-1150 
-1151 
-1152 
-1153 
-1154 
-1155 
-1156 
-1157 
-1158 
-1159 
-1160 
-1161 
-1162 
-1163 
-1164 
-1165 
-1166 
-1167 
-1168 
-1169 
-1170 
-1171 
-1172 
-1173 
-1174 
-1175 
-1176 
-1177 
-1178 
-1179 
-1180 
-1181 
-1182 
-1183 
-1184 
-1185 
-1186 
-1187 
-1188 
-1189 
-1190 
-1191 
-1192 
-1193 
-1194 
-1195 
-1196 
-1197 
-1198 
-1199 
-1200 
-1201 
-1202 
-1203 
-1204 
-1205 
-1206 
-1207 
-1208 
-1209 
-1210 
-1211 
-1212 
-1213 
-1214 
-1215 
-1216 
-1217 
-1218 
-1219 
-1220 
-1221 
-1222 
-1223 
-1224 
-1225 
-1226 
-1227 
-1228 
-1229 
-1230 
-1231 
-1232 
-1233 
-1234 
-1235 
-1236 
-1237 
-1238 
-1239 
-1240 
-1241 
-1242 
-1243 
-1244 
-1245 
-1246 
-1247 
-1248 
-1249 
-1250 
-1251 
-1252 
-1253 
-1254 
-1255 
-1256 
-1257 
-1258 
-1259 
-1260 
-1261 
-1262 
-1263 
-1264 
-1265 
-1266 
-1267 
-1268 
-1269 
-1270 
-1271 
-1272 
-1273 
-1274 
-1275 
-1276 
-1277 
-1278 
-1279 
-1280 
-1281 
-1282 
-1283 
-1284 
-1285 
-1286 
-1287 
-1288 
-1289 
-1290 
-1291 
-1292 
-1293 
-1294 
-1295 
-1296 
-1297 
-1298 
-1299 
-1300 
-1301 
-1302 
-1303 
-1304 
-1305 
-1306 
-1307 
-1308 
-1309 
-1310 
-1311 
-1312 
-1313 
-1314 
-1315 
-1316 
-1317 
-1318 
-1319 
-1320 
-1321 
-1322 
-1323 
-1324 
-1325 
-1326 
-1327 
-1328 
-1329 
-1330 
-1331 
-1332 
-1333 
-1334 
-1335 
-1336 
-1337 
-1338 
-1339 
-1340 
-1341 
-1342 
-1343 
-1344 
-1345 
-1346 
-1347 
-1348 
-1349 
-1350 
-1351 
-1352 
-1353 
-1354 
-1355 
-1356 
-1357 
-1358 
-1359 
-1360 
-1361 
-1362 
-1363 
-1364 
-1365 
-1366 
-1367 
-1368 
-1369 
-1370 
-1371 
-1372 
-1373 
-1374 
-1375 
-1376 
-1377 
-1378 
-1379 
-1380 
-1381 
-1382 
-1383 
-1384 
-1385 
-1386 
-1387 
-1388 
-1389 
-1390 
-1391 
-1392 
-1393 
-1394 
-1395 
-1396 
-1397 
-1398 
-1399 
-1400 
-1401 
-1402 
-1403 
-1404 
-1405 
-1406 
-1407 
-1408 
-1409 
-1410 
-1411 
-1412 
-1413 
-1414 
-1415 
-1416 
-1417 
-1418 
-1419 
-1428 
-1429 
-1430 
-1431 
-1432 
-1433 
-1434 
-1435 
-1436 
-1437 
-1438 
-1439 
-1440 
-1441 
-1442 
-1443 
-1444 
-1445 
-1446 
-1447 
-1448 
-1449 
-1450 
-1451 
-1460 
-1461 
-1462 
-1463 
-1464 
-1465 
-1466 
-1467 
-1468 
-1469 
-1470 
-1471 
-1472 
-1473 
-1474 
-1475 
-1476 
-1477 
-1478 
-1479 
-1480 
-1481 
-1482 
-1483 
-1492 
-1493 
-1494 
-1495 
-1496 
-1497 
-1498 
-1499 
-1500 
-1501 
-1502 
-1503 
-1504 
-1505 
-1506 
-1507 
-1508 
-1509 
-1510 
-1511 
-1512 
-1513 
-1514 
-1515 
-1524 
-1525 
-1526 
-1527 
-1528 
-1529 
-1530 
-1531 
-1532 
-1533 
-1534 
-1535 
-1536 
-1537 
-1538 
-1539 
-1540 
-1541 
-1542 
-1543 
-1544 
-1545 
-1546 
-1547 
-1556 
-1557 
-1558 
-1559 
-1560 
-1561 
-1562 
-1563 
-1564 
-1565 
-1566 
-1567 
-1568 
-1569 
-1570 
-1571 
-1572 
-1573 
-1574 
-1575 
-1576 
-1577 
-1578 
-1579 
-1588 
-1589 
-1590 
-1591 
-1592 
-1593 
-1594 
-1595 
-1596 
-1597 
-1598 
-1599 
-1600 
-1601 
-1602 
-1603 
-1604 
-1605 
-1606 
-1607 
-1608 
-1609 
-1610 
-1611 
-1620 
-1621 
-1622 
-1623 
-1624 
-1625 
-1626 
-1627 
-1628 
-1629 
-1630 
-1631 
-1632 
-1633 
-1634 
-1635 
-1636 
-1637 
-1638 
-1639 
-1640 
-1641 
-1642 
-1643 
-1652 
-1653 
-1654 
-1655 
-1656 
-1657 
-1658 
-1659 
-1660 
-1661 
-1662 
-1663 
-1664 
-1665 
-1666 
-1667 
-1668 
-1669 
-1670 
-1671 
-1672 
-1673 
-1674 
-1675 
-1676 
-1677 
-1678 
-1679 
-1680 
-1681 
-1682 
-1683 
-1684 
-1685 
-1686 
-1687 
-1688 
-1689 
-1690 
-1691 
-1692 
-1693 
-1694 
-1695 
-1696 
-1697 
-1698 
-1699 
-1700 
-1701 
-1702 
-1703 
-1704 
-1705 
-1706 
-1707 
-1708 
-1709 
-1710 
-1711 
-1712 
-1713 
-1714 
-1715 
-1716 
-1717 
-1718 
-1719 
-1720 
-1721 
-1722 
-1723 
-1724 
-1725 
-1726 
-1727 
-1728 
-1729 
-1730 
-1731 
-1732 
-1733 
-1734 
-1735 
-1736 
-1737 
-1738 
-1739 
-1740 
-1741 
-1742 
-1743 
-1744 
-1745 
-1746 
-1747 
-1748 
-1749 
-1750 
-1751 
-1752 
-1753 
-1754 
-1755 
-1756 
-1757 
-1758 
-1759 
-1760 
-1761 
-1762 
-1763 
-1764 
-1765 
-1766 
-1767 
-1768 
-1769 
-1770 
-1771 
-1772 
-1773 
-1774 
-1775 
-1776 
-1777 
-1778 
-1779 
-1780 
-1781 
-1782 
-1783 
-1784 
-1785 
-1786 
-1787 
-1788 
-1789 
-1790 
-1791 
-1792 
-1793 
-1794 
-1795 
-1796 
-1797 
-1798 
-1799 
-1800 
-1801 
-1802 
-1803 
-1804 
-1805 
-1806 
-1807 
-1808 
-1809 
-1810 
-1811 
-1812 
-1813 
-1814 
-1815 
-1816 
-1817 
-1818 
-1819 
-1820 
-1821 
-1822 
-1823 
-1824 
-1825 
-1826 
-1827 
-1828 
-1829 
-1830 
-1831 
-1832 
-1833 
-1834 
-1835 
-1836 
-1837 
-1838 
-1839 
-1840 
-1841 
-1842 
-1843 
-1844 
-1845 
-1846 
-1847 
-1848 
-1849 
-1850 
-1851 
-1852 
-1853 
-1854 
-1855 
-1856 
-1857 
-1858 
-1859 
-1860 
-1861 
-1862 
-1863 
-1864 
-1865 
-1866 
-1867 
-1868 
-1869 
-1870 
-1871 
-1872 
-1873 
-1874 
-1875 
-1876 
-1877 
-1878 
-1879 
-1880 
-1881 
-1882 
-1883 
-1884 
-1885 
-1886 
-1887 
-1888 
-1889 
-1890 
-1891 
-1892 
-1893 
-1894 
-1895 
-1896 
-1897 
-1898 
-1899 
-1900 
-1901 
-1902 
-1903 
-1904 
-1905 
-1906 
-1907 
-1908 
-1909 
-1910 
-1911 
-1912 
-1913 
-1914 
-1915 
-1916 
-1917 
-1918 
-1919 
-1920 
-1921 
-1922 
-1923 
-1924 
-1925 
-1926 
-1927 
-1928 
-1929 
-1930 
-1931 
-1932 
-1933 
-1934 
-1935 
-1936 
-1937 
-1938 
-1939 
-1940 
-1941 
-1942 
-1943 
-1944 
-1945 
-1946 
-1947 
-1948 
-1949 
-1950 
-1951 
-1952 
-1953 
-1954 
-1955 
-1956 
-1957 
-1958 
-1959 
-1960 
-1961 
-1962 
-1963 
-1964 
-1965 
-1966 
-1967 
-1968 
-1969 
-1970 
-1971 
-1972 
-1973 
-1974 
-1975 
-1976 
-1977 
-1978 
-1979 
-1980 
-1981 
-1982 
-1983 
-1984 
-1985 
-1986 
-1987 
-1988 
-1989 
-1990 
-1991 
-1992 
-1993 
-1994 
-1995 
-1996 
-1997 
-1998 
-1999 
-2000 
-2001 
-2002 
-2003 
-2004 
-2005 
-2006 
-2007 
-2008 
-2009 
-2010 
-2011 
-2012 
-2013 
-2014 
-2015 
-2016 
-2017 
-2018 
-2019 
-2020 
-2021 
-2022 
-2023 
-2024 
-2025 
-2026 
-2027 
-2028 
-2029 
-2030 
-2031 
-2032 
-2033 
-2034 
-2035 
-2036 
-2037 
-2038 
-2039 
-2040 
-2041 
-2042 
-2043 
-2044 
-2045 
-2046 
-2047 
-2048 
-2049 
-2050 
-2051 
-2052 
-2053 
-2054 
-2055 
-2056 
-2057 
-2058 
-2059 
-2060 
-2061 
-2062 
-2063 
-2064 
-2065 
-2066 
-2067 
-2068 
-2069 
-2070 
-2071 
-2072 
-2073 
-2074 
-2075 
-2076 
-2077 
-2078 
-2079 
-2080 
-2081 
-2082 
-2083 
-2084 
-2085 
-2086 
-2087 
-2088 
-2089 
-2090 
-2091 
-2092 
-2093 
-2094 
-2095 
-2096 
-2097 
-2098 
-2099 
-2100 
-2101 
-2102 
-2103 
-2104 
-2105 
-2106 
-2107 
-2108 
-2109 
-2110 
-2111 
-2112 
-2113 
-2114 
-2115 
-2116 
-2117 
-2118 
-2119 
-2120 
-2121 
-2122 
-2123 
-2124 
-2125 
-2126 
-2127 
-2128 
-2129 
-2130 
-2131 
-2132 
-2133 
-2134 
-2135 
-2136 
-2137 
-2138 
-2139 
-2140 
-2141 
-2142 
-2143 
-2144 
-2145 
-2146 
-2147 
-2148 
-2149 
-2150 
-2151 
-2152 
-2153 
-2154 
-2155 
-2156 
-2157 
-2158 
-2159 
-2160 
-2161 
-2162 
-2163 
-2164 
-2165 
-2166 
-2167 
-2168 
-2169 
-2170 
-2171 
-2172 
-2173 
-2174 
-2175 
-2176 
-2177 
-2178 
-2179 
-2180 
-2181 
-2182 
-2183 
-2184 
-2185 
-2186 
-2187 
-2188 
-2189 
-2190 
-2191 
-2192 
-2193 
-2194 
-2195 
-2196 
-2197 
-2198 
-2199 
-2200 
-2201 
-2202 
-2203 
-2204 
-2205 
-2206 
-2207 
-2208 
-2209 
-2210 
-2211 
-2212 
-2213 
-2214 
-2215 
-2216 
-2217 
-2218 
-2219 
-2220 
-2221 
-2222 
-2223 
-2224 
-2225 
-2226 
-2227 
-2228 
-2229 
-2230 
-2231 
-2232 
-2233 
-2234 
-2235 
-2236 
-2237 
-2238 
-2239 
-2240 
-2241 
-2242 
-2243 
-2244 
-2245 
-2246 
-2247 
-2248 
-2249 
-2250 
-2251 
-2252 
-2253 
-2254 
-2255 
-2256 
-2257 
-2258 
-2259 
-2260 
-2261 
-2262 
-2263 
-2264 
-2265 
-2266 
-2267 
-2268 
-2269 
-2270 
-2271 
-2272 
-2273 
-2274 
-2275 
-2276 
-2277 
-2278 
-2279 
-2280 
-2281 
-2282 
-2283 
-2284 
-2285 
-2286 
-2287 
-2288 
-2289 
-2290 
-2291 
-2292 
-2293 
-2294 
-2295 
-2296 
-2297 
-2298 
-2299 
-2300 
-2301 
-2302 
-2303 
-2304 
-2305 
-2306 
-2307 
-2308 
-2309 
-2310 
-2311 
-2312 
-2313 
-2314 
-2315 
-2316 
-2317 
-2318 
-2319 
-2320 
-2321 
-2322 
-2323 
-2324 
-2325 
-2326 
-2327 
-2328 
-2329 
-2330 
-2331 
-2332 
-2333 
-2334 
-2335 
-2336 
-2337 
-2338 
-2339 
-2340 
-2341 
-2342 
-2343 
-2344 
-2345 
-2346 
-2347 
-2348 
-2349 
-2350 
-2351 
-2352 
-2353 
-2354 
-2355 
-2356 
-2357 
-2358 
-2359 
-2360 
-2361 
-2362 
-2363 
-2364 
-2365 
-2366 
-2367 
-2368 
-2369 
-2370 
-2371 
-2372 
-2373 
-2374 
-2375 
-2376 
-2377 
-2378 
-2379 
-2380 
-2381 
-2382 
-2383 
-2384 
-2385 
-2386 
-2387 
-2388 
-2389 
-2390 
-2391 
-2392 
-2393 
-2394 
-2395 
-2396 
-2397 
-2398 
-2399 
-2400 
-2401 
-2402 
-2403 
-2404 
-2405 
-2406 
-2407 
-2408 
-2409 
-2410 
-2411 
-2412 
-2413 
-2414 
-2415 
-2416 
-2417 
-2418 
-2419 
-2420 
-2421 
-2422 
-2423 
-2424 
-2425 
-2426 
-2427 
-2428 
-2429 
-2430 
-2431 
-2432 
-2433 
-2434 
-2435 
-2436 
-2437 
-2438 
-2439 
-2440 
-2441 
-2442 
-2443 
-2452 
-2453 
-2454 
-2455 
-2456 
-2457 
-2458 
-2459 
-2460 
-2461 
-2462 
-2463 
-2464 
-2465 
-2466 
-2467 
-2468 
-2469 
-2470 
-2471 
-2472 
-2473 
-2474 
-2475 
-2484 
-2485 
-2486 
-2487 
-2488 
-2489 
-2490 
-2491 
-2492 
-2493 
-2494 
-2495 
-2496 
-2497 
-2498 
-2499 
-2500 
-2501 
-2502 
-2503 
-2504 
-2505 
-2506 
-2507 
-2516 
-2517 
-2518 
-2519 
-2520 
-2521 
-2522 
-2523 
-2524 
-2525 
-2526 
-2527 
-2528 
-2529 
-2530 
-2531 
-2532 
-2533 
-2534 
-2535 
-2536 
-2537 
-2538 
-2539 
-2548 
-2549 
-2550 
-2551 
-2552 
-2553 
-2554 
-2555 
-2556 
-2557 
-2558 
-2559 
-2560 
-2561 
-2562 
-2563 
-2564 
-2565 
-2566 
-2567 
-2568 
-2569 
-2570 
-2571 
-2580 
-2581 
-2582 
-2583 
-2584 
-2585 
-2586 
-2587 
-2588 
-2589 
-2590 
-2591 
-2592 
-2593 
-2594 
-2595 
-2596 
-2597 
-2598 
-2599 
-2600 
-2601 
-2602 
-2603 
-2612 
-2613 
-2614 
-2615 
-2616 
-2617 
-2618 
-2619 
-2620 
-2621 
-2622 
-2623 
-2624 
-2625 
-2626 
-2627 
-2628 
-2629 
-2630 
-2631 
-2632 
-2633 
-2634 
-2635 
-2644 
-2645 
-2646 
-2647 
-2648 
-2649 
-2650 
-2651 
-2652 
-2653 
-2654 
-2655 
-2656 
-2657 
-2658 
-2659 
-2660 
-2661 
-2662 
-2663 
-2664 
-2665 
-2666 
-2667 
-2676 
-2677 
-2678 
-2679 
-2680 
-2681 
-2682 
-2683 
-2684 
-2685 
-2686 
-2687 
-2688 
-2689 
-2690 
-2691 
-2692 
-2693 
-2694 
-2695 
-2696 
-2697 
-2698 
-2699 
-2700 
-2701 
-2702 
-2703 
-2704 
-2705 
-2706 
-2707 
-2708 
-2709 
-2710 
-2711 
-2712 
-2713 
-2714 
-2715 
-2716 
-2717 
-2718 
-2719 
-2720 
-2721 
-2722 
-2723 
-2724 
-2725 
-2726 
-2727 
-2728 
-2729 
-2730 
-2731 
-2732 
-2733 
-2734 
-2735 
-2736 
-2737 
-2738 
-2739 
-2740 
-2741 
-2742 
-2743 
-2744 
-2745 
-2746 
-2747 
-2748 
-2749 
-2750 
-2751 
-2752 
-2753 
-2754 
-2755 
-2756 
-2757 
-2758 
-2759 
-2760 
-2761 
-2762 
-2763 
-2764 
-2765 
-2766 
-2767 
-2768 
-2769 
-2770 
-2771 
-2772 
-2773 
-2774 
-2775 
-2776 
-2777 
-2778 
-2779 
-2780 
-2781 
-2782 
-2783 
-2784 
-2785 
-2786 
-2787 
-2788 
-2789 
-2790 
-2791 
-2792 
-2793 
-2794 
-2795 
-2796 
-2797 
-2798 
-2799 
-2800 
-2801 
-2802 
-2803 
-2804 
-2805 
-2806 
-2807 
-2808 
-2809 
-2810 
-2811 
-2812 
-2813 
-2814 
-2815 
-2816 
-2817 
-2818 
-2819 
-2820 
-2821 
-2822 
-2823 
-2824 
-2825 
-2826 
-2827 
-2828 
-2829 
-2830 
-2831 
-2832 
-2833 
-2834 
-2835 
-2836 
-2837 
-2838 
-2839 
-2840 
-2841 
-2842 
-2843 
-2844 
-2845 
-2846 
-2847 
-2848 
-2849 
-2850 
-2851 
-2852 
-2853 
-2854 
-2855 
-2856 
-2857 
-2858 
-2859 
-2860 
-2861 
-2862 
-2863 
-2864 
-2865 
-2866 
-2867 
-2868 
-2869 
-2870 
-2871 
-2872 
-2873 
-2874 
-2875 
-2876 
-2877 
-2878 
-2879 
-2880 
-2881 
-2882 
-2883 
-2884 
-2885 
-2886 
-2887 
-2888 
-2889 
-2890 
-2891 
-2892 
-2893 
-2894 
-2895 
-2896 
-2897 
-2898 
-2899 
-2900 
-2901 
-2902 
-2903 
-2904 
-2905 
-2906 
-2907 
-2908 
-2909 
-2910 
-2911 
-2912 
-2913 
-2914 
-2915 
-2916 
-2917 
-2918 
-2919 
-2920 
-2921 
-2922 
-2923 
-2924 
-2925 
-2926 
-2927 
-2928 
-2929 
-2930 
-2931 
-2932 
-2933 
-2934 
-2935 
-2936 
-2937 
-2938 
-2939 
-2940 
-2941 
-2942 
-2943 
-2944 
-2945 
-2946 
-2947 
-2948 
-2949 
-2950 
-2951 
-2952 
-2953 
-2954 
-2955 
-2956 
-2957 
-2958 
-2959 
-2960 
-2961 
-2962 
-2963 
-2964 
-2965 
-2966 
-2967 
-2968 
-2969 
-2970 
-2971 
-2972 
-2973 
-2974 
-2975 
-2976 
-2977 
-2978 
-2979 
-2980 
-2981 
-2982 
-2983 
-2984 
-2985 
-2986 
-2987 
-2988 
-2989 
-2990 
-2991 
-2992 
-2993 
-2994 
-2995 
-2996 
-2997 
-2998 
-2999 
-3000 
-3001 
-3002 
-3003 
-3004 
-3005 
-3006 
-3007 
-3008 
-3009 
-3010 
-3011 
-3012 
-3013 
-3014 
-3015 
-3016 
-3017 
-3018 
-3019 
-3020 
-3021 
-3022 
-3023 
-3024 
-3025 
-3026 
-3027 
-3028 
-3029 
-3030 
-3031 
-3032 
-3033 
-3034 
-3035 
-3036 
-3037 
-3038 
-3039 
-3040 
-3041 
-3042 
-3043 
-3044 
-3045 
-3046 
-3047 
-3048 
-3049 
-3050 
-3051 
-3052 
-3053 
-3054 
-3055 
-3056 
-3057 
-3058 
-3059 
-3060 
-3061 
-3062 
-3063 
-3064 
-3065 
-3066 
-3067 
-3068 
-3069 
-3070 
-3071 
-3072 
-3073 
-3074 
-3075 
-3076 
-3077 
-3078 
-3079 
-3080 
-3081 
-3082 
-3083 
-3084 
-3085 
-3086 
-3087 
-3088 
-3089 
-3090 
-3091 
-3092 
-3093 
-3094 
-3095 
-3096 
-3097 
-3098 
-3099 
-3100 
-3101 
-3102 
-3103 
-3104 
-3105 
-3106 
-3107 
-3108 
-3109 
-3110 
-3111 
-3112 
-3113 
-3114 
-3115 
-3116 
-3117 
-3118 
-3119 
-3120 
-3121 
-3122 
-3123 
-3124 
-3125 
-3126 
-3127 
-3128 
-3129 
-3130 
-3131 
-3132 
-3133 
-3134 
-3135 
-3136 
-3137 
-3138 
-3139 
-3140 
-3141 
-3142 
-3143 
-3144 
-3145 
-3146 
-3147 
-3148 
-3149 
-3150 
-3151 
-3152 
-3153 
-3154 
-3155 
-3156 
-3157 
-3158 
-3159 
-3160 
-3161 
-3162 
-3163 
-3164 
-3165 
-3166 
-3167 
-3168 
-3169 
-3170 
-3171 
-3172 
-3173 
-3174 
-3175 
-3176 
-3177 
-3178 
-3179 
-3180 
-3181 
-3182 
-3183 
-3184 
-3185 
-3186 
-3187 
-3188 
-3189 
-3190 
-3191 
-3192 
-3193 
-3194 
-3195 
-3196 
-3197 
-3198 
-3199 
-3200 
-3201 
-3202 
-3203 
-3204 
-3205 
-3206 
-3207 
-3208 
-3209 
-3210 
-3211 
-3212 
-3213 
-3214 
-3215 
-3216 
-3217 
-3218 
-3219 
-3220 
-3221 
-3222 
-3223 
-3224 
-3225 
-3226 
-3227 
-3228 
-3229 
-3230 
-3231 
-3232 
-3233 
-3234 
-3235 
-3236 
-3237 
-3238 
-3239 
-3240 
-3241 
-3242 
-3243 
-3244 
-3245 
-3246 
-3247 
-3248 
-3249 
-3250 
-3251 
-3252 
-3253 
-3254 
-3255 
-3256 
-3257 
-3258 
-3259 
-3260 
-3261 
-3262 
-3263 
-3264 
-3265 
-3266 
-3267 
-3268 
-3269 
-3270 
-3271 
-3272 
-3273 
-3274 
-3275 
-3276 
-3277 
-3278 
-3279 
-3280 
-3281 
-3282 
-3283 
-3284 
-3285 
-3286 
-3287 
-3288 
-3289 
-3290 
-3291 
-3292 
-3293 
-3294 
-3295 
-3296 
-3297 
-3298 
-3299 
-3300 
-3301 
-3302 
-3303 
-3304 
-3305 
-3306 
-3307 
-3308 
-3309 
-3310 
-3311 
-3312 
-3313 
-3314 
-3315 
-3316 
-3317 
-3318 
-3319 
-3320 
-3321 
-3322 
-3323 
-3324 
-3325 
-3326 
-3327 
-3328 
-3329 
-3330 
-3331 
-3332 
-3333 
-3334 
-3335 
-3336 
-3337 
-3338 
-3339 
-3340 
-3341 
-3342 
-3343 
-3344 
-3345 
-3346 
-3347 
-3348 
-3349 
-3350 
-3351 
-3352 
-3353 
-3354 
-3355 
-3356 
-3357 
-3358 
-3359 
-3360 
-3361 
-3362 
-3363 
-3364 
-3365 
-3366 
-3367 
-3368 
-3369 
-3370 
-3371 
-3372 
-3373 
-3374 
-3375 
-3376 
-3377 
-3378 
-3379 
-3380 
-3381 
-3382 
-3383 
-3384 
-3385 
-3386 
-3387 
-3388 
-3389 
-3390 
-3391 
-3392 
-3393 
-3394 
-3395 
-3396 
-3397 
-3398 
-3399 
-3400 
-3401 
-3402 
-3403 
-3404 
-3405 
-3406 
-3407 
-3408 
-3409 
-3410 
-3411 
-3412 
-3413 
-3414 
-3415 
-3416 
-3417 
-3418 
-3419 
-3420 
-3421 
-3422 
-3423 
-3424 
-3425 
-3426 
-3427 
-3428 
-3429 
-3430 
-3431 
-3432 
-3433 
-3434 
-3435 
-3436 
-3437 
-3438 
-3439 
-3440 
-3441 
-3442 
-3443 
-3444 
-3445 
-3446 
-3447 
-3448 
-3449 
-3450 
-3451 
-3452 
-3453 
-3454 
-3455 
-3456 
-3457 
-3458 
-3459 
-3460 
-3461 
-3462 
-3463 
-3464 
-3465 
-3466 
-3467 
-3476 
-3477 
-3478 
-3479 
-3480 
-3481 
-3482 
-3483 
-3484 
-3485 
-3486 
-3487 
-3488 
-3489 
-3490 
-3491 
-3492 
-3493 
-3494 
-3495 
-3496 
-3497 
-3498 
-3499 
-3508 
-3509 
-3510 
-3511 
-3512 
-3513 
-3514 
-3515 
-3516 
-3517 
-3518 
-3519 
-3520 
-3521 
-3522 
-3523 
-3524 
-3525 
-3526 
-3527 
-3528 
-3529 
-3530 
-3531 
-3540 
-3541 
-3542 
-3543 
-3544 
-3545 
-3546 
-3547 
-3548 
-3549 
-3550 
-3551 
-3552 
-3553 
-3554 
-3555 
-3556 
-3557 
-3558 
-3559 
-3560 
-3561 
-3562 
-3563 
-3572 
-3573 
-3574 
-3575 
-3576 
-3577 
-3578 
-3579 
-3580 
-3581 
-3582 
-3583 
-3584 
-3585 
-3586 
-3587 
-3588 
-3589 
-3590 
-3591 
-3592 
-3593 
-3594 
-3595 
-3604 
-3605 
-3606 
-3607 
-3608 
-3609 
-3610 
-3611 
-3612 
-3613 
-3614 
-3615 
-3616 
-3617 
-3618 
-3619 
-3620 
-3621 
-3622 
-3623 
-3624 
-3625 
-3626 
-3627 
-3636 
-3637 
-3638 
-3639 
-3640 
-3641 
-3642 
-3643 
-3644 
-3645 
-3646 
-3647 
-3648 
-3649 
-3650 
-3651 
-3652 
-3653 
-3654 
-3655 
-3656 
-3657 
-3658 
-3659 
-3668 
-3669 
-3670 
-3671 
-3672 
-3673 
-3674 
-3675 
-3676 
-3677 
-3678 
-3679 
-3680 
-3681 
-3682 
-3683 
-3684 
-3685 
-3686 
-3687 
-3688 
-3689 
-3690 
-3691 
-3700 
-3701 
-3702 
-3703 
-3704 
-3705 
-3706 
-3707 
-3708 
-3709 
-3710 
-3711 
-3712 
-3713 
-3714 
-3715 
-3716 
-3717 
-3718 
-3719 
-3720 
-3721 
-3722 
-3723 
-3724 
-3725 
-3726 
-3727 
-3728 
-3729 
-3730 
-3731 
-3732 
-3733 
-3734 
-3735 
-3736 
-3737 
-3738 
-3739 
-3740 
-3741 
-3742 
-3743 
-3744 
-3745 
-3746 
-3747 
-3748 
-3749 
-3750 
-3751 
-3752 
-3753 
-3754 
-3755 
-3756 
-3757 
-3758 
-3759 
-3760 
-3761 
-3762 
-3763 
-3764 
-3765 
-3766 
-3767 
-3768 
-3769 
-3770 
-3771 
-3772 
-3773 
-3774 
-3775 
-3776 
-3777 
-3778 
-3779 
-3780 
-3781 
-3782 
-3783 
-3784 
-3785 
-3786 
-3787 
-3788 
-3789 
-3790 
-3791 
-3792 
-3793 
-3794 
-3795 
-3796 
-3797 
-3798 
-3799 
-3800 
-3801 
-3802 
-3803 
-3804 
-3805 
-3806 
-3807 
-3808 
-3809 
-3810 
-3811 
-3812 
-3813 
-3814 
-3815 
-3816 
-3817 
-3818 
-3819 
-3820 
-3821 
-3822 
-3823 
-3824 
-3825 
-3826 
-3827 
-3828 
-3829 
-3830 
-3831 
-3832 
-3833 
-3834 
-3835 
-3836 
-3837 
-3838 
-3839 
-3840 
-3841 
-3842 
-3843 
-3844 
-3845 
-3846 
-3847 
-3848 
-3849 
-3850 
-3851 
-3852 
-3853 
-3854 
-3855 
-3856 
-3857 
-3858 
-3859 
-3860 
-3861 
-3862 
-3863 
-3864 
-3865 
-3866 
-3867 
-3868 
-3869 
-3870 
-3871 
-3872 
-3873 
-3874 
-3875 
-3876 
-3877 
-3878 
-3879 
-3880 
-3881 
-3882 
-3883 
-3884 
-3885 
-3886 
-3887 
-3888 
-3889 
-3890 
-3891 
-3892 
-3893 
-3894 
-3895 
-3896 
-3897 
-3898 
-3899 
-3900 
-3901 
-3902 
-3903 
-3904 
-3905 
-3906 
-3907 
-3908 
-3909 
-3910 
-3911 
-3912 
-3913 
-3914 
-3915 
-3916 
-3917 
-3918 
-3919 
-3920 
-3921 
-3922 
-3923 
-3924 
-3925 
-3926 
-3927 
-3928 
-3929 
-3930 
-3931 
-3932 
-3933 
-3934 
-3935 
-3936 
-3937 
-3938 
-3939 
-3940 
-3941 
-3942 
-3943 
-3944 
-3945 
-3946 
-3947 
-3948 
-3949 
-3950 
-3951 
-3952 
-3953 
-3954 
-3955 
-3956 
-3957 
-3958 
-3959 
-3960 
-3961 
-3962 
-3963 
-3964 
-3965 
-3966 
-3967 
-3968 
-3969 
-3970 
-3971 
-3972 
-3973 
-3974 
-3975 
-3976 
-3977 
-3978 
-3979 
-3980 
-3981 
-3982 
-3983 
-3984 
-3985 
-3986 
-3987 
-3988 
-3989 
-3990 
-3991 
-3992 
-3993 
-3994 
-3995 
-3996 
-3997 
-3998 
-3999 
-4000 
-4001 
-4002 
-4003 
-4004 
-4005 
-4006 
-4007 
-4008 
-4009 
-4010 
-4011 
-4012 
-4013 
-4014 
-4015 
-4016 
-4017 
-4018 
-4019 
-4020 
-4021 
-4022 
-4023 
-4024 
-4025 
-4026 
-4027 
-4028 
-4029 
-4030 
-4031 
-4032 
-4033 
-4034 
-4035 
-4036 
-4037 
-4038 
-4039 
-4040 
-4041 
-4042 
-4043 
-4044 
-4045 
-4046 
-4047 
-4048 
-4049 
-4050 
-4051 
-4052 
-4053 
-4054 
-4055 
-4056 
-4057 
-4058 
-4059 
-4060 
-4061 
-4062 
-4063 
-4064 
-4065 
-4066 
-4067 
-4068 
-4069 
-4070 
-4071 
-4072 
-4073 
-4074 
-4075 
-4076 
-4077 
-4078 
-4079 
-4080 
-4081 
-4082 
-4083 
-4084 
-4085 
-4086 
-4087 
-4088 
-4089 
-4090 
-4091 
-4092 
-4093 
-4094 
-4095 
-4096 
-4097 
-4098 
-4099 
-4100 
-4101 
-4102 
-4103 
-4104 
-4105 
-4106 
-4107 
-4108 
-4109 
-4110 
-4111 
-4112 
-4113 
-4114 
-4115 
-4116 
-4117 
-4118 
-4119 
-4120 
-4121 
-4122 
-4123 
-4124 
-4125 
-4126 
-4127 
-4128 
-4129 
-4130 
-4131 
-4132 
-4133 
-4134 
-4135 
-4136 
-4137 
-4138 
-4139 
-4140 
-4141 
-4142 
-4143 
-4144 
-4145 
-4146 
-4147 
-4148 
-4149 
-4150 
-4151 
-4152 
-4153 
-4154 
-4155 
-4156 
-4157 
-4158 
-4159 
-4160 
-4161 
-4162 
-4163 
-4164 
-4165 
-4166 
-4167 
-4168 
-4169 
-4170 
-4171 
-4172 
-4173 
-4174 
-4175 
-4176 
-4177 
-4178 
-4179 
-4180 
-4181 
-4182 
-4183 
-4184 
-4185 
-4186 
-4187 
-4188 
-4189 
-4190 
-4191 
-4192 
-4193 
-4194 
-4195 
-4196 
-4197 
-4198 
-4199 
-4200 
-4201 
-4202 
-4203 
-4204 
-4205 
-4206 
-4207 
-4208 
-4209 
-4210 
-4211 
-4212 
-4213 
-4214 
-4215 
-4216 
-4217 
-4218 
-4219 
-4220 
-4221 
-4222 
-4223 
-4224 
-4225 
-4226 
-4227 
-4228 
-4229 
-4230 
-4231 
-4232 
-4233 
-4234 
-4235 
-4236 
-4237 
-4238 
-4239 
-4240 
-4241 
-4242 
-4243 
-4244 
-4245 
-4246 
-4247 
-4248 
-4249 
-4250 
-4251 
-4252 
-4253 
-4254 
-4255 
-4256 
-4257 
-4258 
-4259 
-4260 
-4261 
-4262 
-4263 
-4264 
-4265 
-4266 
-4267 
-4268 
-4269 
-4270 
-4271 
-4272 
-4273 
-4274 
-4275 
-4276 
-4277 
-4278 
-4279 
-4280 
-4281 
-4282 
-4283 
-4284 
-4285 
-4286 
-4287 
-4288 
-4289 
-4290 
-4291 
-4292 
-4293 
-4294 
-4295 
-4296 
-4297 
-4298 
-4299 
-4300 
-4301 
-4302 
-4303 
-4304 
-4305 
-4306 
-4307 
-4308 
-4309 
-4310 
-4311 
-4312 
-4313 
-4314 
-4315 
-4316 
-4317 
-4318 
-4319 
-4320 
-4321 
-4322 
-4323 
-4324 
-4325 
-4326 
-4327 
-4328 
-4329 
-4330 
-4331 
-4332 
-4333 
-4334 
-4335 
-4336 
-4337 
-4338 
-4339 
-4340 
-4341 
-4342 
-4343 
-4344 
-4345 
-4346 
-4347 
-4348 
-4349 
-4350 
-4351 
-4352 
-4353 
-4354 
-4355 
-4356 
-4357 
-4358 
-4359 
-4360 
-4361 
-4362 
-4363 
-4364 
-4365 
-4366 
-4367 
-4368 
-4369 
-4370 
-4371 
-4372 
-4373 
-4374 
-4375 
-4376 
-4377 
-4378 
-4379 
-4380 
-4381 
-4382 
-4383 
-4384 
-4385 
-4386 
-4387 
-4388 
-4389 
-4390 
-4391 
-4392 
-4393 
-4394 
-4395 
-4396 
-4397 
-4398 
-4399 
-4400 
-4401 
-4402 
-4403 
-4404 
-4405 
-4406 
-4407 
-4408 
-4409 
-4410 
-4411 
-4412 
-4413 
-4414 
-4415 
-4416 
-4417 
-4418 
-4419 
-4420 
-4421 
-4422 
-4423 
-4424 
-4425 
-4426 
-4427 
-4428 
-4429 
-4430 
-4431 
-4432 
-4433 
-4434 
-4435 
-4436 
-4437 
-4438 
-4439 
-4440 
-4441 
-4442 
-4443 
-4444 
-4445 
-4446 
-4447 
-4448 
-4449 
-4450 
-4451 
-4452 
-4453 
-4454 
-4455 
-4456 
-4457 
-4458 
-4459 
-4460 
-4461 
-4462 
-4463 
-4464 
-4465 
-4466 
-4467 
-4468 
-4469 
-4470 
-4471 
-4472 
-4473 
-4474 
-4475 
-4476 
-4477 
-4478 
-4479 
-4480 
-4481 
-4482 
-4483 
-4484 
-4485 
-4486 
-4487 
-4488 
-4489 
-4490 
-4491 
-4500 
-4501 
-4502 
-4503 
-4504 
-4505 
-4506 
-4507 
-4508 
-4509 
-4510 
-4511 
-4512 
-4513 
-4514 
-4515 
-4516 
-4517 
-4518 
-4519 
-4520 
-4521 
-4522 
-4523 
-4532 
-4533 
-4534 
-4535 
-4536 
-4537 
-4538 
-4539 
-4540 
-4541 
-4542 
-4543 
-4544 
-4545 
-4546 
-4547 
-4548 
-4549 
-4550 
-4551 
-4552 
-4553 
-4554 
-4555 
-4564 
-4565 
-4566 
-4567 
-4568 
-4569 
-4570 
-4571 
-4572 
-4573 
-4574 
-4575 
-4576 
-4577 
-4578 
-4579 
-4580 
-4581 
-4582 
-4583 
-4584 
-4585 
-4586 
-4587 
-4596 
-4597 
-4598 
-4599 
-4600 
-4601 
-4602 
-4603 
-4604 
-4605 
-4606 
-4607 
-4608 
-4609 
-4610 
-4611 
-4612 
-4613 
-4614 
-4615 
-4616 
-4617 
-4618 
-4619 
-4628 
-4629 
-4630 
-4631 
-4632 
-4633 
-4634 
-4635 
-4636 
-4637 
-4638 
-4639 
-4640 
-4641 
-4642 
-4643 
-4644 
-4645 
-4646 
-4647 
-4648 
-4649 
-4650 
-4651 
-4660 
-4661 
-4662 
-4663 
-4664 
-4665 
-4666 
-4667 
-4668 
-4669 
-4670 
-4671 
-4672 
-4673 
-4674 
-4675 
-4676 
-4677 
-4678 
-4679 
-4680 
-4681 
-4682 
-4683 
-4692 
-4693 
-4694 
-4695 
-4696 
-4697 
-4698 
-4699 
-4700 
-4701 
-4702 
-4703 
-4704 
-4705 
-4706 
-4707 
-4708 
-4709 
-4710 
-4711 
-4712 
-4713 
-4714 
-4715 
-4724 
-4725 
-4726 
-4727 
-4728 
-4729 
-4730 
-4731 
-4732 
-4733 
-4734 
-4735 
-4736 
-4737 
-4738 
-4739 
-4740 
-4741 
-4742 
-4743 
-4744 
-4745 
-4746 
-4747 
-4748 
-4749 
-4750 
-4751 
-4752 
-4753 
-4754 
-4755 
-4756 
-4757 
-4758 
-4759 
-4760 
-4761 
-4762 
-4763 
-4764 
-4765 
-4766 
-4767 
-4768 
-4769 
-4770 
-4771 
-4772 
-4773 
-4774 
-4775 
-4776 
-4777 
-4778 
-4779 
-4780 
-4781 
-4782 
-4783 
-4784 
-4785 
-4786 
-4787 
-4788 
-4789 
-4790 
-4791 
-4792 
-4793 
-4794 
-4795 
-4796 
-4797 
-4798 
-4799 
-4800 
-4801 
-4802 
-4803 
-4804 
-4805 
-4806 
-4807 
-4808 
-4809 
-4810 
-4811 
-4812 
-4813 
-4814 
-4815 
-4816 
-4817 
-4818 
-4819 
-4820 
-4821 
-4822 
-4823 
-4824 
-4825 
-4826 
-4827 
-4828 
-4829 
-4830 
-4831 
-4832 
-4833 
-4834 
-4835 
-4836 
-4837 
-4838 
-4839 
-4840 
-4841 
-4842 
-4843 
-4844 
-4845 
-4846 
-4847 
-4848 
-4849 
-4850 
-4851 
-4852 
-4853 
-4854 
-4855 
-4856 
-4857 
-4858 
-4859 
-4860 
-4861 
-4862 
-4863 
-4864 
-4865 
-4866 
-4867 
-4868 
-4869 
-4870 
-4871 
-4872 
-4873 
-4874 
-4875 
-4876 
-4877 
-4878 
-4879 
-4880 
-4881 
-4882 
-4883 
-4884 
-4885 
-4886 
-4887 
-4888 
-4889 
-4890 
-4891 
-4892 
-4893 
-4894 
-4895 
-4896 
-4897 
-4898 
-4899 
-4900 
-4901 
-4902 
-4903 
-4904 
-4905 
-4906 
-4907 
-4908 
-4909 
-4910 
-4911 
-4912 
-4913 
-4914 
-4915 
-4916 
-4917 
-4918 
-4919 
-4920 
-4921 
-4922 
-4923 
-4924 
-4925 
-4926 
-4927 
-4928 
-4929 
-4930 
-4931 
-4932 
-4933 
-4934 
-4935 
-4936 
-4937 
-4938 
-4939 
-4940 
-4941 
-4942 
-4943 
-4944 
-4945 
-4946 
-4947 
-4948 
-4949 
-4950 
-4951 
-4952 
-4953 
-4954 
-4955 
-4956 
-4957 
-4958 
-4959 
-4960 
-4961 
-4962 
-4963 
-4964 
-4965 
-4966 
-4967 
-4968 
-4969 
-4970 
-4971 
-4972 
-4973 
-4974 
-4975 
-4976 
-4977 
-4978 
-4979 
-4980 
-4981 
-4982 
-4983 
-4984 
-4985 
-4986 
-4987 
-4988 
-4989 
-4990 
-4991 
-4992 
-4993 
-4994 
-4995 
-4996 
-4997 
-4998 
-4999 
-5000 
-5001 
-5002 
-5003 
-5004 
-5005 
-5006 
-5007 
-5008 
-5009 
-5010 
-5011 
-5012 
-5013 
-5014 
-5015 
-5016 
-5017 
-5018 
-5019 
-5020 
-5021 
-5022 
-5023 
-5024 
-5025 
-5026 
-5027 
-5028 
-5029 
-5030 
-5031 
-5032 
-5033 
-5034 
-5035 
-5036 
-5037 
-5038 
-5039 
-5040 
-5041 
-5042 
-5043 
-5044 
-5045 
-5046 
-5047 
-5048 
-5049 
-5050 
-5051 
-5052 
-5053 
-5054 
-5055 
-5056 
-5057 
-5058 
-5059 
-5060 
-5061 
-5062 
-5063 
-5064 
-5065 
-5066 
-5067 
-5068 
-5069 
-5070 
-5071 
-5072 
-5073 
-5074 
-5075 
-5076 
-5077 
-5078 
-5079 
-5080 
-5081 
-5082 
-5083 
-5084 
-5085 
-5086 
-5087 
-5088 
-5089 
-5090 
-5091 
-5092 
-5093 
-5094 
-5095 
-5096 
-5097 
-5098 
-5099 
-5100 
-5101 
-5102 
-5103 
-5104 
-5105 
-5106 
-5107 
-5108 
-5109 
-5110 
-5111 
-5112 
-5113 
-5114 
-5115 
-5116 
-5117 
-5118 
-5119 
-5120 
-5121 
-5122 
-5123 
-5124 
-5125 
-5126 
-5127 
-5128 
-5129 
-5130 
-5131 
-5132 
-5133 
-5134 
-5135 
-5136 
-5137 
-5138 
-5139 
-5140 
-5141 
-5142 
-5143 
-5144 
-5145 
-5146 
-5147 
-5148 
-5149 
-5150 
-5151 
-5152 
-5153 
-5154 
-5155 
-5156 
-5157 
-5158 
-5159 
-5160 
-5161 
-5162 
-5163 
-5164 
-5165 
-5166 
-5167 
-5168 
-5169 
-5170 
-5171 
-5172 
-5173 
-5174 
-5175 
-5176 
-5177 
-5178 
-5179 
-5180 
-5181 
-5182 
-5183 
-5184 
-5185 
-5186 
-5187 
-5188 
-5189 
-5190 
-5191 
-5192 
-5193 
-5194 
-5195 
-5196 
-5197 
-5198 
-5199 
-5200 
-5201 
-5202 
-5203 
-5204 
-5205 
-5206 
-5207 
-5208 
-5209 
-5210 
-5211 
-5212 
-5213 
-5214 
-5215 
-5216 
-5217 
-5218 
-5219 
-5220 
-5221 
-5222 
-5223 
-5224 
-5225 
-5226 
-5227 
-5228 
-5229 
-5230 
-5231 
-5232 
-5233 
-5234 
-5235 
-5236 
-5237 
-5238 
-5239 
-5240 
-5241 
-5242 
-5243 
-5244 
-5245 
-5246 
-5247 
-5248 
-5249 
-5250 
-5251 
-5252 
-5253 
-5254 
-5255 
-5256 
-5257 
-5258 
-5259 
-5260 
-5261 
-5262 
-5263 
-5264 
-5265 
-5266 
-5267 
-5268 
-5269 
-5270 
-5271 
-5272 
-5273 
-5274 
-5275 
-5276 
-5277 
-5278 
-5279 
-5280 
-5281 
-5282 
-5283 
-5284 
-5285 
-5286 
-5287 
-5288 
-5289 
-5290 
-5291 
-5292 
-5293 
-5294 
-5295 
-5296 
-5297 
-5298 
-5299 
-5300 
-5301 
-5302 
-5303 
-5304 
-5305 
-5306 
-5307 
-5308 
-5309 
-5310 
-5311 
-5312 
-5313 
-5314 
-5315 
-5316 
-5317 
-5318 
-5319 
-5320 
-5321 
-5322 
-5323 
-5324 
-5325 
-5326 
-5327 
-5328 
-5329 
-5330 
-5331 
-5332 
-5333 
-5334 
-5335 
-5336 
-5337 
-5338 
-5339 
-5340 
-5341 
-5342 
-5343 
-5344 
-5345 
-5346 
-5347 
-5348 
-5349 
-5350 
-5351 
-5352 
-5353 
-5354 
-5355 
-5356 
-5357 
-5358 
-5359 
-5360 
-5361 
-5362 
-5363 
-5364 
-5365 
-5366 
-5367 
-5368 
-5369 
-5370 
-5371 
-5372 
-5373 
-5374 
-5375 
-5376 
-5377 
-5378 
-5379 
-5380 
-5381 
-5382 
-5383 
-5384 
-5385 
-5386 
-5387 
-5388 
-5389 
-5390 
-5391 
-5392 
-5393 
-5394 
-5395 
-5396 
-5397 
-5398 
-5399 
-5400 
-5401 
-5402 
-5403 
-5404 
-5405 
-5406 
-5407 
-5408 
-5409 
-5410 
-5411 
-5412 
-5413 
-5414 
-5415 
-5416 
-5417 
-5418 
-5419 
-5420 
-5421 
-5422 
-5423 
-5424 
-5425 
-5426 
-5427 
-5428 
-5429 
-5430 
-5431 
-5432 
-5433 
-5434 
-5435 
-5436 
-5437 
-5438 
-5439 
-5440 
-5441 
-5442 
-5443 
-5444 
-5445 
-5446 
-5447 
-5448 
-5449 
-5450 
-5451 
-5452 
-5453 
-5454 
-5455 
-5456 
-5457 
-5458 
-5459 
-5460 
-5461 
-5462 
-5463 
-5464 
-5465 
-5466 
-5467 
-5468 
-5469 
-5470 
-5471 
-5472 
-5473 
-5474 
-5475 
-5476 
-5477 
-5478 
-5479 
-5480 
-5481 
-5482 
-5483 
-5484 
-5485 
-5486 
-5487 
-5488 
-5489 
-5490 
-5491 
-5492 
-5493 
-5494 
-5495 
-5496 
-5497 
-5498 
-5499 
-5500 
-5501 
-5502 
-5503 
-5504 
-5505 
-5506 
-5507 
-5508 
-5509 
-5510 
-5511 
-5512 
-5513 
-5514 
-5515 
-5524 
-5525 
-5526 
-5527 
-5528 
-5529 
-5530 
-5531 
-5532 
-5533 
-5534 
-5535 
-5536 
-5537 
-5538 
-5539 
-5540 
-5541 
-5542 
-5543 
-5544 
-5545 
-5546 
-5547 
-5556 
-5557 
-5558 
-5559 
-5560 
-5561 
-5562 
-5563 
-5564 
-5565 
-5566 
-5567 
-5568 
-5569 
-5570 
-5571 
-5572 
-5573 
-5574 
-5575 
-5576 
-5577 
-5578 
-5579 
-5588 
-5589 
-5590 
-5591 
-5592 
-5593 
-5594 
-5595 
-5596 
-5597 
-5598 
-5599 
-5600 
-5601 
-5602 
-5603 
-5604 
-5605 
-5606 
-5607 
-5608 
-5609 
-5610 
-5611 
-5620 
-5621 
-5622 
-5623 
-5624 
-5625 
-5626 
-5627 
-5628 
-5629 
-5630 
-5631 
-5632 
-5633 
-5634 
-5635 
-5636 
-5637 
-5638 
-5639 
-5640 
-5641 
-5642 
-5643 
-5652 
-5653 
-5654 
-5655 
-5656 
-5657 
-5658 
-5659 
-5660 
-5661 
-5662 
-5663 
-5664 
-5665 
-5666 
-5667 
-5668 
-5669 
-5670 
-5671 
-5672 
-5673 
-5674 
-5675 
-5684 
-5685 
-5686 
-5687 
-5688 
-5689 
-5690 
-5691 
-5692 
-5693 
-5694 
-5695 
-5696 
-5697 
-5698 
-5699 
-5700 
-5701 
-5702 
-5703 
-5704 
-5705 
-5706 
-5707 
-5716 
-5717 
-5718 
-5719 
-5720 
-5721 
-5722 
-5723 
-5724 
-5725 
-5726 
-5727 
-5728 
-5729 
-5730 
-5731 
-5732 
-5733 
-5734 
-5735 
-5736 
-5737 
-5738 
-5739 
-5748 
-5749 
-5750 
-5751 
-5752 
-5753 
-5754 
-5755 
-5756 
-5757 
-5758 
-5759 
-5760 
-5761 
-5762 
-5763 
-5764 
-5765 
-5766 
-5767 
-5768 
-5769 
-5770 
-5771 
-5772 
-5773 
-5774 
-5775 
-5776 
-5777 
-5778 
-5779 
-5780 
-5781 
-5782 
-5783 
-5784 
-5785 
-5786 
-5787 
-5788 
-5789 
-5790 
-5791 
-5792 
-5793 
-5794 
-5795 
-5796 
-5797 
-5798 
-5799 
-5800 
-5801 
-5802 
-5803 
-5804 
-5805 
-5806 
-5807 
-5808 
-5809 
-5810 
-5811 
-5812 
-5813 
-5814 
-5815 
-5816 
-5817 
-5818 
-5819 
-5820 
-5821 
-5822 
-5823 
-5824 
-5825 
-5826 
-5827 
-5828 
-5829 
-5830 
-5831 
-5832 
-5833 
-5834 
-5835 
-5836 
-5837 
-5838 
-5839 
-5840 
-5841 
-5842 
-5843 
-5844 
-5845 
-5846 
-5847 
-5848 
-5849 
-5850 
-5851 
-5852 
-5853 
-5854 
-5855 
-5856 
-5857 
-5858 
-5859 
-5860 
-5861 
-5862 
-5863 
-5864 
-5865 
-5866 
-5867 
-5868 
-5869 
-5870 
-5871 
-5872 
-5873 
-5874 
-5875 
-5876 
-5877 
-5878 
-5879 
-5880 
-5881 
-5882 
-5883 
-5884 
-5885 
-5886 
-5887 
-5888 
-5889 
-5890 
-5891 
-5892 
-5893 
-5894 
-5895 
-5896 
-5897 
-5898 
-5899 
-5900 
-5901 
-5902 
-5903 
-5904 
-5905 
-5906 
-5907 
-5908 
-5909 
-5910 
-5911 
-5912 
-5913 
-5914 
-5915 
-5916 
-5917 
-5918 
-5919 
-5920 
-5921 
-5922 
-5923 
-5924 
-5925 
-5926 
-5927 
-5928 
-5929 
-5930 
-5931 
-5932 
-5933 
-5934 
-5935 
-5936 
-5937 
-5938 
-5939 
-5940 
-5941 
-5942 
-5943 
-5944 
-5945 
-5946 
-5947 
-5948 
-5949 
-5950 
-5951 
-5952 
-5953 
-5954 
-5955 
-5956 
-5957 
-5958 
-5959 
-5960 
-5961 
-5962 
-5963 
-5964 
-5965 
-5966 
-5967 
-5968 
-5969 
-5970 
-5971 
-5972 
-5973 
-5974 
-5975 
-5976 
-5977 
-5978 
-5979 
-5980 
-5981 
-5982 
-5983 
-5984 
-5985 
-5986 
-5987 
-5988 
-5989 
-5990 
-5991 
-5992 
-5993 
-5994 
-5995 
-5996 
-5997 
-5998 
-5999 
-6000 
-6001 
-6002 
-6003 
-6004 
-6005 
-6006 
-6007 
-6008 
-6009 
-6010 
-6011 
-6012 
-6013 
-6014 
-6015 
-6016 
-6017 
-6018 
-6019 
-6020 
-6021 
-6022 
-6023 
-6024 
-6025 
-6026 
-6027 
-6028 
-6029 
-6030 
-6031 
-6032 
-6033 
-6034 
-6035 
-6036 
-6037 
-6038 
-6039 
-6040 
-6041 
-6042 
-6043 
-6044 
-6045 
-6046 
-6047 
-6048 
-6049 
-6050 
-6051 
-6052 
-6053 
-6054 
-6055 
-6056 
-6057 
-6058 
-6059 
-6060 
-6061 
-6062 
-6063 
-6064 
-6065 
-6066 
-6067 
-6068 
-6069 
-6070 
-6071 
-6072 
-6073 
-6074 
-6075 
-6076 
-6077 
-6078 
-6079 
-6080 
-6081 
-6082 
-6083 
-6084 
-6085 
-6086 
-6087 
-6088 
-6089 
-6090 
-6091 
-6092 
-6093 
-6094 
-6095 
-6096 
-6097 
-6098 
-6099 
-6100 
-6101 
-6102 
-6103 
-6104 
-6105 
-6106 
-6107 
-6108 
-6109 
-6110 
-6111 
-6112 
-6113 
-6114 
-6115 
-6116 
-6117 
-6118 
-6119 
-6120 
-6121 
-6122 
-6123 
-6124 
-6125 
-6126 
-6127 
-6128 
-6129 
-6130 
-6131 
-6132 
-6133 
-6134 
-6135 
-6136 
-6137 
-6138 
-6139 
-6140 
-6141 
-6142 
-6143 
-6144 
-6145 
-6146 
-6147 
-6148 
-6149 
-6150 
-6151 
-6152 
-6153 
-6154 
-6155 
-6156 
-6157 
-6158 
-6159 
-6160 
-6161 
-6162 
-6163 
-6164 
-6165 
-6166 
-6167 
-6168 
-6169 
-6170 
-6171 
-6172 
-6173 
-6174 
-6175 
-6176 
-6177 
-6178 
-6179 
-6180 
-6181 
-6182 
-6183 
-6184 
-6185 
-6186 
-6187 
-6188 
-6189 
-6190 
-6191 
-6192 
-6193 
-6194 
-6195 
-6196 
-6197 
-6198 
-6199 
-6200 
-6201 
-6202 
-6203 
-6204 
-6205 
-6206 
-6207 
-6208 
-6209 
-6210 
-6211 
-6212 
-6213 
-6214 
-6215 
-6216 
-6217 
-6218 
-6219 
-6220 
-6221 
-6222 
-6223 
-6224 
-6225 
-6226 
-6227 
-6228 
-6229 
-6230 
-6231 
-6232 
-6233 
-6234 
-6235 
-6236 
-6237 
-6238 
-6239 
-6240 
-6241 
-6242 
-6243 
-6244 
-6245 
-6246 
-6247 
-6248 
-6249 
-6250 
-6251 
-6252 
-6253 
-6254 
-6255 
-6256 
-6257 
-6258 
-6259 
-6260 
-6261 
-6262 
-6263 
-6264 
-6265 
-6266 
-6267 
-6268 
-6269 
-6270 
-6271 
-6272 
-6273 
-6274 
-6275 
-6276 
-6277 
-6278 
-6279 
-6280 
-6281 
-6282 
-6283 
-6284 
-6285 
-6286 
-6287 
-6288 
-6289 
-6290 
-6291 
-6292 
-6293 
-6294 
-6295 
-6296 
-6297 
-6298 
-6299 
-6300 
-6301 
-6302 
-6303 
-6304 
-6305 
-6306 
-6307 
-6308 
-6309 
-6310 
-6311 
-6312 
-6313 
-6314 
-6315 
-6316 
-6317 
-6318 
-6319 
-6320 
-6321 
-6322 
-6323 
-6324 
-6325 
-6326 
-6327 
-6328 
-6329 
-6330 
-6331 
-6332 
-6333 
-6334 
-6335 
-6336 
-6337 
-6338 
-6339 
-6340 
-6341 
-6342 
-6343 
-6344 
-6345 
-6346 
-6347 
-6348 
-6349 
-6350 
-6351 
-6352 
-6353 
-6354 
-6355 
-6356 
-6357 
-6358 
-6359 
-6360 
-6361 
-6362 
-6363 
-6364 
-6365 
-6366 
-6367 
-6368 
-6369 
-6370 
-6371 
-6372 
-6373 
-6374 
-6375 
-6376 
-6377 
-6378 
-6379 
-6380 
-6381 
-6382 
-6383 
-6384 
-6385 
-6386 
-6387 
-6388 
-6389 
-6390 
-6391 
-6392 
-6393 
-6394 
-6395 
-6396 
-6397 
-6398 
-6399 
-6400 
-6401 
-6402 
-6403 
-6404 
-6405 
-6406 
-6407 
-6408 
-6409 
-6410 
-6411 
-6412 
-6413 
-6414 
-6415 
-6416 
-6417 
-6418 
-6419 
-6420 
-6421 
-6422 
-6423 
-6424 
-6425 
-6426 
-6427 
-6428 
-6429 
-6430 
-6431 
-6432 
-6433 
-6434 
-6435 
-6436 
-6437 
-6438 
-6439 
-6440 
-6441 
-6442 
-6443 
-6444 
-6445 
-6446 
-6447 
-6448 
-6449 
-6450 
-6451 
-6452 
-6453 
-6454 
-6455 
-6456 
-6457 
-6458 
-6459 
-6460 
-6461 
-6462 
-6463 
-6464 
-6465 
-6466 
-6467 
-6468 
-6469 
-6470 
-6471 
-6472 
-6473 
-6474 
-6475 
-6476 
-6477 
-6478 
-6479 
-6480 
-6481 
-6482 
-6483 
-6484 
-6485 
-6486 
-6487 
-6488 
-6489 
-6490 
-6491 
-6492 
-6493 
-6494 
-6495 
-6496 
-6497 
-6498 
-6499 
-6500 
-6501 
-6502 
-6503 
-6504 
-6505 
-6506 
-6507 
-6508 
-6509 
-6510 
-6511 
-6512 
-6513 
-6514 
-6515 
-6516 
-6517 
-6518 
-6519 
-6520 
-6521 
-6522 
-6523 
-6524 
-6525 
-6526 
-6527 
-6528 
-6529 
-6530 
-6531 
-6532 
-6533 
-6534 
-6535 
-6536 
-6537 
-6538 
-6539 
-6548 
-6549 
-6550 
-6551 
-6552 
-6553 
-6554 
-6555 
-6556 
-6557 
-6558 
-6559 
-6560 
-6561 
-6562 
-6563 
-6564 
-6565 
-6566 
-6567 
-6568 
-6569 
-6570 
-6571 
-6580 
-6581 
-6582 
-6583 
-6584 
-6585 
-6586 
-6587 
-6588 
-6589 
-6590 
-6591 
-6592 
-6593 
-6594 
-6595 
-6596 
-6597 
-6598 
-6599 
-6600 
-6601 
-6602 
-6603 
-6612 
-6613 
-6614 
-6615 
-6616 
-6617 
-6618 
-6619 
-6620 
-6621 
-6622 
-6623 
-6624 
-6625 
-6626 
-6627 
-6628 
-6629 
-6630 
-6631 
-6632 
-6633 
-6634 
-6635 
-6644 
-6645 
-6646 
-6647 
-6648 
-6649 
-6650 
-6651 
-6652 
-6653 
-6654 
-6655 
-6656 
-6657 
-6658 
-6659 
-6660 
-6661 
-6662 
-6663 
-6664 
-6665 
-6666 
-6667 
-6676 
-6677 
-6678 
-6679 
-6680 
-6681 
-6682 
-6683 
-6684 
-6685 
-6686 
-6687 
-6688 
-6689 
-6690 
-6691 
-6692 
-6693 
-6694 
-6695 
-6696 
-6697 
-6698 
-6699 
-6708 
-6709 
-6710 
-6711 
-6712 
-6713 
-6714 
-6715 
-6716 
-6717 
-6718 
-6719 
-6720 
-6721 
-6722 
-6723 
-6724 
-6725 
-6726 
-6727 
-6728 
-6729 
-6730 
-6731 
-6740 
-6741 
-6742 
-6743 
-6744 
-6745 
-6746 
-6747 
-6748 
-6749 
-6750 
-6751 
-6752 
-6753 
-6754 
-6755 
-6756 
-6757 
-6758 
-6759 
-6760 
-6761 
-6762 
-6763 
-6772 
-6773 
-6774 
-6775 
-6776 
-6777 
-6778 
-6779 
-6780 
-6781 
-6782 
-6783 
-6784 
-6785 
-6786 
-6787 
-6788 
-6789 
-6790 
-6791 
-6792 
-6793 
-6794 
-6795 
-6796 
-6797 
-6798 
-6799 
-6800 
-6801 
-6802 
-6803 
-6804 
-6805 
-6806 
-6807 
-6808 
-6809 
-6810 
-6811 
-6812 
-6813 
-6814 
-6815 
-6816 
-6817 
-6818 
-6819 
-6820 
-6821 
-6822 
-6823 
-6824 
-6825 
-6826 
-6827 
-6828 
-6829 
-6830 
-6831 
-6832 
-6833 
-6834 
-6835 
-6836 
-6837 
-6838 
-6839 
-6840 
-6841 
-6842 
-6843 
-6844 
-6845 
-6846 
-6847 
-6848 
-6849 
-6850 
-6851 
-6852 
-6853 
-6854 
-6855 
-6856 
-6857 
-6858 
-6859 
-6860 
-6861 
-6862 
-6863 
-6864 
-6865 
-6866 
-6867 
-6868 
-6869 
-6870 
-6871 
-6872 
-6873 
-6874 
-6875 
-6876 
-6877 
-6878 
-6879 
-6880 
-6881 
-6882 
-6883 
-6884 
-6885 
-6886 
-6887 
-6888 
-6889 
-6890 
-6891 
-6892 
-6893 
-6894 
-6895 
-6896 
-6897 
-6898 
-6899 
-6900 
-6901 
-6902 
-6903 
-6904 
-6905 
-6906 
-6907 
-6908 
-6909 
-6910 
-6911 
-6912 
-6913 
-6914 
-6915 
-6916 
-6917 
-6918 
-6919 
-6920 
-6921 
-6922 
-6923 
-6924 
-6925 
-6926 
-6927 
-6928 
-6929 
-6930 
-6931 
-6932 
-6933 
-6934 
-6935 
-6936 
-6937 
-6938 
-6939 
-6940 
-6941 
-6942 
-6943 
-6944 
-6945 
-6946 
-6947 
-6948 
-6949 
-6950 
-6951 
-6952 
-6953 
-6954 
-6955 
-6956 
-6957 
-6958 
-6959 
-6960 
-6961 
-6962 
-6963 
-6964 
-6965 
-6966 
-6967 
-6968 
-6969 
-6970 
-6971 
-6972 
-6973 
-6974 
-6975 
-6976 
-6977 
-6978 
-6979 
-6980 
-6981 
-6982 
-6983 
-6984 
-6985 
-6986 
-6987 
-6988 
-6989 
-6990 
-6991 
-6992 
-6993 
-6994 
-6995 
-6996 
-6997 
-6998 
-6999 
-7000 
-7001 
-7002 
-7003 
-7004 
-7005 
-7006 
-7007 
-7008 
-7009 
-7010 
-7011 
-7012 
-7013 
-7014 
-7015 
-7016 
-7017 
-7018 
-7019 
-7020 
-7021 
-7022 
-7023 
-7024 
-7025 
-7026 
-7027 
-7028 
-7029 
-7030 
-7031 
-7032 
-7033 
-7034 
-7035 
-7036 
-7037 
-7038 
-7039 
-7040 
-7041 
-7042 
-7043 
-7044 
-7045 
-7046 
-7047 
-7048 
-7049 
-7050 
-7051 
-7052 
-7053 
-7054 
-7055 
-7056 
-7057 
-7058 
-7059 
-7060 
-7061 
-7062 
-7063 
-7064 
-7065 
-7066 
-7067 
-7068 
-7069 
-7070 
-7071 
-7072 
-7073 
-7074 
-7075 
-7076 
-7077 
-7078 
-7079 
-7080 
-7081 
-7082 
-7083 
-7084 
-7085 
-7086 
-7087 
-7088 
-7089 
-7090 
-7091 
-7092 
-7093 
-7094 
-7095 
-7096 
-7097 
-7098 
-7099 
-7100 
-7101 
-7102 
-7103 
-7104 
-7105 
-7106 
-7107 
-7108 
-7109 
-7110 
-7111 
-7112 
-7113 
-7114 
-7115 
-7116 
-7117 
-7118 
-7119 
-7120 
-7121 
-7122 
-7123 
-7124 
-7125 
-7126 
-7127 
-7128 
-7129 
-7130 
-7131 
-7132 
-7133 
-7134 
-7135 
-7136 
-7137 
-7138 
-7139 
-7140 
-7141 
-7142 
-7143 
-7144 
-7145 
-7146 
-7147 
-7148 
-7149 
-7150 
-7151 
-7152 
-7153 
-7154 
-7155 
-7156 
-7157 
-7158 
-7159 
-7160 
-7161 
-7162 
-7163 
-7164 
-7165 
-7166 
-7167 
-7168 
-7169 
-7170 
-7171 
-7172 
-7173 
-7174 
-7175 
-7176 
-7177 
-7178 
-7179 
-7180 
-7181 
-7182 
-7183 
-7184 
-7185 
-7186 
-7187 
-7188 
-7189 
-7190 
-7191 
-7192 
-7193 
-7194 
-7195 
-7196 
-7197 
-7198 
-7199 
-7200 
-7201 
-7202 
-7203 
-7204 
-7205 
-7206 
-7207 
-7208 
-7209 
-7210 
-7211 
-7212 
-7213 
-7214 
-7215 
-7216 
-7217 
-7218 
-7219 
-7220 
-7221 
-7222 
-7223 
-7224 
-7225 
-7226 
-7227 
-7228 
-7229 
-7230 
-7231 
-7232 
-7233 
-7234 
-7235 
-7236 
-7237 
-7238 
-7239 
-7240 
-7241 
-7242 
-7243 
-7244 
-7245 
-7246 
-7247 
-7248 
-7249 
-7250 
-7251 
-7252 
-7253 
-7254 
-7255 
-7256 
-7257 
-7258 
-7259 
-7260 
-7261 
-7262 
-7263 
-7264 
-7265 
-7266 
-7267 
-7268 
-7269 
-7270 
-7271 
-7272 
-7273 
-7274 
-7275 
-7276 
-7277 
-7278 
-7279 
-7280 
-7281 
-7282 
-7283 
-7284 
-7285 
-7286 
-7287 
-7288 
-7289 
-7290 
-7291 
-7292 
-7293 
-7294 
-7295 
-7296 
-7297 
-7298 
-7299 
-7300 
-7301 
-7302 
-7303 
-7304 
-7305 
-7306 
-7307 
-7308 
-7309 
-7310 
-7311 
-7312 
-7313 
-7314 
-7315 
-7316 
-7317 
-7318 
-7319 
-7320 
-7321 
-7322 
-7323 
-7324 
-7325 
-7326 
-7327 
-7328 
-7329 
-7330 
-7331 
-7332 
-7333 
-7334 
-7335 
-7336 
-7337 
-7338 
-7339 
-7340 
-7341 
-7342 
-7343 
-7344 
-7345 
-7346 
-7347 
-7348 
-7349 
-7350 
-7351 
-7352 
-7353 
-7354 
-7355 
-7356 
-7357 
-7358 
-7359 
-7360 
-7361 
-7362 
-7363 
-7364 
-7365 
-7366 
-7367 
-7368 
-7369 
-7370 
-7371 
-7372 
-7373 
-7374 
-7375 
-7376 
-7377 
-7378 
-7379 
-7380 
-7381 
-7382 
-7383 
-7384 
-7385 
-7386 
-7387 
-7388 
-7389 
-7390 
-7391 
-7392 
-7393 
-7394 
-7395 
-7396 
-7397 
-7398 
-7399 
-7400 
-7401 
-7402 
-7403 
-7404 
-7405 
-7406 
-7407 
-7408 
-7409 
-7410 
-7411 
-7412 
-7413 
-7414 
-7415 
-7416 
-7417 
-7418 
-7419 
-7420 
-7421 
-7422 
-7423 
-7424 
-7425 
-7426 
-7427 
-7428 
-7429 
-7430 
-7431 
-7432 
-7433 
-7434 
-7435 
-7436 
-7437 
-7438 
-7439 
-7440 
-7441 
-7442 
-7443 
-7444 
-7445 
-7446 
-7447 
-7448 
-7449 
-7450 
-7451 
-7452 
-7453 
-7454 
-7455 
-7456 
-7457 
-7458 
-7459 
-7460 
-7461 
-7462 
-7463 
-7464 
-7465 
-7466 
-7467 
-7468 
-7469 
-7470 
-7471 
-7472 
-7473 
-7474 
-7475 
-7476 
-7477 
-7478 
-7479 
-7480 
-7481 
-7482 
-7483 
-7484 
-7485 
-7486 
-7487 
-7488 
-7489 
-7490 
-7491 
-7492 
-7493 
-7494 
-7495 
-7496 
-7497 
-7498 
-7499 
-7500 
-7501 
-7502 
-7503 
-7504 
-7505 
-7506 
-7507 
-7508 
-7509 
-7510 
-7511 
-7512 
-7513 
-7514 
-7515 
-7516 
-7517 
-7518 
-7519 
-7520 
-7521 
-7522 
-7523 
-7524 
-7525 
-7526 
-7527 
-7528 
-7529 
-7530 
-7531 
-7532 
-7533 
-7534 
-7535 
-7536 
-7537 
-7538 
-7539 
-7540 
-7541 
-7542 
-7543 
-7544 
-7545 
-7546 
-7547 
-7548 
-7549 
-7550 
-7551 
-7552 
-7553 
-7554 
-7555 
-7556 
-7557 
-7558 
-7559 
-7560 
-7561 
-7562 
-7563 
-7572 
-7573 
-7574 
-7575 
-7576 
-7577 
-7578 
-7579 
-7580 
-7581 
-7582 
-7583 
-7584 
-7585 
-7586 
-7587 
-7588 
-7589 
-7590 
-7591 
-7592 
-7593 
-7594 
-7595 
-7604 
-7605 
-7606 
-7607 
-7608 
-7609 
-7610 
-7611 
-7612 
-7613 
-7614 
-7615 
-7616 
-7617 
-7618 
-7619 
-7620 
-7621 
-7622 
-7623 
-7624 
-7625 
-7626 
-7627 
-7636 
-7637 
-7638 
-7639 
-7640 
-7641 
-7642 
-7643 
-7644 
-7645 
-7646 
-7647 
-7648 
-7649 
-7650 
-7651 
-7652 
-7653 
-7654 
-7655 
-7656 
-7657 
-7658 
-7659 
-7668 
-7669 
-7670 
-7671 
-7672 
-7673 
-7674 
-7675 
-7676 
-7677 
-7678 
-7679 
-7680 
-7681 
-7682 
-7683 
-7684 
-7685 
-7686 
-7687 
-7688 
-7689 
-7690 
-7691 
-7700 
-7701 
-7702 
-7703 
-7704 
-7705 
-7706 
-7707 
-7708 
-7709 
-7710 
-7711 
-7712 
-7713 
-7714 
-7715 
-7716 
-7717 
-7718 
-7719 
-7720 
-7721 
-7722 
-7723 
-7732 
-7733 
-7734 
-7735 
-7736 
-7737 
-7738 
-7739 
-7740 
-7741 
-7742 
-7743 
-7744 
-7745 
-7746 
-7747 
-7748 
-7749 
-7750 
-7751 
-7752 
-7753 
-7754 
-7755 
-7764 
-7765 
-7766 
-7767 
-7768 
-7769 
-7770 
-7771 
-7772 
-7773 
-7774 
-7775 
-7776 
-7777 
-7778 
-7779 
-7780 
-7781 
-7782 
-7783 
-7784 
-7785 
-7786 
-7787 
-7796 
-7797 
-7798 
-7799 
-7800 
-7801 
-7802 
-7803 
-7804 
-7805 
-7806 
-7807 
-7808 
-7809 
-7810 
-7811 
-7812 
-7813 
-7814 
-7815 
-7816 
-7817 
-7818 
-7819 
-7820 
-7821 
-7822 
-7823 
-7824 
-7825 
-7826 
-7827 
-7828 
-7829 
-7830 
-7831 
-7832 
-7833 
-7834 
-7835 
-7836 
-7837 
-7838 
-7839 
-7840 
-7841 
-7842 
-7843 
-7844 
-7845 
-7846 
-7847 
-7848 
-7849 
-7850 
-7851 
-7852 
-7853 
-7854 
-7855 
-7856 
-7857 
-7858 
-7859 
-7860 
-7861 
-7862 
-7863 
-7864 
-7865 
-7866 
-7867 
-7868 
-7869 
-7870 
-7871 
-7872 
-7873 
-7874 
-7875 
-7876 
-7877 
-7878 
-7879 
-7880 
-7881 
-7882 
-7883 
-7884 
-7885 
-7886 
-7887 
-7888 
-7889 
-7890 
-7891 
-7892 
-7893 
-7894 
-7895 
-7896 
-7897 
-7898 
-7899 
-7900 
-7901 
-7902 
-7903 
-7904 
-7905 
-7906 
-7907 
-7908 
-7909 
-7910 
-7911 
-7912 
-7913 
-7914 
-7915 
-7916 
-7917 
-7918 
-7919 
-7920 
-7921 
-7922 
-7923 
-7924 
-7925 
-7926 
-7927 
-7928 
-7929 
-7930 
-7931 
-7932 
-7933 
-7934 
-7935 
-7936 
-7937 
-7938 
-7939 
-7940 
-7941 
-7942 
-7943 
-7944 
-7945 
-7946 
-7947 
-7948 
-7949 
-7950 
-7951 
-7952 
-7953 
-7954 
-7955 
-7956 
-7957 
-7958 
-7959 
-7960 
-7961 
-7962 
-7963 
-7964 
-7965 
-7966 
-7967 
-7968 
-7969 
-7970 
-7971 
-7972 
-7973 
-7974 
-7975 
-7976 
-7977 
-7978 
-7979 
-7980 
-7981 
-7982 
-7983 
-7984 
-7985 
-7986 
-7987 
-7988 
-7989 
-7990 
-7991 
-7992 
-7993 
-7994 
-7995 
-7996 
-7997 
-7998 
-7999 
-8000 
-8001 
-8002 
-8003 
-8004 
-8005 
-8006 
-8007 
-8008 
-8009 
-8010 
-8011 
-8012 
-8013 
-8014 
-8015 
-8016 
-8017 
-8018 
-8019 
-8020 
-8021 
-8022 
-8023 
-8024 
-8025 
-8026 
-8027 
-8028 
-8029 
-8030 
-8031 
-8032 
-8033 
-8034 
-8035 
-8036 
-8037 
-8038 
-8039 
-8040 
-8041 
-8042 
-8043 
-8044 
-8045 
-8046 
-8047 
-8048 
-8049 
-8050 
-8051 
-8052 
-8053 
-8054 
-8055 
-8056 
-8057 
-8058 
-8059 
-8060 
-8061 
-8062 
-8063 
-8064 
-8065 
-8066 
-8067 
-8068 
-8069 
-8070 
-8071 
-8072 
-8073 
-8074 
-8075 
-8076 
-8077 
-8078 
-8079 
-8080 
-8081 
-8082 
-8083 
-8084 
-8085 
-8086 
-8087 
-8088 
-8089 
-8090 
-8091 
-8092 
-8093 
-8094 
-8095 
-8096 
-8097 
-8098 
-8099 
-8100 
-8101 
-8102 
-8103 
-8104 
-8105 
-8106 
-8107 
-8108 
-8109 
-8110 
-8111 
-8112 
-8113 
-8114 
-8115 
-8116 
-8117 
-8118 
-8119 
-8120 
-8121 
-8122 
-8123 
-8124 
-8125 
-8126 
-8127 
-8128 
-8129 
-8130 
-8131 
-8132 
-8133 
-8134 
-8135 
-8136 
-8137 
-8138 
-8139 
-8140 
-8141 
-8142 
-8143 
-8144 
-8145 
-8146 
-8147 
-8148 
-8149 
-8150 
-8151 
-8152 
-8153 
-8154 
-8155 
-8156 
-8157 
-8158 
-8159 
-8160 
-8161 
-8162 
-8163 
-8164 
-8165 
-8166 
-8167 
-8168 
-8169 
-8170 
-8171 
-8172 
-8173 
-8174 
-8175 
-8176 
-8177 
-8178 
-8179 
-8180 
-8181 
-8182 
-8183 
-8184 
-8185 
-8186 
-8187 
-8188 
-8189 
-8190 
-8191 
-8192 
-8193 
-8194 
-8195 
-8196 
-8197 
-8198 
-8199 
-8200 
-8201 
-8202 
-8203 
-8204 
-8205 
-8206 
-8207 
-8208 
-8209 
-8210 
-8211 
-8212 
-8213 
-8214 
-8215 
-8216 
-8217 
-8218 
-8219 
-8220 
-8221 
-8222 
-8223 
-8224 
-8225 
-8226 
-8227 
-8228 
-8229 
-8230 
-8231 
-8232 
-8233 
-8234 
-8235 
-8236 
-8237 
-8238 
-8239 
-8240 
-8241 
-8242 
-8243 
-8244 
-8245 
-8246 
-8247 
-8248 
-8249 
-8250 
-8251 
-8252 
-8253 
-8254 
-8255 
-8256 
-8257 
-8258 
-8259 
-8260 
-8261 
-8262 
-8263 
-8264 
-8265 
-8266 
-8267 
-8268 
-8269 
-8270 
-8271 
-8272 
-8273 
-8274 
-8275 
-8276 
-8277 
-8278 
-8279 
-8280 
-8281 
-8282 
-8283 
-8284 
-8285 
-8286 
-8287 
-8288 
-8289 
-8290 
-8291 
-8292 
-8293 
-8294 
-8295 
-8296 
-8297 
-8298 
-8299 
-8300 
-8301 
-8302 
-8303 
-8304 
-8305 
-8306 
-8307 
-8308 
-8309 
-8310 
-8311 
-8312 
-8313 
-8314 
-8315 
-8316 
-8317 
-8318 
-8319 
-8320 
-8321 
-8322 
-8323 
-8324 
-8325 
-8326 
-8327 
-8328 
-8329 
-8330 
-8331 
-8332 
-8333 
-8334 
-8335 
-8336 
-8337 
-8338 
-8339 
-8340 
-8341 
-8342 
-8343 
-8344 
-8345 
-8346 
-8347 
-8348 
-8349 
-8350 
-8351 
-8352 
-8353 
-8354 
-8355 
-8356 
-8357 
-8358 
-8359 
-8360 
-8361 
-8362 
-8363 
-8364 
-8365 
-8366 
-8367 
-8368 
-8369 
-8370 
-8371 
-8372 
-8373 
-8374 
-8375 
-8376 
-8377 
-8378 
-8379 
-8380 
-8381 
-8382 
-8383 
-8384 
-8385 
-8386 
-8387 
-8388 
-8389 
-8390 
-8391 
-8392 
-8393 
-8394 
-8395 
-8396 
-8397 
-8398 
-8399 
-8400 
-8401 
-8402 
-8403 
-8404 
-8405 
-8406 
-8407 
-8408 
-8409 
-8410 
-8411 
-8412 
-8413 
-8414 
-8415 
-8416 
-8417 
-8418 
-8419 
-8420 
-8421 
-8422 
-8423 
-8424 
-8425 
-8426 
-8427 
-8428 
-8429 
-8430 
-8431 
-8432 
-8433 
-8434 
-8435 
-8436 
-8437 
-8438 
-8439 
-8440 
-8441 
-8442 
-8443 
-8444 
-8445 
-8446 
-8447 
-8448 
-8449 
-8450 
-8451 
-8452 
-8453 
-8454 
-8455 
-8456 
-8457 
-8458 
-8459 
-8460 
-8461 
-8462 
-8463 
-8464 
-8465 
-8466 
-8467 
-8468 
-8469 
-8470 
-8471 
-8472 
-8473 
-8474 
-8475 
-8476 
-8477 
-8478 
-8479 
-8480 
-8481 
-8482 
-8483 
-8484 
-8485 
-8486 
-8487 
-8488 
-8489 
-8490 
-8491 
-8492 
-8493 
-8494 
-8495 
-8496 
-8497 
-8498 
-8499 
-8500 
-8501 
-8502 
-8503 
-8504 
-8505 
-8506 
-8507 
-8508 
-8509 
-8510 
-8511 
-8512 
-8513 
-8514 
-8515 
-8516 
-8517 
-8518 
-8519 
-8520 
-8521 
-8522 
-8523 
-8524 
-8525 
-8526 
-8527 
-8528 
-8529 
-8530 
-8531 
-8532 
-8533 
-8534 
-8535 
-8536 
-8537 
-8538 
-8539 
-8540 
-8541 
-8542 
-8543 
-8544 
-8545 
-8546 
-8547 
-8548 
-8549 
-8550 
-8551 
-8552 
-8553 
-8554 
-8555 
-8556 
-8557 
-8558 
-8559 
-8560 
-8561 
-8562 
-8563 
-8564 
-8565 
-8566 
-8567 
-8568 
-8569 
-8570 
-8571 
-8572 
-8573 
-8574 
-8575 
-8576 
-8577 
-8578 
-8579 
-8580 
-8581 
-8582 
-8583 
-8584 
-8585 
-8586 
-8587 
-8588 
-8589 
-8590 
-8591 
-8592 
-8593 
-8594 
-8595 
-8596 
-8597 
-8598 
-8599 
-8600 
-8601 
-8602 
-8603 
-8604 
-8605 
-8606 
-8607 
-8608 
-8609 
-8610 
-8611 
-8612 
-8613 
-8614 
-8615 
-8616 
-8617 
-8618 
-8619 
-8620 
-8621 
-8622 
-8623 
-8624 
-8625 
-8626 
-8627 
-8628 
-8629 
-8630 
-8631 
-8632 
-8633 
-8634 
-8635 
-8636 
-8637 
-8638 
-8639 
-8640 
-8641 
-8642 
-8643 
-8644 
-8645 
-8646 
-8647 
-8648 
-8649 
-8650 
-8651 
-8652 
-8653 
-8654 
-8655 
-8656 
-8657 
-8658 
-8659 
-8660 
-8661 
-8662 
-8663 
-8664 
-8665 
-8666 
-8667 
-8668 
-8669 
-8670 
-8671 
-8672 
-8673 
-8674 
-8675 
-8676 
-8677 
-8678 
-8679 
-8680 
-8681 
-8682 
-8683 
-8684 
-8685 
-8686 
-8687 
-8688 
-8689 
-8690 
-8691 
-8692 
-8693 
-8694 
-8695 
-8696 
-8697 
-8698 
-8699 
-8700 
-8701 
-8702 
-8703 
-8704 
-8705 
-8706 
-8707 
-8708 
-8709 
-8710 
-8711 
-8712 
-8713 
-8714 
-8715 
-8716 
-8717 
-8718 
-8719 
-8720 
-8721 
-8722 
-8723 
-8724 
-8725 
-8726 
-8727 
-8728 
-8729 
-8730 
-8731 
-8732 
-8733 
-8734 
-8735 
-8736 
-8737 
-8738 
-8739 
-8740 
-8741 
-8742 
-8743 
-8744 
-8745 
-8746 
-8747 
-8748 
-8749 
-8750 
-8751 
-8752 
-8753 
-8754 
-8755 
-8756 
-8757 
-8758 
-8759 
-8760 
-8761 
-8762 
-8763 
-8764 
-8765 
-8766 
-8767 
-8768 
-8769 
-8770 
-8771 
-8772 
-8773 
-8774 
-8775 
-8776 
-8777 
-8778 
-8779 
-8780 
-8781 
-8782 
-8783 
-8784 
-8785 
-8786 
-8787 
-8788 
-8789 
-8790 
-8791 
-8792 
-8793 
-8794 
-8795 
-8796 
-8797 
-8798 
-8799 
-8800 
-8801 
-8802 
-8803 
-8804 
-8805 
-8806 
-8807 
-8808 
-8809 
-8810 
-8811 
-8812 
-8813 
-8814 
-8815 
-8816 
-8817 
-8818 
-8819 
-8820 
-8821 
-8822 
-8823 
-8824 
-8825 
-8826 
-8827 
-8828 
-8829 
-8830 
-8831 
-8832 
-8833 
-8834 
-8835 
-8836 
-8837 
-8838 
-8839 
-8840 
-8841 
-8842 
-8843 
-8844 
-8845 
-8846 
-8847 
-8848 
-8849 
-8850 
-8851 
-8852 
-8853 
-8854 
-8855 
-8856 
-8857 
-8858 
-8859 
-8860 
-8861 
-8862 
-8863 
-8864 
-8865 
-8866 
-8867 
-8868 
-8869 
-8870 
-8871 
-8872 
-8873 
-8874 
-8875 
-8876 
-8877 
-8878 
-8879 
-8880 
-8881 
-8882 
-8883 
-8884 
-8885 
-8886 
-8887 
-8888 
-8889 
-8890 
-8891 
-8892 
-8893 
-8894 
-8895 
-8896 
-8897 
-8898 
-8899 
-8900 
-8901 
-8902 
-8903 
-8904 
-8905 
-8906 
-8907 
-8908 
-8909 
-8910 
-8911 
-8912 
-8913 
-8914 
-8915 
-8916 
-8917 
-8918 
-8919 
-8920 
-8921 
-8922 
-8923 
-8924 
-8925 
-8926 
-8927 
-8928 
-8929 
-8930 
-8931 
-8932 
-8933 
-8934 
-8935 
-8936 
-8937 
-8938 
-8939 
-8940 
-8941 
-8942 
-8943 
-8944 
-8945 
-8946 
-8947 
-8948 
-8949 
-8950 
-8951 
-8952 
-8953 
-8954 
-8955 
-8956 
-8957 
-8958 
-8959 
-8960 
-8961 
-8962 
-8963 
-8964 
-8965 
-8966 
-8967 
-8968 
-8969 
-8970 
-8971 
-8972 
-8973 
-8974 
-8975 
-8976 
-8977 
-8978 
-8979 
-8980 
-8981 
-8982 
-8983 
-8984 
-8985 
-8986 
-8987 
-8988 
-8989 
-8990 
-8991 
-8992 
-8993 
-8994 
-8995 
-8996 
-8997 
-8998 
-8999 
-9000 
-9001 
-9002 
-9003 
-9004 
-9005 
-9006 
-9007 
-9008 
-9009 
-9010 
-9011 
-9012 
-9013 
-9014 
-9015 
-9016 
-9017 
-9018 
-9019 
-9020 
-9021 
-9022 
-9023 
-9024 
-9025 
-9026 
-9027 
-9028 
-9029 
-9030 
-9031 
-9032 
-9033 
-9034 
-9035 
-9036 
-9037 
-9038 
-9039 
-9040 
-9041 
-9042 
-9043 
-9044 
-9045 
-9046 
-9047 
-9048 
-9049 
-9050 
-9051 
-9052 
-9053 
-9054 
-9055 
-9056 
-9057 
-9058 
-9059 
-9060 
-9061 
-9062 
-9063 
-9064 
-9065 
-9066 
-9067 
-9068 
-9069 
-9070 
-9071 
-9072 
-9073 
-9074 
-9075 
-9076 
-9077 
-9078 
-9079 
-9080 
-9081 
-9082 
-9083 
-9084 
-9085 
-9086 
-9087 
-9088 
-9089 
-9090 
-9091 
-9092 
-9093 
-9094 
-9095 
-9096 
-9097 
-9098 
-9099 
-9100 
-9101 
-9102 
-9103 
-9104 
-9105 
-9106 
-9107 
-9108 
-9109 
-9110 
-9111 
-9112 
-9113 
-9114 
-9115 
-9116 
-9117 
-9118 
-9119 
-9120 
-9121 
-9122 
-9123 
-9124 
-9125 
-9126 
-9127 
-9128 
-9129 
-9130 
-9131 
-9132 
-9133 
-9134 
-9135 
-9136 
-9137 
-9138 
-9139 
-9140 
-9141 
-9142 
-9143 
-9144 
-9145 
-9146 
-9147 
-9148 
-9149 
-9150 
-9151 
-9152 
-9153 
-9154 
-9155 
-9156 
-9157 
-9158 
-9159 
-9160 
-9161 
-9162 
-9163 
-9164 
-9165 
-9166 
-9167 
-9168 
-9169 
-9170 
-9171 
-9172 
-9173 
-9174 
-9175 
-9176 
-9177 
-9178 
-9179 
-9180 
-9181 
-9182 
-9183 
-9184 
-9185 
-9186 
-9187 
-9188 
-9189 
-9190 
-9191 
-9192 
-9193 
-9194 
-9195 
-9196 
-9197 
-9198 
-9199 
-9200 
-9201 
-9202 
-9203 
-9204 
-9205 
-9206 
-9207 
-9208 
-9209 
-9210 
-9211 
-9212 
-9213 
-9214 
-9215 
-9216 
-9217 
-9218 
-9219 
-9220 
-9221 
-9222 
-9223 
-9224 
-9225 
-9226 
-9227 
-9228 
-9229 
-9230 
-9231 
-9232 
-9233 
-9234 
-9235 
-9236 
-9237 
-9238 
-9239 
-9240 
-9241 
-9242 
-9243 
-9244 
-9245 
-9246 
-9247 
-9248 
-9249 
-9250 
-9251 
-9252 
-9253 
-9254 
-9255 
-9256 
-9257 
-9258 
-9259 
-9260 
-9261 
-9262 
-9263 
-9264 
-9265 
-9266 
-9267 
-9268 
-9269 
-9270 
-9271 
-9272 
-9273 
-9274 
-9275 
-9276 
-9277 
-9278 
-9279 
-9280 
-9281 
-9282 
-9283 
-9284 
-9285 
-9286 
-9287 
-9288 
-9289 
-9290 
-9291 
-9292 
-9293 
-9294 
-9295 
-9296 
-9297 
-9298 
-9299 
-9300 
-9301 
-9302 
-9303 
-9304 
-9305 
-9306 
-9307 
-9308 
-9309 
-9310 
-9311 
-9312 
-9313 
-9314 
-9315 
-9316 
-9317 
-9318 
-9319 
-9320 
-9321 
-9322 
-9323 
-9324 
-9325 
-9326 
-9327 
-9328 
-9329 
-9330 
-9331 
-9332 
-9333 
-9334 
-9335 
-9336 
-9337 
-9338 
-9339 
-9340 
-9341 
-9342 
-9343 
-9344 
-9345 
-9346 
-9347 
-9348 
-9349 
-9350 
-9351 
-9352 
-9353 
-9354 
-9355 
-9356 
-9357 
-9358 
-9359 
-9360 
-9361 
-9362 
-9363 
-9364 
-9365 
-9366 
-9367 
-9368 
-9369 
-9370 
-9371 
-9372 
-9373 
-9374 
-9375 
-9376 
-9377 
-9378 
-9379 
-9380 
-9381 
-9382 
-9383 
-9384 
-9385 
-9386 
-9387 
-9388 
-9389 
-9390 
-9391 
-9392 
-9393 
-9394 
-9395 
-9396 
-9397 
-9398 
-9399 
-9400 
-9401 
-9402 
-9403 
-9404 
-9405 
-9406 
-9407 
-9408 
-9409 
-9410 
-9411 
-9412 
-9413 
-9414 
-9415 
-9416 
-9417 
-9418 
-9419 
-9420 
-9421 
-9422 
-9423 
-9424 
-9425 
-9426 
-9427 
-9428 
-9429 
-9430 
-9431 
-9432 
-9433 
-9434 
-9435 
-9436 
-9437 
-9438 
-9439 
-9440 
-9441 
-9442 
-9443 
-9444 
-9445 
-9446 
-9447 
-9448 
-9449 
-9450 
-9451 
-9452 
-9453 
-9454 
-9455 
-9456 
-9457 
-9458 
-9459 
-9460 
-9461 
-9462 
-9463 
-9464 
-9465 
-9466 
-9467 
-9468 
-9469 
-9470 
-9471 
-9472 
-9473 
-9474 
-9475 
-9476 
-9477 
-9478 
-9479 
-9480 
-9481 
-9482 
-9483 
-9484 
-9485 
-9486 
-9487 
-9488 
-9489 
-9490 
-9491 
-9492 
-9493 
-9494 
-9495 
-9496 
-9497 
-9498 
-9499 
-9500 
-9501 
-9502 
-9503 
-9504 
-9505 
-9506 
-9507 
-9508 
-9509 
-9510 
-9511 
-9512 
-9513 
-9514 
-9515 
-9516 
-9517 
-9518 
-9519 
-9520 
-9521 
-9522 
-9523 
-9524 
-9525 
-9526 
-9527 
-9528 
-9529 
-9530 
-9531 
-9532 
-9533 
-9534 
-9535 
-9536 
-9537 
-9538 
-9539 
-9540 
-9541 
-9542 
-9543 
-9544 
-9545 
-9546 
-9547 
-9548 
-9549 
-9550 
-9551 
-9552 
-9553 
-9554 
-9555 
-9556 
-9557 
-9558 
-9559 
-9560 
-9561 
-9562 
-9563 
-9564 
-9565 
-9566 
-9567 
-9568 
-9569 
-9570 
-9571 
-9572 
-9573 
-9574 
-9575 
-9576 
-9577 
-9578 
-9579 
-9580 
-9581 
-9582 
-9583 
-9584 
-9585 
-9586 
-9587 
-9588 
-9589 
-9590 
-9591 
-9592 
-9593 
-9594 
-9595 
-9596 
-9597 
-9598 
-9599 
-9600 
-9601 
-9602 
-9603 
-9604 
-9605 
-9606 
-9607 
-9608 
-9609 
-9610 
-9611 
-9612 
-9613 
-9614 
-9615 
-9616 
-9617 
-9618 
-9619 
-9620 
-9621 
-9622 
-9623 
-9624 
-9625 
-9626 
-9627 
-9628 
-9629 
-9630 
-9631 
-9632 
-9633 
-9634 
-9635 
-9636 
-9637 
-9638 
-9639 
-9640 
-9641 
-9642 
-9643 
-9644 
-9645 
-9646 
-9647 
-9648 
-9649 
-9650 
-9651 
-9652 
-9653 
-9654 
-9655 
-9656 
-9657 
-9658 
-9659 
-9660 
-9661 
-9662 
-9663 
-9664 
-9665 
-9666 
-9667 
-9668 
-9669 
-9670 
-9671 
-9672 
-9673 
-9674 
-9675 
-9676 
-9677 
-9678 
-9679 
-9680 
-9681 
-9682 
-9683 
-9684 
-9685 
-9686 
-9687 
-9688 
-9689 
-9690 
-9691 
-9692 
-9693 
-9694 
-9695 
-9696 
-9697 
-9698 
-9699 
-9700 
-9701 
-9702 
-9703 
-9704 
-9705 
-9706 
-9707 
-9708 
-9709 
-9710 
-9711 
-9712 
-9713 
-9714 
-9715 
-9716 
-9717 
-9718 
-9719 
-9720 
-9721 
-9722 
-9723 
-9724 
-9725 
-9726 
-9727 
-9728 
-9729 
-9730 
-9731 
-9732 
-9733 
-9734 
-9735 
-9736 
-9737 
-9738 
-9739 
-9740 
-9741 
-9742 
-9743 
-9744 
-9745 
-9746 
-9747 
-9748 
-9749 
-9750 
-9751 
-9752 
-9753 
-9754 
-9755 
-9756 
-9757 
-9758 
-9759 
-9760 
-9761 
-9762 
-9763 
-9764 
-9765 
-9766 
-9767 
-9768 
-9769 
-9770 
-9771 
-9772 
-9773 
-9774 
-9775 
-9776 
-9777 
-9778 
-9779 
-9780 
-9781 
-9782 
-9783 
-9784 
-9785 
-9786 
-9787 
-9788 
-9789 
-9790 
-9791 
-9792 
-9793 
-9794 
-9795 
-9796 
-9797 
-9798 
-9799 
-9800 
-9801 
-9802 
-9803 
-9804 
-9805 
-9806 
-9807 
-9808 
-9809 
-9810 
-9811 
-9812 
-9813 
-9814 
-9815 
-9816 
-9817 
-9818 
-9819 
-9820 
-9821 
-9822 
-9823 
-9824 
-9825 
-9826 
-9827 
-9828 
-9829 
-9830 
-9831 
-9832 
-9833 
-9834 
-9835 
-9836 
-9837 
-9838 
-9839 
-9840 
-9841 
-9842 
-9843 
-9844 
-9845 
-9846 
-9847 
-9848 
-9849 
-9850 
-9851 
-9852 
-9853 
-9854 
-9855 
-9856 
-9857 
-9858 
-9859 
-9860 
-9861 
-9862 
-9863 
-9864 
-9865 
-9866 
-9867 
-9868 
-9869 
-9870 
-9871 
-9872 
-9873 
-9874 
-9875 
-9876 
-9877 
-9878 
-9879 
-9880 
-9881 
-9882 
-9883 
-9884 
-9885 
-9886 
-9887 
-9888 
-9889 
-9890 
-9891 
-9892 
-9893 
-9894 
-9895 
-9896 
-9897 
-9898 
-9899 
-9900 
-9901 
-9902 
-9903 
-9904 
-9905 
-9906 
-9907 
-9908 
-9909 
-9910 
-9911 
-9912 
-9913 
-9914 
-9915 
-9916 
-9917 
-9918 
-9919 
-9920 
-9921 
-9922 
-9923 
-9924 
-9925 
-9926 
-9927 
-9928 
-9929 
-9930 
-9931 
-9932 
-9933 
-9934 
-9935 
-9936 
-9937 
-9938 
-9939 
-9940 
-9941 
-9942 
-9943 
-9944 
-9945 
-9946 
-9947 
-9948 
-9949 
-9950 
-9951 
-9952 
-9953 
-9954 
-9955 
-9956 
-9957 
-9958 
-9959 
-9960 
-9961 
-9962 
-9963 
-9964 
-9965 
-9966 
-9967 
-9968 
-9969 
-9970 
-9971 
-9972 
-9973 
-9974 
-9975 
-9976 
-9977 
-9978 
-9979 
-9980 
-9981 
-9982 
-9983 
-9984 
-9985 
-9986 
-9987 
-9988 
-9989 
-9990 
-9991 
-9992 
-9993 
-9994 
-9995 
-9996 
-9997 
-9998 
-9999 
-10000 
-10001 
-10002 
-10003 
-10004 
-10005 
-10006 
-10007 
-10008 
-10009 
-10010 
-10011 
-10012 
-10013 
-10014 
-10015 
-10016 
-10017 
-10018 
-10019 
-10020 
-10021 
-10022 
-10023 
-10024 
-10025 
-10026 
-10027 
-10028 
-10029 
-10030 
-10031 
-10032 
-10033 
-10034 
-10035 
-10036 
-10037 
-10038 
-10039 
-10040 
-10041 
-10042 
-10043 
-10044 
-10045 
-10046 
-10047 
-10048 
-10049 
-10050 
-10051 
-10052 
-10053 
-10054 
-10055 
-10056 
-10057 
-10058 
-10059 
-10060 
-10061 
-10062 
-10063 
-10064 
-10065 
-10066 
-10067 
-10068 
-10069 
-10070 
-10071 
-10072 
-10073 
-10074 
-10075 
-10076 
-10077 
-10078 
-10079 
-10080 
-10081 
-10082 
-10083 
-10084 
-10085 
-10086 
-10087 
-10088 
-10089 
-10090 
-10091 
-10092 
-10093 
-10094 
-10095 
-10096 
-10097 
-10098 
-10099 
-10100 
-10101 
-10102 
-10103 
-10104 
-10105 
-10106 
-10107 
-10108 
-10109 
-10110 
-10111 
-10112 
-10113 
-10114 
-10115 
-10116 
-10117 
-10118 
-10119 
-10120 
-10121 
-10122 
-10123 
-10124 
-10125 
-10126 
-10127 
-10128 
-10129 
-10130 
-10131 
-10132 
-10133 
-10134 
-10135 
-10136 
-10137 
-10138 
-10139 
-10140 
-10141 
-10142 
-10143 
-10144 
-10145 
-10146 
-10147 
-10148 
-10149 
-10150 
-10151 
-10152 
-10153 
-10154 
-10155 
-10156 
-10157 
-10158 
-10159 
-10160 
-10161 
-10162 
-10163 
-10164 
-10165 
-10166 
-10167 
-10168 
-10169 
-10170 
-10171 
-10172 
-10173 
-10174 
-10175 
-10176 
-10177 
-10178 
-10179 
-10180 
-10181 
-10182 
-10183 
-10184 
-10185 
-10186 
-10187 
-10188 
-10189 
-10190 
-10191 
-10192 
-10193 
-10194 
-10195 
-10196 
-10197 
-10198 
-10199 
-10200 
-10201 
-10202 
-10203 
-10204 
-10205 
-10206 
-10207 
-10208 
-10209 
-10210 
-10211 
-10212 
-10213 
-10214 
-10215 
-10216 
-10217 
-10218 
-10219 
-10220 
-10221 
-10222 
-10223 
-10224 
-10225 
-10226 
-10227 
-10228 
-10229 
-10230 
-10231 
-10232 
-10233 
-10234 
-10235 
-10236 
-10237 
-10238 
-10239 
-10240 
-10241 
-10242 
-10243 
-10244 
-10245 
-10246 
-10247 
-10248 
-10249 
-10250 
-10251 
-10252 
-10253 
-10254 
-10255 
-10256 
-10257 
-10258 
-10259 
-10260 
-10261 
-10262 
-10263 
-10264 
-10265 
-10266 
-10267 
-10268 
-10269 
-10270 
-10271 
-10272 
-10273 
-10274 
-10275 
-10276 
-10277 
-10278 
-10279 
-10280 
-10281 
-10282 
-10283 
-10284 
-10285 
-10286 
-10287 
-10288 
-10289 
-10290 
-10291 
-10292 
-10293 
-10294 
-10295 
-10296 
-10297 
-10298 
-10299 
-10300 
-10301 
-10302 
-10303 
-10304 
-10305 
-10306 
-10307 
-10308 
-10309 
-10310 
-10311 
-10312 
-10313 
-10314 
-10315 
-10316 
-10317 
-10318 
-10319 
-10320 
-10321 
-10322 
-10323 
-10324 
-10325 
-10326 
-10327 
-10328 
-10329 
-10330 
-10331 
-10332 
-10333 
-10334 
-10335 
-10336 
-10337 
-10338 
-10339 
-10340 
-10341 
-10342 
-10343 
-10344 
-10345 
-10346 
-10347 
-10348 
-10349 
-10350 
-10351 
-10352 
-10353 
-10354 
-10355 
-10356 
-10357 
-10358 
-10359 
-10360 
-10361 
-10362 
-10363 
-10364 
-10365 
-10366 
-10367 
-10368 
-10369 
-10370 
-10371 
-10372 
-10373 
-10374 
-10375 
-10376 
-10377 
-10378 
-10379 
-10380 
-10381 
-10382 
-10383 
-10384 
-10385 
-10386 
-10387 
-10388 
-10389 
-10390 
-10391 
-10392 
-10393 
-10394 
-10395 
-10396 
-10397 
-10398 
-10399 
-10400 
-10401 
-10402 
-10403 
-10404 
-10405 
-10406 
-10407 
-10408 
-10409 
-10410 
-10411 
-10412 
-10413 
-10414 
-10415 
-10416 
-10417 
-10418 
-10419 
-10420 
-10421 
-10422 
-10423 
-10424 
-10425 
-10426 
-10427 
-10428 
-10429 
-10430 
-10431 
-10432 
-10433 
-10434 
-10435 
-10436 
-10437 
-10438 
-10439 
-10440 
-10441 
-10442 
-10443 
-10444 
-10445 
-10446 
-10447 
-10448 
-10449 
-10450 
-10451 
-10452 
-10453 
-10454 
-10455 
-10456 
-10457 
-10458 
-10459 
-10460 
-10461 
-10462 
-10463 
-10464 
-10465 
-10466 
-10467 
-10468 
-10469 
-10470 
-10471 
-10472 
-10473 
-10474 
-10475 
-10476 
-10477 
-10478 
-10479 
-10480 
-10481 
-10482 
-10483 
-10484 
-10485 
-10486 
-10487 
-10488 
-10489 
-10490 
-10491 
-10492 
-10493 
-10494 
-10495 
-10496 
-10497 
-10498 
-10499 
-10500 
-10501 
-10502 
-10503 
-10504 
-10505 
-10506 
-10507 
-10508 
-10509 
-10510 
-10511 
-10512 
-10513 
-10514 
-10515 
-10516 
-10517 
-10518 
-10519 
-10520 
-10521 
-10522 
-10523 
-10524 
-10525 
-10526 
-10527 
-10528 
-10529 
-10530 
-10531 
-10532 
-10533 
-10534 
-10535 
-10536 
-10537 
-10538 
-10539 
-10540 
-10541 
-10542 
-10543 
-10544 
-10545 
-10546 
-10547 
-10548 
-10549 
-10550 
-10551 
-10552 
-10553 
-10554 
-10555 
-10556 
-10557 
-10558 
-10559 
-10560 
-10561 
-10562 
-10563 
-10564 
-10565 
-10566 
-10567 
-10568 
-10569 
-10570 
-10571 
-10572 
-10573 
-10574 
-10575 
-10576 
-10577 
-10578 
-10579 
-10580 
-10581 
-10582 
-10583 
-10584 
-10585 
-10586 
-10587 
-10588 
-10589 
-10590 
-10591 
-10592 
-10593 
-10594 
-10595 
-10596 
-10597 
-10598 
-10599 
-10600 
-10601 
-10602 
-10603 
-10604 
-10605 
-10606 
-10607 
-10608 
-10609 
-10610 
-10611 
-10612 
-10613 
-10614 
-10615 
-10616 
-10617 
-10618 
-10619 
-10620 
-10621 
-10622 
-10623 
-10624 
-10625 
-10626 
-10627 
-10628 
-10629 
-10630 
-10631 
-10632 
-10633 
-10634 
-10635 
-10636 
-10637 
-10638 
-10639 
-10640 
-10641 
-10642 
-10643 
-10644 
-10645 
-10646 
-10647 
-10648 
-10649 
-10650 
-10651 
-10652 
-10653 
-10654 
-10655 
-10656 
-10657 
-10658 
-10659 
-10660 
-10661 
-10662 
-10663 
-10664 
-10665 
-10666 
-10667 
-10668 
-10669 
-10670 
-10671 
-10672 
-10673 
-10674 
-10675 
-10676 
-10677 
-10678 
-10679 
-10680 
-10681 
-10682 
-10683 
-10684 
-10685 
-10686 
-10687 
-10688 
-10689 
-10690 
-10691 
-10692 
-10693 
-10694 
-10695 
-10696 
-10697 
-10698 
-10699 
-10700 
-10701 
-10702 
-10703 
-10704 
-10705 
-10706 
-10707 
-10708 
-10709 
-10710 
-10711 
-10712 
-10713 
-10714 
-10715 
-10716 
-10717 
-10718 
-10719 
-10720 
-10721 
-10722 
-10723 
-10724 
-10725 
-10726 
-10727 
-10728 
-10729 
-10730 
-10731 
-10732 
-10733 
-10734 
-10735 
-10736 
-10737 
-10738 
-10739 
-10740 
-10741 
-10742 
-10743 
-10744 
-10745 
-10746 
-10747 
-10748 
-10749 
-10750 
-10751 
-10752 
-10753 
-10754 
-10755 
-10756 
-10757 
-10758 
-10759 
-10760 
-10761 
-10762 
-10763 
-10764 
-10765 
-10766 
-10767 
-10768 
-10769 
-10770 
-10771 
-10772 
-10773 
-10774 
-10775 
-10776 
-10777 
-10778 
-10779 
-10780 
-10781 
-10782 
-10783 
-10784 
-10785 
-10786 
-10787 
-10788 
-10789 
-10790 
-10791 
-10792 
-10793 
-10794 
-10795 
-10796 
-10797 
-10798 
-10799 
-10800 
-10801 
-10802 
-10803 
-10804 
-10805 
-10806 
-10807 
-10808 
-10809 
-10810 
-10811 
-10812 
-10813 
-10814 
-10815 
-10816 
-10817 
-10818 
-10819 
-10820 
-10821 
-10822 
-10823 
-10824 
-10825 
-10826 
-10827 
-10828 
-10829 
-10830 
-10831 
-10832 
-10833 
-10834 
-10835 
-10836 
-10837 
-10838 
-10839 
-10840 
-10841 
-10842 
-10843 
-10844 
-10845 
-10846 
-10847 
-10848 
-10849 
-10850 
-10851 
-10852 
-10853 
-10854 
-10855 
-10856 
-10857 
-10858 
-10859 
-10860 
-10861 
-10862 
-10863 
-10864 
-10865 
-10866 
-10867 
-10868 
-10869 
-10870 
-10871 
-10872 
-10873 
-10874 
-10875 
-10876 
-10877 
-10878 
-10879 
-10880 
-10881 
-10882 
-10883 
-10884 
-10885 
-10886 
-10887 
-10888 
-10889 
-10890 
-10891 
-10892 
-10893 
-10894 
-10895 
-10896 
-10897 
-10898 
-10899 
-10900 
-10901 
-10902 
-10903 
-10904 
-10905 
-10906 
-10907 
-10908 
-10909 
-10910 
-10911 
-10912 
-10913 
-10914 
-10915 
-10916 
-10917 
-10918 
-10919 
-10920 
-10921 
-10922 
-10923 
-10924 
-10925 
-10926 
-10927 
-10928 
-10929 
-10930 
-10931 
-10932 
-10933 
-10934 
-10935 
-10936 
-10937 
-10938 
-10939 
-10940 
-10941 
-10942 
-10943 
-10944 
-10945 
-10946 
-10947 
-10948 
-10949 
-10950 
-10951 
-10952 
-10953 
-10954 
-10955 
-10956 
-10957 
-10958 
-10959 
-10960 
-10961 
-10962 
-10963 
-10964 
-10965 
-10966 
-10967 
-10968 
-10969 
-10970 
-10971 
-10972 
-10973 
-10974 
-10975 
-10976 
-10977 
-10978 
-10979 
-10980 
-10981 
-10982 
-10983 
-10984 
-10985 
-10986 
-10987 
-10988 
-10989 
-10990 
-10991 
-10992 
-10993 
-10994 
-10995 
-10996 
-10997 
-10998 
-10999 
-11000 
-11001 
-11002 
-11003 
-11004 
-11005 
-11006 
-11007 
-11008 
-11009 
-11010 
-11011 
-11012 
-11013 
-11014 
-11015 
-11016 
-11017 
-11018 
-11019 
-11020 
-11021 
-11022 
-11023 
-11024 
-11025 
-11026 
-11027 
-11028 
-11029 
-11030 
-11031 
-11032 
-11033 
-11034 
-11035 
-11036 
-11037 
-11038 
-11039 
-11040 
-11041 
-11042 
-11043 
-11044 
-11045 
-11046 
-11047 
-11048 
-11049 
-11050 
-11051 
-11052 
-11053 
-11054 
-11055 
-11056 
-11057 
-11058 
-11059 
-11060 
-11061 
-11062 
-11063 
-11064 
-11065 
-11066 
-11067 
-11068 
-11069 
-11070 
-11071 
-11072 
-11073 
-11074 
-11075 
-11076 
-11077 
-11078 
-11079 
-11080 
-11081 
-11082 
-11083 
-11084 
-11085 
-11086 
-11087 
-11088 
-11089 
-11090 
-11091 
-11092 
-11093 
-11094 
-11095 
-11096 
-11097 
-11098 
-11099 
-11100 
-11101 
-11102 
-11103 
-11104 
-11105 
-11106 
-11107 
-11108 
-11109 
-11110 
-11111 
-11112 
-11113 
-11114 
-11115 
-11116 
-11117 
-11118 
-11119 
-11120 
-11121 
-11122 
-11123 
-11124 
-11125 
-11126 
-11127 
-11128 
-11129 
-11130 
-11131 
-11132 
-11133 
-11134 
-11135 
-11136 
-11137 
-11138 
-11139 
-11140 
-11141 
-11142 
-11143 
-11144 
-11145 
-11146 
-11147 
-11148 
-11149 
-11150 
-11151 
-11152 
-11153 
-11154 
-11155 
-11156 
-11157 
-11158 
-11159 
-11160 
-11161 
-11162 
-11163 
-11164 
-11165 
-11166 
-11167 
-11168 
-11169 
-11170 
-11171 
-11172 
-11173 
-11174 
-11175 
-11176 
-11177 
-11178 
-11179 
-11180 
-11181 
-11182 
-11183 
-11184 
-11185 
-11186 
-11187 
-11188 
-11189 
-11190 
-11191 
-11192 
-11193 
-11194 
-11195 
-11196 
-11197 
-11198 
-11199 
-11200 
-11201 
-11202 
-11203 
-11204 
-11205 
-11206 
-11207 
-11208 
-11209 
-11210 
-11211 
-11212 
-11213 
-11214 
-11215 
-11216 
-11217 
-11218 
-11219 
-11220 
-11221 
-11222 
-11223 
-11224 
-11225 
-11226 
-11227 
-11228 
-11229 
-11230 
-11231 
-11232 
-11233 
-11234 
-11235 
-11236 
-11237 
-11238 
-11239 
-11240 
-11241 
-11242 
-11243 
-11244 
-11245 
-11246 
-11247 
-11248 
-11249 
-11250 
-11251 
-11252 
-11253 
-11254 
-11255 
-11256 
-11257 
-11258 
-11259 
-11260 
-11261 
-11262 
-11263 
-11264 
-11265 
-11266 
-11267 
-11268 
-11269 
-11270 
-11271 
-11272 
-11273 
-11274 
-11275 
-11276 
-11277 
-11278 
-11279 
-11280 
-11281 
-11282 
-11283 
-11284 
-11285 
-11286 
-11287 
-11288 
-11289 
-11290 
-11291 
-11292 
-11293 
-11294 
-11295 
-11296 
-11297 
-11298 
-11299 
-11300 
-11301 
-11302 
-11303 
-11304 
-11305 
-11306 
-11307 
-11308 
-11309 
-11310 
-11311 
-11312 
-11313 
-11314 
-11315 
-11316 
-11317 
-11318 
-11319 
-11320 
-11321 
-11322 
-11323 
-11324 
-11325 
-11326 
-11327 
-11328 
-11329 
-11330 
-11331 
-11332 
-11333 
-11334 
-11335 
-11336 
-11337 
-11338 
-11339 
-11340 
-11341 
-11342 
-11343 
-11344 
-11345 
-11346 
-11347 
-11348 
-11349 
-11350 
-11351 
-11352 
-11353 
-11354 
-11355 
-11356 
-11357 
-11358 
-11359 
-11360 
-11361 
-11362 
-11363 
-11364 
-11365 
-11366 
-11367 
-11368 
-11369 
-11370 
-11371 
-11372 
-11373 
-11374 
-11375 
-11376 
-11377 
-11378 
-11379 
-11380 
-11381 
-11382 
-11383 
-11384 
-11385 
-11386 
-11387 
-11388 
-11389 
-11390 
-11391 
-11392 
-11393 
-11394 
-11395 
-11396 
-11397 
-11398 
-11399 
-11400 
-11401 
-11402 
-11403 
-11404 
-11405 
-11406 
-11407 
-11408 
-11409 
-11410 
-11411 
-11412 
-11413 
-11414 
-11415 
-11416 
-11417 
-11418 
-11419 
-11420 
-11421 
-11422 
-11423 
-11424 
-11425 
-11426 
-11427 
-11428 
-11429 
-11430 
-11431 
-11432 
-11433 
-11434 
-11435 
-11436 
-11437 
-11438 
-11439 
-11440 
-11441 
-11442 
-11443 
-11444 
-11445 
-11446 
-11447 
-11448 
-11449 
-11450 
-11451 
-11452 
-11453 
-11454 
-11455 
-11456 
-11457 
-11458 
-11459 
-11460 
-11461 
-11462 
-11463 
-11464 
-11465 
-11466 
-11467 
-11468 
-11469 
-11470 
-11471 
-11472 
-11473 
-11474 
-11475 
-11476 
-11477 
-11478 
-11479 
-11480 
-11481 
-11482 
-11483 
-11484 
-11485 
-11486 
-11487 
-11488 
-11489 
-11490 
-11491 
-11492 
-11493 
-11494 
-11495 
-11496 
-11497 
-11498 
-11499 
-11500 
-11501 
-11502 
-11503 
-11504 
-11505 
-11506 
-11507 
-11508 
-11509 
-11510 
-11511 
-11512 
-11513 
-11514 
-11515 
-11516 
-11517 
-11518 
-11519 
-11520 
-11521 
-11522 
-11523 
-11524 
-11525 
-11526 
-11527 
-11528 
-11529 
-11530 
-11531 
-11532 
-11533 
-11534 
-11535 
-11536 
-11537 
-11538 
-11539 
-11540 
-11541 
-11542 
-11543 
-11544 
-11545 
-11546 
-11547 
-11548 
-11549 
-11550 
-11551 
-11552 
-11553 
-11554 
-11555 
-11556 
-11557 
-11558 
-11559 
-11560 
-11561 
-11562 
-11563 
-11564 
-11565 
-11566 
-11567 
-11568 
-11569 
-11570 
-11571 
-11572 
-11573 
-11574 
-11575 
-11576 
-11577 
-11578 
-11579 
-11580 
-11581 
-11582 
-11583 
-11584 
-11585 
-11586 
-11587 
-11588 
-11589 
-11590 
-11591 
-11592 
-11593 
-11594 
-11595 
-11596 
-11597 
-11598 
-11599 
-11600 
-11601 
-11602 
-11603 
-11604 
-11605 
-11606 
-11607 
-11608 
-11609 
-11610 
-11611 
-11612 
-11613 
-11614 
-11615 
-11616 
-11617 
-11618 
-11619 
-11620 
-11621 
-11622 
-11623 
-11624 
-11625 
-11626 
-11627 
-11628 
-11629 
-11630 
-11631 
-11632 
-11633 
-11634 
-11635 
-11636 
-11637 
-11638 
-11639 
-11640 
-11641 
-11642 
-11643 
-11644 
-11645 
-11646 
-11647 
-11648 
-11649 
-11650 
-11651 
-11652 
-11653 
-11654 
-11655 
-11656 
-11657 
-11658 
-11659 
-11660 
-11661 
-11662 
-11663 
-11664 
-11665 
-11666 
-11667 
-11668 
-11669 
-11670 
-11671 
-11672 
-11673 
-11674 
-11675 
-11676 
-11677 
-11678 
-11679 
-11680 
-11681 
-11682 
-11683 
-11684 
-11685 
-11686 
-11687 
-11688 
-11689 
-11690 
-11691 
-11692 
-11693 
-11694 
-11695 
-11696 
-11697 
-11698 
-11699 
-11700 
-11701 
-11702 
-11703 
-11704 
-11705 
-11706 
-11707 
-11708 
-11709 
-11710 
-11711 
-11712 
-11713 
-11714 
-11715 
-11716 
-11717 
-11718 
-11719 
-11720 
-11721 
-11722 
-11723 
-11724 
-11725 
-11726 
-11727 
-11728 
-11729 
-11730 
-11731 
-11732 
-11733 
-11734 
-11735 
-11736 
-11737 
-11738 
-11739 
-11740 
-11741 
-11742 
-11743 
-11744 
-11745 
-11746 
-11747 
-11748 
-11749 
-11750 
-11751 
-11752 
-11753 
-11754 
-11755 
-11756 
-11757 
-11758 
-11759 
-11760 
-11761 
-11762 
-11763 
-11764 
-11765 
-11766 
-11767 
-11768 
-11769 
-11770 
-11771 
-11772 
-11773 
-11774 
-11775 
-11776 
-11777 
-11778 
-11779 
-11780 
-11781 
-11782 
-11783 
-11784 
-11785 
-11786 
-11787 
-11788 
-11789 
-11790 
-11791 
-11792 
-11793 
-11794 
-11795 
-11796 
-11797 
-11798 
-11799 
-11800 
-11801 
-11802 
-11803 
-11804 
-11805 
-11806 
-11807 
-11808 
-11809 
-11810 
-11811 
-11812 
-11813 
-11814 
-11815 
-11816 
-11817 
-11818 
-11819 
-11820 
-11821 
-11822 
-11823 
-11824 
-11825 
-11826 
-11827 
-11828 
-11829 
-11830 
-11831 
-11832 
-11833 
-11834 
-11835 
-11836 
-11837 
-11838 
-11839 
-11840 
-11841 
-11842 
-11843 
-11844 
-11845 
-11846 
-11847 
-11848 
-11849 
-11850 
-11851 
-11852 
-11853 
-11854 
-11855 
-11856 
-11857 
-11858 
-11859 
-11860 
-11861 
-11862 
-11863 
-11864 
-11865 
-11866 
-11867 
-11868 
-11869 
-11870 
-11871 
-11872 
-11873 
-11874 
-11875 
-11876 
-11877 
-11878 
-11879 
-11880 
-11881 
-11882 
-11883 
-11884 
-11885 
-11886 
-11887 
-11888 
-11889 
-11890 
-11891 
-11892 
-11893 
-11894 
-11895 
-11896 
-11897 
-11898 
-11899 
-11900 
-11901 
-11902 
-11903 
-11904 
-11905 
-11906 
-11907 
-11908 
-11909 
-11910 
-11911 
-11912 
-11913 
-11914 
-11915 
-11916 
-11917 
-11918 
-11919 
-11920 
-11921 
-11922 
-11923 
-11924 
-11925 
-11926 
-11927 
-11928 
-11929 
-11930 
-11931 
-11932 
-11933 
-11934 
-11935 
-11936 
-11937 
-11938 
-11939 
-11940 
-11941 
-11942 
-11943 
-11944 
-11945 
-11946 
-11947 
-11948 
-11949 
-11950 
-11951 
-11952 
-11953 
-11954 
-11955 
-11956 
-11957 
-11958 
-11959 
-11960 
-11961 
-11962 
-11963 
-11964 
-11965 
-11966 
-11967 
-11968 
-11969 
-11970 
-11971 
-11972 
-11973 
-11974 
-11975 
-11976 
-11977 
-11978 
-11979 
-11980 
-11981 
-11982 
-11983 
-11984 
-11985 
-11986 
-11987 
-11988 
-11989 
-11990 
-11991 
-11992 
-11993 
-11994 
-11995 
-11996 
-11997 
-11998 
-11999 
-12000 
-12001 
-12002 
-12003 
-12004 
-12005 
-12006 
-12007 
-12008 
-12009 
-12010 
-12011 
-12012 
-12013 
-12014 
-12015 
-12016 
-12017 
-12018 
-12019 
-12020 
-12021 
-12022 
-12023 
-12024 
-12025 
-12026 
-12027 
-12028 
-12029 
-12030 
-12031 
-12032 
-12033 
-12034 
-12035 
-12036 
-12037 
-12038 
-12039 
-12040 
-12041 
-12042 
-12043 
-12044 
-12045 
-12046 
-12047 
-12048 
-12049 
-12050 
-12051 
-12052 
-12053 
-12054 
-12055 
-12056 
-12057 
-12058 
-12059 
-12060 
-12061 
-12062 
-12063 
-12064 
-12065 
-12066 
-12067 
-12068 
-12069 
-12070 
-12071 
-12072 
-12073 
-12074 
-12075 
-12076 
-12077 
-12078 
-12079 
-12080 
-12081 
-12082 
-12083 
-12084 
-12085 
-12086 
-12087 
-12088 
-12089 
-12090 
-12091 
-12092 
-12093 
-12094 
-12095 
-12096 
-12097 
-12098 
-12099 
-12100 
-12101 
-12102 
-12103 
-12104 
-12105 
-12106 
-12107 
-12108 
-12109 
-12110 
-12111 
-12112 
-12113 
-12114 
-12115 
-12116 
-12117 
-12118 
-12119 
-12120 
-12121 
-12122 
-12123 
-12124 
-12125 
-12126 
-12127 
-12128 
-12129 
-12130 
-12131 
-12132 
-12133 
-12134 
-12135 
-12136 
-12137 
-12138 
-12139 
-12140 
-12141 
-12142 
-12143 
-12144 
-12145 
-12146 
-12147 
-12148 
-12149 
-12150 
-12151 
-12152 
-12153 
-12154 
-12155 
-12156 
-12157 
-12158 
-12159 
-12160 
-12161 
-12162 
-12163 
-12164 
-12165 
-12166 
-12167 
-12168 
-12169 
-12170 
-12171 
-12172 
-12173 
-12174 
-12175 
-12176 
-12177 
-12178 
-12179 
-12180 
-12181 
-12182 
-12183 
-12184 
-12185 
-12186 
-12187 
-12188 
-12189 
-12190 
-12191 
-12192 
-12193 
-12194 
-12195 
-12196 
-12197 
-12198 
-12199 
-12200 
-12201 
-12202 
-12203 
-12204 
-12205 
-12206 
-12207 
-12208 
-12209 
-12210 
-12211 
-12212 
-12213 
-12214 
-12215 
-12216 
-12217 
-12218 
-12219 
-12220 
-12221 
-12222 
-12223 
-12224 
-12225 
-12226 
-12227 
-12228 
-12229 
-12230 
-12231 
-12232 
-12233 
-12234 
-12235 
-12236 
-12237 
-12238 
-12239 
-12240 
-12241 
-12242 
-12243 
-12244 
-12245 
-12246 
-12247 
-12248 
-12249 
-12250 
-12251 
-12252 
-12253 
-12254 
-12255 
-12256 
-12257 
-12258 
-12259 
-12260 
-12261 
-12262 
-12263 
-12264 
-12265 
-12266 
-12267 
-12268 
-12269 
-12270 
-12271 
-12272 
-12273 
-12274 
-12275 
-12276 
-12277 
-12278 
-12279 
-12280 
-12281 
-12282 
-12283 
-12284 
-12285 
-12286 
-12287 
-12288 
-12289 
-12290 
-12291 
-12292 
-12293 
-12294 
-12295 
-12296 
-12297 
-12298 
-12299 
-12300 
-12301 
-12302 
-12303 
-12304 
-12305 
-12306 
-12307 
-12308 
-12309 
-12310 
-12311 
-12312 
-12313 
-12314 
-12315 
-12316 
-12317 
-12318 
-12319 
-12320 
-12321 
-12322 
-12323 
-12324 
-12325 
-12326 
-12327 
-12328 
-12329 
-12330 
-12331 
-12332 
-12333 
-12334 
-12335 
-12336 
-12337 
-12338 
-12339 
-12340 
-12341 
-12342 
-12343 
-12344 
-12345 
-12346 
-12347 
-12348 
-12349 
-12350 
-12351 
-12352 
-12353 
-12354 
-12355 
-12356 
-12357 
-12358 
-12359 
-12360 
-12361 
-12362 
-12363 
-12364 
-12365 
-12366 
-12367 
-12368 
-12369 
-12370 
-12371 
-12372 
-12373 
-12374 
-12375 
-12376 
-12377 
-12378 
-12379 
-12380 
-12381 
-12382 
-12383 
-12384 
-12385 
-12386 
-12387 
-12388 
-12389 
-12390 
-12391 
-12392 
-12393 
-12394 
-12395 
-12396 
-12397 
-12398 
-12399 
-12400 
-12401 
-12402 
-12403 
-12404 
-12405 
-12406 
-12407 
-12408 
-12409 
-12410 
-12411 
-12412 
-12413 
-12414 
-12415 
-12416 
-12417 
-12418 
-12419 
-12420 
-12421 
-12422 
-12423 
-12424 
-12425 
-12426 
-12427 
-12428 
-12429 
-12430 
-12431 
-12432 
-12433 
-12434 
-12435 
-12436 
-12437 
-12438 
-12439 
-12440 
-12441 
-12442 
-12443 
-12444 
-12445 
-12446 
-12447 
-12448 
-12449 
-12450 
-12451 
-12452 
-12453 
-12454 
-12455 
-12456 
-12457 
-12458 
-12459 
-12460 
-12461 
-12462 
-12463 
-12464 
-12465 
-12466 
-12467 
-12468 
-12469 
-12470 
-12471 
-12472 
-12473 
-12474 
-12475 
-12476 
-12477 
-12478 
-12479 
-12480 
-12481 
-12482 
-12483 
-12484 
-12485 
-12486 
-12487 
-12488 
-12489 
-12490 
-12491 
-12492 
-12493 
-12494 
-12495 
-12496 
-12497 
-12498 
-12499 
-12500 
-12501 
-12502 
-12503 
-12504 
-12505 
-12506 
-12507 
-12508 
-12509 
-12510 
-12511 
-12512 
-12513 
-12514 
-12515 
-12516 
-12517 
-12518 
-12519 
-12520 
-12521 
-12522 
-12523 
-12524 
-12525 
-12526 
-12527 
-12528 
-12529 
-12530 
-12531 
-12532 
-12533 
-12534 
-12535 
-12536 
-12537 
-12538 
-12539 
-12540 
-12541 
-12542 
-12543 
-12544 
-12545 
-12546 
-12547 
-12548 
-12549 
-12550 
-12551 
-12552 
-12553 
-12554 
-12555 
-12556 
-12557 
-12558 
-12559 
-12560 
-12561 
-12562 
-12563 
-12564 
-12565 
-12566 
-12567 
-12568 
-12569 
-12570 
-12571 
-12572 
-12573 
-12574 
-12575 
-12576 
-12577 
-12578 
-12579 
-12580 
-12581 
-12582 
-12583 
-12584 
-12585 
-12586 
-12587 
-12588 
-12589 
-12590 
-12591 
-12592 
-12593 
-12594 
-12595 
-12596 
-12597 
-12598 
-12599 
-12600 
-12601 
-12602 
-12603 
-12604 
-12605 
-12606 
-12607 
-12608 
-12609 
-12610 
-12611 
-12612 
-12613 
-12614 
-12615 
-12616 
-12617 
-12618 
-12619 
-12620 
-12621 
-12622 
-12623 
-12624 
-12625 
-12626 
-12627 
-12628 
-12629 
-12630 
-12631 
-12632 
-12633 
-12634 
-12635 
-12636 
-12637 
-12638 
-12639 
-12640 
-12641 
-12642 
-12643 
-12644 
-12645 
-12646 
-12647 
-12648 
-12649 
-12650 
-12651 
-12652 
-12653 
-12654 
-12655 
-12656 
-12657 
-12658 
-12659 
-12660 
-12661 
-12662 
-12663 
-12664 
-12665 
-12666 
-12667 
-12668 
-12669 
-12670 
-12671 
-12672 
-12673 
-12674 
-12675 
-12676 
-12677 
-12678 
-12679 
-12680 
-12681 
-12682 
-12683 
-12684 
-12685 
-12686 
-12687 
-12688 
-12689 
-12690 
-12691 
-12692 
-12693 
-12694 
-12695 
-12696 
-12697 
-12698 
-12699 
-12700 
-12701 
-12702 
-12703 
-12704 
-12705 
-12706 
-12707 
-12708 
-12709 
-12710 
-12711 
-12712 
-12713 
-12714 
-12715 
-12716 
-12717 
-12718 
-12719 
-12720 
-12721 
-12722 
-12723 
-12724 
-12725 
-12726 
-12727 
-12728 
-12729 
-12730 
-12731 
-12732 
-12733 
-12734 
-12735 
-12736 
-12737 
-12738 
-12739 
-12740 
-12741 
-12742 
-12743 
-12744 
-12745 
-12746 
-12747 
-12748 
-12749 
-12750 
-12751 
-12752 
-12753 
-12754 
-12755 
-12756 
-12757 
-12758 
-12759 
-12760 
-12761 
-12762 
-12763 
-12764 
-12765 
-12766 
-12767 
-12768 
-12769 
-12770 
-12771 
-12772 
-12773 
-12774 
-12775 
-12776 
-12777 
-12778 
-12779 
-12780 
-12781 
-12782 
-12783 
-12784 
-12785 
-12786 
-12787 
-12788 
-12789 
-12790 
-12791 
-12792 
-12793 
-12794 
-12795 
-12796 
-12797 
-12798 
-12799 
-12800 
-12801 
-12802 
-12803 
-12804 
-12805 
-12806 
-12807 
-12808 
-12809 
-12810 
-12811 
-12812 
-12813 
-12814 
-12815 
-12816 
-12817 
-12818 
-12819 
-12820 
-12821 
-12822 
-12823 
-12824 
-12825 
-12826 
-12827 
-12828 
-12829 
-12830 
-12831 
-12832 
-12833 
-12834 
-12835 
-12836 
-12837 
-12838 
-12839 
-12840 
-12841 
-12842 
-12843 
-12844 
-12845 
-12846 
-12847 
-12848 
-12849 
-12850 
-12851 
-12852 
-12853 
-12854 
-12855 
-12856 
-12857 
-12858 
-12859 
-12860 
-12861 
-12862 
-12863 
-12864 
-12865 
-12866 
-12867 
-12868 
-12869 
-12870 
-12871 
-12872 
-12873 
-12874 
-12875 
-12876 
-12877 
-12878 
-12879 
-12880 
-12881 
-12882 
-12883 
-12884 
-12885 
-12886 
-12887 
-12888 
-12889 
-12890 
-12891 
-12892 
-12893 
-12894 
-12895 
-12896 
-12897 
-12898 
-12899 
-12900 
-12901 
-12902 
-12903 
-12904 
-12905 
-12906 
-12907 
-12908 
-12909 
-12910 
-12911 
-12912 
-12913 
-12914 
-12915 
-12916 
-12917 
-12918 
-12919 
-12920 
-12921 
-12922 
-12923 
-12924 
-12925 
-12926 
-12927 
-12928 
-12929 
-12930 
-12931 
-12932 
-12933 
-12934 
-12935 
-12936 
-12937 
-12938 
-12939 
-12940 
-12941 
-12942 
-12943 
-12944 
-12945 
-12946 
-12947 
-12948 
-12949 
-12950 
-12951 
-12952 
-12953 
-12954 
-12955 
-12956 
-12957 
-12958 
-12959 
-12960 
-12961 
-12962 
-12963 
-12964 
-12965 
-12966 
-12967 
-12968 
-12969 
-12970 
-12971 
-12972 
-12973 
-12974 
-12975 
-12976 
-12977 
-12978 
-12979 
-12980 
-12981 
-12982 
-12983 
-12984 
-12985 
-12986 
-12987 
-12988 
-12989 
-12990 
-12991 
-12992 
-12993 
-12994 
-12995 
-12996 
-12997 
-12998 
-12999 
-13000 
-13001 
-13002 
-13003 
-13004 
-13005 
-13006 
-13007 
-13008 
-13009 
-13010 
-13011 
-13012 
-13013 
-13014 
-13015 
-13016 
-13017 
-13018 
-13019 
-13020 
-13021 
-13022 
-13023 
-13024 
-13025 
-13026 
-13027 
-13028 
-13029 
-13030 
-13031 
-13032 
-13033 
-13034 
-13035 
-13036 
-13037 
-13038 
-13039 
-13040 
-13041 
-13042 
-13043 
-13044 
-13045 
-13046 
-13047 
-13048 
-13049 
-13050 
-13051 
-13052 
-13053 
-13054 
-13055 
-13056 
-13057 
-13058 
-13059 
-13060 
-13061 
-13062 
-13063 
-13064 
-13065 
-13066 
-13067 
-13068 
-13069 
-13070 
-13071 
-13072 
-13073 
-13074 
-13075 
-13076 
-13077 
-13078 
-13079 
-13080 
-13081 
-13082 
-13083 
-13084 
-13085 
-13086 
-13087 
-13088 
-13089 
-13090 
-13091 
-13092 
-13093 
-13094 
-13095 
-13096 
-13097 
-13098 
-13099 
-13100 
-13101 
-13102 
-13103 
-13104 
-13105 
-13106 
-13107 
-13108 
-13109 
-13110 
-13111 
-13112 
-13113 
-13114 
-13115 
-13116 
-13117 
-13118 
-13119 
-13120 
-13121 
-13122 
-13123 
-13124 
-13125 
-13126 
-13127 
-13128 
-13129 
-13130 
-13131 
-13132 
-13133 
-13134 
-13135 
-13136 
-13137 
-13138 
-13139 
-13140 
-13141 
-13142 
-13143 
-13144 
-13145 
-13146 
-13147 
-13148 
-13149 
-13150 
-13151 
-13152 
-13153 
-13154 
-13155 
-13156 
-13157 
-13158 
-13159 
-13160 
-13161 
-13162 
-13163 
-13164 
-13165 
-13166 
-13167 
-13168 
-13169 
-13170 
-13171 
-13172 
-13173 
-13174 
-13175 
-13176 
-13177 
-13178 
-13179 
-13180 
-13181 
-13182 
-13183 
-13184 
-13185 
-13186 
-13187 
-13188 
-13189 
-13190 
-13191 
-13192 
-13193 
-13194 
-13195 
-13196 
-13197 
-13198 
-13199 
-13200 
-13201 
-13202 
-13203 
-13204 
-13205 
-13206 
-13207 
-13208 
-13209 
-13210 
-13211 
-13212 
-13213 
-13214 
-13215 
-13216 
-13217 
-13218 
-13219 
-13220 
-13221 
-13222 
-13223 
-13224 
-13225 
-13226 
-13227 
-13228 
-13229 
-13230 
-13231 
-13232 
-13233 
-13234 
-13235 
-13236 
-13237 
-13238 
-13239 
-13240 
-13241 
-13242 
-13243 
-13244 
-13245 
-13246 
-13247 
-13248 
-13249 
-13250 
-13251 
-13252 
-13253 
-13254 
-13255 
-13256 
-13257 
-13258 
-13259 
-13260 
-13261 
-13262 
-13263 
-13264 
-13265 
-13266 
-13267 
-13268 
-13269 
-13270 
-13271 
-13272 
-13273 
-13274 
-13275 
-13276 
-13277 
-13278 
-13279 
-13280 
-13281 
-13282 
-13283 
-13284 
-13285 
-13286 
-13287 
-13288 
-13289 
-13290 
-13291 
-13292 
-13293 
-13294 
-13295 
-13296 
-13297 
-13298 
-13299 
-13300 
-13301 
-13302 
-13303 
-13304 
-13305 
-13306 
-13307 
-13308 
-13309 
-13310 
-13311 
-13312 
-13313 
-13314 
-13315 
-13316 
-13317 
-13318 
-13319 
-13320 
-13321 
-13322 
-13323 
-13324 
-13325 
-13326 
-13327 
-13328 
-13329 
-13330 
-13331 
-13332 
-13333 
-13334 
-13335 
-13336 
-13337 
-13338 
-13339 
-13340 
-13341 
-13342 
-13343 
-13344 
-13345 
-13346 
-13347 
-13348 
-13349 
-13350 
-13351 
-13352 
-13353 
-13354 
-13355 
-13356 
-13357 
-13358 
-13359 
-13360 
-13361 
-13362 
-13363 
-13364 
-13365 
-13366 
-13367 
-13368 
-13369 
-13370 
-13371 
-13372 
-13373 
-13374 
-13375 
-13376 
-13377 
-13378 
-13379 
-13380 
-13381 
-13382 
-13383 
-13384 
-13385 
-13386 
-13387 
-13388 
-13389 
-13390 
-13391 
-13392 
-13393 
-13394 
-13395 
-13396 
-13397 
-13398 
-13399 
-13400 
-13401 
-13402 
-13403 
-13404 
-13405 
-13406 
-13407 
-13408 
-13409 
-13410 
-13411 
-13412 
-13413 
-13414 
-13415 
-13416 
-13417 
-13418 
-13419 
-13420 
-13421 
-13422 
-13423 
-13424 
-13425 
-13426 
-13427 
-13428 
-13429 
-13430 
-13431 
-13432 
-13433 
-13434 
-13435 
-13436 
-13437 
-13438 
-13439 
-13440 
-13441 
-13442 
-13443 
-13444 
-13445 
-13446 
-13447 
-13448 
-13449 
-13450 
-13451 
-13452 
-13453 
-13454 
-13455 
-13456 
-13457 
-13458 
-13459 
-13460 
-13461 
-13462 
-13463 
-13464 
-13465 
-13466 
-13467 
-13468 
-13469 
-13470 
-13471 
-13472 
-13473 
-13474 
-13475 
-13476 
-13477 
-13478 
-13479 
-13480 
-13481 
-13482 
-13483 
-13484 
-13485 
-13486 
-13487 
-13488 
-13489 
-13490 
-13491 
-13492 
-13493 
-13494 
-13495 
-13496 
-13497 
-13498 
-13499 
-13500 
-13501 
-13502 
-13503 
-13504 
-13505 
-13506 
-13507 
-13508 
-13509 
-13510 
-13511 
-13512 
-13513 
-13514 
-13515 
-13516 
-13517 
-13518 
-13519 
-13520 
-13521 
-13522 
-13523 
-13524 
-13525 
-13526 
-13527 
-13528 
-13529 
-13530 
-13531 
-13532 
-13533 
-13534 
-13535 
-13536 
-13537 
-13538 
-13539 
-13540 
-13541 
-13542 
-13543 
-13544 
-13545 
-13546 
-13547 
-13548 
-13549 
-13550 
-13551 
-13552 
-13553 
-13554 
-13555 
-13556 
-13557 
-13558 
-13559 
-13560 
-13561 
-13562 
-13563 
-13564 
-13565 
-13566 
-13567 
-13568 
-13569 
-13570 
-13571 
-13572 
-13573 
-13574 
-13575 
-13576 
-13577 
-13578 
-13579 
-13580 
-13581 
-13582 
-13583 
-13584 
-13585 
-13586 
-13587 
-13588 
-13589 
-13590 
-13591 
-13592 
-13593 
-13594 
-13595 
-13596 
-13597 
-13598 
-13599 
-13600 
-13601 
-13602 
-13603 
-13604 
-13605 
-13606 
-13607 
-13608 
-13609 
-13610 
-13611 
-13612 
-13613 
-13614 
-13615 
-13616 
-13617 
-13618 
-13619 
-13620 
-13621 
-13622 
-13623 
-13624 
-13625 
-13626 
-13627 
-13628 
-13629 
-13630 
-13631 
-13632 
-13633 
-13634 
-13635 
-13636 
-13637 
-13638 
-13639 
-13640 
-13641 
-13642 
-13643 
-13644 
-13645 
-13646 
-13647 
-13648 
-13649 
-13650 
-13651 
-13652 
-13653 
-13654 
-13655 
-13656 
-13657 
-13658 
-13659 
-13660 
-13661 
-13662 
-13663 
-13664 
-13665 
-13666 
-13667 
-13668 
-13669 
-13670 
-13671 
-13672 
-13673 
-13674 
-13675 
-13676 
-13677 
-13678 
-13679 
-13680 
-13681 
-13682 
-13683 
-13684 
-13685 
-13686 
-13687 
-13688 
-13689 
-13690 
-13691 
-13692 
-13693 
-13694 
-13695 
-13696 
-13697 
-13698 
-13699 
-13700 
-13701 
-13702 
-13703 
-13704 
-13705 
-13706 
-13707 
-13708 
-13709 
-13710 
-13711 
-13712 
-13713 
-13714 
-13715 
-13716 
-13717 
-13718 
-13719 
-13720 
-13721 
-13722 
-13723 
-13724 
-13725 
-13726 
-13727 
-13728 
-13729 
-13730 
-13731 
-13732 
-13733 
-13734 
-13735 
-13736 
-13737 
-13738 
-13739 
-13740 
-13741 
-13742 
-13743 
-13744 
-13745 
-13746 
-13747 
-13748 
-13749 
-13750 
-13751 
-13752 
-13753 
-13754 
-13755 
-13756 
-13757 
-13758 
-13759 
-13760 
-13761 
-13762 
-13763 
-13764 
-13765 
-13766 
-13767 
-13768 
-13769 
-13770 
-13771 
-13772 
-13773 
-13774 
-13775 
-13776 
-13777 
-13778 
-13779 
-13780 
-13781 
-13782 
-13783 
-13784 
-13785 
-13786 
-13787 
-13788 
-13789 
-13790 
-13791 
-13792 
-13793 
-13794 
-13795 
-13796 
-13797 
-13798 
-13799 
-13800 
-13801 
-13802 
-13803 
-13804 
-13805 
-13806 
-13807 
-13808 
-13809 
-13810 
-13811 
-13812 
-13813 
-13814 
-13815 
-13816 
-13817 
-13818 
-13819 
-13820 
-13821 
-13822 
-13823 
-13824 
-13825 
-13826 
-13827 
-13828 
-13829 
-13830 
-13831 
-13832 
-13833 
-13834 
-13835 
-13836 
-13837 
-13838 
-13839 
-13840 
-13841 
-13842 
-13843 
-13844 
-13845 
-13846 
-13847 
-13848 
-13849 
-13850 
-13851 
-13852 
-13853 
-13854 
-13855 
-13856 
-13857 
-13858 
-13859 
-13860 
-13861 
-13862 
-13863 
-13864 
-13865 
-13866 
-13867 
-13868 
-13869 
-13870 
-13871 
-13872 
-13873 
-13874 
-13875 
-13876 
-13877 
-13878 
-13879 
-13880 
-13881 
-13882 
-13883 
-13884 
-13885 
-13886 
-13887 
-13888 
-13889 
-13890 
-13891 
-13892 
-13893 
-13894 
-13895 
-13896 
-13897 
-13898 
-13899 
-13900 
-13901 
-13902 
-13903 
-13904 
-13905 
-13906 
-13907 
-13908 
-13909 
-13910 
-13911 
-13912 
-13913 
-13914 
-13915 
-13916 
-13917 
-13918 
-13919 
-13920 
-13921 
-13922 
-13923 
-13924 
-13925 
-13926 
-13927 
-13928 
-13929 
-13930 
-13931 
-13932 
-13933 
-13934 
-13935 
-13936 
-13937 
-13938 
-13939 
-13940 
-13941 
-13942 
-13943 
-13944 
-13945 
-13946 
-13947 
-13948 
-13949 
-13950 
-13951 
-13952 
-13953 
-13954 
-13955 
-13956 
-13957 
-13958 
-13959 
-13960 
-13961 
-13962 
-13963 
-13964 
-13965 
-13966 
-13967 
-13968 
-13969 
-13970 
-13971 
-13972 
-13973 
-13974 
-13975 
-13976 
-13977 
-13978 
-13979 
-13980 
-13981 
-13982 
-13983 
-13984 
-13985 
-13986 
-13987 
-13988 
-13989 
-13990 
-13991 
-13992 
-13993 
-13994 
-13995 
-13996 
-13997 
-13998 
-13999 
-14000 
-14001 
-14002 
-14003 
-14004 
-14005 
-14006 
-14007 
-14008 
-14009 
-14010 
-14011 
-14012 
-14013 
-14014 
-14015 
-14016 
-14017 
-14018 
-14019 
-14020 
-14021 
-14022 
-14023 
-14024 
-14025 
-14026 
-14027 
-14028 
-14029 
-14030 
-14031 
-14032 
-14033 
-14034 
-14035 
-14036 
-14037 
-14038 
-14039 
-14040 
-14041 
-14042 
-14043 
-14044 
-14045 
-14046 
-14047 
-14048 
-14049 
-14050 
-14051 
-14052 
-14053 
-14054 
-14055 
-14056 
-14057 
-14058 
-14059 
-14060 
-14061 
-14062 
-14063 
-14064 
-14065 
-14066 
-14067 
-14068 
-14069 
-14070 
-14071 
-14072 
-14073 
-14074 
-14075 
-14076 
-14077 
-14078 
-14079 
-14080 
-14081 
-14082 
-14083 
-14084 
-14085 
-14086 
-14087 
-14088 
-14089 
-14090 
-14091 
-14092 
-14093 
-14094 
-14095 
-14096 
-14097 
-14098 
-14099 
-14100 
-14101 
-14102 
-14103 
-14104 
-14105 
-14106 
-14107 
-14108 
-14109 
-14110 
-14111 
-14112 
-14113 
-14114 
-14115 
-14116 
-14117 
-14118 
-14119 
-14120 
-14121 
-14122 
-14123 
-14124 
-14125 
-14126 
-14127 
-14128 
-14129 
-14130 
-14131 
-14132 
-14133 
-14134 
-14135 
-14136 
-14137 
-14138 
-14139 
-14140 
-14141 
-14142 
-14143 
-14144 
-14145 
-14146 
-14147 
-14148 
-14149 
-14150 
-14151 
-14152 
-14153 
-14154 
-14155 
-14156 
-14157 
-14158 
-14159 
-14160 
-14161 
-14162 
-14163 
-14164 
-14165 
-14166 
-14167 
-14168 
-14169 
-14170 
-14171 
-14172 
-14173 
-14174 
-14175 
-14176 
-14177 
-14178 
-14179 
-14180 
-14181 
-14182 
-14183 
-14184 
-14185 
-14186 
-14187 
-14188 
-14189 
-14190 
-14191 
-14192 
-14193 
-14194 
-14195 
-14196 
-14197 
-14198 
-14199 
-14200 
-14201 
-14202 
-14203 
-14204 
-14205 
-14206 
-14207 
-14208 
-14209 
-14210 
-14211 
-14212 
-14213 
-14214 
-14215 
-14216 
-14217 
-14218 
-14219 
-14220 
-14221 
-14222 
-14223 
-14224 
-14225 
-14226 
-14227 
-14228 
-14229 
-14230 
-14231 
-14232 
-14233 
-14234 
-14235 
-14236 
-14237 
-14238 
-14239 
-14240 
-14241 
-14242 
-14243 
-14244 
-14245 
-14246 
-14247 
-14248 
-14249 
-14250 
-14251 
-14252 
-14253 
-14254 
-14255 
-14256 
-14257 
-14258 
-14259 
-14260 
-14261 
-14262 
-14263 
-14264 
-14265 
-14266 
-14267 
-14268 
-14269 
-14270 
-14271 
-14272 
-14273 
-14274 
-14275 
-14276 
-14277 
-14278 
-14279 
-14280 
-14281 
-14282 
-14283 
-14284 
-14285 
-14286 
-14287 
-14288 
-14289 
-14290 
-14291 
-14292 
-14293 
-14294 
-14295 
-14296 
-14297 
-14298 
-14299 
-14300 
-14301 
-14302 
-14303 
-14304 
-14305 
-14306 
-14307 
-14308 
-14309 
-14310 
-14311 
-14312 
-14313 
-14314 
-14315 
-14316 
-14317 
-14318 
-14319 
-14320 
-14321 
-14322 
-14323 
-14324 
-14325 
-14326 
-14327 
-14328 
-14329 
-14330 
-14331 
-14332 
-14333 
-14334 
-14335 
-14336 
-14337 
-14338 
-14339 
-14340 
-14341 
-14342 
-14343 
-14344 
-14345 
-14346 
-14347 
-14348 
-14349 
-14350 
-14351 
-14352 
-14353 
-14354 
-14355 
-14356 
-14357 
-14358 
-14359 
-14360 
-14361 
-14362 
-14363 
-14364 
-14365 
-14366 
-14367 
-14368 
-14369 
-14370 
-14371 
-14372 
-14373 
-14374 
-14375 
-14376 
-14377 
-14378 
-14379 
-14380 
-14381 
-14382 
-14383 
-14384 
-14385 
-14386 
-14387 
-14388 
-14389 
-14390 
-14391 
-14392 
-14393 
-14394 
-14395 
-14396 
-14397 
-14398 
-14399 
-14400 
-14401 
-14402 
-14403 
-14404 
-14405 
-14406 
-14407 
-14408 
-14409 
-14410 
-14411 
-14412 
-14413 
-14414 
-14415 
-14416 
-14417 
-14418 
-14419 
-14420 
-14421 
-14422 
-14423 
-14424 
-14425 
-14426 
-14427 
-14428 
-14429 
-14430 
-14431 
-14432 
-14433 
-14434 
-14435 
-14436 
-14437 
-14438 
-14439 
-14440 
-14441 
-14442 
-14443 
-14444 
-14445 
-14446 
-14447 
-14448 
-14449 
-14450 
-14451 
-14452 
-14453 
-14454 
-14455 
-14456 
-14457 
-14458 
-14459 
-14460 
-14461 
-14462 
-14463 
-14464 
-14465 
-14466 
-14467 
-14468 
-14469 
-14470 
-14471 
-14472 
-14473 
-14474 
-14475 
-14476 
-14477 
-14478 
-14479 
-14480 
-14481 
-14482 
-14483 
-14484 
-14485 
-14486 
-14487 
-14488 
-14489 
-14490 
-14491 
-14492 
-14493 
-14494 
-14495 
-14496 
-14497 
-14498 
-14499 
-14500 
-14501 
-14502 
-14503 
-14504 
-14505 
-14506 
-14507 
-14508 
-14509 
-14510 
-14511 
-14512 
-14513 
-14514 
-14515 
-14516 
-14517 
-14518 
-14519 
-14520 
-14521 
-14522 
-14523 
-14524 
-14525 
-14526 
-14527 
-14528 
-14529 
-14530 
-14531 
-14532 
-14533 
-14534 
-14535 
-14536 
-14537 
-14538 
-14539 
-14540 
-14541 
-14542 
-14543 
-14544 
-14545 
-14546 
-14547 
-14548 
-14549 
-14550 
-14551 
-14552 
-14553 
-14554 
-14555 
-14556 
-14557 
-14558 
-14559 
-14560 
-14561 
-14562 
-14563 
-14564 
-14565 
-14566 
-14567 
-14568 
-14569 
-14570 
-14571 
-14572 
-14573 
-14574 
-14575 
-14576 
-14577 
-14578 
-14579 
-14580 
-14581 
-14582 
-14583 
-14584 
-14585 
-14586 
-14587 
-14588 
-14589 
-14590 
-14591 
-14592 
-14593 
-14594 
-14595 
-14596 
-14597 
-14598 
-14599 
-14600 
-14601 
-14602 
-14603 
-14604 
-14605 
-14606 
-14607 
-14608 
-14609 
-14610 
-14611 
-14612 
-14613 
-14614 
-14615 
-14616 
-14617 
-14618 
-14619 
-14620 
-14621 
-14622 
-14623 
-14624 
-14625 
-14626 
-14627 
-14628 
-14629 
-14630 
-14631 
-14632 
-14633 
-14634 
-14635 
-14636 
-14637 
-14638 
-14639 
-14640 
-14641 
-14642 
-14643 
-14644 
-14645 
-14646 
-14647 
-14648 
-14649 
-14650 
-14651 
-14652 
-14653 
-14654 
-14655 
-14656 
-14657 
-14658 
-14659 
-14660 
-14661 
-14662 
-14663 
-14664 
-14665 
-14666 
-14667 
-14668 
-14669 
-14670 
-14671 
-14672 
-14673 
-14674 
-14675 
-14676 
-14677 
-14678 
-14679 
-14680 
-14681 
-14682 
-14683 
-14684 
-14685 
-14686 
-14687 
-14688 
-14689 
-14690 
-14691 
-14692 
-14693 
-14694 
-14695 
-14696 
-14697 
-14698 
-14699 
-14700 
-14701 
-14702 
-14703 
-14704 
-14705 
-14706 
-14707 
-14708 
-14709 
-14710 
-14711 
-14712 
-14713 
-14714 
-14715 
-14716 
-14717 
-14718 
-14719 
-14720 
-14721 
-14722 
-14723 
-14724 
-14725 
-14726 
-14727 
-14728 
-14729 
-14730 
-14731 
-14732 
-14733 
-14734 
-14735 
-14736 
-14737 
-14738 
-14739 
-14740 
-14741 
-14742 
-14743 
-14744 
-14745 
-14746 
-14747 
-14748 
-14749 
-14750 
-14751 
-14752 
-14753 
-14754 
-14755 
-14756 
-14757 
-14758 
-14759 
-14760 
-14761 
-14762 
-14763 
-14764 
-14765 
-14766 
-14767 
-14768 
-14769 
-14770 
-14771 
-14772 
-14773 
-14774 
-14775 
-14776 
-14777 
-14778 
-14779 
-14780 
-14781 
-14782 
-14783 
-14784 
-14785 
-14786 
-14787 
-14788 
-14789 
-14790 
-14791 
-14792 
-14793 
-14794 
-14795 
-14796 
-14797 
-14798 
-14799 
-14800 
-14801 
-14802 
-14803 
-14804 
-14805 
-14806 
-14807 
-14808 
-14809 
-14810 
-14811 
-14812 
-14813 
-14814 
-14815 
-14816 
-14817 
-14818 
-14819 
-14820 
-14821 
-14822 
-14823 
-14824 
-14825 
-14826 
-14827 
-14828 
-14829 
-14830 
-14831 
-14832 
-14833 
-14834 
-14835 
-14836 
-14837 
-14838 
-14839 
-14840 
-14841 
-14842 
-14843 
-14844 
-14845 
-14846 
-14847 
-14848 
-14849 
-14850 
-14851 
-14852 
-14853 
-14854 
-14855 
-14856 
-14857 
-14858 
-14859 
-14860 
-14861 
-14862 
-14863 
-14864 
-14865 
-14866 
-14867 
-14868 
-14869 
-14870 
-14871 
-14872 
-14873 
-14874 
-14875 
-14876 
-14877 
-14878 
-14879 
-14880 
-14881 
-14882 
-14883 
-14884 
-14885 
-14886 
-14887 
-14888 
-14889 
-14890 
-14891 
-14892 
-14893 
-14894 
-14895 
-14896 
-14897 
-14898 
-14899 
-14900 
-14901 
-14902 
-14903 
-14904 
-14905 
-14906 
-14907 
-14908 
-14909 
-14910 
-14911 
-14912 
-14913 
-14914 
-14915 
-14916 
-14917 
-14918 
-14919 
-14920 
-14921 
-14922 
-14923 
-14924 
-14925 
-14926 
-14927 
-14928 
-14929 
-14930 
-14931 
-14932 
-14933 
-14934 
-14935 
-14936 
-14937 
-14938 
-14939 
-14940 
-14941 
-14942 
-14943 
-14944 
-14945 
-14946 
-14947 
-14948 
-14949 
-14950 
-14951 
-14952 
-14953 
-14954 
-14955 
-14956 
-14957 
-14958 
-14959 
-14960 
-14961 
-14962 
-14963 
-14964 
-14965 
-14966 
-14967 
-14968 
-14969 
-14970 
-14971 
-14972 
-14973 
-14974 
-14975 
-14976 
-14977 
-14978 
-14979 
-14980 
-14981 
-14982 
-14983 
-14984 
-14985 
-14986 
-14987 
-14988 
-14989 
-14990 
-14991 
-14992 
-14993 
-14994 
-14995 
-14996 
-14997 
-14998 
-14999 
-15000 
-15001 
-15002 
-15003 
-15004 
-15005 
-15006 
-15007 
-15008 
-15009 
-15010 
-15011 
-15012 
-15013 
-15014 
-15015 
-15016 
-15017 
-15018 
-15019 
-15020 
-15021 
-15022 
-15023 
-15024 
-15025 
-15026 
-15027 
-15028 
-15029 
-15030 
-15031 
-15032 
-15033 
-15034 
-15035 
-15036 
-15037 
-15038 
-15039 
-15040 
-15041 
-15042 
-15043 
-15044 
-15045 
-15046 
-15047 
-15048 
-15049 
-15050 
-15051 
-15052 
-15053 
-15054 
-15055 
-15056 
-15057 
-15058 
-15059 
-15060 
-15061 
-15062 
-15063 
-15064 
-15065 
-15066 
-15067 
-15068 
-15069 
-15070 
-15071 
-15072 
-15073 
-15074 
-15075 
-15076 
-15077 
-15078 
-15079 
-15080 
-15081 
-15082 
-15083 
-15084 
-15085 
-15086 
-15087 
-15088 
-15089 
-15090 
-15091 
-15092 
-15093 
-15094 
-15095 
-15096 
-15097 
-15098 
-15099 
-15100 
-15101 
-15102 
-15103 
-15104 
-15105 
-15106 
-15107 
-15108 
-15109 
-15110 
-15111 
-15112 
-15113 
-15114 
-15115 
-15116 
-15117 
-15118 
-15119 
-15120 
-15121 
-15122 
-15123 
-15124 
-15125 
-15126 
-15127 
-15128 
-15129 
-15130 
-15131 
-15132 
-15133 
-15134 
-15135 
-15136 
-15137 
-15138 
-15139 
-15140 
-15141 
-15142 
-15143 
-15144 
-15145 
-15146 
-15147 
-15148 
-15149 
-15150 
-15151 
-15152 
-15153 
-15154 
-15155 
-15156 
-15157 
-15158 
-15159 
-15160 
-15161 
-15162 
-15163 
-15164 
-15165 
-15166 
-15167 
-15168 
-15169 
-15170 
-15171 
-15172 
-15173 
-15174 
-15175 
-15176 
-15177 
-15178 
-15179 
-15180 
-15181 
-15182 
-15183 
-15184 
-15185 
-15186 
-15187 
-15188 
-15189 
-15190 
-15191 
-15192 
-15193 
-15194 
-15195 
-15196 
-15197 
-15198 
-15199 
-15200 
-15201 
-15202 
-15203 
-15204 
-15205 
-15206 
-15207 
-15208 
-15209 
-15210 
-15211 
-15212 
-15213 
-15214 
-15215 
-15216 
-15217 
-15218 
-15219 
-15220 
-15221 
-15222 
-15223 
-15224 
-15225 
-15226 
-15227 
-15228 
-15229 
-15230 
-15231 
-15232 
-15233 
-15234 
-15235 
-15236 
-15237 
-15238 
-15239 
-15240 
-15241 
-15242 
-15243 
-15244 
-15245 
-15246 
-15247 
-15248 
-15249 
-15250 
-15251 
-15252 
-15253 
-15254 
-15255 
-15256 
-15257 
-15258 
-15259 
-15260 
-15261 
-15262 
-15263 
-15264 
-15265 
-15266 
-15267 
-15268 
-15269 
-15270 
-15271 
-15272 
-15273 
-15274 
-15275 
-15276 
-15277 
-15278 
-15279 
-15280 
-15281 
-15282 
-15283 
-15284 
-15285 
-15286 
-15287 
-15288 
-15289 
-15290 
-15291 
-15292 
-15293 
-15294 
-15295 
-15296 
-15297 
-15298 
-15299 
-15300 
-15301 
-15302 
-15303 
-15304 
-15305 
-15306 
-15307 
-15308 
-15309 
-15310 
-15311 
-15312 
-15313 
-15314 
-15315 
-15316 
-15317 
-15318 
-15319 
-15320 
-15321 
-15322 
-15323 
-15324 
-15325 
-15326 
-15327 
-15328 
-15329 
-15330 
-15331 
-15332 
-15333 
-15334 
-15335 
-15336 
-15337 
-15338 
-15339 
-15340 
-15341 
-15342 
-15343 
-15344 
-15345 
-15346 
-15347 
-15348 
-15349 
-15350 
-15351 
-15352 
-15353 
-15354 
-15355 
-15356 
-15357 
-15358 
-15359 
-15360 
-15361 
-15362 
-15363 
-15364 
-15365 
-15366 
-15367 
-15368 
-15369 
-15370 
-15371 
-15372 
-15373 
-15374 
-15375 
-15376 
-15377 
-15378 
-15379 
-15380 
-15381 
-15382 
-15383 
-15384 
-15385 
-15386 
-15387 
-15388 
-15389 
-15390 
-15391 
-15392 
-15393 
-15394 
-15395 
-15396 
-15397 
-15398 
-15399 
-15400 
-15401 
-15402 
-15403 
-15404 
-15405 
-15406 
-15407 
-15408 
-15409 
-15410 
-15411 
-15412 
-15413 
-15414 
-15415 
-15416 
-15417 
-15418 
-15419 
-15420 
-15421 
-15422 
-15423 
-15424 
-15425 
-15426 
-15427 
-15428 
-15429 
-15430 
-15431 
-15432 
-15433 
-15434 
-15435 
-15436 
-15437 
-15438 
-15439 
-15440 
-15441 
-15442 
-15443 
-15444 
-15445 
-15446 
-15447 
-15448 
-15449 
-15450 
-15451 
-15452 
-15453 
-15454 
-15455 
-15456 
-15457 
-15458 
-15459 
-15460 
-15461 
-15462 
-15463 
-15464 
-15465 
-15466 
-15467 
-15468 
-15469 
-15470 
-15471 
-15472 
-15473 
-15474 
-15475 
-15476 
-15477 
-15478 
-15479 
-15480 
-15481 
-15482 
-15483 
-15484 
-15485 
-15486 
-15487 
-15488 
-15489 
-15490 
-15491 
-15492 
-15493 
-15494 
-15495 
-15496 
-15497 
-15498 
-15499 
-15500 
-15501 
-15502 
-15503 
-15504 
-15505 
-15506 
-15507 
-15508 
-15509 
-15510 
-15511 
-15512 
-15513 
-15514 
-15515 
-15516 
-15517 
-15518 
-15519 
-15520 
-15521 
-15522 
-15523 
-15524 
-15525 
-15526 
-15527 
-15528 
-15529 
-15530 
-15531 
-15532 
-15533 
-15534 
-15535 
-15536 
-15537 
-15538 
-15539 
-15540 
-15541 
-15542 
-15543 
-15544 
-15545 
-15546 
-15547 
-15548 
-15549 
-15550 
-15551 
-15552 
-15553 
-15554 
-15555 
-15556 
-15557 
-15558 
-15559 
-15560 
-15561 
-15562 
-15563 
-15564 
-15565 
-15566 
-15567 
-15568 
-15569 
-15570 
-15571 
-15572 
-15573 
-15574 
-15575 
-15576 
-15577 
-15578 
-15579 
-15580 
-15581 
-15582 
-15583 
-15584 
-15585 
-15586 
-15587 
-15588 
-15589 
-15590 
-15591 
-15592 
-15593 
-15594 
-15595 
-15596 
-15597 
-15598 
-15599 
-15600 
-15601 
-15602 
-15603 
-15604 
-15605 
-15606 
-15607 
-15608 
-15609 
-15610 
-15611 
-15612 
-15613 
-15614 
-15615 
-15616 
-15617 
-15618 
-15619 
-15620 
-15621 
-15622 
-15623 
-15624 
-15625 
-15626 
-15627 
-15628 
-15629 
-15630 
-15631 
-15632 
-15633 
-15634 
-15635 
-15636 
-15637 
-15638 
-15639 
-15640 
-15641 
-15642 
-15643 
-15644 
-15645 
-15646 
-15647 
-15648 
-15649 
-15650 
-15651 
-15652 
-15653 
-15654 
-15655 
-15656 
-15657 
-15658 
-15659 
-15660 
-15661 
-15662 
-15663 
-15664 
-15665 
-15666 
-15667 
-15668 
-15669 
-15670 
-15671 
-15672 
-15673 
-15674 
-15675 
-15676 
-15677 
-15678 
-15679 
-15680 
-15681 
-15682 
-15683 
-15684 
-15685 
-15686 
-15687 
-15688 
-15689 
-15690 
-15691 
-15692 
-15693 
-15694 
-15695 
-15696 
-15697 
-15698 
-15699 
-15700 
-15701 
-15702 
-15703 
-15704 
-15705 
-15706 
-15707 
-15708 
-15709 
-15710 
-15711 
-15712 
-15713 
-15714 
-15715 
-15716 
-15717 
-15718 
-15719 
-15720 
-15721 
-15722 
-15723 
-15724 
-15725 
-15726 
-15727 
-15728 
-15729 
-15730 
-15731 
-15732 
-15733 
-15734 
-15735 
-15736 
-15737 
-15738 
-15739 
-15740 
-15741 
-15742 
-15743 
-15744 
-15745 
-15746 
-15747 
-15748 
-15749 
-15750 
-15751 
-15752 
-15753 
-15754 
-15755 
-15756 
-15757 
-15758 
-15759 
-15760 
-15761 
-15762 
-15763 
-15764 
-15765 
-15766 
-15767 
-15768 
-15769 
-15770 
-15771 
-15772 
-15773 
-15774 
-15775 
-15776 
-15777 
-15778 
-15779 
-15780 
-15781 
-15782 
-15783 
-15784 
-15785 
-15786 
-15787 
-15788 
-15789 
-15790 
-15791 
-15792 
-15793 
-15794 
-15795 
-15796 
-15797 
-15798 
-15799 
-15800 
-15801 
-15802 
-15803 
-15804 
-15805 
-15806 
-15807 
-15808 
-15809 
-15810 
-15811 
-15812 
-15813 
-15814 
-15815 
-15816 
-15817 
-15818 
-15819 
-15820 
-15821 
-15822 
-15823 
-15824 
-15825 
-15826 
-15827 
-15828 
-15829 
-15830 
-15831 
-15832 
-15833 
-15834 
-15835 
-15836 
-15837 
-15838 
-15839 
-15840 
-15841 
-15842 
-15843 
-15844 
-15845 
-15846 
-15847 
-15848 
-15849 
-15850 
-15851 
-15852 
-15853 
-15854 
-15855 
-15856 
-15857 
-15858 
-15859 
-15860 
-15861 
-15862 
-15863 
-15864 
-15865 
-15866 
-15867 
-15868 
-15869 
-15870 
-15871 
-15872 
-15873 
-15874 
-15875 
-15876 
-15877 
-15878 
-15879 
-15880 
-15881 
-15882 
-15883 
-15884 
-15885 
-15886 
-15887 
-15888 
-15889 
-15890 
-15891 
-15892 
-15893 
-15894 
-15895 
-15896 
-15897 
-15898 
-15899 
-15900 
-15901 
-15902 
-15903 
-15904 
-15905 
-15906 
-15907 
-15908 
-15909 
-15910 
-15911 
-15912 
-15913 
-15914 
-15915 
-15916 
-15917 
-15918 
-15919 
-15920 
-15921 
-15922 
-15923 
-15924 
-15925 
-15926 
-15927 
-15928 
-15929 
-15930 
-15931 
-15932 
-15933 
-15934 
-15935 
-15936 
-15937 
-15938 
-15939 
-15940 
-15941 
-15942 
-15943 
-15944 
-15945 
-15946 
-15947 
-15948 
-15949 
-15950 
-15951 
-15952 
-15953 
-15954 
-15955 
-15956 
-15957 
-15958 
-15959 
-15960 
-15961 
-15962 
-15963 
-15964 
-15965 
-15966 
-15967 
-15968 
-15969 
-15970 
-15971 
-15972 
-15973 
-15974 
-15975 
-15976 
-15977 
-15978 
-15979 
-15980 
-15981 
-15982 
-15983 
-15984 
-15985 
-15986 
-15987 
-15988 
-15989 
-15990 
-15991 
-15992 
-15993 
-15994 
-15995 
-15996 
-15997 
-15998 
-15999 
-16000 
-16001 
-16002 
-16003 
-16004 
-16005 
-16006 
-16007 
-16008 
-16009 
-16010 
-16011 
-16012 
-16013 
-16014 
-16015 
-16016 
-16017 
-16018 
-16019 
-16020 
-16021 
-16022 
-16023 
-16024 
-16025 
-16026 
-16027 
-16028 
-16029 
-16030 
-16031 
-16032 
-16033 
-16034 
-16035 
-16036 
-16037 
-16038 
-16039 
-16040 
-16041 
-16042 
-16043 
-16044 
-16045 
-16046 
-16047 
-16048 
-16049 
-16050 
-16051 
-16052 
-16053 
-16054 
-16055 
-16056 
-16057 
-16058 
-16059 
-16060 
-16061 
-16062 
-16063 
-16064 
-16065 
-16066 
-16067 
-16068 
-16069 
-16070 
-16071 
-16072 
-16073 
-16074 
-16075 
-16076 
-16077 
-16078 
-16079 
-16080 
-16081 
-16082 
-16083 
-16084 
-16085 
-16086 
-16087 
-16088 
-16089 
-16090 
-16091 
-16092 
-16093 
-16094 
-16095 
-16096 
-16097 
-16098 
-16099 
-16100 
-16101 
-16102 
-16103 
-16104 
-16105 
-16106 
-16107 
-16108 
-16109 
-16110 
-16111 
-16112 
-16113 
-16114 
-16115 
-16116 
-16117 
-16118 
-16119 
-16120 
-16121 
-16122 
-16123 
-16124 
-16125 
-16126 
-16127 
-16128 
-16129 
-16130 
-16131 
-16132 
-16133 
-16134 
-16135 
-16136 
-16137 
-16138 
-16139 
-16140 
-16141 
-16142 
-16143 
-16144 
-16145 
-16146 
-16147 
-16148 
-16149 
-16150 
-16151 
-16152 
-16153 
-16154 
-16155 
-16156 
-16157 
-16158 
-16159 
-16160 
-16161 
-16162 
-16163 
-16164 
-16165 
-16166 
-16167 
-16168 
-16169 
-16170 
-16171 
-16172 
-16173 
-16174 
-16175 
-16176 
-16177 
-16178 
-16179 
-16180 
-16181 
-16182 
-16183 
-16184 
-16185 
-16186 
-16187 
-16188 
-16189 
-16190 
-16191 
-16192 
-16193 
-16194 
-16195 
-16196 
-16197 
-16198 
-16199 
-16200 
-16201 
-16202 
-16203 
-16204 
-16205 
-16206 
-16207 
-16208 
-16209 
-16210 
-16211 
-16212 
-16213 
-16214 
-16215 
-16216 
-16217 
-16218 
-16219 
-16220 
-16221 
-16222 
-16223 
-16224 
-16225 
-16226 
-16227 
-16228 
-16229 
-16230 
-16231 
-16232 
-16233 
-16234 
-16235 
-16236 
-16237 
-16238 
-16239 
-16240 
-16241 
-16242 
-16243 
-16244 
-16245 
-16246 
-16247 
-16248 
-16249 
-16250 
-16251 
-16252 
-16253 
-16254 
-16255 
-16256 
-16257 
-16258 
-16259 
-16260 
-16261 
-16262 
-16263 
-16264 
-16265 
-16266 
-16267 
-16268 
-16269 
-16270 
-16271 
-16272 
-16273 
-16274 
-16275 
-16276 
-16277 
-16278 
-16279 
-16280 
-16281 
-16282 
-16283 
-16284 
-16285 
-16286 
-16287 
-16288 
-16289 
-16290 
-16291 
-16292 
-16293 
-16294 
-16295 
-16296 
-16297 
-16298 
-16299 
-16300 
-16301 
-16302 
-16303 
-16304 
-16305 
-16306 
-16307 
-16308 
-16309 
-16310 
-16311 
-16312 
-16313 
-16314 
-16315 
-16316 
-16317 
-16318 
-16319 
-16320 
-16321 
-16322 
-16323 
-16324 
-16325 
-16326 
-16327 
-16328 
-16329 
-16330 
-16331 
-16332 
-16333 
-16334 
-16335 
-16336 
-16337 
-16338 
-16339 
-16340 
-16341 
-16342 
-16343 
-16344 
-16345 
-16346 
-16347 
-16348 
-16349 
-16350 
-16351 
-16352 
-16353 
-16354 
-16355 
-16356 
-16357 
-16358 
-16359 
-16360 
-16361 
-16362 
-16363 
-16364 
-16365 
-16366 
-16367 
-16368 
-16369 
-16370 
-16371 
-16372 
-16373 
-16374 
-16375 
-16376 
-16377 
-16378 
-16379 
-16380 
-16381 
-16382 
-16383 
-16384 
-16385 
-16386 
-16387 
-16388 
-16389 
-16390 
-16391 
-16392 
-16393 
-16394 
-16395 
-16396 
-16397 
-16398 
-16399 
-16400 
-16401 
-16402 
-16403 
-16404 
-16405 
-16406 
-16407 
-16408 
-16409 
-16410 
-16411 
-16412 
-16413 
-16414 
-16415 
-16416 
-16417 
-16418 
-16419 
-16420 
-16421 
-16422 
-16423 
-16424 
-16425 
-16426 
-16427 
-16428 
-16429 
-16430 
-16431 
-16432 
-16433 
-16434 
-16435 
-16436 
-16437 
-16438 
-16439 
-16440 
-16441 
-16442 
-16443 
-16444 
-16445 
-16446 
-16447 
-16448 
-16449 
-16450 
-16451 
-16452 
-16453 
-16454 
-16455 
-16456 
-16457 
-16458 
-16459 
-16460 
-16461 
-16462 
-16463 
-16464 
-16465 
-16466 
-16467 
-16468 
-16469 
-16470 
-16471 
-16472 
-16473 
-16474 
-16475 
-16476 
-16477 
-16478 
-16479 
-16480 
-16481 
-16482 
-16483 
-16484 
-16485 
-16486 
-16487 
-16488 
-16489 
-16490 
-16491 
-16492 
-16493 
-16494 
-16495 
-16496 
-16497 
-16498 
-16499 
-16500 
-16501 
-16502 
-16503 
-16504 
-16505 
-16506 
-16507 
-16508 
-16509 
-16510 
-16511 
-16512 
-16513 
-16514 
-16515 
-16516 
-16517 
-16518 
-16519 
-16520 
-16521 
-16522 
-16523 
-16524 
-16525 
-16526 
-16527 
-16528 
-16529 
-16530 
-16531 
-16532 
-16533 
-16534 
-16535 
-16536 
-16537 
-16538 
-16539 
-16540 
-16541 
-16542 
-16543 
-16544 
-16545 
-16546 
-16547 
-16548 
-16549 
-16550 
-16551 
-16552 
-16553 
-16554 
-16555 
-16556 
-16557 
-16558 
-16559 
-16560 
-16561 
-16562 
-16563 
-16564 
-16565 
-16566 
-16567 
-16568 
-16569 
-16570 
-16571 
-16572 
-16573 
-16574 
-16575 
-16576 
-16577 
-16578 
-16579 
-16580 
-16581 
-16582 
-16583 
-16584 
-16585 
-16586 
-16587 
-16588 
-16589 
-16590 
-16591 
-16592 
-16593 
-16594 
-16595 
-16596 
-16597 
-16598 
-16599 
-16600 
-16601 
-16602 
-16603 
-16604 
-16605 
-16606 
-16607 
-16608 
-16609 
-16610 
-16611 
-16612 
-16613 
-16614 
-16615 
-16616 
-16617 
-16618 
-16619 
-16620 
-16621 
-16622 
-16623 
-16624 
-16625 
-16626 
-16627 
-16628 
-16629 
-16630 
-16631 
-16632 
-16633 
-16634 
-16635 
-16636 
-16637 
-16638 
-16639 
-16640 
-16641 
-16642 
-16643 
-16644 
-16645 
-16646 
-16647 
-16648 
-16649 
-16650 
-16651 
-16652 
-16653 
-16654 
-16655 
-16656 
-16657 
-16658 
-16659 
-16660 
-16661 
-16662 
-16663 
-16664 
-16665 
-16666 
-16667 
-16668 
-16669 
-16670 
-16671 
-16672 
-16673 
-16674 
-16675 
-16676 
-16677 
-16678 
-16679 
-16680 
-16681 
-16682 
-16683 
-16684 
-16685 
-16686 
-16687 
-16688 
-16689 
-16690 
-16691 
-16692 
-16693 
-16694 
-16695 
-16696 
-16697 
-16698 
-16699 
-16700 
-16701 
-16702 
-16703 
-16704 
-16705 
-16706 
-16707 
-16708 
-16709 
-16710 
-16711 
-16712 
-16713 
-16714 
-16715 
-16716 
-16717 
-16718 
-16719 
-16720 
-16721 
-16722 
-16723 
-16724 
-16725 
-16726 
-16727 
-16728 
-16729 
-16730 
-16731 
-16732 
-16733 
-16734 
-16735 
-16736 
-16737 
-16738 
-16739 
-16740 
-16741 
-16742 
-16743 
-16744 
-16745 
-16746 
-16747 
-16748 
-16749 
-16750 
-16751 
-16752 
-16753 
-16754 
-16755 
-16756 
-16757 
-16758 
-16759 
-16760 
-16761 
-16762 
-16763 
-16764 
-16765 
-16766 
-16767 
-16768 
-16769 
-16770 
-16771 
-16772 
-16773 
-16774 
-16775 
-16776 
-16777 
-16778 
-16779 
-16780 
-16781 
-16782 
-16783 
-16784 
-16785 
-16786 
-16787 
-16788 
-16789 
-16790 
-16791 
-16792 
-16793 
-16794 
-16795 
-16796 
-16797 
-16798 
-16799 
-16800 
-16801 
-16802 
-16803 
-16804 
-16805 
-16806 
-16807 
-16808 
-16809 
-16810 
-16811 
-16812 
-16813 
-16814 
-16815 
-16816 
-16817 
-16818 
-16819 
-16820 
-16821 
-16822 
-16823 
-16824 
-16825 
-16826 
-16827 
-16828 
-16829 
-16830 
-16831 
-16832 
-16833 
-16834 
-16835 
-16836 
-16837 
-16838 
-16839 
-16840 
-16841 
-16842 
-16843 
-16844 
-16845 
-16846 
-16847 
-16848 
-16849 
-16850 
-16851 
-16852 
-16853 
-16854 
-16855 
-16856 
-16857 
-16858 
-16859 
-16860 
-16861 
-16862 
-16863 
-16864 
-16865 
-16866 
-16867 
-16868 
-16869 
-16870 
-16871 
-16872 
-16873 
-16874 
-16875 
-16876 
-16877 
-16878 
-16879 
-16880 
-16881 
-16882 
-16883 
-16884 
-16885 
-16886 
-16887 
-16888 
-16889 
-16890 
-16891 
-16892 
-16893 
-16894 
-16895 
-16896 
-16897 
-16898 
-16899 
-16900 
-16901 
-16902 
-16903 
-16904 
-16905 
-16906 
-16907 
-16908 
-16909 
-16910 
-16911 
-16912 
-16913 
-16914 
-16915 
-16916 
-16917 
-16918 
-16919 
-16920 
-16921 
-16922 
-16923 
-16924 
-16925 
-16926 
-16927 
-16928 
-16929 
-16930 
-16931 
-16932 
-16933 
-16934 
-16935 
-16936 
-16937 
-16938 
-16939 
-16940 
-16941 
-16942 
-16943 
-16944 
-16945 
-16946 
-16947 
-16948 
-16949 
-16950 
-16951 
-16952 
-16953 
-16954 
-16955 
-16956 
-16957 
-16958 
-16959 
-16960 
-16961 
-16962 
-16963 
-16964 
-16965 
-16966 
-16967 
-16968 
-16969 
-16970 
-16971 
-16972 
-16973 
-16974 
-16975 
-16976 
-16977 
-16978 
-16979 
-16980 
-16981 
-16982 
-16983 
-16984 
-16985 
-16986 
-16987 
-16988 
-16989 
-16990 
-16991 
-16992 
-16993 
-16994 
-16995 
-16996 
-16997 
-16998 
-16999 
-17000 
-17001 
-17002 
-17003 
-17004 
-17005 
-17006 
-17007 
-17008 
-17009 
-17010 
-17011 
-17012 
-17013 
-17014 
-17015 
-17016 
-17017 
-17018 
-17019 
-17020 
-17021 
-17022 
-17023 
-17024 
-17025 
-17026 
-17027 
-17028 
-17029 
-17030 
-17031 
-17032 
-17033 
-17034 
-17035 
-17036 
-17037 
-17038 
-17039 
-17040 
-17041 
-17042 
-17043 
-17044 
-17045 
-17046 
-17047 
-17048 
-17049 
-17050 
-17051 
-17052 
-17053 
-17054 
-17055 
-17056 
-17057 
-17058 
-17059 
-17060 
-17061 
-17062 
-17063 
-17064 
-17065 
-17066 
-17067 
-17068 
-17069 
-17070 
-17071 
-17072 
-17073 
-17074 
-17075 
-17076 
-17077 
-17078 
-17079 
-17080 
-17081 
-17082 
-17083 
-17084 
-17085 
-17086 
-17087 
-17088 
-17089 
-17090 
-17091 
-17092 
-17093 
-17094 
-17095 
-17096 
-17097 
-17098 
-17099 
-17100 
-17101 
-17102 
-17103 
-17104 
-17105 
-17106 
-17107 
-17108 
-17109 
-17110 
-17111 
-17112 
-17113 
-17114 
-17115 
-17116 
-17117 
-17118 
-17119 
-17120 
-17121 
-17122 
-17123 
-17124 
-17125 
-17126 
-17127 
-17128 
-17129 
-17130 
-17131 
-17132 
-17133 
-17134 
-17135 
-17136 
-17137 
-17138 
-17139 
-17140 
-17141 
-17142 
-17143 
-17144 
-17145 
-17146 
-17147 
-17148 
-17149 
-17150 
-17151 
-17152 
-17153 
-17154 
-17155 
-17156 
-17157 
-17158 
-17159 
-17160 
-17161 
-17162 
-17163 
-17164 
-17165 
-17166 
-17167 
-17168 
-17169 
-17170 
-17171 
-17172 
-17173 
-17174 
-17175 
-17176 
-17177 
-17178 
-17179 
-17180 
-17181 
-17182 
-17183 
-17184 
-17185 
-17186 
-17187 
-17188 
-17189 
-17190 
-17191 
-17192 
-17193 
-17194 
-17195 
-17196 
-17197 
-17198 
-17199 
-17200 
-17201 
-17202 
-17203 
-17204 
-17205 
-17206 
-17207 
-17208 
-17209 
-17210 
-17211 
-17212 
-17213 
-17214 
-17215 
-17216 
-17217 
-17218 
-17219 
-17220 
-17221 
-17222 
-17223 
-17224 
-17225 
-17226 
-17227 
-17228 
-17229 
-17230 
-17231 
-17232 
-17233 
-17234 
-17235 
-17236 
-17237 
-17238 
-17239 
-17240 
-17241 
-17242 
-17243 
-17244 
-17245 
-17246 
-17247 
-17248 
-17249 
-17250 
-17251 
-17252 
-17253 
-17254 
-17255 
-17256 
-17257 
-17258 
-17259 
-17260 
-17261 
-17262 
-17263 
-17264 
-17265 
-17266 
-17267 
-17268 
-17269 
-17270 
-17271 
-17272 
-17273 
-17274 
-17275 
-17276 
-17277 
-17278 
-17279 
-17280 
-17281 
-17282 
-17283 
-17284 
-17285 
-17286 
-17287 
-17288 
-17289 
-17290 
-17291 
-17292 
-17293 
-17294 
-17295 
-17296 
-17297 
-17298 
-17299 
-17300 
-17301 
-17302 
-17303 
-17304 
-17305 
-17306 
-17307 
-17308 
-17309 
-17310 
-17311 
-17312 
-17313 
-17314 
-17315 
-17316 
-17317 
-17318 
-17319 
-17320 
-17321 
-17322 
-17323 
-17324 
-17325 
-17326 
-17327 
-17328 
-17329 
-17330 
-17331 
-17332 
-17333 
-17334 
-17335 
-17336 
-17337 
-17338 
-17339 
-17340 
-17341 
-17342 
-17343 
-17344 
-17345 
-17346 
-17347 
-17348 
-17349 
-17350 
-17351 
-17352 
-17353 
-17354 
-17355 
-17356 
-17357 
-17358 
-17359 
-17360 
-17361 
-17362 
-17363 
-17364 
-17365 
-17366 
-17367 
-17368 
-17369 
-17370 
-17371 
-17372 
-17373 
-17374 
-17375 
-17376 
-17377 
-17378 
-17379 
-17380 
-17381 
-17382 
-17383 
-17384 
-17385 
-17386 
-17387 
-17388 
-17389 
-17390 
-17391 
-17392 
-17393 
-17394 
-17395 
-17396 
-17397 
-17398 
-17399 
-17400 
-17401 
-17402 
-17403 
-17404 
-17405 
-17406 
-17407 
-17408 
-17409 
-17410 
-17411 
-17412 
-17413 
-17414 
-17415 
-17416 
-17417 
-17418 
-17419 
-17420 
-17421 
-17422 
-17423 
-17424 
-17425 
-17426 
-17427 
-17428 
-17429 
-17430 
-17431 
-17432 
-17433 
-17434 
-17435 
-17436 
-17437 
-17438 
-17439 
-17440 
-17441 
-17442 
-17443 
-17444 
-17445 
-17446 
-17447 
-17448 
-17449 
-17450 
-17451 
-17452 
-17453 
-17454 
-17455 
-17456 
-17457 
-17458 
-17459 
-17460 
-17461 
-17462 
-17463 
-17464 
-17465 
-17466 
-17467 
-17468 
-17469 
-17470 
-17471 
-17472 
-17473 
-17474 
-17475 
-17476 
-17477 
-17478 
-17479 
-17480 
-17481 
-17482 
-17483 
-17484 
-17485 
-17486 
-17487 
-17488 
-17489 
-17490 
-17491 
-17492 
-17493 
-17494 
-17495 
-17496 
-17497 
-17498 
-17499 
-17500 
-17501 
-17502 
-17503 
-17504 
-17505 
-17506 
-17507 
-17508 
-17509 
-17510 
-17511 
-17512 
-17513 
-17514 
-17515 
-17516 
-17517 
-17518 
-17519 
-17520 
-17521 
-17522 
-17523 
-17524 
-17525 
-17526 
-17527 
-17528 
-17529 
-17530 
-17531 
-17532 
-17533 
-17534 
-17535 
-17536 
-17537 
-17538 
-17539 
-17540 
-17541 
-17542 
-17543 
-17544 
-17545 
-17546 
-17547 
-17548 
-17549 
-17550 
-17551 
-17552 
-17553 
-17554 
-17555 
-17556 
-17557 
-17558 
-17559 
-17560 
-17561 
-17562 
-17563 
-17564 
-17565 
-17566 
-17567 
-17568 
-17569 
-17570 
-17571 
-17572 
-17573 
-17574 
-17575 
-17576 
-17577 
-17578 
-17579 
-17580 
-17581 
-17582 
-17583 
-17584 
-17585 
-17586 
-17587 
-17588 
-17589 
-17590 
-17591 
-17592 
-17593 
-17594 
-17595 
-17596 
-17597 
-17598 
-17599 
-17600 
-17601 
-17602 
-17603 
-17604 
-17605 
-17606 
-17607 
-17608 
-17609 
-17610 
-17611 
-17612 
-17613 
-17614 
-17615 
-17616 
-17617 
-17618 
-17619 
-17620 
-17621 
-17622 
-17623 
-17624 
-17625 
-17626 
-17627 
-17628 
-17629 
-17630 
-17631 
-17632 
-17633 
-17634 
-17635 
-17636 
-17637 
-17638 
-17639 
-17640 
-17641 
-17642 
-17643 
-17644 
-17645 
-17646 
-17647 
-17648 
-17649 
-17650 
-17651 
-17652 
-17653 
-17654 
-17655 
-17656 
-17657 
-17658 
-17659 
-17660 
-17661 
-17662 
-17663 
-17664 
-17665 
-17666 
-17667 
-17668 
-17669 
-17670 
-17671 
-17672 
-17673 
-17674 
-17675 
-17676 
-17677 
-17678 
-17679 
-17680 
-17681 
-17682 
-17683 
-17684 
-17685 
-17686 
-17687 
-17688 
-17689 
-17690 
-17691 
-17692 
-17693 
-17694 
-17695 
-17696 
-17697 
-17698 
-17699 
-17700 
-17701 
-17702 
-17703 
-17704 
-17705 
-17706 
-17707 
-17708 
-17709 
-17710 
-17711 
-17712 
-17713 
-17714 
-17715 
-17716 
-17717 
-17718 
-17719 
-17720 
-17721 
-17722 
-17723 
-17724 
-17725 
-17726 
-17727 
-17728 
-17729 
-17730 
-17731 
-17732 
-17733 
-17734 
-17735 
-17736 
-17737 
-17738 
-17739 
-17740 
-17741 
-17742 
-17743 
-17744 
-17745 
-17746 
-17747 
-17748 
-17749 
-17750 
-17751 
-17752 
-17753 
-17754 
-17755 
-17756 
-17757 
-17758 
-17759 
-17760 
-17761 
-17762 
-17763 
-17764 
-17765 
-17766 
-17767 
-17768 
-17769 
-17770 
-17771 
-17772 
-17773 
-17774 
-17775 
-17776 
-17777 
-17778 
-17779 
-17780 
-17781 
-17782 
-17783 
-17784 
-17785 
-17786 
-17787 
-17788 
-17789 
-17790 
-17791 
-17792 
-17793 
-17794 
-17795 
-17796 
-17797 
-17798 
-17799 
-17800 
-17801 
-17802 
-17803 
-17804 
-17805 
-17806 
-17807 
-17808 
-17809 
-17810 
-17811 
-17812 
-17813 
-17814 
-17815 
-17816 
-17817 
-17818 
-17819 
-17820 
-17821 
-17822 
-17823 
-17824 
-17825 
-17826 
-17827 
-17828 
-17829 
-17830 
-17831 
-17832 
-17833 
-17834 
-17835 
-17836 
-17837 
-17838 
-17839 
-17840 
-17841 
-17842 
-17843 
-17844 
-17845 
-17846 
-17847 
-17848 
-17849 
-17850 
-17851 
-17852 
-17853 
-17854 
-17855 
-17856 
-17857 
-17858 
-17859 
-17860 
-17861 
-17862 
-17863 
-17864 
-17865 
-17866 
-17867 
-17868 
-17869 
-17870 
-17871 
-17872 
-17873 
-17874 
-17875 
-17876 
-17877 
-17878 
-17879 
-17880 
-17881 
-17882 
-17883 
-17884 
-17885 
-17886 
-17887 
-17888 
-17889 
-17890 
-17891 
-17892 
-17893 
-17894 
-17895 
-17896 
-17897 
-17898 
-17899 
-17900 
-17901 
-17902 
-17903 
-17904 
-17905 
-17906 
-17907 
-17908 
-17909 
-17910 
-17911 
-17912 
-17913 
-17914 
-17915 
-17916 
-17917 
-17918 
-17919 
-17920 
-17921 
-17922 
-17923 
-17924 
-17925 
-17926 
-17927 
-17928 
-17929 
-17930 
-17931 
-17932 
-17933 
-17934 
-17935 
-17936 
-17937 
-17938 
-17939 
-17940 
-17941 
-17942 
-17943 
-17944 
-17945 
-17946 
-17947 
-17948 
-17949 
-17950 
-17951 
-17952 
-17953 
-17954 
-17955 
-17956 
-17957 
-17958 
-17959 
-17960 
-17961 
-17962 
-17963 
-17964 
-17965 
-17966 
-17967 
-17968 
-17969 
-17970 
-17971 
-17972 
-17973 
-17974 
-17975 
-17976 
-17977 
-17978 
-17979 
-17980 
-17981 
-17982 
-17983 
-17984 
-17985 
-17986 
-17987 
-17988 
-17989 
-17990 
-17991 
-17992 
-17993 
-17994 
-17995 
-17996 
-17997 
-17998 
-17999 
-18000 
-18001 
-18002 
-18003 
-18004 
-18005 
-18006 
-18007 
-18008 
-18009 
-18010 
-18011 
-18012 
-18013 
-18014 
-18015 
-18016 
-18017 
-18018 
-18019 
-18020 
-18021 
-18022 
-18023 
-18024 
-18025 
-18026 
-18027 
-18028 
-18029 
-18030 
-18031 
-18032 
-18033 
-18034 
-18035 
-18036 
-18037 
-18038 
-18039 
-18040 
-18041 
-18042 
-18043 
-18044 
-18045 
-18046 
-18047 
-18048 
-18049 
-18050 
-18051 
-18052 
-18053 
-18054 
-18055 
-18056 
-18057 
-18058 
-18059 
-18060 
-18061 
-18062 
-18063 
-18064 
-18065 
-18066 
-18067 
-18068 
-18069 
-18070 
-18071 
-18072 
-18073 
-18074 
-18075 
-18076 
-18077 
-18078 
-18079 
-18080 
-18081 
-18082 
-18083 
-18084 
-18085 
-18086 
-18087 
-18088 
-18089 
-18090 
-18091 
-18092 
-18093 
-18094 
-18095 
-18096 
-18097 
-18098 
-18099 
-18100 
-18101 
-18102 
-18103 
-18104 
-18105 
-18106 
-18107 
-18108 
-18109 
-18110 
-18111 
-18112 
-18113 
-18114 
-18115 
-18116 
-18117 
-18118 
-18119 
-18120 
-18121 
-18122 
-18123 
-18124 
-18125 
-18126 
-18127 
-18128 
-18129 
-18130 
-18131 
-18132 
-18133 
-18134 
-18135 
-18136 
-18137 
-18138 
-18139 
-18140 
-18141 
-18142 
-18143 
-18144 
-18145 
-18146 
-18147 
-18148 
-18149 
-18150 
-18151 
-18152 
-18153 
-18154 
-18155 
-18156 
-18157 
-18158 
-18159 
-18160 
-18161 
-18162 
-18163 
-18164 
-18165 
-18166 
-18167 
-18168 
-18169 
-18170 
-18171 
-18172 
-18173 
-18174 
-18175 
-18176 
-18177 
-18178 
-18179 
-18180 
-18181 
-18182 
-18183 
-18184 
-18185 
-18186 
-18187 
-18188 
-18189 
-18190 
-18191 
-18192 
-18193 
-18194 
-18195 
-18196 
-18197 
-18198 
-18199 
-18200 
-18201 
-18202 
-18203 
-18204 
-18205 
-18206 
-18207 
-18208 
-18209 
-18210 
-18211 
-18212 
-18213 
-18214 
-18215 
-18216 
-18217 
-18218 
-18219 
-18220 
-18221 
-18222 
-18223 
-18224 
-18225 
-18226 
-18227 
-18228 
-18229 
-18230 
-18231 
-18232 
-18233 
-18234 
-18235 
-18236 
-18237 
-18238 
-18239 
-18240 
-18241 
-18242 
-18243 
-18244 
-18245 
-18246 
-18247 
-18248 
-18249 
-18250 
-18251 
-18252 
-18253 
-18254 
-18255 
-18256 
-18257 
-18258 
-18259 
-18260 
-18261 
-18262 
-18263 
-18264 
-18265 
-18266 
-18267 
-18268 
-18269 
-18270 
-18271 
-18272 
-18273 
-18274 
-18275 
-18276 
-18277 
-18278 
-18279 
-18280 
-18281 
-18282 
-18283 
-18284 
-18285 
-18286 
-18287 
-18288 
-18289 
-18290 
-18291 
-18292 
-18293 
-18294 
-18295 
-18296 
-18297 
-18298 
-18299 
-18300 
-18301 
-18302 
-18303 
-18304 
-18305 
-18306 
-18307 
-18308 
-18309 
-18310 
-18311 
-18312 
-18313 
-18314 
-18315 
-18316 
-18317 
-18318 
-18319 
-18320 
-18321 
-18322 
-18323 
-18324 
-18325 
-18326 
-18327 
-18328 
-18329 
-18330 
-18331 
-18332 
-18333 
-18334 
-18335 
-18336 
-18337 
-18338 
-18339 
-18340 
-18341 
-18342 
-18343 
-18344 
-18345 
-18346 
-18347 
-18348 
-18349 
-18350 
-18351 
-18352 
-18353 
-18354 
-18355 
-18356 
-18357 
-18358 
-18359 
-18360 
-18361 
-18362 
-18363 
-18364 
-18365 
-18366 
-18367 
-18368 
-18369 
-18370 
-18371 
-18372 
-18373 
-18374 
-18375 
-18376 
-18377 
-18378 
-18379 
-18380 
-18381 
-18382 
-18383 
-18384 
-18385 
-18386 
-18387 
-18388 
-18389 
-18390 
-18391 
-18392 
-18393 
-18394 
-18395 
-18396 
-18397 
-18398 
-18399 
-18400 
-18401 
-18402 
-18403 
-18404 
-18405 
-18406 
-18407 
-18408 
-18409 
-18410 
-18411 
-18412 
-18413 
-18414 
-18415 
-18416 
-18417 
-18418 
-18419 
-18420 
-18421 
-18422 
-18423 
-18424 
-18425 
-18426 
-18427 
-18428 
-18429 
-18430 
-18431 
-18432 
-18433 
-18434 
-18435 
-18436 
-18437 
-18438 
-18439 
-18440 
-18441 
-18442 
-18443 
-18444 
-18445 
-18446 
-18447 
-18448 
-18449 
-18450 
-18451 
-18452 
-18453 
-18454 
-18455 
-18456 
-18457 
-18458 
-18459 
-18460 
-18461 
-18462 
-18463 
-18464 
-18465 
-18466 
-18467 
-18468 
-18469 
-18470 
-18471 
-18472 
-18473 
-18474 
-18475 
-18476 
-18477 
-18478 
-18479 
-18480 
-18481 
-18482 
-18483 
-18484 
-18485 
-18486 
-18487 
-18488 
-18489 
-18490 
-18491 
-18492 
-18493 
-18494 
-18495 
-18496 
-18497 
-18498 
-18499 
-18500 
-18501 
-18502 
-18503 
-18504 
-18505 
-18506 
-18507 
-18508 
-18509 
-18510 
-18511 
-18512 
-18513 
-18514 
-18515 
-18516 
-18517 
-18518 
-18519 
-18520 
-18521 
-18522 
-18523 
-18524 
-18525 
-18526 
-18527 
-18528 
-18529 
-18530 
-18531 
-18532 
-18533 
-18534 
-18535 
-18536 
-18537 
-18538 
-18539 
-18540 
-18541 
-18542 
-18543 
-18544 
-18545 
-18546 
-18547 
-18548 
-18549 
-18550 
-18551 
-18552 
-18553 
-18554 
-18555 
-18556 
-18557 
-18558 
-18559 
-18560 
-18561 
-18562 
-18563 
-18564 
-18565 
-18566 
-18567 
-18568 
-18569 
-18570 
-18571 
-18572 
-18573 
-18574 
-18575 
-18576 
-18577 
-18578 
-18579 
-18580 
-18581 
-18582 
-18583 
-18584 
-18585 
-18586 
-18587 
-18588 
-18589 
-18590 
-18591 
-18592 
-18593 
-18594 
-18595 
-18596 
-18597 
-18598 
-18599 
-18600 
-18601 
-18602 
-18603 
-18604 
-18605 
-18606 
-18607 
-18608 
-18609 
-18610 
-18611 
-18612 
-18613 
-18614 
-18615 
-18616 
-18617 
-18618 
-18619 
-18620 
-18621 
-18622 
-18623 
-18624 
-18625 
-18626 
-18627 
-18628 
-18629 
-18630 
-18631 
-18632 
-18633 
-18634 
-18635 
-18636 
-18637 
-18638 
-18639 
-18640 
-18641 
-18642 
-18643 
-18644 
-18645 
-18646 
-18647 
-18648 
-18649 
-18650 
-18651 
-18652 
-18653 
-18654 
-18655 
-18656 
-18657 
-18658 
-18659 
-18660 
-18661 
-18662 
-18663 
-18664 
-18665 
-18666 
-18667 
-18668 
-18669 
-18670 
-18671 
-18672 
-18673 
-18674 
-18675 
-18676 
-18677 
-18678 
-18679 
-18680 
-18681 
-18682 
-18683 
-18684 
-18685 
-18686 
-18687 
-18688 
-18689 
-18690 
-18691 
-18692 
-18693 
-18694 
-18695 
-18696 
-18697 
-18698 
-18699 
-18700 
-18701 
-18702 
-18703 
-18704 
-18705 
-18706 
-18707 
-18708 
-18709 
-18710 
-18711 
-18712 
-18713 
-18714 
-18715 
-18716 
-18717 
-18718 
-18719 
-18720 
-18721 
-18722 
-18723 
-18724 
-18725 
-18726 
-18727 
-18728 
-18729 
-18730 
-18731 
-18732 
-18733 
-18734 
-18735 
-18736 
-18737 
-18738 
-18739 
-18740 
-18741 
-18742 
-18743 
-18744 
-18745 
-18746 
-18747 
-18748 
-18749 
-18750 
-18751 
-18752 
-18753 
-18754 
-18755 
-18756 
-18757 
-18758 
-18759 
-18760 
-18761 
-18762 
-18763 
-18764 
-18765 
-18766 
-18767 
-18768 
-18769 
-18770 
-18771 
-18772 
-18773 
-18774 
-18775 
-18776 
-18777 
-18778 
-18779 
-18780 
-18781 
-18782 
-18783 
-18784 
-18785 
-18786 
-18787 
-18788 
-18789 
-18790 
-18791 
-18792 
-18793 
-18794 
-18795 
-18796 
-18797 
-18798 
-18799 
-18800 
-18801 
-18802 
-18803 
-18804 
-18805 
-18806 
-18807 
-18808 
-18809 
-18810 
-18811 
-18812 
-18813 
-18814 
-18815 
-18816 
-18817 
-18818 
-18819 
-18820 
-18821 
-18822 
-18823 
-18824 
-18825 
-18826 
-18827 
-18828 
-18829 
-18830 
-18831 
-18832 
-18833 
-18834 
-18835 
-18836 
-18837 
-18838 
-18839 
-18840 
-18841 
-18842 
-18843 
-18844 
-18845 
-18846 
-18847 
-18848 
-18849 
-18850 
-18851 
-18852 
-18853 
-18854 
-18855 
-18856 
-18857 
-18858 
-18859 
-18860 
-18861 
-18862 
-18863 
-18864 
-18865 
-18866 
-18867 
-18868 
-18869 
-18870 
-18871 
-18872 
-18873 
-18874 
-18875 
-18876 
-18877 
-18878 
-18879 
-18880 
-18881 
-18882 
-18883 
-18884 
-18885 
-18886 
-18887 
-18888 
-18889 
-18890 
-18891 
-18892 
-18893 
-18894 
-18895 
-18896 
-18897 
-18898 
-18899 
-18900 
-18901 
-18902 
-18903 
-18904 
-18905 
-18906 
-18907 
-18908 
-18909 
-18910 
-18911 
-18912 
-18913 
-18914 
-18915 
-18916 
-18917 
-18918 
-18919 
-18920 
-18921 
-18922 
-18923 
-18924 
-18925 
-18926 
-18927 
-18928 
-18929 
-18930 
-18931 
-18932 
-18933 
-18934 
-18935 
-18936 
-18937 
-18938 
-18939 
-18940 
-18941 
-18942 
-18943 
-18944 
-18945 
-18946 
-18947 
-18948 
-18949 
-18950 
-18951 
-18952 
-18953 
-18954 
-18955 
-18956 
-18957 
-18958 
-18959 
-18960 
-18961 
-18962 
-18963 
-18964 
-18965 
-18966 
-18967 
-18968 
-18969 
-18970 
-18971 
-18972 
-18973 
-18974 
-18975 
-18976 
-18977 
-18978 
-18979 
-18980 
-18981 
-18982 
-18983 
-18984 
-18985 
-18986 
-18987 
-18988 
-18989 
-18990 
-18991 
-18992 
-18993 
-18994 
-18995 
-18996 
-18997 
-18998 
-18999 
-19000 
-19001 
-19002 
-19003 
-19004 
-19005 
-19006 
-19007 
-19008 
-19009 
-19010 
-19011 
-19012 
-19013 
-19014 
-19015 
-19016 
-19017 
-19018 
-19019 
-19020 
-19021 
-19022 
-19023 
-19024 
-19025 
-19026 
-19027 
-19028 
-19029 
-19030 
-19031 
-19032 
-19033 
-19034 
-19035 
-19036 
-19037 
-19038 
-19039 
-19040 
-19041 
-19042 
-19043 
-19044 
-19045 
-19046 
-19047 
-19048 
-19049 
-19050 
-19051 
-19052 
-19053 
-19054 
-19055 
-19056 
-19057 
-19058 
-19059 
-19060 
-19061 
-19062 
-19063 
-19064 
-19065 
-19066 
-19067 
-19068 
-19069 
-19070 
-19071 
-19072 
-19073 
-19074 
-19075 
-19076 
-19077 
-19078 
-19079 
-19080 
-19081 
-19082 
-19083 
-19084 
-19085 
-19086 
-19087 
-19088 
-19089 
-19090 
-19091 
-19092 
-19093 
-19094 
-19095 
-19096 
-19097 
-19098 
-19099 
-19100 
-19101 
-19102 
-19103 
-19104 
-19105 
-19106 
-19107 
-19108 
-19109 
-19110 
-19111 
-19112 
-19113 
-19114 
-19115 
-19116 
-19117 
-19118 
-19119 
-19120 
-19121 
-19122 
-19123 
-19124 
-19125 
-19126 
-19127 
-19128 
-19129 
-19130 
-19131 
-19132 
-19133 
-19134 
-19135 
-19136 
-19137 
-19138 
-19139 
-19140 
-19141 
-19142 
-19143 
-19144 
-19145 
-19146 
-19147 
-19148 
-19149 
-19150 
-19151 
-19152 
-19153 
-19154 
-19155 
-19156 
-19157 
-19158 
-19159 
-19160 
-19161 
-19162 
-19163 
-19164 
-19165 
-19166 
-19167 
-19168 
-19169 
-19170 
-19171 
-19172 
-19173 
-19174 
-19175 
-19176 
-19177 
-19178 
-19179 
-19180 
-19181 
-19182 
-19183 
-19184 
-19185 
-19186 
-19187 
-19188 
-19189 
-19190 
-19191 
-19192 
-19193 
-19194 
-19195 
-19196 
-19197 
-19198 
-19199 
-19200 
-19201 
-19202 
-19203 
-19204 
-19205 
-19206 
-19207 
-19208 
-19209 
-19210 
-19211 
-19212 
-19213 
-19214 
-19215 
-19216 
-19217 
-19218 
-19219 
-19220 
-19221 
-19222 
-19223 
-19224 
-19225 
-19226 
-19227 
-19228 
-19229 
-19230 
-19231 
-19232 
-19233 
-19234 
-19235 
-19236 
-19237 
-19238 
-19239 
-19240 
-19241 
-19242 
-19243 
-19244 
-19245 
-19246 
-19247 
-19248 
-19249 
-19250 
-19251 
-19252 
-19253 
-19254 
-19255 
-19256 
-19257 
-19258 
-19259 
-19260 
-19261 
-19262 
-19263 
-19264 
-19265 
-19266 
-19267 
-19268 
-19269 
-19270 
-19271 
-19272 
-19273 
-19274 
-19275 
-19276 
-19277 
-19278 
-19279 
-19280 
-19281 
-19282 
-19283 
-19284 
-19285 
-19286 
-19287 
-19288 
-19289 
-19290 
-19291 
-19292 
-19293 
-19294 
-19295 
-19296 
-19297 
-19298 
-19299 
-19300 
-19301 
-19302 
-19303 
-19304 
-19305 
-19306 
-19307 
-19308 
-19309 
-19310 
-19311 
-19312 
-19313 
-19314 
-19315 
-19316 
-19317 
-19318 
-19319 
-19320 
-19321 
-19322 
-19323 
-19324 
-19325 
-19326 
-19327 
-19328 
-19329 
-19330 
-19331 
-19332 
-19333 
-19334 
-19335 
-19336 
-19337 
-19338 
-19339 
-19340 
-19341 
-19342 
-19343 
-19344 
-19345 
-19346 
-19347 
-19348 
-19349 
-19350 
-19351 
-19352 
-19353 
-19354 
-19355 
-19356 
-19357 
-19358 
-19359 
-19360 
-19361 
-19362 
-19363 
-19364 
-19365 
-19366 
-19367 
-19368 
-19369 
-19370 
-19371 
-19372 
-19373 
-19374 
-19375 
-19376 
-19377 
-19378 
-19379 
-19380 
-19381 
-19382 
-19383 
-19384 
-19385 
-19386 
-19387 
-19388 
-19389 
-19390 
-19391 
-19392 
-19393 
-19394 
-19395 
-19396 
-19397 
-19398 
-19399 
-19400 
-19401 
-19402 
-19403 
-19404 
-19405 
-19406 
-19407 
-19408 
-19409 
-19410 
-19411 
-19412 
-19413 
-19414 
-19415 
-19416 
-19417 
-19418 
-19419 
-19420 
-19421 
-19422 
-19423 
-19424 
-19425 
-19426 
-19427 
-19428 
-19429 
-19430 
-19431 
-19432 
-19433 
-19434 
-19435 
-19436 
-19437 
-19438 
-19439 
-19440 
-19441 
-19442 
-19443 
-19444 
-19445 
-19446 
-19447 
-19448 
-19449 
-19450 
-19451 
-19452 
-19453 
-19454 
-19455 
-19456 
-19457 
-19458 
-19459 
-19460 
-19461 
-19462 
-19463 
-19464 
-19465 
-19466 
-19467 
-19468 
-19469 
-19470 
-19471 
-19472 
-19473 
-19474 
-19475 
-19476 
-19477 
-19478 
-19479 
-19480 
-19481 
-19482 
-19483 
-19484 
-19485 
-19486 
-19487 
-19488 
-19489 
-19490 
-19491 
-19492 
-19493 
-19494 
-19495 
-19496 
-19497 
-19498 
-19499 
-19500 
-19501 
-19502 
-19503 
-19504 
-19505 
-19506 
-19507 
-19508 
-19509 
-19510 
-19511 
-19512 
-19513 
-19514 
-19515 
-19516 
-19517 
-19518 
-19519 
-19520 
-19521 
-19522 
-19523 
-19524 
-19525 
-19526 
-19527 
-19528 
-19529 
-19530 
-19531 
-19532 
-19533 
-19534 
-19535 
-19536 
-19537 
-19538 
-19539 
-19540 
-19541 
-19542 
-19543 
-19544 
-19545 
-19546 
-19547 
-19548 
-19549 
-19550 
-19551 
-19552 
-19553 
-19554 
-19555 
-19556 
-19557 
-19558 
-19559 
-19560 
-19561 
-19562 
-19563 
-19564 
-19565 
-19566 
-19567 
-19568 
-19569 
-19570 
-19571 
-19572 
-19573 
-19574 
-19575 
-19576 
-19577 
-19578 
-19579 
-19580 
-19581 
-19582 
-19583 
-19584 
-19585 
-19586 
-19587 
-19588 
-19589 
-19590 
-19591 
-19592 
-19593 
-19594 
-19595 
-19596 
-19597 
-19598 
-19599 
-19600 
-19601 
-19602 
-19603 
-19604 
-19605 
-19606 
-19607 
-19608 
-19609 
-19610 
-19611 
-19612 
-19613 
-19614 
-19615 
-19616 
-19617 
-19618 
-19619 
-19620 
-19621 
-19622 
-19623 
-19624 
-19625 
-19626 
-19627 
-19628 
-19629 
-19630 
-19631 
-19632 
-19633 
-19634 
-19635 
-19636 
-19637 
-19638 
-19639 
-19640 
-19641 
-19642 
-19643 
-19644 
-19645 
-19646 
-19647 
-19648 
-19649 
-19650 
-19651 
-19652 
-19653 
-19654 
-19655 
-19656 
-19657 
-19658 
-19659 
-19660 
-19661 
-19662 
-19663 
-19664 
-19665 
-19666 
-19667 
-19668 
-19669 
-19670 
-19671 
-19672 
-19673 
-19674 
-19675 
-19676 
-19677 
-19678 
-19679 
-19680 
-19681 
-19682 
-19683 
-19684 
-19685 
-19686 
-19687 
-19688 
-19689 
-19690 
-19691 
-19692 
-19693 
-19694 
-19695 
-19696 
-19697 
-19698 
-19699 
-19700 
-19701 
-19702 
-19703 
-19704 
-19705 
-19706 
-19707 
-19708 
-19709 
-19710 
-19711 
-19712 
-19713 
-19714 
-19715 
-19716 
-19717 
-19718 
-19719 
-19720 
-19721 
-19722 
-19723 
-19724 
-19725 
-19726 
-19727 
-19728 
-19729 
-19730 
-19731 
-19732 
-19733 
-19734 
-19735 
-19736 
-19737 
-19738 
-19739 
-19740 
-19741 
-19742 
-19743 
-19744 
-19745 
-19746 
-19747 
-19748 
-19749 
-19750 
-19751 
-19752 
-19753 
-19754 
-19755 
-19756 
-19757 
-19758 
-19759 
-19760 
-19761 
-19762 
-19763 
-19764 
-19765 
-19766 
-19767 
-19768 
-19769 
-19770 
-19771 
-19772 
-19773 
-19774 
-19775 
-19776 
-19777 
-19778 
-19779 
-19780 
-19781 
-19782 
-19783 
-19784 
-19785 
-19786 
-19787 
-19788 
-19789 
-19790 
-19791 
-19792 
-19793 
-19794 
-19795 
-19796 
-19797 
-19798 
-19799 
-19800 
-19801 
-19802 
-19803 
-19804 
-19805 
-19806 
-19807 
-19808 
-19809 
-19810 
-19811 
-19812 
-19813 
-19814 
-19815 
-19816 
-19817 
-19818 
-19819 
-19820 
-19821 
-19822 
-19823 
-19824 
-19825 
-19826 
-19827 
-19828 
-19829 
-19830 
-19831 
-19832 
-19833 
-19834 
-19835 
-19836 
-19837 
-19838 
-19839 
-19840 
-19841 
-19842 
-19843 
-19844 
-19845 
-19846 
-19847 
-19848 
-19849 
-19850 
-19851 
-19852 
-19853 
-19854 
-19855 
-19856 
-19857 
-19858 
-19859 
-19860 
-19861 
-19862 
-19863 
-19864 
-19865 
-19866 
-19867 
-19868 
-19869 
-19870 
-19871 
-19872 
-19873 
-19874 
-19875 
-19876 
-19877 
-19878 
-19879 
-19880 
-19881 
-19882 
-19883 
-19884 
-19885 
-19886 
-19887 
-19888 
-19889 
-19890 
-19891 
-19892 
-19893 
-19894 
-19895 
-19896 
-19897 
-19898 
-19899 
-19900 
-19901 
-19902 
-19903 
-19904 
-19905 
-19906 
-19907 
-19908 
-19909 
-19910 
-19911 
-19912 
-19913 
-19914 
-19915 
-19916 
-19917 
-19918 
-19919 
-19920 
-19921 
-19922 
-19923 
-19924 
-19925 
-19926 
-19927 
-19928 
-19929 
-19930 
-19931 
-19932 
-19933 
-19934 
-19935 
-19936 
-19937 
-19938 
-19939 
-19940 
-19941 
-19942 
-19943 
-19944 
-19945 
-19946 
-19947 
-19948 
-19949 
-19950 
-19951 
-19952 
-19953 
-19954 
-19955 
-19956 
-19957 
-19958 
-19959 
-19960 
-19961 
-19962 
-19963 
-19964 
-19965 
-19966 
-19967 
-19968 
-19969 
-19970 
-19971 
-19972 
-19973 
-19974 
-19975 
-19976 
-19977 
-19978 
-19979 
-19980 
-19981 
-19982 
-19983 
-19984 
-19985 
-19986 
-19987 
-19988 
-19989 
-19990 
-19991 
-19992 
-19993 
-19994 
-19995 
-19996 
-19997 
-19998 
-19999 
-20000 
-20001 
-20002 
-20003 
-20004 
-20005 
-20006 
-20007 
-20008 
-20009 
-20010 
-20011 
-20012 
-20013 
-20014 
-20015 
-20016 
-20017 
-20018 
-20019 
-20020 
-20021 
-20022 
-20023 
-20024 
-20025 
-20026 
-20027 
-20028 
-20029 
-20030 
-20031 
-20032 
-20033 
-20034 
-20035 
-20036 
-20037 
-20038 
-20039 
-20040 
-20041 
-20042 
-20043 
-20044 
-20045 
-20046 
-20047 
-20048 
-20049 
-20050 
-20051 
-20052 
-20053 
-20054 
-20055 
-20056 
-20057 
-20058 
-20059 
-20060 
-20061 
-20062 
-20063 
-20064 
-20065 
-20066 
-20067 
-20068 
-20069 
-20070 
-20071 
-20072 
-20073 
-20074 
-20075 
-20076 
-20077 
-20078 
-20079 
-20080 
-20081 
-20082 
-20083 
-20084 
-20085 
-20086 
-20087 
-20088 
-20089 
-20090 
-20091 
-20092 
-20093 
-20094 
-20095 
-20096 
-20097 
-20098 
-20099 
-20100 
-20101 
-20102 
-20103 
-20104 
-20105 
-20106 
-20107 
-20108 
-20109 
-20110 
-20111 
-20112 
-20113 
-20114 
-20115 
-20116 
-20117 
-20118 
-20119 
-20120 
-20121 
-20122 
-20123 
-20124 
-20125 
-20126 
-20127 
-20128 
-20129 
-20130 
-20131 
-20132 
-20133 
-20134 
-20135 
-20136 
-20137 
-20138 
-20139 
-20140 
-20141 
-20142 
-20143 
-20144 
-20145 
-20146 
-20147 
-20148 
-20149 
-20150 
-20151 
-20152 
-20153 
-20154 
-20155 
-20156 
-20157 
-20158 
-20159 
-20160 
-20161 
-20162 
-20163 
-20164 
-20165 
-20166 
-20167 
-20168 
-20169 
-20170 
-20171 
-20172 
-20173 
-20174 
-20175 
-20176 
-20177 
-20178 
-20179 
-20180 
-20181 
-20182 
-20183 
-20184 
-20185 
-20186 
-20187 
-20188 
-20189 
-20190 
-20191 
-20192 
-20193 
-20194 
-20195 
-20196 
-20197 
-20198 
-20199 
-20200 
-20201 
-20202 
-20203 
-20204 
-20205 
-20206 
-20207 
-20208 
-20209 
-20210 
-20211 
-20212 
-20213 
-20214 
-20215 
-20216 
-20217 
-20218 
-20219 
-20220 
-20221 
-20222 
-20223 
-20224 
-20225 
-20226 
-20227 
-20228 
-20229 
-20230 
-20231 
-20232 
-20233 
-20234 
-20235 
-20236 
-20237 
-20238 
-20239 
-20240 
-20241 
-20242 
-20243 
-20244 
-20245 
-20246 
-20247 
-20248 
-20249 
-20250 
-20251 
-20252 
-20253 
-20254 
-20255 
-20256 
-20257 
-20258 
-20259 
-20260 
-20261 
-20262 
-20263 
-20264 
-20265 
-20266 
-20267 
-20268 
-20269 
-20270 
-20271 
-20272 
-20273 
-20274 
-20275 
-20276 
-20277 
-20278 
-20279 
-20280 
-20281 
-20282 
-20283 
-20284 
-20285 
-20286 
-20287 
-20288 
-20289 
-20290 
-20291 
-20292 
-20293 
-20294 
-20295 
-20296 
-20297 
-20298 
-20299 
-20300 
-20301 
-20302 
-20303 
-20304 
-20305 
-20306 
-20307 
-20308 
-20309 
-20310 
-20311 
-20312 
-20313 
-20314 
-20315 
-20316 
-20317 
-20318 
-20319 
-20320 
-20321 
-20322 
-20323 
-20324 
-20325 
-20326 
-20327 
-20328 
-20329 
-20330 
-20331 
-20332 
-20333 
-20334 
-20335 
-20336 
-20337 
-20338 
-20339 
-20340 
-20341 
-20342 
-20343 
-20344 
-20345 
-20346 
-20347 
-20348 
-20349 
-20350 
-20351 
-20352 
-20353 
-20354 
-20355 
-20356 
-20357 
-20358 
-20359 
-20360 
-20361 
-20362 
-20363 
-20364 
-20365 
-20366 
-20367 
-20368 
-20369 
-20370 
-20371 
-20372 
-20373 
-20374 
-20375 
-20376 
-20377 
-20378 
-20379 
-20380 
-20381 
-20382 
-20383 
-20384 
-20385 
-20386 
-20387 
-20388 
-20389 
-20390 
-20391 
-20392 
-20393 
-20394 
-20395 
-20396 
-20397 
-20398 
-20399 
-20400 
-20401 
-20402 
-20403 
-20404 
-20405 
-20406 
-20407 
-20408 
-20409 
-20410 
-20411 
-20412 
-20413 
-20414 
-20415 
-20416 
-20417 
-20418 
-20419 
-20420 
-20421 
-20422 
-20423 
-20424 
-20425 
-20426 
-20427 
-20428 
-20429 
-20430 
-20431 
-20432 
-20433 
-20434 
-20435 
-20436 
-20437 
-20438 
-20439 
-20440 
-20441 
-20442 
-20443 
-20444 
-20445 
-20446 
-20447 
-20448 
-20449 
-20450 
-20451 
-20452 
-20453 
-20454 
-20455 
-20456 
-20457 
-20458 
-20459 
-20460 
-20461 
-20462 
-20463 
-20464 
-20465 
-20466 
-20467 
-20468 
-20469 
-20470 
-20471 
-20472 
-20473 
-20474 
-20475 
-20476 
-20477 
-20478 
-20479 
-20480 
-20481 
-20482 
-20483 
-20484 
-20485 
-20486 
-20487 
-20488 
-20489 
-20490 
-20491 
-20492 
-20493 
-20494 
-20495 
-20496 
-20497 
-20498 
-20499 
-20500 
-20501 
-20502 
-20503 
-20504 
-20505 
-20506 
-20507 
-20508 
-20509 
-20510 
-20511 
-20512 
-20513 
-20514 
-20515 
-20516 
-20517 
-20518 
-20519 
-20520 
-20521 
-20522 
-20523 
-20524 
-20525 
-20526 
-20527 
-20528 
-20529 
-20530 
-20531 
-20532 
-20533 
-20534 
-20535 
-20536 
-20537 
-20538 
-20539 
-20540 
-20541 
-20542 
-20543 
-20544 
-20545 
-20546 
-20547 
-20548 
-20549 
-20550 
-20551 
-20552 
-20553 
-20554 
-20555 
-20556 
-20557 
-20558 
-20559 
-20560 
-20561 
-20562 
-20563 
-20564 
-20565 
-20566 
-20567 
-20568 
-20569 
-20570 
-20571 
-20572 
-20573 
-20574 
-20575 
-20576 
-20577 
-20578 
-20579 
-20580 
-20581 
-20582 
-20583 
-20584 
-20585 
-20586 
-20587 
-20588 
-20589 
-20590 
-20591 
-20592 
-20593 
-20594 
-20595 
-20596 
-20597 
-20598 
-20599 
-20600 
-20601 
-20602 
-20603 
-20604 
-20605 
-20606 
-20607 
-20608 
-20609 
-20610 
-20611 
-20612 
-20613 
-20614 
-20615 
-20616 
-20617 
-20618 
-20619 
-20620 
-20621 
-20622 
-20623 
-20624 
-20625 
-20626 
-20627 
-20628 
-20629 
-20630 
-20631 
-20632 
-20633 
-20634 
-20635 
-20636 
-20637 
-20638 
-20639 
-20640 
-20641 
-20642 
-20643 
-20644 
-20645 
-20646 
-20647 
-20648 
-20649 
-20650 
-20651 
-20652 
-20653 
-20654 
-20655 
-20656 
-20657 
-20658 
-20659 
-20660 
-20661 
-20662 
-20663 
-20664 
-20665 
-20666 
-20667 
-20668 
-20669 
-20670 
-20671 
-20672 
-20673 
-20674 
-20675 
-20676 
-20677 
-20678 
-20679 
-20680 
-20681 
-20682 
-20683 
-20684 
-20685 
-20686 
-20687 
-20688 
-20689 
-20690 
-20691 
-20692 
-20693 
-20694 
-20695 
-20696 
-20697 
-20698 
-20699 
-20700 
-20701 
-20702 
-20703 
-20704 
-20705 
-20706 
-20707 
-20708 
-20709 
-20710 
-20711 
-20712 
-20713 
-20714 
-20715 
-20716 
-20717 
-20718 
-20719 
-20720 
-20721 
-20722 
-20723 
-20724 
-20725 
-20726 
-20727 
-20728 
-20729 
-20730 
-20731 
-20732 
-20733 
-20734 
-20735 
-20736 
-20737 
-20738 
-20739 
-20740 
-20741 
-20742 
-20743 
-20744 
-20745 
-20746 
-20747 
-20748 
-20749 
-20750 
-20751 
-20752 
-20753 
-20754 
-20755 
-20756 
-20757 
-20758 
-20759 
-20760 
-20761 
-20762 
-20763 
-20764 
-20765 
-20766 
-20767 
-20768 
-20769 
-20770 
-20771 
-20772 
-20773 
-20774 
-20775 
-20776 
-20777 
-20778 
-20779 
-20780 
-20781 
-20782 
-20783 
-20784 
-20785 
-20786 
-20787 
-20788 
-20789 
-20790 
-20791 
-20792 
-20793 
-20794 
-20795 
-20796 
-20797 
-20798 
-20799 
-20800 
-20801 
-20802 
-20803 
-20804 
-20805 
-20806 
-20807 
-20808 
-20809 
-20810 
-20811 
-20812 
-20813 
-20814 
-20815 
-20816 
-20817 
-20818 
-20819 
-20820 
-20821 
-20822 
-20823 
-20824 
-20825 
-20826 
-20827 
-20828 
-20829 
-20830 
-20831 
-20832 
-20833 
-20834 
-20835 
-20836 
-20837 
-20838 
-20839 
-20840 
-20841 
-20842 
-20843 
-20844 
-20845 
-20846 
-20847 
-20848 
-20849 
-20850 
-20851 
-20852 
-20853 
-20854 
-20855 
-20856 
-20857 
-20858 
-20859 
-20860 
-20861 
-20862 
-20863 
-20864 
-20865 
-20866 
-20867 
-20868 
-20869 
-20870 
-20871 
-20872 
-20873 
-20874 
-20875 
-20876 
-20877 
-20878 
-20879 
-20880 
-20881 
-20882 
-20883 
-20884 
-20885 
-20886 
-20887 
-20888 
-20889 
-20890 
-20891 
-20892 
-20893 
-20894 
-20895 
-20896 
-20897 
-20898 
-20899 
-20900 
-20901 
-20902 
-20903 
-20904 
-20905 
-20906 
-20907 
-20908 
-20909 
-20910 
-20911 
-20912 
-20913 
-20914 
-20915 
-20916 
-20917 
-20918 
-20919 
-20920 
-20921 
-20922 
-20923 
-20924 
-20925 
-20926 
-20927 
-20928 
-20929 
-20930 
-20931 
-20932 
-20933 
-20934 
-20935 
-20936 
-20937 
-20938 
-20939 
-20940 
-20941 
-20942 
-20943 
-20944 
-20945 
-20946 
-20947 
-20948 
-20949 
-20950 
-20951 
-20952 
-20953 
-20954 
-20955 
-20956 
-20957 
-20958 
-20959 
-20960 
-20961 
-20962 
-20963 
-20964 
-20965 
-20966 
-20967 
-20968 
-20969 
-20970 
-20971 
-20972 
-20973 
-20974 
-20975 
-20976 
-20977 
-20978 
-20979 
-20980 
-20981 
-20982 
-20983 
-20984 
-20985 
-20986 
-20987 
-20988 
-20989 
-20990 
-20991 
-20992 
-20993 
-20994 
-20995 
-20996 
-20997 
-20998 
-20999 
-21000 
-21001 
-21002 
-21003 
-21004 
-21005 
-21006 
-21007 
-21008 
-21009 
-21010 
-21011 
-21012 
-21013 
-21014 
-21015 
-21016 
-21017 
-21018 
-21019 
-21020 
-21021 
-21022 
-21023 
-21024 
-21025 
-21026 
-21027 
-21028 
-21029 
-21030 
-21031 
-21032 
-21033 
-21034 
-21035 
-21036 
-21037 
-21038 
-21039 
-21040 
-21041 
-21042 
-21043 
-21044 
-21045 
-21046 
-21047 
-21048 
-21049 
-21050 
-21051 
-21052 
-21053 
-21054 
-21055 
-21056 
-21057 
-21058 
-21059 
-21060 
-21061 
-21062 
-21063 
-21064 
-21065 
-21066 
-21067 
-21068 
-21069 
-21070 
-21071 
-21072 
-21073 
-21074 
-21075 
-21076 
-21077 
-21078 
-21079 
-21080 
-21081 
-21082 
-21083 
-21084 
-21085 
-21086 
-21087 
-21088 
-21089 
-21090 
-21091 
-21092 
-21093 
-21094 
-21095 
-21096 
-21097 
-21098 
-21099 
-21100 
-21101 
-21102 
-21103 
-21104 
-21105 
-21106 
-21107 
-21108 
-21109 
-21110 
-21111 
-21112 
-21113 
-21114 
-21115 
-21116 
-21117 
-21118 
-21119 
-21120 
-21121 
-21122 
-21123 
-21124 
-21125 
-21126 
-21127 
-21128 
-21129 
-21130 
-21131 
-21132 
-21133 
-21134 
-21135 
-21136 
-21137 
-21138 
-21139 
-21140 
-21141 
-21142 
-21143 
-21144 
-21145 
-21146 
-21147 
-21148 
-21149 
-21150 
-21151 
-21152 
-21153 
-21154 
-21155 
-21156 
-21157 
-21158 
-21159 
-21160 
-21161 
-21162 
-21163 
-21164 
-21165 
-21166 
-21167 
-21168 
-21169 
-21170 
-21171 
-21172 
-21173 
-21174 
-21175 
-21176 
-21177 
-21178 
-21179 
-21180 
-21181 
-21182 
-21183 
-21184 
-21185 
-21186 
-21187 
-21188 
-21189 
-21190 
-21191 
-21192 
-21193 
-21194 
-21195 
-21196 
-21197 
-21198 
-21199 
-21200 
-21201 
-21202 
-21203 
-21204 
-21205 
-21206 
-21207 
-21208 
-21209 
-21210 
-21211 
-21212 
-21213 
-21214 
-21215 
-21216 
-21217 
-21218 
-21219 
-21220 
-21221 
-21222 
-21223 
-21224 
-21225 
-21226 
-21227 
-21228 
-21229 
-21230 
-21231 
-21232 
-21233 
-21234 
-21235 
-21236 
-21237 
-21238 
-21239 
-21240 
-21241 
-21242 
-21243 
-21244 
-21245 
-21246 
-21247 
-21248 
-21249 
-21250 
-21251 
-21252 
-21253 
-21254 
-21255 
-21256 
-21257 
-21258 
-21259 
-21260 
-21261 
-21262 
-21263 
-21264 
-21265 
-21266 
-21267 
-21268 
-21269 
-21270 
-21271 
-21272 
-21273 
-21274 
-21275 
-21276 
-21277 
-21278 
-21279 
-21280 
-21281 
-21282 
-21283 
-21284 
-21285 
-21286 
-21287 
-21288 
-21289 
-21290 
-21291 
-21292 
-21293 
-21294 
-21295 
-21296 
-21297 
-21298 
-21299 
-21300 
-21301 
-21302 
-21303 
-21304 
-21305 
-21306 
-21307 
-21308 
-21309 
-21310 
-21311 
-21312 
-21313 
-21314 
-21315 
-21316 
-21317 
-21318 
-21319 
-21320 
-21321 
-21322 
-21323 
-21324 
-21325 
-21326 
-21327 
-21328 
-21329 
-21330 
-21331 
-21332 
-21333 
-21334 
-21335 
-21336 
-21337 
-21338 
-21339 
-21340 
-21341 
-21342 
-21343 
-21344 
-21345 
-21346 
-21347 
-21348 
-21349 
-21350 
-21351 
-21352 
-21353 
-21354 
-21355 
-21356 
-21357 
-21358 
-21359 
-21360 
-21361 
-21362 
-21363 
-21364 
-21365 
-21366 
-21367 
-21368 
-21369 
-21370 
-21371 
-21372 
-21373 
-21374 
-21375 
-21376 
-21377 
-21378 
-21379 
-21380 
-21381 
-21382 
-21383 
-21384 
-21385 
-21386 
-21387 
-21388 
-21389 
-21390 
-21391 
-21392 
-21393 
-21394 
-21395 
-21396 
-21397 
-21398 
-21399 
-21400 
-21401 
-21402 
-21403 
-21404 
-21405 
-21406 
-21407 
-21408 
-21409 
-21410 
-21411 
-21412 
-21413 
-21414 
-21415 
-21416 
-21417 
-21418 
-21419 
-21420 
-21421 
-21422 
-21423 
-21424 
-21425 
-21426 
-21427 
-21428 
-21429 
-21430 
-21431 
-21432 
-21433 
-21434 
-21435 
-21436 
-21437 
-21438 
-21439 
-21440 
-21441 
-21442 
-21443 
-21444 
-21445 
-21446 
-21447 
-21448 
-21449 
-21450 
-21451 
-21452 
-21453 
-21454 
-21455 
-21456 
-21457 
-21458 
-21459 
-21460 
-21461 
-21462 
-21463 
-21464 
-21465 
-21466 
-21467 
-21468 
-21469 
-21470 
-21471 
-21472 
-21473 
-21474 
-21475 
-21476 
-21477 
-21478 
-21479 
-21480 
-21481 
-21482 
-21483 
-21484 
-21485 
-21486 
-21487 
-21488 
-21489 
-21490 
-21491 
-21492 
-21493 
-21494 
-21495 
-21496 
-21497 
-21498 
-21499 
-21500 
-21501 
-21502 
-21503 
-21504 
-21505 
-21506 
-21507 
-21508 
-21509 
-21510 
-21511 
-21512 
-21513 
-21514 
-21515 
-21516 
-21517 
-21518 
-21519 
-21520 
-21521 
-21522 
-21523 
-21524 
-21525 
-21526 
-21527 
-21528 
-21529 
-21530 
-21531 
-21532 
-21533 
-21534 
-21535 
-21536 
-21537 
-21538 
-21539 
-21540 
-21541 
-21542 
-21543 
-21544 
-21545 
-21546 
-21547 
-21548 
-21549 
-21550 
-21551 
-21552 
-21553 
-21554 
-21555 
-21556 
-21557 
-21558 
-21559 
-21560 
-21561 
-21562 
-21563 
-21564 
-21565 
-21566 
-21567 
-21568 
-21569 
-21570 
-21571 
-21572 
-21573 
-21574 
-21575 
-21576 
-21577 
-21578 
-21579 
-21580 
-21581 
-21582 
-21583 
-21584 
-21585 
-21586 
-21587 
-21588 
-21589 
-21590 
-21591 
-21592 
-21593 
-21594 
-21595 
-21596 
-21597 
-21598 
-21599 
-21600 
-21601 
-21602 
-21603 
-21604 
-21605 
-21606 
-21607 
-21608 
-21609 
-21610 
-21611 
-21612 
-21613 
-21614 
-21615 
-21616 
-21617 
-21618 
-21619 
-21620 
-21621 
-21622 
-21623 
-21624 
-21625 
-21626 
-21627 
-21628 
-21629 
-21630 
-21631 
-21632 
-21633 
-21634 
-21635 
-21636 
-21637 
-21638 
-21639 
-21640 
-21641 
-21642 
-21643 
-21644 
-21645 
-21646 
-21647 
-21648 
-21649 
-21650 
-21651 
-21652 
-21653 
-21654 
-21655 
-21656 
-21657 
-21658 
-21659 
-21660 
-21661 
-21662 
-21663 
-21664 
-21665 
-21666 
-21667 
-21668 
-21669 
-21670 
-21671 
-21672 
-21673 
-21674 
-21675 
-21676 
-21677 
-21678 
-21679 
-21680 
-21681 
-21682 
-21683 
-21684 
-21685 
-21686 
-21687 
-21688 
-21689 
-21690 
-21691 
-21692 
-21693 
-21694 
-21695 
-21696 
-21697 
-21698 
-21699 
-21700 
-21701 
-21702 
-21703 
-21704 
-21705 
-21706 
-21707 
-21708 
-21709 
-21710 
-21711 
-21712 
-21713 
-21714 
-21715 
-21716 
-21717 
-21718 
-21719 
-21720 
-21721 
-21722 
-21723 
-21724 
-21725 
-21726 
-21727 
-21728 
-21729 
-21730 
-21731 
-21732 
-21733 
-21734 
-21735 
-21736 
-21737 
-21738 
-21739 
-21740 
-21741 
-21742 
-21743 
-21744 
-21745 
-21746 
-21747 
-21748 
-21749 
-21750 
-21751 
-21752 
-21753 
-21754 
-21755 
-21756 
-21757 
-21758 
-21759 
-21760 
-21761 
-21762 
-21763 
-21764 
-21765 
-21766 
-21767 
-21768 
-21769 
-21770 
-21771 
-21772 
-21773 
-21774 
-21775 
-21776 
-21777 
-21778 
-21779 
-21780 
-21781 
-21782 
-21783 
-21784 
-21785 
-21786 
-21787 
-21788 
-21789 
-21790 
-21791 
-21792 
-21793 
-21794 
-21795 
-21796 
-21797 
-21798 
-21799 
-21800 
-21801 
-21802 
-21803 
-21804 
-21805 
-21806 
-21807 
-21808 
-21809 
-21810 
-21811 
-21812 
-21813 
-21814 
-21815 
-21816 
-21817 
-21818 
-21819 
-21820 
-21821 
-21822 
-21823 
-21824 
-21825 
-21826 
-21827 
-21828 
-21829 
-21830 
-21831 
-21832 
-21833 
-21834 
-21835 
-21836 
-21837 
-21838 
-21839 
-21840 
-21841 
-21842 
-21843 
-21844 
-21845 
-21846 
-21847 
-21848 
-21849 
-21850 
-21851 
-21852 
-21853 
-21854 
-21855 
-21856 
-21857 
-21858 
-21859 
-21860 
-21861 
-21862 
-21863 
-21864 
-21865 
-21866 
-21867 
-21868 
-21869 
-21870 
-21871 
-21872 
-21873 
-21874 
-21875 
-21876 
-21877 
-21878 
-21879 
-21880 
-21881 
-21882 
-21883 
-21884 
-21885 
-21886 
-21887 
-21888 
-21889 
-21890 
-21891 
-21892 
-21893 
-21894 
-21895 
-21896 
-21897 
-21898 
-21899 
-21900 
-21901 
-21902 
-21903 
-21904 
-21905 
-21906 
-21907 
-21908 
-21909 
-21910 
-21911 
-21912 
-21913 
-21914 
-21915 
-21916 
-21917 
-21918 
-21919 
-21920 
-21921 
-21922 
-21923 
-21924 
-21925 
-21926 
-21927 
-21928 
-21929 
-21930 
-21931 
-21932 
-21933 
-21934 
-21935 
-21936 
-21937 
-21938 
-21939 
-21940 
-21941 
-21942 
-21943 
-21944 
-21945 
-21946 
-21947 
-21948 
-21949 
-21950 
-21951 
-21952 
-21953 
-21954 
-21955 
-21956 
-21957 
-21958 
-21959 
-21960 
-21961 
-21962 
-21963 
-21964 
-21965 
-21966 
-21967 
-21968 
-21969 
-21970 
-21971 
-21972 
-21973 
-21974 
-21975 
-21976 
-21977 
-21978 
-21979 
-21980 
-21981 
-21982 
-21983 
-21984 
-21985 
-21986 
-21987 
-21988 
-21989 
-21990 
-21991 
-21992 
-21993 
-21994 
-21995 
-21996 
-21997 
-21998 
-21999 
-22000 
-22001 
-22002 
-22003 
-22004 
-22005 
-22006 
-22007 
-22008 
-22009 
-22010 
-22011 
-22012 
-22013 
-22014 
-22015 
-22016 
-22017 
-22018 
-22019 
-22020 
-22021 
-22022 
-22023 
-22024 
-22025 
-22026 
-22027 
-22028 
-22029 
-22030 
-22031 
-22032 
-22033 
-22034 
-22035 
-22036 
-22037 
-22038 
-22039 
-22040 
-22041 
-22042 
-22043 
-22044 
-22045 
-22046 
-22047 
-22048 
-22049 
-22050 
-22051 
-22052 
-22053 
-22054 
-22055 
-22056 
-22057 
-22058 
-22059 
-22060 
-22061 
-22062 
-22063 
-22064 
-22065 
-22066 
-22067 
-22068 
-22069 
-22070 
-22071 
-22072 
-22073 
-22074 
-22075 
-22076 
-22077 
-22078 
-22079 
-22080 
-22081 
-22082 
-22083 
-22084 
-22085 
-22086 
-22087 
-22088 
-22089 
-22090 
-22091 
-22092 
-22093 
-22094 
-22095 
-22096 
-22097 
-22098 
-22099 
-22100 
-22101 
-22102 
-22103 
-22104 
-22105 
-22106 
-22107 
-22108 
-22109 
-22110 
-22111 
-22112 
-22113 
-22114 
-22115 
-22116 
-22117 
-22118 
-22119 
-22120 
-22121 
-22122 
-22123 
-22124 
-22125 
-22126 
-22127 
-22128 
-22129 
-22130 
-22131 
-22132 
-22133 
-22134 
-22135 
-22136 
-22137 
-22138 
-22139 
-22140 
-22141 
-22142 
-22143 
-22144 
-22145 
-22146 
-22147 
-22148 
-22149 
-22150 
-22151 
-22152 
-22153 
-22154 
-22155 
-22156 
-22157 
-22158 
-22159 
-22160 
-22161 
-22162 
-22163 
-22164 
-22165 
-22166 
-22167 
-22168 
-22169 
-22170 
-22171 
-22172 
-22173 
-22174 
-22175 
-22176 
-22177 
-22178 
-22179 
-22180 
-22181 
-22182 
-22183 
-22184 
-22185 
-22186 
-22187 
-22188 
-22189 
-22190 
-22191 
-22192 
-22193 
-22194 
-22195 
-22196 
-22197 
-22198 
-22199 
-22200 
-22201 
-22202 
-22203 
-22204 
-22205 
-22206 
-22207 
-22208 
-22209 
-22210 
-22211 
-22212 
-22213 
-22214 
-22215 
-22216 
-22217 
-22218 
-22219 
-22220 
-22221 
-22222 
-22223 
-22224 
-22225 
-22226 
-22227 
-22228 
-22229 
-22230 
-22231 
-22232 
-22233 
-22234 
-22235 
-22236 
-22237 
-22238 
-22239 
-22240 
-22241 
-22242 
-22243 
-22244 
-22245 
-22246 
-22247 
-22248 
-22249 
-22250 
-22251 
-22252 
-22253 
-22254 
-22255 
-22256 
-22257 
-22258 
-22259 
-22260 
-22261 
-22262 
-22263 
-22264 
-22265 
-22266 
-22267 
-22268 
-22269 
-22270 
-22271 
-22272 
-22273 
-22274 
-22275 
-22276 
-22277 
-22278 
-22279 
-22280 
-22281 
-22282 
-22283 
-22284 
-22285 
-22286 
-22287 
-22288 
-22289 
-22290 
-22291 
-22292 
-22293 
-22294 
-22295 
-22296 
-22297 
-22298 
-22299 
-22300 
-22301 
-22302 
-22303 
-22304 
-22305 
-22306 
-22307 
-22308 
-22309 
-22310 
-22311 
-22312 
-22313 
-22314 
-22315 
-22316 
-22317 
-22318 
-22319 
-22320 
-22321 
-22322 
-22323 
-22324 
-22325 
-22326 
-22327 
-22328 
-22329 
-22330 
-22331 
-22332 
-22333 
-22334 
-22335 
-22336 
-22337 
-22338 
-22339 
-22340 
-22341 
-22342 
-22343 
-22344 
-22345 
-22346 
-22347 
-22348 
-22349 
-22350 
-22351 
-22352 
-22353 
-22354 
-22355 
-22356 
-22357 
-22358 
-22359 
-22360 
-22361 
-22362 
-22363 
-22364 
-22365 
-22366 
-22367 
-22368 
-22369 
-22370 
-22371 
-22372 
-22373 
-22374 
-22375 
-22376 
-22377 
-22378 
-22379 
-22380 
-22381 
-22382 
-22383 
-22384 
-22385 
-22386 
-22387 
-22388 
-22389 
-22390 
-22391 
-22392 
-22393 
-22394 
-22395 
-22396 
-22397 
-22398 
-22399 
-22400 
-22401 
-22402 
-22403 
-22404 
-22405 
-22406 
-22407 
-22408 
-22409 
-22410 
-22411 
-22412 
-22413 
-22414 
-22415 
-22416 
-22417 
-22418 
-22419 
-22420 
-22421 
-22422 
-22423 
-22424 
-22425 
-22426 
-22427 
-22428 
-22429 
-22430 
-22431 
-22432 
-22433 
-22434 
-22435 
-22436 
-22437 
-22438 
-22439 
-22440 
-22441 
-22442 
-22443 
-22444 
-22445 
-22446 
-22447 
-22448 
-22449 
-22450 
-22451 
-22452 
-22453 
-22454 
-22455 
-22456 
-22457 
-22458 
-22459 
-22460 
-22461 
-22462 
-22463 
-22464 
-22465 
-22466 
-22467 
-22468 
-22469 
-22470 
-22471 
-22472 
-22473 
-22474 
-22475 
-22476 
-22477 
-22478 
-22479 
-22480 
-22481 
-22482 
-22483 
-22484 
-22485 
-22486 
-22487 
-22488 
-22489 
-22490 
-22491 
-22492 
-22493 
-22494 
-22495 
-22496 
-22497 
-22498 
-22499 
-22500 
-22501 
-22502 
-22503 
-22504 
-22505 
-22506 
-22507 
-22508 
-22509 
-22510 
-22511 
-22512 
-22513 
-22514 
-22515 
-22516 
-22517 
-22518 
-22519 
-22520 
-22521 
-22522 
-22523 
-22524 
-22525 
-22526 
-22527 
-22528 
-22529 
-22530 
-22531 
-22532 
-22533 
-22534 
-22535 
-22536 
-22537 
-22538 
-22539 
-22540 
-22541 
-22542 
-22543 
-22544 
-22545 
-22546 
-22547 
-22548 
-22549 
-22550 
-22551 
-22552 
-22553 
-22554 
-22555 
-22556 
-22557 
-22558 
-22559 
-22560 
-22561 
-22562 
-22563 
-22564 
-22565 
-22566 
-22567 
-22568 
-22569 
-22570 
-22571 
-22572 
-22573 
-22574 
-22575 
-22576 
-22577 
-22578 
-22579 
-22580 
-22581 
-22582 
-22583 
-22584 
-22585 
-22586 
-22587 
-22588 
-22589 
-22590 
-22591 
-22592 
-22593 
-22594 
-22595 
-22596 
-22597 
-22598 
-22599 
-22600 
-22601 
-22602 
-22603 
-22604 
-22605 
-22606 
-22607 
-22608 
-22609 
-22610 
-22611 
-22612 
-22613 
-22614 
-22615 
-22616 
-22617 
-22618 
-22619 
-22620 
-22621 
-22622 
-22623 
-22624 
-22625 
-22626 
-22627 
-22628 
-22629 
-22630 
-22631 
-22632 
-22633 
-22634 
-22635 
-22636 
-22637 
-22638 
-22639 
-22640 
-22641 
-22642 
-22643 
-22644 
-22645 
-22646 
-22647 
-22648 
-22649 
-22650 
-22651 
-22652 
-22653 
-22654 
-22655 
-22656 
-22657 
-22658 
-22659 
-22660 
-22661 
-22662 
-22663 
-22664 
-22665 
-22666 
-22667 
-22668 
-22669 
-22670 
-22671 
-22672 
-22673 
-22674 
-22675 
-22676 
-22677 
-22678 
-22679 
-22680 
-22681 
-22682 
-22683 
-22684 
-22685 
-22686 
-22687 
-22688 
-22689 
-22690 
-22691 
-22692 
-22693 
-22694 
-22695 
-22696 
-22697 
-22698 
-22699 
-22700 
-22701 
-22702 
-22703 
-22704 
-22705 
-22706 
-22707 
-22708 
-22709 
-22710 
-22711 
-22712 
-22713 
-22714 
-22715 
-22716 
-22717 
-22718 
-22719 
-22720 
-22721 
-22722 
-22723 
-22724 
-22725 
-22726 
-22727 
-22728 
-22729 
-22730 
-22731 
-22732 
-22733 
-22734 
-22735 
-22736 
-22737 
-22738 
-22739 
-22740 
-22741 
-22742 
-22743 
-22744 
-22745 
-22746 
-22747 
-22748 
-22749 
-22750 
-22751 
-22752 
-22753 
-22754 
-22755 
-22756 
-22757 
-22758 
-22759 
-22760 
-22761 
-22762 
-22763 
-22764 
-22765 
-22766 
-22767 
-22768 
-22769 
-22770 
-22771 
-22772 
-22773 
-22774 
-22775 
-22776 
-22777 
-22778 
-22779 
-22780 
-22781 
-22782 
-22783 
-22784 
-22785 
-22786 
-22787 
-22788 
-22789 
-22790 
-22791 
-22792 
-22793 
-22794 
-22795 
-22796 
-22797 
-22798 
-22799 
-22800 
-22801 
-22802 
-22803 
-22804 
-22805 
-22806 
-22807 
-22808 
-22809 
-22810 
-22811 
-22812 
-22813 
-22814 
-22815 
-22816 
-22817 
-22818 
-22819 
-22820 
-22821 
-22822 
-22823 
-22824 
-22825 
-22826 
-22827 
-22828 
-22829 
-22830 
-22831 
-22832 
-22833 
-22834 
-22835 
-22836 
-22837 
-22838 
-22839 
-22840 
-22841 
-22842 
-22843 
-22844 
-22845 
-22846 
-22847 
-22848 
-22849 
-22850 
-22851 
-22852 
-22853 
-22854 
-22855 
-22856 
-22857 
-22858 
-22859 
-22860 
-22861 
-22862 
-22863 
-22864 
-22865 
-22866 
-22867 
-22868 
-22869 
-22870 
-22871 
-22872 
-22873 
-22874 
-22875 
-22876 
-22877 
-22878 
-22879 
-22880 
-22881 
-22882 
-22883 
-22884 
-22885 
-22886 
-22887 
-22888 
-22889 
-22890 
-22891 
-22892 
-22893 
-22894 
-22895 
-22896 
-22897 
-22898 
-22899 
-22900 
-22901 
-22902 
-22903 
-22904 
-22905 
-22906 
-22907 
-22908 
-22909 
-22910 
-22911 
-22912 
-22913 
-22914 
-22915 
-22916 
-22917 
-22918 
-22919 
-22920 
-22921 
-22922 
-22923 
-22924 
-22925 
-22926 
-22927 
-22928 
-22929 
-22930 
-22931 
-22932 
-22933 
-22934 
-22935 
-22936 
-22937 
-22938 
-22939 
-22940 
-22941 
-22942 
-22943 
-22944 
-22945 
-22946 
-22947 
-22948 
-22949 
-22950 
-22951 
-22952 
-22953 
-22954 
-22955 
-22956 
-22957 
-22958 
-22959 
-22960 
-22961 
-22962 
-22963 
-22964 
-22965 
-22966 
-22967 
-22968 
-22969 
-22970 
-22971 
-22972 
-22973 
-22974 
-22975 
-22976 
-22977 
-22978 
-22979 
-22980 
-22981 
-22982 
-22983 
-22984 
-22985 
-22986 
-22987 
-22988 
-22989 
-22990 
-22991 
-22992 
-22993 
-22994 
-22995 
-22996 
-22997 
-22998 
-22999 
-23000 
-23001 
-23002 
-23003 
-23004 
-23005 
-23006 
-23007 
-23008 
-23009 
-23010 
-23011 
-23012 
-23013 
-23014 
-23015 
-23016 
-23017 
-23018 
-23019 
-23020 
-23021 
-23022 
-23023 
-23024 
-23025 
-23026 
-23027 
-23028 
-23029 
-23030 
-23031 
-23032 
-23033 
-23034 
-23035 
-23036 
-23037 
-23038 
-23039 
-23040 
-23041 
-23042 
-23043 
-23044 
-23045 
-23046 
-23047 
-23048 
-23049 
-23050 
-23051 
-23052 
-23053 
-23054 
-23055 
-23056 
-23057 
-23058 
-23059 
-23060 
-23061 
-23062 
-23063 
-23064 
-23065 
-23066 
-23067 
-23068 
-23069 
-23070 
-23071 
-23072 
-23073 
-23074 
-23075 
-23076 
-23077 
-23078 
-23079 
-23080 
-23081 
-23082 
-23083 
-23084 
-23085 
-23086 
-23087 
-23088 
-23089 
-23090 
-23091 
-23092 
-23093 
-23094 
-23095 
-23096 
-23097 
-23098 
-23099 
-23100 
-23101 
-23102 
-23103 
-23104 
-23105 
-23106 
-23107 
-23108 
-23109 
-23110 
-23111 
-23112 
-23113 
-23114 
-23115 
-23116 
-23117 
-23118 
-23119 
-23120 
-23121 
-23122 
-23123 
-23124 
-23125 
-23126 
-23127 
-23128 
-23129 
-23130 
-23131 
-23132 
-23133 
-23134 
-23135 
-23136 
-23137 
-23138 
-23139 
-23140 
-23141 
-23142 
-23143 
-23144 
-23145 
-23146 
-23147 
-23148 
-23149 
-23150 
-23151 
-23152 
-23153 
-23154 
-23155 
-23156 
-23157 
-23158 
-23159 
-23160 
-23161 
-23162 
-23163 
-23164 
-23165 
-23166 
-23167 
-23168 
-23169 
-23170 
-23171 
-23172 
-23173 
-23174 
-23175 
-23176 
-23177 
-23178 
-23179 
-23180 
-23181 
-23182 
-23183 
-23184 
-23185 
-23186 
-23187 
-23188 
-23189 
-23190 
-23191 
-23192 
-23193 
-23194 
-23195 
-23196 
-23197 
-23198 
-23199 
-23200 
-23201 
-23202 
-23203 
-23204 
-23205 
-23206 
-23207 
-23208 
-23209 
-23210 
-23211 
-23212 
-23213 
-23214 
-23215 
-23216 
-23217 
-23218 
-23219 
-23220 
-23221 
-23222 
-23223 
-23224 
-23225 
-23226 
-23227 
-23228 
-23229 
-23230 
-23231 
-23232 
-23233 
-23234 
-23235 
-23236 
-23237 
-23238 
-23239 
-23240 
-23241 
-23242 
-23243 
-23244 
-23245 
-23246 
-23247 
-23248 
-23249 
-23250 
-23251 
-23252 
-23253 
-23254 
-23255 
-23256 
-23257 
-23258 
-23259 
-23260 
-23261 
-23262 
-23263 
-23264 
-23265 
-23266 
-23267 
-23268 
-23269 
-23270 
-23271 
-23272 
-23273 
-23274 
-23275 
-23276 
-23277 
-23278 
-23279 
-23280 
-23281 
-23282 
-23283 
-23284 
-23285 
-23286 
-23287 
-23288 
-23289 
-23290 
-23291 
-23292 
-23293 
-23294 
-23295 
-23296 
-23297 
-23298 
-23299 
-23300 
-23301 
-23302 
-23303 
-23304 
-23305 
-23306 
-23307 
-23308 
-23309 
-23310 
-23311 
-23312 
-23313 
-23314 
-23315 
-23316 
-23317 
-23318 
-23319 
-23320 
-23321 
-23322 
-23323 
-23324 
-23325 
-23326 
-23327 
-23328 
-23329 
-23330 
-23331 
-23332 
-23333 
-23334 
-23335 
-23336 
-23337 
-23338 
-23339 
-23340 
-23341 
-23342 
-23343 
-23344 
-23345 
-23346 
-23347 
-23348 
-23349 
-23350 
-23351 
-23352 
-23353 
-23354 
-23355 
-23356 
-23357 
-23358 
-23359 
-23360 
-23361 
-23362 
-23363 
-23364 
-23365 
-23366 
-23367 
-23368 
-23369 
-23370 
-23371 
-23372 
-23373 
-23374 
-23375 
-23376 
-23377 
-23378 
-23379 
-23380 
-23381 
-23382 
-23383 
-23384 
-23385 
-23386 
-23387 
-23388 
-23389 
-23390 
-23391 
-23392 
-23393 
-23394 
-23395 
-23396 
-23397 
-23398 
-23399 
-23400 
-23401 
-23402 
-23403 
-23404 
-23405 
-23406 
-23407 
-23408 
-23409 
-23410 
-23411 
-23412 
-23413 
-23414 
-23415 
-23416 
-23417 
-23418 
-23419 
-23420 
-23421 
-23422 
-23423 
-23424 
-23425 
-23426 
-23427 
-23428 
-23429 
-23430 
-23431 
-23432 
-23433 
-23434 
-23435 
-23436 
-23437 
-23438 
-23439 
-23440 
-23441 
-23442 
-23443 
-23444 
-23445 
-23446 
-23447 
-23448 
-23449 
-23450 
-23451 
-23452 
-23453 
-23454 
-23455 
-23456 
-23457 
-23458 
-23459 
-23460 
-23461 
-23462 
-23463 
-23464 
-23465 
-23466 
-23467 
-23468 
-23469 
-23470 
-23471 
-23472 
-23473 
-23474 
-23475 
-23476 
-23477 
-23478 
-23479 
-23480 
-23481 
-23482 
-23483 
-23484 
-23485 
-23486 
-23487 
-23488 
-23489 
-23490 
-23491 
-23492 
-23493 
-23494 
-23495 
-23496 
-23497 
-23498 
-23499 
-23500 
-23501 
-23502 
-23503 
-23504 
-23505 
-23506 
-23507 
-23508 
-23509 
-23510 
-23511 
-23512 
-23513 
-23514 
-23515 
-23516 
-23517 
-23518 
-23519 
-23520 
-23521 
-23522 
-23523 
-23524 
-23525 
-23526 
-23527 
-23528 
-23529 
-23530 
-23531 
-23532 
-23533 
-23534 
-23535 
-23536 
-23537 
-23538 
-23539 
-23540 
-23541 
-23542 
-23543 
-23544 
-23545 
-23546 
-23547 
-23548 
-23549 
-23550 
-23551 
-23552 
-23553 
-23554 
-23555 
-23556 
-23557 
-23558 
-23559 
-23560 
-23561 
-23562 
-23563 
-23564 
-23565 
-23566 
-23567 
-23568 
-23569 
-23570 
-23571 
-23572 
-23573 
-23574 
-23575 
-23576 
-23577 
-23578 
-23579 
-23580 
-23581 
-23582 
-23583 
-23584 
-23585 
-23586 
-23587 
-23588 
-23589 
-23590 
-23591 
-23592 
-23593 
-23594 
-23595 
-23596 
-23597 
-23598 
-23599 
-23600 
-23601 
-23602 
-23603 
-23604 
-23605 
-23606 
-23607 
-23608 
-23609 
-23610 
-23611 
-23612 
-23613 
-23614 
-23615 
-23616 
-23617 
-23618 
-23619 
-23620 
-23621 
-23622 
-23623 
-23624 
-23625 
-23626 
-23627 
-23628 
-23629 
-23630 
-23631 
-23632 
-23633 
-23634 
-23635 
-23636 
-23637 
-23638 
-23639 
-23640 
-23641 
-23642 
-23643 
-23644 
-23645 
-23646 
-23647 
-23648 
-23649 
-23650 
-23651 
-23652 
-23653 
-23654 
-23655 
-23656 
-23657 
-23658 
-23659 
-23660 
-23661 
-23662 
-23663 
-23664 
-23665 
-23666 
-23667 
-23668 
-23669 
-23670 
-23671 
-23672 
-23673 
-23674 
-23675 
-23676 
-23677 
-23678 
-23679 
-23680 
-23681 
-23682 
-23683 
-23684 
-23685 
-23686 
-23687 
-23688 
-23689 
-23690 
-23691 
-23692 
-23693 
-23694 
-23695 
-23696 
-23697 
-23698 
-23699 
-23700 
-23701 
-23702 
-23703 
-23704 
-23705 
-23706 
-23707 
-23708 
-23709 
-23710 
-23711 
-23712 
-23713 
-23714 
-23715 
-23716 
-23717 
-23718 
-23719 
-23720 
-23721 
-23722 
-23723 
-23724 
-23725 
-23726 
-23727 
-23728 
-23729 
-23730 
-23731 
-23732 
-23733 
-23734 
-23735 
-23736 
-23737 
-23738 
-23739 
-23740 
-23741 
-23742 
-23743 
-23744 
-23745 
-23746 
-23747 
-23748 
-23749 
-23750 
-23751 
-23752 
-23753 
-23754 
-23755 
-23756 
-23757 
-23758 
-23759 
-23760 
-23761 
-23762 
-23763 
-23764 
-23765 
-23766 
-23767 
-23768 
-23769 
-23770 
-23771 
-23772 
-23773 
-23774 
-23775 
-23776 
-23777 
-23778 
-23779 
-23780 
-23781 
-23782 
-23783 
-23784 
-23785 
-23786 
-23787 
-23788 
-23789 
-23790 
-23791 
-23792 
-23793 
-23794 
-23795 
-23796 
-23797 
-23798 
-23799 
-23800 
-23801 
-23802 
-23803 
-23804 
-23805 
-23806 
-23807 
-23808 
-23809 
-23810 
-23811 
-23812 
-23813 
-23814 
-23815 
-23816 
-23817 
-23818 
-23819 
-23820 
-23821 
-23822 
-23823 
-23824 
-23825 
-23826 
-23827 
-23828 
-23829 
-23830 
-23831 
-23832 
-23833 
-23834 
-23835 
-23836 
-23837 
-23838 
-23839 
-23840 
-23841 
-23842 
-23843 
-23844 
-23845 
-23846 
-23847 
-23848 
-23849 
-23850 
-23851 
-23852 
-23853 
-23854 
-23855 
-23856 
-23857 
-23858 
-23859 
-23860 
-23861 
-23862 
-23863 
-23864 
-23865 
-23866 
-23867 
-23868 
-23869 
-23870 
-23871 
-23872 
-23873 
-23874 
-23875 
-23876 
-23877 
-23878 
-23879 
-23880 
-23881 
-23882 
-23883 
-23884 
-23885 
-23886 
-23887 
-23888 
-23889 
-23890 
-23891 
-23892 
-23893 
-23894 
-23895 
-23896 
-23897 
-23898 
-23899 
-23900 
-23901 
-23902 
-23903 
-23904 
-23905 
-23906 
-23907 
-23908 
-23909 
-23910 
-23911 
-23912 
-23913 
-23914 
-23915 
-23916 
-23917 
-23918 
-23919 
-23920 
-23921 
-23922 
-23923 
-23924 
-23925 
-23926 
-23927 
-23928 
-23929 
-23930 
-23931 
-23932 
-23933 
-23934 
-23935 
-23936 
-23937 
-23938 
-23939 
-23940 
-23941 
-23942 
-23943 
-23944 
-23945 
-23946 
-23947 
-23948 
-23949 
-23950 
-23951 
-23952 
-23953 
-23954 
-23955 
-23956 
-23957 
-23958 
-23959 
-23960 
-23961 
-23962 
-23963 
-23964 
-23965 
-23966 
-23967 
-23968 
-23969 
-23970 
-23971 
-23972 
-23973 
-23974 
-23975 
-23976 
-23977 
-23978 
-23979 
-23980 
-23981 
-23982 
-23983 
-23984 
-23985 
-23986 
-23987 
-23988 
-23989 
-23990 
-23991 
-23992 
-23993 
-23994 
-23995 
-23996 
-23997 
-23998 
-23999 
-24000 
-24001 
-24002 
-24003 
-24004 
-24005 
-24006 
-24007 
-24008 
-24009 
-24010 
-24011 
-24012 
-24013 
-24014 
-24015 
-24016 
-24017 
-24018 
-24019 
-24020 
-24021 
-24022 
-24023 
-24024 
-24025 
-24026 
-24027 
-24028 
-24029 
-24030 
-24031 
-24032 
-24033 
-24034 
-24035 
-24036 
-24037 
-24038 
-24039 
-24040 
-24041 
-24042 
-24043 
-24044 
-24045 
-24046 
-24047 
-24048 
-24049 
-24050 
-24051 
-24052 
-24053 
-24054 
-24055 
-24056 
-24057 
-24058 
-24059 
-24060 
-24061 
-24062 
-24063 
-24064 
-24065 
-24066 
-24067 
-24068 
-24069 
-24070 
-24071 
-24072 
-24073 
-24074 
-24075 
-24076 
-24077 
-24078 
-24079 
-24080 
-24081 
-24082 
-24083 
-24084 
-24085 
-24086 
-24087 
-24088 
-24089 
-24090 
-24091 
-24092 
-24093 
-24094 
-24095 
-24096 
-24097 
-24098 
-24099 
-24100 
-24101 
-24102 
-24103 
-24104 
-24105 
-24106 
-24107 
-24108 
-24109 
-24110 
-24111 
-24112 
-24113 
-24114 
-24115 
-24116 
-24117 
-24118 
-24119 
-24120 
-24121 
-24122 
-24123 
-24124 
-24125 
-24126 
-24127 
-24128 
-24129 
-24130 
-24131 
-24132 
-24133 
-24134 
-24135 
-24136 
-24137 
-24138 
-24139 
-24140 
-24141 
-24142 
-24143 
-24144 
-24145 
-24146 
-24147 
-24148 
-24149 
-24150 
-24151 
-24152 
-24153 
-24154 
-24155 
-24156 
-24157 
-24158 
-24159 
-24160 
-24161 
-24162 
-24163 
-24164 
-24165 
-24166 
-24167 
-24168 
-24169 
-24170 
-24171 
-24172 
-24173 
-24174 
-24175 
-24176 
-24177 
-24178 
-24179 
-24180 
-24181 
-24182 
-24183 
-24184 
-24185 
-24186 
-24187 
-24188 
-24189 
-24190 
-24191 
-24192 
-24193 
-24194 
-24195 
-24196 
-24197 
-24198 
-24199 
-24200 
-24201 
-24202 
-24203 
-24204 
-24205 
-24206 
-24207 
-24208 
-24209 
-24210 
-24211 
-24212 
-24213 
-24214 
-24215 
-24216 
-24217 
-24218 
-24219 
-24220 
-24221 
-24222 
-24223 
-24224 
-24225 
-24226 
-24227 
-24228 
-24229 
-24230 
-24231 
-24232 
-24233 
-24234 
-24235 
-24236 
-24237 
-24238 
-24239 
-24240 
-24241 
-24242 
-24243 
-24244 
-24245 
-24246 
-24247 
-24248 
-24249 
-24250 
-24251 
-24252 
-24253 
-24254 
-24255 
-24256 
-24257 
-24258 
-24259 
-24260 
-24261 
-24262 
-24263 
-24264 
-24265 
-24266 
-24267 
-24268 
-24269 
-24270 
-24271 
-24272 
-24273 
-24274 
-24275 
-24276 
-24277 
-24278 
-24279 
-24280 
-24281 
-24282 
-24283 
-24284 
-24285 
-24286 
-24287 
-24288 
-24289 
-24290 
-24291 
-24292 
-24293 
-24294 
-24295 
-24296 
-24297 
-24298 
-24299 
-24300 
-24301 
-24302 
-24303 
-24304 
-24305 
-24306 
-24307 
-24308 
-24309 
-24310 
-24311 
-24312 
-24313 
-24314 
-24315 
-24316 
-24317 
-24318 
-24319 
-24320 
-24321 
-24322 
-24323 
-24324 
-24325 
-24326 
-24327 
-24328 
-24329 
-24330 
-24331 
-24332 
-24333 
-24334 
-24335 
-24336 
-24337 
-24338 
-24339 
-24340 
-24341 
-24342 
-24343 
-24344 
-24345 
-24346 
-24347 
-24348 
-24349 
-24350 
-24351 
-24352 
-24353 
-24354 
-24355 
-24356 
-24357 
-24358 
-24359 
-24360 
-24361 
-24362 
-24363 
-24364 
-24365 
-24366 
-24367 
-24368 
-24369 
-24370 
-24371 
-24372 
-24373 
-24374 
-24375 
-24376 
-24377 
-24378 
-24379 
-24380 
-24381 
-24382 
-24383 
-24384 
-24385 
-24386 
-24387 
-24388 
-24389 
-24390 
-24391 
-24392 
-24393 
-24394 
-24395 
-24396 
-24397 
-24398 
-24399 
-24400 
-24401 
-24402 
-24403 
-24404 
-24405 
-24406 
-24407 
-24408 
-24409 
-24410 
-24411 
-24412 
-24413 
-24414 
-24415 
-24416 
-24417 
-24418 
-24419 
-24420 
-24421 
-24422 
-24423 
-24424 
-24425 
-24426 
-24427 
-24428 
-24429 
-24430 
-24431 
-24432 
-24433 
-24434 
-24435 
-24436 
-24437 
-24438 
-24439 
-24440 
-24441 
-24442 
-24443 
-24444 
-24445 
-24446 
-24447 
-24448 
-24449 
-24450 
-24451 
-24452 
-24453 
-24454 
-24455 
-24456 
-24457 
-24458 
-24459 
-24460 
-24461 
-24462 
-24463 
-24464 
-24465 
-24466 
-24467 
-24468 
-24469 
-24470 
-24471 
-24472 
-24473 
-24474 
-24475 
-24476 
-24477 
-24478 
-24479 
-24480 
-24481 
-24482 
-24483 
-24484 
-24485 
-24486 
-24487 
-24488 
-24489 
-24490 
-24491 
-24492 
-24493 
-24494 
-24495 
-24496 
-24497 
-24498 
-24499 
-24500 
-24501 
-24502 
-24503 
-24504 
-24505 
-24506 
-24507 
-24508 
-24509 
-24510 
-24511 
-24512 
-24513 
-24514 
-24515 
-24516 
-24517 
-24518 
-24519 
-24520 
-24521 
-24522 
-24523 
-24524 
-24525 
-24526 
-24527 
-24528 
-24529 
-24530 
-24531 
-24532 
-24533 
-24534 
-24535 
-24536 
-24537 
-24538 
-24539 
-24540 
-24541 
-24542 
-24543 
-24544 
-24545 
-24546 
-24547 
-24548 
-24549 
-24550 
-24551 
-24552 
-24553 
-24554 
-24555 
-24556 
-24557 
-24558 
-24559 
-24560 
-24561 
-24562 
-24563 
-24564 
-24565 
-24566 
-24567 
-24568 
-24569 
-24570 
-24571 
-24572 
-24573 
-24574 
-24575 
-24576 
-24577 
-24578 
-24579 
-24580 
-24581 
-24582 
-24583 
-24584 
-24585 
-24586 
-24587 
-24588 
-24589 
-24590 
-24591 
-24592 
-24593 
-24594 
-24595 
-24596 
-24597 
-24598 
-24599 
-24600 
-24601 
-24602 
-24603 
-24604 
-24605 
-24606 
-24607 
-24608 
-24609 
-24610 
-24611 
-24612 
-24613 
-24614 
-24615 
-24616 
-24617 
-24618 
-24619 
-24620 
-24621 
-24622 
-24623 
-24624 
-24625 
-24626 
-24627 
-24628 
-24629 
-24630 
-24631 
-24632 
-24633 
-24634 
-24635 
-24636 
-24637 
-24638 
-24639 
-24640 
-24641 
-24642 
-24643 
-24644 
-24645 
-24646 
-24647 
-24648 
-24649 
-24650 
-24651 
-24652 
-24653 
-24654 
-24655 
-24656 
-24657 
-24658 
-24659 
-24660 
-24661 
-24662 
-24663 
-24664 
-24665 
-24666 
-24667 
-24668 
-24669 
-24670 
-24671 
-24672 
-24673 
-24674 
-24675 
-24676 
-24677 
-24678 
-24679 
-24680 
-24681 
-24682 
-24683 
-24684 
-24685 
-24686 
-24687 
-24688 
-24689 
-24690 
-24691 
-24692 
-24693 
-24694 
-24695 
-24696 
-24697 
-24698 
-24699 
-24700 
-24701 
-24702 
-24703 
-24704 
-24705 
-24706 
-24707 
-24708 
-24709 
-24710 
-24711 
-24712 
-24713 
-24714 
-24715 
-24716 
-24717 
-24718 
-24719 
-24720 
-24721 
-24722 
-24723 
-24724 
-24725 
-24726 
-24727 
-24728 
-24729 
-24730 
-24731 
-24732 
-24733 
-24734 
-24735 
-24736 
-24737 
-24738 
-24739 
-24740 
-24741 
-24742 
-24743 
-24744 
-24745 
-24746 
-24747 
-24748 
-24749 
-24750 
-24751 
-24752 
-24753 
-24754 
-24755 
-24756 
-24757 
-24758 
-24759 
-24760 
-24761 
-24762 
-24763 
-24764 
-24765 
-24766 
-24767 
-24768 
-24769 
-24770 
-24771 
-24772 
-24773 
-24774 
-24775 
-24776 
-24777 
-24778 
-24779 
-24780 
-24781 
-24782 
-24783 
-24784 
-24785 
-24786 
-24787 
-24788 
-24789 
-24790 
-24791 
-24792 
-24793 
-24794 
-24795 
-24796 
-24797 
-24798 
-24799 
-24800 
-24801 
-24802 
-24803 
-24804 
-24805 
-24806 
-24807 
-24808 
-24809 
-24810 
-24811 
-24812 
-24813 
-24814 
-24815 
-24816 
-24817 
-24818 
-24819 
-24820 
-24821 
-24822 
-24823 
-24824 
-24825 
-24826 
-24827 
-24828 
-24829 
-24830 
-24831 
-24832 
-24833 
-24834 
-24835 
-24836 
-24837 
-24838 
-24839 
-24840 
-24841 
-24842 
-24843 
-24844 
-24845 
-24846 
-24847 
-24848 
-24849 
-24850 
-24851 
-24852 
-24853 
-24854 
-24855 
-24856 
-24857 
-24858 
-24859 
-24860 
-24861 
-24862 
-24863 
-24864 
-24865 
-24866 
-24867 
-24868 
-24869 
-24870 
-24871 
-24872 
-24873 
-24874 
-24875 
-24876 
-24877 
-24878 
-24879 
-24880 
-24881 
-24882 
-24883 
-24884 
-24885 
-24886 
-24887 
-24888 
-24889 
-24890 
-24891 
-24892 
-24893 
-24894 
-24895 
-24896 
-24897 
-24898 
-24899 
-24900 
-24901 
-24902 
-24903 
-24904 
-24905 
-24906 
-24907 
-24908 
-24909 
-24910 
-24911 
-24912 
-24913 
-24914 
-24915 
-24916 
-24917 
-24918 
-24919 
-24920 
-24921 
-24922 
-24923 
-24924 
-24925 
-24926 
-24927 
-24928 
-24929 
-24930 
-24931 
-24932 
-24933 
-24934 
-24935 
-24936 
-24937 
-24938 
-24939 
-24940 
-24941 
-24942 
-24943 
-24944 
-24945 
-24946 
-24947 
-24948 
-24949 
-24950 
-24951 
-24952 
-24953 
-24954 
-24955 
-24956 
-24957 
-24958 
-24959 
-24960 
-24961 
-24962 
-24963 
-24964 
-24965 
-24966 
-24967 
-24968 
-24969 
-24970 
-24971 
-24972 
-24973 
-24974 
-24975 
-24976 
-24977 
-24978 
-24979 
-24980 
-24981 
-24982 
-24983 
-24984 
-24985 
-24986 
-24987 
-24988 
-24989 
-24990 
-24991 
-24992 
-24993 
-24994 
-24995 
-24996 
-24997 
-24998 
-24999 
-25000 
-25001 
-25002 
-25003 
-25004 
-25005 
-25006 
-25007 
-25008 
-25009 
-25010 
-25011 
-25012 
-25013 
-25014 
-25015 
-25016 
-25017 
-25018 
-25019 
-25020 
-25021 
-25022 
-25023 
-25024 
-25025 
-25026 
-25027 
-25028 
-25029 
-25030 
-25031 
-25032 
-25033 
-25034 
-25035 
-25036 
-25037 
-25038 
-25039 
-25040 
-25041 
-25042 
-25043 
-25044 
-25045 
-25046 
-25047 
-25048 
-25049 
-25050 
-25051 
-25052 
-25053 
-25054 
-25055 
-25056 
-25057 
-25058 
-25059 
-25060 
-25061 
-25062 
-25063 
-25064 
-25065 
-25066 
-25067 
-25068 
-25069 
-25070 
-25071 
-25072 
-25073 
-25074 
-25075 
-25076 
-25077 
-25078 
-25079 
-25080 
-25081 
-25082 
-25083 
-25084 
-25085 
-25086 
-25087 
-25088 
-25089 
-25090 
-25091 
-25092 
-25093 
-25094 
-25095 
-25096 
-25097 
-25098 
-25099 
-25100 
-25101 
-25102 
-25103 
-25104 
-25105 
-25106 
-25107 
-25108 
-25109 
-25110 
-25111 
-25112 
-25113 
-25114 
-25115 
-25116 
-25117 
-25118 
-25119 
-25120 
-25121 
-25122 
-25123 
-25124 
-25125 
-25126 
-25127 
-25128 
-25129 
-25130 
-25131 
-25132 
-25133 
-25134 
-25135 
-25136 
-25137 
-25138 
-25139 
-25140 
-25141 
-25142 
-25143 
-25144 
-25145 
-25146 
-25147 
-25148 
-25149 
-25150 
-25151 
-25152 
-25153 
-25154 
-25155 
-25156 
-25157 
-25158 
-25159 
-25160 
-25161 
-25162 
-25163 
-25164 
-25165 
-25166 
-25167 
-25168 
-25169 
-25170 
-25171 
-25172 
-25173 
-25174 
-25175 
-25176 
-25177 
-25178 
-25179 
-25180 
-25181 
-25182 
-25183 
-25184 
-25185 
-25186 
-25187 
-25188 
-25189 
-25190 
-25191 
-25192 
-25193 
-25194 
-25195 
-25196 
-25197 
-25198 
-25199 
-25200 
-25201 
-25202 
-25203 
-25204 
-25205 
-25206 
-25207 
-25208 
-25209 
-25210 
-25211 
-25212 
-25213 
-25214 
-25215 
-25216 
-25217 
-25218 
-25219 
-25220 
-25221 
-25222 
-25223 
-25224 
-25225 
-25226 
-25227 
-25228 
-25229 
-25230 
-25231 
-25232 
-25233 
-25234 
-25235 
-25236 
-25237 
-25238 
-25239 
-25240 
-25241 
-25242 
-25243 
-25244 
-25245 
-25246 
-25247 
-25248 
-25249 
-25250 
-25251 
-25252 
-25253 
-25254 
-25255 
-25256 
-25257 
-25258 
-25259 
-25260 
-25261 
-25262 
-25263 
-25264 
-25265 
-25266 
-25267 
-25268 
-25269 
-25270 
-25271 
-25272 
-25273 
-25274 
-25275 
-25276 
-25277 
-25278 
-25279 
-25280 
-25281 
-25282 
-25283 
-25284 
-25285 
-25286 
-25287 
-25288 
-25289 
-25290 
-25291 
-25292 
-25293 
-25294 
-25295 
-25296 
-25297 
-25298 
-25299 
-25300 
-25301 
-25302 
-25303 
-25304 
-25305 
-25306 
-25307 
-25308 
-25309 
-25310 
-25311 
-25312 
-25313 
-25314 
-25315 
-25316 
-25317 
-25318 
-25319 
-25320 
-25321 
-25322 
-25323 
-25324 
-25325 
-25326 
-25327 
-25328 
-25329 
-25330 
-25331 
-25332 
-25333 
-25334 
-25335 
-25336 
-25337 
-25338 
-25339 
-25340 
-25341 
-25342 
-25343 
-25344 
-25345 
-25346 
-25347 
-25348 
-25349 
-25350 
-25351 
-25352 
-25353 
-25354 
-25355 
-25356 
-25357 
-25358 
-25359 
-25360 
-25361 
-25362 
-25363 
-25364 
-25365 
-25366 
-25367 
-25368 
-25369 
-25370 
-25371 
-25372 
-25373 
-25374 
-25375 
-25376 
-25377 
-25378 
-25379 
-25380 
-25381 
-25382 
-25383 
-25384 
-25385 
-25386 
-25387 
-25388 
-25389 
-25390 
-25391 
-25392 
-25393 
-25394 
-25395 
-25396 
-25397 
-25398 
-25399 
-25400 
-25401 
-25402 
-25403 
-25404 
-25405 
-25406 
-25407 
-25408 
-25409 
-25410 
-25411 
-25412 
-25413 
-25414 
-25415 
-25416 
-25417 
-25418 
-25419 
-25420 
-25421 
-25422 
-25423 
-25424 
-25425 
-25426 
-25427 
-25428 
-25429 
-25430 
-25431 
-25432 
-25433 
-25434 
-25435 
-25436 
-25437 
-25438 
-25439 
-25440 
-25441 
-25442 
-25443 
-25444 
-25445 
-25446 
-25447 
-25448 
-25449 
-25450 
-25451 
-25452 
-25453 
-25454 
-25455 
-25456 
-25457 
-25458 
-25459 
-25460 
-25461 
-25462 
-25463 
-25464 
-25465 
-25466 
-25467 
-25468 
-25469 
-25470 
-25471 
-25472 
-25473 
-25474 
-25475 
-25476 
-25477 
-25478 
-25479 
-25480 
-25481 
-25482 
-25483 
-25484 
-25485 
-25486 
-25487 
-25488 
-25489 
-25490 
-25491 
-25492 
-25493 
-25494 
-25495 
-25496 
-25497 
-25498 
-25499 
-25500 
-25501 
-25502 
-25503 
-25504 
-25505 
-25506 
-25507 
-25508 
-25509 
-25510 
-25511 
-25512 
-25513 
-25514 
-25515 
-25516 
-25517 
-25518 
-25519 
-25520 
-25521 
-25522 
-25523 
-25524 
-25525 
-25526 
-25527 
-25528 
-25529 
-25530 
-25531 
-25532 
-25533 
-25534 
-25535 
-25536 
-25537 
-25538 
-25539 
-25540 
-25541 
-25542 
-25543 
-25544 
-25545 
-25546 
-25547 
-25548 
-25549 
-25550 
-25551 
-25552 
-25553 
-25554 
-25555 
-25556 
-25557 
-25558 
-25559 
-25560 
-25561 
-25562 
-25563 
-25564 
-25565 
-25566 
-25567 
-25568 
-25569 
-25570 
-25571 
-25572 
-25573 
-25574 
-25575 
-25576 
-25577 
-25578 
-25579 
-25580 
-25581 
-25582 
-25583 
-25584 
-25585 
-25586 
-25587 
-25588 
-25589 
-25590 
-25591 
-25592 
-25593 
-25594 
-25595 
-25596 
-25597 
-25598 
-25599 
-25600 
-25601 
-25602 
-25603 
-25604 
-25605 
-25606 
-25607 
-25608 
-25609 
-25610 
-25611 
-25612 
-25613 
-25614 
-25615 
-25616 
-25617 
-25618 
-25619 
-25620 
-25621 
-25622 
-25623 
-25624 
-25625 
-25626 
-25627 
-25628 
-25629 
-25630 
-25631 
-25632 
-25633 
-25634 
-25635 
-25636 
-25637 
-25638 
-25639 
-25640 
-25641 
-25642 
-25643 
-25644 
-25645 
-25646 
-25647 
-25648 
-25649 
-25650 
-25651 
-25652 
-25653 
-25654 
-25655 
-25656 
-25657 
-25658 
-25659 
-25660 
-25661 
-25662 
-25663 
-25664 
-25665 
-25666 
-25667 
-25668 
-25669 
-25670 
-25671 
-25672 
-25673 
-25674 
-25675 
-25676 
-25677 
-25678 
-25679 
-25680 
-25681 
-25682 
-25683 
-25684 
-25685 
-25686 
-25687 
-25688 
-25689 
-25690 
-25691 
-25692 
-25693 
-25694 
-25695 
-25696 
-25697 
-25698 
-25699 
-25700 
-25701 
-25702 
-25703 
-25704 
-25705 
-25706 
-25707 
-25708 
-25709 
-25710 
-25711 
-25712 
-25713 
-25714 
-25715 
-25716 
-25717 
-25718 
-25719 
-25720 
-25721 
-25722 
-25723 
-25724 
-25725 
-25726 
-25727 
-25728 
-25729 
-25730 
-25731 
-25732 
-25733 
-25734 
-25735 
-25736 
-25737 
-25738 
-25739 
-25740 
-25741 
-25742 
-25743 
-25744 
-25745 
-25746 
-25747 
-25748 
-25749 
-25750 
-25751 
-25752 
-25753 
-25754 
-25755 
-25756 
-25757 
-25758 
-25759 
-25760 
-25761 
-25762 
-25763 
-25764 
-25765 
-25766 
-25767 
-25768 
-25769 
-25770 
-25771 
-25772 
-25773 
-25774 
-25775 
-25776 
-25777 
-25778 
-25779 
-25780 
-25781 
-25782 
-25783 
-25784 
-25785 
-25786 
-25787 
-25788 
-25789 
-25790 
-25791 
-25792 
-25793 
-25794 
-25795 
-25796 
-25797 
-25798 
-25799 
-25800 
-25801 
-25802 
-25803 
-25804 
-25805 
-25806 
-25807 
-25808 
-25809 
-25810 
-25811 
-25812 
-25813 
-25814 
-25815 
-25816 
-25817 
-25818 
-25819 
-25820 
-25821 
-25822 
-25823 
-25824 
-25825 
-25826 
-25827 
-25828 
-25829 
-25830 
-25831 
-25832 
-25833 
-25834 
-25835 
-25836 
-25837 
-25838 
-25839 
-25840 
-25841 
-25842 
-25843 
-25844 
-25845 
-25846 
-25847 
-25848 
-25849 
-25850 
-25851 
-25852 
-25853 
-25854 
-25855 
-25856 
-25857 
-25858 
-25859 
-25860 
-25861 
-25862 
-25863 
-25864 
-25865 
-25866 
-25867 
-25868 
-25869 
-25870 
-25871 
-25872 
-25873 
-25874 
-25875 
-25876 
-25877 
-25878 
-25879 
-25880 
-25881 
-25882 
-25883 
-25884 
-25885 
-25886 
-25887 
-25888 
-25889 
-25890 
-25891 
-25892 
-25893 
-25894 
-25895 
-25896 
-25897 
-25898 
-25899 
-25900 
-25901 
-25902 
-25903 
-25904 
-25905 
-25906 
-25907 
-25908 
-25909 
-25910 
-25911 
-25912 
-25913 
-25914 
-25915 
-25916 
-25917 
-25918 
-25919 
-25920 
-25921 
-25922 
-25923 
-25924 
-25925 
-25926 
-25927 
-25928 
-25929 
-25930 
-25931 
-25932 
-25933 
-25934 
-25935 
-25936 
-25937 
-25938 
-25939 
-25940 
-25941 
-25942 
-25943 
-25944 
-25945 
-25946 
-25947 
-25948 
-25949 
-25950 
-25951 
-25952 
-25953 
-25954 
-25955 
-25956 
-25957 
-25958 
-25959 
-25960 
-25961 
-25962 
-25963 
-25964 
-25965 
-25966 
-25967 
-25968 
-25969 
-25970 
-25971 
-25972 
-25973 
-25974 
-25975 
-25976 
-25977 
-25978 
-25979 
-25980 
-25981 
-25982 
-25983 
-25984 
-25985 
-25986 
-25987 
-25988 
-25989 
-25990 
-25991 
-25992 
-25993 
-25994 
-25995 
-25996 
-25997 
-25998 
-25999 
-26000 
-26001 
-26002 
-26003 
-26004 
-26005 
-26006 
-26007 
-26008 
-26009 
-26010 
-26011 
-26012 
-26013 
-26014 
-26015 
-26016 
-26017 
-26018 
-26019 
-26020 
-26021 
-26022 
-26023 
-26024 
-26025 
-26026 
-26027 
-26028 
-26029 
-26030 
-26031 
-26032 
-26033 
-26034 
-26035 
-26036 
-26037 
-26038 
-26039 
-26040 
-26041 
-26042 
-26043 
-26044 
-26045 
-26046 
-26047 
-26048 
-26049 
-26050 
-26051 
-26052 
-26053 
-26054 
-26055 
-26056 
-26057 
-26058 
-26059 
-26060 
-26061 
-26062 
-26063 
-26064 
-26065 
-26066 
-26067 
-26068 
-26069 
-26070 
-26071 
-26072 
-26073 
-26074 
-26075 
-26076 
-26077 
-26078 
-26079 
-26080 
-26081 
-26082 
-26083 
-26084 
-26085 
-26086 
-26087 
-26088 
-26089 
-26090 
-26091 
-26092 
-26093 
-26094 
-26095 
-26096 
-26097 
-26098 
-26099 
-26100 
-26101 
-26102 
-26103 
-26104 
-26105 
-26106 
-26107 
-26108 
-26109 
-26110 
-26111 
-26112 
-26113 
-26114 
-26115 
-26116 
-26117 
-26118 
-26119 
-26120 
-26121 
-26122 
-26123 
-26124 
-26125 
-26126 
-26127 
-26128 
-26129 
-26130 
-26131 
-26132 
-26133 
-26134 
-26135 
-26136 
-26137 
-26138 
-26139 
-26140 
-26141 
-26142 
-26143 
-26144 
-26145 
-26146 
-26147 
-26148 
-26149 
-26150 
-26151 
-26152 
-26153 
-26154 
-26155 
-26156 
-26157 
-26158 
-26159 
-26160 
-26161 
-26162 
-26163 
-26164 
-26165 
-26166 
-26167 
-26168 
-26169 
-26170 
-26171 
-26172 
-26173 
-26174 
-26175 
-26176 
-26177 
-26178 
-26179 
-26180 
-26181 
-26182 
-26183 
-26184 
-26185 
-26186 
-26187 
-26188 
-26189 
-26190 
-26191 
-26192 
-26193 
-26194 
-26195 
-26196 
-26197 
-26198 
-26199 
-26200 
-26201 
-26202 
-26203 
-26204 
-26205 
-26206 
-26207 
-26208 
-26209 
-26210 
-26211 
-26212 
-26213 
-26214 
-26215 
-26216 
-26217 
-26218 
-26219 
-26220 
-26221 
-26222 
-26223 
-26224 
-26225 
-26226 
-26227 
-26228 
-26229 
-26230 
-26231 
-26232 
-26233 
-26234 
-26235 
-26236 
-26237 
-26238 
-26239 
-26240 
-26241 
-26242 
-26243 
-26244 
-26245 
-26246 
-26247 
-26248 
-26249 
-26250 
-26251 
-26252 
-26253 
-26254 
-26255 
-26256 
-26257 
-26258 
-26259 
-26260 
-26261 
-26262 
-26263 
-26264 
-26265 
-26266 
-26267 
-26268 
-26269 
-26270 
-26271 
-26272 
-26273 
-26274 
-26275 
-26276 
-26277 
-26278 
-26279 
-26280 
-26281 
-26282 
-26283 
-26284 
-26285 
-26286 
-26287 
-26288 
-26289 
-26290 
-26291 
-26292 
-26293 
-26294 
-26295 
-26296 
-26297 
-26298 
-26299 
-26300 
-26301 
-26302 
-26303 
-26304 
-26305 
-26306 
-26307 
-26308 
-26309 
-26310 
-26311 
-26312 
-26313 
-26314 
-26315 
-26316 
-26317 
-26318 
-26319 
-26320 
-26321 
-26322 
-26323 
-26324 
-26325 
-26326 
-26327 
-26328 
-26329 
-26330 
-26331 
-26332 
-26333 
-26334 
-26335 
-26336 
-26337 
-26338 
-26339 
-26340 
-26341 
-26342 
-26343 
-26344 
-26345 
-26346 
-26347 
-26348 
-26349 
-26350 
-26351 
-26352 
-26353 
-26354 
-26355 
-26356 
-26357 
-26358 
-26359 
-26360 
-26361 
-26362 
-26363 
-26364 
-26365 
-26366 
-26367 
-26368 
-26369 
-26370 
-26371 
-26372 
-26373 
-26374 
-26375 
-26376 
-26377 
-26378 
-26379 
-26380 
-26381 
-26382 
-26383 
-26384 
-26385 
-26386 
-26387 
-26388 
-26389 
-26390 
-26391 
-26392 
-26393 
-26394 
-26395 
-26396 
-26397 
-26398 
-26399 
-26400 
-26401 
-26402 
-26403 
-26404 
-26405 
-26406 
-26407 
-26408 
-26409 
-26410 
-26411 
-26412 
-26413 
-26414 
-26415 
-26416 
-26417 
-26418 
-26419 
-26420 
-26421 
-26422 
-26423 
-26424 
-26425 
-26426 
-26427 
-26428 
-26429 
-26430 
-26431 
-26432 
-26433 
-26434 
-26435 
-26436 
-26437 
-26438 
-26439 
-26440 
-26441 
-26442 
-26443 
-26444 
-26445 
-26446 
-26447 
-26448 
-26449 
-26450 
-26451 
-26452 
-26453 
-26454 
-26455 
-26456 
-26457 
-26458 
-26459 
-26460 
-26461 
-26462 
-26463 
-26464 
-26465 
-26466 
-26467 
-26468 
-26469 
-26470 
-26471 
-26472 
-26473 
-26474 
-26475 
-26476 
-26477 
-26478 
-26479 
-26480 
-26481 
-26482 
-26483 
-26484 
-26485 
-26486 
-26487 
-26488 
-26489 
-26490 
-26491 
-26492 
-26493 
-26494 
-26495 
-26496 
-26497 
-26498 
-26499 
-26500 
-26501 
-26502 
-26503 
-26504 
-26505 
-26506 
-26507 
-26508 
-26509 
-26510 
-26511 
-26512 
-26513 
-26514 
-26515 
-26516 
-26517 
-26518 
-26519 
-26520 
-26521 
-26522 
-26523 
-26524 
-26525 
-26526 
-26527 
-26528 
-26529 
-26530 
-26531 
-26532 
-26533 
-26534 
-26535 
-26536 
-26537 
-26538 
-26539 
-26540 
-26541 
-26542 
-26543 
-26544 
-26545 
-26546 
-26547 
-26548 
-26549 
-26550 
-26551 
-26552 
-26553 
-26554 
-26555 
-26556 
-26557 
-26558 
-26559 
-26560 
-26561 
-26562 
-26563 
-26564 
-26565 
-26566 
-26567 
-26568 
-26569 
-26570 
-26571 
-26572 
-26573 
-26574 
-26575 
-26576 
-26577 
-26578 
-26579 
-26580 
-26581 
-26582 
-26583 
-26584 
-26585 
-26586 
-26587 
-26588 
-26589 
-26590 
-26591 
-26592 
-26593 
-26594 
-26595 
-26596 
-26597 
-26598 
-26599 
-26600 
-26601 
-26602 
-26603 
-26604 
-26605 
-26606 
-26607 
-26608 
-26609 
-26610 
-26611 
-26612 
-26613 
-26614 
-26615 
-26616 
-26617 
-26618 
-26619 
-26620 
-26621 
-26622 
-26623 
-26624 
-26625 
-26626 
-26627 
-26628 
-26629 
-26630 
-26631 
-26632 
-26633 
-26634 
-26635 
-26636 
-26637 
-26638 
-26639 
-26640 
-26641 
-26642 
-26643 
-26644 
-26645 
-26646 
-26647 
-26648 
-26649 
-26650 
-26651 
-26652 
-26653 
-26654 
-26655 
-26656 
-26657 
-26658 
-26659 
-26660 
-26661 
-26662 
-26663 
-26664 
-26665 
-26666 
-26667 
-26668 
-26669 
-26670 
-26671 
-26672 
-26673 
-26674 
-26675 
-26676 
-26677 
-26678 
-26679 
-26680 
-26681 
-26682 
-26683 
-26684 
-26685 
-26686 
-26687 
-26688 
-26689 
-26690 
-26691 
-26692 
-26693 
-26694 
-26695 
-26696 
-26697 
-26698 
-26699 
-26700 
-26701 
-26702 
-26703 
-26704 
-26705 
-26706 
-26707 
-26708 
-26709 
-26710 
-26711 
-26712 
-26713 
-26714 
-26715 
-26716 
-26717 
-26718 
-26719 
-26720 
-26721 
-26722 
-26723 
-26724 
-26725 
-26726 
-26727 
-26728 
-26729 
-26730 
-26731 
-26732 
-26733 
-26734 
-26735 
-26736 
-26737 
-26738 
-26739 
-26740 
-26741 
-26742 
-26743 
-26744 
-26745 
-26746 
-26747 
-26748 
-26749 
-26750 
-26751 
-26752 
-26753 
-26754 
-26755 
-26756 
-26757 
-26758 
-26759 
-26760 
-26761 
-26762 
-26763 
-26764 
-26765 
-26766 
-26767 
-26768 
-26769 
-26770 
-26771 
-26772 
-26773 
-26774 
-26775 
-26776 
-26777 
-26778 
-26779 
-26780 
-26781 
-26782 
-26783 
-26784 
-26785 
-26786 
-26787 
-26788 
-26789 
-26790 
-26791 
-26792 
-26793 
-26794 
-26795 
-26796 
-26797 
-26798 
-26799 
-26800 
-26801 
-26802 
-26803 
-26804 
-26805 
-26806 
-26807 
-26808 
-26809 
-26810 
-26811 
-26812 
-26813 
-26814 
-26815 
-26816 
-26817 
-26818 
-26819 
-26820 
-26821 
-26822 
-26823 
-26824 
-26825 
-26826 
-26827 
-26828 
-26829 
-26830 
-26831 
-26832 
-26833 
-26834 
-26835 
-26836 
-26837 
-26838 
-26839 
-26840 
-26841 
-26842 
-26843 
-26844 
-26845 
-26846 
-26847 
-26848 
-26849 
-26850 
-26851 
-26852 
-26853 
-26854 
-26855 
-26856 
-26857 
-26858 
-26859 
-26860 
-26861 
-26862 
-26863 
-26864 
-26865 
-26866 
-26867 
-26868 
-26869 
-26870 
-26871 
-26872 
-26873 
-26874 
-26875 
-26876 
-26877 
-26878 
-26879 
-26880 
-26881 
-26882 
-26883 
-26884 
-26885 
-26886 
-26887 
-26888 
-26889 
-26890 
-26891 
-26892 
-26893 
-26894 
-26895 
-26896 
-26897 
-26898 
-26899 
-26900 
-26901 
-26902 
-26903 
-26904 
-26905 
-26906 
-26907 
-26908 
-26909 
-26910 
-26911 
-26912 
-26913 
-26914 
-26915 
-26916 
-26917 
-26918 
-26919 
-26920 
-26921 
-26922 
-26923 
-26924 
-26925 
-26926 
-26927 
-26928 
-26929 
-26930 
-26931 
-26932 
-26933 
-26934 
-26935 
-26936 
-26937 
-26938 
-26939 
-26940 
-26941 
-26942 
-26943 
-26944 
-26945 
-26946 
-26947 
-26948 
-26949 
-26950 
-26951 
-26952 
-26953 
-26954 
-26955 
-26956 
-26957 
-26958 
-26959 
-26960 
-26961 
-26962 
-26963 
-26964 
-26965 
-26966 
-26967 
-26968 
-26969 
-26970 
-26971 
-26972 
-26973 
-26974 
-26975 
-26976 
-26977 
-26978 
-26979 
-26980 
-26981 
-26982 
-26983 
-26984 
-26985 
-26986 
-26987 
-26988 
-26989 
-26990 
-26991 
-26992 
-26993 
-26994 
-26995 
-26996 
-26997 
-26998 
-26999 
-27000 
-27001 
-27002 
-27003 
-27004 
-27005 
-27006 
-27007 
-27008 
-27009 
-27010 
-27011 
-27012 
-27013 
-27014 
-27015 
-27016 
-27017 
-27018 
-27019 
-27020 
-27021 
-27022 
-27023 
-27024 
-27025 
-27026 
-27027 
-27028 
-27029 
-27030 
-27031 
-27032 
-27033 
-27034 
-27035 
-27036 
-27037 
-27038 
-27039 
-27040 
-27041 
-27042 
-27043 
-27044 
-27045 
-27046 
-27047 
-27048 
-27049 
-27050 
-27051 
-27052 
-27053 
-27054 
-27055 
-27056 
-27057 
-27058 
-27059 
-27060 
-27061 
-27062 
-27063 
-27064 
-27065 
-27066 
-27067 
-27068 
-27069 
-27070 
-27071 
-27072 
-27073 
-27074 
-27075 
-27076 
-27077 
-27078 
-27079 
-27080 
-27081 
-27082 
-27083 
-27084 
-27085 
-27086 
-27087 
-27088 
-27089 
-27090 
-27091 
-27092 
-27093 
-27094 
-27095 
-27096 
-27097 
-27098 
-27099 
-27100 
-27101 
-27102 
-27103 
-27104 
-27105 
-27106 
-27107 
-27108 
-27109 
-27110 
-27111 
-27112 
-27113 
-27114 
-27115 
-27116 
-27117 
-27118 
-27119 
-27120 
-27121 
-27122 
-27123 
-27124 
-27125 
-27126 
-27127 
-27128 
-27129 
-27130 
-27131 
-27132 
-27133 
-27134 
-27135 
-27136 
-27137 
-27138 
-27139 
-27140 
-27141 
-27142 
-27143 
-27144 
-27145 
-27146 
-27147 
-27148 
-27149 
-27150 
-27151 
-27152 
-27153 
-27154 
-27155 
-27156 
-27157 
-27158 
-27159 
-27160 
-27161 
-27162 
-27163 
-27164 
-27165 
-27166 
-27167 
-27168 
-27169 
-27170 
-27171 
-27172 
-27173 
-27174 
-27175 
-27176 
-27177 
-27178 
-27179 
-27180 
-27181 
-27182 
-27183 
-27184 
-27185 
-27186 
-27187 
-27188 
-27189 
-27190 
-27191 
-27192 
-27193 
-27194 
-27195 
-27196 
-27197 
-27198 
-27199 
-27200 
-27201 
-27202 
-27203 
-27204 
-27205 
-27206 
-27207 
-27208 
-27209 
-27210 
-27211 
-27212 
-27213 
-27214 
-27215 
-27216 
-27217 
-27218 
-27219 
-27220 
-27221 
-27222 
-27223 
-27224 
-27225 
-27226 
-27227 
-27228 
-27229 
-27230 
-27231 
-27232 
-27233 
-27234 
-27235 
-27236 
-27237 
-27238 
-27239 
-27240 
-27241 
-27242 
-27243 
-27244 
-27245 
-27246 
-27247 
-27248 
-27249 
-27250 
-27251 
-27252 
-27253 
-27254 
-27255 
-27256 
-27257 
-27258 
-27259 
-27260 
-27261 
-27262 
-27263 
-27264 
-27265 
-27266 
-27267 
-27268 
-27269 
-27270 
-27271 
-27272 
-27273 
-27274 
-27275 
-27276 
-27277 
-27278 
-27279 
-27280 
-27281 
-27282 
-27283 
-27284 
-27285 
-27286 
-27287 
-27288 
-27289 
-27290 
-27291 
-27292 
-27293 
-27294 
-27295 
-27296 
-27297 
-27298 
-27299 
-27300 
-27301 
-27302 
-27303 
-27304 
-27305 
-27306 
-27307 
-27308 
-27309 
-27310 
-27311 
-27312 
-27313 
-27314 
-27315 
-27316 
-27317 
-27318 
-27319 
-27320 
-27321 
-27322 
-27323 
-27324 
-27325 
-27326 
-27327 
-27328 
-27329 
-27330 
-27331 
-27332 
-27333 
-27334 
-27335 
-27336 
-27337 
-27338 
-27339 
-27340 
-27341 
-27342 
-27343 
-27344 
-27345 
-27346 
-27347 
-27348 
-27349 
-27350 
-27351 
-27352 
-27353 
-27354 
-27355 
-27356 
-27357 
-27358 
-27359 
-27360 
-27361 
-27362 
-27363 
-27364 
-27365 
-27366 
-27367 
-27368 
-27369 
-27370 
-27371 
-27372 
-27373 
-27374 
-27375 
-27376 
-27377 
-27378 
-27379 
-27380 
-27381 
-27382 
-27383 
-27384 
-27385 
-27386 
-27387 
-27388 
-27389 
-27390 
-27391 
-27392 
-27393 
-27394 
-27395 
-27396 
-27397 
-27398 
-27399 
-27400 
-27401 
-27402 
-27403 
-27404 
-27405 
-27406 
-27407 
-27408 
-27409 
-27410 
-27411 
-27412 
-27413 
-27414 
-27415 
-27416 
-27417 
-27418 
-27419 
-27420 
-27421 
-27422 
-27423 
-27424 
-27425 
-27426 
-27427 
-27428 
-27429 
-27430 
-27431 
-27432 
-27433 
-27434 
-27435 
-27436 
-27437 
-27438 
-27439 
-27440 
-27441 
-27442 
-27443 
-27444 
-27445 
-27446 
-27447 
-27448 
-27449 
-27450 
-27451 
-27452 
-27453 
-27454 
-27455 
-27456 
-27457 
-27458 
-27459 
-27460 
-27461 
-27462 
-27463 
-27464 
-27465 
-27466 
-27467 
-27468 
-27469 
-27470 
-27471 
-27472 
-27473 
-27474 
-27475 
-27476 
-27477 
-27478 
-27479 
-27480 
-27481 
-27482 
-27483 
-27484 
-27485 
-27486 
-27487 
-27488 
-27489 
-27490 
-27491 
-27492 
-27493 
-27494 
-27495 
-27496 
-27497 
-27498 
-27499 
-27500 
-27501 
-27502 
-27503 
-27504 
-27505 
-27506 
-27507 
-27508 
-27509 
-27510 
-27511 
-27512 
-27513 
-27514 
-27515 
-27516 
-27517 
-27518 
-27519 
-27520 
-27521 
-27522 
-27523 
-27524 
-27525 
-27526 
-27527 
-27528 
-27529 
-27530 
-27531 
-27532 
-27533 
-27534 
-27535 
-27536 
-27537 
-27538 
-27539 
-27540 
-27541 
-27542 
-27543 
-27544 
-27545 
-27546 
-27547 
-27548 
-27549 
-27550 
-27551 
-27552 
-27553 
-27554 
-27555 
-27556 
-27557 
-27558 
-27559 
-27560 
-27561 
-27562 
-27563 
-27564 
-27565 
-27566 
-27567 
-27568 
-27569 
-27570 
-27571 
-27572 
-27573 
-27574 
-27575 
-27576 
-27577 
-27578 
-27579 
-27580 
-27581 
-27582 
-27583 
-27584 
-27585 
-27586 
-27587 
-27588 
-27589 
-27590 
-27591 
-27592 
-27593 
-27594 
-27595 
-27596 
-27597 
-27598 
-27599 
-27600 
-27601 
-27602 
-27603 
-27604 
-27605 
-27606 
-27607 
-27608 
-27609 
-27610 
-27611 
-27612 
-27613 
-27614 
-27615 
-27616 
-27617 
-27618 
-27619 
-27620 
-27621 
-27622 
-27623 
-27624 
-27625 
-27626 
-27627 
-27628 
-27629 
-27630 
-27631 
-27632 
-27633 
-27634 
-27635 
-27636 
-27637 
-27638 
-27639 
-27640 
-27641 
-27642 
-27643 
-27644 
-27645 
-27646 
-27647 
-27648 
-27649 
-27650 
-27651 
-27652 
-27653 
-27654 
-27655 
-27656 
-27657 
-27658 
-27659 
-27660 
-27661 
-27662 
-27663 
-27664 
-27665 
-27666 
-27667 
-27668 
-27669 
-27670 
-27671 
-27672 
-27673 
-27674 
-27675 
-27676 
-27677 
-27678 
-27679 
-27680 
-27681 
-27682 
-27683 
-27684 
-27685 
-27686 
-27687 
-27688 
-27689 
-27690 
-27691 
-27692 
-27693 
-27694 
-27695 
-27696 
-27697 
-27698 
-27699 
-27700 
-27701 
-27702 
-27703 
-27704 
-27705 
-27706 
-27707 
-27708 
-27709 
-27710 
-27711 
-27712 
-27713 
-27714 
-27715 
-27716 
-27717 
-27718 
-27719 
-27720 
-27721 
-27722 
-27723 
-27724 
-27725 
-27726 
-27727 
-27728 
-27729 
-27730 
-27731 
-27732 
-27733 
-27734 
-27735 
-27736 
-27737 
-27738 
-27739 
-27740 
-27741 
-27742 
-27743 
-27744 
-27745 
-27746 
-27747 
-27748 
-27749 
-27750 
-27751 
-27752 
-27753 
-27754 
-27755 
-27756 
-27757 
-27758 
-27759 
-27760 
-27761 
-27762 
-27763 
-27764 
-27765 
-27766 
-27767 
-27768 
-27769 
-27770 
-27771 
-27772 
-27773 
-27774 
-27775 
-27776 
-27777 
-27778 
-27779 
-27780 
-27781 
-27782 
-27783 
-27784 
-27785 
-27786 
-27787 
-27788 
-27789 
-27790 
-27791 
-27792 
-27793 
-27794 
-27795 
-27796 
-27797 
-27798 
-27799 
-27800 
-27801 
-27802 
-27803 
-27804 
-27805 
-27806 
-27807 
-27808 
-27809 
-27810 
-27811 
-27812 
-27813 
-27814 
-27815 
-27816 
-27817 
-27818 
-27819 
-27820 
-27821 
-27822 
-27823 
-27824 
-27825 
-27826 
-27827 
-27828 
-27829 
-27830 
-27831 
-27832 
-27833 
-27834 
-27835 
-27836 
-27837 
-27838 
-27839 
-27840 
-27841 
-27842 
-27843 
-27844 
-27845 
-27846 
-27847 
-27848 
-27849 
-27850 
-27851 
-27852 
-27853 
-27854 
-27855 
-27856 
-27857 
-27858 
-27859 
-27860 
-27861 
-27862 
-27863 
-27864 
-27865 
-27866 
-27867 
-27868 
-27869 
-27870 
-27871 
-27872 
-27873 
-27874 
-27875 
-27876 
-27877 
-27878 
-27879 
-27880 
-27881 
-27882 
-27883 
-27884 
-27885 
-27886 
-27887 
-27888 
-27889 
-27890 
-27891 
-27892 
-27893 
-27894 
-27895 
-27896 
-27897 
-27898 
-27899 
-27900 
-27901 
-27902 
-27903 
-27904 
-27905 
-27906 
-27907 
-27908 
-27909 
-27910 
-27911 
-27912 
-27913 
-27914 
-27915 
-27916 
-27917 
-27918 
-27919 
-27920 
-27921 
-27922 
-27923 
-27924 
-27925 
-27926 
-27927 
-27928 
-27929 
-27930 
-27931 
-27932 
-27933 
-27934 
-27935 
-27936 
-27937 
-27938 
-27939 
-27940 
-27941 
-27942 
-27943 
-27944 
-27945 
-27946 
-27947 
-27948 
-27949 
-27950 
-27951 
-27952 
-27953 
-27954 
-27955 
-27956 
-27957 
-27958 
-27959 
-27960 
-27961 
-27962 
-27963 
-27964 
-27965 
-27966 
-27967 
-27968 
-27969 
-27970 
-27971 
-27972 
-27973 
-27974 
-27975 
-27976 
-27977 
-27978 
-27979 
-27980 
-27981 
-27982 
-27983 
-27984 
-27985 
-27986 
-27987 
-27988 
-27989 
-27990 
-27991 
-27992 
-27993 
-27994 
-27995 
-27996 
-27997 
-27998 
-27999 
-28000 
-28001 
-28002 
-28003 
-28004 
-28005 
-28006 
-28007 
-28008 
-28009 
-28010 
-28011 
-28012 
-28013 
-28014 
-28015 
-28016 
-28017 
-28018 
-28019 
-28020 
-28021 
-28022 
-28023 
-28024 
-28025 
-28026 
-28027 
-28028 
-28029 
-28030 
-28031 
-28032 
-28033 
-28034 
-28035 
-28036 
-28037 
-28038 
-28039 
-28040 
-28041 
-28042 
-28043 
-28044 
-28045 
-28046 
-28047 
-28048 
-28049 
-28050 
-28051 
-28052 
-28053 
-28054 
-28055 
-28056 
-28057 
-28058 
-28059 
-28060 
-28061 
-28062 
-28063 
-28064 
-28065 
-28066 
-28067 
-28068 
-28069 
-28070 
-28071 
-28072 
-28073 
-28074 
-28075 
-28076 
-28077 
-28078 
-28079 
-28080 
-28081 
-28082 
-28083 
-28084 
-28085 
-28086 
-28087 
-28088 
-28089 
-28090 
-28091 
-28092 
-28093 
-28094 
-28095 
-28096 
-28097 
-28098 
-28099 
-28100 
-28101 
-28102 
-28103 
-28104 
-28105 
-28106 
-28107 
-28108 
-28109 
-28110 
-28111 
-28112 
-28113 
-28114 
-28115 
-28116 
-28117 
-28118 
-28119 
-28120 
-28121 
-28122 
-28123 
-28124 
-28125 
-28126 
-28127 
-28128 
-28129 
-28130 
-28131 
-28132 
-28133 
-28134 
-28135 
-28136 
-28137 
-28138 
-28139 
-28140 
-28141 
-28142 
-28143 
-28144 
-28145 
-28146 
-28147 
-28148 
-28149 
-28150 
-28151 
-28152 
-28153 
-28154 
-28155 
-28156 
-28157 
-28158 
-28159 
-28160 
-28161 
-28162 
-28163 
-28164 
-28165 
-28166 
-28167 
-28168 
-28169 
-28170 
-28171 
-28172 
-28173 
-28174 
-28175 
-28176 
-28177 
-28178 
-28179 
-28180 
-28181 
-28182 
-28183 
-28184 
-28185 
-28186 
-28187 
-28188 
-28189 
-28190 
-28191 
-28192 
-28193 
-28194 
-28195 
-28196 
-28197 
-28198 
-28199 
-28200 
-28201 
-28202 
-28203 
-28204 
-28205 
-28206 
-28207 
-28208 
-28209 
-28210 
-28211 
-28212 
-28213 
-28214 
-28215 
-28216 
-28217 
-28218 
-28219 
-28220 
-28221 
-28222 
-28223 
-28224 
-28225 
-28226 
-28227 
-28228 
-28229 
-28230 
-28231 
-28232 
-28233 
-28234 
-28235 
-28236 
-28237 
-28238 
-28239 
-28240 
-28241 
-28242 
-28243 
-28244 
-28245 
-28246 
-28247 
-28248 
-28249 
-28250 
-28251 
-28252 
-28253 
-28254 
-28255 
-28256 
-28257 
-28258 
-28259 
-28260 
-28261 
-28262 
-28263 
-28264 
-28265 
-28266 
-28267 
-28268 
-28269 
-28270 
-28271 
-28272 
-28273 
-28274 
-28275 
-28276 
-28277 
-28278 
-28279 
-28280 
-28281 
-28282 
-28283 
-28284 
-28285 
-28286 
-28287 
-28288 
-28289 
-28290 
-28291 
-28292 
-28293 
-28294 
-28295 
-28296 
-28297 
-28298 
-28299 
-28300 
-28301 
-28302 
-28303 
-28304 
-28305 
-28306 
-28307 
-28308 
-28309 
-28310 
-28311 
-28312 
-28313 
-28314 
-28315 
-28316 
-28317 
-28318 
-28319 
-28320 
-28321 
-28322 
-28323 
-28324 
-28325 
-28326 
-28327 
-28328 
-28329 
-28330 
-28331 
-28332 
-28333 
-28334 
-28335 
-28336 
-28337 
-28338 
-28339 
-28340 
-28341 
-28342 
-28343 
-28344 
-28345 
-28346 
-28347 
-28348 
-28349 
-28350 
-28351 
-28352 
-28353 
-28354 
-28355 
-28356 
-28357 
-28358 
-28359 
-28360 
-28361 
-28362 
-28363 
-28364 
-28365 
-28366 
-28367 
-28368 
-28369 
-28370 
-28371 
-28372 
-28373 
-28374 
-28375 
-28376 
-28377 
-28378 
-28379 
-28380 
-28381 
-28382 
-28383 
-28384 
-28385 
-28386 
-28387 
-28388 
-28389 
-28390 
-28391 
-28392 
-28393 
-28394 
-28395 
-28396 
-28397 
-28398 
-28399 
-28400 
-28401 
-28402 
-28403 
-28404 
-28405 
-28406 
-28407 
-28408 
-28409 
-28410 
-28411 
-28412 
-28413 
-28414 
-28415 
-28416 
-28417 
-28418 
-28419 
-28420 
-28421 
-28422 
-28423 
-28424 
-28425 
-28426 
-28427 
-28428 
-28429 
-28430 
-28431 
-28432 
-28433 
-28434 
-28435 
-28436 
-28437 
-28438 
-28439 
-28440 
-28441 
-28442 
-28443 
-28444 
-28445 
-28446 
-28447 
-28448 
-28449 
-28450 
-28451 
-28452 
-28453 
-28454 
-28455 
-28456 
-28457 
-28458 
-28459 
-28460 
-28461 
-28462 
-28463 
-28464 
-28465 
-28466 
-28467 
-28468 
-28469 
-28470 
-28471 
-28472 
-28473 
-28474 
-28475 
-28476 
-28477 
-28478 
-28479 
-28480 
-28481 
-28482 
-28483 
-28484 
-28485 
-28486 
-28487 
-28488 
-28489 
-28490 
-28491 
-28492 
-28493 
-28494 
-28495 
-28496 
-28497 
-28498 
-28499 
-28500 
-28501 
-28502 
-28503 
-28504 
-28505 
-28506 
-28507 
-28508 
-28509 
-28510 
-28511 
-28512 
-28513 
-28514 
-28515 
-28516 
-28517 
-28518 
-28519 
-28520 
-28521 
-28522 
-28523 
-28524 
-28525 
-28526 
-28527 
-28528 
-28529 
-28530 
-28531 
-28532 
-28533 
-28534 
-28535 
-28536 
-28537 
-28538 
-28539 
-28540 
-28541 
-28542 
-28543 
-28544 
-28545 
-28546 
-28547 
-28548 
-28549 
-28550 
-28551 
-28552 
-28553 
-28554 
-28555 
-28556 
-28557 
-28558 
-28559 
-28560 
-28561 
-28562 
-28563 
-28564 
-28565 
-28566 
-28567 
-28568 
-28569 
-28570 
-28571 
-28572 
-28573 
-28574 
-28575 
-28576 
-28577 
-28578 
-28579 
-28580 
-28581 
-28582 
-28583 
-28584 
-28585 
-28586 
-28587 
-28588 
-28589 
-28590 
-28591 
-28592 
-28593 
-28594 
-28595 
-28596 
-28597 
-28598 
-28599 
-28600 
-28601 
-28602 
-28603 
-28604 
-28605 
-28606 
-28607 
-28608 
-28609 
-28610 
-28611 
-28612 
-28613 
-28614 
-28615 
-28616 
-28617 
-28618 
-28619 
-28620 
-28621 
-28622 
-28623 
-28624 
-28625 
-28626 
-28627 
-28628 
-28629 
-28630 
-28631 
-28632 
-28633 
-28634 
-28635 
-28636 
-28637 
-28638 
-28639 
-28640 
-28641 
-28642 
-28643 
-28644 
-28645 
-28646 
-28647 
-28648 
-28649 
-28650 
-28651 
-28652 
-28653 
-28654 
-28655 
-28656 
-28657 
-28658 
-28659 
-28660 
-28661 
-28662 
-28663 
-28664 
-28665 
-28666 
-28667 
-28668 
-28669 
-28670 
-28671 
-28672 
-28673 
-28674 
-28675 
-28676 
-28677 
-28678 
-28679 
-28680 
-28681 
-28682 
-28683 
-28684 
-28685 
-28686 
-28687 
-28688 
-28689 
-28690 
-28691 
-28692 
-28693 
-28694 
-28695 
-28696 
-28697 
-28698 
-28699 
-28700 
-28701 
-28702 
-28703 
-28704 
-28705 
-28706 
-28707 
-28708 
-28709 
-28710 
-28711 
-28712 
-28713 
-28714 
-28715 
-28716 
-28717 
-28718 
-28719 
-28720 
-28721 
-28722 
-28723 
-28724 
-28725 
-28726 
-28727 
-28728 
-28729 
-28730 
-28731 
-28732 
-28733 
-28734 
-28735 
-28736 
-28737 
-28738 
-28739 
-28740 
-28741 
-28742 
-28743 
-28744 
-28745 
-28746 
-28747 
-28748 
-28749 
-28750 
-28751 
-28752 
-28753 
-28754 
-28755 
-28756 
-28757 
-28758 
-28759 
-28760 
-28761 
-28762 
-28763 
-28764 
-28765 
-28766 
-28767 
-28768 
-28769 
-28770 
-28771 
-28772 
-28773 
-28774 
-28775 
-28776 
-28777 
-28778 
-28779 
-28780 
-28781 
-28782 
-28783 
-28784 
-28785 
-28786 
-28787 
-28788 
-28789 
-28790 
-28791 
-28792 
-28793 
-28794 
-28795 
-28796 
-28797 
-28798 
-28799 
-28800 
-28801 
-28802 
-28803 
-28804 
-28805 
-28806 
-28807 
-28808 
-28809 
-28810 
-28811 
-28812 
-28813 
-28814 
-28815 
-28816 
-28817 
-28818 
-28819 
-28820 
-28821 
-28822 
-28823 
-28824 
-28825 
-28826 
-28827 
-28828 
-28829 
-28830 
-28831 
-28832 
-28833 
-28834 
-28835 
-28836 
-28837 
-28838 
-28839 
-28840 
-28841 
-28842 
-28843 
-28844 
-28845 
-28846 
-28847 
-28848 
-28849 
-28850 
-28851 
-28852 
-28853 
-28854 
-28855 
-28856 
-28857 
-28858 
-28859 
-28860 
-28861 
-28862 
-28863 
-28864 
-28865 
-28866 
-28867 
-28868 
-28869 
-28870 
-28871 
-28872 
-28873 
-28874 
-28875 
-28876 
-28877 
-28878 
-28879 
-28880 
-28881 
-28882 
-28883 
-28884 
-28885 
-28886 
-28887 
-28888 
-28889 
-28890 
-28891 
-28892 
-28893 
-28894 
-28895 
-28896 
-28897 
-28898 
-28899 
-28900 
-28901 
-28902 
-28903 
-28904 
-28905 
-28906 
-28907 
-28908 
-28909 
-28910 
-28911 
-28912 
-28913 
-28914 
-28915 
-28916 
-28917 
-28918 
-28919 
-28920 
-28921 
-28922 
-28923 
-28924 
-28925 
-28926 
-28927 
-28928 
-28929 
-28930 
-28931 
-28932 
-28933 
-28934 
-28935 
-28936 
-28937 
-28938 
-28939 
-28940 
-28941 
-28942 
-28943 
-28944 
-28945 
-28946 
-28947 
-28948 
-28949 
-28950 
-28951 
-28952 
-28953 
-28954 
-28955 
-28956 
-28957 
-28958 
-28959 
-28960 
-28961 
-28962 
-28963 
-28964 
-28965 
-28966 
-28967 
-28968 
-28969 
-28970 
-28971 
-28972 
-28973 
-28974 
-28975 
-28976 
-28977 
-28978 
-28979 
-28980 
-28981 
-28982 
-28983 
-28984 
-28985 
-28986 
-28987 
-28988 
-28989 
-28990 
-28991 
-28992 
-28993 
-28994 
-28995 
-28996 
-28997 
-28998 
-28999 
-29000 
-29001 
-29002 
-29003 
-29004 
-29005 
-29006 
-29007 
-29008 
-29009 
-29010 
-29011 
-29012 
-29013 
-29014 
-29015 
-29016 
-29017 
-29018 
-29019 
-29020 
-29021 
-29022 
-29023 
-29024 
-29025 
-29026 
-29027 
-29028 
-29029 
-29030 
-29031 
-29032 
-29033 
-29034 
-29035 
-29036 
-29037 
-29038 
-29039 
-29040 
-29041 
-29042 
-29043 
-29044 
-29045 
-29046 
-29047 
-29048 
-29049 
-29050 
-29051 
-29052 
-29053 
-29054 
-29055 
-29056 
-29057 
-29058 
-29059 
-29060 
-29061 
-29062 
-29063 
-29064 
-29065 
-29066 
-29067 
-29068 
-29069 
-29070 
-29071 
-29072 
-29073 
-29074 
-29075 
-29076 
-29077 
-29078 
-29079 
-29080 
-29081 
-29082 
-29083 
-29084 
-29085 
-29086 
-29087 
-29088 
-29089 
-29090 
-29091 
-29092 
-29093 
-29094 
-29095 
-29096 
-29097 
-29098 
-29099 
-29100 
-29101 
-29102 
-29103 
-29104 
-29105 
-29106 
-29107 
-29108 
-29109 
-29110 
-29111 
-29112 
-29113 
-29114 
-29115 
-29116 
-29117 
-29118 
-29119 
-29120 
-29121 
-29122 
-29123 
-29124 
-29125 
-29126 
-29127 
-29128 
-29129 
-29130 
-29131 
-29132 
-29133 
-29134 
-29135 
-29136 
-29137 
-29138 
-29139 
-29140 
-29141 
-29142 
-29143 
-29144 
-29145 
-29146 
-29147 
-29148 
-29149 
-29150 
-29151 
-29152 
-29153 
-29154 
-29155 
-29156 
-29157 
-29158 
-29159 
-29160 
-29161 
-29162 
-29163 
-29164 
-29165 
-29166 
-29167 
-29168 
-29169 
-29170 
-29171 
-29172 
-29173 
-29174 
-29175 
-29176 
-29177 
-29178 
-29179 
-29180 
-29181 
-29182 
-29183 
-29184 
-29185 
-29186 
-29187 
-29188 
-29189 
-29190 
-29191 
-29192 
-29193 
-29194 
-29195 
-29196 
-29197 
-29198 
-29199 
-29200 
-29201 
-29202 
-29203 
-29204 
-29205 
-29206 
-29207 
-29208 
-29209 
-29210 
-29211 
-29212 
-29213 
-29214 
-29215 
-29216 
-29217 
-29218 
-29219 
-29220 
-29221 
-29222 
-29223 
-29224 
-29225 
-29226 
-29227 
-29228 
-29229 
-29230 
-29231 
-29232 
-29233 
-29234 
-29235 
-29236 
-29237 
-29238 
-29239 
-29240 
-29241 
-29242 
-29243 
-29244 
-29245 
-29246 
-29247 
-29248 
-29249 
-29250 
-29251 
-29252 
-29253 
-29254 
-29255 
-29256 
-29257 
-29258 
-29259 
-29260 
-29261 
-29262 
-29263 
-29264 
-29265 
-29266 
-29267 
-29268 
-29269 
-29270 
-29271 
-29272 
-29273 
-29274 
-29275 
-29276 
-29277 
-29278 
-29279 
-29280 
-29281 
-29282 
-29283 
-29284 
-29285 
-29286 
-29287 
-29288 
-29289 
-29290 
-29291 
-29292 
-29293 
-29294 
-29295 
-29296 
-29297 
-29298 
-29299 
-29300 
-29301 
-29302 
-29303 
-29304 
-29305 
-29306 
-29307 
-29308 
-29309 
-29310 
-29311 
-29312 
-29313 
-29314 
-29315 
-29316 
-29317 
-29318 
-29319 
-29320 
-29321 
-29322 
-29323 
-29324 
-29325 
-29326 
-29327 
-29328 
-29329 
-29330 
-29331 
-29332 
-29333 
-29334 
-29335 
-29336 
-29337 
-29338 
-29339 
-29340 
-29341 
-29342 
-29343 
-29344 
-29345 
-29346 
-29347 
-29348 
-29349 
-29350 
-29351 
-29352 
-29353 
-29354 
-29355 
-29356 
-29357 
-29358 
-29359 
-29360 
-29361 
-29362 
-29363 
-29364 
-29365 
-29366 
-29367 
-29368 
-29369 
-29370 
-29371 
-29372 
-29373 
-29374 
-29375 
-29376 
-29377 
-29378 
-29379 
-29380 
-29381 
-29382 
-29383 
-29384 
-29385 
-29386 
-29387 
-29388 
-29389 
-29390 
-29391 
-29392 
-29393 
-29394 
-29395 
-29396 
-29397 
-29398 
-29399 
-29400 
-29401 
-29402 
-29403 
-29404 
-29405 
-29406 
-29407 
-29408 
-29409 
-29410 
-29411 
-29412 
-29413 
-29414 
-29415 
-29416 
-29417 
-29418 
-29419 
-29420 
-29421 
-29422 
-29423 
-29424 
-29425 
-29426 
-29427 
-29428 
-29429 
-29430 
-29431 
-29432 
-29433 
-29434 
-29435 
-29436 
-29437 
-29438 
-29439 
-29440 
-29441 
-29442 
-29443 
-29444 
-29445 
-29446 
-29447 
-29448 
-29449 
-29450 
-29451 
-29452 
-29453 
-29454 
-29455 
-29456 
-29457 
-29458 
-29459 
-29460 
-29461 
-29462 
-29463 
-29464 
-29465 
-29466 
-29467 
-29468 
-29469 
-29470 
-29471 
-29472 
-29473 
-29474 
-29475 
-29476 
-29477 
-29478 
-29479 
-29480 
-29481 
-29482 
-29483 
-29484 
-29485 
-29486 
-29487 
-29488 
-29489 
-29490 
-29491 
-29492 
-29493 
-29494 
-29495 
-29496 
-29497 
-29498 
-29499 
-29500 
-29501 
-29502 
-29503 
-29504 
-29505 
-29506 
-29507 
-29508 
-29509 
-29510 
-29511 
-29512 
-29513 
-29514 
-29515 
-29516 
-29517 
-29518 
-29519 
-29520 
-29521 
-29522 
-29523 
-29524 
-29525 
-29526 
-29527 
-29528 
-29529 
-29530 
-29531 
-29532 
-29533 
-29534 
-29535 
-29536 
-29537 
-29538 
-29539 
-29540 
-29541 
-29542 
-29543 
-29544 
-29545 
-29546 
-29547 
-29548 
-29549 
-29550 
-29551 
-29552 
-29553 
-29554 
-29555 
-29556 
-29557 
-29558 
-29559 
-29560 
-29561 
-29562 
-29563 
-29564 
-29565 
-29566 
-29567 
-29568 
-29569 
-29570 
-29571 
-29572 
-29573 
-29574 
-29575 
-29576 
-29577 
-29578 
-29579 
-29580 
-29581 
-29582 
-29583 
-29584 
-29585 
-29586 
-29587 
-29588 
-29589 
-29590 
-29591 
-29592 
-29593 
-29594 
-29595 
-29596 
-29597 
-29598 
-29599 
-29600 
-29601 
-29602 
-29603 
-29604 
-29605 
-29606 
-29607 
-29608 
-29609 
-29610 
-29611 
-29612 
-29613 
-29614 
-29615 
-29616 
-29617 
-29618 
-29619 
-29620 
-29621 
-29622 
-29623 
-29624 
-29625 
-29626 
-29627 
-29628 
-29629 
-29630 
-29631 
-29632 
-29633 
-29634 
-29635 
-29636 
-29637 
-29638 
-29639 
-29640 
-29641 
-29642 
-29643 
-29644 
-29645 
-29646 
-29647 
-29648 
-29649 
-29650 
-29651 
-29652 
-29653 
-29654 
-29655 
-29656 
-29657 
-29658 
-29659 
-29660 
-29661 
-29662 
-29663 
-29664 
-29665 
-29666 
-29667 
-29668 
-29669 
-29670 
-29671 
-29672 
-29673 
-29674 
-29675 
-29676 
-29677 
-29678 
-29679 
-29680 
-29681 
-29682 
-29683 
-29684 
-29685 
-29686 
-29687 
-29688 
-29689 
-29690 
-29691 
-29692 
-29693 
-29694 
-29695 
-29696 
-29697 
-29698 
-29699 
-29700 
-29701 
-29702 
-29703 
-29704 
-29705 
-29706 
-29707 
-29708 
-29709 
-29710 
-29711 
-29712 
-29713 
-29714 
-29715 
-29716 
-29717 
-29718 
-29719 
-29720 
-29721 
-29722 
-29723 
-29724 
-29725 
-29726 
-29727 
-29728 
-29729 
-29730 
-29731 
-29732 
-29733 
-29734 
-29735 
-29736 
-29737 
-29738 
-29739 
-29740 
-29741 
-29742 
-29743 
-29744 
-29745 
-29746 
-29747 
-29748 
-29749 
-29750 
-29751 
-29752 
-29753 
-29754 
-29755 
-29756 
-29757 
-29758 
-29759 
-29760 
-29761 
-29762 
-29763 
-29764 
-29765 
-29766 
-29767 
-29768 
-29769 
-29770 
-29771 
-29772 
-29773 
-29774 
-29775 
-29776 
-29777 
-29778 
-29779 
-29780 
-29781 
-29782 
-29783 
-29784 
-29785 
-29786 
-29787 
-29788 
-29789 
-29790 
-29791 
-29792 
-29793 
-29794 
-29795 
-29796 
-29797 
-29798 
-29799 
-29800 
-29801 
-29802 
-29803 
-29804 
-29805 
-29806 
-29807 
-29808 
-29809 
-29810 
-29811 
-29812 
-29813 
-29814 
-29815 
-29816 
-29817 
-29818 
-29819 
-29820 
-29821 
-29822 
-29823 
-29824 
-29825 
-29826 
-29827 
-29828 
-29829 
-29830 
-29831 
-29832 
-29833 
-29834 
-29835 
-29836 
-29837 
-29838 
-29839 
-29840 
-29841 
-29842 
-29843 
-29844 
-29845 
-29846 
-29847 
-29848 
-29849 
-29850 
-29851 
-29852 
-29853 
-29854 
-29855 
-29856 
-29857 
-29858 
-29859 
-29860 
-29861 
-29862 
-29863 
-29864 
-29865 
-29866 
-29867 
-29868 
-29869 
-29870 
-29871 
-29872 
-29873 
-29874 
-29875 
-29876 
-29877 
-29878 
-29879 
-29880 
-29881 
-29882 
-29883 
-29884 
-29885 
-29886 
-29887 
-29888 
-29889 
-29890 
-29891 
-29892 
-29893 
-29894 
-29895 
-29896 
-29897 
-29898 
-29899 
-29900 
-29901 
-29902 
-29903 
-29904 
-29905 
-29906 
-29907 
-29908 
-29909 
-29910 
-29911 
-29912 
-29913 
-29914 
-29915 
-29916 
-29917 
-29918 
-29919 
-29920 
-29921 
-29922 
-29923 
-29924 
-29925 
-29926 
-29927 
-29928 
-29929 
-29930 
-29931 
-29932 
-29933 
-29934 
-29935 
-29936 
-29937 
-29938 
-29939 
-29940 
-29941 
-29942 
-29943 
-29944 
-29945 
-29946 
-29947 
-29948 
-29949 
-29950 
-29951 
-29952 
-29953 
-29954 
-29955 
-29956 
-29957 
-29958 
-29959 
-29960 
-29961 
-29962 
-29963 
-29964 
-29965 
-29966 
-29967 
-29968 
-29969 
-29970 
-29971 
-29972 
-29973 
-29974 
-29975 
-29976 
-29977 
-29978 
-29979 
-29980 
-29981 
-29982 
-29983 
-29984 
-29985 
-29986 
-29987 
-29988 
-29989 
-29990 
-29991 
-29992 
-29993 
-29994 
-29995 
-29996 
-29997 
-29998 
-29999 
-30000 
-30001 
-30002 
-30003 
-30004 
-30005 
-30006 
-30007 
-30008 
-30009 
-30010 
-30011 
-30012 
-30013 
-30014 
-30015 
-30016 
-30017 
-30018 
-30019 
-30020 
-30021 
-30022 
-30023 
-30024 
-30025 
-30026 
-30027 
-30028 
-30029 
-30030 
-30031 
-30032 
-30033 
-30034 
-30035 
-30036 
-30037 
-30038 
-30039 
-30040 
-30041 
-30042 
-30043 
-30044 
-30045 
-30046 
-30047 
-30048 
-30049 
-30050 
-30051 
-30052 
-30053 
-30054 
-30055 
-30056 
-30057 
-30058 
-30059 
-30060 
-30061 
-30062 
-30063 
-30064 
-30065 
-30066 
-30067 
-30068 
-30069 
-30070 
-30071 
-30072 
-30073 
-30074 
-30075 
-30076 
-30077 
-30078 
-30079 
-30080 
-30081 
-30082 
-30083 
-30084 
-30085 
-30086 
-30087 
-30088 
-30089 
-30090 
-30091 
-30092 
-30093 
-30094 
-30095 
-30096 
-30097 
-30098 
-30099 
-30100 
-30101 
-30102 
-30103 
-30104 
-30105 
-30106 
-30107 
-30108 
-30109 
-30110 
-30111 
-30112 
-30113 
-30114 
-30115 
-30116 
-30117 
-30118 
-30119 
-30120 
-30121 
-30122 
-30123 
-30124 
-30125 
-30126 
-30127 
-30128 
-30129 
-30130 
-30131 
-30132 
-30133 
-30134 
-30135 
-30136 
-30137 
-30138 
-30139 
-30140 
-30141 
-30142 
-30143 
-30144 
-30145 
-30146 
-30147 
-30148 
-30149 
-30150 
-30151 
-30152 
-30153 
-30154 
-30155 
-30156 
-30157 
-30158 
-30159 
-30160 
-30161 
-30162 
-30163 
-30164 
-30165 
-30166 
-30167 
-30168 
-30169 
-30170 
-30171 
-30172 
-30173 
-30174 
-30175 
-30176 
-30177 
-30178 
-30179 
-30180 
-30181 
-30182 
-30183 
-30184 
-30185 
-30186 
-30187 
-30188 
-30189 
-30190 
-30191 
-30192 
-30193 
-30194 
-30195 
-30196 
-30197 
-30198 
-30199 
-30200 
-30201 
-30202 
-30203 
-30204 
-30205 
-30206 
-30207 
-30208 
-30209 
-30210 
-30211 
-30212 
-30213 
-30214 
-30215 
-30216 
-30217 
-30218 
-30219 
-30220 
-30221 
-30222 
-30223 
-30224 
-30225 
-30226 
-30227 
-30228 
-30229 
-30230 
-30231 
-30232 
-30233 
-30234 
-30235 
-30236 
-30237 
-30238 
-30239 
-30240 
-30241 
-30242 
-30243 
-30244 
-30245 
-30246 
-30247 
-30248 
-30249 
-30250 
-30251 
-30252 
-30253 
-30254 
-30255 
-30256 
-30257 
-30258 
-30259 
-30260 
-30261 
-30262 
-30263 
-30264 
-30265 
-30266 
-30267 
-30268 
-30269 
-30270 
-30271 
-30272 
-30273 
-30274 
-30275 
-30276 
-30277 
-30278 
-30279 
-30280 
-30281 
-30282 
-30283 
-30284 
-30285 
-30286 
-30287 
-30288 
-30289 
-30290 
-30291 
-30292 
-30293 
-30294 
-30295 
-30296 
-30297 
-30298 
-30299 
-30300 
-30301 
-30302 
-30303 
-30304 
-30305 
-30306 
-30307 
-30308 
-30309 
-30310 
-30311 
-30312 
-30313 
-30314 
-30315 
-30316 
-30317 
-30318 
-30319 
-30320 
-30321 
-30322 
-30323 
-30324 
-30325 
-30326 
-30327 
-30328 
-30329 
-30330 
-30331 
-30332 
-30333 
-30334 
-30335 
-30336 
-30337 
-30338 
-30339 
-30340 
-30341 
-30342 
-30343 
-30344 
-30345 
-30346 
-30347 
-30348 
-30349 
-30350 
-30351 
-30352 
-30353 
-30354 
-30355 
-30356 
-30357 
-30358 
-30359 
-30360 
-30361 
-30362 
-30363 
-30364 
-30365 
-30366 
-30367 
-30368 
-30369 
-30370 
-30371 
-30372 
-30373 
-30374 
-30375 
-30376 
-30377 
-30378 
-30379 
-30380 
-30381 
-30382 
-30383 
-30384 
-30385 
-30386 
-30387 
-30388 
-30389 
-30390 
-30391 
-30392 
-30393 
-30394 
-30395 
-30396 
-30397 
-30398 
-30399 
-30400 
-30401 
-30402 
-30403 
-30404 
-30405 
-30406 
-30407 
-30408 
-30409 
-30410 
-30411 
-30412 
-30413 
-30414 
-30415 
-30416 
-30417 
-30418 
-30419 
-30420 
-30421 
-30422 
-30423 
-30424 
-30425 
-30426 
-30427 
-30428 
-30429 
-30430 
-30431 
-30432 
-30433 
-30434 
-30435 
-30436 
-30437 
-30438 
-30439 
-30440 
-30441 
-30442 
-30443 
-30444 
-30445 
-30446 
-30447 
-30448 
-30449 
-30450 
-30451 
-30452 
-30453 
-30454 
-30455 
-30456 
-30457 
-30458 
-30459 
-30460 
-30461 
-30462 
-30463 
-30464 
-30465 
-30466 
-30467 
-30468 
-30469 
-30470 
-30471 
-30472 
-30473 
-30474 
-30475 
-30476 
-30477 
-30478 
-30479 
-30480 
-30481 
-30482 
-30483 
-30484 
-30485 
-30486 
-30487 
-30488 
-30489 
-30490 
-30491 
-30492 
-30493 
-30494 
-30495 
-30496 
-30497 
-30498 
-30499 
-30500 
-30501 
-30502 
-30503 
-30504 
-30505 
-30506 
-30507 
-30508 
-30509 
-30510 
-30511 
-30512 
-30513 
-30514 
-30515 
-30516 
-30517 
-30518 
-30519 
-30520 
-30521 
-30522 
-30523 
-30524 
-30525 
-30526 
-30527 
-30528 
-30529 
-30530 
-30531 
-30532 
-30533 
-30534 
-30535 
-30536 
-30537 
-30538 
-30539 
-30540 
-30541 
-30542 
-30543 
-30544 
-30545 
-30546 
-30547 
-30548 
-30549 
-30550 
-30551 
-30552 
-30553 
-30554 
-30555 
-30556 
-30557 
-30558 
-30559 
-30560 
-30561 
-30562 
-30563 
-30564 
-30565 
-30566 
-30567 
-30568 
-30569 
-30570 
-30571 
-30572 
-30573 
-30574 
-30575 
-30576 
-30577 
-30578 
-30579 
-30580 
-30581 
-30582 
-30583 
-30584 
-30585 
-30586 
-30587 
-30588 
-30589 
-30590 
-30591 
-30592 
-30593 
-30594 
-30595 
-30596 
-30597 
-30598 
-30599 
-30600 
-30601 
-30602 
-30603 
-30604 
-30605 
-30606 
-30607 
-30608 
-30609 
-30610 
-30611 
-30612 
-30613 
-30614 
-30615 
-30616 
-30617 
-30618 
-30619 
-30620 
-30621 
-30622 
-30623 
-30624 
-30625 
-30626 
-30627 
-30628 
-30629 
-30630 
-30631 
-30632 
-30633 
-30634 
-30635 
-30636 
-30637 
-30638 
-30639 
-30640 
-30641 
-30642 
-30643 
-30644 
-30645 
-30646 
-30647 
-30648 
-30649 
-30650 
-30651 
-30652 
-30653 
-30654 
-30655 
-30656 
-30657 
-30658 
-30659 
-30660 
-30661 
-30662 
-30663 
-30664 
-30665 
-30666 
-30667 
-30668 
-30669 
-30670 
-30671 
-30672 
-30673 
-30674 
-30675 
-30676 
-30677 
-30678 
-30679 
-30680 
-30681 
-30682 
-30683 
-30684 
-30685 
-30686 
-30687 
-30688 
-30689 
-30690 
-30691 
-30692 
-30693 
-30694 
-30695 
-30696 
-30697 
-30698 
-30699 
-30700 
-30701 
-30702 
-30703 
-30704 
-30705 
-30706 
-30707 
-30708 
-30709 
-30710 
-30711 
-30712 
-30713 
-30714 
-30715 
-30716 
-30717 
-30718 
-30719 
-30720 
-30721 
-30722 
-30723 
-30724 
-30725 
-30726 
-30727 
-30728 
-30729 
-30730 
-30731 
-30732 
-30733 
-30734 
-30735 
-30736 
-30737 
-30738 
-30739 
-30740 
-30741 
-30742 
-30743 
-30744 
-30745 
-30746 
-30747 
-30748 
-30749 
-30750 
-30751 
-30752 
-30753 
-30754 
-30755 
-30756 
-30757 
-30758 
-30759 
-30760 
-30761 
-30762 
-30763 
-30764 
-30765 
-30766 
-30767 
-30768 
-30769 
-30770 
-30771 
-30772 
-30773 
-30774 
-30775 
-30776 
-30777 
-30778 
-30779 
-30780 
-30781 
-30782 
-30783 
-30784 
-30785 
-30786 
-30787 
-30788 
-30789 
-30790 
-30791 
-30792 
-30793 
-30794 
-30795 
-30796 
-30797 
-30798 
-30799 
-30800 
-30801 
-30802 
-30803 
-30804 
-30805 
-30806 
-30807 
-30808 
-30809 
-30810 
-30811 
-30812 
-30813 
-30814 
-30815 
-30816 
-30817 
-30818 
-30819 
-30820 
-30821 
-30822 
-30823 
-30824 
-30825 
-30826 
-30827 
-30828 
-30829 
-30830 
-30831 
-30832 
-30833 
-30834 
-30835 
-30836 
-30837 
-30838 
-30839 
-30840 
-30841 
-30842 
-30843 
-30844 
-30845 
-30846 
-30847 
-30848 
-30849 
-30850 
-30851 
-30852 
-30853 
-30854 
-30855 
-30856 
-30857 
-30858 
-30859 
-30860 
-30861 
-30862 
-30863 
-30864 
-30865 
-30866 
-30867 
-30868 
-30869 
-30870 
-30871 
-30872 
-30873 
-30874 
-30875 
-30876 
-30877 
-30878 
-30879 
-30880 
-30881 
-30882 
-30883 
-30884 
-30885 
-30886 
-30887 
-30888 
-30889 
-30890 
-30891 
-30892 
-30893 
-30894 
-30895 
-30896 
-30897 
-30898 
-30899 
-30900 
-30901 
-30902 
-30903 
-30904 
-30905 
-30906 
-30907 
-30908 
-30909 
-30910 
-30911 
-30912 
-30913 
-30914 
-30915 
-30916 
-30917 
-30918 
-30919 
-30920 
-30921 
-30922 
-30923 
-30924 
-30925 
-30926 
-30927 
-30928 
-30929 
-30930 
-30931 
-30932 
-30933 
-30934 
-30935 
-30936 
-30937 
-30938 
-30939 
-30940 
-30941 
-30942 
-30943 
-30944 
-30945 
-30946 
-30947 
-30948 
-30949 
-30950 
-30951 
-30952 
-30953 
-30954 
-30955 
-30956 
-30957 
-30958 
-30959 
-30960 
-30961 
-30962 
-30963 
-30964 
-30965 
-30966 
-30967 
-30968 
-30969 
-30970 
-30971 
-30972 
-30973 
-30974 
-30975 
-30976 
-30977 
-30978 
-30979 
-30980 
-30981 
-30982 
-30983 
-30984 
-30985 
-30986 
-30987 
-30988 
-30989 
-30990 
-30991 
-30992 
-30993 
-30994 
-30995 
-30996 
-30997 
-30998 
-30999 
-31000 
-31001 
-31002 
-31003 
-31004 
-31005 
-31006 
-31007 
-31008 
-31009 
-31010 
-31011 
-31012 
-31013 
-31014 
-31015 
-31016 
-31017 
-31018 
-31019 
-31020 
-31021 
-31022 
-31023 
-31024 
-31025 
-31026 
-31027 
-31028 
-31029 
-31030 
-31031 
-31032 
-31033 
-31034 
-31035 
-31036 
-31037 
-31038 
-31039 
-31040 
-31041 
-31042 
-31043 
-31044 
-31045 
-31046 
-31047 
-31048 
-31049 
-31050 
-31051 
-31052 
-31053 
-31054 
-31055 
-31056 
-31057 
-31058 
-31059 
-31060 
-31061 
-31062 
-31063 
-31064 
-31065 
-31066 
-31067 
-31068 
-31069 
-31070 
-31071 
-31072 
-31073 
-31074 
-31075 
-31076 
-31077 
-31078 
-31079 
-31080 
-31081 
-31082 
-31083 
-31084 
-31085 
-31086 
-31087 
-31088 
-31089 
-31090 
-31091 
-31092 
-31093 
-31094 
-31095 
-31096 
-31097 
-31098 
-31099 
-31100 
-31101 
-31102 
-31103 
-31104 
-31105 
-31106 
-31107 
-31108 
-31109 
-31110 
-31111 
-31112 
-31113 
-31114 
-31115 
-31116 
-31117 
-31118 
-31119 
-31120 
-31121 
-31122 
-31123 
-31124 
-31125 
-31126 
-31127 
-31128 
-31129 
-31130 
-31131 
-31132 
-31133 
-31134 
-31135 
-31136 
-31137 
-31138 
-31139 
-31140 
-31141 
-31142 
-31143 
-31144 
-31145 
-31146 
-31147 
-31148 
-31149 
-31150 
-31151 
-31152 
-31153 
-31154 
-31155 
-31156 
-31157 
-31158 
-31159 
-31160 
-31161 
-31162 
-31163 
-31164 
-31165 
-31166 
-31167 
-31168 
-31169 
-31170 
-31171 
-31172 
-31173 
-31174 
-31175 
-31176 
-31177 
-31178 
-31179 
-31180 
-31181 
-31182 
-31183 
-31184 
-31185 
-31186 
-31187 
-31188 
-31189 
-31190 
-31191 
-31192 
-31193 
-31194 
-31195 
-31196 
-31197 
-31198 
-31199 
-31200 
-31201 
-31202 
-31203 
-31204 
-31205 
-31206 
-31207 
-31208 
-31209 
-31210 
-31211 
-31212 
-31213 
-31214 
-31215 
-31216 
-31217 
-31218 
-31219 
-31220 
-31221 
-31222 
-31223 
-31224 
-31225 
-31226 
-31227 
-31228 
-31229 
-31230 
-31231 
-31232 
-31233 
-31234 
-31235 
-31236 
-31237 
-31238 
-31239 
-31240 
-31241 
-31242 
-31243 
-31244 
-31245 
-31246 
-31247 
-31248 
-31249 
-31250 
-31251 
-31252 
-31253 
-31254 
-31255 
-31256 
-31257 
-31258 
-31259 
-31260 
-31261 
-31262 
-31263 
-31264 
-31265 
-31266 
-31267 
-31268 
-31269 
-31270 
-31271 
-31272 
-31273 
-31274 
-31275 
-31276 
-31277 
-31278 
-31279 
-31280 
-31281 
-31282 
-31283 
-31284 
-31285 
-31286 
-31287 
-31288 
-31289 
-31290 
-31291 
-31292 
-31293 
-31294 
-31295 
-31296 
-31297 
-31298 
-31299 
-31300 
-31301 
-31302 
-31303 
-31304 
-31305 
-31306 
-31307 
-31308 
-31309 
-31310 
-31311 
-31312 
-31313 
-31314 
-31315 
-31316 
-31317 
-31318 
-31319 
-31320 
-31321 
-31322 
-31323 
-31324 
-31325 
-31326 
-31327 
-31328 
-31329 
-31330 
-31331 
-31332 
-31333 
-31334 
-31335 
-31336 
-31337 
-31338 
-31339 
-31340 
-31341 
-31342 
-31343 
-31344 
-31345 
-31346 
-31347 
-31348 
-31349 
-31350 
-31351 
-31352 
-31353 
-31354 
-31355 
-31356 
-31357 
-31358 
-31359 
-31360 
-31361 
-31362 
-31363 
-31364 
-31365 
-31366 
-31367 
-31368 
-31369 
-31370 
-31371 
-31372 
-31373 
-31374 
-31375 
-31376 
-31377 
-31378 
-31379 
-31380 
-31381 
-31382 
-31383 
-31384 
-31385 
-31386 
-31387 
-31388 
-31389 
-31390 
-31391 
-31392 
-31393 
-31394 
-31395 
-31396 
-31397 
-31398 
-31399 
-31400 
-31401 
-31402 
-31403 
-31404 
-31405 
-31406 
-31407 
-31408 
-31409 
-31410 
-31411 
-31412 
-31413 
-31414 
-31415 
-31416 
-31417 
-31418 
-31419 
-31420 
-31421 
-31422 
-31423 
-31424 
-31425 
-31426 
-31427 
-31428 
-31429 
-31430 
-31431 
-31432 
-31433 
-31434 
-31435 
-31436 
-31437 
-31438 
-31439 
-31440 
-31441 
-31442 
-31443 
-31444 
-31445 
-31446 
-31447 
-31448 
-31449 
-31450 
-31451 
-31452 
-31453 
-31454 
-31455 
-31456 
-31457 
-31458 
-31459 
-31460 
-31461 
-31462 
-31463 
-31464 
-31465 
-31466 
-31467 
-31468 
-31469 
-31470 
-31471 
-31472 
-31473 
-31474 
-31475 
-31476 
-31477 
-31478 
-31479 
-31480 
-31481 
-31482 
-31483 
-31484 
-31485 
-31486 
-31487 
-31488 
-31489 
-31490 
-31491 
-31492 
-31493 
-31494 
-31495 
-31496 
-31497 
-31498 
-31499 
-31500 
-31501 
-31502 
-31503 
-31504 
-31505 
-31506 
-31507 
-31508 
-31509 
-31510 
-31511 
-31512 
-31513 
-31514 
-31515 
-31516 
-31517 
-31518 
-31519 
-31520 
-31521 
-31522 
-31523 
-31524 
-31525 
-31526 
-31527 
-31528 
-31529 
-31530 
-31531 
-31532 
-31533 
-31534 
-31535 
-31536 
-31537 
-31538 
-31539 
-31540 
-31541 
-31542 
-31543 
-31544 
-31545 
-31546 
-31547 
-31548 
-31549 
-31550 
-31551 
-31552 
-31553 
-31554 
-31555 
-31556 
-31557 
-31558 
-31559 
-31560 
-31561 
-31562 
-31563 
-31564 
-31565 
-31566 
-31567 
-31568 
-31569 
-31570 
-31571 
-31572 
-31573 
-31574 
-31575 
-31576 
-31577 
-31578 
-31579 
-31580 
-31581 
-31582 
-31583 
-31584 
-31585 
-31586 
-31587 
-31588 
-31589 
-31590 
-31591 
-31592 
-31593 
-31594 
-31595 
-31596 
-31597 
-31598 
-31599 
-31600 
-31601 
-31602 
-31603 
-31604 
-31605 
-31606 
-31607 
-31608 
-31609 
-31610 
-31611 
-31612 
-31613 
-31614 
-31615 
-31616 
-31617 
-31618 
-31619 
-31620 
-31621 
-31622 
-31623 
-31624 
-31625 
-31626 
-31627 
-31628 
-31629 
-31630 
-31631 
-31632 
-31633 
-31634 
-31635 
-31636 
-31637 
-31638 
-31639 
-31640 
-31641 
-31642 
-31643 
-31644 
-31645 
-31646 
-31647 
-31648 
-31649 
-31650 
-31651 
-31652 
-31653 
-31654 
-31655 
-31656 
-31657 
-31658 
-31659 
-31660 
-31661 
-31662 
-31663 
-31664 
-31665 
-31666 
-31667 
-31668 
-31669 
-31670 
-31671 
-31672 
-31673 
-31674 
-31675 
-31676 
-31677 
-31678 
-31679 
-31680 
-31681 
-31682 
-31683 
-31684 
-31685 
-31686 
-31687 
-31688 
-31689 
-31690 
-31691 
-31692 
-31693 
-31694 
-31695 
-31696 
-31697 
-31698 
-31699 
-31700 
-31701 
-31702 
-31703 
-31704 
-31705 
-31706 
-31707 
-31708 
-31709 
-31710 
-31711 
-31712 
-31713 
-31714 
-31715 
-31716 
-31717 
-31718 
-31719 
-31720 
-31721 
-31722 
-31723 
-31724 
-31725 
-31726 
-31727 
-31728 
-31729 
-31730 
-31731 
-31732 
-31733 
-31734 
-31735 
-31736 
-31737 
-31738 
-31739 
-31740 
-31741 
-31742 
-31743 
-31744 
-31745 
-31746 
-31747 
-31748 
-31749 
-31750 
-31751 
-31752 
-31753 
-31754 
-31755 
-31756 
-31757 
-31758 
-31759 
-31760 
-31761 
-31762 
-31763 
-31764 
-31765 
-31766 
-31767 
-31768 
-31769 
-31770 
-31771 
-31772 
-31773 
-31774 
-31775 
-31776 
-31777 
-31778 
-31779 
-31780 
-31781 
-31782 
-31783 
-31784 
-31785 
-31786 
-31787 
-31788 
-31789 
-31790 
-31791 
-31792 
-31793 
-31794 
-31795 
-31796 
-31797 
-31798 
-31799 
-31800 
-31801 
-31802 
-31803 
-31804 
-31805 
-31806 
-31807 
-31808 
-31809 
-31810 
-31811 
-31812 
-31813 
-31814 
-31815 
-31816 
-31817 
-31818 
-31819 
-31820 
-31821 
-31822 
-31823 
-31824 
-31825 
-31826 
-31827 
-31828 
-31829 
-31830 
-31831 
-31832 
-31833 
-31834 
-31835 
-31836 
-31837 
-31838 
-31839 
-31840 
-31841 
-31842 
-31843 
-31844 
-31845 
-31846 
-31847 
-31848 
-31849 
-31850 
-31851 
-31852 
-31853 
-31854 
-31855 
-31856 
-31857 
-31858 
-31859 
-31860 
-31861 
-31862 
-31863 
-31864 
-31865 
-31866 
-31867 
-31868 
-31869 
-31870 
-31871 
-31872 
-31873 
-31874 
-31875 
-31876 
-31877 
-31878 
-31879 
-31880 
-31881 
-31882 
-31883 
-31884 
-31885 
-31886 
-31887 
-31888 
-31889 
-31890 
-31891 
-31892 
-31893 
-31894 
-31895 
-31896 
-31897 
-31898 
-31899 
-31900 
-31901 
-31902 
-31903 
-31904 
-31905 
-31906 
-31907 
-31908 
-31909 
-31910 
-31911 
-31912 
-31913 
-31914 
-31915 
-31916 
-31917 
-31918 
-31919 
-31920 
-31921 
-31922 
-31923 
-31924 
-31925 
-31926 
-31927 
-31928 
-31929 
-31930 
-31931 
-31932 
-31933 
-31934 
-31935 
-31936 
-31937 
-31938 
-31939 
-31940 
-31941 
-31942 
-31943 
-31944 
-31945 
-31946 
-31947 
-31948 
-31949 
-31950 
-31951 
-31952 
-31953 
-31954 
-31955 
-31956 
-31957 
-31958 
-31959 
-31960 
-31961 
-31962 
-31963 
-31964 
-31965 
-31966 
-31967 
-31968 
-31969 
-31970 
-31971 
-31972 
-31973 
-31974 
-31975 
-31976 
-31977 
-31978 
-31979 
-31980 
-31981 
-31982 
-31983 
-31984 
-31985 
-31986 
-31987 
-31988 
-31989 
-31990 
-31991 
-31992 
-31993 
-31994 
-31995 
-31996 
-31997 
-31998 
-31999 
-32000 
-32001 
-32002 
-32003 
-32004 
-32005 
-32006 
-32007 
-32008 
-32009 
-32010 
-32011 
-32012 
-32013 
-32014 
-32015 
-32016 
-32017 
-32018 
-32019 
-32020 
-32021 
-32022 
-32023 
-32024 
-32025 
-32026 
-32027 
-32028 
-32029 
-32030 
-32031 
-32032 
-32033 
-32034 
-32035 
-32036 
-32037 
-32038 
-32039 
-32040 
-32041 
-32042 
-32043 
-32044 
-32045 
-32046 
-32047 
-32048 
-32049 
-32050 
-32051 
-32052 
-32053 
-32054 
-32055 
-32056 
-32057 
-32058 
-32059 
-32060 
-32061 
-32062 
-32063 
-32064 
-32065 
-32066 
-32067 
-32068 
-32069 
-32070 
-32071 
-32072 
-32073 
-32074 
-32075 
-32076 
-32077 
-32078 
-32079 
-32080 
-32081 
-32082 
-32083 
-32084 
-32085 
-32086 
-32087 
-32088 
-32089 
-32090 
-32091 
-32092 
-32093 
-32094 
-32095 
-32096 
-32097 
-32098 
-32099 
-32100 
-32101 
-32102 
-32103 
-32104 
-32105 
-32106 
-32107 
-32108 
-32109 
-32110 
-32111 
-32112 
-32113 
-32114 
-32115 
-32116 
-32117 
-32118 
-32119 
-32120 
-32121 
-32122 
-32123 
-32124 
-32125 
-32126 
-32127 
-32128 
-32129 
-32130 
-32131 
-32132 
-32133 
-32134 
-32135 
-32136 
-32137 
-32138 
-32139 
-32140 
-32141 
-32142 
-32143 
-32144 
-32145 
-32146 
-32147 
-32148 
-32149 
-32150 
-32151 
-32152 
-32153 
-32154 
-32155 
-32156 
-32157 
-32158 
-32159 
-32160 
-32161 
-32162 
-32163 
-32164 
-32165 
-32166 
-32167 
-32168 
-32169 
-32170 
-32171 
-32172 
-32173 
-32174 
-32175 
-32176 
-32177 
-32178 
-32179 
-32180 
-32181 
-32182 
-32183 
-32184 
-32185 
-32186 
-32187 
-32188 
-32189 
-32190 
-32191 
-32192 
-32193 
-32194 
-32195 
-32196 
-32197 
-32198 
-32199 
-32200 
-32201 
-32202 
-32203 
-32204 
-32205 
-32206 
-32207 
-32208 
-32209 
-32210 
-32211 
-32212 
-32213 
-32214 
-32215 
-32216 
-32217 
-32218 
-32219 
-32220 
-32221 
-32222 
-32223 
-32224 
-32225 
-32226 
-32227 
-32228 
-32229 
-32230 
-32231 
-32232 
-32233 
-32234 
-32235 
-32236 
-32237 
-32238 
-32239 
-32240 
-32241 
-32242 
-32243 
-32244 
-32245 
-32246 
-32247 
-32248 
-32249 
-32250 
-32251 
-32252 
-32253 
-32254 
-32255 
-32256 
-32257 
-32258 
-32259 
-32260 
-32261 
-32262 
-32263 
-32264 
-32265 
-32266 
-32267 
-32268 
-32269 
-32270 
-32271 
-32272 
-32273 
-32274 
-32275 
-32276 
-32277 
-32278 
-32279 
-32280 
-32281 
-32282 
-32283 
-32284 
-32285 
-32286 
-32287 
-32288 
-32289 
-32290 
-32291 
-32292 
-32293 
-32294 
-32295 
-32296 
-32297 
-32298 
-32299 
-32300 
-32301 
-32302 
-32303 
-32304 
-32305 
-32306 
-32307 
-32308 
-32309 
-32310 
-32311 
-32312 
-32313 
-32314 
-32315 
-32316 
-32317 
-32318 
-32319 
-32320 
-32321 
-32322 
-32323 
-32324 
-32325 
-32326 
-32327 
-32328 
-32329 
-32330 
-32331 
-32332 
-32333 
-32334 
-32335 
-32336 
-32337 
-32338 
-32339 
-32340 
-32341 
-32342 
-32343 
-32344 
-32345 
-32346 
-32347 
-32348 
-32349 
-32350 
-32351 
-32352 
-32353 
-32354 
-32355 
-32356 
-32357 
-32358 
-32359 
-32360 
-32361 
-32362 
-32363 
-32364 
-32365 
-32366 
-32367 
-32368 
-32369 
-32370 
-32371 
-32372 
-32373 
-32374 
-32375 
-32376 
-32377 
-32378 
-32379 
-32380 
-32381 
-32382 
-32383 
-32384 
-32385 
-32386 
-32387 
-32388 
-32389 
-32390 
-32391 
-32392 
-32393 
-32394 
-32395 
-32396 
-32397 
-32398 
-32399 
-32400 
-32401 
-32402 
-32403 
-32404 
-32405 
-32406 
-32407 
-32408 
-32409 
-32410 
-32411 
-32412 
-32413 
-32414 
-32415 
-32416 
-32417 
-32418 
-32419 
-32420 
-32421 
-32422 
-32423 
-32424 
-32425 
-32426 
-32427 
-32428 
-32429 
-32430 
-32431 
-32432 
-32433 
-32434 
-32435 
-32436 
-32437 
-32438 
-32439 
-32440 
-32441 
-32442 
-32443 
-32444 
-32445 
-32446 
-32447 
-32448 
-32449 
-32450 
-32451 
-32452 
-32453 
-32454 
-32455 
-32456 
-32457 
-32458 
-32459 
-32460 
-32461 
-32462 
-32463 
-32464 
-32465 
-32466 
-32467 
-32468 
-32469 
-32470 
-32471 
-32472 
-32473 
-32474 
-32475 
-32476 
-32477 
-32478 
-32479 
-32480 
-32481 
-32482 
-32483 
-32484 
-32485 
-32486 
-32487 
-32488 
-32489 
-32490 
-32491 
-32492 
-32493 
-32494 
-32495 
-32496 
-32497 
-32498 
-32499 
-32500 
-32501 
-32502 
-32503 
-32504 
-32505 
-32506 
-32507 
-32508 
-32509 
-32510 
-32511 
-32512 
-32513 
-32514 
-32515 
-32516 
-32517 
-32518 
-32519 
-32520 
-32521 
-32522 
-32523 
-32524 
-32525 
-32526 
-32527 
-32528 
-32529 
-32530 
-32531 
-32532 
-32533 
-32534 
-32535 
-32536 
-32537 
-32538 
-32539 
-32540 
-32541 
-32542 
-32543 
-32544 
-32545 
-32546 
-32547 
-32548 
-32549 
-32550 
-32551 
-32552 
-32553 
-32554 
-32555 
-32556 
-32557 
-32558 
-32559 
-32560 
-32561 
-32562 
-32563 
-32564 
-32565 
-32566 
-32567 
-32568 
-32569 
-32570 
-32571 
-32572 
-32573 
-32574 
-32575 
-32576 
-32577 
-32578 
-32579 
-32580 
-32581 
-32582 
-32583 
-32584 
-32585 
-32586 
-32587 
-32588 
-32589 
-32590 
-32591 
-32592 
-32593 
-32594 
-32595 
-32596 
-32597 
-32598 
-32599 
-32600 
-32601 
-32602 
-32603 
-32604 
-32605 
-32606 
-32607 
-32608 
-32609 
-32610 
-32611 
-32612 
-32613 
-32614 
-32615 
-32616 
-32617 
-32618 
-32619 
-32620 
-32621 
-32622 
-32623 
-32624 
-32625 
-32626 
-32627 
-32628 
-32629 
-32630 
-32631 
-32632 
-32633 
-32634 
-32635 
-32636 
-32637 
-32638 
-32639 
-32640 
-32641 
-32642 
-32643 
-32644 
-32645 
-32646 
-32647 
-32648 
-32649 
-32650 
-32651 
-32652 
-32653 
-32654 
-32655 
-32656 
-32657 
-32658 
-32659 
-32660 
-32661 
-32662 
-32663 
-32664 
-32665 
-32666 
-32667 
-32668 
-32669 
-32670 
-32671 
-32672 
-32673 
-32674 
-32675 
-32676 
-32677 
-32678 
-32679 
-32680 
-32681 
-32682 
-32683 
-32684 
-32685 
-32686 
-32687 
-32688 
-32689 
-32690 
-32691 
-32692 
-32693 
-32694 
-32695 
-32696 
-32697 
-32698 
-32699 
-32700 
-32701 
-32702 
-32703 
-32704 
-32705 
-32706 
-32707 
-32708 
-32709 
-32710 
-32711 
-32712 
-32713 
-32714 
-32715 
-32716 
-32717 
-32718 
-32719 
-32720 
-32721 
-32722 
-32723 
-32724 
-32725 
-32726 
-32727 
-32728 
-32729 
-32730 
-32731 
-32732 
-32733 
-32734 
-32735 
-32736 
-32737 
-32738 
-32739 
-32740 
-32741 
-32742 
-32743 
-32744 
-32745 
-32746 
-32747 
-32748 
-32749 
-32750 
-32751 
-32752 
-32753 
-32754 
-32755 
-32756 
-32757 
-32758 
-32759 
-32760 
-32761 
-32762 
-32763 
-32764 
-32765 
-32766 
-32767 
-)
-
-// ************************************************************************* //
diff --git a/tutorials/multiphase/interDyMFoam/ras/damBreakWithObstacle/constant/polyMesh/sets/c0_old b/tutorials/multiphase/interDyMFoam/ras/damBreakWithObstacle/constant/polyMesh/sets/c0_old
deleted file mode 100644
index e28610eeda927d09227498a77ec583d086216e02..0000000000000000000000000000000000000000
--- a/tutorials/multiphase/interDyMFoam/ras/damBreakWithObstacle/constant/polyMesh/sets/c0_old
+++ /dev/null
@@ -1,32789 +0,0 @@
-/*--------------------------------*- C++ -*----------------------------------*\
-| =========                 |                                                 |
-| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.5                                   |
-|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
-|    \\/     M anipulation  |                                                 |
-\*---------------------------------------------------------------------------*/
-FoamFile
-{
-    version     2.0;
-    format      ascii;
-    class       topoSet;
-    object      c0_old;
-}
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-32768
-(
-0 
-1 
-2 
-3 
-4 
-5 
-6 
-7 
-8 
-9 
-10 
-11 
-12 
-13 
-14 
-15 
-16 
-17 
-18 
-19 
-20 
-21 
-22 
-23 
-24 
-25 
-26 
-27 
-28 
-29 
-30 
-31 
-32 
-33 
-34 
-35 
-36 
-37 
-38 
-39 
-40 
-41 
-42 
-43 
-44 
-45 
-46 
-47 
-48 
-49 
-50 
-51 
-52 
-53 
-54 
-55 
-56 
-57 
-58 
-59 
-60 
-61 
-62 
-63 
-64 
-65 
-66 
-67 
-68 
-69 
-70 
-71 
-72 
-73 
-74 
-75 
-76 
-77 
-78 
-79 
-80 
-81 
-82 
-83 
-84 
-85 
-86 
-87 
-88 
-89 
-90 
-91 
-92 
-93 
-94 
-95 
-96 
-97 
-98 
-99 
-100 
-101 
-102 
-103 
-104 
-105 
-106 
-107 
-108 
-109 
-110 
-111 
-112 
-113 
-114 
-115 
-116 
-117 
-118 
-119 
-120 
-121 
-122 
-123 
-124 
-125 
-126 
-127 
-128 
-129 
-130 
-131 
-132 
-133 
-134 
-135 
-136 
-137 
-138 
-139 
-140 
-141 
-142 
-143 
-144 
-145 
-146 
-147 
-148 
-149 
-150 
-151 
-152 
-153 
-154 
-155 
-156 
-157 
-158 
-159 
-160 
-161 
-162 
-163 
-164 
-165 
-166 
-167 
-168 
-169 
-170 
-171 
-172 
-173 
-174 
-175 
-176 
-177 
-178 
-179 
-180 
-181 
-182 
-183 
-184 
-185 
-186 
-187 
-188 
-189 
-190 
-191 
-192 
-193 
-194 
-195 
-196 
-197 
-198 
-199 
-200 
-201 
-202 
-203 
-204 
-205 
-206 
-207 
-208 
-209 
-210 
-211 
-212 
-213 
-214 
-215 
-216 
-217 
-218 
-219 
-220 
-221 
-222 
-223 
-224 
-225 
-226 
-227 
-228 
-229 
-230 
-231 
-232 
-233 
-234 
-235 
-236 
-237 
-238 
-239 
-240 
-241 
-242 
-243 
-244 
-245 
-246 
-247 
-248 
-249 
-250 
-251 
-252 
-253 
-254 
-255 
-256 
-257 
-258 
-259 
-260 
-261 
-262 
-263 
-264 
-265 
-266 
-267 
-268 
-269 
-270 
-271 
-272 
-273 
-274 
-275 
-276 
-277 
-278 
-279 
-280 
-281 
-282 
-283 
-284 
-285 
-286 
-287 
-288 
-289 
-290 
-291 
-292 
-293 
-294 
-295 
-296 
-297 
-298 
-299 
-300 
-301 
-302 
-303 
-304 
-305 
-306 
-307 
-308 
-309 
-310 
-311 
-312 
-313 
-314 
-315 
-316 
-317 
-318 
-319 
-320 
-321 
-322 
-323 
-324 
-325 
-326 
-327 
-328 
-329 
-330 
-331 
-332 
-333 
-334 
-335 
-336 
-337 
-338 
-339 
-340 
-341 
-342 
-343 
-344 
-345 
-346 
-347 
-348 
-349 
-350 
-351 
-352 
-353 
-354 
-355 
-356 
-357 
-358 
-359 
-360 
-361 
-362 
-363 
-364 
-365 
-366 
-367 
-368 
-369 
-370 
-371 
-372 
-373 
-374 
-375 
-376 
-377 
-378 
-379 
-380 
-381 
-382 
-383 
-384 
-385 
-386 
-387 
-388 
-389 
-390 
-391 
-392 
-393 
-394 
-395 
-396 
-397 
-398 
-399 
-400 
-401 
-402 
-403 
-404 
-405 
-406 
-407 
-408 
-409 
-410 
-411 
-412 
-413 
-414 
-415 
-416 
-417 
-418 
-419 
-420 
-421 
-422 
-423 
-424 
-425 
-426 
-427 
-428 
-429 
-430 
-431 
-432 
-433 
-434 
-435 
-436 
-437 
-438 
-439 
-440 
-441 
-442 
-443 
-444 
-445 
-446 
-447 
-448 
-449 
-450 
-451 
-452 
-453 
-454 
-455 
-456 
-457 
-458 
-459 
-460 
-461 
-462 
-463 
-464 
-465 
-466 
-467 
-468 
-469 
-470 
-471 
-472 
-473 
-474 
-475 
-476 
-477 
-478 
-479 
-480 
-481 
-482 
-483 
-484 
-485 
-486 
-487 
-488 
-489 
-490 
-491 
-492 
-493 
-494 
-495 
-496 
-497 
-498 
-499 
-500 
-501 
-502 
-503 
-504 
-505 
-506 
-507 
-508 
-509 
-510 
-511 
-512 
-513 
-514 
-515 
-516 
-517 
-518 
-519 
-520 
-521 
-522 
-523 
-524 
-525 
-526 
-527 
-528 
-529 
-530 
-531 
-532 
-533 
-534 
-535 
-536 
-537 
-538 
-539 
-540 
-541 
-542 
-543 
-544 
-545 
-546 
-547 
-548 
-549 
-550 
-551 
-552 
-553 
-554 
-555 
-556 
-557 
-558 
-559 
-560 
-561 
-562 
-563 
-564 
-565 
-566 
-567 
-568 
-569 
-570 
-571 
-572 
-573 
-574 
-575 
-576 
-577 
-578 
-579 
-580 
-581 
-582 
-583 
-584 
-585 
-586 
-587 
-588 
-589 
-590 
-591 
-592 
-593 
-594 
-595 
-596 
-597 
-598 
-599 
-600 
-601 
-602 
-603 
-604 
-605 
-606 
-607 
-608 
-609 
-610 
-611 
-612 
-613 
-614 
-615 
-616 
-617 
-618 
-619 
-620 
-621 
-622 
-623 
-624 
-625 
-626 
-627 
-628 
-629 
-630 
-631 
-632 
-633 
-634 
-635 
-636 
-637 
-638 
-639 
-640 
-641 
-642 
-643 
-644 
-645 
-646 
-647 
-648 
-649 
-650 
-651 
-652 
-653 
-654 
-655 
-656 
-657 
-658 
-659 
-660 
-661 
-662 
-663 
-664 
-665 
-666 
-667 
-668 
-669 
-670 
-671 
-672 
-673 
-674 
-675 
-676 
-677 
-678 
-679 
-680 
-681 
-682 
-683 
-684 
-685 
-686 
-687 
-688 
-689 
-690 
-691 
-692 
-693 
-694 
-695 
-696 
-697 
-698 
-699 
-700 
-701 
-702 
-703 
-704 
-705 
-706 
-707 
-708 
-709 
-710 
-711 
-712 
-713 
-714 
-715 
-716 
-717 
-718 
-719 
-720 
-721 
-722 
-723 
-724 
-725 
-726 
-727 
-728 
-729 
-730 
-731 
-732 
-733 
-734 
-735 
-736 
-737 
-738 
-739 
-740 
-741 
-742 
-743 
-744 
-745 
-746 
-747 
-748 
-749 
-750 
-751 
-752 
-753 
-754 
-755 
-756 
-757 
-758 
-759 
-760 
-761 
-762 
-763 
-764 
-765 
-766 
-767 
-768 
-769 
-770 
-771 
-772 
-773 
-774 
-775 
-776 
-777 
-778 
-779 
-780 
-781 
-782 
-783 
-784 
-785 
-786 
-787 
-788 
-789 
-790 
-791 
-792 
-793 
-794 
-795 
-796 
-797 
-798 
-799 
-800 
-801 
-802 
-803 
-804 
-805 
-806 
-807 
-808 
-809 
-810 
-811 
-812 
-813 
-814 
-815 
-816 
-817 
-818 
-819 
-820 
-821 
-822 
-823 
-824 
-825 
-826 
-827 
-828 
-829 
-830 
-831 
-832 
-833 
-834 
-835 
-836 
-837 
-838 
-839 
-840 
-841 
-842 
-843 
-844 
-845 
-846 
-847 
-848 
-849 
-850 
-851 
-852 
-853 
-854 
-855 
-856 
-857 
-858 
-859 
-860 
-861 
-862 
-863 
-864 
-865 
-866 
-867 
-868 
-869 
-870 
-871 
-872 
-873 
-874 
-875 
-876 
-877 
-878 
-879 
-880 
-881 
-882 
-883 
-884 
-885 
-886 
-887 
-888 
-889 
-890 
-891 
-892 
-893 
-894 
-895 
-896 
-897 
-898 
-899 
-900 
-901 
-902 
-903 
-904 
-905 
-906 
-907 
-908 
-909 
-910 
-911 
-912 
-913 
-914 
-915 
-916 
-917 
-918 
-919 
-920 
-921 
-922 
-923 
-924 
-925 
-926 
-927 
-928 
-929 
-930 
-931 
-932 
-933 
-934 
-935 
-936 
-937 
-938 
-939 
-940 
-941 
-942 
-943 
-944 
-945 
-946 
-947 
-948 
-949 
-950 
-951 
-952 
-953 
-954 
-955 
-956 
-957 
-958 
-959 
-960 
-961 
-962 
-963 
-964 
-965 
-966 
-967 
-968 
-969 
-970 
-971 
-972 
-973 
-974 
-975 
-976 
-977 
-978 
-979 
-980 
-981 
-982 
-983 
-984 
-985 
-986 
-987 
-988 
-989 
-990 
-991 
-992 
-993 
-994 
-995 
-996 
-997 
-998 
-999 
-1000 
-1001 
-1002 
-1003 
-1004 
-1005 
-1006 
-1007 
-1008 
-1009 
-1010 
-1011 
-1012 
-1013 
-1014 
-1015 
-1016 
-1017 
-1018 
-1019 
-1020 
-1021 
-1022 
-1023 
-1024 
-1025 
-1026 
-1027 
-1028 
-1029 
-1030 
-1031 
-1032 
-1033 
-1034 
-1035 
-1036 
-1037 
-1038 
-1039 
-1040 
-1041 
-1042 
-1043 
-1044 
-1045 
-1046 
-1047 
-1048 
-1049 
-1050 
-1051 
-1052 
-1053 
-1054 
-1055 
-1056 
-1057 
-1058 
-1059 
-1060 
-1061 
-1062 
-1063 
-1064 
-1065 
-1066 
-1067 
-1068 
-1069 
-1070 
-1071 
-1072 
-1073 
-1074 
-1075 
-1076 
-1077 
-1078 
-1079 
-1080 
-1081 
-1082 
-1083 
-1084 
-1085 
-1086 
-1087 
-1088 
-1089 
-1090 
-1091 
-1092 
-1093 
-1094 
-1095 
-1096 
-1097 
-1098 
-1099 
-1100 
-1101 
-1102 
-1103 
-1104 
-1105 
-1106 
-1107 
-1108 
-1109 
-1110 
-1111 
-1112 
-1113 
-1114 
-1115 
-1116 
-1117 
-1118 
-1119 
-1120 
-1121 
-1122 
-1123 
-1124 
-1125 
-1126 
-1127 
-1128 
-1129 
-1130 
-1131 
-1132 
-1133 
-1134 
-1135 
-1136 
-1137 
-1138 
-1139 
-1140 
-1141 
-1142 
-1143 
-1144 
-1145 
-1146 
-1147 
-1148 
-1149 
-1150 
-1151 
-1152 
-1153 
-1154 
-1155 
-1156 
-1157 
-1158 
-1159 
-1160 
-1161 
-1162 
-1163 
-1164 
-1165 
-1166 
-1167 
-1168 
-1169 
-1170 
-1171 
-1172 
-1173 
-1174 
-1175 
-1176 
-1177 
-1178 
-1179 
-1180 
-1181 
-1182 
-1183 
-1184 
-1185 
-1186 
-1187 
-1188 
-1189 
-1190 
-1191 
-1192 
-1193 
-1194 
-1195 
-1196 
-1197 
-1198 
-1199 
-1200 
-1201 
-1202 
-1203 
-1204 
-1205 
-1206 
-1207 
-1208 
-1209 
-1210 
-1211 
-1212 
-1213 
-1214 
-1215 
-1216 
-1217 
-1218 
-1219 
-1220 
-1221 
-1222 
-1223 
-1224 
-1225 
-1226 
-1227 
-1228 
-1229 
-1230 
-1231 
-1232 
-1233 
-1234 
-1235 
-1236 
-1237 
-1238 
-1239 
-1240 
-1241 
-1242 
-1243 
-1244 
-1245 
-1246 
-1247 
-1248 
-1249 
-1250 
-1251 
-1252 
-1253 
-1254 
-1255 
-1256 
-1257 
-1258 
-1259 
-1260 
-1261 
-1262 
-1263 
-1264 
-1265 
-1266 
-1267 
-1268 
-1269 
-1270 
-1271 
-1272 
-1273 
-1274 
-1275 
-1276 
-1277 
-1278 
-1279 
-1280 
-1281 
-1282 
-1283 
-1284 
-1285 
-1286 
-1287 
-1288 
-1289 
-1290 
-1291 
-1292 
-1293 
-1294 
-1295 
-1296 
-1297 
-1298 
-1299 
-1300 
-1301 
-1302 
-1303 
-1304 
-1305 
-1306 
-1307 
-1308 
-1309 
-1310 
-1311 
-1312 
-1313 
-1314 
-1315 
-1316 
-1317 
-1318 
-1319 
-1320 
-1321 
-1322 
-1323 
-1324 
-1325 
-1326 
-1327 
-1328 
-1329 
-1330 
-1331 
-1332 
-1333 
-1334 
-1335 
-1336 
-1337 
-1338 
-1339 
-1340 
-1341 
-1342 
-1343 
-1344 
-1345 
-1346 
-1347 
-1348 
-1349 
-1350 
-1351 
-1352 
-1353 
-1354 
-1355 
-1356 
-1357 
-1358 
-1359 
-1360 
-1361 
-1362 
-1363 
-1364 
-1365 
-1366 
-1367 
-1368 
-1369 
-1370 
-1371 
-1372 
-1373 
-1374 
-1375 
-1376 
-1377 
-1378 
-1379 
-1380 
-1381 
-1382 
-1383 
-1384 
-1385 
-1386 
-1387 
-1388 
-1389 
-1390 
-1391 
-1392 
-1393 
-1394 
-1395 
-1396 
-1397 
-1398 
-1399 
-1400 
-1401 
-1402 
-1403 
-1404 
-1405 
-1406 
-1407 
-1408 
-1409 
-1410 
-1411 
-1412 
-1413 
-1414 
-1415 
-1416 
-1417 
-1418 
-1419 
-1420 
-1421 
-1422 
-1423 
-1424 
-1425 
-1426 
-1427 
-1428 
-1429 
-1430 
-1431 
-1432 
-1433 
-1434 
-1435 
-1436 
-1437 
-1438 
-1439 
-1440 
-1441 
-1442 
-1443 
-1444 
-1445 
-1446 
-1447 
-1448 
-1449 
-1450 
-1451 
-1452 
-1453 
-1454 
-1455 
-1456 
-1457 
-1458 
-1459 
-1460 
-1461 
-1462 
-1463 
-1464 
-1465 
-1466 
-1467 
-1468 
-1469 
-1470 
-1471 
-1472 
-1473 
-1474 
-1475 
-1476 
-1477 
-1478 
-1479 
-1480 
-1481 
-1482 
-1483 
-1484 
-1485 
-1486 
-1487 
-1488 
-1489 
-1490 
-1491 
-1492 
-1493 
-1494 
-1495 
-1496 
-1497 
-1498 
-1499 
-1500 
-1501 
-1502 
-1503 
-1504 
-1505 
-1506 
-1507 
-1508 
-1509 
-1510 
-1511 
-1512 
-1513 
-1514 
-1515 
-1516 
-1517 
-1518 
-1519 
-1520 
-1521 
-1522 
-1523 
-1524 
-1525 
-1526 
-1527 
-1528 
-1529 
-1530 
-1531 
-1532 
-1533 
-1534 
-1535 
-1536 
-1537 
-1538 
-1539 
-1540 
-1541 
-1542 
-1543 
-1544 
-1545 
-1546 
-1547 
-1548 
-1549 
-1550 
-1551 
-1552 
-1553 
-1554 
-1555 
-1556 
-1557 
-1558 
-1559 
-1560 
-1561 
-1562 
-1563 
-1564 
-1565 
-1566 
-1567 
-1568 
-1569 
-1570 
-1571 
-1572 
-1573 
-1574 
-1575 
-1576 
-1577 
-1578 
-1579 
-1580 
-1581 
-1582 
-1583 
-1584 
-1585 
-1586 
-1587 
-1588 
-1589 
-1590 
-1591 
-1592 
-1593 
-1594 
-1595 
-1596 
-1597 
-1598 
-1599 
-1600 
-1601 
-1602 
-1603 
-1604 
-1605 
-1606 
-1607 
-1608 
-1609 
-1610 
-1611 
-1612 
-1613 
-1614 
-1615 
-1616 
-1617 
-1618 
-1619 
-1620 
-1621 
-1622 
-1623 
-1624 
-1625 
-1626 
-1627 
-1628 
-1629 
-1630 
-1631 
-1632 
-1633 
-1634 
-1635 
-1636 
-1637 
-1638 
-1639 
-1640 
-1641 
-1642 
-1643 
-1644 
-1645 
-1646 
-1647 
-1648 
-1649 
-1650 
-1651 
-1652 
-1653 
-1654 
-1655 
-1656 
-1657 
-1658 
-1659 
-1660 
-1661 
-1662 
-1663 
-1664 
-1665 
-1666 
-1667 
-1668 
-1669 
-1670 
-1671 
-1672 
-1673 
-1674 
-1675 
-1676 
-1677 
-1678 
-1679 
-1680 
-1681 
-1682 
-1683 
-1684 
-1685 
-1686 
-1687 
-1688 
-1689 
-1690 
-1691 
-1692 
-1693 
-1694 
-1695 
-1696 
-1697 
-1698 
-1699 
-1700 
-1701 
-1702 
-1703 
-1704 
-1705 
-1706 
-1707 
-1708 
-1709 
-1710 
-1711 
-1712 
-1713 
-1714 
-1715 
-1716 
-1717 
-1718 
-1719 
-1720 
-1721 
-1722 
-1723 
-1724 
-1725 
-1726 
-1727 
-1728 
-1729 
-1730 
-1731 
-1732 
-1733 
-1734 
-1735 
-1736 
-1737 
-1738 
-1739 
-1740 
-1741 
-1742 
-1743 
-1744 
-1745 
-1746 
-1747 
-1748 
-1749 
-1750 
-1751 
-1752 
-1753 
-1754 
-1755 
-1756 
-1757 
-1758 
-1759 
-1760 
-1761 
-1762 
-1763 
-1764 
-1765 
-1766 
-1767 
-1768 
-1769 
-1770 
-1771 
-1772 
-1773 
-1774 
-1775 
-1776 
-1777 
-1778 
-1779 
-1780 
-1781 
-1782 
-1783 
-1784 
-1785 
-1786 
-1787 
-1788 
-1789 
-1790 
-1791 
-1792 
-1793 
-1794 
-1795 
-1796 
-1797 
-1798 
-1799 
-1800 
-1801 
-1802 
-1803 
-1804 
-1805 
-1806 
-1807 
-1808 
-1809 
-1810 
-1811 
-1812 
-1813 
-1814 
-1815 
-1816 
-1817 
-1818 
-1819 
-1820 
-1821 
-1822 
-1823 
-1824 
-1825 
-1826 
-1827 
-1828 
-1829 
-1830 
-1831 
-1832 
-1833 
-1834 
-1835 
-1836 
-1837 
-1838 
-1839 
-1840 
-1841 
-1842 
-1843 
-1844 
-1845 
-1846 
-1847 
-1848 
-1849 
-1850 
-1851 
-1852 
-1853 
-1854 
-1855 
-1856 
-1857 
-1858 
-1859 
-1860 
-1861 
-1862 
-1863 
-1864 
-1865 
-1866 
-1867 
-1868 
-1869 
-1870 
-1871 
-1872 
-1873 
-1874 
-1875 
-1876 
-1877 
-1878 
-1879 
-1880 
-1881 
-1882 
-1883 
-1884 
-1885 
-1886 
-1887 
-1888 
-1889 
-1890 
-1891 
-1892 
-1893 
-1894 
-1895 
-1896 
-1897 
-1898 
-1899 
-1900 
-1901 
-1902 
-1903 
-1904 
-1905 
-1906 
-1907 
-1908 
-1909 
-1910 
-1911 
-1912 
-1913 
-1914 
-1915 
-1916 
-1917 
-1918 
-1919 
-1920 
-1921 
-1922 
-1923 
-1924 
-1925 
-1926 
-1927 
-1928 
-1929 
-1930 
-1931 
-1932 
-1933 
-1934 
-1935 
-1936 
-1937 
-1938 
-1939 
-1940 
-1941 
-1942 
-1943 
-1944 
-1945 
-1946 
-1947 
-1948 
-1949 
-1950 
-1951 
-1952 
-1953 
-1954 
-1955 
-1956 
-1957 
-1958 
-1959 
-1960 
-1961 
-1962 
-1963 
-1964 
-1965 
-1966 
-1967 
-1968 
-1969 
-1970 
-1971 
-1972 
-1973 
-1974 
-1975 
-1976 
-1977 
-1978 
-1979 
-1980 
-1981 
-1982 
-1983 
-1984 
-1985 
-1986 
-1987 
-1988 
-1989 
-1990 
-1991 
-1992 
-1993 
-1994 
-1995 
-1996 
-1997 
-1998 
-1999 
-2000 
-2001 
-2002 
-2003 
-2004 
-2005 
-2006 
-2007 
-2008 
-2009 
-2010 
-2011 
-2012 
-2013 
-2014 
-2015 
-2016 
-2017 
-2018 
-2019 
-2020 
-2021 
-2022 
-2023 
-2024 
-2025 
-2026 
-2027 
-2028 
-2029 
-2030 
-2031 
-2032 
-2033 
-2034 
-2035 
-2036 
-2037 
-2038 
-2039 
-2040 
-2041 
-2042 
-2043 
-2044 
-2045 
-2046 
-2047 
-2048 
-2049 
-2050 
-2051 
-2052 
-2053 
-2054 
-2055 
-2056 
-2057 
-2058 
-2059 
-2060 
-2061 
-2062 
-2063 
-2064 
-2065 
-2066 
-2067 
-2068 
-2069 
-2070 
-2071 
-2072 
-2073 
-2074 
-2075 
-2076 
-2077 
-2078 
-2079 
-2080 
-2081 
-2082 
-2083 
-2084 
-2085 
-2086 
-2087 
-2088 
-2089 
-2090 
-2091 
-2092 
-2093 
-2094 
-2095 
-2096 
-2097 
-2098 
-2099 
-2100 
-2101 
-2102 
-2103 
-2104 
-2105 
-2106 
-2107 
-2108 
-2109 
-2110 
-2111 
-2112 
-2113 
-2114 
-2115 
-2116 
-2117 
-2118 
-2119 
-2120 
-2121 
-2122 
-2123 
-2124 
-2125 
-2126 
-2127 
-2128 
-2129 
-2130 
-2131 
-2132 
-2133 
-2134 
-2135 
-2136 
-2137 
-2138 
-2139 
-2140 
-2141 
-2142 
-2143 
-2144 
-2145 
-2146 
-2147 
-2148 
-2149 
-2150 
-2151 
-2152 
-2153 
-2154 
-2155 
-2156 
-2157 
-2158 
-2159 
-2160 
-2161 
-2162 
-2163 
-2164 
-2165 
-2166 
-2167 
-2168 
-2169 
-2170 
-2171 
-2172 
-2173 
-2174 
-2175 
-2176 
-2177 
-2178 
-2179 
-2180 
-2181 
-2182 
-2183 
-2184 
-2185 
-2186 
-2187 
-2188 
-2189 
-2190 
-2191 
-2192 
-2193 
-2194 
-2195 
-2196 
-2197 
-2198 
-2199 
-2200 
-2201 
-2202 
-2203 
-2204 
-2205 
-2206 
-2207 
-2208 
-2209 
-2210 
-2211 
-2212 
-2213 
-2214 
-2215 
-2216 
-2217 
-2218 
-2219 
-2220 
-2221 
-2222 
-2223 
-2224 
-2225 
-2226 
-2227 
-2228 
-2229 
-2230 
-2231 
-2232 
-2233 
-2234 
-2235 
-2236 
-2237 
-2238 
-2239 
-2240 
-2241 
-2242 
-2243 
-2244 
-2245 
-2246 
-2247 
-2248 
-2249 
-2250 
-2251 
-2252 
-2253 
-2254 
-2255 
-2256 
-2257 
-2258 
-2259 
-2260 
-2261 
-2262 
-2263 
-2264 
-2265 
-2266 
-2267 
-2268 
-2269 
-2270 
-2271 
-2272 
-2273 
-2274 
-2275 
-2276 
-2277 
-2278 
-2279 
-2280 
-2281 
-2282 
-2283 
-2284 
-2285 
-2286 
-2287 
-2288 
-2289 
-2290 
-2291 
-2292 
-2293 
-2294 
-2295 
-2296 
-2297 
-2298 
-2299 
-2300 
-2301 
-2302 
-2303 
-2304 
-2305 
-2306 
-2307 
-2308 
-2309 
-2310 
-2311 
-2312 
-2313 
-2314 
-2315 
-2316 
-2317 
-2318 
-2319 
-2320 
-2321 
-2322 
-2323 
-2324 
-2325 
-2326 
-2327 
-2328 
-2329 
-2330 
-2331 
-2332 
-2333 
-2334 
-2335 
-2336 
-2337 
-2338 
-2339 
-2340 
-2341 
-2342 
-2343 
-2344 
-2345 
-2346 
-2347 
-2348 
-2349 
-2350 
-2351 
-2352 
-2353 
-2354 
-2355 
-2356 
-2357 
-2358 
-2359 
-2360 
-2361 
-2362 
-2363 
-2364 
-2365 
-2366 
-2367 
-2368 
-2369 
-2370 
-2371 
-2372 
-2373 
-2374 
-2375 
-2376 
-2377 
-2378 
-2379 
-2380 
-2381 
-2382 
-2383 
-2384 
-2385 
-2386 
-2387 
-2388 
-2389 
-2390 
-2391 
-2392 
-2393 
-2394 
-2395 
-2396 
-2397 
-2398 
-2399 
-2400 
-2401 
-2402 
-2403 
-2404 
-2405 
-2406 
-2407 
-2408 
-2409 
-2410 
-2411 
-2412 
-2413 
-2414 
-2415 
-2416 
-2417 
-2418 
-2419 
-2420 
-2421 
-2422 
-2423 
-2424 
-2425 
-2426 
-2427 
-2428 
-2429 
-2430 
-2431 
-2432 
-2433 
-2434 
-2435 
-2436 
-2437 
-2438 
-2439 
-2440 
-2441 
-2442 
-2443 
-2444 
-2445 
-2446 
-2447 
-2448 
-2449 
-2450 
-2451 
-2452 
-2453 
-2454 
-2455 
-2456 
-2457 
-2458 
-2459 
-2460 
-2461 
-2462 
-2463 
-2464 
-2465 
-2466 
-2467 
-2468 
-2469 
-2470 
-2471 
-2472 
-2473 
-2474 
-2475 
-2476 
-2477 
-2478 
-2479 
-2480 
-2481 
-2482 
-2483 
-2484 
-2485 
-2486 
-2487 
-2488 
-2489 
-2490 
-2491 
-2492 
-2493 
-2494 
-2495 
-2496 
-2497 
-2498 
-2499 
-2500 
-2501 
-2502 
-2503 
-2504 
-2505 
-2506 
-2507 
-2508 
-2509 
-2510 
-2511 
-2512 
-2513 
-2514 
-2515 
-2516 
-2517 
-2518 
-2519 
-2520 
-2521 
-2522 
-2523 
-2524 
-2525 
-2526 
-2527 
-2528 
-2529 
-2530 
-2531 
-2532 
-2533 
-2534 
-2535 
-2536 
-2537 
-2538 
-2539 
-2540 
-2541 
-2542 
-2543 
-2544 
-2545 
-2546 
-2547 
-2548 
-2549 
-2550 
-2551 
-2552 
-2553 
-2554 
-2555 
-2556 
-2557 
-2558 
-2559 
-2560 
-2561 
-2562 
-2563 
-2564 
-2565 
-2566 
-2567 
-2568 
-2569 
-2570 
-2571 
-2572 
-2573 
-2574 
-2575 
-2576 
-2577 
-2578 
-2579 
-2580 
-2581 
-2582 
-2583 
-2584 
-2585 
-2586 
-2587 
-2588 
-2589 
-2590 
-2591 
-2592 
-2593 
-2594 
-2595 
-2596 
-2597 
-2598 
-2599 
-2600 
-2601 
-2602 
-2603 
-2604 
-2605 
-2606 
-2607 
-2608 
-2609 
-2610 
-2611 
-2612 
-2613 
-2614 
-2615 
-2616 
-2617 
-2618 
-2619 
-2620 
-2621 
-2622 
-2623 
-2624 
-2625 
-2626 
-2627 
-2628 
-2629 
-2630 
-2631 
-2632 
-2633 
-2634 
-2635 
-2636 
-2637 
-2638 
-2639 
-2640 
-2641 
-2642 
-2643 
-2644 
-2645 
-2646 
-2647 
-2648 
-2649 
-2650 
-2651 
-2652 
-2653 
-2654 
-2655 
-2656 
-2657 
-2658 
-2659 
-2660 
-2661 
-2662 
-2663 
-2664 
-2665 
-2666 
-2667 
-2668 
-2669 
-2670 
-2671 
-2672 
-2673 
-2674 
-2675 
-2676 
-2677 
-2678 
-2679 
-2680 
-2681 
-2682 
-2683 
-2684 
-2685 
-2686 
-2687 
-2688 
-2689 
-2690 
-2691 
-2692 
-2693 
-2694 
-2695 
-2696 
-2697 
-2698 
-2699 
-2700 
-2701 
-2702 
-2703 
-2704 
-2705 
-2706 
-2707 
-2708 
-2709 
-2710 
-2711 
-2712 
-2713 
-2714 
-2715 
-2716 
-2717 
-2718 
-2719 
-2720 
-2721 
-2722 
-2723 
-2724 
-2725 
-2726 
-2727 
-2728 
-2729 
-2730 
-2731 
-2732 
-2733 
-2734 
-2735 
-2736 
-2737 
-2738 
-2739 
-2740 
-2741 
-2742 
-2743 
-2744 
-2745 
-2746 
-2747 
-2748 
-2749 
-2750 
-2751 
-2752 
-2753 
-2754 
-2755 
-2756 
-2757 
-2758 
-2759 
-2760 
-2761 
-2762 
-2763 
-2764 
-2765 
-2766 
-2767 
-2768 
-2769 
-2770 
-2771 
-2772 
-2773 
-2774 
-2775 
-2776 
-2777 
-2778 
-2779 
-2780 
-2781 
-2782 
-2783 
-2784 
-2785 
-2786 
-2787 
-2788 
-2789 
-2790 
-2791 
-2792 
-2793 
-2794 
-2795 
-2796 
-2797 
-2798 
-2799 
-2800 
-2801 
-2802 
-2803 
-2804 
-2805 
-2806 
-2807 
-2808 
-2809 
-2810 
-2811 
-2812 
-2813 
-2814 
-2815 
-2816 
-2817 
-2818 
-2819 
-2820 
-2821 
-2822 
-2823 
-2824 
-2825 
-2826 
-2827 
-2828 
-2829 
-2830 
-2831 
-2832 
-2833 
-2834 
-2835 
-2836 
-2837 
-2838 
-2839 
-2840 
-2841 
-2842 
-2843 
-2844 
-2845 
-2846 
-2847 
-2848 
-2849 
-2850 
-2851 
-2852 
-2853 
-2854 
-2855 
-2856 
-2857 
-2858 
-2859 
-2860 
-2861 
-2862 
-2863 
-2864 
-2865 
-2866 
-2867 
-2868 
-2869 
-2870 
-2871 
-2872 
-2873 
-2874 
-2875 
-2876 
-2877 
-2878 
-2879 
-2880 
-2881 
-2882 
-2883 
-2884 
-2885 
-2886 
-2887 
-2888 
-2889 
-2890 
-2891 
-2892 
-2893 
-2894 
-2895 
-2896 
-2897 
-2898 
-2899 
-2900 
-2901 
-2902 
-2903 
-2904 
-2905 
-2906 
-2907 
-2908 
-2909 
-2910 
-2911 
-2912 
-2913 
-2914 
-2915 
-2916 
-2917 
-2918 
-2919 
-2920 
-2921 
-2922 
-2923 
-2924 
-2925 
-2926 
-2927 
-2928 
-2929 
-2930 
-2931 
-2932 
-2933 
-2934 
-2935 
-2936 
-2937 
-2938 
-2939 
-2940 
-2941 
-2942 
-2943 
-2944 
-2945 
-2946 
-2947 
-2948 
-2949 
-2950 
-2951 
-2952 
-2953 
-2954 
-2955 
-2956 
-2957 
-2958 
-2959 
-2960 
-2961 
-2962 
-2963 
-2964 
-2965 
-2966 
-2967 
-2968 
-2969 
-2970 
-2971 
-2972 
-2973 
-2974 
-2975 
-2976 
-2977 
-2978 
-2979 
-2980 
-2981 
-2982 
-2983 
-2984 
-2985 
-2986 
-2987 
-2988 
-2989 
-2990 
-2991 
-2992 
-2993 
-2994 
-2995 
-2996 
-2997 
-2998 
-2999 
-3000 
-3001 
-3002 
-3003 
-3004 
-3005 
-3006 
-3007 
-3008 
-3009 
-3010 
-3011 
-3012 
-3013 
-3014 
-3015 
-3016 
-3017 
-3018 
-3019 
-3020 
-3021 
-3022 
-3023 
-3024 
-3025 
-3026 
-3027 
-3028 
-3029 
-3030 
-3031 
-3032 
-3033 
-3034 
-3035 
-3036 
-3037 
-3038 
-3039 
-3040 
-3041 
-3042 
-3043 
-3044 
-3045 
-3046 
-3047 
-3048 
-3049 
-3050 
-3051 
-3052 
-3053 
-3054 
-3055 
-3056 
-3057 
-3058 
-3059 
-3060 
-3061 
-3062 
-3063 
-3064 
-3065 
-3066 
-3067 
-3068 
-3069 
-3070 
-3071 
-3072 
-3073 
-3074 
-3075 
-3076 
-3077 
-3078 
-3079 
-3080 
-3081 
-3082 
-3083 
-3084 
-3085 
-3086 
-3087 
-3088 
-3089 
-3090 
-3091 
-3092 
-3093 
-3094 
-3095 
-3096 
-3097 
-3098 
-3099 
-3100 
-3101 
-3102 
-3103 
-3104 
-3105 
-3106 
-3107 
-3108 
-3109 
-3110 
-3111 
-3112 
-3113 
-3114 
-3115 
-3116 
-3117 
-3118 
-3119 
-3120 
-3121 
-3122 
-3123 
-3124 
-3125 
-3126 
-3127 
-3128 
-3129 
-3130 
-3131 
-3132 
-3133 
-3134 
-3135 
-3136 
-3137 
-3138 
-3139 
-3140 
-3141 
-3142 
-3143 
-3144 
-3145 
-3146 
-3147 
-3148 
-3149 
-3150 
-3151 
-3152 
-3153 
-3154 
-3155 
-3156 
-3157 
-3158 
-3159 
-3160 
-3161 
-3162 
-3163 
-3164 
-3165 
-3166 
-3167 
-3168 
-3169 
-3170 
-3171 
-3172 
-3173 
-3174 
-3175 
-3176 
-3177 
-3178 
-3179 
-3180 
-3181 
-3182 
-3183 
-3184 
-3185 
-3186 
-3187 
-3188 
-3189 
-3190 
-3191 
-3192 
-3193 
-3194 
-3195 
-3196 
-3197 
-3198 
-3199 
-3200 
-3201 
-3202 
-3203 
-3204 
-3205 
-3206 
-3207 
-3208 
-3209 
-3210 
-3211 
-3212 
-3213 
-3214 
-3215 
-3216 
-3217 
-3218 
-3219 
-3220 
-3221 
-3222 
-3223 
-3224 
-3225 
-3226 
-3227 
-3228 
-3229 
-3230 
-3231 
-3232 
-3233 
-3234 
-3235 
-3236 
-3237 
-3238 
-3239 
-3240 
-3241 
-3242 
-3243 
-3244 
-3245 
-3246 
-3247 
-3248 
-3249 
-3250 
-3251 
-3252 
-3253 
-3254 
-3255 
-3256 
-3257 
-3258 
-3259 
-3260 
-3261 
-3262 
-3263 
-3264 
-3265 
-3266 
-3267 
-3268 
-3269 
-3270 
-3271 
-3272 
-3273 
-3274 
-3275 
-3276 
-3277 
-3278 
-3279 
-3280 
-3281 
-3282 
-3283 
-3284 
-3285 
-3286 
-3287 
-3288 
-3289 
-3290 
-3291 
-3292 
-3293 
-3294 
-3295 
-3296 
-3297 
-3298 
-3299 
-3300 
-3301 
-3302 
-3303 
-3304 
-3305 
-3306 
-3307 
-3308 
-3309 
-3310 
-3311 
-3312 
-3313 
-3314 
-3315 
-3316 
-3317 
-3318 
-3319 
-3320 
-3321 
-3322 
-3323 
-3324 
-3325 
-3326 
-3327 
-3328 
-3329 
-3330 
-3331 
-3332 
-3333 
-3334 
-3335 
-3336 
-3337 
-3338 
-3339 
-3340 
-3341 
-3342 
-3343 
-3344 
-3345 
-3346 
-3347 
-3348 
-3349 
-3350 
-3351 
-3352 
-3353 
-3354 
-3355 
-3356 
-3357 
-3358 
-3359 
-3360 
-3361 
-3362 
-3363 
-3364 
-3365 
-3366 
-3367 
-3368 
-3369 
-3370 
-3371 
-3372 
-3373 
-3374 
-3375 
-3376 
-3377 
-3378 
-3379 
-3380 
-3381 
-3382 
-3383 
-3384 
-3385 
-3386 
-3387 
-3388 
-3389 
-3390 
-3391 
-3392 
-3393 
-3394 
-3395 
-3396 
-3397 
-3398 
-3399 
-3400 
-3401 
-3402 
-3403 
-3404 
-3405 
-3406 
-3407 
-3408 
-3409 
-3410 
-3411 
-3412 
-3413 
-3414 
-3415 
-3416 
-3417 
-3418 
-3419 
-3420 
-3421 
-3422 
-3423 
-3424 
-3425 
-3426 
-3427 
-3428 
-3429 
-3430 
-3431 
-3432 
-3433 
-3434 
-3435 
-3436 
-3437 
-3438 
-3439 
-3440 
-3441 
-3442 
-3443 
-3444 
-3445 
-3446 
-3447 
-3448 
-3449 
-3450 
-3451 
-3452 
-3453 
-3454 
-3455 
-3456 
-3457 
-3458 
-3459 
-3460 
-3461 
-3462 
-3463 
-3464 
-3465 
-3466 
-3467 
-3468 
-3469 
-3470 
-3471 
-3472 
-3473 
-3474 
-3475 
-3476 
-3477 
-3478 
-3479 
-3480 
-3481 
-3482 
-3483 
-3484 
-3485 
-3486 
-3487 
-3488 
-3489 
-3490 
-3491 
-3492 
-3493 
-3494 
-3495 
-3496 
-3497 
-3498 
-3499 
-3500 
-3501 
-3502 
-3503 
-3504 
-3505 
-3506 
-3507 
-3508 
-3509 
-3510 
-3511 
-3512 
-3513 
-3514 
-3515 
-3516 
-3517 
-3518 
-3519 
-3520 
-3521 
-3522 
-3523 
-3524 
-3525 
-3526 
-3527 
-3528 
-3529 
-3530 
-3531 
-3532 
-3533 
-3534 
-3535 
-3536 
-3537 
-3538 
-3539 
-3540 
-3541 
-3542 
-3543 
-3544 
-3545 
-3546 
-3547 
-3548 
-3549 
-3550 
-3551 
-3552 
-3553 
-3554 
-3555 
-3556 
-3557 
-3558 
-3559 
-3560 
-3561 
-3562 
-3563 
-3564 
-3565 
-3566 
-3567 
-3568 
-3569 
-3570 
-3571 
-3572 
-3573 
-3574 
-3575 
-3576 
-3577 
-3578 
-3579 
-3580 
-3581 
-3582 
-3583 
-3584 
-3585 
-3586 
-3587 
-3588 
-3589 
-3590 
-3591 
-3592 
-3593 
-3594 
-3595 
-3596 
-3597 
-3598 
-3599 
-3600 
-3601 
-3602 
-3603 
-3604 
-3605 
-3606 
-3607 
-3608 
-3609 
-3610 
-3611 
-3612 
-3613 
-3614 
-3615 
-3616 
-3617 
-3618 
-3619 
-3620 
-3621 
-3622 
-3623 
-3624 
-3625 
-3626 
-3627 
-3628 
-3629 
-3630 
-3631 
-3632 
-3633 
-3634 
-3635 
-3636 
-3637 
-3638 
-3639 
-3640 
-3641 
-3642 
-3643 
-3644 
-3645 
-3646 
-3647 
-3648 
-3649 
-3650 
-3651 
-3652 
-3653 
-3654 
-3655 
-3656 
-3657 
-3658 
-3659 
-3660 
-3661 
-3662 
-3663 
-3664 
-3665 
-3666 
-3667 
-3668 
-3669 
-3670 
-3671 
-3672 
-3673 
-3674 
-3675 
-3676 
-3677 
-3678 
-3679 
-3680 
-3681 
-3682 
-3683 
-3684 
-3685 
-3686 
-3687 
-3688 
-3689 
-3690 
-3691 
-3692 
-3693 
-3694 
-3695 
-3696 
-3697 
-3698 
-3699 
-3700 
-3701 
-3702 
-3703 
-3704 
-3705 
-3706 
-3707 
-3708 
-3709 
-3710 
-3711 
-3712 
-3713 
-3714 
-3715 
-3716 
-3717 
-3718 
-3719 
-3720 
-3721 
-3722 
-3723 
-3724 
-3725 
-3726 
-3727 
-3728 
-3729 
-3730 
-3731 
-3732 
-3733 
-3734 
-3735 
-3736 
-3737 
-3738 
-3739 
-3740 
-3741 
-3742 
-3743 
-3744 
-3745 
-3746 
-3747 
-3748 
-3749 
-3750 
-3751 
-3752 
-3753 
-3754 
-3755 
-3756 
-3757 
-3758 
-3759 
-3760 
-3761 
-3762 
-3763 
-3764 
-3765 
-3766 
-3767 
-3768 
-3769 
-3770 
-3771 
-3772 
-3773 
-3774 
-3775 
-3776 
-3777 
-3778 
-3779 
-3780 
-3781 
-3782 
-3783 
-3784 
-3785 
-3786 
-3787 
-3788 
-3789 
-3790 
-3791 
-3792 
-3793 
-3794 
-3795 
-3796 
-3797 
-3798 
-3799 
-3800 
-3801 
-3802 
-3803 
-3804 
-3805 
-3806 
-3807 
-3808 
-3809 
-3810 
-3811 
-3812 
-3813 
-3814 
-3815 
-3816 
-3817 
-3818 
-3819 
-3820 
-3821 
-3822 
-3823 
-3824 
-3825 
-3826 
-3827 
-3828 
-3829 
-3830 
-3831 
-3832 
-3833 
-3834 
-3835 
-3836 
-3837 
-3838 
-3839 
-3840 
-3841 
-3842 
-3843 
-3844 
-3845 
-3846 
-3847 
-3848 
-3849 
-3850 
-3851 
-3852 
-3853 
-3854 
-3855 
-3856 
-3857 
-3858 
-3859 
-3860 
-3861 
-3862 
-3863 
-3864 
-3865 
-3866 
-3867 
-3868 
-3869 
-3870 
-3871 
-3872 
-3873 
-3874 
-3875 
-3876 
-3877 
-3878 
-3879 
-3880 
-3881 
-3882 
-3883 
-3884 
-3885 
-3886 
-3887 
-3888 
-3889 
-3890 
-3891 
-3892 
-3893 
-3894 
-3895 
-3896 
-3897 
-3898 
-3899 
-3900 
-3901 
-3902 
-3903 
-3904 
-3905 
-3906 
-3907 
-3908 
-3909 
-3910 
-3911 
-3912 
-3913 
-3914 
-3915 
-3916 
-3917 
-3918 
-3919 
-3920 
-3921 
-3922 
-3923 
-3924 
-3925 
-3926 
-3927 
-3928 
-3929 
-3930 
-3931 
-3932 
-3933 
-3934 
-3935 
-3936 
-3937 
-3938 
-3939 
-3940 
-3941 
-3942 
-3943 
-3944 
-3945 
-3946 
-3947 
-3948 
-3949 
-3950 
-3951 
-3952 
-3953 
-3954 
-3955 
-3956 
-3957 
-3958 
-3959 
-3960 
-3961 
-3962 
-3963 
-3964 
-3965 
-3966 
-3967 
-3968 
-3969 
-3970 
-3971 
-3972 
-3973 
-3974 
-3975 
-3976 
-3977 
-3978 
-3979 
-3980 
-3981 
-3982 
-3983 
-3984 
-3985 
-3986 
-3987 
-3988 
-3989 
-3990 
-3991 
-3992 
-3993 
-3994 
-3995 
-3996 
-3997 
-3998 
-3999 
-4000 
-4001 
-4002 
-4003 
-4004 
-4005 
-4006 
-4007 
-4008 
-4009 
-4010 
-4011 
-4012 
-4013 
-4014 
-4015 
-4016 
-4017 
-4018 
-4019 
-4020 
-4021 
-4022 
-4023 
-4024 
-4025 
-4026 
-4027 
-4028 
-4029 
-4030 
-4031 
-4032 
-4033 
-4034 
-4035 
-4036 
-4037 
-4038 
-4039 
-4040 
-4041 
-4042 
-4043 
-4044 
-4045 
-4046 
-4047 
-4048 
-4049 
-4050 
-4051 
-4052 
-4053 
-4054 
-4055 
-4056 
-4057 
-4058 
-4059 
-4060 
-4061 
-4062 
-4063 
-4064 
-4065 
-4066 
-4067 
-4068 
-4069 
-4070 
-4071 
-4072 
-4073 
-4074 
-4075 
-4076 
-4077 
-4078 
-4079 
-4080 
-4081 
-4082 
-4083 
-4084 
-4085 
-4086 
-4087 
-4088 
-4089 
-4090 
-4091 
-4092 
-4093 
-4094 
-4095 
-4096 
-4097 
-4098 
-4099 
-4100 
-4101 
-4102 
-4103 
-4104 
-4105 
-4106 
-4107 
-4108 
-4109 
-4110 
-4111 
-4112 
-4113 
-4114 
-4115 
-4116 
-4117 
-4118 
-4119 
-4120 
-4121 
-4122 
-4123 
-4124 
-4125 
-4126 
-4127 
-4128 
-4129 
-4130 
-4131 
-4132 
-4133 
-4134 
-4135 
-4136 
-4137 
-4138 
-4139 
-4140 
-4141 
-4142 
-4143 
-4144 
-4145 
-4146 
-4147 
-4148 
-4149 
-4150 
-4151 
-4152 
-4153 
-4154 
-4155 
-4156 
-4157 
-4158 
-4159 
-4160 
-4161 
-4162 
-4163 
-4164 
-4165 
-4166 
-4167 
-4168 
-4169 
-4170 
-4171 
-4172 
-4173 
-4174 
-4175 
-4176 
-4177 
-4178 
-4179 
-4180 
-4181 
-4182 
-4183 
-4184 
-4185 
-4186 
-4187 
-4188 
-4189 
-4190 
-4191 
-4192 
-4193 
-4194 
-4195 
-4196 
-4197 
-4198 
-4199 
-4200 
-4201 
-4202 
-4203 
-4204 
-4205 
-4206 
-4207 
-4208 
-4209 
-4210 
-4211 
-4212 
-4213 
-4214 
-4215 
-4216 
-4217 
-4218 
-4219 
-4220 
-4221 
-4222 
-4223 
-4224 
-4225 
-4226 
-4227 
-4228 
-4229 
-4230 
-4231 
-4232 
-4233 
-4234 
-4235 
-4236 
-4237 
-4238 
-4239 
-4240 
-4241 
-4242 
-4243 
-4244 
-4245 
-4246 
-4247 
-4248 
-4249 
-4250 
-4251 
-4252 
-4253 
-4254 
-4255 
-4256 
-4257 
-4258 
-4259 
-4260 
-4261 
-4262 
-4263 
-4264 
-4265 
-4266 
-4267 
-4268 
-4269 
-4270 
-4271 
-4272 
-4273 
-4274 
-4275 
-4276 
-4277 
-4278 
-4279 
-4280 
-4281 
-4282 
-4283 
-4284 
-4285 
-4286 
-4287 
-4288 
-4289 
-4290 
-4291 
-4292 
-4293 
-4294 
-4295 
-4296 
-4297 
-4298 
-4299 
-4300 
-4301 
-4302 
-4303 
-4304 
-4305 
-4306 
-4307 
-4308 
-4309 
-4310 
-4311 
-4312 
-4313 
-4314 
-4315 
-4316 
-4317 
-4318 
-4319 
-4320 
-4321 
-4322 
-4323 
-4324 
-4325 
-4326 
-4327 
-4328 
-4329 
-4330 
-4331 
-4332 
-4333 
-4334 
-4335 
-4336 
-4337 
-4338 
-4339 
-4340 
-4341 
-4342 
-4343 
-4344 
-4345 
-4346 
-4347 
-4348 
-4349 
-4350 
-4351 
-4352 
-4353 
-4354 
-4355 
-4356 
-4357 
-4358 
-4359 
-4360 
-4361 
-4362 
-4363 
-4364 
-4365 
-4366 
-4367 
-4368 
-4369 
-4370 
-4371 
-4372 
-4373 
-4374 
-4375 
-4376 
-4377 
-4378 
-4379 
-4380 
-4381 
-4382 
-4383 
-4384 
-4385 
-4386 
-4387 
-4388 
-4389 
-4390 
-4391 
-4392 
-4393 
-4394 
-4395 
-4396 
-4397 
-4398 
-4399 
-4400 
-4401 
-4402 
-4403 
-4404 
-4405 
-4406 
-4407 
-4408 
-4409 
-4410 
-4411 
-4412 
-4413 
-4414 
-4415 
-4416 
-4417 
-4418 
-4419 
-4420 
-4421 
-4422 
-4423 
-4424 
-4425 
-4426 
-4427 
-4428 
-4429 
-4430 
-4431 
-4432 
-4433 
-4434 
-4435 
-4436 
-4437 
-4438 
-4439 
-4440 
-4441 
-4442 
-4443 
-4444 
-4445 
-4446 
-4447 
-4448 
-4449 
-4450 
-4451 
-4452 
-4453 
-4454 
-4455 
-4456 
-4457 
-4458 
-4459 
-4460 
-4461 
-4462 
-4463 
-4464 
-4465 
-4466 
-4467 
-4468 
-4469 
-4470 
-4471 
-4472 
-4473 
-4474 
-4475 
-4476 
-4477 
-4478 
-4479 
-4480 
-4481 
-4482 
-4483 
-4484 
-4485 
-4486 
-4487 
-4488 
-4489 
-4490 
-4491 
-4492 
-4493 
-4494 
-4495 
-4496 
-4497 
-4498 
-4499 
-4500 
-4501 
-4502 
-4503 
-4504 
-4505 
-4506 
-4507 
-4508 
-4509 
-4510 
-4511 
-4512 
-4513 
-4514 
-4515 
-4516 
-4517 
-4518 
-4519 
-4520 
-4521 
-4522 
-4523 
-4524 
-4525 
-4526 
-4527 
-4528 
-4529 
-4530 
-4531 
-4532 
-4533 
-4534 
-4535 
-4536 
-4537 
-4538 
-4539 
-4540 
-4541 
-4542 
-4543 
-4544 
-4545 
-4546 
-4547 
-4548 
-4549 
-4550 
-4551 
-4552 
-4553 
-4554 
-4555 
-4556 
-4557 
-4558 
-4559 
-4560 
-4561 
-4562 
-4563 
-4564 
-4565 
-4566 
-4567 
-4568 
-4569 
-4570 
-4571 
-4572 
-4573 
-4574 
-4575 
-4576 
-4577 
-4578 
-4579 
-4580 
-4581 
-4582 
-4583 
-4584 
-4585 
-4586 
-4587 
-4588 
-4589 
-4590 
-4591 
-4592 
-4593 
-4594 
-4595 
-4596 
-4597 
-4598 
-4599 
-4600 
-4601 
-4602 
-4603 
-4604 
-4605 
-4606 
-4607 
-4608 
-4609 
-4610 
-4611 
-4612 
-4613 
-4614 
-4615 
-4616 
-4617 
-4618 
-4619 
-4620 
-4621 
-4622 
-4623 
-4624 
-4625 
-4626 
-4627 
-4628 
-4629 
-4630 
-4631 
-4632 
-4633 
-4634 
-4635 
-4636 
-4637 
-4638 
-4639 
-4640 
-4641 
-4642 
-4643 
-4644 
-4645 
-4646 
-4647 
-4648 
-4649 
-4650 
-4651 
-4652 
-4653 
-4654 
-4655 
-4656 
-4657 
-4658 
-4659 
-4660 
-4661 
-4662 
-4663 
-4664 
-4665 
-4666 
-4667 
-4668 
-4669 
-4670 
-4671 
-4672 
-4673 
-4674 
-4675 
-4676 
-4677 
-4678 
-4679 
-4680 
-4681 
-4682 
-4683 
-4684 
-4685 
-4686 
-4687 
-4688 
-4689 
-4690 
-4691 
-4692 
-4693 
-4694 
-4695 
-4696 
-4697 
-4698 
-4699 
-4700 
-4701 
-4702 
-4703 
-4704 
-4705 
-4706 
-4707 
-4708 
-4709 
-4710 
-4711 
-4712 
-4713 
-4714 
-4715 
-4716 
-4717 
-4718 
-4719 
-4720 
-4721 
-4722 
-4723 
-4724 
-4725 
-4726 
-4727 
-4728 
-4729 
-4730 
-4731 
-4732 
-4733 
-4734 
-4735 
-4736 
-4737 
-4738 
-4739 
-4740 
-4741 
-4742 
-4743 
-4744 
-4745 
-4746 
-4747 
-4748 
-4749 
-4750 
-4751 
-4752 
-4753 
-4754 
-4755 
-4756 
-4757 
-4758 
-4759 
-4760 
-4761 
-4762 
-4763 
-4764 
-4765 
-4766 
-4767 
-4768 
-4769 
-4770 
-4771 
-4772 
-4773 
-4774 
-4775 
-4776 
-4777 
-4778 
-4779 
-4780 
-4781 
-4782 
-4783 
-4784 
-4785 
-4786 
-4787 
-4788 
-4789 
-4790 
-4791 
-4792 
-4793 
-4794 
-4795 
-4796 
-4797 
-4798 
-4799 
-4800 
-4801 
-4802 
-4803 
-4804 
-4805 
-4806 
-4807 
-4808 
-4809 
-4810 
-4811 
-4812 
-4813 
-4814 
-4815 
-4816 
-4817 
-4818 
-4819 
-4820 
-4821 
-4822 
-4823 
-4824 
-4825 
-4826 
-4827 
-4828 
-4829 
-4830 
-4831 
-4832 
-4833 
-4834 
-4835 
-4836 
-4837 
-4838 
-4839 
-4840 
-4841 
-4842 
-4843 
-4844 
-4845 
-4846 
-4847 
-4848 
-4849 
-4850 
-4851 
-4852 
-4853 
-4854 
-4855 
-4856 
-4857 
-4858 
-4859 
-4860 
-4861 
-4862 
-4863 
-4864 
-4865 
-4866 
-4867 
-4868 
-4869 
-4870 
-4871 
-4872 
-4873 
-4874 
-4875 
-4876 
-4877 
-4878 
-4879 
-4880 
-4881 
-4882 
-4883 
-4884 
-4885 
-4886 
-4887 
-4888 
-4889 
-4890 
-4891 
-4892 
-4893 
-4894 
-4895 
-4896 
-4897 
-4898 
-4899 
-4900 
-4901 
-4902 
-4903 
-4904 
-4905 
-4906 
-4907 
-4908 
-4909 
-4910 
-4911 
-4912 
-4913 
-4914 
-4915 
-4916 
-4917 
-4918 
-4919 
-4920 
-4921 
-4922 
-4923 
-4924 
-4925 
-4926 
-4927 
-4928 
-4929 
-4930 
-4931 
-4932 
-4933 
-4934 
-4935 
-4936 
-4937 
-4938 
-4939 
-4940 
-4941 
-4942 
-4943 
-4944 
-4945 
-4946 
-4947 
-4948 
-4949 
-4950 
-4951 
-4952 
-4953 
-4954 
-4955 
-4956 
-4957 
-4958 
-4959 
-4960 
-4961 
-4962 
-4963 
-4964 
-4965 
-4966 
-4967 
-4968 
-4969 
-4970 
-4971 
-4972 
-4973 
-4974 
-4975 
-4976 
-4977 
-4978 
-4979 
-4980 
-4981 
-4982 
-4983 
-4984 
-4985 
-4986 
-4987 
-4988 
-4989 
-4990 
-4991 
-4992 
-4993 
-4994 
-4995 
-4996 
-4997 
-4998 
-4999 
-5000 
-5001 
-5002 
-5003 
-5004 
-5005 
-5006 
-5007 
-5008 
-5009 
-5010 
-5011 
-5012 
-5013 
-5014 
-5015 
-5016 
-5017 
-5018 
-5019 
-5020 
-5021 
-5022 
-5023 
-5024 
-5025 
-5026 
-5027 
-5028 
-5029 
-5030 
-5031 
-5032 
-5033 
-5034 
-5035 
-5036 
-5037 
-5038 
-5039 
-5040 
-5041 
-5042 
-5043 
-5044 
-5045 
-5046 
-5047 
-5048 
-5049 
-5050 
-5051 
-5052 
-5053 
-5054 
-5055 
-5056 
-5057 
-5058 
-5059 
-5060 
-5061 
-5062 
-5063 
-5064 
-5065 
-5066 
-5067 
-5068 
-5069 
-5070 
-5071 
-5072 
-5073 
-5074 
-5075 
-5076 
-5077 
-5078 
-5079 
-5080 
-5081 
-5082 
-5083 
-5084 
-5085 
-5086 
-5087 
-5088 
-5089 
-5090 
-5091 
-5092 
-5093 
-5094 
-5095 
-5096 
-5097 
-5098 
-5099 
-5100 
-5101 
-5102 
-5103 
-5104 
-5105 
-5106 
-5107 
-5108 
-5109 
-5110 
-5111 
-5112 
-5113 
-5114 
-5115 
-5116 
-5117 
-5118 
-5119 
-5120 
-5121 
-5122 
-5123 
-5124 
-5125 
-5126 
-5127 
-5128 
-5129 
-5130 
-5131 
-5132 
-5133 
-5134 
-5135 
-5136 
-5137 
-5138 
-5139 
-5140 
-5141 
-5142 
-5143 
-5144 
-5145 
-5146 
-5147 
-5148 
-5149 
-5150 
-5151 
-5152 
-5153 
-5154 
-5155 
-5156 
-5157 
-5158 
-5159 
-5160 
-5161 
-5162 
-5163 
-5164 
-5165 
-5166 
-5167 
-5168 
-5169 
-5170 
-5171 
-5172 
-5173 
-5174 
-5175 
-5176 
-5177 
-5178 
-5179 
-5180 
-5181 
-5182 
-5183 
-5184 
-5185 
-5186 
-5187 
-5188 
-5189 
-5190 
-5191 
-5192 
-5193 
-5194 
-5195 
-5196 
-5197 
-5198 
-5199 
-5200 
-5201 
-5202 
-5203 
-5204 
-5205 
-5206 
-5207 
-5208 
-5209 
-5210 
-5211 
-5212 
-5213 
-5214 
-5215 
-5216 
-5217 
-5218 
-5219 
-5220 
-5221 
-5222 
-5223 
-5224 
-5225 
-5226 
-5227 
-5228 
-5229 
-5230 
-5231 
-5232 
-5233 
-5234 
-5235 
-5236 
-5237 
-5238 
-5239 
-5240 
-5241 
-5242 
-5243 
-5244 
-5245 
-5246 
-5247 
-5248 
-5249 
-5250 
-5251 
-5252 
-5253 
-5254 
-5255 
-5256 
-5257 
-5258 
-5259 
-5260 
-5261 
-5262 
-5263 
-5264 
-5265 
-5266 
-5267 
-5268 
-5269 
-5270 
-5271 
-5272 
-5273 
-5274 
-5275 
-5276 
-5277 
-5278 
-5279 
-5280 
-5281 
-5282 
-5283 
-5284 
-5285 
-5286 
-5287 
-5288 
-5289 
-5290 
-5291 
-5292 
-5293 
-5294 
-5295 
-5296 
-5297 
-5298 
-5299 
-5300 
-5301 
-5302 
-5303 
-5304 
-5305 
-5306 
-5307 
-5308 
-5309 
-5310 
-5311 
-5312 
-5313 
-5314 
-5315 
-5316 
-5317 
-5318 
-5319 
-5320 
-5321 
-5322 
-5323 
-5324 
-5325 
-5326 
-5327 
-5328 
-5329 
-5330 
-5331 
-5332 
-5333 
-5334 
-5335 
-5336 
-5337 
-5338 
-5339 
-5340 
-5341 
-5342 
-5343 
-5344 
-5345 
-5346 
-5347 
-5348 
-5349 
-5350 
-5351 
-5352 
-5353 
-5354 
-5355 
-5356 
-5357 
-5358 
-5359 
-5360 
-5361 
-5362 
-5363 
-5364 
-5365 
-5366 
-5367 
-5368 
-5369 
-5370 
-5371 
-5372 
-5373 
-5374 
-5375 
-5376 
-5377 
-5378 
-5379 
-5380 
-5381 
-5382 
-5383 
-5384 
-5385 
-5386 
-5387 
-5388 
-5389 
-5390 
-5391 
-5392 
-5393 
-5394 
-5395 
-5396 
-5397 
-5398 
-5399 
-5400 
-5401 
-5402 
-5403 
-5404 
-5405 
-5406 
-5407 
-5408 
-5409 
-5410 
-5411 
-5412 
-5413 
-5414 
-5415 
-5416 
-5417 
-5418 
-5419 
-5420 
-5421 
-5422 
-5423 
-5424 
-5425 
-5426 
-5427 
-5428 
-5429 
-5430 
-5431 
-5432 
-5433 
-5434 
-5435 
-5436 
-5437 
-5438 
-5439 
-5440 
-5441 
-5442 
-5443 
-5444 
-5445 
-5446 
-5447 
-5448 
-5449 
-5450 
-5451 
-5452 
-5453 
-5454 
-5455 
-5456 
-5457 
-5458 
-5459 
-5460 
-5461 
-5462 
-5463 
-5464 
-5465 
-5466 
-5467 
-5468 
-5469 
-5470 
-5471 
-5472 
-5473 
-5474 
-5475 
-5476 
-5477 
-5478 
-5479 
-5480 
-5481 
-5482 
-5483 
-5484 
-5485 
-5486 
-5487 
-5488 
-5489 
-5490 
-5491 
-5492 
-5493 
-5494 
-5495 
-5496 
-5497 
-5498 
-5499 
-5500 
-5501 
-5502 
-5503 
-5504 
-5505 
-5506 
-5507 
-5508 
-5509 
-5510 
-5511 
-5512 
-5513 
-5514 
-5515 
-5516 
-5517 
-5518 
-5519 
-5520 
-5521 
-5522 
-5523 
-5524 
-5525 
-5526 
-5527 
-5528 
-5529 
-5530 
-5531 
-5532 
-5533 
-5534 
-5535 
-5536 
-5537 
-5538 
-5539 
-5540 
-5541 
-5542 
-5543 
-5544 
-5545 
-5546 
-5547 
-5548 
-5549 
-5550 
-5551 
-5552 
-5553 
-5554 
-5555 
-5556 
-5557 
-5558 
-5559 
-5560 
-5561 
-5562 
-5563 
-5564 
-5565 
-5566 
-5567 
-5568 
-5569 
-5570 
-5571 
-5572 
-5573 
-5574 
-5575 
-5576 
-5577 
-5578 
-5579 
-5580 
-5581 
-5582 
-5583 
-5584 
-5585 
-5586 
-5587 
-5588 
-5589 
-5590 
-5591 
-5592 
-5593 
-5594 
-5595 
-5596 
-5597 
-5598 
-5599 
-5600 
-5601 
-5602 
-5603 
-5604 
-5605 
-5606 
-5607 
-5608 
-5609 
-5610 
-5611 
-5612 
-5613 
-5614 
-5615 
-5616 
-5617 
-5618 
-5619 
-5620 
-5621 
-5622 
-5623 
-5624 
-5625 
-5626 
-5627 
-5628 
-5629 
-5630 
-5631 
-5632 
-5633 
-5634 
-5635 
-5636 
-5637 
-5638 
-5639 
-5640 
-5641 
-5642 
-5643 
-5644 
-5645 
-5646 
-5647 
-5648 
-5649 
-5650 
-5651 
-5652 
-5653 
-5654 
-5655 
-5656 
-5657 
-5658 
-5659 
-5660 
-5661 
-5662 
-5663 
-5664 
-5665 
-5666 
-5667 
-5668 
-5669 
-5670 
-5671 
-5672 
-5673 
-5674 
-5675 
-5676 
-5677 
-5678 
-5679 
-5680 
-5681 
-5682 
-5683 
-5684 
-5685 
-5686 
-5687 
-5688 
-5689 
-5690 
-5691 
-5692 
-5693 
-5694 
-5695 
-5696 
-5697 
-5698 
-5699 
-5700 
-5701 
-5702 
-5703 
-5704 
-5705 
-5706 
-5707 
-5708 
-5709 
-5710 
-5711 
-5712 
-5713 
-5714 
-5715 
-5716 
-5717 
-5718 
-5719 
-5720 
-5721 
-5722 
-5723 
-5724 
-5725 
-5726 
-5727 
-5728 
-5729 
-5730 
-5731 
-5732 
-5733 
-5734 
-5735 
-5736 
-5737 
-5738 
-5739 
-5740 
-5741 
-5742 
-5743 
-5744 
-5745 
-5746 
-5747 
-5748 
-5749 
-5750 
-5751 
-5752 
-5753 
-5754 
-5755 
-5756 
-5757 
-5758 
-5759 
-5760 
-5761 
-5762 
-5763 
-5764 
-5765 
-5766 
-5767 
-5768 
-5769 
-5770 
-5771 
-5772 
-5773 
-5774 
-5775 
-5776 
-5777 
-5778 
-5779 
-5780 
-5781 
-5782 
-5783 
-5784 
-5785 
-5786 
-5787 
-5788 
-5789 
-5790 
-5791 
-5792 
-5793 
-5794 
-5795 
-5796 
-5797 
-5798 
-5799 
-5800 
-5801 
-5802 
-5803 
-5804 
-5805 
-5806 
-5807 
-5808 
-5809 
-5810 
-5811 
-5812 
-5813 
-5814 
-5815 
-5816 
-5817 
-5818 
-5819 
-5820 
-5821 
-5822 
-5823 
-5824 
-5825 
-5826 
-5827 
-5828 
-5829 
-5830 
-5831 
-5832 
-5833 
-5834 
-5835 
-5836 
-5837 
-5838 
-5839 
-5840 
-5841 
-5842 
-5843 
-5844 
-5845 
-5846 
-5847 
-5848 
-5849 
-5850 
-5851 
-5852 
-5853 
-5854 
-5855 
-5856 
-5857 
-5858 
-5859 
-5860 
-5861 
-5862 
-5863 
-5864 
-5865 
-5866 
-5867 
-5868 
-5869 
-5870 
-5871 
-5872 
-5873 
-5874 
-5875 
-5876 
-5877 
-5878 
-5879 
-5880 
-5881 
-5882 
-5883 
-5884 
-5885 
-5886 
-5887 
-5888 
-5889 
-5890 
-5891 
-5892 
-5893 
-5894 
-5895 
-5896 
-5897 
-5898 
-5899 
-5900 
-5901 
-5902 
-5903 
-5904 
-5905 
-5906 
-5907 
-5908 
-5909 
-5910 
-5911 
-5912 
-5913 
-5914 
-5915 
-5916 
-5917 
-5918 
-5919 
-5920 
-5921 
-5922 
-5923 
-5924 
-5925 
-5926 
-5927 
-5928 
-5929 
-5930 
-5931 
-5932 
-5933 
-5934 
-5935 
-5936 
-5937 
-5938 
-5939 
-5940 
-5941 
-5942 
-5943 
-5944 
-5945 
-5946 
-5947 
-5948 
-5949 
-5950 
-5951 
-5952 
-5953 
-5954 
-5955 
-5956 
-5957 
-5958 
-5959 
-5960 
-5961 
-5962 
-5963 
-5964 
-5965 
-5966 
-5967 
-5968 
-5969 
-5970 
-5971 
-5972 
-5973 
-5974 
-5975 
-5976 
-5977 
-5978 
-5979 
-5980 
-5981 
-5982 
-5983 
-5984 
-5985 
-5986 
-5987 
-5988 
-5989 
-5990 
-5991 
-5992 
-5993 
-5994 
-5995 
-5996 
-5997 
-5998 
-5999 
-6000 
-6001 
-6002 
-6003 
-6004 
-6005 
-6006 
-6007 
-6008 
-6009 
-6010 
-6011 
-6012 
-6013 
-6014 
-6015 
-6016 
-6017 
-6018 
-6019 
-6020 
-6021 
-6022 
-6023 
-6024 
-6025 
-6026 
-6027 
-6028 
-6029 
-6030 
-6031 
-6032 
-6033 
-6034 
-6035 
-6036 
-6037 
-6038 
-6039 
-6040 
-6041 
-6042 
-6043 
-6044 
-6045 
-6046 
-6047 
-6048 
-6049 
-6050 
-6051 
-6052 
-6053 
-6054 
-6055 
-6056 
-6057 
-6058 
-6059 
-6060 
-6061 
-6062 
-6063 
-6064 
-6065 
-6066 
-6067 
-6068 
-6069 
-6070 
-6071 
-6072 
-6073 
-6074 
-6075 
-6076 
-6077 
-6078 
-6079 
-6080 
-6081 
-6082 
-6083 
-6084 
-6085 
-6086 
-6087 
-6088 
-6089 
-6090 
-6091 
-6092 
-6093 
-6094 
-6095 
-6096 
-6097 
-6098 
-6099 
-6100 
-6101 
-6102 
-6103 
-6104 
-6105 
-6106 
-6107 
-6108 
-6109 
-6110 
-6111 
-6112 
-6113 
-6114 
-6115 
-6116 
-6117 
-6118 
-6119 
-6120 
-6121 
-6122 
-6123 
-6124 
-6125 
-6126 
-6127 
-6128 
-6129 
-6130 
-6131 
-6132 
-6133 
-6134 
-6135 
-6136 
-6137 
-6138 
-6139 
-6140 
-6141 
-6142 
-6143 
-6144 
-6145 
-6146 
-6147 
-6148 
-6149 
-6150 
-6151 
-6152 
-6153 
-6154 
-6155 
-6156 
-6157 
-6158 
-6159 
-6160 
-6161 
-6162 
-6163 
-6164 
-6165 
-6166 
-6167 
-6168 
-6169 
-6170 
-6171 
-6172 
-6173 
-6174 
-6175 
-6176 
-6177 
-6178 
-6179 
-6180 
-6181 
-6182 
-6183 
-6184 
-6185 
-6186 
-6187 
-6188 
-6189 
-6190 
-6191 
-6192 
-6193 
-6194 
-6195 
-6196 
-6197 
-6198 
-6199 
-6200 
-6201 
-6202 
-6203 
-6204 
-6205 
-6206 
-6207 
-6208 
-6209 
-6210 
-6211 
-6212 
-6213 
-6214 
-6215 
-6216 
-6217 
-6218 
-6219 
-6220 
-6221 
-6222 
-6223 
-6224 
-6225 
-6226 
-6227 
-6228 
-6229 
-6230 
-6231 
-6232 
-6233 
-6234 
-6235 
-6236 
-6237 
-6238 
-6239 
-6240 
-6241 
-6242 
-6243 
-6244 
-6245 
-6246 
-6247 
-6248 
-6249 
-6250 
-6251 
-6252 
-6253 
-6254 
-6255 
-6256 
-6257 
-6258 
-6259 
-6260 
-6261 
-6262 
-6263 
-6264 
-6265 
-6266 
-6267 
-6268 
-6269 
-6270 
-6271 
-6272 
-6273 
-6274 
-6275 
-6276 
-6277 
-6278 
-6279 
-6280 
-6281 
-6282 
-6283 
-6284 
-6285 
-6286 
-6287 
-6288 
-6289 
-6290 
-6291 
-6292 
-6293 
-6294 
-6295 
-6296 
-6297 
-6298 
-6299 
-6300 
-6301 
-6302 
-6303 
-6304 
-6305 
-6306 
-6307 
-6308 
-6309 
-6310 
-6311 
-6312 
-6313 
-6314 
-6315 
-6316 
-6317 
-6318 
-6319 
-6320 
-6321 
-6322 
-6323 
-6324 
-6325 
-6326 
-6327 
-6328 
-6329 
-6330 
-6331 
-6332 
-6333 
-6334 
-6335 
-6336 
-6337 
-6338 
-6339 
-6340 
-6341 
-6342 
-6343 
-6344 
-6345 
-6346 
-6347 
-6348 
-6349 
-6350 
-6351 
-6352 
-6353 
-6354 
-6355 
-6356 
-6357 
-6358 
-6359 
-6360 
-6361 
-6362 
-6363 
-6364 
-6365 
-6366 
-6367 
-6368 
-6369 
-6370 
-6371 
-6372 
-6373 
-6374 
-6375 
-6376 
-6377 
-6378 
-6379 
-6380 
-6381 
-6382 
-6383 
-6384 
-6385 
-6386 
-6387 
-6388 
-6389 
-6390 
-6391 
-6392 
-6393 
-6394 
-6395 
-6396 
-6397 
-6398 
-6399 
-6400 
-6401 
-6402 
-6403 
-6404 
-6405 
-6406 
-6407 
-6408 
-6409 
-6410 
-6411 
-6412 
-6413 
-6414 
-6415 
-6416 
-6417 
-6418 
-6419 
-6420 
-6421 
-6422 
-6423 
-6424 
-6425 
-6426 
-6427 
-6428 
-6429 
-6430 
-6431 
-6432 
-6433 
-6434 
-6435 
-6436 
-6437 
-6438 
-6439 
-6440 
-6441 
-6442 
-6443 
-6444 
-6445 
-6446 
-6447 
-6448 
-6449 
-6450 
-6451 
-6452 
-6453 
-6454 
-6455 
-6456 
-6457 
-6458 
-6459 
-6460 
-6461 
-6462 
-6463 
-6464 
-6465 
-6466 
-6467 
-6468 
-6469 
-6470 
-6471 
-6472 
-6473 
-6474 
-6475 
-6476 
-6477 
-6478 
-6479 
-6480 
-6481 
-6482 
-6483 
-6484 
-6485 
-6486 
-6487 
-6488 
-6489 
-6490 
-6491 
-6492 
-6493 
-6494 
-6495 
-6496 
-6497 
-6498 
-6499 
-6500 
-6501 
-6502 
-6503 
-6504 
-6505 
-6506 
-6507 
-6508 
-6509 
-6510 
-6511 
-6512 
-6513 
-6514 
-6515 
-6516 
-6517 
-6518 
-6519 
-6520 
-6521 
-6522 
-6523 
-6524 
-6525 
-6526 
-6527 
-6528 
-6529 
-6530 
-6531 
-6532 
-6533 
-6534 
-6535 
-6536 
-6537 
-6538 
-6539 
-6540 
-6541 
-6542 
-6543 
-6544 
-6545 
-6546 
-6547 
-6548 
-6549 
-6550 
-6551 
-6552 
-6553 
-6554 
-6555 
-6556 
-6557 
-6558 
-6559 
-6560 
-6561 
-6562 
-6563 
-6564 
-6565 
-6566 
-6567 
-6568 
-6569 
-6570 
-6571 
-6572 
-6573 
-6574 
-6575 
-6576 
-6577 
-6578 
-6579 
-6580 
-6581 
-6582 
-6583 
-6584 
-6585 
-6586 
-6587 
-6588 
-6589 
-6590 
-6591 
-6592 
-6593 
-6594 
-6595 
-6596 
-6597 
-6598 
-6599 
-6600 
-6601 
-6602 
-6603 
-6604 
-6605 
-6606 
-6607 
-6608 
-6609 
-6610 
-6611 
-6612 
-6613 
-6614 
-6615 
-6616 
-6617 
-6618 
-6619 
-6620 
-6621 
-6622 
-6623 
-6624 
-6625 
-6626 
-6627 
-6628 
-6629 
-6630 
-6631 
-6632 
-6633 
-6634 
-6635 
-6636 
-6637 
-6638 
-6639 
-6640 
-6641 
-6642 
-6643 
-6644 
-6645 
-6646 
-6647 
-6648 
-6649 
-6650 
-6651 
-6652 
-6653 
-6654 
-6655 
-6656 
-6657 
-6658 
-6659 
-6660 
-6661 
-6662 
-6663 
-6664 
-6665 
-6666 
-6667 
-6668 
-6669 
-6670 
-6671 
-6672 
-6673 
-6674 
-6675 
-6676 
-6677 
-6678 
-6679 
-6680 
-6681 
-6682 
-6683 
-6684 
-6685 
-6686 
-6687 
-6688 
-6689 
-6690 
-6691 
-6692 
-6693 
-6694 
-6695 
-6696 
-6697 
-6698 
-6699 
-6700 
-6701 
-6702 
-6703 
-6704 
-6705 
-6706 
-6707 
-6708 
-6709 
-6710 
-6711 
-6712 
-6713 
-6714 
-6715 
-6716 
-6717 
-6718 
-6719 
-6720 
-6721 
-6722 
-6723 
-6724 
-6725 
-6726 
-6727 
-6728 
-6729 
-6730 
-6731 
-6732 
-6733 
-6734 
-6735 
-6736 
-6737 
-6738 
-6739 
-6740 
-6741 
-6742 
-6743 
-6744 
-6745 
-6746 
-6747 
-6748 
-6749 
-6750 
-6751 
-6752 
-6753 
-6754 
-6755 
-6756 
-6757 
-6758 
-6759 
-6760 
-6761 
-6762 
-6763 
-6764 
-6765 
-6766 
-6767 
-6768 
-6769 
-6770 
-6771 
-6772 
-6773 
-6774 
-6775 
-6776 
-6777 
-6778 
-6779 
-6780 
-6781 
-6782 
-6783 
-6784 
-6785 
-6786 
-6787 
-6788 
-6789 
-6790 
-6791 
-6792 
-6793 
-6794 
-6795 
-6796 
-6797 
-6798 
-6799 
-6800 
-6801 
-6802 
-6803 
-6804 
-6805 
-6806 
-6807 
-6808 
-6809 
-6810 
-6811 
-6812 
-6813 
-6814 
-6815 
-6816 
-6817 
-6818 
-6819 
-6820 
-6821 
-6822 
-6823 
-6824 
-6825 
-6826 
-6827 
-6828 
-6829 
-6830 
-6831 
-6832 
-6833 
-6834 
-6835 
-6836 
-6837 
-6838 
-6839 
-6840 
-6841 
-6842 
-6843 
-6844 
-6845 
-6846 
-6847 
-6848 
-6849 
-6850 
-6851 
-6852 
-6853 
-6854 
-6855 
-6856 
-6857 
-6858 
-6859 
-6860 
-6861 
-6862 
-6863 
-6864 
-6865 
-6866 
-6867 
-6868 
-6869 
-6870 
-6871 
-6872 
-6873 
-6874 
-6875 
-6876 
-6877 
-6878 
-6879 
-6880 
-6881 
-6882 
-6883 
-6884 
-6885 
-6886 
-6887 
-6888 
-6889 
-6890 
-6891 
-6892 
-6893 
-6894 
-6895 
-6896 
-6897 
-6898 
-6899 
-6900 
-6901 
-6902 
-6903 
-6904 
-6905 
-6906 
-6907 
-6908 
-6909 
-6910 
-6911 
-6912 
-6913 
-6914 
-6915 
-6916 
-6917 
-6918 
-6919 
-6920 
-6921 
-6922 
-6923 
-6924 
-6925 
-6926 
-6927 
-6928 
-6929 
-6930 
-6931 
-6932 
-6933 
-6934 
-6935 
-6936 
-6937 
-6938 
-6939 
-6940 
-6941 
-6942 
-6943 
-6944 
-6945 
-6946 
-6947 
-6948 
-6949 
-6950 
-6951 
-6952 
-6953 
-6954 
-6955 
-6956 
-6957 
-6958 
-6959 
-6960 
-6961 
-6962 
-6963 
-6964 
-6965 
-6966 
-6967 
-6968 
-6969 
-6970 
-6971 
-6972 
-6973 
-6974 
-6975 
-6976 
-6977 
-6978 
-6979 
-6980 
-6981 
-6982 
-6983 
-6984 
-6985 
-6986 
-6987 
-6988 
-6989 
-6990 
-6991 
-6992 
-6993 
-6994 
-6995 
-6996 
-6997 
-6998 
-6999 
-7000 
-7001 
-7002 
-7003 
-7004 
-7005 
-7006 
-7007 
-7008 
-7009 
-7010 
-7011 
-7012 
-7013 
-7014 
-7015 
-7016 
-7017 
-7018 
-7019 
-7020 
-7021 
-7022 
-7023 
-7024 
-7025 
-7026 
-7027 
-7028 
-7029 
-7030 
-7031 
-7032 
-7033 
-7034 
-7035 
-7036 
-7037 
-7038 
-7039 
-7040 
-7041 
-7042 
-7043 
-7044 
-7045 
-7046 
-7047 
-7048 
-7049 
-7050 
-7051 
-7052 
-7053 
-7054 
-7055 
-7056 
-7057 
-7058 
-7059 
-7060 
-7061 
-7062 
-7063 
-7064 
-7065 
-7066 
-7067 
-7068 
-7069 
-7070 
-7071 
-7072 
-7073 
-7074 
-7075 
-7076 
-7077 
-7078 
-7079 
-7080 
-7081 
-7082 
-7083 
-7084 
-7085 
-7086 
-7087 
-7088 
-7089 
-7090 
-7091 
-7092 
-7093 
-7094 
-7095 
-7096 
-7097 
-7098 
-7099 
-7100 
-7101 
-7102 
-7103 
-7104 
-7105 
-7106 
-7107 
-7108 
-7109 
-7110 
-7111 
-7112 
-7113 
-7114 
-7115 
-7116 
-7117 
-7118 
-7119 
-7120 
-7121 
-7122 
-7123 
-7124 
-7125 
-7126 
-7127 
-7128 
-7129 
-7130 
-7131 
-7132 
-7133 
-7134 
-7135 
-7136 
-7137 
-7138 
-7139 
-7140 
-7141 
-7142 
-7143 
-7144 
-7145 
-7146 
-7147 
-7148 
-7149 
-7150 
-7151 
-7152 
-7153 
-7154 
-7155 
-7156 
-7157 
-7158 
-7159 
-7160 
-7161 
-7162 
-7163 
-7164 
-7165 
-7166 
-7167 
-7168 
-7169 
-7170 
-7171 
-7172 
-7173 
-7174 
-7175 
-7176 
-7177 
-7178 
-7179 
-7180 
-7181 
-7182 
-7183 
-7184 
-7185 
-7186 
-7187 
-7188 
-7189 
-7190 
-7191 
-7192 
-7193 
-7194 
-7195 
-7196 
-7197 
-7198 
-7199 
-7200 
-7201 
-7202 
-7203 
-7204 
-7205 
-7206 
-7207 
-7208 
-7209 
-7210 
-7211 
-7212 
-7213 
-7214 
-7215 
-7216 
-7217 
-7218 
-7219 
-7220 
-7221 
-7222 
-7223 
-7224 
-7225 
-7226 
-7227 
-7228 
-7229 
-7230 
-7231 
-7232 
-7233 
-7234 
-7235 
-7236 
-7237 
-7238 
-7239 
-7240 
-7241 
-7242 
-7243 
-7244 
-7245 
-7246 
-7247 
-7248 
-7249 
-7250 
-7251 
-7252 
-7253 
-7254 
-7255 
-7256 
-7257 
-7258 
-7259 
-7260 
-7261 
-7262 
-7263 
-7264 
-7265 
-7266 
-7267 
-7268 
-7269 
-7270 
-7271 
-7272 
-7273 
-7274 
-7275 
-7276 
-7277 
-7278 
-7279 
-7280 
-7281 
-7282 
-7283 
-7284 
-7285 
-7286 
-7287 
-7288 
-7289 
-7290 
-7291 
-7292 
-7293 
-7294 
-7295 
-7296 
-7297 
-7298 
-7299 
-7300 
-7301 
-7302 
-7303 
-7304 
-7305 
-7306 
-7307 
-7308 
-7309 
-7310 
-7311 
-7312 
-7313 
-7314 
-7315 
-7316 
-7317 
-7318 
-7319 
-7320 
-7321 
-7322 
-7323 
-7324 
-7325 
-7326 
-7327 
-7328 
-7329 
-7330 
-7331 
-7332 
-7333 
-7334 
-7335 
-7336 
-7337 
-7338 
-7339 
-7340 
-7341 
-7342 
-7343 
-7344 
-7345 
-7346 
-7347 
-7348 
-7349 
-7350 
-7351 
-7352 
-7353 
-7354 
-7355 
-7356 
-7357 
-7358 
-7359 
-7360 
-7361 
-7362 
-7363 
-7364 
-7365 
-7366 
-7367 
-7368 
-7369 
-7370 
-7371 
-7372 
-7373 
-7374 
-7375 
-7376 
-7377 
-7378 
-7379 
-7380 
-7381 
-7382 
-7383 
-7384 
-7385 
-7386 
-7387 
-7388 
-7389 
-7390 
-7391 
-7392 
-7393 
-7394 
-7395 
-7396 
-7397 
-7398 
-7399 
-7400 
-7401 
-7402 
-7403 
-7404 
-7405 
-7406 
-7407 
-7408 
-7409 
-7410 
-7411 
-7412 
-7413 
-7414 
-7415 
-7416 
-7417 
-7418 
-7419 
-7420 
-7421 
-7422 
-7423 
-7424 
-7425 
-7426 
-7427 
-7428 
-7429 
-7430 
-7431 
-7432 
-7433 
-7434 
-7435 
-7436 
-7437 
-7438 
-7439 
-7440 
-7441 
-7442 
-7443 
-7444 
-7445 
-7446 
-7447 
-7448 
-7449 
-7450 
-7451 
-7452 
-7453 
-7454 
-7455 
-7456 
-7457 
-7458 
-7459 
-7460 
-7461 
-7462 
-7463 
-7464 
-7465 
-7466 
-7467 
-7468 
-7469 
-7470 
-7471 
-7472 
-7473 
-7474 
-7475 
-7476 
-7477 
-7478 
-7479 
-7480 
-7481 
-7482 
-7483 
-7484 
-7485 
-7486 
-7487 
-7488 
-7489 
-7490 
-7491 
-7492 
-7493 
-7494 
-7495 
-7496 
-7497 
-7498 
-7499 
-7500 
-7501 
-7502 
-7503 
-7504 
-7505 
-7506 
-7507 
-7508 
-7509 
-7510 
-7511 
-7512 
-7513 
-7514 
-7515 
-7516 
-7517 
-7518 
-7519 
-7520 
-7521 
-7522 
-7523 
-7524 
-7525 
-7526 
-7527 
-7528 
-7529 
-7530 
-7531 
-7532 
-7533 
-7534 
-7535 
-7536 
-7537 
-7538 
-7539 
-7540 
-7541 
-7542 
-7543 
-7544 
-7545 
-7546 
-7547 
-7548 
-7549 
-7550 
-7551 
-7552 
-7553 
-7554 
-7555 
-7556 
-7557 
-7558 
-7559 
-7560 
-7561 
-7562 
-7563 
-7564 
-7565 
-7566 
-7567 
-7568 
-7569 
-7570 
-7571 
-7572 
-7573 
-7574 
-7575 
-7576 
-7577 
-7578 
-7579 
-7580 
-7581 
-7582 
-7583 
-7584 
-7585 
-7586 
-7587 
-7588 
-7589 
-7590 
-7591 
-7592 
-7593 
-7594 
-7595 
-7596 
-7597 
-7598 
-7599 
-7600 
-7601 
-7602 
-7603 
-7604 
-7605 
-7606 
-7607 
-7608 
-7609 
-7610 
-7611 
-7612 
-7613 
-7614 
-7615 
-7616 
-7617 
-7618 
-7619 
-7620 
-7621 
-7622 
-7623 
-7624 
-7625 
-7626 
-7627 
-7628 
-7629 
-7630 
-7631 
-7632 
-7633 
-7634 
-7635 
-7636 
-7637 
-7638 
-7639 
-7640 
-7641 
-7642 
-7643 
-7644 
-7645 
-7646 
-7647 
-7648 
-7649 
-7650 
-7651 
-7652 
-7653 
-7654 
-7655 
-7656 
-7657 
-7658 
-7659 
-7660 
-7661 
-7662 
-7663 
-7664 
-7665 
-7666 
-7667 
-7668 
-7669 
-7670 
-7671 
-7672 
-7673 
-7674 
-7675 
-7676 
-7677 
-7678 
-7679 
-7680 
-7681 
-7682 
-7683 
-7684 
-7685 
-7686 
-7687 
-7688 
-7689 
-7690 
-7691 
-7692 
-7693 
-7694 
-7695 
-7696 
-7697 
-7698 
-7699 
-7700 
-7701 
-7702 
-7703 
-7704 
-7705 
-7706 
-7707 
-7708 
-7709 
-7710 
-7711 
-7712 
-7713 
-7714 
-7715 
-7716 
-7717 
-7718 
-7719 
-7720 
-7721 
-7722 
-7723 
-7724 
-7725 
-7726 
-7727 
-7728 
-7729 
-7730 
-7731 
-7732 
-7733 
-7734 
-7735 
-7736 
-7737 
-7738 
-7739 
-7740 
-7741 
-7742 
-7743 
-7744 
-7745 
-7746 
-7747 
-7748 
-7749 
-7750 
-7751 
-7752 
-7753 
-7754 
-7755 
-7756 
-7757 
-7758 
-7759 
-7760 
-7761 
-7762 
-7763 
-7764 
-7765 
-7766 
-7767 
-7768 
-7769 
-7770 
-7771 
-7772 
-7773 
-7774 
-7775 
-7776 
-7777 
-7778 
-7779 
-7780 
-7781 
-7782 
-7783 
-7784 
-7785 
-7786 
-7787 
-7788 
-7789 
-7790 
-7791 
-7792 
-7793 
-7794 
-7795 
-7796 
-7797 
-7798 
-7799 
-7800 
-7801 
-7802 
-7803 
-7804 
-7805 
-7806 
-7807 
-7808 
-7809 
-7810 
-7811 
-7812 
-7813 
-7814 
-7815 
-7816 
-7817 
-7818 
-7819 
-7820 
-7821 
-7822 
-7823 
-7824 
-7825 
-7826 
-7827 
-7828 
-7829 
-7830 
-7831 
-7832 
-7833 
-7834 
-7835 
-7836 
-7837 
-7838 
-7839 
-7840 
-7841 
-7842 
-7843 
-7844 
-7845 
-7846 
-7847 
-7848 
-7849 
-7850 
-7851 
-7852 
-7853 
-7854 
-7855 
-7856 
-7857 
-7858 
-7859 
-7860 
-7861 
-7862 
-7863 
-7864 
-7865 
-7866 
-7867 
-7868 
-7869 
-7870 
-7871 
-7872 
-7873 
-7874 
-7875 
-7876 
-7877 
-7878 
-7879 
-7880 
-7881 
-7882 
-7883 
-7884 
-7885 
-7886 
-7887 
-7888 
-7889 
-7890 
-7891 
-7892 
-7893 
-7894 
-7895 
-7896 
-7897 
-7898 
-7899 
-7900 
-7901 
-7902 
-7903 
-7904 
-7905 
-7906 
-7907 
-7908 
-7909 
-7910 
-7911 
-7912 
-7913 
-7914 
-7915 
-7916 
-7917 
-7918 
-7919 
-7920 
-7921 
-7922 
-7923 
-7924 
-7925 
-7926 
-7927 
-7928 
-7929 
-7930 
-7931 
-7932 
-7933 
-7934 
-7935 
-7936 
-7937 
-7938 
-7939 
-7940 
-7941 
-7942 
-7943 
-7944 
-7945 
-7946 
-7947 
-7948 
-7949 
-7950 
-7951 
-7952 
-7953 
-7954 
-7955 
-7956 
-7957 
-7958 
-7959 
-7960 
-7961 
-7962 
-7963 
-7964 
-7965 
-7966 
-7967 
-7968 
-7969 
-7970 
-7971 
-7972 
-7973 
-7974 
-7975 
-7976 
-7977 
-7978 
-7979 
-7980 
-7981 
-7982 
-7983 
-7984 
-7985 
-7986 
-7987 
-7988 
-7989 
-7990 
-7991 
-7992 
-7993 
-7994 
-7995 
-7996 
-7997 
-7998 
-7999 
-8000 
-8001 
-8002 
-8003 
-8004 
-8005 
-8006 
-8007 
-8008 
-8009 
-8010 
-8011 
-8012 
-8013 
-8014 
-8015 
-8016 
-8017 
-8018 
-8019 
-8020 
-8021 
-8022 
-8023 
-8024 
-8025 
-8026 
-8027 
-8028 
-8029 
-8030 
-8031 
-8032 
-8033 
-8034 
-8035 
-8036 
-8037 
-8038 
-8039 
-8040 
-8041 
-8042 
-8043 
-8044 
-8045 
-8046 
-8047 
-8048 
-8049 
-8050 
-8051 
-8052 
-8053 
-8054 
-8055 
-8056 
-8057 
-8058 
-8059 
-8060 
-8061 
-8062 
-8063 
-8064 
-8065 
-8066 
-8067 
-8068 
-8069 
-8070 
-8071 
-8072 
-8073 
-8074 
-8075 
-8076 
-8077 
-8078 
-8079 
-8080 
-8081 
-8082 
-8083 
-8084 
-8085 
-8086 
-8087 
-8088 
-8089 
-8090 
-8091 
-8092 
-8093 
-8094 
-8095 
-8096 
-8097 
-8098 
-8099 
-8100 
-8101 
-8102 
-8103 
-8104 
-8105 
-8106 
-8107 
-8108 
-8109 
-8110 
-8111 
-8112 
-8113 
-8114 
-8115 
-8116 
-8117 
-8118 
-8119 
-8120 
-8121 
-8122 
-8123 
-8124 
-8125 
-8126 
-8127 
-8128 
-8129 
-8130 
-8131 
-8132 
-8133 
-8134 
-8135 
-8136 
-8137 
-8138 
-8139 
-8140 
-8141 
-8142 
-8143 
-8144 
-8145 
-8146 
-8147 
-8148 
-8149 
-8150 
-8151 
-8152 
-8153 
-8154 
-8155 
-8156 
-8157 
-8158 
-8159 
-8160 
-8161 
-8162 
-8163 
-8164 
-8165 
-8166 
-8167 
-8168 
-8169 
-8170 
-8171 
-8172 
-8173 
-8174 
-8175 
-8176 
-8177 
-8178 
-8179 
-8180 
-8181 
-8182 
-8183 
-8184 
-8185 
-8186 
-8187 
-8188 
-8189 
-8190 
-8191 
-8192 
-8193 
-8194 
-8195 
-8196 
-8197 
-8198 
-8199 
-8200 
-8201 
-8202 
-8203 
-8204 
-8205 
-8206 
-8207 
-8208 
-8209 
-8210 
-8211 
-8212 
-8213 
-8214 
-8215 
-8216 
-8217 
-8218 
-8219 
-8220 
-8221 
-8222 
-8223 
-8224 
-8225 
-8226 
-8227 
-8228 
-8229 
-8230 
-8231 
-8232 
-8233 
-8234 
-8235 
-8236 
-8237 
-8238 
-8239 
-8240 
-8241 
-8242 
-8243 
-8244 
-8245 
-8246 
-8247 
-8248 
-8249 
-8250 
-8251 
-8252 
-8253 
-8254 
-8255 
-8256 
-8257 
-8258 
-8259 
-8260 
-8261 
-8262 
-8263 
-8264 
-8265 
-8266 
-8267 
-8268 
-8269 
-8270 
-8271 
-8272 
-8273 
-8274 
-8275 
-8276 
-8277 
-8278 
-8279 
-8280 
-8281 
-8282 
-8283 
-8284 
-8285 
-8286 
-8287 
-8288 
-8289 
-8290 
-8291 
-8292 
-8293 
-8294 
-8295 
-8296 
-8297 
-8298 
-8299 
-8300 
-8301 
-8302 
-8303 
-8304 
-8305 
-8306 
-8307 
-8308 
-8309 
-8310 
-8311 
-8312 
-8313 
-8314 
-8315 
-8316 
-8317 
-8318 
-8319 
-8320 
-8321 
-8322 
-8323 
-8324 
-8325 
-8326 
-8327 
-8328 
-8329 
-8330 
-8331 
-8332 
-8333 
-8334 
-8335 
-8336 
-8337 
-8338 
-8339 
-8340 
-8341 
-8342 
-8343 
-8344 
-8345 
-8346 
-8347 
-8348 
-8349 
-8350 
-8351 
-8352 
-8353 
-8354 
-8355 
-8356 
-8357 
-8358 
-8359 
-8360 
-8361 
-8362 
-8363 
-8364 
-8365 
-8366 
-8367 
-8368 
-8369 
-8370 
-8371 
-8372 
-8373 
-8374 
-8375 
-8376 
-8377 
-8378 
-8379 
-8380 
-8381 
-8382 
-8383 
-8384 
-8385 
-8386 
-8387 
-8388 
-8389 
-8390 
-8391 
-8392 
-8393 
-8394 
-8395 
-8396 
-8397 
-8398 
-8399 
-8400 
-8401 
-8402 
-8403 
-8404 
-8405 
-8406 
-8407 
-8408 
-8409 
-8410 
-8411 
-8412 
-8413 
-8414 
-8415 
-8416 
-8417 
-8418 
-8419 
-8420 
-8421 
-8422 
-8423 
-8424 
-8425 
-8426 
-8427 
-8428 
-8429 
-8430 
-8431 
-8432 
-8433 
-8434 
-8435 
-8436 
-8437 
-8438 
-8439 
-8440 
-8441 
-8442 
-8443 
-8444 
-8445 
-8446 
-8447 
-8448 
-8449 
-8450 
-8451 
-8452 
-8453 
-8454 
-8455 
-8456 
-8457 
-8458 
-8459 
-8460 
-8461 
-8462 
-8463 
-8464 
-8465 
-8466 
-8467 
-8468 
-8469 
-8470 
-8471 
-8472 
-8473 
-8474 
-8475 
-8476 
-8477 
-8478 
-8479 
-8480 
-8481 
-8482 
-8483 
-8484 
-8485 
-8486 
-8487 
-8488 
-8489 
-8490 
-8491 
-8492 
-8493 
-8494 
-8495 
-8496 
-8497 
-8498 
-8499 
-8500 
-8501 
-8502 
-8503 
-8504 
-8505 
-8506 
-8507 
-8508 
-8509 
-8510 
-8511 
-8512 
-8513 
-8514 
-8515 
-8516 
-8517 
-8518 
-8519 
-8520 
-8521 
-8522 
-8523 
-8524 
-8525 
-8526 
-8527 
-8528 
-8529 
-8530 
-8531 
-8532 
-8533 
-8534 
-8535 
-8536 
-8537 
-8538 
-8539 
-8540 
-8541 
-8542 
-8543 
-8544 
-8545 
-8546 
-8547 
-8548 
-8549 
-8550 
-8551 
-8552 
-8553 
-8554 
-8555 
-8556 
-8557 
-8558 
-8559 
-8560 
-8561 
-8562 
-8563 
-8564 
-8565 
-8566 
-8567 
-8568 
-8569 
-8570 
-8571 
-8572 
-8573 
-8574 
-8575 
-8576 
-8577 
-8578 
-8579 
-8580 
-8581 
-8582 
-8583 
-8584 
-8585 
-8586 
-8587 
-8588 
-8589 
-8590 
-8591 
-8592 
-8593 
-8594 
-8595 
-8596 
-8597 
-8598 
-8599 
-8600 
-8601 
-8602 
-8603 
-8604 
-8605 
-8606 
-8607 
-8608 
-8609 
-8610 
-8611 
-8612 
-8613 
-8614 
-8615 
-8616 
-8617 
-8618 
-8619 
-8620 
-8621 
-8622 
-8623 
-8624 
-8625 
-8626 
-8627 
-8628 
-8629 
-8630 
-8631 
-8632 
-8633 
-8634 
-8635 
-8636 
-8637 
-8638 
-8639 
-8640 
-8641 
-8642 
-8643 
-8644 
-8645 
-8646 
-8647 
-8648 
-8649 
-8650 
-8651 
-8652 
-8653 
-8654 
-8655 
-8656 
-8657 
-8658 
-8659 
-8660 
-8661 
-8662 
-8663 
-8664 
-8665 
-8666 
-8667 
-8668 
-8669 
-8670 
-8671 
-8672 
-8673 
-8674 
-8675 
-8676 
-8677 
-8678 
-8679 
-8680 
-8681 
-8682 
-8683 
-8684 
-8685 
-8686 
-8687 
-8688 
-8689 
-8690 
-8691 
-8692 
-8693 
-8694 
-8695 
-8696 
-8697 
-8698 
-8699 
-8700 
-8701 
-8702 
-8703 
-8704 
-8705 
-8706 
-8707 
-8708 
-8709 
-8710 
-8711 
-8712 
-8713 
-8714 
-8715 
-8716 
-8717 
-8718 
-8719 
-8720 
-8721 
-8722 
-8723 
-8724 
-8725 
-8726 
-8727 
-8728 
-8729 
-8730 
-8731 
-8732 
-8733 
-8734 
-8735 
-8736 
-8737 
-8738 
-8739 
-8740 
-8741 
-8742 
-8743 
-8744 
-8745 
-8746 
-8747 
-8748 
-8749 
-8750 
-8751 
-8752 
-8753 
-8754 
-8755 
-8756 
-8757 
-8758 
-8759 
-8760 
-8761 
-8762 
-8763 
-8764 
-8765 
-8766 
-8767 
-8768 
-8769 
-8770 
-8771 
-8772 
-8773 
-8774 
-8775 
-8776 
-8777 
-8778 
-8779 
-8780 
-8781 
-8782 
-8783 
-8784 
-8785 
-8786 
-8787 
-8788 
-8789 
-8790 
-8791 
-8792 
-8793 
-8794 
-8795 
-8796 
-8797 
-8798 
-8799 
-8800 
-8801 
-8802 
-8803 
-8804 
-8805 
-8806 
-8807 
-8808 
-8809 
-8810 
-8811 
-8812 
-8813 
-8814 
-8815 
-8816 
-8817 
-8818 
-8819 
-8820 
-8821 
-8822 
-8823 
-8824 
-8825 
-8826 
-8827 
-8828 
-8829 
-8830 
-8831 
-8832 
-8833 
-8834 
-8835 
-8836 
-8837 
-8838 
-8839 
-8840 
-8841 
-8842 
-8843 
-8844 
-8845 
-8846 
-8847 
-8848 
-8849 
-8850 
-8851 
-8852 
-8853 
-8854 
-8855 
-8856 
-8857 
-8858 
-8859 
-8860 
-8861 
-8862 
-8863 
-8864 
-8865 
-8866 
-8867 
-8868 
-8869 
-8870 
-8871 
-8872 
-8873 
-8874 
-8875 
-8876 
-8877 
-8878 
-8879 
-8880 
-8881 
-8882 
-8883 
-8884 
-8885 
-8886 
-8887 
-8888 
-8889 
-8890 
-8891 
-8892 
-8893 
-8894 
-8895 
-8896 
-8897 
-8898 
-8899 
-8900 
-8901 
-8902 
-8903 
-8904 
-8905 
-8906 
-8907 
-8908 
-8909 
-8910 
-8911 
-8912 
-8913 
-8914 
-8915 
-8916 
-8917 
-8918 
-8919 
-8920 
-8921 
-8922 
-8923 
-8924 
-8925 
-8926 
-8927 
-8928 
-8929 
-8930 
-8931 
-8932 
-8933 
-8934 
-8935 
-8936 
-8937 
-8938 
-8939 
-8940 
-8941 
-8942 
-8943 
-8944 
-8945 
-8946 
-8947 
-8948 
-8949 
-8950 
-8951 
-8952 
-8953 
-8954 
-8955 
-8956 
-8957 
-8958 
-8959 
-8960 
-8961 
-8962 
-8963 
-8964 
-8965 
-8966 
-8967 
-8968 
-8969 
-8970 
-8971 
-8972 
-8973 
-8974 
-8975 
-8976 
-8977 
-8978 
-8979 
-8980 
-8981 
-8982 
-8983 
-8984 
-8985 
-8986 
-8987 
-8988 
-8989 
-8990 
-8991 
-8992 
-8993 
-8994 
-8995 
-8996 
-8997 
-8998 
-8999 
-9000 
-9001 
-9002 
-9003 
-9004 
-9005 
-9006 
-9007 
-9008 
-9009 
-9010 
-9011 
-9012 
-9013 
-9014 
-9015 
-9016 
-9017 
-9018 
-9019 
-9020 
-9021 
-9022 
-9023 
-9024 
-9025 
-9026 
-9027 
-9028 
-9029 
-9030 
-9031 
-9032 
-9033 
-9034 
-9035 
-9036 
-9037 
-9038 
-9039 
-9040 
-9041 
-9042 
-9043 
-9044 
-9045 
-9046 
-9047 
-9048 
-9049 
-9050 
-9051 
-9052 
-9053 
-9054 
-9055 
-9056 
-9057 
-9058 
-9059 
-9060 
-9061 
-9062 
-9063 
-9064 
-9065 
-9066 
-9067 
-9068 
-9069 
-9070 
-9071 
-9072 
-9073 
-9074 
-9075 
-9076 
-9077 
-9078 
-9079 
-9080 
-9081 
-9082 
-9083 
-9084 
-9085 
-9086 
-9087 
-9088 
-9089 
-9090 
-9091 
-9092 
-9093 
-9094 
-9095 
-9096 
-9097 
-9098 
-9099 
-9100 
-9101 
-9102 
-9103 
-9104 
-9105 
-9106 
-9107 
-9108 
-9109 
-9110 
-9111 
-9112 
-9113 
-9114 
-9115 
-9116 
-9117 
-9118 
-9119 
-9120 
-9121 
-9122 
-9123 
-9124 
-9125 
-9126 
-9127 
-9128 
-9129 
-9130 
-9131 
-9132 
-9133 
-9134 
-9135 
-9136 
-9137 
-9138 
-9139 
-9140 
-9141 
-9142 
-9143 
-9144 
-9145 
-9146 
-9147 
-9148 
-9149 
-9150 
-9151 
-9152 
-9153 
-9154 
-9155 
-9156 
-9157 
-9158 
-9159 
-9160 
-9161 
-9162 
-9163 
-9164 
-9165 
-9166 
-9167 
-9168 
-9169 
-9170 
-9171 
-9172 
-9173 
-9174 
-9175 
-9176 
-9177 
-9178 
-9179 
-9180 
-9181 
-9182 
-9183 
-9184 
-9185 
-9186 
-9187 
-9188 
-9189 
-9190 
-9191 
-9192 
-9193 
-9194 
-9195 
-9196 
-9197 
-9198 
-9199 
-9200 
-9201 
-9202 
-9203 
-9204 
-9205 
-9206 
-9207 
-9208 
-9209 
-9210 
-9211 
-9212 
-9213 
-9214 
-9215 
-9216 
-9217 
-9218 
-9219 
-9220 
-9221 
-9222 
-9223 
-9224 
-9225 
-9226 
-9227 
-9228 
-9229 
-9230 
-9231 
-9232 
-9233 
-9234 
-9235 
-9236 
-9237 
-9238 
-9239 
-9240 
-9241 
-9242 
-9243 
-9244 
-9245 
-9246 
-9247 
-9248 
-9249 
-9250 
-9251 
-9252 
-9253 
-9254 
-9255 
-9256 
-9257 
-9258 
-9259 
-9260 
-9261 
-9262 
-9263 
-9264 
-9265 
-9266 
-9267 
-9268 
-9269 
-9270 
-9271 
-9272 
-9273 
-9274 
-9275 
-9276 
-9277 
-9278 
-9279 
-9280 
-9281 
-9282 
-9283 
-9284 
-9285 
-9286 
-9287 
-9288 
-9289 
-9290 
-9291 
-9292 
-9293 
-9294 
-9295 
-9296 
-9297 
-9298 
-9299 
-9300 
-9301 
-9302 
-9303 
-9304 
-9305 
-9306 
-9307 
-9308 
-9309 
-9310 
-9311 
-9312 
-9313 
-9314 
-9315 
-9316 
-9317 
-9318 
-9319 
-9320 
-9321 
-9322 
-9323 
-9324 
-9325 
-9326 
-9327 
-9328 
-9329 
-9330 
-9331 
-9332 
-9333 
-9334 
-9335 
-9336 
-9337 
-9338 
-9339 
-9340 
-9341 
-9342 
-9343 
-9344 
-9345 
-9346 
-9347 
-9348 
-9349 
-9350 
-9351 
-9352 
-9353 
-9354 
-9355 
-9356 
-9357 
-9358 
-9359 
-9360 
-9361 
-9362 
-9363 
-9364 
-9365 
-9366 
-9367 
-9368 
-9369 
-9370 
-9371 
-9372 
-9373 
-9374 
-9375 
-9376 
-9377 
-9378 
-9379 
-9380 
-9381 
-9382 
-9383 
-9384 
-9385 
-9386 
-9387 
-9388 
-9389 
-9390 
-9391 
-9392 
-9393 
-9394 
-9395 
-9396 
-9397 
-9398 
-9399 
-9400 
-9401 
-9402 
-9403 
-9404 
-9405 
-9406 
-9407 
-9408 
-9409 
-9410 
-9411 
-9412 
-9413 
-9414 
-9415 
-9416 
-9417 
-9418 
-9419 
-9420 
-9421 
-9422 
-9423 
-9424 
-9425 
-9426 
-9427 
-9428 
-9429 
-9430 
-9431 
-9432 
-9433 
-9434 
-9435 
-9436 
-9437 
-9438 
-9439 
-9440 
-9441 
-9442 
-9443 
-9444 
-9445 
-9446 
-9447 
-9448 
-9449 
-9450 
-9451 
-9452 
-9453 
-9454 
-9455 
-9456 
-9457 
-9458 
-9459 
-9460 
-9461 
-9462 
-9463 
-9464 
-9465 
-9466 
-9467 
-9468 
-9469 
-9470 
-9471 
-9472 
-9473 
-9474 
-9475 
-9476 
-9477 
-9478 
-9479 
-9480 
-9481 
-9482 
-9483 
-9484 
-9485 
-9486 
-9487 
-9488 
-9489 
-9490 
-9491 
-9492 
-9493 
-9494 
-9495 
-9496 
-9497 
-9498 
-9499 
-9500 
-9501 
-9502 
-9503 
-9504 
-9505 
-9506 
-9507 
-9508 
-9509 
-9510 
-9511 
-9512 
-9513 
-9514 
-9515 
-9516 
-9517 
-9518 
-9519 
-9520 
-9521 
-9522 
-9523 
-9524 
-9525 
-9526 
-9527 
-9528 
-9529 
-9530 
-9531 
-9532 
-9533 
-9534 
-9535 
-9536 
-9537 
-9538 
-9539 
-9540 
-9541 
-9542 
-9543 
-9544 
-9545 
-9546 
-9547 
-9548 
-9549 
-9550 
-9551 
-9552 
-9553 
-9554 
-9555 
-9556 
-9557 
-9558 
-9559 
-9560 
-9561 
-9562 
-9563 
-9564 
-9565 
-9566 
-9567 
-9568 
-9569 
-9570 
-9571 
-9572 
-9573 
-9574 
-9575 
-9576 
-9577 
-9578 
-9579 
-9580 
-9581 
-9582 
-9583 
-9584 
-9585 
-9586 
-9587 
-9588 
-9589 
-9590 
-9591 
-9592 
-9593 
-9594 
-9595 
-9596 
-9597 
-9598 
-9599 
-9600 
-9601 
-9602 
-9603 
-9604 
-9605 
-9606 
-9607 
-9608 
-9609 
-9610 
-9611 
-9612 
-9613 
-9614 
-9615 
-9616 
-9617 
-9618 
-9619 
-9620 
-9621 
-9622 
-9623 
-9624 
-9625 
-9626 
-9627 
-9628 
-9629 
-9630 
-9631 
-9632 
-9633 
-9634 
-9635 
-9636 
-9637 
-9638 
-9639 
-9640 
-9641 
-9642 
-9643 
-9644 
-9645 
-9646 
-9647 
-9648 
-9649 
-9650 
-9651 
-9652 
-9653 
-9654 
-9655 
-9656 
-9657 
-9658 
-9659 
-9660 
-9661 
-9662 
-9663 
-9664 
-9665 
-9666 
-9667 
-9668 
-9669 
-9670 
-9671 
-9672 
-9673 
-9674 
-9675 
-9676 
-9677 
-9678 
-9679 
-9680 
-9681 
-9682 
-9683 
-9684 
-9685 
-9686 
-9687 
-9688 
-9689 
-9690 
-9691 
-9692 
-9693 
-9694 
-9695 
-9696 
-9697 
-9698 
-9699 
-9700 
-9701 
-9702 
-9703 
-9704 
-9705 
-9706 
-9707 
-9708 
-9709 
-9710 
-9711 
-9712 
-9713 
-9714 
-9715 
-9716 
-9717 
-9718 
-9719 
-9720 
-9721 
-9722 
-9723 
-9724 
-9725 
-9726 
-9727 
-9728 
-9729 
-9730 
-9731 
-9732 
-9733 
-9734 
-9735 
-9736 
-9737 
-9738 
-9739 
-9740 
-9741 
-9742 
-9743 
-9744 
-9745 
-9746 
-9747 
-9748 
-9749 
-9750 
-9751 
-9752 
-9753 
-9754 
-9755 
-9756 
-9757 
-9758 
-9759 
-9760 
-9761 
-9762 
-9763 
-9764 
-9765 
-9766 
-9767 
-9768 
-9769 
-9770 
-9771 
-9772 
-9773 
-9774 
-9775 
-9776 
-9777 
-9778 
-9779 
-9780 
-9781 
-9782 
-9783 
-9784 
-9785 
-9786 
-9787 
-9788 
-9789 
-9790 
-9791 
-9792 
-9793 
-9794 
-9795 
-9796 
-9797 
-9798 
-9799 
-9800 
-9801 
-9802 
-9803 
-9804 
-9805 
-9806 
-9807 
-9808 
-9809 
-9810 
-9811 
-9812 
-9813 
-9814 
-9815 
-9816 
-9817 
-9818 
-9819 
-9820 
-9821 
-9822 
-9823 
-9824 
-9825 
-9826 
-9827 
-9828 
-9829 
-9830 
-9831 
-9832 
-9833 
-9834 
-9835 
-9836 
-9837 
-9838 
-9839 
-9840 
-9841 
-9842 
-9843 
-9844 
-9845 
-9846 
-9847 
-9848 
-9849 
-9850 
-9851 
-9852 
-9853 
-9854 
-9855 
-9856 
-9857 
-9858 
-9859 
-9860 
-9861 
-9862 
-9863 
-9864 
-9865 
-9866 
-9867 
-9868 
-9869 
-9870 
-9871 
-9872 
-9873 
-9874 
-9875 
-9876 
-9877 
-9878 
-9879 
-9880 
-9881 
-9882 
-9883 
-9884 
-9885 
-9886 
-9887 
-9888 
-9889 
-9890 
-9891 
-9892 
-9893 
-9894 
-9895 
-9896 
-9897 
-9898 
-9899 
-9900 
-9901 
-9902 
-9903 
-9904 
-9905 
-9906 
-9907 
-9908 
-9909 
-9910 
-9911 
-9912 
-9913 
-9914 
-9915 
-9916 
-9917 
-9918 
-9919 
-9920 
-9921 
-9922 
-9923 
-9924 
-9925 
-9926 
-9927 
-9928 
-9929 
-9930 
-9931 
-9932 
-9933 
-9934 
-9935 
-9936 
-9937 
-9938 
-9939 
-9940 
-9941 
-9942 
-9943 
-9944 
-9945 
-9946 
-9947 
-9948 
-9949 
-9950 
-9951 
-9952 
-9953 
-9954 
-9955 
-9956 
-9957 
-9958 
-9959 
-9960 
-9961 
-9962 
-9963 
-9964 
-9965 
-9966 
-9967 
-9968 
-9969 
-9970 
-9971 
-9972 
-9973 
-9974 
-9975 
-9976 
-9977 
-9978 
-9979 
-9980 
-9981 
-9982 
-9983 
-9984 
-9985 
-9986 
-9987 
-9988 
-9989 
-9990 
-9991 
-9992 
-9993 
-9994 
-9995 
-9996 
-9997 
-9998 
-9999 
-10000 
-10001 
-10002 
-10003 
-10004 
-10005 
-10006 
-10007 
-10008 
-10009 
-10010 
-10011 
-10012 
-10013 
-10014 
-10015 
-10016 
-10017 
-10018 
-10019 
-10020 
-10021 
-10022 
-10023 
-10024 
-10025 
-10026 
-10027 
-10028 
-10029 
-10030 
-10031 
-10032 
-10033 
-10034 
-10035 
-10036 
-10037 
-10038 
-10039 
-10040 
-10041 
-10042 
-10043 
-10044 
-10045 
-10046 
-10047 
-10048 
-10049 
-10050 
-10051 
-10052 
-10053 
-10054 
-10055 
-10056 
-10057 
-10058 
-10059 
-10060 
-10061 
-10062 
-10063 
-10064 
-10065 
-10066 
-10067 
-10068 
-10069 
-10070 
-10071 
-10072 
-10073 
-10074 
-10075 
-10076 
-10077 
-10078 
-10079 
-10080 
-10081 
-10082 
-10083 
-10084 
-10085 
-10086 
-10087 
-10088 
-10089 
-10090 
-10091 
-10092 
-10093 
-10094 
-10095 
-10096 
-10097 
-10098 
-10099 
-10100 
-10101 
-10102 
-10103 
-10104 
-10105 
-10106 
-10107 
-10108 
-10109 
-10110 
-10111 
-10112 
-10113 
-10114 
-10115 
-10116 
-10117 
-10118 
-10119 
-10120 
-10121 
-10122 
-10123 
-10124 
-10125 
-10126 
-10127 
-10128 
-10129 
-10130 
-10131 
-10132 
-10133 
-10134 
-10135 
-10136 
-10137 
-10138 
-10139 
-10140 
-10141 
-10142 
-10143 
-10144 
-10145 
-10146 
-10147 
-10148 
-10149 
-10150 
-10151 
-10152 
-10153 
-10154 
-10155 
-10156 
-10157 
-10158 
-10159 
-10160 
-10161 
-10162 
-10163 
-10164 
-10165 
-10166 
-10167 
-10168 
-10169 
-10170 
-10171 
-10172 
-10173 
-10174 
-10175 
-10176 
-10177 
-10178 
-10179 
-10180 
-10181 
-10182 
-10183 
-10184 
-10185 
-10186 
-10187 
-10188 
-10189 
-10190 
-10191 
-10192 
-10193 
-10194 
-10195 
-10196 
-10197 
-10198 
-10199 
-10200 
-10201 
-10202 
-10203 
-10204 
-10205 
-10206 
-10207 
-10208 
-10209 
-10210 
-10211 
-10212 
-10213 
-10214 
-10215 
-10216 
-10217 
-10218 
-10219 
-10220 
-10221 
-10222 
-10223 
-10224 
-10225 
-10226 
-10227 
-10228 
-10229 
-10230 
-10231 
-10232 
-10233 
-10234 
-10235 
-10236 
-10237 
-10238 
-10239 
-10240 
-10241 
-10242 
-10243 
-10244 
-10245 
-10246 
-10247 
-10248 
-10249 
-10250 
-10251 
-10252 
-10253 
-10254 
-10255 
-10256 
-10257 
-10258 
-10259 
-10260 
-10261 
-10262 
-10263 
-10264 
-10265 
-10266 
-10267 
-10268 
-10269 
-10270 
-10271 
-10272 
-10273 
-10274 
-10275 
-10276 
-10277 
-10278 
-10279 
-10280 
-10281 
-10282 
-10283 
-10284 
-10285 
-10286 
-10287 
-10288 
-10289 
-10290 
-10291 
-10292 
-10293 
-10294 
-10295 
-10296 
-10297 
-10298 
-10299 
-10300 
-10301 
-10302 
-10303 
-10304 
-10305 
-10306 
-10307 
-10308 
-10309 
-10310 
-10311 
-10312 
-10313 
-10314 
-10315 
-10316 
-10317 
-10318 
-10319 
-10320 
-10321 
-10322 
-10323 
-10324 
-10325 
-10326 
-10327 
-10328 
-10329 
-10330 
-10331 
-10332 
-10333 
-10334 
-10335 
-10336 
-10337 
-10338 
-10339 
-10340 
-10341 
-10342 
-10343 
-10344 
-10345 
-10346 
-10347 
-10348 
-10349 
-10350 
-10351 
-10352 
-10353 
-10354 
-10355 
-10356 
-10357 
-10358 
-10359 
-10360 
-10361 
-10362 
-10363 
-10364 
-10365 
-10366 
-10367 
-10368 
-10369 
-10370 
-10371 
-10372 
-10373 
-10374 
-10375 
-10376 
-10377 
-10378 
-10379 
-10380 
-10381 
-10382 
-10383 
-10384 
-10385 
-10386 
-10387 
-10388 
-10389 
-10390 
-10391 
-10392 
-10393 
-10394 
-10395 
-10396 
-10397 
-10398 
-10399 
-10400 
-10401 
-10402 
-10403 
-10404 
-10405 
-10406 
-10407 
-10408 
-10409 
-10410 
-10411 
-10412 
-10413 
-10414 
-10415 
-10416 
-10417 
-10418 
-10419 
-10420 
-10421 
-10422 
-10423 
-10424 
-10425 
-10426 
-10427 
-10428 
-10429 
-10430 
-10431 
-10432 
-10433 
-10434 
-10435 
-10436 
-10437 
-10438 
-10439 
-10440 
-10441 
-10442 
-10443 
-10444 
-10445 
-10446 
-10447 
-10448 
-10449 
-10450 
-10451 
-10452 
-10453 
-10454 
-10455 
-10456 
-10457 
-10458 
-10459 
-10460 
-10461 
-10462 
-10463 
-10464 
-10465 
-10466 
-10467 
-10468 
-10469 
-10470 
-10471 
-10472 
-10473 
-10474 
-10475 
-10476 
-10477 
-10478 
-10479 
-10480 
-10481 
-10482 
-10483 
-10484 
-10485 
-10486 
-10487 
-10488 
-10489 
-10490 
-10491 
-10492 
-10493 
-10494 
-10495 
-10496 
-10497 
-10498 
-10499 
-10500 
-10501 
-10502 
-10503 
-10504 
-10505 
-10506 
-10507 
-10508 
-10509 
-10510 
-10511 
-10512 
-10513 
-10514 
-10515 
-10516 
-10517 
-10518 
-10519 
-10520 
-10521 
-10522 
-10523 
-10524 
-10525 
-10526 
-10527 
-10528 
-10529 
-10530 
-10531 
-10532 
-10533 
-10534 
-10535 
-10536 
-10537 
-10538 
-10539 
-10540 
-10541 
-10542 
-10543 
-10544 
-10545 
-10546 
-10547 
-10548 
-10549 
-10550 
-10551 
-10552 
-10553 
-10554 
-10555 
-10556 
-10557 
-10558 
-10559 
-10560 
-10561 
-10562 
-10563 
-10564 
-10565 
-10566 
-10567 
-10568 
-10569 
-10570 
-10571 
-10572 
-10573 
-10574 
-10575 
-10576 
-10577 
-10578 
-10579 
-10580 
-10581 
-10582 
-10583 
-10584 
-10585 
-10586 
-10587 
-10588 
-10589 
-10590 
-10591 
-10592 
-10593 
-10594 
-10595 
-10596 
-10597 
-10598 
-10599 
-10600 
-10601 
-10602 
-10603 
-10604 
-10605 
-10606 
-10607 
-10608 
-10609 
-10610 
-10611 
-10612 
-10613 
-10614 
-10615 
-10616 
-10617 
-10618 
-10619 
-10620 
-10621 
-10622 
-10623 
-10624 
-10625 
-10626 
-10627 
-10628 
-10629 
-10630 
-10631 
-10632 
-10633 
-10634 
-10635 
-10636 
-10637 
-10638 
-10639 
-10640 
-10641 
-10642 
-10643 
-10644 
-10645 
-10646 
-10647 
-10648 
-10649 
-10650 
-10651 
-10652 
-10653 
-10654 
-10655 
-10656 
-10657 
-10658 
-10659 
-10660 
-10661 
-10662 
-10663 
-10664 
-10665 
-10666 
-10667 
-10668 
-10669 
-10670 
-10671 
-10672 
-10673 
-10674 
-10675 
-10676 
-10677 
-10678 
-10679 
-10680 
-10681 
-10682 
-10683 
-10684 
-10685 
-10686 
-10687 
-10688 
-10689 
-10690 
-10691 
-10692 
-10693 
-10694 
-10695 
-10696 
-10697 
-10698 
-10699 
-10700 
-10701 
-10702 
-10703 
-10704 
-10705 
-10706 
-10707 
-10708 
-10709 
-10710 
-10711 
-10712 
-10713 
-10714 
-10715 
-10716 
-10717 
-10718 
-10719 
-10720 
-10721 
-10722 
-10723 
-10724 
-10725 
-10726 
-10727 
-10728 
-10729 
-10730 
-10731 
-10732 
-10733 
-10734 
-10735 
-10736 
-10737 
-10738 
-10739 
-10740 
-10741 
-10742 
-10743 
-10744 
-10745 
-10746 
-10747 
-10748 
-10749 
-10750 
-10751 
-10752 
-10753 
-10754 
-10755 
-10756 
-10757 
-10758 
-10759 
-10760 
-10761 
-10762 
-10763 
-10764 
-10765 
-10766 
-10767 
-10768 
-10769 
-10770 
-10771 
-10772 
-10773 
-10774 
-10775 
-10776 
-10777 
-10778 
-10779 
-10780 
-10781 
-10782 
-10783 
-10784 
-10785 
-10786 
-10787 
-10788 
-10789 
-10790 
-10791 
-10792 
-10793 
-10794 
-10795 
-10796 
-10797 
-10798 
-10799 
-10800 
-10801 
-10802 
-10803 
-10804 
-10805 
-10806 
-10807 
-10808 
-10809 
-10810 
-10811 
-10812 
-10813 
-10814 
-10815 
-10816 
-10817 
-10818 
-10819 
-10820 
-10821 
-10822 
-10823 
-10824 
-10825 
-10826 
-10827 
-10828 
-10829 
-10830 
-10831 
-10832 
-10833 
-10834 
-10835 
-10836 
-10837 
-10838 
-10839 
-10840 
-10841 
-10842 
-10843 
-10844 
-10845 
-10846 
-10847 
-10848 
-10849 
-10850 
-10851 
-10852 
-10853 
-10854 
-10855 
-10856 
-10857 
-10858 
-10859 
-10860 
-10861 
-10862 
-10863 
-10864 
-10865 
-10866 
-10867 
-10868 
-10869 
-10870 
-10871 
-10872 
-10873 
-10874 
-10875 
-10876 
-10877 
-10878 
-10879 
-10880 
-10881 
-10882 
-10883 
-10884 
-10885 
-10886 
-10887 
-10888 
-10889 
-10890 
-10891 
-10892 
-10893 
-10894 
-10895 
-10896 
-10897 
-10898 
-10899 
-10900 
-10901 
-10902 
-10903 
-10904 
-10905 
-10906 
-10907 
-10908 
-10909 
-10910 
-10911 
-10912 
-10913 
-10914 
-10915 
-10916 
-10917 
-10918 
-10919 
-10920 
-10921 
-10922 
-10923 
-10924 
-10925 
-10926 
-10927 
-10928 
-10929 
-10930 
-10931 
-10932 
-10933 
-10934 
-10935 
-10936 
-10937 
-10938 
-10939 
-10940 
-10941 
-10942 
-10943 
-10944 
-10945 
-10946 
-10947 
-10948 
-10949 
-10950 
-10951 
-10952 
-10953 
-10954 
-10955 
-10956 
-10957 
-10958 
-10959 
-10960 
-10961 
-10962 
-10963 
-10964 
-10965 
-10966 
-10967 
-10968 
-10969 
-10970 
-10971 
-10972 
-10973 
-10974 
-10975 
-10976 
-10977 
-10978 
-10979 
-10980 
-10981 
-10982 
-10983 
-10984 
-10985 
-10986 
-10987 
-10988 
-10989 
-10990 
-10991 
-10992 
-10993 
-10994 
-10995 
-10996 
-10997 
-10998 
-10999 
-11000 
-11001 
-11002 
-11003 
-11004 
-11005 
-11006 
-11007 
-11008 
-11009 
-11010 
-11011 
-11012 
-11013 
-11014 
-11015 
-11016 
-11017 
-11018 
-11019 
-11020 
-11021 
-11022 
-11023 
-11024 
-11025 
-11026 
-11027 
-11028 
-11029 
-11030 
-11031 
-11032 
-11033 
-11034 
-11035 
-11036 
-11037 
-11038 
-11039 
-11040 
-11041 
-11042 
-11043 
-11044 
-11045 
-11046 
-11047 
-11048 
-11049 
-11050 
-11051 
-11052 
-11053 
-11054 
-11055 
-11056 
-11057 
-11058 
-11059 
-11060 
-11061 
-11062 
-11063 
-11064 
-11065 
-11066 
-11067 
-11068 
-11069 
-11070 
-11071 
-11072 
-11073 
-11074 
-11075 
-11076 
-11077 
-11078 
-11079 
-11080 
-11081 
-11082 
-11083 
-11084 
-11085 
-11086 
-11087 
-11088 
-11089 
-11090 
-11091 
-11092 
-11093 
-11094 
-11095 
-11096 
-11097 
-11098 
-11099 
-11100 
-11101 
-11102 
-11103 
-11104 
-11105 
-11106 
-11107 
-11108 
-11109 
-11110 
-11111 
-11112 
-11113 
-11114 
-11115 
-11116 
-11117 
-11118 
-11119 
-11120 
-11121 
-11122 
-11123 
-11124 
-11125 
-11126 
-11127 
-11128 
-11129 
-11130 
-11131 
-11132 
-11133 
-11134 
-11135 
-11136 
-11137 
-11138 
-11139 
-11140 
-11141 
-11142 
-11143 
-11144 
-11145 
-11146 
-11147 
-11148 
-11149 
-11150 
-11151 
-11152 
-11153 
-11154 
-11155 
-11156 
-11157 
-11158 
-11159 
-11160 
-11161 
-11162 
-11163 
-11164 
-11165 
-11166 
-11167 
-11168 
-11169 
-11170 
-11171 
-11172 
-11173 
-11174 
-11175 
-11176 
-11177 
-11178 
-11179 
-11180 
-11181 
-11182 
-11183 
-11184 
-11185 
-11186 
-11187 
-11188 
-11189 
-11190 
-11191 
-11192 
-11193 
-11194 
-11195 
-11196 
-11197 
-11198 
-11199 
-11200 
-11201 
-11202 
-11203 
-11204 
-11205 
-11206 
-11207 
-11208 
-11209 
-11210 
-11211 
-11212 
-11213 
-11214 
-11215 
-11216 
-11217 
-11218 
-11219 
-11220 
-11221 
-11222 
-11223 
-11224 
-11225 
-11226 
-11227 
-11228 
-11229 
-11230 
-11231 
-11232 
-11233 
-11234 
-11235 
-11236 
-11237 
-11238 
-11239 
-11240 
-11241 
-11242 
-11243 
-11244 
-11245 
-11246 
-11247 
-11248 
-11249 
-11250 
-11251 
-11252 
-11253 
-11254 
-11255 
-11256 
-11257 
-11258 
-11259 
-11260 
-11261 
-11262 
-11263 
-11264 
-11265 
-11266 
-11267 
-11268 
-11269 
-11270 
-11271 
-11272 
-11273 
-11274 
-11275 
-11276 
-11277 
-11278 
-11279 
-11280 
-11281 
-11282 
-11283 
-11284 
-11285 
-11286 
-11287 
-11288 
-11289 
-11290 
-11291 
-11292 
-11293 
-11294 
-11295 
-11296 
-11297 
-11298 
-11299 
-11300 
-11301 
-11302 
-11303 
-11304 
-11305 
-11306 
-11307 
-11308 
-11309 
-11310 
-11311 
-11312 
-11313 
-11314 
-11315 
-11316 
-11317 
-11318 
-11319 
-11320 
-11321 
-11322 
-11323 
-11324 
-11325 
-11326 
-11327 
-11328 
-11329 
-11330 
-11331 
-11332 
-11333 
-11334 
-11335 
-11336 
-11337 
-11338 
-11339 
-11340 
-11341 
-11342 
-11343 
-11344 
-11345 
-11346 
-11347 
-11348 
-11349 
-11350 
-11351 
-11352 
-11353 
-11354 
-11355 
-11356 
-11357 
-11358 
-11359 
-11360 
-11361 
-11362 
-11363 
-11364 
-11365 
-11366 
-11367 
-11368 
-11369 
-11370 
-11371 
-11372 
-11373 
-11374 
-11375 
-11376 
-11377 
-11378 
-11379 
-11380 
-11381 
-11382 
-11383 
-11384 
-11385 
-11386 
-11387 
-11388 
-11389 
-11390 
-11391 
-11392 
-11393 
-11394 
-11395 
-11396 
-11397 
-11398 
-11399 
-11400 
-11401 
-11402 
-11403 
-11404 
-11405 
-11406 
-11407 
-11408 
-11409 
-11410 
-11411 
-11412 
-11413 
-11414 
-11415 
-11416 
-11417 
-11418 
-11419 
-11420 
-11421 
-11422 
-11423 
-11424 
-11425 
-11426 
-11427 
-11428 
-11429 
-11430 
-11431 
-11432 
-11433 
-11434 
-11435 
-11436 
-11437 
-11438 
-11439 
-11440 
-11441 
-11442 
-11443 
-11444 
-11445 
-11446 
-11447 
-11448 
-11449 
-11450 
-11451 
-11452 
-11453 
-11454 
-11455 
-11456 
-11457 
-11458 
-11459 
-11460 
-11461 
-11462 
-11463 
-11464 
-11465 
-11466 
-11467 
-11468 
-11469 
-11470 
-11471 
-11472 
-11473 
-11474 
-11475 
-11476 
-11477 
-11478 
-11479 
-11480 
-11481 
-11482 
-11483 
-11484 
-11485 
-11486 
-11487 
-11488 
-11489 
-11490 
-11491 
-11492 
-11493 
-11494 
-11495 
-11496 
-11497 
-11498 
-11499 
-11500 
-11501 
-11502 
-11503 
-11504 
-11505 
-11506 
-11507 
-11508 
-11509 
-11510 
-11511 
-11512 
-11513 
-11514 
-11515 
-11516 
-11517 
-11518 
-11519 
-11520 
-11521 
-11522 
-11523 
-11524 
-11525 
-11526 
-11527 
-11528 
-11529 
-11530 
-11531 
-11532 
-11533 
-11534 
-11535 
-11536 
-11537 
-11538 
-11539 
-11540 
-11541 
-11542 
-11543 
-11544 
-11545 
-11546 
-11547 
-11548 
-11549 
-11550 
-11551 
-11552 
-11553 
-11554 
-11555 
-11556 
-11557 
-11558 
-11559 
-11560 
-11561 
-11562 
-11563 
-11564 
-11565 
-11566 
-11567 
-11568 
-11569 
-11570 
-11571 
-11572 
-11573 
-11574 
-11575 
-11576 
-11577 
-11578 
-11579 
-11580 
-11581 
-11582 
-11583 
-11584 
-11585 
-11586 
-11587 
-11588 
-11589 
-11590 
-11591 
-11592 
-11593 
-11594 
-11595 
-11596 
-11597 
-11598 
-11599 
-11600 
-11601 
-11602 
-11603 
-11604 
-11605 
-11606 
-11607 
-11608 
-11609 
-11610 
-11611 
-11612 
-11613 
-11614 
-11615 
-11616 
-11617 
-11618 
-11619 
-11620 
-11621 
-11622 
-11623 
-11624 
-11625 
-11626 
-11627 
-11628 
-11629 
-11630 
-11631 
-11632 
-11633 
-11634 
-11635 
-11636 
-11637 
-11638 
-11639 
-11640 
-11641 
-11642 
-11643 
-11644 
-11645 
-11646 
-11647 
-11648 
-11649 
-11650 
-11651 
-11652 
-11653 
-11654 
-11655 
-11656 
-11657 
-11658 
-11659 
-11660 
-11661 
-11662 
-11663 
-11664 
-11665 
-11666 
-11667 
-11668 
-11669 
-11670 
-11671 
-11672 
-11673 
-11674 
-11675 
-11676 
-11677 
-11678 
-11679 
-11680 
-11681 
-11682 
-11683 
-11684 
-11685 
-11686 
-11687 
-11688 
-11689 
-11690 
-11691 
-11692 
-11693 
-11694 
-11695 
-11696 
-11697 
-11698 
-11699 
-11700 
-11701 
-11702 
-11703 
-11704 
-11705 
-11706 
-11707 
-11708 
-11709 
-11710 
-11711 
-11712 
-11713 
-11714 
-11715 
-11716 
-11717 
-11718 
-11719 
-11720 
-11721 
-11722 
-11723 
-11724 
-11725 
-11726 
-11727 
-11728 
-11729 
-11730 
-11731 
-11732 
-11733 
-11734 
-11735 
-11736 
-11737 
-11738 
-11739 
-11740 
-11741 
-11742 
-11743 
-11744 
-11745 
-11746 
-11747 
-11748 
-11749 
-11750 
-11751 
-11752 
-11753 
-11754 
-11755 
-11756 
-11757 
-11758 
-11759 
-11760 
-11761 
-11762 
-11763 
-11764 
-11765 
-11766 
-11767 
-11768 
-11769 
-11770 
-11771 
-11772 
-11773 
-11774 
-11775 
-11776 
-11777 
-11778 
-11779 
-11780 
-11781 
-11782 
-11783 
-11784 
-11785 
-11786 
-11787 
-11788 
-11789 
-11790 
-11791 
-11792 
-11793 
-11794 
-11795 
-11796 
-11797 
-11798 
-11799 
-11800 
-11801 
-11802 
-11803 
-11804 
-11805 
-11806 
-11807 
-11808 
-11809 
-11810 
-11811 
-11812 
-11813 
-11814 
-11815 
-11816 
-11817 
-11818 
-11819 
-11820 
-11821 
-11822 
-11823 
-11824 
-11825 
-11826 
-11827 
-11828 
-11829 
-11830 
-11831 
-11832 
-11833 
-11834 
-11835 
-11836 
-11837 
-11838 
-11839 
-11840 
-11841 
-11842 
-11843 
-11844 
-11845 
-11846 
-11847 
-11848 
-11849 
-11850 
-11851 
-11852 
-11853 
-11854 
-11855 
-11856 
-11857 
-11858 
-11859 
-11860 
-11861 
-11862 
-11863 
-11864 
-11865 
-11866 
-11867 
-11868 
-11869 
-11870 
-11871 
-11872 
-11873 
-11874 
-11875 
-11876 
-11877 
-11878 
-11879 
-11880 
-11881 
-11882 
-11883 
-11884 
-11885 
-11886 
-11887 
-11888 
-11889 
-11890 
-11891 
-11892 
-11893 
-11894 
-11895 
-11896 
-11897 
-11898 
-11899 
-11900 
-11901 
-11902 
-11903 
-11904 
-11905 
-11906 
-11907 
-11908 
-11909 
-11910 
-11911 
-11912 
-11913 
-11914 
-11915 
-11916 
-11917 
-11918 
-11919 
-11920 
-11921 
-11922 
-11923 
-11924 
-11925 
-11926 
-11927 
-11928 
-11929 
-11930 
-11931 
-11932 
-11933 
-11934 
-11935 
-11936 
-11937 
-11938 
-11939 
-11940 
-11941 
-11942 
-11943 
-11944 
-11945 
-11946 
-11947 
-11948 
-11949 
-11950 
-11951 
-11952 
-11953 
-11954 
-11955 
-11956 
-11957 
-11958 
-11959 
-11960 
-11961 
-11962 
-11963 
-11964 
-11965 
-11966 
-11967 
-11968 
-11969 
-11970 
-11971 
-11972 
-11973 
-11974 
-11975 
-11976 
-11977 
-11978 
-11979 
-11980 
-11981 
-11982 
-11983 
-11984 
-11985 
-11986 
-11987 
-11988 
-11989 
-11990 
-11991 
-11992 
-11993 
-11994 
-11995 
-11996 
-11997 
-11998 
-11999 
-12000 
-12001 
-12002 
-12003 
-12004 
-12005 
-12006 
-12007 
-12008 
-12009 
-12010 
-12011 
-12012 
-12013 
-12014 
-12015 
-12016 
-12017 
-12018 
-12019 
-12020 
-12021 
-12022 
-12023 
-12024 
-12025 
-12026 
-12027 
-12028 
-12029 
-12030 
-12031 
-12032 
-12033 
-12034 
-12035 
-12036 
-12037 
-12038 
-12039 
-12040 
-12041 
-12042 
-12043 
-12044 
-12045 
-12046 
-12047 
-12048 
-12049 
-12050 
-12051 
-12052 
-12053 
-12054 
-12055 
-12056 
-12057 
-12058 
-12059 
-12060 
-12061 
-12062 
-12063 
-12064 
-12065 
-12066 
-12067 
-12068 
-12069 
-12070 
-12071 
-12072 
-12073 
-12074 
-12075 
-12076 
-12077 
-12078 
-12079 
-12080 
-12081 
-12082 
-12083 
-12084 
-12085 
-12086 
-12087 
-12088 
-12089 
-12090 
-12091 
-12092 
-12093 
-12094 
-12095 
-12096 
-12097 
-12098 
-12099 
-12100 
-12101 
-12102 
-12103 
-12104 
-12105 
-12106 
-12107 
-12108 
-12109 
-12110 
-12111 
-12112 
-12113 
-12114 
-12115 
-12116 
-12117 
-12118 
-12119 
-12120 
-12121 
-12122 
-12123 
-12124 
-12125 
-12126 
-12127 
-12128 
-12129 
-12130 
-12131 
-12132 
-12133 
-12134 
-12135 
-12136 
-12137 
-12138 
-12139 
-12140 
-12141 
-12142 
-12143 
-12144 
-12145 
-12146 
-12147 
-12148 
-12149 
-12150 
-12151 
-12152 
-12153 
-12154 
-12155 
-12156 
-12157 
-12158 
-12159 
-12160 
-12161 
-12162 
-12163 
-12164 
-12165 
-12166 
-12167 
-12168 
-12169 
-12170 
-12171 
-12172 
-12173 
-12174 
-12175 
-12176 
-12177 
-12178 
-12179 
-12180 
-12181 
-12182 
-12183 
-12184 
-12185 
-12186 
-12187 
-12188 
-12189 
-12190 
-12191 
-12192 
-12193 
-12194 
-12195 
-12196 
-12197 
-12198 
-12199 
-12200 
-12201 
-12202 
-12203 
-12204 
-12205 
-12206 
-12207 
-12208 
-12209 
-12210 
-12211 
-12212 
-12213 
-12214 
-12215 
-12216 
-12217 
-12218 
-12219 
-12220 
-12221 
-12222 
-12223 
-12224 
-12225 
-12226 
-12227 
-12228 
-12229 
-12230 
-12231 
-12232 
-12233 
-12234 
-12235 
-12236 
-12237 
-12238 
-12239 
-12240 
-12241 
-12242 
-12243 
-12244 
-12245 
-12246 
-12247 
-12248 
-12249 
-12250 
-12251 
-12252 
-12253 
-12254 
-12255 
-12256 
-12257 
-12258 
-12259 
-12260 
-12261 
-12262 
-12263 
-12264 
-12265 
-12266 
-12267 
-12268 
-12269 
-12270 
-12271 
-12272 
-12273 
-12274 
-12275 
-12276 
-12277 
-12278 
-12279 
-12280 
-12281 
-12282 
-12283 
-12284 
-12285 
-12286 
-12287 
-12288 
-12289 
-12290 
-12291 
-12292 
-12293 
-12294 
-12295 
-12296 
-12297 
-12298 
-12299 
-12300 
-12301 
-12302 
-12303 
-12304 
-12305 
-12306 
-12307 
-12308 
-12309 
-12310 
-12311 
-12312 
-12313 
-12314 
-12315 
-12316 
-12317 
-12318 
-12319 
-12320 
-12321 
-12322 
-12323 
-12324 
-12325 
-12326 
-12327 
-12328 
-12329 
-12330 
-12331 
-12332 
-12333 
-12334 
-12335 
-12336 
-12337 
-12338 
-12339 
-12340 
-12341 
-12342 
-12343 
-12344 
-12345 
-12346 
-12347 
-12348 
-12349 
-12350 
-12351 
-12352 
-12353 
-12354 
-12355 
-12356 
-12357 
-12358 
-12359 
-12360 
-12361 
-12362 
-12363 
-12364 
-12365 
-12366 
-12367 
-12368 
-12369 
-12370 
-12371 
-12372 
-12373 
-12374 
-12375 
-12376 
-12377 
-12378 
-12379 
-12380 
-12381 
-12382 
-12383 
-12384 
-12385 
-12386 
-12387 
-12388 
-12389 
-12390 
-12391 
-12392 
-12393 
-12394 
-12395 
-12396 
-12397 
-12398 
-12399 
-12400 
-12401 
-12402 
-12403 
-12404 
-12405 
-12406 
-12407 
-12408 
-12409 
-12410 
-12411 
-12412 
-12413 
-12414 
-12415 
-12416 
-12417 
-12418 
-12419 
-12420 
-12421 
-12422 
-12423 
-12424 
-12425 
-12426 
-12427 
-12428 
-12429 
-12430 
-12431 
-12432 
-12433 
-12434 
-12435 
-12436 
-12437 
-12438 
-12439 
-12440 
-12441 
-12442 
-12443 
-12444 
-12445 
-12446 
-12447 
-12448 
-12449 
-12450 
-12451 
-12452 
-12453 
-12454 
-12455 
-12456 
-12457 
-12458 
-12459 
-12460 
-12461 
-12462 
-12463 
-12464 
-12465 
-12466 
-12467 
-12468 
-12469 
-12470 
-12471 
-12472 
-12473 
-12474 
-12475 
-12476 
-12477 
-12478 
-12479 
-12480 
-12481 
-12482 
-12483 
-12484 
-12485 
-12486 
-12487 
-12488 
-12489 
-12490 
-12491 
-12492 
-12493 
-12494 
-12495 
-12496 
-12497 
-12498 
-12499 
-12500 
-12501 
-12502 
-12503 
-12504 
-12505 
-12506 
-12507 
-12508 
-12509 
-12510 
-12511 
-12512 
-12513 
-12514 
-12515 
-12516 
-12517 
-12518 
-12519 
-12520 
-12521 
-12522 
-12523 
-12524 
-12525 
-12526 
-12527 
-12528 
-12529 
-12530 
-12531 
-12532 
-12533 
-12534 
-12535 
-12536 
-12537 
-12538 
-12539 
-12540 
-12541 
-12542 
-12543 
-12544 
-12545 
-12546 
-12547 
-12548 
-12549 
-12550 
-12551 
-12552 
-12553 
-12554 
-12555 
-12556 
-12557 
-12558 
-12559 
-12560 
-12561 
-12562 
-12563 
-12564 
-12565 
-12566 
-12567 
-12568 
-12569 
-12570 
-12571 
-12572 
-12573 
-12574 
-12575 
-12576 
-12577 
-12578 
-12579 
-12580 
-12581 
-12582 
-12583 
-12584 
-12585 
-12586 
-12587 
-12588 
-12589 
-12590 
-12591 
-12592 
-12593 
-12594 
-12595 
-12596 
-12597 
-12598 
-12599 
-12600 
-12601 
-12602 
-12603 
-12604 
-12605 
-12606 
-12607 
-12608 
-12609 
-12610 
-12611 
-12612 
-12613 
-12614 
-12615 
-12616 
-12617 
-12618 
-12619 
-12620 
-12621 
-12622 
-12623 
-12624 
-12625 
-12626 
-12627 
-12628 
-12629 
-12630 
-12631 
-12632 
-12633 
-12634 
-12635 
-12636 
-12637 
-12638 
-12639 
-12640 
-12641 
-12642 
-12643 
-12644 
-12645 
-12646 
-12647 
-12648 
-12649 
-12650 
-12651 
-12652 
-12653 
-12654 
-12655 
-12656 
-12657 
-12658 
-12659 
-12660 
-12661 
-12662 
-12663 
-12664 
-12665 
-12666 
-12667 
-12668 
-12669 
-12670 
-12671 
-12672 
-12673 
-12674 
-12675 
-12676 
-12677 
-12678 
-12679 
-12680 
-12681 
-12682 
-12683 
-12684 
-12685 
-12686 
-12687 
-12688 
-12689 
-12690 
-12691 
-12692 
-12693 
-12694 
-12695 
-12696 
-12697 
-12698 
-12699 
-12700 
-12701 
-12702 
-12703 
-12704 
-12705 
-12706 
-12707 
-12708 
-12709 
-12710 
-12711 
-12712 
-12713 
-12714 
-12715 
-12716 
-12717 
-12718 
-12719 
-12720 
-12721 
-12722 
-12723 
-12724 
-12725 
-12726 
-12727 
-12728 
-12729 
-12730 
-12731 
-12732 
-12733 
-12734 
-12735 
-12736 
-12737 
-12738 
-12739 
-12740 
-12741 
-12742 
-12743 
-12744 
-12745 
-12746 
-12747 
-12748 
-12749 
-12750 
-12751 
-12752 
-12753 
-12754 
-12755 
-12756 
-12757 
-12758 
-12759 
-12760 
-12761 
-12762 
-12763 
-12764 
-12765 
-12766 
-12767 
-12768 
-12769 
-12770 
-12771 
-12772 
-12773 
-12774 
-12775 
-12776 
-12777 
-12778 
-12779 
-12780 
-12781 
-12782 
-12783 
-12784 
-12785 
-12786 
-12787 
-12788 
-12789 
-12790 
-12791 
-12792 
-12793 
-12794 
-12795 
-12796 
-12797 
-12798 
-12799 
-12800 
-12801 
-12802 
-12803 
-12804 
-12805 
-12806 
-12807 
-12808 
-12809 
-12810 
-12811 
-12812 
-12813 
-12814 
-12815 
-12816 
-12817 
-12818 
-12819 
-12820 
-12821 
-12822 
-12823 
-12824 
-12825 
-12826 
-12827 
-12828 
-12829 
-12830 
-12831 
-12832 
-12833 
-12834 
-12835 
-12836 
-12837 
-12838 
-12839 
-12840 
-12841 
-12842 
-12843 
-12844 
-12845 
-12846 
-12847 
-12848 
-12849 
-12850 
-12851 
-12852 
-12853 
-12854 
-12855 
-12856 
-12857 
-12858 
-12859 
-12860 
-12861 
-12862 
-12863 
-12864 
-12865 
-12866 
-12867 
-12868 
-12869 
-12870 
-12871 
-12872 
-12873 
-12874 
-12875 
-12876 
-12877 
-12878 
-12879 
-12880 
-12881 
-12882 
-12883 
-12884 
-12885 
-12886 
-12887 
-12888 
-12889 
-12890 
-12891 
-12892 
-12893 
-12894 
-12895 
-12896 
-12897 
-12898 
-12899 
-12900 
-12901 
-12902 
-12903 
-12904 
-12905 
-12906 
-12907 
-12908 
-12909 
-12910 
-12911 
-12912 
-12913 
-12914 
-12915 
-12916 
-12917 
-12918 
-12919 
-12920 
-12921 
-12922 
-12923 
-12924 
-12925 
-12926 
-12927 
-12928 
-12929 
-12930 
-12931 
-12932 
-12933 
-12934 
-12935 
-12936 
-12937 
-12938 
-12939 
-12940 
-12941 
-12942 
-12943 
-12944 
-12945 
-12946 
-12947 
-12948 
-12949 
-12950 
-12951 
-12952 
-12953 
-12954 
-12955 
-12956 
-12957 
-12958 
-12959 
-12960 
-12961 
-12962 
-12963 
-12964 
-12965 
-12966 
-12967 
-12968 
-12969 
-12970 
-12971 
-12972 
-12973 
-12974 
-12975 
-12976 
-12977 
-12978 
-12979 
-12980 
-12981 
-12982 
-12983 
-12984 
-12985 
-12986 
-12987 
-12988 
-12989 
-12990 
-12991 
-12992 
-12993 
-12994 
-12995 
-12996 
-12997 
-12998 
-12999 
-13000 
-13001 
-13002 
-13003 
-13004 
-13005 
-13006 
-13007 
-13008 
-13009 
-13010 
-13011 
-13012 
-13013 
-13014 
-13015 
-13016 
-13017 
-13018 
-13019 
-13020 
-13021 
-13022 
-13023 
-13024 
-13025 
-13026 
-13027 
-13028 
-13029 
-13030 
-13031 
-13032 
-13033 
-13034 
-13035 
-13036 
-13037 
-13038 
-13039 
-13040 
-13041 
-13042 
-13043 
-13044 
-13045 
-13046 
-13047 
-13048 
-13049 
-13050 
-13051 
-13052 
-13053 
-13054 
-13055 
-13056 
-13057 
-13058 
-13059 
-13060 
-13061 
-13062 
-13063 
-13064 
-13065 
-13066 
-13067 
-13068 
-13069 
-13070 
-13071 
-13072 
-13073 
-13074 
-13075 
-13076 
-13077 
-13078 
-13079 
-13080 
-13081 
-13082 
-13083 
-13084 
-13085 
-13086 
-13087 
-13088 
-13089 
-13090 
-13091 
-13092 
-13093 
-13094 
-13095 
-13096 
-13097 
-13098 
-13099 
-13100 
-13101 
-13102 
-13103 
-13104 
-13105 
-13106 
-13107 
-13108 
-13109 
-13110 
-13111 
-13112 
-13113 
-13114 
-13115 
-13116 
-13117 
-13118 
-13119 
-13120 
-13121 
-13122 
-13123 
-13124 
-13125 
-13126 
-13127 
-13128 
-13129 
-13130 
-13131 
-13132 
-13133 
-13134 
-13135 
-13136 
-13137 
-13138 
-13139 
-13140 
-13141 
-13142 
-13143 
-13144 
-13145 
-13146 
-13147 
-13148 
-13149 
-13150 
-13151 
-13152 
-13153 
-13154 
-13155 
-13156 
-13157 
-13158 
-13159 
-13160 
-13161 
-13162 
-13163 
-13164 
-13165 
-13166 
-13167 
-13168 
-13169 
-13170 
-13171 
-13172 
-13173 
-13174 
-13175 
-13176 
-13177 
-13178 
-13179 
-13180 
-13181 
-13182 
-13183 
-13184 
-13185 
-13186 
-13187 
-13188 
-13189 
-13190 
-13191 
-13192 
-13193 
-13194 
-13195 
-13196 
-13197 
-13198 
-13199 
-13200 
-13201 
-13202 
-13203 
-13204 
-13205 
-13206 
-13207 
-13208 
-13209 
-13210 
-13211 
-13212 
-13213 
-13214 
-13215 
-13216 
-13217 
-13218 
-13219 
-13220 
-13221 
-13222 
-13223 
-13224 
-13225 
-13226 
-13227 
-13228 
-13229 
-13230 
-13231 
-13232 
-13233 
-13234 
-13235 
-13236 
-13237 
-13238 
-13239 
-13240 
-13241 
-13242 
-13243 
-13244 
-13245 
-13246 
-13247 
-13248 
-13249 
-13250 
-13251 
-13252 
-13253 
-13254 
-13255 
-13256 
-13257 
-13258 
-13259 
-13260 
-13261 
-13262 
-13263 
-13264 
-13265 
-13266 
-13267 
-13268 
-13269 
-13270 
-13271 
-13272 
-13273 
-13274 
-13275 
-13276 
-13277 
-13278 
-13279 
-13280 
-13281 
-13282 
-13283 
-13284 
-13285 
-13286 
-13287 
-13288 
-13289 
-13290 
-13291 
-13292 
-13293 
-13294 
-13295 
-13296 
-13297 
-13298 
-13299 
-13300 
-13301 
-13302 
-13303 
-13304 
-13305 
-13306 
-13307 
-13308 
-13309 
-13310 
-13311 
-13312 
-13313 
-13314 
-13315 
-13316 
-13317 
-13318 
-13319 
-13320 
-13321 
-13322 
-13323 
-13324 
-13325 
-13326 
-13327 
-13328 
-13329 
-13330 
-13331 
-13332 
-13333 
-13334 
-13335 
-13336 
-13337 
-13338 
-13339 
-13340 
-13341 
-13342 
-13343 
-13344 
-13345 
-13346 
-13347 
-13348 
-13349 
-13350 
-13351 
-13352 
-13353 
-13354 
-13355 
-13356 
-13357 
-13358 
-13359 
-13360 
-13361 
-13362 
-13363 
-13364 
-13365 
-13366 
-13367 
-13368 
-13369 
-13370 
-13371 
-13372 
-13373 
-13374 
-13375 
-13376 
-13377 
-13378 
-13379 
-13380 
-13381 
-13382 
-13383 
-13384 
-13385 
-13386 
-13387 
-13388 
-13389 
-13390 
-13391 
-13392 
-13393 
-13394 
-13395 
-13396 
-13397 
-13398 
-13399 
-13400 
-13401 
-13402 
-13403 
-13404 
-13405 
-13406 
-13407 
-13408 
-13409 
-13410 
-13411 
-13412 
-13413 
-13414 
-13415 
-13416 
-13417 
-13418 
-13419 
-13420 
-13421 
-13422 
-13423 
-13424 
-13425 
-13426 
-13427 
-13428 
-13429 
-13430 
-13431 
-13432 
-13433 
-13434 
-13435 
-13436 
-13437 
-13438 
-13439 
-13440 
-13441 
-13442 
-13443 
-13444 
-13445 
-13446 
-13447 
-13448 
-13449 
-13450 
-13451 
-13452 
-13453 
-13454 
-13455 
-13456 
-13457 
-13458 
-13459 
-13460 
-13461 
-13462 
-13463 
-13464 
-13465 
-13466 
-13467 
-13468 
-13469 
-13470 
-13471 
-13472 
-13473 
-13474 
-13475 
-13476 
-13477 
-13478 
-13479 
-13480 
-13481 
-13482 
-13483 
-13484 
-13485 
-13486 
-13487 
-13488 
-13489 
-13490 
-13491 
-13492 
-13493 
-13494 
-13495 
-13496 
-13497 
-13498 
-13499 
-13500 
-13501 
-13502 
-13503 
-13504 
-13505 
-13506 
-13507 
-13508 
-13509 
-13510 
-13511 
-13512 
-13513 
-13514 
-13515 
-13516 
-13517 
-13518 
-13519 
-13520 
-13521 
-13522 
-13523 
-13524 
-13525 
-13526 
-13527 
-13528 
-13529 
-13530 
-13531 
-13532 
-13533 
-13534 
-13535 
-13536 
-13537 
-13538 
-13539 
-13540 
-13541 
-13542 
-13543 
-13544 
-13545 
-13546 
-13547 
-13548 
-13549 
-13550 
-13551 
-13552 
-13553 
-13554 
-13555 
-13556 
-13557 
-13558 
-13559 
-13560 
-13561 
-13562 
-13563 
-13564 
-13565 
-13566 
-13567 
-13568 
-13569 
-13570 
-13571 
-13572 
-13573 
-13574 
-13575 
-13576 
-13577 
-13578 
-13579 
-13580 
-13581 
-13582 
-13583 
-13584 
-13585 
-13586 
-13587 
-13588 
-13589 
-13590 
-13591 
-13592 
-13593 
-13594 
-13595 
-13596 
-13597 
-13598 
-13599 
-13600 
-13601 
-13602 
-13603 
-13604 
-13605 
-13606 
-13607 
-13608 
-13609 
-13610 
-13611 
-13612 
-13613 
-13614 
-13615 
-13616 
-13617 
-13618 
-13619 
-13620 
-13621 
-13622 
-13623 
-13624 
-13625 
-13626 
-13627 
-13628 
-13629 
-13630 
-13631 
-13632 
-13633 
-13634 
-13635 
-13636 
-13637 
-13638 
-13639 
-13640 
-13641 
-13642 
-13643 
-13644 
-13645 
-13646 
-13647 
-13648 
-13649 
-13650 
-13651 
-13652 
-13653 
-13654 
-13655 
-13656 
-13657 
-13658 
-13659 
-13660 
-13661 
-13662 
-13663 
-13664 
-13665 
-13666 
-13667 
-13668 
-13669 
-13670 
-13671 
-13672 
-13673 
-13674 
-13675 
-13676 
-13677 
-13678 
-13679 
-13680 
-13681 
-13682 
-13683 
-13684 
-13685 
-13686 
-13687 
-13688 
-13689 
-13690 
-13691 
-13692 
-13693 
-13694 
-13695 
-13696 
-13697 
-13698 
-13699 
-13700 
-13701 
-13702 
-13703 
-13704 
-13705 
-13706 
-13707 
-13708 
-13709 
-13710 
-13711 
-13712 
-13713 
-13714 
-13715 
-13716 
-13717 
-13718 
-13719 
-13720 
-13721 
-13722 
-13723 
-13724 
-13725 
-13726 
-13727 
-13728 
-13729 
-13730 
-13731 
-13732 
-13733 
-13734 
-13735 
-13736 
-13737 
-13738 
-13739 
-13740 
-13741 
-13742 
-13743 
-13744 
-13745 
-13746 
-13747 
-13748 
-13749 
-13750 
-13751 
-13752 
-13753 
-13754 
-13755 
-13756 
-13757 
-13758 
-13759 
-13760 
-13761 
-13762 
-13763 
-13764 
-13765 
-13766 
-13767 
-13768 
-13769 
-13770 
-13771 
-13772 
-13773 
-13774 
-13775 
-13776 
-13777 
-13778 
-13779 
-13780 
-13781 
-13782 
-13783 
-13784 
-13785 
-13786 
-13787 
-13788 
-13789 
-13790 
-13791 
-13792 
-13793 
-13794 
-13795 
-13796 
-13797 
-13798 
-13799 
-13800 
-13801 
-13802 
-13803 
-13804 
-13805 
-13806 
-13807 
-13808 
-13809 
-13810 
-13811 
-13812 
-13813 
-13814 
-13815 
-13816 
-13817 
-13818 
-13819 
-13820 
-13821 
-13822 
-13823 
-13824 
-13825 
-13826 
-13827 
-13828 
-13829 
-13830 
-13831 
-13832 
-13833 
-13834 
-13835 
-13836 
-13837 
-13838 
-13839 
-13840 
-13841 
-13842 
-13843 
-13844 
-13845 
-13846 
-13847 
-13848 
-13849 
-13850 
-13851 
-13852 
-13853 
-13854 
-13855 
-13856 
-13857 
-13858 
-13859 
-13860 
-13861 
-13862 
-13863 
-13864 
-13865 
-13866 
-13867 
-13868 
-13869 
-13870 
-13871 
-13872 
-13873 
-13874 
-13875 
-13876 
-13877 
-13878 
-13879 
-13880 
-13881 
-13882 
-13883 
-13884 
-13885 
-13886 
-13887 
-13888 
-13889 
-13890 
-13891 
-13892 
-13893 
-13894 
-13895 
-13896 
-13897 
-13898 
-13899 
-13900 
-13901 
-13902 
-13903 
-13904 
-13905 
-13906 
-13907 
-13908 
-13909 
-13910 
-13911 
-13912 
-13913 
-13914 
-13915 
-13916 
-13917 
-13918 
-13919 
-13920 
-13921 
-13922 
-13923 
-13924 
-13925 
-13926 
-13927 
-13928 
-13929 
-13930 
-13931 
-13932 
-13933 
-13934 
-13935 
-13936 
-13937 
-13938 
-13939 
-13940 
-13941 
-13942 
-13943 
-13944 
-13945 
-13946 
-13947 
-13948 
-13949 
-13950 
-13951 
-13952 
-13953 
-13954 
-13955 
-13956 
-13957 
-13958 
-13959 
-13960 
-13961 
-13962 
-13963 
-13964 
-13965 
-13966 
-13967 
-13968 
-13969 
-13970 
-13971 
-13972 
-13973 
-13974 
-13975 
-13976 
-13977 
-13978 
-13979 
-13980 
-13981 
-13982 
-13983 
-13984 
-13985 
-13986 
-13987 
-13988 
-13989 
-13990 
-13991 
-13992 
-13993 
-13994 
-13995 
-13996 
-13997 
-13998 
-13999 
-14000 
-14001 
-14002 
-14003 
-14004 
-14005 
-14006 
-14007 
-14008 
-14009 
-14010 
-14011 
-14012 
-14013 
-14014 
-14015 
-14016 
-14017 
-14018 
-14019 
-14020 
-14021 
-14022 
-14023 
-14024 
-14025 
-14026 
-14027 
-14028 
-14029 
-14030 
-14031 
-14032 
-14033 
-14034 
-14035 
-14036 
-14037 
-14038 
-14039 
-14040 
-14041 
-14042 
-14043 
-14044 
-14045 
-14046 
-14047 
-14048 
-14049 
-14050 
-14051 
-14052 
-14053 
-14054 
-14055 
-14056 
-14057 
-14058 
-14059 
-14060 
-14061 
-14062 
-14063 
-14064 
-14065 
-14066 
-14067 
-14068 
-14069 
-14070 
-14071 
-14072 
-14073 
-14074 
-14075 
-14076 
-14077 
-14078 
-14079 
-14080 
-14081 
-14082 
-14083 
-14084 
-14085 
-14086 
-14087 
-14088 
-14089 
-14090 
-14091 
-14092 
-14093 
-14094 
-14095 
-14096 
-14097 
-14098 
-14099 
-14100 
-14101 
-14102 
-14103 
-14104 
-14105 
-14106 
-14107 
-14108 
-14109 
-14110 
-14111 
-14112 
-14113 
-14114 
-14115 
-14116 
-14117 
-14118 
-14119 
-14120 
-14121 
-14122 
-14123 
-14124 
-14125 
-14126 
-14127 
-14128 
-14129 
-14130 
-14131 
-14132 
-14133 
-14134 
-14135 
-14136 
-14137 
-14138 
-14139 
-14140 
-14141 
-14142 
-14143 
-14144 
-14145 
-14146 
-14147 
-14148 
-14149 
-14150 
-14151 
-14152 
-14153 
-14154 
-14155 
-14156 
-14157 
-14158 
-14159 
-14160 
-14161 
-14162 
-14163 
-14164 
-14165 
-14166 
-14167 
-14168 
-14169 
-14170 
-14171 
-14172 
-14173 
-14174 
-14175 
-14176 
-14177 
-14178 
-14179 
-14180 
-14181 
-14182 
-14183 
-14184 
-14185 
-14186 
-14187 
-14188 
-14189 
-14190 
-14191 
-14192 
-14193 
-14194 
-14195 
-14196 
-14197 
-14198 
-14199 
-14200 
-14201 
-14202 
-14203 
-14204 
-14205 
-14206 
-14207 
-14208 
-14209 
-14210 
-14211 
-14212 
-14213 
-14214 
-14215 
-14216 
-14217 
-14218 
-14219 
-14220 
-14221 
-14222 
-14223 
-14224 
-14225 
-14226 
-14227 
-14228 
-14229 
-14230 
-14231 
-14232 
-14233 
-14234 
-14235 
-14236 
-14237 
-14238 
-14239 
-14240 
-14241 
-14242 
-14243 
-14244 
-14245 
-14246 
-14247 
-14248 
-14249 
-14250 
-14251 
-14252 
-14253 
-14254 
-14255 
-14256 
-14257 
-14258 
-14259 
-14260 
-14261 
-14262 
-14263 
-14264 
-14265 
-14266 
-14267 
-14268 
-14269 
-14270 
-14271 
-14272 
-14273 
-14274 
-14275 
-14276 
-14277 
-14278 
-14279 
-14280 
-14281 
-14282 
-14283 
-14284 
-14285 
-14286 
-14287 
-14288 
-14289 
-14290 
-14291 
-14292 
-14293 
-14294 
-14295 
-14296 
-14297 
-14298 
-14299 
-14300 
-14301 
-14302 
-14303 
-14304 
-14305 
-14306 
-14307 
-14308 
-14309 
-14310 
-14311 
-14312 
-14313 
-14314 
-14315 
-14316 
-14317 
-14318 
-14319 
-14320 
-14321 
-14322 
-14323 
-14324 
-14325 
-14326 
-14327 
-14328 
-14329 
-14330 
-14331 
-14332 
-14333 
-14334 
-14335 
-14336 
-14337 
-14338 
-14339 
-14340 
-14341 
-14342 
-14343 
-14344 
-14345 
-14346 
-14347 
-14348 
-14349 
-14350 
-14351 
-14352 
-14353 
-14354 
-14355 
-14356 
-14357 
-14358 
-14359 
-14360 
-14361 
-14362 
-14363 
-14364 
-14365 
-14366 
-14367 
-14368 
-14369 
-14370 
-14371 
-14372 
-14373 
-14374 
-14375 
-14376 
-14377 
-14378 
-14379 
-14380 
-14381 
-14382 
-14383 
-14384 
-14385 
-14386 
-14387 
-14388 
-14389 
-14390 
-14391 
-14392 
-14393 
-14394 
-14395 
-14396 
-14397 
-14398 
-14399 
-14400 
-14401 
-14402 
-14403 
-14404 
-14405 
-14406 
-14407 
-14408 
-14409 
-14410 
-14411 
-14412 
-14413 
-14414 
-14415 
-14416 
-14417 
-14418 
-14419 
-14420 
-14421 
-14422 
-14423 
-14424 
-14425 
-14426 
-14427 
-14428 
-14429 
-14430 
-14431 
-14432 
-14433 
-14434 
-14435 
-14436 
-14437 
-14438 
-14439 
-14440 
-14441 
-14442 
-14443 
-14444 
-14445 
-14446 
-14447 
-14448 
-14449 
-14450 
-14451 
-14452 
-14453 
-14454 
-14455 
-14456 
-14457 
-14458 
-14459 
-14460 
-14461 
-14462 
-14463 
-14464 
-14465 
-14466 
-14467 
-14468 
-14469 
-14470 
-14471 
-14472 
-14473 
-14474 
-14475 
-14476 
-14477 
-14478 
-14479 
-14480 
-14481 
-14482 
-14483 
-14484 
-14485 
-14486 
-14487 
-14488 
-14489 
-14490 
-14491 
-14492 
-14493 
-14494 
-14495 
-14496 
-14497 
-14498 
-14499 
-14500 
-14501 
-14502 
-14503 
-14504 
-14505 
-14506 
-14507 
-14508 
-14509 
-14510 
-14511 
-14512 
-14513 
-14514 
-14515 
-14516 
-14517 
-14518 
-14519 
-14520 
-14521 
-14522 
-14523 
-14524 
-14525 
-14526 
-14527 
-14528 
-14529 
-14530 
-14531 
-14532 
-14533 
-14534 
-14535 
-14536 
-14537 
-14538 
-14539 
-14540 
-14541 
-14542 
-14543 
-14544 
-14545 
-14546 
-14547 
-14548 
-14549 
-14550 
-14551 
-14552 
-14553 
-14554 
-14555 
-14556 
-14557 
-14558 
-14559 
-14560 
-14561 
-14562 
-14563 
-14564 
-14565 
-14566 
-14567 
-14568 
-14569 
-14570 
-14571 
-14572 
-14573 
-14574 
-14575 
-14576 
-14577 
-14578 
-14579 
-14580 
-14581 
-14582 
-14583 
-14584 
-14585 
-14586 
-14587 
-14588 
-14589 
-14590 
-14591 
-14592 
-14593 
-14594 
-14595 
-14596 
-14597 
-14598 
-14599 
-14600 
-14601 
-14602 
-14603 
-14604 
-14605 
-14606 
-14607 
-14608 
-14609 
-14610 
-14611 
-14612 
-14613 
-14614 
-14615 
-14616 
-14617 
-14618 
-14619 
-14620 
-14621 
-14622 
-14623 
-14624 
-14625 
-14626 
-14627 
-14628 
-14629 
-14630 
-14631 
-14632 
-14633 
-14634 
-14635 
-14636 
-14637 
-14638 
-14639 
-14640 
-14641 
-14642 
-14643 
-14644 
-14645 
-14646 
-14647 
-14648 
-14649 
-14650 
-14651 
-14652 
-14653 
-14654 
-14655 
-14656 
-14657 
-14658 
-14659 
-14660 
-14661 
-14662 
-14663 
-14664 
-14665 
-14666 
-14667 
-14668 
-14669 
-14670 
-14671 
-14672 
-14673 
-14674 
-14675 
-14676 
-14677 
-14678 
-14679 
-14680 
-14681 
-14682 
-14683 
-14684 
-14685 
-14686 
-14687 
-14688 
-14689 
-14690 
-14691 
-14692 
-14693 
-14694 
-14695 
-14696 
-14697 
-14698 
-14699 
-14700 
-14701 
-14702 
-14703 
-14704 
-14705 
-14706 
-14707 
-14708 
-14709 
-14710 
-14711 
-14712 
-14713 
-14714 
-14715 
-14716 
-14717 
-14718 
-14719 
-14720 
-14721 
-14722 
-14723 
-14724 
-14725 
-14726 
-14727 
-14728 
-14729 
-14730 
-14731 
-14732 
-14733 
-14734 
-14735 
-14736 
-14737 
-14738 
-14739 
-14740 
-14741 
-14742 
-14743 
-14744 
-14745 
-14746 
-14747 
-14748 
-14749 
-14750 
-14751 
-14752 
-14753 
-14754 
-14755 
-14756 
-14757 
-14758 
-14759 
-14760 
-14761 
-14762 
-14763 
-14764 
-14765 
-14766 
-14767 
-14768 
-14769 
-14770 
-14771 
-14772 
-14773 
-14774 
-14775 
-14776 
-14777 
-14778 
-14779 
-14780 
-14781 
-14782 
-14783 
-14784 
-14785 
-14786 
-14787 
-14788 
-14789 
-14790 
-14791 
-14792 
-14793 
-14794 
-14795 
-14796 
-14797 
-14798 
-14799 
-14800 
-14801 
-14802 
-14803 
-14804 
-14805 
-14806 
-14807 
-14808 
-14809 
-14810 
-14811 
-14812 
-14813 
-14814 
-14815 
-14816 
-14817 
-14818 
-14819 
-14820 
-14821 
-14822 
-14823 
-14824 
-14825 
-14826 
-14827 
-14828 
-14829 
-14830 
-14831 
-14832 
-14833 
-14834 
-14835 
-14836 
-14837 
-14838 
-14839 
-14840 
-14841 
-14842 
-14843 
-14844 
-14845 
-14846 
-14847 
-14848 
-14849 
-14850 
-14851 
-14852 
-14853 
-14854 
-14855 
-14856 
-14857 
-14858 
-14859 
-14860 
-14861 
-14862 
-14863 
-14864 
-14865 
-14866 
-14867 
-14868 
-14869 
-14870 
-14871 
-14872 
-14873 
-14874 
-14875 
-14876 
-14877 
-14878 
-14879 
-14880 
-14881 
-14882 
-14883 
-14884 
-14885 
-14886 
-14887 
-14888 
-14889 
-14890 
-14891 
-14892 
-14893 
-14894 
-14895 
-14896 
-14897 
-14898 
-14899 
-14900 
-14901 
-14902 
-14903 
-14904 
-14905 
-14906 
-14907 
-14908 
-14909 
-14910 
-14911 
-14912 
-14913 
-14914 
-14915 
-14916 
-14917 
-14918 
-14919 
-14920 
-14921 
-14922 
-14923 
-14924 
-14925 
-14926 
-14927 
-14928 
-14929 
-14930 
-14931 
-14932 
-14933 
-14934 
-14935 
-14936 
-14937 
-14938 
-14939 
-14940 
-14941 
-14942 
-14943 
-14944 
-14945 
-14946 
-14947 
-14948 
-14949 
-14950 
-14951 
-14952 
-14953 
-14954 
-14955 
-14956 
-14957 
-14958 
-14959 
-14960 
-14961 
-14962 
-14963 
-14964 
-14965 
-14966 
-14967 
-14968 
-14969 
-14970 
-14971 
-14972 
-14973 
-14974 
-14975 
-14976 
-14977 
-14978 
-14979 
-14980 
-14981 
-14982 
-14983 
-14984 
-14985 
-14986 
-14987 
-14988 
-14989 
-14990 
-14991 
-14992 
-14993 
-14994 
-14995 
-14996 
-14997 
-14998 
-14999 
-15000 
-15001 
-15002 
-15003 
-15004 
-15005 
-15006 
-15007 
-15008 
-15009 
-15010 
-15011 
-15012 
-15013 
-15014 
-15015 
-15016 
-15017 
-15018 
-15019 
-15020 
-15021 
-15022 
-15023 
-15024 
-15025 
-15026 
-15027 
-15028 
-15029 
-15030 
-15031 
-15032 
-15033 
-15034 
-15035 
-15036 
-15037 
-15038 
-15039 
-15040 
-15041 
-15042 
-15043 
-15044 
-15045 
-15046 
-15047 
-15048 
-15049 
-15050 
-15051 
-15052 
-15053 
-15054 
-15055 
-15056 
-15057 
-15058 
-15059 
-15060 
-15061 
-15062 
-15063 
-15064 
-15065 
-15066 
-15067 
-15068 
-15069 
-15070 
-15071 
-15072 
-15073 
-15074 
-15075 
-15076 
-15077 
-15078 
-15079 
-15080 
-15081 
-15082 
-15083 
-15084 
-15085 
-15086 
-15087 
-15088 
-15089 
-15090 
-15091 
-15092 
-15093 
-15094 
-15095 
-15096 
-15097 
-15098 
-15099 
-15100 
-15101 
-15102 
-15103 
-15104 
-15105 
-15106 
-15107 
-15108 
-15109 
-15110 
-15111 
-15112 
-15113 
-15114 
-15115 
-15116 
-15117 
-15118 
-15119 
-15120 
-15121 
-15122 
-15123 
-15124 
-15125 
-15126 
-15127 
-15128 
-15129 
-15130 
-15131 
-15132 
-15133 
-15134 
-15135 
-15136 
-15137 
-15138 
-15139 
-15140 
-15141 
-15142 
-15143 
-15144 
-15145 
-15146 
-15147 
-15148 
-15149 
-15150 
-15151 
-15152 
-15153 
-15154 
-15155 
-15156 
-15157 
-15158 
-15159 
-15160 
-15161 
-15162 
-15163 
-15164 
-15165 
-15166 
-15167 
-15168 
-15169 
-15170 
-15171 
-15172 
-15173 
-15174 
-15175 
-15176 
-15177 
-15178 
-15179 
-15180 
-15181 
-15182 
-15183 
-15184 
-15185 
-15186 
-15187 
-15188 
-15189 
-15190 
-15191 
-15192 
-15193 
-15194 
-15195 
-15196 
-15197 
-15198 
-15199 
-15200 
-15201 
-15202 
-15203 
-15204 
-15205 
-15206 
-15207 
-15208 
-15209 
-15210 
-15211 
-15212 
-15213 
-15214 
-15215 
-15216 
-15217 
-15218 
-15219 
-15220 
-15221 
-15222 
-15223 
-15224 
-15225 
-15226 
-15227 
-15228 
-15229 
-15230 
-15231 
-15232 
-15233 
-15234 
-15235 
-15236 
-15237 
-15238 
-15239 
-15240 
-15241 
-15242 
-15243 
-15244 
-15245 
-15246 
-15247 
-15248 
-15249 
-15250 
-15251 
-15252 
-15253 
-15254 
-15255 
-15256 
-15257 
-15258 
-15259 
-15260 
-15261 
-15262 
-15263 
-15264 
-15265 
-15266 
-15267 
-15268 
-15269 
-15270 
-15271 
-15272 
-15273 
-15274 
-15275 
-15276 
-15277 
-15278 
-15279 
-15280 
-15281 
-15282 
-15283 
-15284 
-15285 
-15286 
-15287 
-15288 
-15289 
-15290 
-15291 
-15292 
-15293 
-15294 
-15295 
-15296 
-15297 
-15298 
-15299 
-15300 
-15301 
-15302 
-15303 
-15304 
-15305 
-15306 
-15307 
-15308 
-15309 
-15310 
-15311 
-15312 
-15313 
-15314 
-15315 
-15316 
-15317 
-15318 
-15319 
-15320 
-15321 
-15322 
-15323 
-15324 
-15325 
-15326 
-15327 
-15328 
-15329 
-15330 
-15331 
-15332 
-15333 
-15334 
-15335 
-15336 
-15337 
-15338 
-15339 
-15340 
-15341 
-15342 
-15343 
-15344 
-15345 
-15346 
-15347 
-15348 
-15349 
-15350 
-15351 
-15352 
-15353 
-15354 
-15355 
-15356 
-15357 
-15358 
-15359 
-15360 
-15361 
-15362 
-15363 
-15364 
-15365 
-15366 
-15367 
-15368 
-15369 
-15370 
-15371 
-15372 
-15373 
-15374 
-15375 
-15376 
-15377 
-15378 
-15379 
-15380 
-15381 
-15382 
-15383 
-15384 
-15385 
-15386 
-15387 
-15388 
-15389 
-15390 
-15391 
-15392 
-15393 
-15394 
-15395 
-15396 
-15397 
-15398 
-15399 
-15400 
-15401 
-15402 
-15403 
-15404 
-15405 
-15406 
-15407 
-15408 
-15409 
-15410 
-15411 
-15412 
-15413 
-15414 
-15415 
-15416 
-15417 
-15418 
-15419 
-15420 
-15421 
-15422 
-15423 
-15424 
-15425 
-15426 
-15427 
-15428 
-15429 
-15430 
-15431 
-15432 
-15433 
-15434 
-15435 
-15436 
-15437 
-15438 
-15439 
-15440 
-15441 
-15442 
-15443 
-15444 
-15445 
-15446 
-15447 
-15448 
-15449 
-15450 
-15451 
-15452 
-15453 
-15454 
-15455 
-15456 
-15457 
-15458 
-15459 
-15460 
-15461 
-15462 
-15463 
-15464 
-15465 
-15466 
-15467 
-15468 
-15469 
-15470 
-15471 
-15472 
-15473 
-15474 
-15475 
-15476 
-15477 
-15478 
-15479 
-15480 
-15481 
-15482 
-15483 
-15484 
-15485 
-15486 
-15487 
-15488 
-15489 
-15490 
-15491 
-15492 
-15493 
-15494 
-15495 
-15496 
-15497 
-15498 
-15499 
-15500 
-15501 
-15502 
-15503 
-15504 
-15505 
-15506 
-15507 
-15508 
-15509 
-15510 
-15511 
-15512 
-15513 
-15514 
-15515 
-15516 
-15517 
-15518 
-15519 
-15520 
-15521 
-15522 
-15523 
-15524 
-15525 
-15526 
-15527 
-15528 
-15529 
-15530 
-15531 
-15532 
-15533 
-15534 
-15535 
-15536 
-15537 
-15538 
-15539 
-15540 
-15541 
-15542 
-15543 
-15544 
-15545 
-15546 
-15547 
-15548 
-15549 
-15550 
-15551 
-15552 
-15553 
-15554 
-15555 
-15556 
-15557 
-15558 
-15559 
-15560 
-15561 
-15562 
-15563 
-15564 
-15565 
-15566 
-15567 
-15568 
-15569 
-15570 
-15571 
-15572 
-15573 
-15574 
-15575 
-15576 
-15577 
-15578 
-15579 
-15580 
-15581 
-15582 
-15583 
-15584 
-15585 
-15586 
-15587 
-15588 
-15589 
-15590 
-15591 
-15592 
-15593 
-15594 
-15595 
-15596 
-15597 
-15598 
-15599 
-15600 
-15601 
-15602 
-15603 
-15604 
-15605 
-15606 
-15607 
-15608 
-15609 
-15610 
-15611 
-15612 
-15613 
-15614 
-15615 
-15616 
-15617 
-15618 
-15619 
-15620 
-15621 
-15622 
-15623 
-15624 
-15625 
-15626 
-15627 
-15628 
-15629 
-15630 
-15631 
-15632 
-15633 
-15634 
-15635 
-15636 
-15637 
-15638 
-15639 
-15640 
-15641 
-15642 
-15643 
-15644 
-15645 
-15646 
-15647 
-15648 
-15649 
-15650 
-15651 
-15652 
-15653 
-15654 
-15655 
-15656 
-15657 
-15658 
-15659 
-15660 
-15661 
-15662 
-15663 
-15664 
-15665 
-15666 
-15667 
-15668 
-15669 
-15670 
-15671 
-15672 
-15673 
-15674 
-15675 
-15676 
-15677 
-15678 
-15679 
-15680 
-15681 
-15682 
-15683 
-15684 
-15685 
-15686 
-15687 
-15688 
-15689 
-15690 
-15691 
-15692 
-15693 
-15694 
-15695 
-15696 
-15697 
-15698 
-15699 
-15700 
-15701 
-15702 
-15703 
-15704 
-15705 
-15706 
-15707 
-15708 
-15709 
-15710 
-15711 
-15712 
-15713 
-15714 
-15715 
-15716 
-15717 
-15718 
-15719 
-15720 
-15721 
-15722 
-15723 
-15724 
-15725 
-15726 
-15727 
-15728 
-15729 
-15730 
-15731 
-15732 
-15733 
-15734 
-15735 
-15736 
-15737 
-15738 
-15739 
-15740 
-15741 
-15742 
-15743 
-15744 
-15745 
-15746 
-15747 
-15748 
-15749 
-15750 
-15751 
-15752 
-15753 
-15754 
-15755 
-15756 
-15757 
-15758 
-15759 
-15760 
-15761 
-15762 
-15763 
-15764 
-15765 
-15766 
-15767 
-15768 
-15769 
-15770 
-15771 
-15772 
-15773 
-15774 
-15775 
-15776 
-15777 
-15778 
-15779 
-15780 
-15781 
-15782 
-15783 
-15784 
-15785 
-15786 
-15787 
-15788 
-15789 
-15790 
-15791 
-15792 
-15793 
-15794 
-15795 
-15796 
-15797 
-15798 
-15799 
-15800 
-15801 
-15802 
-15803 
-15804 
-15805 
-15806 
-15807 
-15808 
-15809 
-15810 
-15811 
-15812 
-15813 
-15814 
-15815 
-15816 
-15817 
-15818 
-15819 
-15820 
-15821 
-15822 
-15823 
-15824 
-15825 
-15826 
-15827 
-15828 
-15829 
-15830 
-15831 
-15832 
-15833 
-15834 
-15835 
-15836 
-15837 
-15838 
-15839 
-15840 
-15841 
-15842 
-15843 
-15844 
-15845 
-15846 
-15847 
-15848 
-15849 
-15850 
-15851 
-15852 
-15853 
-15854 
-15855 
-15856 
-15857 
-15858 
-15859 
-15860 
-15861 
-15862 
-15863 
-15864 
-15865 
-15866 
-15867 
-15868 
-15869 
-15870 
-15871 
-15872 
-15873 
-15874 
-15875 
-15876 
-15877 
-15878 
-15879 
-15880 
-15881 
-15882 
-15883 
-15884 
-15885 
-15886 
-15887 
-15888 
-15889 
-15890 
-15891 
-15892 
-15893 
-15894 
-15895 
-15896 
-15897 
-15898 
-15899 
-15900 
-15901 
-15902 
-15903 
-15904 
-15905 
-15906 
-15907 
-15908 
-15909 
-15910 
-15911 
-15912 
-15913 
-15914 
-15915 
-15916 
-15917 
-15918 
-15919 
-15920 
-15921 
-15922 
-15923 
-15924 
-15925 
-15926 
-15927 
-15928 
-15929 
-15930 
-15931 
-15932 
-15933 
-15934 
-15935 
-15936 
-15937 
-15938 
-15939 
-15940 
-15941 
-15942 
-15943 
-15944 
-15945 
-15946 
-15947 
-15948 
-15949 
-15950 
-15951 
-15952 
-15953 
-15954 
-15955 
-15956 
-15957 
-15958 
-15959 
-15960 
-15961 
-15962 
-15963 
-15964 
-15965 
-15966 
-15967 
-15968 
-15969 
-15970 
-15971 
-15972 
-15973 
-15974 
-15975 
-15976 
-15977 
-15978 
-15979 
-15980 
-15981 
-15982 
-15983 
-15984 
-15985 
-15986 
-15987 
-15988 
-15989 
-15990 
-15991 
-15992 
-15993 
-15994 
-15995 
-15996 
-15997 
-15998 
-15999 
-16000 
-16001 
-16002 
-16003 
-16004 
-16005 
-16006 
-16007 
-16008 
-16009 
-16010 
-16011 
-16012 
-16013 
-16014 
-16015 
-16016 
-16017 
-16018 
-16019 
-16020 
-16021 
-16022 
-16023 
-16024 
-16025 
-16026 
-16027 
-16028 
-16029 
-16030 
-16031 
-16032 
-16033 
-16034 
-16035 
-16036 
-16037 
-16038 
-16039 
-16040 
-16041 
-16042 
-16043 
-16044 
-16045 
-16046 
-16047 
-16048 
-16049 
-16050 
-16051 
-16052 
-16053 
-16054 
-16055 
-16056 
-16057 
-16058 
-16059 
-16060 
-16061 
-16062 
-16063 
-16064 
-16065 
-16066 
-16067 
-16068 
-16069 
-16070 
-16071 
-16072 
-16073 
-16074 
-16075 
-16076 
-16077 
-16078 
-16079 
-16080 
-16081 
-16082 
-16083 
-16084 
-16085 
-16086 
-16087 
-16088 
-16089 
-16090 
-16091 
-16092 
-16093 
-16094 
-16095 
-16096 
-16097 
-16098 
-16099 
-16100 
-16101 
-16102 
-16103 
-16104 
-16105 
-16106 
-16107 
-16108 
-16109 
-16110 
-16111 
-16112 
-16113 
-16114 
-16115 
-16116 
-16117 
-16118 
-16119 
-16120 
-16121 
-16122 
-16123 
-16124 
-16125 
-16126 
-16127 
-16128 
-16129 
-16130 
-16131 
-16132 
-16133 
-16134 
-16135 
-16136 
-16137 
-16138 
-16139 
-16140 
-16141 
-16142 
-16143 
-16144 
-16145 
-16146 
-16147 
-16148 
-16149 
-16150 
-16151 
-16152 
-16153 
-16154 
-16155 
-16156 
-16157 
-16158 
-16159 
-16160 
-16161 
-16162 
-16163 
-16164 
-16165 
-16166 
-16167 
-16168 
-16169 
-16170 
-16171 
-16172 
-16173 
-16174 
-16175 
-16176 
-16177 
-16178 
-16179 
-16180 
-16181 
-16182 
-16183 
-16184 
-16185 
-16186 
-16187 
-16188 
-16189 
-16190 
-16191 
-16192 
-16193 
-16194 
-16195 
-16196 
-16197 
-16198 
-16199 
-16200 
-16201 
-16202 
-16203 
-16204 
-16205 
-16206 
-16207 
-16208 
-16209 
-16210 
-16211 
-16212 
-16213 
-16214 
-16215 
-16216 
-16217 
-16218 
-16219 
-16220 
-16221 
-16222 
-16223 
-16224 
-16225 
-16226 
-16227 
-16228 
-16229 
-16230 
-16231 
-16232 
-16233 
-16234 
-16235 
-16236 
-16237 
-16238 
-16239 
-16240 
-16241 
-16242 
-16243 
-16244 
-16245 
-16246 
-16247 
-16248 
-16249 
-16250 
-16251 
-16252 
-16253 
-16254 
-16255 
-16256 
-16257 
-16258 
-16259 
-16260 
-16261 
-16262 
-16263 
-16264 
-16265 
-16266 
-16267 
-16268 
-16269 
-16270 
-16271 
-16272 
-16273 
-16274 
-16275 
-16276 
-16277 
-16278 
-16279 
-16280 
-16281 
-16282 
-16283 
-16284 
-16285 
-16286 
-16287 
-16288 
-16289 
-16290 
-16291 
-16292 
-16293 
-16294 
-16295 
-16296 
-16297 
-16298 
-16299 
-16300 
-16301 
-16302 
-16303 
-16304 
-16305 
-16306 
-16307 
-16308 
-16309 
-16310 
-16311 
-16312 
-16313 
-16314 
-16315 
-16316 
-16317 
-16318 
-16319 
-16320 
-16321 
-16322 
-16323 
-16324 
-16325 
-16326 
-16327 
-16328 
-16329 
-16330 
-16331 
-16332 
-16333 
-16334 
-16335 
-16336 
-16337 
-16338 
-16339 
-16340 
-16341 
-16342 
-16343 
-16344 
-16345 
-16346 
-16347 
-16348 
-16349 
-16350 
-16351 
-16352 
-16353 
-16354 
-16355 
-16356 
-16357 
-16358 
-16359 
-16360 
-16361 
-16362 
-16363 
-16364 
-16365 
-16366 
-16367 
-16368 
-16369 
-16370 
-16371 
-16372 
-16373 
-16374 
-16375 
-16376 
-16377 
-16378 
-16379 
-16380 
-16381 
-16382 
-16383 
-16384 
-16385 
-16386 
-16387 
-16388 
-16389 
-16390 
-16391 
-16392 
-16393 
-16394 
-16395 
-16396 
-16397 
-16398 
-16399 
-16400 
-16401 
-16402 
-16403 
-16404 
-16405 
-16406 
-16407 
-16408 
-16409 
-16410 
-16411 
-16412 
-16413 
-16414 
-16415 
-16416 
-16417 
-16418 
-16419 
-16420 
-16421 
-16422 
-16423 
-16424 
-16425 
-16426 
-16427 
-16428 
-16429 
-16430 
-16431 
-16432 
-16433 
-16434 
-16435 
-16436 
-16437 
-16438 
-16439 
-16440 
-16441 
-16442 
-16443 
-16444 
-16445 
-16446 
-16447 
-16448 
-16449 
-16450 
-16451 
-16452 
-16453 
-16454 
-16455 
-16456 
-16457 
-16458 
-16459 
-16460 
-16461 
-16462 
-16463 
-16464 
-16465 
-16466 
-16467 
-16468 
-16469 
-16470 
-16471 
-16472 
-16473 
-16474 
-16475 
-16476 
-16477 
-16478 
-16479 
-16480 
-16481 
-16482 
-16483 
-16484 
-16485 
-16486 
-16487 
-16488 
-16489 
-16490 
-16491 
-16492 
-16493 
-16494 
-16495 
-16496 
-16497 
-16498 
-16499 
-16500 
-16501 
-16502 
-16503 
-16504 
-16505 
-16506 
-16507 
-16508 
-16509 
-16510 
-16511 
-16512 
-16513 
-16514 
-16515 
-16516 
-16517 
-16518 
-16519 
-16520 
-16521 
-16522 
-16523 
-16524 
-16525 
-16526 
-16527 
-16528 
-16529 
-16530 
-16531 
-16532 
-16533 
-16534 
-16535 
-16536 
-16537 
-16538 
-16539 
-16540 
-16541 
-16542 
-16543 
-16544 
-16545 
-16546 
-16547 
-16548 
-16549 
-16550 
-16551 
-16552 
-16553 
-16554 
-16555 
-16556 
-16557 
-16558 
-16559 
-16560 
-16561 
-16562 
-16563 
-16564 
-16565 
-16566 
-16567 
-16568 
-16569 
-16570 
-16571 
-16572 
-16573 
-16574 
-16575 
-16576 
-16577 
-16578 
-16579 
-16580 
-16581 
-16582 
-16583 
-16584 
-16585 
-16586 
-16587 
-16588 
-16589 
-16590 
-16591 
-16592 
-16593 
-16594 
-16595 
-16596 
-16597 
-16598 
-16599 
-16600 
-16601 
-16602 
-16603 
-16604 
-16605 
-16606 
-16607 
-16608 
-16609 
-16610 
-16611 
-16612 
-16613 
-16614 
-16615 
-16616 
-16617 
-16618 
-16619 
-16620 
-16621 
-16622 
-16623 
-16624 
-16625 
-16626 
-16627 
-16628 
-16629 
-16630 
-16631 
-16632 
-16633 
-16634 
-16635 
-16636 
-16637 
-16638 
-16639 
-16640 
-16641 
-16642 
-16643 
-16644 
-16645 
-16646 
-16647 
-16648 
-16649 
-16650 
-16651 
-16652 
-16653 
-16654 
-16655 
-16656 
-16657 
-16658 
-16659 
-16660 
-16661 
-16662 
-16663 
-16664 
-16665 
-16666 
-16667 
-16668 
-16669 
-16670 
-16671 
-16672 
-16673 
-16674 
-16675 
-16676 
-16677 
-16678 
-16679 
-16680 
-16681 
-16682 
-16683 
-16684 
-16685 
-16686 
-16687 
-16688 
-16689 
-16690 
-16691 
-16692 
-16693 
-16694 
-16695 
-16696 
-16697 
-16698 
-16699 
-16700 
-16701 
-16702 
-16703 
-16704 
-16705 
-16706 
-16707 
-16708 
-16709 
-16710 
-16711 
-16712 
-16713 
-16714 
-16715 
-16716 
-16717 
-16718 
-16719 
-16720 
-16721 
-16722 
-16723 
-16724 
-16725 
-16726 
-16727 
-16728 
-16729 
-16730 
-16731 
-16732 
-16733 
-16734 
-16735 
-16736 
-16737 
-16738 
-16739 
-16740 
-16741 
-16742 
-16743 
-16744 
-16745 
-16746 
-16747 
-16748 
-16749 
-16750 
-16751 
-16752 
-16753 
-16754 
-16755 
-16756 
-16757 
-16758 
-16759 
-16760 
-16761 
-16762 
-16763 
-16764 
-16765 
-16766 
-16767 
-16768 
-16769 
-16770 
-16771 
-16772 
-16773 
-16774 
-16775 
-16776 
-16777 
-16778 
-16779 
-16780 
-16781 
-16782 
-16783 
-16784 
-16785 
-16786 
-16787 
-16788 
-16789 
-16790 
-16791 
-16792 
-16793 
-16794 
-16795 
-16796 
-16797 
-16798 
-16799 
-16800 
-16801 
-16802 
-16803 
-16804 
-16805 
-16806 
-16807 
-16808 
-16809 
-16810 
-16811 
-16812 
-16813 
-16814 
-16815 
-16816 
-16817 
-16818 
-16819 
-16820 
-16821 
-16822 
-16823 
-16824 
-16825 
-16826 
-16827 
-16828 
-16829 
-16830 
-16831 
-16832 
-16833 
-16834 
-16835 
-16836 
-16837 
-16838 
-16839 
-16840 
-16841 
-16842 
-16843 
-16844 
-16845 
-16846 
-16847 
-16848 
-16849 
-16850 
-16851 
-16852 
-16853 
-16854 
-16855 
-16856 
-16857 
-16858 
-16859 
-16860 
-16861 
-16862 
-16863 
-16864 
-16865 
-16866 
-16867 
-16868 
-16869 
-16870 
-16871 
-16872 
-16873 
-16874 
-16875 
-16876 
-16877 
-16878 
-16879 
-16880 
-16881 
-16882 
-16883 
-16884 
-16885 
-16886 
-16887 
-16888 
-16889 
-16890 
-16891 
-16892 
-16893 
-16894 
-16895 
-16896 
-16897 
-16898 
-16899 
-16900 
-16901 
-16902 
-16903 
-16904 
-16905 
-16906 
-16907 
-16908 
-16909 
-16910 
-16911 
-16912 
-16913 
-16914 
-16915 
-16916 
-16917 
-16918 
-16919 
-16920 
-16921 
-16922 
-16923 
-16924 
-16925 
-16926 
-16927 
-16928 
-16929 
-16930 
-16931 
-16932 
-16933 
-16934 
-16935 
-16936 
-16937 
-16938 
-16939 
-16940 
-16941 
-16942 
-16943 
-16944 
-16945 
-16946 
-16947 
-16948 
-16949 
-16950 
-16951 
-16952 
-16953 
-16954 
-16955 
-16956 
-16957 
-16958 
-16959 
-16960 
-16961 
-16962 
-16963 
-16964 
-16965 
-16966 
-16967 
-16968 
-16969 
-16970 
-16971 
-16972 
-16973 
-16974 
-16975 
-16976 
-16977 
-16978 
-16979 
-16980 
-16981 
-16982 
-16983 
-16984 
-16985 
-16986 
-16987 
-16988 
-16989 
-16990 
-16991 
-16992 
-16993 
-16994 
-16995 
-16996 
-16997 
-16998 
-16999 
-17000 
-17001 
-17002 
-17003 
-17004 
-17005 
-17006 
-17007 
-17008 
-17009 
-17010 
-17011 
-17012 
-17013 
-17014 
-17015 
-17016 
-17017 
-17018 
-17019 
-17020 
-17021 
-17022 
-17023 
-17024 
-17025 
-17026 
-17027 
-17028 
-17029 
-17030 
-17031 
-17032 
-17033 
-17034 
-17035 
-17036 
-17037 
-17038 
-17039 
-17040 
-17041 
-17042 
-17043 
-17044 
-17045 
-17046 
-17047 
-17048 
-17049 
-17050 
-17051 
-17052 
-17053 
-17054 
-17055 
-17056 
-17057 
-17058 
-17059 
-17060 
-17061 
-17062 
-17063 
-17064 
-17065 
-17066 
-17067 
-17068 
-17069 
-17070 
-17071 
-17072 
-17073 
-17074 
-17075 
-17076 
-17077 
-17078 
-17079 
-17080 
-17081 
-17082 
-17083 
-17084 
-17085 
-17086 
-17087 
-17088 
-17089 
-17090 
-17091 
-17092 
-17093 
-17094 
-17095 
-17096 
-17097 
-17098 
-17099 
-17100 
-17101 
-17102 
-17103 
-17104 
-17105 
-17106 
-17107 
-17108 
-17109 
-17110 
-17111 
-17112 
-17113 
-17114 
-17115 
-17116 
-17117 
-17118 
-17119 
-17120 
-17121 
-17122 
-17123 
-17124 
-17125 
-17126 
-17127 
-17128 
-17129 
-17130 
-17131 
-17132 
-17133 
-17134 
-17135 
-17136 
-17137 
-17138 
-17139 
-17140 
-17141 
-17142 
-17143 
-17144 
-17145 
-17146 
-17147 
-17148 
-17149 
-17150 
-17151 
-17152 
-17153 
-17154 
-17155 
-17156 
-17157 
-17158 
-17159 
-17160 
-17161 
-17162 
-17163 
-17164 
-17165 
-17166 
-17167 
-17168 
-17169 
-17170 
-17171 
-17172 
-17173 
-17174 
-17175 
-17176 
-17177 
-17178 
-17179 
-17180 
-17181 
-17182 
-17183 
-17184 
-17185 
-17186 
-17187 
-17188 
-17189 
-17190 
-17191 
-17192 
-17193 
-17194 
-17195 
-17196 
-17197 
-17198 
-17199 
-17200 
-17201 
-17202 
-17203 
-17204 
-17205 
-17206 
-17207 
-17208 
-17209 
-17210 
-17211 
-17212 
-17213 
-17214 
-17215 
-17216 
-17217 
-17218 
-17219 
-17220 
-17221 
-17222 
-17223 
-17224 
-17225 
-17226 
-17227 
-17228 
-17229 
-17230 
-17231 
-17232 
-17233 
-17234 
-17235 
-17236 
-17237 
-17238 
-17239 
-17240 
-17241 
-17242 
-17243 
-17244 
-17245 
-17246 
-17247 
-17248 
-17249 
-17250 
-17251 
-17252 
-17253 
-17254 
-17255 
-17256 
-17257 
-17258 
-17259 
-17260 
-17261 
-17262 
-17263 
-17264 
-17265 
-17266 
-17267 
-17268 
-17269 
-17270 
-17271 
-17272 
-17273 
-17274 
-17275 
-17276 
-17277 
-17278 
-17279 
-17280 
-17281 
-17282 
-17283 
-17284 
-17285 
-17286 
-17287 
-17288 
-17289 
-17290 
-17291 
-17292 
-17293 
-17294 
-17295 
-17296 
-17297 
-17298 
-17299 
-17300 
-17301 
-17302 
-17303 
-17304 
-17305 
-17306 
-17307 
-17308 
-17309 
-17310 
-17311 
-17312 
-17313 
-17314 
-17315 
-17316 
-17317 
-17318 
-17319 
-17320 
-17321 
-17322 
-17323 
-17324 
-17325 
-17326 
-17327 
-17328 
-17329 
-17330 
-17331 
-17332 
-17333 
-17334 
-17335 
-17336 
-17337 
-17338 
-17339 
-17340 
-17341 
-17342 
-17343 
-17344 
-17345 
-17346 
-17347 
-17348 
-17349 
-17350 
-17351 
-17352 
-17353 
-17354 
-17355 
-17356 
-17357 
-17358 
-17359 
-17360 
-17361 
-17362 
-17363 
-17364 
-17365 
-17366 
-17367 
-17368 
-17369 
-17370 
-17371 
-17372 
-17373 
-17374 
-17375 
-17376 
-17377 
-17378 
-17379 
-17380 
-17381 
-17382 
-17383 
-17384 
-17385 
-17386 
-17387 
-17388 
-17389 
-17390 
-17391 
-17392 
-17393 
-17394 
-17395 
-17396 
-17397 
-17398 
-17399 
-17400 
-17401 
-17402 
-17403 
-17404 
-17405 
-17406 
-17407 
-17408 
-17409 
-17410 
-17411 
-17412 
-17413 
-17414 
-17415 
-17416 
-17417 
-17418 
-17419 
-17420 
-17421 
-17422 
-17423 
-17424 
-17425 
-17426 
-17427 
-17428 
-17429 
-17430 
-17431 
-17432 
-17433 
-17434 
-17435 
-17436 
-17437 
-17438 
-17439 
-17440 
-17441 
-17442 
-17443 
-17444 
-17445 
-17446 
-17447 
-17448 
-17449 
-17450 
-17451 
-17452 
-17453 
-17454 
-17455 
-17456 
-17457 
-17458 
-17459 
-17460 
-17461 
-17462 
-17463 
-17464 
-17465 
-17466 
-17467 
-17468 
-17469 
-17470 
-17471 
-17472 
-17473 
-17474 
-17475 
-17476 
-17477 
-17478 
-17479 
-17480 
-17481 
-17482 
-17483 
-17484 
-17485 
-17486 
-17487 
-17488 
-17489 
-17490 
-17491 
-17492 
-17493 
-17494 
-17495 
-17496 
-17497 
-17498 
-17499 
-17500 
-17501 
-17502 
-17503 
-17504 
-17505 
-17506 
-17507 
-17508 
-17509 
-17510 
-17511 
-17512 
-17513 
-17514 
-17515 
-17516 
-17517 
-17518 
-17519 
-17520 
-17521 
-17522 
-17523 
-17524 
-17525 
-17526 
-17527 
-17528 
-17529 
-17530 
-17531 
-17532 
-17533 
-17534 
-17535 
-17536 
-17537 
-17538 
-17539 
-17540 
-17541 
-17542 
-17543 
-17544 
-17545 
-17546 
-17547 
-17548 
-17549 
-17550 
-17551 
-17552 
-17553 
-17554 
-17555 
-17556 
-17557 
-17558 
-17559 
-17560 
-17561 
-17562 
-17563 
-17564 
-17565 
-17566 
-17567 
-17568 
-17569 
-17570 
-17571 
-17572 
-17573 
-17574 
-17575 
-17576 
-17577 
-17578 
-17579 
-17580 
-17581 
-17582 
-17583 
-17584 
-17585 
-17586 
-17587 
-17588 
-17589 
-17590 
-17591 
-17592 
-17593 
-17594 
-17595 
-17596 
-17597 
-17598 
-17599 
-17600 
-17601 
-17602 
-17603 
-17604 
-17605 
-17606 
-17607 
-17608 
-17609 
-17610 
-17611 
-17612 
-17613 
-17614 
-17615 
-17616 
-17617 
-17618 
-17619 
-17620 
-17621 
-17622 
-17623 
-17624 
-17625 
-17626 
-17627 
-17628 
-17629 
-17630 
-17631 
-17632 
-17633 
-17634 
-17635 
-17636 
-17637 
-17638 
-17639 
-17640 
-17641 
-17642 
-17643 
-17644 
-17645 
-17646 
-17647 
-17648 
-17649 
-17650 
-17651 
-17652 
-17653 
-17654 
-17655 
-17656 
-17657 
-17658 
-17659 
-17660 
-17661 
-17662 
-17663 
-17664 
-17665 
-17666 
-17667 
-17668 
-17669 
-17670 
-17671 
-17672 
-17673 
-17674 
-17675 
-17676 
-17677 
-17678 
-17679 
-17680 
-17681 
-17682 
-17683 
-17684 
-17685 
-17686 
-17687 
-17688 
-17689 
-17690 
-17691 
-17692 
-17693 
-17694 
-17695 
-17696 
-17697 
-17698 
-17699 
-17700 
-17701 
-17702 
-17703 
-17704 
-17705 
-17706 
-17707 
-17708 
-17709 
-17710 
-17711 
-17712 
-17713 
-17714 
-17715 
-17716 
-17717 
-17718 
-17719 
-17720 
-17721 
-17722 
-17723 
-17724 
-17725 
-17726 
-17727 
-17728 
-17729 
-17730 
-17731 
-17732 
-17733 
-17734 
-17735 
-17736 
-17737 
-17738 
-17739 
-17740 
-17741 
-17742 
-17743 
-17744 
-17745 
-17746 
-17747 
-17748 
-17749 
-17750 
-17751 
-17752 
-17753 
-17754 
-17755 
-17756 
-17757 
-17758 
-17759 
-17760 
-17761 
-17762 
-17763 
-17764 
-17765 
-17766 
-17767 
-17768 
-17769 
-17770 
-17771 
-17772 
-17773 
-17774 
-17775 
-17776 
-17777 
-17778 
-17779 
-17780 
-17781 
-17782 
-17783 
-17784 
-17785 
-17786 
-17787 
-17788 
-17789 
-17790 
-17791 
-17792 
-17793 
-17794 
-17795 
-17796 
-17797 
-17798 
-17799 
-17800 
-17801 
-17802 
-17803 
-17804 
-17805 
-17806 
-17807 
-17808 
-17809 
-17810 
-17811 
-17812 
-17813 
-17814 
-17815 
-17816 
-17817 
-17818 
-17819 
-17820 
-17821 
-17822 
-17823 
-17824 
-17825 
-17826 
-17827 
-17828 
-17829 
-17830 
-17831 
-17832 
-17833 
-17834 
-17835 
-17836 
-17837 
-17838 
-17839 
-17840 
-17841 
-17842 
-17843 
-17844 
-17845 
-17846 
-17847 
-17848 
-17849 
-17850 
-17851 
-17852 
-17853 
-17854 
-17855 
-17856 
-17857 
-17858 
-17859 
-17860 
-17861 
-17862 
-17863 
-17864 
-17865 
-17866 
-17867 
-17868 
-17869 
-17870 
-17871 
-17872 
-17873 
-17874 
-17875 
-17876 
-17877 
-17878 
-17879 
-17880 
-17881 
-17882 
-17883 
-17884 
-17885 
-17886 
-17887 
-17888 
-17889 
-17890 
-17891 
-17892 
-17893 
-17894 
-17895 
-17896 
-17897 
-17898 
-17899 
-17900 
-17901 
-17902 
-17903 
-17904 
-17905 
-17906 
-17907 
-17908 
-17909 
-17910 
-17911 
-17912 
-17913 
-17914 
-17915 
-17916 
-17917 
-17918 
-17919 
-17920 
-17921 
-17922 
-17923 
-17924 
-17925 
-17926 
-17927 
-17928 
-17929 
-17930 
-17931 
-17932 
-17933 
-17934 
-17935 
-17936 
-17937 
-17938 
-17939 
-17940 
-17941 
-17942 
-17943 
-17944 
-17945 
-17946 
-17947 
-17948 
-17949 
-17950 
-17951 
-17952 
-17953 
-17954 
-17955 
-17956 
-17957 
-17958 
-17959 
-17960 
-17961 
-17962 
-17963 
-17964 
-17965 
-17966 
-17967 
-17968 
-17969 
-17970 
-17971 
-17972 
-17973 
-17974 
-17975 
-17976 
-17977 
-17978 
-17979 
-17980 
-17981 
-17982 
-17983 
-17984 
-17985 
-17986 
-17987 
-17988 
-17989 
-17990 
-17991 
-17992 
-17993 
-17994 
-17995 
-17996 
-17997 
-17998 
-17999 
-18000 
-18001 
-18002 
-18003 
-18004 
-18005 
-18006 
-18007 
-18008 
-18009 
-18010 
-18011 
-18012 
-18013 
-18014 
-18015 
-18016 
-18017 
-18018 
-18019 
-18020 
-18021 
-18022 
-18023 
-18024 
-18025 
-18026 
-18027 
-18028 
-18029 
-18030 
-18031 
-18032 
-18033 
-18034 
-18035 
-18036 
-18037 
-18038 
-18039 
-18040 
-18041 
-18042 
-18043 
-18044 
-18045 
-18046 
-18047 
-18048 
-18049 
-18050 
-18051 
-18052 
-18053 
-18054 
-18055 
-18056 
-18057 
-18058 
-18059 
-18060 
-18061 
-18062 
-18063 
-18064 
-18065 
-18066 
-18067 
-18068 
-18069 
-18070 
-18071 
-18072 
-18073 
-18074 
-18075 
-18076 
-18077 
-18078 
-18079 
-18080 
-18081 
-18082 
-18083 
-18084 
-18085 
-18086 
-18087 
-18088 
-18089 
-18090 
-18091 
-18092 
-18093 
-18094 
-18095 
-18096 
-18097 
-18098 
-18099 
-18100 
-18101 
-18102 
-18103 
-18104 
-18105 
-18106 
-18107 
-18108 
-18109 
-18110 
-18111 
-18112 
-18113 
-18114 
-18115 
-18116 
-18117 
-18118 
-18119 
-18120 
-18121 
-18122 
-18123 
-18124 
-18125 
-18126 
-18127 
-18128 
-18129 
-18130 
-18131 
-18132 
-18133 
-18134 
-18135 
-18136 
-18137 
-18138 
-18139 
-18140 
-18141 
-18142 
-18143 
-18144 
-18145 
-18146 
-18147 
-18148 
-18149 
-18150 
-18151 
-18152 
-18153 
-18154 
-18155 
-18156 
-18157 
-18158 
-18159 
-18160 
-18161 
-18162 
-18163 
-18164 
-18165 
-18166 
-18167 
-18168 
-18169 
-18170 
-18171 
-18172 
-18173 
-18174 
-18175 
-18176 
-18177 
-18178 
-18179 
-18180 
-18181 
-18182 
-18183 
-18184 
-18185 
-18186 
-18187 
-18188 
-18189 
-18190 
-18191 
-18192 
-18193 
-18194 
-18195 
-18196 
-18197 
-18198 
-18199 
-18200 
-18201 
-18202 
-18203 
-18204 
-18205 
-18206 
-18207 
-18208 
-18209 
-18210 
-18211 
-18212 
-18213 
-18214 
-18215 
-18216 
-18217 
-18218 
-18219 
-18220 
-18221 
-18222 
-18223 
-18224 
-18225 
-18226 
-18227 
-18228 
-18229 
-18230 
-18231 
-18232 
-18233 
-18234 
-18235 
-18236 
-18237 
-18238 
-18239 
-18240 
-18241 
-18242 
-18243 
-18244 
-18245 
-18246 
-18247 
-18248 
-18249 
-18250 
-18251 
-18252 
-18253 
-18254 
-18255 
-18256 
-18257 
-18258 
-18259 
-18260 
-18261 
-18262 
-18263 
-18264 
-18265 
-18266 
-18267 
-18268 
-18269 
-18270 
-18271 
-18272 
-18273 
-18274 
-18275 
-18276 
-18277 
-18278 
-18279 
-18280 
-18281 
-18282 
-18283 
-18284 
-18285 
-18286 
-18287 
-18288 
-18289 
-18290 
-18291 
-18292 
-18293 
-18294 
-18295 
-18296 
-18297 
-18298 
-18299 
-18300 
-18301 
-18302 
-18303 
-18304 
-18305 
-18306 
-18307 
-18308 
-18309 
-18310 
-18311 
-18312 
-18313 
-18314 
-18315 
-18316 
-18317 
-18318 
-18319 
-18320 
-18321 
-18322 
-18323 
-18324 
-18325 
-18326 
-18327 
-18328 
-18329 
-18330 
-18331 
-18332 
-18333 
-18334 
-18335 
-18336 
-18337 
-18338 
-18339 
-18340 
-18341 
-18342 
-18343 
-18344 
-18345 
-18346 
-18347 
-18348 
-18349 
-18350 
-18351 
-18352 
-18353 
-18354 
-18355 
-18356 
-18357 
-18358 
-18359 
-18360 
-18361 
-18362 
-18363 
-18364 
-18365 
-18366 
-18367 
-18368 
-18369 
-18370 
-18371 
-18372 
-18373 
-18374 
-18375 
-18376 
-18377 
-18378 
-18379 
-18380 
-18381 
-18382 
-18383 
-18384 
-18385 
-18386 
-18387 
-18388 
-18389 
-18390 
-18391 
-18392 
-18393 
-18394 
-18395 
-18396 
-18397 
-18398 
-18399 
-18400 
-18401 
-18402 
-18403 
-18404 
-18405 
-18406 
-18407 
-18408 
-18409 
-18410 
-18411 
-18412 
-18413 
-18414 
-18415 
-18416 
-18417 
-18418 
-18419 
-18420 
-18421 
-18422 
-18423 
-18424 
-18425 
-18426 
-18427 
-18428 
-18429 
-18430 
-18431 
-18432 
-18433 
-18434 
-18435 
-18436 
-18437 
-18438 
-18439 
-18440 
-18441 
-18442 
-18443 
-18444 
-18445 
-18446 
-18447 
-18448 
-18449 
-18450 
-18451 
-18452 
-18453 
-18454 
-18455 
-18456 
-18457 
-18458 
-18459 
-18460 
-18461 
-18462 
-18463 
-18464 
-18465 
-18466 
-18467 
-18468 
-18469 
-18470 
-18471 
-18472 
-18473 
-18474 
-18475 
-18476 
-18477 
-18478 
-18479 
-18480 
-18481 
-18482 
-18483 
-18484 
-18485 
-18486 
-18487 
-18488 
-18489 
-18490 
-18491 
-18492 
-18493 
-18494 
-18495 
-18496 
-18497 
-18498 
-18499 
-18500 
-18501 
-18502 
-18503 
-18504 
-18505 
-18506 
-18507 
-18508 
-18509 
-18510 
-18511 
-18512 
-18513 
-18514 
-18515 
-18516 
-18517 
-18518 
-18519 
-18520 
-18521 
-18522 
-18523 
-18524 
-18525 
-18526 
-18527 
-18528 
-18529 
-18530 
-18531 
-18532 
-18533 
-18534 
-18535 
-18536 
-18537 
-18538 
-18539 
-18540 
-18541 
-18542 
-18543 
-18544 
-18545 
-18546 
-18547 
-18548 
-18549 
-18550 
-18551 
-18552 
-18553 
-18554 
-18555 
-18556 
-18557 
-18558 
-18559 
-18560 
-18561 
-18562 
-18563 
-18564 
-18565 
-18566 
-18567 
-18568 
-18569 
-18570 
-18571 
-18572 
-18573 
-18574 
-18575 
-18576 
-18577 
-18578 
-18579 
-18580 
-18581 
-18582 
-18583 
-18584 
-18585 
-18586 
-18587 
-18588 
-18589 
-18590 
-18591 
-18592 
-18593 
-18594 
-18595 
-18596 
-18597 
-18598 
-18599 
-18600 
-18601 
-18602 
-18603 
-18604 
-18605 
-18606 
-18607 
-18608 
-18609 
-18610 
-18611 
-18612 
-18613 
-18614 
-18615 
-18616 
-18617 
-18618 
-18619 
-18620 
-18621 
-18622 
-18623 
-18624 
-18625 
-18626 
-18627 
-18628 
-18629 
-18630 
-18631 
-18632 
-18633 
-18634 
-18635 
-18636 
-18637 
-18638 
-18639 
-18640 
-18641 
-18642 
-18643 
-18644 
-18645 
-18646 
-18647 
-18648 
-18649 
-18650 
-18651 
-18652 
-18653 
-18654 
-18655 
-18656 
-18657 
-18658 
-18659 
-18660 
-18661 
-18662 
-18663 
-18664 
-18665 
-18666 
-18667 
-18668 
-18669 
-18670 
-18671 
-18672 
-18673 
-18674 
-18675 
-18676 
-18677 
-18678 
-18679 
-18680 
-18681 
-18682 
-18683 
-18684 
-18685 
-18686 
-18687 
-18688 
-18689 
-18690 
-18691 
-18692 
-18693 
-18694 
-18695 
-18696 
-18697 
-18698 
-18699 
-18700 
-18701 
-18702 
-18703 
-18704 
-18705 
-18706 
-18707 
-18708 
-18709 
-18710 
-18711 
-18712 
-18713 
-18714 
-18715 
-18716 
-18717 
-18718 
-18719 
-18720 
-18721 
-18722 
-18723 
-18724 
-18725 
-18726 
-18727 
-18728 
-18729 
-18730 
-18731 
-18732 
-18733 
-18734 
-18735 
-18736 
-18737 
-18738 
-18739 
-18740 
-18741 
-18742 
-18743 
-18744 
-18745 
-18746 
-18747 
-18748 
-18749 
-18750 
-18751 
-18752 
-18753 
-18754 
-18755 
-18756 
-18757 
-18758 
-18759 
-18760 
-18761 
-18762 
-18763 
-18764 
-18765 
-18766 
-18767 
-18768 
-18769 
-18770 
-18771 
-18772 
-18773 
-18774 
-18775 
-18776 
-18777 
-18778 
-18779 
-18780 
-18781 
-18782 
-18783 
-18784 
-18785 
-18786 
-18787 
-18788 
-18789 
-18790 
-18791 
-18792 
-18793 
-18794 
-18795 
-18796 
-18797 
-18798 
-18799 
-18800 
-18801 
-18802 
-18803 
-18804 
-18805 
-18806 
-18807 
-18808 
-18809 
-18810 
-18811 
-18812 
-18813 
-18814 
-18815 
-18816 
-18817 
-18818 
-18819 
-18820 
-18821 
-18822 
-18823 
-18824 
-18825 
-18826 
-18827 
-18828 
-18829 
-18830 
-18831 
-18832 
-18833 
-18834 
-18835 
-18836 
-18837 
-18838 
-18839 
-18840 
-18841 
-18842 
-18843 
-18844 
-18845 
-18846 
-18847 
-18848 
-18849 
-18850 
-18851 
-18852 
-18853 
-18854 
-18855 
-18856 
-18857 
-18858 
-18859 
-18860 
-18861 
-18862 
-18863 
-18864 
-18865 
-18866 
-18867 
-18868 
-18869 
-18870 
-18871 
-18872 
-18873 
-18874 
-18875 
-18876 
-18877 
-18878 
-18879 
-18880 
-18881 
-18882 
-18883 
-18884 
-18885 
-18886 
-18887 
-18888 
-18889 
-18890 
-18891 
-18892 
-18893 
-18894 
-18895 
-18896 
-18897 
-18898 
-18899 
-18900 
-18901 
-18902 
-18903 
-18904 
-18905 
-18906 
-18907 
-18908 
-18909 
-18910 
-18911 
-18912 
-18913 
-18914 
-18915 
-18916 
-18917 
-18918 
-18919 
-18920 
-18921 
-18922 
-18923 
-18924 
-18925 
-18926 
-18927 
-18928 
-18929 
-18930 
-18931 
-18932 
-18933 
-18934 
-18935 
-18936 
-18937 
-18938 
-18939 
-18940 
-18941 
-18942 
-18943 
-18944 
-18945 
-18946 
-18947 
-18948 
-18949 
-18950 
-18951 
-18952 
-18953 
-18954 
-18955 
-18956 
-18957 
-18958 
-18959 
-18960 
-18961 
-18962 
-18963 
-18964 
-18965 
-18966 
-18967 
-18968 
-18969 
-18970 
-18971 
-18972 
-18973 
-18974 
-18975 
-18976 
-18977 
-18978 
-18979 
-18980 
-18981 
-18982 
-18983 
-18984 
-18985 
-18986 
-18987 
-18988 
-18989 
-18990 
-18991 
-18992 
-18993 
-18994 
-18995 
-18996 
-18997 
-18998 
-18999 
-19000 
-19001 
-19002 
-19003 
-19004 
-19005 
-19006 
-19007 
-19008 
-19009 
-19010 
-19011 
-19012 
-19013 
-19014 
-19015 
-19016 
-19017 
-19018 
-19019 
-19020 
-19021 
-19022 
-19023 
-19024 
-19025 
-19026 
-19027 
-19028 
-19029 
-19030 
-19031 
-19032 
-19033 
-19034 
-19035 
-19036 
-19037 
-19038 
-19039 
-19040 
-19041 
-19042 
-19043 
-19044 
-19045 
-19046 
-19047 
-19048 
-19049 
-19050 
-19051 
-19052 
-19053 
-19054 
-19055 
-19056 
-19057 
-19058 
-19059 
-19060 
-19061 
-19062 
-19063 
-19064 
-19065 
-19066 
-19067 
-19068 
-19069 
-19070 
-19071 
-19072 
-19073 
-19074 
-19075 
-19076 
-19077 
-19078 
-19079 
-19080 
-19081 
-19082 
-19083 
-19084 
-19085 
-19086 
-19087 
-19088 
-19089 
-19090 
-19091 
-19092 
-19093 
-19094 
-19095 
-19096 
-19097 
-19098 
-19099 
-19100 
-19101 
-19102 
-19103 
-19104 
-19105 
-19106 
-19107 
-19108 
-19109 
-19110 
-19111 
-19112 
-19113 
-19114 
-19115 
-19116 
-19117 
-19118 
-19119 
-19120 
-19121 
-19122 
-19123 
-19124 
-19125 
-19126 
-19127 
-19128 
-19129 
-19130 
-19131 
-19132 
-19133 
-19134 
-19135 
-19136 
-19137 
-19138 
-19139 
-19140 
-19141 
-19142 
-19143 
-19144 
-19145 
-19146 
-19147 
-19148 
-19149 
-19150 
-19151 
-19152 
-19153 
-19154 
-19155 
-19156 
-19157 
-19158 
-19159 
-19160 
-19161 
-19162 
-19163 
-19164 
-19165 
-19166 
-19167 
-19168 
-19169 
-19170 
-19171 
-19172 
-19173 
-19174 
-19175 
-19176 
-19177 
-19178 
-19179 
-19180 
-19181 
-19182 
-19183 
-19184 
-19185 
-19186 
-19187 
-19188 
-19189 
-19190 
-19191 
-19192 
-19193 
-19194 
-19195 
-19196 
-19197 
-19198 
-19199 
-19200 
-19201 
-19202 
-19203 
-19204 
-19205 
-19206 
-19207 
-19208 
-19209 
-19210 
-19211 
-19212 
-19213 
-19214 
-19215 
-19216 
-19217 
-19218 
-19219 
-19220 
-19221 
-19222 
-19223 
-19224 
-19225 
-19226 
-19227 
-19228 
-19229 
-19230 
-19231 
-19232 
-19233 
-19234 
-19235 
-19236 
-19237 
-19238 
-19239 
-19240 
-19241 
-19242 
-19243 
-19244 
-19245 
-19246 
-19247 
-19248 
-19249 
-19250 
-19251 
-19252 
-19253 
-19254 
-19255 
-19256 
-19257 
-19258 
-19259 
-19260 
-19261 
-19262 
-19263 
-19264 
-19265 
-19266 
-19267 
-19268 
-19269 
-19270 
-19271 
-19272 
-19273 
-19274 
-19275 
-19276 
-19277 
-19278 
-19279 
-19280 
-19281 
-19282 
-19283 
-19284 
-19285 
-19286 
-19287 
-19288 
-19289 
-19290 
-19291 
-19292 
-19293 
-19294 
-19295 
-19296 
-19297 
-19298 
-19299 
-19300 
-19301 
-19302 
-19303 
-19304 
-19305 
-19306 
-19307 
-19308 
-19309 
-19310 
-19311 
-19312 
-19313 
-19314 
-19315 
-19316 
-19317 
-19318 
-19319 
-19320 
-19321 
-19322 
-19323 
-19324 
-19325 
-19326 
-19327 
-19328 
-19329 
-19330 
-19331 
-19332 
-19333 
-19334 
-19335 
-19336 
-19337 
-19338 
-19339 
-19340 
-19341 
-19342 
-19343 
-19344 
-19345 
-19346 
-19347 
-19348 
-19349 
-19350 
-19351 
-19352 
-19353 
-19354 
-19355 
-19356 
-19357 
-19358 
-19359 
-19360 
-19361 
-19362 
-19363 
-19364 
-19365 
-19366 
-19367 
-19368 
-19369 
-19370 
-19371 
-19372 
-19373 
-19374 
-19375 
-19376 
-19377 
-19378 
-19379 
-19380 
-19381 
-19382 
-19383 
-19384 
-19385 
-19386 
-19387 
-19388 
-19389 
-19390 
-19391 
-19392 
-19393 
-19394 
-19395 
-19396 
-19397 
-19398 
-19399 
-19400 
-19401 
-19402 
-19403 
-19404 
-19405 
-19406 
-19407 
-19408 
-19409 
-19410 
-19411 
-19412 
-19413 
-19414 
-19415 
-19416 
-19417 
-19418 
-19419 
-19420 
-19421 
-19422 
-19423 
-19424 
-19425 
-19426 
-19427 
-19428 
-19429 
-19430 
-19431 
-19432 
-19433 
-19434 
-19435 
-19436 
-19437 
-19438 
-19439 
-19440 
-19441 
-19442 
-19443 
-19444 
-19445 
-19446 
-19447 
-19448 
-19449 
-19450 
-19451 
-19452 
-19453 
-19454 
-19455 
-19456 
-19457 
-19458 
-19459 
-19460 
-19461 
-19462 
-19463 
-19464 
-19465 
-19466 
-19467 
-19468 
-19469 
-19470 
-19471 
-19472 
-19473 
-19474 
-19475 
-19476 
-19477 
-19478 
-19479 
-19480 
-19481 
-19482 
-19483 
-19484 
-19485 
-19486 
-19487 
-19488 
-19489 
-19490 
-19491 
-19492 
-19493 
-19494 
-19495 
-19496 
-19497 
-19498 
-19499 
-19500 
-19501 
-19502 
-19503 
-19504 
-19505 
-19506 
-19507 
-19508 
-19509 
-19510 
-19511 
-19512 
-19513 
-19514 
-19515 
-19516 
-19517 
-19518 
-19519 
-19520 
-19521 
-19522 
-19523 
-19524 
-19525 
-19526 
-19527 
-19528 
-19529 
-19530 
-19531 
-19532 
-19533 
-19534 
-19535 
-19536 
-19537 
-19538 
-19539 
-19540 
-19541 
-19542 
-19543 
-19544 
-19545 
-19546 
-19547 
-19548 
-19549 
-19550 
-19551 
-19552 
-19553 
-19554 
-19555 
-19556 
-19557 
-19558 
-19559 
-19560 
-19561 
-19562 
-19563 
-19564 
-19565 
-19566 
-19567 
-19568 
-19569 
-19570 
-19571 
-19572 
-19573 
-19574 
-19575 
-19576 
-19577 
-19578 
-19579 
-19580 
-19581 
-19582 
-19583 
-19584 
-19585 
-19586 
-19587 
-19588 
-19589 
-19590 
-19591 
-19592 
-19593 
-19594 
-19595 
-19596 
-19597 
-19598 
-19599 
-19600 
-19601 
-19602 
-19603 
-19604 
-19605 
-19606 
-19607 
-19608 
-19609 
-19610 
-19611 
-19612 
-19613 
-19614 
-19615 
-19616 
-19617 
-19618 
-19619 
-19620 
-19621 
-19622 
-19623 
-19624 
-19625 
-19626 
-19627 
-19628 
-19629 
-19630 
-19631 
-19632 
-19633 
-19634 
-19635 
-19636 
-19637 
-19638 
-19639 
-19640 
-19641 
-19642 
-19643 
-19644 
-19645 
-19646 
-19647 
-19648 
-19649 
-19650 
-19651 
-19652 
-19653 
-19654 
-19655 
-19656 
-19657 
-19658 
-19659 
-19660 
-19661 
-19662 
-19663 
-19664 
-19665 
-19666 
-19667 
-19668 
-19669 
-19670 
-19671 
-19672 
-19673 
-19674 
-19675 
-19676 
-19677 
-19678 
-19679 
-19680 
-19681 
-19682 
-19683 
-19684 
-19685 
-19686 
-19687 
-19688 
-19689 
-19690 
-19691 
-19692 
-19693 
-19694 
-19695 
-19696 
-19697 
-19698 
-19699 
-19700 
-19701 
-19702 
-19703 
-19704 
-19705 
-19706 
-19707 
-19708 
-19709 
-19710 
-19711 
-19712 
-19713 
-19714 
-19715 
-19716 
-19717 
-19718 
-19719 
-19720 
-19721 
-19722 
-19723 
-19724 
-19725 
-19726 
-19727 
-19728 
-19729 
-19730 
-19731 
-19732 
-19733 
-19734 
-19735 
-19736 
-19737 
-19738 
-19739 
-19740 
-19741 
-19742 
-19743 
-19744 
-19745 
-19746 
-19747 
-19748 
-19749 
-19750 
-19751 
-19752 
-19753 
-19754 
-19755 
-19756 
-19757 
-19758 
-19759 
-19760 
-19761 
-19762 
-19763 
-19764 
-19765 
-19766 
-19767 
-19768 
-19769 
-19770 
-19771 
-19772 
-19773 
-19774 
-19775 
-19776 
-19777 
-19778 
-19779 
-19780 
-19781 
-19782 
-19783 
-19784 
-19785 
-19786 
-19787 
-19788 
-19789 
-19790 
-19791 
-19792 
-19793 
-19794 
-19795 
-19796 
-19797 
-19798 
-19799 
-19800 
-19801 
-19802 
-19803 
-19804 
-19805 
-19806 
-19807 
-19808 
-19809 
-19810 
-19811 
-19812 
-19813 
-19814 
-19815 
-19816 
-19817 
-19818 
-19819 
-19820 
-19821 
-19822 
-19823 
-19824 
-19825 
-19826 
-19827 
-19828 
-19829 
-19830 
-19831 
-19832 
-19833 
-19834 
-19835 
-19836 
-19837 
-19838 
-19839 
-19840 
-19841 
-19842 
-19843 
-19844 
-19845 
-19846 
-19847 
-19848 
-19849 
-19850 
-19851 
-19852 
-19853 
-19854 
-19855 
-19856 
-19857 
-19858 
-19859 
-19860 
-19861 
-19862 
-19863 
-19864 
-19865 
-19866 
-19867 
-19868 
-19869 
-19870 
-19871 
-19872 
-19873 
-19874 
-19875 
-19876 
-19877 
-19878 
-19879 
-19880 
-19881 
-19882 
-19883 
-19884 
-19885 
-19886 
-19887 
-19888 
-19889 
-19890 
-19891 
-19892 
-19893 
-19894 
-19895 
-19896 
-19897 
-19898 
-19899 
-19900 
-19901 
-19902 
-19903 
-19904 
-19905 
-19906 
-19907 
-19908 
-19909 
-19910 
-19911 
-19912 
-19913 
-19914 
-19915 
-19916 
-19917 
-19918 
-19919 
-19920 
-19921 
-19922 
-19923 
-19924 
-19925 
-19926 
-19927 
-19928 
-19929 
-19930 
-19931 
-19932 
-19933 
-19934 
-19935 
-19936 
-19937 
-19938 
-19939 
-19940 
-19941 
-19942 
-19943 
-19944 
-19945 
-19946 
-19947 
-19948 
-19949 
-19950 
-19951 
-19952 
-19953 
-19954 
-19955 
-19956 
-19957 
-19958 
-19959 
-19960 
-19961 
-19962 
-19963 
-19964 
-19965 
-19966 
-19967 
-19968 
-19969 
-19970 
-19971 
-19972 
-19973 
-19974 
-19975 
-19976 
-19977 
-19978 
-19979 
-19980 
-19981 
-19982 
-19983 
-19984 
-19985 
-19986 
-19987 
-19988 
-19989 
-19990 
-19991 
-19992 
-19993 
-19994 
-19995 
-19996 
-19997 
-19998 
-19999 
-20000 
-20001 
-20002 
-20003 
-20004 
-20005 
-20006 
-20007 
-20008 
-20009 
-20010 
-20011 
-20012 
-20013 
-20014 
-20015 
-20016 
-20017 
-20018 
-20019 
-20020 
-20021 
-20022 
-20023 
-20024 
-20025 
-20026 
-20027 
-20028 
-20029 
-20030 
-20031 
-20032 
-20033 
-20034 
-20035 
-20036 
-20037 
-20038 
-20039 
-20040 
-20041 
-20042 
-20043 
-20044 
-20045 
-20046 
-20047 
-20048 
-20049 
-20050 
-20051 
-20052 
-20053 
-20054 
-20055 
-20056 
-20057 
-20058 
-20059 
-20060 
-20061 
-20062 
-20063 
-20064 
-20065 
-20066 
-20067 
-20068 
-20069 
-20070 
-20071 
-20072 
-20073 
-20074 
-20075 
-20076 
-20077 
-20078 
-20079 
-20080 
-20081 
-20082 
-20083 
-20084 
-20085 
-20086 
-20087 
-20088 
-20089 
-20090 
-20091 
-20092 
-20093 
-20094 
-20095 
-20096 
-20097 
-20098 
-20099 
-20100 
-20101 
-20102 
-20103 
-20104 
-20105 
-20106 
-20107 
-20108 
-20109 
-20110 
-20111 
-20112 
-20113 
-20114 
-20115 
-20116 
-20117 
-20118 
-20119 
-20120 
-20121 
-20122 
-20123 
-20124 
-20125 
-20126 
-20127 
-20128 
-20129 
-20130 
-20131 
-20132 
-20133 
-20134 
-20135 
-20136 
-20137 
-20138 
-20139 
-20140 
-20141 
-20142 
-20143 
-20144 
-20145 
-20146 
-20147 
-20148 
-20149 
-20150 
-20151 
-20152 
-20153 
-20154 
-20155 
-20156 
-20157 
-20158 
-20159 
-20160 
-20161 
-20162 
-20163 
-20164 
-20165 
-20166 
-20167 
-20168 
-20169 
-20170 
-20171 
-20172 
-20173 
-20174 
-20175 
-20176 
-20177 
-20178 
-20179 
-20180 
-20181 
-20182 
-20183 
-20184 
-20185 
-20186 
-20187 
-20188 
-20189 
-20190 
-20191 
-20192 
-20193 
-20194 
-20195 
-20196 
-20197 
-20198 
-20199 
-20200 
-20201 
-20202 
-20203 
-20204 
-20205 
-20206 
-20207 
-20208 
-20209 
-20210 
-20211 
-20212 
-20213 
-20214 
-20215 
-20216 
-20217 
-20218 
-20219 
-20220 
-20221 
-20222 
-20223 
-20224 
-20225 
-20226 
-20227 
-20228 
-20229 
-20230 
-20231 
-20232 
-20233 
-20234 
-20235 
-20236 
-20237 
-20238 
-20239 
-20240 
-20241 
-20242 
-20243 
-20244 
-20245 
-20246 
-20247 
-20248 
-20249 
-20250 
-20251 
-20252 
-20253 
-20254 
-20255 
-20256 
-20257 
-20258 
-20259 
-20260 
-20261 
-20262 
-20263 
-20264 
-20265 
-20266 
-20267 
-20268 
-20269 
-20270 
-20271 
-20272 
-20273 
-20274 
-20275 
-20276 
-20277 
-20278 
-20279 
-20280 
-20281 
-20282 
-20283 
-20284 
-20285 
-20286 
-20287 
-20288 
-20289 
-20290 
-20291 
-20292 
-20293 
-20294 
-20295 
-20296 
-20297 
-20298 
-20299 
-20300 
-20301 
-20302 
-20303 
-20304 
-20305 
-20306 
-20307 
-20308 
-20309 
-20310 
-20311 
-20312 
-20313 
-20314 
-20315 
-20316 
-20317 
-20318 
-20319 
-20320 
-20321 
-20322 
-20323 
-20324 
-20325 
-20326 
-20327 
-20328 
-20329 
-20330 
-20331 
-20332 
-20333 
-20334 
-20335 
-20336 
-20337 
-20338 
-20339 
-20340 
-20341 
-20342 
-20343 
-20344 
-20345 
-20346 
-20347 
-20348 
-20349 
-20350 
-20351 
-20352 
-20353 
-20354 
-20355 
-20356 
-20357 
-20358 
-20359 
-20360 
-20361 
-20362 
-20363 
-20364 
-20365 
-20366 
-20367 
-20368 
-20369 
-20370 
-20371 
-20372 
-20373 
-20374 
-20375 
-20376 
-20377 
-20378 
-20379 
-20380 
-20381 
-20382 
-20383 
-20384 
-20385 
-20386 
-20387 
-20388 
-20389 
-20390 
-20391 
-20392 
-20393 
-20394 
-20395 
-20396 
-20397 
-20398 
-20399 
-20400 
-20401 
-20402 
-20403 
-20404 
-20405 
-20406 
-20407 
-20408 
-20409 
-20410 
-20411 
-20412 
-20413 
-20414 
-20415 
-20416 
-20417 
-20418 
-20419 
-20420 
-20421 
-20422 
-20423 
-20424 
-20425 
-20426 
-20427 
-20428 
-20429 
-20430 
-20431 
-20432 
-20433 
-20434 
-20435 
-20436 
-20437 
-20438 
-20439 
-20440 
-20441 
-20442 
-20443 
-20444 
-20445 
-20446 
-20447 
-20448 
-20449 
-20450 
-20451 
-20452 
-20453 
-20454 
-20455 
-20456 
-20457 
-20458 
-20459 
-20460 
-20461 
-20462 
-20463 
-20464 
-20465 
-20466 
-20467 
-20468 
-20469 
-20470 
-20471 
-20472 
-20473 
-20474 
-20475 
-20476 
-20477 
-20478 
-20479 
-20480 
-20481 
-20482 
-20483 
-20484 
-20485 
-20486 
-20487 
-20488 
-20489 
-20490 
-20491 
-20492 
-20493 
-20494 
-20495 
-20496 
-20497 
-20498 
-20499 
-20500 
-20501 
-20502 
-20503 
-20504 
-20505 
-20506 
-20507 
-20508 
-20509 
-20510 
-20511 
-20512 
-20513 
-20514 
-20515 
-20516 
-20517 
-20518 
-20519 
-20520 
-20521 
-20522 
-20523 
-20524 
-20525 
-20526 
-20527 
-20528 
-20529 
-20530 
-20531 
-20532 
-20533 
-20534 
-20535 
-20536 
-20537 
-20538 
-20539 
-20540 
-20541 
-20542 
-20543 
-20544 
-20545 
-20546 
-20547 
-20548 
-20549 
-20550 
-20551 
-20552 
-20553 
-20554 
-20555 
-20556 
-20557 
-20558 
-20559 
-20560 
-20561 
-20562 
-20563 
-20564 
-20565 
-20566 
-20567 
-20568 
-20569 
-20570 
-20571 
-20572 
-20573 
-20574 
-20575 
-20576 
-20577 
-20578 
-20579 
-20580 
-20581 
-20582 
-20583 
-20584 
-20585 
-20586 
-20587 
-20588 
-20589 
-20590 
-20591 
-20592 
-20593 
-20594 
-20595 
-20596 
-20597 
-20598 
-20599 
-20600 
-20601 
-20602 
-20603 
-20604 
-20605 
-20606 
-20607 
-20608 
-20609 
-20610 
-20611 
-20612 
-20613 
-20614 
-20615 
-20616 
-20617 
-20618 
-20619 
-20620 
-20621 
-20622 
-20623 
-20624 
-20625 
-20626 
-20627 
-20628 
-20629 
-20630 
-20631 
-20632 
-20633 
-20634 
-20635 
-20636 
-20637 
-20638 
-20639 
-20640 
-20641 
-20642 
-20643 
-20644 
-20645 
-20646 
-20647 
-20648 
-20649 
-20650 
-20651 
-20652 
-20653 
-20654 
-20655 
-20656 
-20657 
-20658 
-20659 
-20660 
-20661 
-20662 
-20663 
-20664 
-20665 
-20666 
-20667 
-20668 
-20669 
-20670 
-20671 
-20672 
-20673 
-20674 
-20675 
-20676 
-20677 
-20678 
-20679 
-20680 
-20681 
-20682 
-20683 
-20684 
-20685 
-20686 
-20687 
-20688 
-20689 
-20690 
-20691 
-20692 
-20693 
-20694 
-20695 
-20696 
-20697 
-20698 
-20699 
-20700 
-20701 
-20702 
-20703 
-20704 
-20705 
-20706 
-20707 
-20708 
-20709 
-20710 
-20711 
-20712 
-20713 
-20714 
-20715 
-20716 
-20717 
-20718 
-20719 
-20720 
-20721 
-20722 
-20723 
-20724 
-20725 
-20726 
-20727 
-20728 
-20729 
-20730 
-20731 
-20732 
-20733 
-20734 
-20735 
-20736 
-20737 
-20738 
-20739 
-20740 
-20741 
-20742 
-20743 
-20744 
-20745 
-20746 
-20747 
-20748 
-20749 
-20750 
-20751 
-20752 
-20753 
-20754 
-20755 
-20756 
-20757 
-20758 
-20759 
-20760 
-20761 
-20762 
-20763 
-20764 
-20765 
-20766 
-20767 
-20768 
-20769 
-20770 
-20771 
-20772 
-20773 
-20774 
-20775 
-20776 
-20777 
-20778 
-20779 
-20780 
-20781 
-20782 
-20783 
-20784 
-20785 
-20786 
-20787 
-20788 
-20789 
-20790 
-20791 
-20792 
-20793 
-20794 
-20795 
-20796 
-20797 
-20798 
-20799 
-20800 
-20801 
-20802 
-20803 
-20804 
-20805 
-20806 
-20807 
-20808 
-20809 
-20810 
-20811 
-20812 
-20813 
-20814 
-20815 
-20816 
-20817 
-20818 
-20819 
-20820 
-20821 
-20822 
-20823 
-20824 
-20825 
-20826 
-20827 
-20828 
-20829 
-20830 
-20831 
-20832 
-20833 
-20834 
-20835 
-20836 
-20837 
-20838 
-20839 
-20840 
-20841 
-20842 
-20843 
-20844 
-20845 
-20846 
-20847 
-20848 
-20849 
-20850 
-20851 
-20852 
-20853 
-20854 
-20855 
-20856 
-20857 
-20858 
-20859 
-20860 
-20861 
-20862 
-20863 
-20864 
-20865 
-20866 
-20867 
-20868 
-20869 
-20870 
-20871 
-20872 
-20873 
-20874 
-20875 
-20876 
-20877 
-20878 
-20879 
-20880 
-20881 
-20882 
-20883 
-20884 
-20885 
-20886 
-20887 
-20888 
-20889 
-20890 
-20891 
-20892 
-20893 
-20894 
-20895 
-20896 
-20897 
-20898 
-20899 
-20900 
-20901 
-20902 
-20903 
-20904 
-20905 
-20906 
-20907 
-20908 
-20909 
-20910 
-20911 
-20912 
-20913 
-20914 
-20915 
-20916 
-20917 
-20918 
-20919 
-20920 
-20921 
-20922 
-20923 
-20924 
-20925 
-20926 
-20927 
-20928 
-20929 
-20930 
-20931 
-20932 
-20933 
-20934 
-20935 
-20936 
-20937 
-20938 
-20939 
-20940 
-20941 
-20942 
-20943 
-20944 
-20945 
-20946 
-20947 
-20948 
-20949 
-20950 
-20951 
-20952 
-20953 
-20954 
-20955 
-20956 
-20957 
-20958 
-20959 
-20960 
-20961 
-20962 
-20963 
-20964 
-20965 
-20966 
-20967 
-20968 
-20969 
-20970 
-20971 
-20972 
-20973 
-20974 
-20975 
-20976 
-20977 
-20978 
-20979 
-20980 
-20981 
-20982 
-20983 
-20984 
-20985 
-20986 
-20987 
-20988 
-20989 
-20990 
-20991 
-20992 
-20993 
-20994 
-20995 
-20996 
-20997 
-20998 
-20999 
-21000 
-21001 
-21002 
-21003 
-21004 
-21005 
-21006 
-21007 
-21008 
-21009 
-21010 
-21011 
-21012 
-21013 
-21014 
-21015 
-21016 
-21017 
-21018 
-21019 
-21020 
-21021 
-21022 
-21023 
-21024 
-21025 
-21026 
-21027 
-21028 
-21029 
-21030 
-21031 
-21032 
-21033 
-21034 
-21035 
-21036 
-21037 
-21038 
-21039 
-21040 
-21041 
-21042 
-21043 
-21044 
-21045 
-21046 
-21047 
-21048 
-21049 
-21050 
-21051 
-21052 
-21053 
-21054 
-21055 
-21056 
-21057 
-21058 
-21059 
-21060 
-21061 
-21062 
-21063 
-21064 
-21065 
-21066 
-21067 
-21068 
-21069 
-21070 
-21071 
-21072 
-21073 
-21074 
-21075 
-21076 
-21077 
-21078 
-21079 
-21080 
-21081 
-21082 
-21083 
-21084 
-21085 
-21086 
-21087 
-21088 
-21089 
-21090 
-21091 
-21092 
-21093 
-21094 
-21095 
-21096 
-21097 
-21098 
-21099 
-21100 
-21101 
-21102 
-21103 
-21104 
-21105 
-21106 
-21107 
-21108 
-21109 
-21110 
-21111 
-21112 
-21113 
-21114 
-21115 
-21116 
-21117 
-21118 
-21119 
-21120 
-21121 
-21122 
-21123 
-21124 
-21125 
-21126 
-21127 
-21128 
-21129 
-21130 
-21131 
-21132 
-21133 
-21134 
-21135 
-21136 
-21137 
-21138 
-21139 
-21140 
-21141 
-21142 
-21143 
-21144 
-21145 
-21146 
-21147 
-21148 
-21149 
-21150 
-21151 
-21152 
-21153 
-21154 
-21155 
-21156 
-21157 
-21158 
-21159 
-21160 
-21161 
-21162 
-21163 
-21164 
-21165 
-21166 
-21167 
-21168 
-21169 
-21170 
-21171 
-21172 
-21173 
-21174 
-21175 
-21176 
-21177 
-21178 
-21179 
-21180 
-21181 
-21182 
-21183 
-21184 
-21185 
-21186 
-21187 
-21188 
-21189 
-21190 
-21191 
-21192 
-21193 
-21194 
-21195 
-21196 
-21197 
-21198 
-21199 
-21200 
-21201 
-21202 
-21203 
-21204 
-21205 
-21206 
-21207 
-21208 
-21209 
-21210 
-21211 
-21212 
-21213 
-21214 
-21215 
-21216 
-21217 
-21218 
-21219 
-21220 
-21221 
-21222 
-21223 
-21224 
-21225 
-21226 
-21227 
-21228 
-21229 
-21230 
-21231 
-21232 
-21233 
-21234 
-21235 
-21236 
-21237 
-21238 
-21239 
-21240 
-21241 
-21242 
-21243 
-21244 
-21245 
-21246 
-21247 
-21248 
-21249 
-21250 
-21251 
-21252 
-21253 
-21254 
-21255 
-21256 
-21257 
-21258 
-21259 
-21260 
-21261 
-21262 
-21263 
-21264 
-21265 
-21266 
-21267 
-21268 
-21269 
-21270 
-21271 
-21272 
-21273 
-21274 
-21275 
-21276 
-21277 
-21278 
-21279 
-21280 
-21281 
-21282 
-21283 
-21284 
-21285 
-21286 
-21287 
-21288 
-21289 
-21290 
-21291 
-21292 
-21293 
-21294 
-21295 
-21296 
-21297 
-21298 
-21299 
-21300 
-21301 
-21302 
-21303 
-21304 
-21305 
-21306 
-21307 
-21308 
-21309 
-21310 
-21311 
-21312 
-21313 
-21314 
-21315 
-21316 
-21317 
-21318 
-21319 
-21320 
-21321 
-21322 
-21323 
-21324 
-21325 
-21326 
-21327 
-21328 
-21329 
-21330 
-21331 
-21332 
-21333 
-21334 
-21335 
-21336 
-21337 
-21338 
-21339 
-21340 
-21341 
-21342 
-21343 
-21344 
-21345 
-21346 
-21347 
-21348 
-21349 
-21350 
-21351 
-21352 
-21353 
-21354 
-21355 
-21356 
-21357 
-21358 
-21359 
-21360 
-21361 
-21362 
-21363 
-21364 
-21365 
-21366 
-21367 
-21368 
-21369 
-21370 
-21371 
-21372 
-21373 
-21374 
-21375 
-21376 
-21377 
-21378 
-21379 
-21380 
-21381 
-21382 
-21383 
-21384 
-21385 
-21386 
-21387 
-21388 
-21389 
-21390 
-21391 
-21392 
-21393 
-21394 
-21395 
-21396 
-21397 
-21398 
-21399 
-21400 
-21401 
-21402 
-21403 
-21404 
-21405 
-21406 
-21407 
-21408 
-21409 
-21410 
-21411 
-21412 
-21413 
-21414 
-21415 
-21416 
-21417 
-21418 
-21419 
-21420 
-21421 
-21422 
-21423 
-21424 
-21425 
-21426 
-21427 
-21428 
-21429 
-21430 
-21431 
-21432 
-21433 
-21434 
-21435 
-21436 
-21437 
-21438 
-21439 
-21440 
-21441 
-21442 
-21443 
-21444 
-21445 
-21446 
-21447 
-21448 
-21449 
-21450 
-21451 
-21452 
-21453 
-21454 
-21455 
-21456 
-21457 
-21458 
-21459 
-21460 
-21461 
-21462 
-21463 
-21464 
-21465 
-21466 
-21467 
-21468 
-21469 
-21470 
-21471 
-21472 
-21473 
-21474 
-21475 
-21476 
-21477 
-21478 
-21479 
-21480 
-21481 
-21482 
-21483 
-21484 
-21485 
-21486 
-21487 
-21488 
-21489 
-21490 
-21491 
-21492 
-21493 
-21494 
-21495 
-21496 
-21497 
-21498 
-21499 
-21500 
-21501 
-21502 
-21503 
-21504 
-21505 
-21506 
-21507 
-21508 
-21509 
-21510 
-21511 
-21512 
-21513 
-21514 
-21515 
-21516 
-21517 
-21518 
-21519 
-21520 
-21521 
-21522 
-21523 
-21524 
-21525 
-21526 
-21527 
-21528 
-21529 
-21530 
-21531 
-21532 
-21533 
-21534 
-21535 
-21536 
-21537 
-21538 
-21539 
-21540 
-21541 
-21542 
-21543 
-21544 
-21545 
-21546 
-21547 
-21548 
-21549 
-21550 
-21551 
-21552 
-21553 
-21554 
-21555 
-21556 
-21557 
-21558 
-21559 
-21560 
-21561 
-21562 
-21563 
-21564 
-21565 
-21566 
-21567 
-21568 
-21569 
-21570 
-21571 
-21572 
-21573 
-21574 
-21575 
-21576 
-21577 
-21578 
-21579 
-21580 
-21581 
-21582 
-21583 
-21584 
-21585 
-21586 
-21587 
-21588 
-21589 
-21590 
-21591 
-21592 
-21593 
-21594 
-21595 
-21596 
-21597 
-21598 
-21599 
-21600 
-21601 
-21602 
-21603 
-21604 
-21605 
-21606 
-21607 
-21608 
-21609 
-21610 
-21611 
-21612 
-21613 
-21614 
-21615 
-21616 
-21617 
-21618 
-21619 
-21620 
-21621 
-21622 
-21623 
-21624 
-21625 
-21626 
-21627 
-21628 
-21629 
-21630 
-21631 
-21632 
-21633 
-21634 
-21635 
-21636 
-21637 
-21638 
-21639 
-21640 
-21641 
-21642 
-21643 
-21644 
-21645 
-21646 
-21647 
-21648 
-21649 
-21650 
-21651 
-21652 
-21653 
-21654 
-21655 
-21656 
-21657 
-21658 
-21659 
-21660 
-21661 
-21662 
-21663 
-21664 
-21665 
-21666 
-21667 
-21668 
-21669 
-21670 
-21671 
-21672 
-21673 
-21674 
-21675 
-21676 
-21677 
-21678 
-21679 
-21680 
-21681 
-21682 
-21683 
-21684 
-21685 
-21686 
-21687 
-21688 
-21689 
-21690 
-21691 
-21692 
-21693 
-21694 
-21695 
-21696 
-21697 
-21698 
-21699 
-21700 
-21701 
-21702 
-21703 
-21704 
-21705 
-21706 
-21707 
-21708 
-21709 
-21710 
-21711 
-21712 
-21713 
-21714 
-21715 
-21716 
-21717 
-21718 
-21719 
-21720 
-21721 
-21722 
-21723 
-21724 
-21725 
-21726 
-21727 
-21728 
-21729 
-21730 
-21731 
-21732 
-21733 
-21734 
-21735 
-21736 
-21737 
-21738 
-21739 
-21740 
-21741 
-21742 
-21743 
-21744 
-21745 
-21746 
-21747 
-21748 
-21749 
-21750 
-21751 
-21752 
-21753 
-21754 
-21755 
-21756 
-21757 
-21758 
-21759 
-21760 
-21761 
-21762 
-21763 
-21764 
-21765 
-21766 
-21767 
-21768 
-21769 
-21770 
-21771 
-21772 
-21773 
-21774 
-21775 
-21776 
-21777 
-21778 
-21779 
-21780 
-21781 
-21782 
-21783 
-21784 
-21785 
-21786 
-21787 
-21788 
-21789 
-21790 
-21791 
-21792 
-21793 
-21794 
-21795 
-21796 
-21797 
-21798 
-21799 
-21800 
-21801 
-21802 
-21803 
-21804 
-21805 
-21806 
-21807 
-21808 
-21809 
-21810 
-21811 
-21812 
-21813 
-21814 
-21815 
-21816 
-21817 
-21818 
-21819 
-21820 
-21821 
-21822 
-21823 
-21824 
-21825 
-21826 
-21827 
-21828 
-21829 
-21830 
-21831 
-21832 
-21833 
-21834 
-21835 
-21836 
-21837 
-21838 
-21839 
-21840 
-21841 
-21842 
-21843 
-21844 
-21845 
-21846 
-21847 
-21848 
-21849 
-21850 
-21851 
-21852 
-21853 
-21854 
-21855 
-21856 
-21857 
-21858 
-21859 
-21860 
-21861 
-21862 
-21863 
-21864 
-21865 
-21866 
-21867 
-21868 
-21869 
-21870 
-21871 
-21872 
-21873 
-21874 
-21875 
-21876 
-21877 
-21878 
-21879 
-21880 
-21881 
-21882 
-21883 
-21884 
-21885 
-21886 
-21887 
-21888 
-21889 
-21890 
-21891 
-21892 
-21893 
-21894 
-21895 
-21896 
-21897 
-21898 
-21899 
-21900 
-21901 
-21902 
-21903 
-21904 
-21905 
-21906 
-21907 
-21908 
-21909 
-21910 
-21911 
-21912 
-21913 
-21914 
-21915 
-21916 
-21917 
-21918 
-21919 
-21920 
-21921 
-21922 
-21923 
-21924 
-21925 
-21926 
-21927 
-21928 
-21929 
-21930 
-21931 
-21932 
-21933 
-21934 
-21935 
-21936 
-21937 
-21938 
-21939 
-21940 
-21941 
-21942 
-21943 
-21944 
-21945 
-21946 
-21947 
-21948 
-21949 
-21950 
-21951 
-21952 
-21953 
-21954 
-21955 
-21956 
-21957 
-21958 
-21959 
-21960 
-21961 
-21962 
-21963 
-21964 
-21965 
-21966 
-21967 
-21968 
-21969 
-21970 
-21971 
-21972 
-21973 
-21974 
-21975 
-21976 
-21977 
-21978 
-21979 
-21980 
-21981 
-21982 
-21983 
-21984 
-21985 
-21986 
-21987 
-21988 
-21989 
-21990 
-21991 
-21992 
-21993 
-21994 
-21995 
-21996 
-21997 
-21998 
-21999 
-22000 
-22001 
-22002 
-22003 
-22004 
-22005 
-22006 
-22007 
-22008 
-22009 
-22010 
-22011 
-22012 
-22013 
-22014 
-22015 
-22016 
-22017 
-22018 
-22019 
-22020 
-22021 
-22022 
-22023 
-22024 
-22025 
-22026 
-22027 
-22028 
-22029 
-22030 
-22031 
-22032 
-22033 
-22034 
-22035 
-22036 
-22037 
-22038 
-22039 
-22040 
-22041 
-22042 
-22043 
-22044 
-22045 
-22046 
-22047 
-22048 
-22049 
-22050 
-22051 
-22052 
-22053 
-22054 
-22055 
-22056 
-22057 
-22058 
-22059 
-22060 
-22061 
-22062 
-22063 
-22064 
-22065 
-22066 
-22067 
-22068 
-22069 
-22070 
-22071 
-22072 
-22073 
-22074 
-22075 
-22076 
-22077 
-22078 
-22079 
-22080 
-22081 
-22082 
-22083 
-22084 
-22085 
-22086 
-22087 
-22088 
-22089 
-22090 
-22091 
-22092 
-22093 
-22094 
-22095 
-22096 
-22097 
-22098 
-22099 
-22100 
-22101 
-22102 
-22103 
-22104 
-22105 
-22106 
-22107 
-22108 
-22109 
-22110 
-22111 
-22112 
-22113 
-22114 
-22115 
-22116 
-22117 
-22118 
-22119 
-22120 
-22121 
-22122 
-22123 
-22124 
-22125 
-22126 
-22127 
-22128 
-22129 
-22130 
-22131 
-22132 
-22133 
-22134 
-22135 
-22136 
-22137 
-22138 
-22139 
-22140 
-22141 
-22142 
-22143 
-22144 
-22145 
-22146 
-22147 
-22148 
-22149 
-22150 
-22151 
-22152 
-22153 
-22154 
-22155 
-22156 
-22157 
-22158 
-22159 
-22160 
-22161 
-22162 
-22163 
-22164 
-22165 
-22166 
-22167 
-22168 
-22169 
-22170 
-22171 
-22172 
-22173 
-22174 
-22175 
-22176 
-22177 
-22178 
-22179 
-22180 
-22181 
-22182 
-22183 
-22184 
-22185 
-22186 
-22187 
-22188 
-22189 
-22190 
-22191 
-22192 
-22193 
-22194 
-22195 
-22196 
-22197 
-22198 
-22199 
-22200 
-22201 
-22202 
-22203 
-22204 
-22205 
-22206 
-22207 
-22208 
-22209 
-22210 
-22211 
-22212 
-22213 
-22214 
-22215 
-22216 
-22217 
-22218 
-22219 
-22220 
-22221 
-22222 
-22223 
-22224 
-22225 
-22226 
-22227 
-22228 
-22229 
-22230 
-22231 
-22232 
-22233 
-22234 
-22235 
-22236 
-22237 
-22238 
-22239 
-22240 
-22241 
-22242 
-22243 
-22244 
-22245 
-22246 
-22247 
-22248 
-22249 
-22250 
-22251 
-22252 
-22253 
-22254 
-22255 
-22256 
-22257 
-22258 
-22259 
-22260 
-22261 
-22262 
-22263 
-22264 
-22265 
-22266 
-22267 
-22268 
-22269 
-22270 
-22271 
-22272 
-22273 
-22274 
-22275 
-22276 
-22277 
-22278 
-22279 
-22280 
-22281 
-22282 
-22283 
-22284 
-22285 
-22286 
-22287 
-22288 
-22289 
-22290 
-22291 
-22292 
-22293 
-22294 
-22295 
-22296 
-22297 
-22298 
-22299 
-22300 
-22301 
-22302 
-22303 
-22304 
-22305 
-22306 
-22307 
-22308 
-22309 
-22310 
-22311 
-22312 
-22313 
-22314 
-22315 
-22316 
-22317 
-22318 
-22319 
-22320 
-22321 
-22322 
-22323 
-22324 
-22325 
-22326 
-22327 
-22328 
-22329 
-22330 
-22331 
-22332 
-22333 
-22334 
-22335 
-22336 
-22337 
-22338 
-22339 
-22340 
-22341 
-22342 
-22343 
-22344 
-22345 
-22346 
-22347 
-22348 
-22349 
-22350 
-22351 
-22352 
-22353 
-22354 
-22355 
-22356 
-22357 
-22358 
-22359 
-22360 
-22361 
-22362 
-22363 
-22364 
-22365 
-22366 
-22367 
-22368 
-22369 
-22370 
-22371 
-22372 
-22373 
-22374 
-22375 
-22376 
-22377 
-22378 
-22379 
-22380 
-22381 
-22382 
-22383 
-22384 
-22385 
-22386 
-22387 
-22388 
-22389 
-22390 
-22391 
-22392 
-22393 
-22394 
-22395 
-22396 
-22397 
-22398 
-22399 
-22400 
-22401 
-22402 
-22403 
-22404 
-22405 
-22406 
-22407 
-22408 
-22409 
-22410 
-22411 
-22412 
-22413 
-22414 
-22415 
-22416 
-22417 
-22418 
-22419 
-22420 
-22421 
-22422 
-22423 
-22424 
-22425 
-22426 
-22427 
-22428 
-22429 
-22430 
-22431 
-22432 
-22433 
-22434 
-22435 
-22436 
-22437 
-22438 
-22439 
-22440 
-22441 
-22442 
-22443 
-22444 
-22445 
-22446 
-22447 
-22448 
-22449 
-22450 
-22451 
-22452 
-22453 
-22454 
-22455 
-22456 
-22457 
-22458 
-22459 
-22460 
-22461 
-22462 
-22463 
-22464 
-22465 
-22466 
-22467 
-22468 
-22469 
-22470 
-22471 
-22472 
-22473 
-22474 
-22475 
-22476 
-22477 
-22478 
-22479 
-22480 
-22481 
-22482 
-22483 
-22484 
-22485 
-22486 
-22487 
-22488 
-22489 
-22490 
-22491 
-22492 
-22493 
-22494 
-22495 
-22496 
-22497 
-22498 
-22499 
-22500 
-22501 
-22502 
-22503 
-22504 
-22505 
-22506 
-22507 
-22508 
-22509 
-22510 
-22511 
-22512 
-22513 
-22514 
-22515 
-22516 
-22517 
-22518 
-22519 
-22520 
-22521 
-22522 
-22523 
-22524 
-22525 
-22526 
-22527 
-22528 
-22529 
-22530 
-22531 
-22532 
-22533 
-22534 
-22535 
-22536 
-22537 
-22538 
-22539 
-22540 
-22541 
-22542 
-22543 
-22544 
-22545 
-22546 
-22547 
-22548 
-22549 
-22550 
-22551 
-22552 
-22553 
-22554 
-22555 
-22556 
-22557 
-22558 
-22559 
-22560 
-22561 
-22562 
-22563 
-22564 
-22565 
-22566 
-22567 
-22568 
-22569 
-22570 
-22571 
-22572 
-22573 
-22574 
-22575 
-22576 
-22577 
-22578 
-22579 
-22580 
-22581 
-22582 
-22583 
-22584 
-22585 
-22586 
-22587 
-22588 
-22589 
-22590 
-22591 
-22592 
-22593 
-22594 
-22595 
-22596 
-22597 
-22598 
-22599 
-22600 
-22601 
-22602 
-22603 
-22604 
-22605 
-22606 
-22607 
-22608 
-22609 
-22610 
-22611 
-22612 
-22613 
-22614 
-22615 
-22616 
-22617 
-22618 
-22619 
-22620 
-22621 
-22622 
-22623 
-22624 
-22625 
-22626 
-22627 
-22628 
-22629 
-22630 
-22631 
-22632 
-22633 
-22634 
-22635 
-22636 
-22637 
-22638 
-22639 
-22640 
-22641 
-22642 
-22643 
-22644 
-22645 
-22646 
-22647 
-22648 
-22649 
-22650 
-22651 
-22652 
-22653 
-22654 
-22655 
-22656 
-22657 
-22658 
-22659 
-22660 
-22661 
-22662 
-22663 
-22664 
-22665 
-22666 
-22667 
-22668 
-22669 
-22670 
-22671 
-22672 
-22673 
-22674 
-22675 
-22676 
-22677 
-22678 
-22679 
-22680 
-22681 
-22682 
-22683 
-22684 
-22685 
-22686 
-22687 
-22688 
-22689 
-22690 
-22691 
-22692 
-22693 
-22694 
-22695 
-22696 
-22697 
-22698 
-22699 
-22700 
-22701 
-22702 
-22703 
-22704 
-22705 
-22706 
-22707 
-22708 
-22709 
-22710 
-22711 
-22712 
-22713 
-22714 
-22715 
-22716 
-22717 
-22718 
-22719 
-22720 
-22721 
-22722 
-22723 
-22724 
-22725 
-22726 
-22727 
-22728 
-22729 
-22730 
-22731 
-22732 
-22733 
-22734 
-22735 
-22736 
-22737 
-22738 
-22739 
-22740 
-22741 
-22742 
-22743 
-22744 
-22745 
-22746 
-22747 
-22748 
-22749 
-22750 
-22751 
-22752 
-22753 
-22754 
-22755 
-22756 
-22757 
-22758 
-22759 
-22760 
-22761 
-22762 
-22763 
-22764 
-22765 
-22766 
-22767 
-22768 
-22769 
-22770 
-22771 
-22772 
-22773 
-22774 
-22775 
-22776 
-22777 
-22778 
-22779 
-22780 
-22781 
-22782 
-22783 
-22784 
-22785 
-22786 
-22787 
-22788 
-22789 
-22790 
-22791 
-22792 
-22793 
-22794 
-22795 
-22796 
-22797 
-22798 
-22799 
-22800 
-22801 
-22802 
-22803 
-22804 
-22805 
-22806 
-22807 
-22808 
-22809 
-22810 
-22811 
-22812 
-22813 
-22814 
-22815 
-22816 
-22817 
-22818 
-22819 
-22820 
-22821 
-22822 
-22823 
-22824 
-22825 
-22826 
-22827 
-22828 
-22829 
-22830 
-22831 
-22832 
-22833 
-22834 
-22835 
-22836 
-22837 
-22838 
-22839 
-22840 
-22841 
-22842 
-22843 
-22844 
-22845 
-22846 
-22847 
-22848 
-22849 
-22850 
-22851 
-22852 
-22853 
-22854 
-22855 
-22856 
-22857 
-22858 
-22859 
-22860 
-22861 
-22862 
-22863 
-22864 
-22865 
-22866 
-22867 
-22868 
-22869 
-22870 
-22871 
-22872 
-22873 
-22874 
-22875 
-22876 
-22877 
-22878 
-22879 
-22880 
-22881 
-22882 
-22883 
-22884 
-22885 
-22886 
-22887 
-22888 
-22889 
-22890 
-22891 
-22892 
-22893 
-22894 
-22895 
-22896 
-22897 
-22898 
-22899 
-22900 
-22901 
-22902 
-22903 
-22904 
-22905 
-22906 
-22907 
-22908 
-22909 
-22910 
-22911 
-22912 
-22913 
-22914 
-22915 
-22916 
-22917 
-22918 
-22919 
-22920 
-22921 
-22922 
-22923 
-22924 
-22925 
-22926 
-22927 
-22928 
-22929 
-22930 
-22931 
-22932 
-22933 
-22934 
-22935 
-22936 
-22937 
-22938 
-22939 
-22940 
-22941 
-22942 
-22943 
-22944 
-22945 
-22946 
-22947 
-22948 
-22949 
-22950 
-22951 
-22952 
-22953 
-22954 
-22955 
-22956 
-22957 
-22958 
-22959 
-22960 
-22961 
-22962 
-22963 
-22964 
-22965 
-22966 
-22967 
-22968 
-22969 
-22970 
-22971 
-22972 
-22973 
-22974 
-22975 
-22976 
-22977 
-22978 
-22979 
-22980 
-22981 
-22982 
-22983 
-22984 
-22985 
-22986 
-22987 
-22988 
-22989 
-22990 
-22991 
-22992 
-22993 
-22994 
-22995 
-22996 
-22997 
-22998 
-22999 
-23000 
-23001 
-23002 
-23003 
-23004 
-23005 
-23006 
-23007 
-23008 
-23009 
-23010 
-23011 
-23012 
-23013 
-23014 
-23015 
-23016 
-23017 
-23018 
-23019 
-23020 
-23021 
-23022 
-23023 
-23024 
-23025 
-23026 
-23027 
-23028 
-23029 
-23030 
-23031 
-23032 
-23033 
-23034 
-23035 
-23036 
-23037 
-23038 
-23039 
-23040 
-23041 
-23042 
-23043 
-23044 
-23045 
-23046 
-23047 
-23048 
-23049 
-23050 
-23051 
-23052 
-23053 
-23054 
-23055 
-23056 
-23057 
-23058 
-23059 
-23060 
-23061 
-23062 
-23063 
-23064 
-23065 
-23066 
-23067 
-23068 
-23069 
-23070 
-23071 
-23072 
-23073 
-23074 
-23075 
-23076 
-23077 
-23078 
-23079 
-23080 
-23081 
-23082 
-23083 
-23084 
-23085 
-23086 
-23087 
-23088 
-23089 
-23090 
-23091 
-23092 
-23093 
-23094 
-23095 
-23096 
-23097 
-23098 
-23099 
-23100 
-23101 
-23102 
-23103 
-23104 
-23105 
-23106 
-23107 
-23108 
-23109 
-23110 
-23111 
-23112 
-23113 
-23114 
-23115 
-23116 
-23117 
-23118 
-23119 
-23120 
-23121 
-23122 
-23123 
-23124 
-23125 
-23126 
-23127 
-23128 
-23129 
-23130 
-23131 
-23132 
-23133 
-23134 
-23135 
-23136 
-23137 
-23138 
-23139 
-23140 
-23141 
-23142 
-23143 
-23144 
-23145 
-23146 
-23147 
-23148 
-23149 
-23150 
-23151 
-23152 
-23153 
-23154 
-23155 
-23156 
-23157 
-23158 
-23159 
-23160 
-23161 
-23162 
-23163 
-23164 
-23165 
-23166 
-23167 
-23168 
-23169 
-23170 
-23171 
-23172 
-23173 
-23174 
-23175 
-23176 
-23177 
-23178 
-23179 
-23180 
-23181 
-23182 
-23183 
-23184 
-23185 
-23186 
-23187 
-23188 
-23189 
-23190 
-23191 
-23192 
-23193 
-23194 
-23195 
-23196 
-23197 
-23198 
-23199 
-23200 
-23201 
-23202 
-23203 
-23204 
-23205 
-23206 
-23207 
-23208 
-23209 
-23210 
-23211 
-23212 
-23213 
-23214 
-23215 
-23216 
-23217 
-23218 
-23219 
-23220 
-23221 
-23222 
-23223 
-23224 
-23225 
-23226 
-23227 
-23228 
-23229 
-23230 
-23231 
-23232 
-23233 
-23234 
-23235 
-23236 
-23237 
-23238 
-23239 
-23240 
-23241 
-23242 
-23243 
-23244 
-23245 
-23246 
-23247 
-23248 
-23249 
-23250 
-23251 
-23252 
-23253 
-23254 
-23255 
-23256 
-23257 
-23258 
-23259 
-23260 
-23261 
-23262 
-23263 
-23264 
-23265 
-23266 
-23267 
-23268 
-23269 
-23270 
-23271 
-23272 
-23273 
-23274 
-23275 
-23276 
-23277 
-23278 
-23279 
-23280 
-23281 
-23282 
-23283 
-23284 
-23285 
-23286 
-23287 
-23288 
-23289 
-23290 
-23291 
-23292 
-23293 
-23294 
-23295 
-23296 
-23297 
-23298 
-23299 
-23300 
-23301 
-23302 
-23303 
-23304 
-23305 
-23306 
-23307 
-23308 
-23309 
-23310 
-23311 
-23312 
-23313 
-23314 
-23315 
-23316 
-23317 
-23318 
-23319 
-23320 
-23321 
-23322 
-23323 
-23324 
-23325 
-23326 
-23327 
-23328 
-23329 
-23330 
-23331 
-23332 
-23333 
-23334 
-23335 
-23336 
-23337 
-23338 
-23339 
-23340 
-23341 
-23342 
-23343 
-23344 
-23345 
-23346 
-23347 
-23348 
-23349 
-23350 
-23351 
-23352 
-23353 
-23354 
-23355 
-23356 
-23357 
-23358 
-23359 
-23360 
-23361 
-23362 
-23363 
-23364 
-23365 
-23366 
-23367 
-23368 
-23369 
-23370 
-23371 
-23372 
-23373 
-23374 
-23375 
-23376 
-23377 
-23378 
-23379 
-23380 
-23381 
-23382 
-23383 
-23384 
-23385 
-23386 
-23387 
-23388 
-23389 
-23390 
-23391 
-23392 
-23393 
-23394 
-23395 
-23396 
-23397 
-23398 
-23399 
-23400 
-23401 
-23402 
-23403 
-23404 
-23405 
-23406 
-23407 
-23408 
-23409 
-23410 
-23411 
-23412 
-23413 
-23414 
-23415 
-23416 
-23417 
-23418 
-23419 
-23420 
-23421 
-23422 
-23423 
-23424 
-23425 
-23426 
-23427 
-23428 
-23429 
-23430 
-23431 
-23432 
-23433 
-23434 
-23435 
-23436 
-23437 
-23438 
-23439 
-23440 
-23441 
-23442 
-23443 
-23444 
-23445 
-23446 
-23447 
-23448 
-23449 
-23450 
-23451 
-23452 
-23453 
-23454 
-23455 
-23456 
-23457 
-23458 
-23459 
-23460 
-23461 
-23462 
-23463 
-23464 
-23465 
-23466 
-23467 
-23468 
-23469 
-23470 
-23471 
-23472 
-23473 
-23474 
-23475 
-23476 
-23477 
-23478 
-23479 
-23480 
-23481 
-23482 
-23483 
-23484 
-23485 
-23486 
-23487 
-23488 
-23489 
-23490 
-23491 
-23492 
-23493 
-23494 
-23495 
-23496 
-23497 
-23498 
-23499 
-23500 
-23501 
-23502 
-23503 
-23504 
-23505 
-23506 
-23507 
-23508 
-23509 
-23510 
-23511 
-23512 
-23513 
-23514 
-23515 
-23516 
-23517 
-23518 
-23519 
-23520 
-23521 
-23522 
-23523 
-23524 
-23525 
-23526 
-23527 
-23528 
-23529 
-23530 
-23531 
-23532 
-23533 
-23534 
-23535 
-23536 
-23537 
-23538 
-23539 
-23540 
-23541 
-23542 
-23543 
-23544 
-23545 
-23546 
-23547 
-23548 
-23549 
-23550 
-23551 
-23552 
-23553 
-23554 
-23555 
-23556 
-23557 
-23558 
-23559 
-23560 
-23561 
-23562 
-23563 
-23564 
-23565 
-23566 
-23567 
-23568 
-23569 
-23570 
-23571 
-23572 
-23573 
-23574 
-23575 
-23576 
-23577 
-23578 
-23579 
-23580 
-23581 
-23582 
-23583 
-23584 
-23585 
-23586 
-23587 
-23588 
-23589 
-23590 
-23591 
-23592 
-23593 
-23594 
-23595 
-23596 
-23597 
-23598 
-23599 
-23600 
-23601 
-23602 
-23603 
-23604 
-23605 
-23606 
-23607 
-23608 
-23609 
-23610 
-23611 
-23612 
-23613 
-23614 
-23615 
-23616 
-23617 
-23618 
-23619 
-23620 
-23621 
-23622 
-23623 
-23624 
-23625 
-23626 
-23627 
-23628 
-23629 
-23630 
-23631 
-23632 
-23633 
-23634 
-23635 
-23636 
-23637 
-23638 
-23639 
-23640 
-23641 
-23642 
-23643 
-23644 
-23645 
-23646 
-23647 
-23648 
-23649 
-23650 
-23651 
-23652 
-23653 
-23654 
-23655 
-23656 
-23657 
-23658 
-23659 
-23660 
-23661 
-23662 
-23663 
-23664 
-23665 
-23666 
-23667 
-23668 
-23669 
-23670 
-23671 
-23672 
-23673 
-23674 
-23675 
-23676 
-23677 
-23678 
-23679 
-23680 
-23681 
-23682 
-23683 
-23684 
-23685 
-23686 
-23687 
-23688 
-23689 
-23690 
-23691 
-23692 
-23693 
-23694 
-23695 
-23696 
-23697 
-23698 
-23699 
-23700 
-23701 
-23702 
-23703 
-23704 
-23705 
-23706 
-23707 
-23708 
-23709 
-23710 
-23711 
-23712 
-23713 
-23714 
-23715 
-23716 
-23717 
-23718 
-23719 
-23720 
-23721 
-23722 
-23723 
-23724 
-23725 
-23726 
-23727 
-23728 
-23729 
-23730 
-23731 
-23732 
-23733 
-23734 
-23735 
-23736 
-23737 
-23738 
-23739 
-23740 
-23741 
-23742 
-23743 
-23744 
-23745 
-23746 
-23747 
-23748 
-23749 
-23750 
-23751 
-23752 
-23753 
-23754 
-23755 
-23756 
-23757 
-23758 
-23759 
-23760 
-23761 
-23762 
-23763 
-23764 
-23765 
-23766 
-23767 
-23768 
-23769 
-23770 
-23771 
-23772 
-23773 
-23774 
-23775 
-23776 
-23777 
-23778 
-23779 
-23780 
-23781 
-23782 
-23783 
-23784 
-23785 
-23786 
-23787 
-23788 
-23789 
-23790 
-23791 
-23792 
-23793 
-23794 
-23795 
-23796 
-23797 
-23798 
-23799 
-23800 
-23801 
-23802 
-23803 
-23804 
-23805 
-23806 
-23807 
-23808 
-23809 
-23810 
-23811 
-23812 
-23813 
-23814 
-23815 
-23816 
-23817 
-23818 
-23819 
-23820 
-23821 
-23822 
-23823 
-23824 
-23825 
-23826 
-23827 
-23828 
-23829 
-23830 
-23831 
-23832 
-23833 
-23834 
-23835 
-23836 
-23837 
-23838 
-23839 
-23840 
-23841 
-23842 
-23843 
-23844 
-23845 
-23846 
-23847 
-23848 
-23849 
-23850 
-23851 
-23852 
-23853 
-23854 
-23855 
-23856 
-23857 
-23858 
-23859 
-23860 
-23861 
-23862 
-23863 
-23864 
-23865 
-23866 
-23867 
-23868 
-23869 
-23870 
-23871 
-23872 
-23873 
-23874 
-23875 
-23876 
-23877 
-23878 
-23879 
-23880 
-23881 
-23882 
-23883 
-23884 
-23885 
-23886 
-23887 
-23888 
-23889 
-23890 
-23891 
-23892 
-23893 
-23894 
-23895 
-23896 
-23897 
-23898 
-23899 
-23900 
-23901 
-23902 
-23903 
-23904 
-23905 
-23906 
-23907 
-23908 
-23909 
-23910 
-23911 
-23912 
-23913 
-23914 
-23915 
-23916 
-23917 
-23918 
-23919 
-23920 
-23921 
-23922 
-23923 
-23924 
-23925 
-23926 
-23927 
-23928 
-23929 
-23930 
-23931 
-23932 
-23933 
-23934 
-23935 
-23936 
-23937 
-23938 
-23939 
-23940 
-23941 
-23942 
-23943 
-23944 
-23945 
-23946 
-23947 
-23948 
-23949 
-23950 
-23951 
-23952 
-23953 
-23954 
-23955 
-23956 
-23957 
-23958 
-23959 
-23960 
-23961 
-23962 
-23963 
-23964 
-23965 
-23966 
-23967 
-23968 
-23969 
-23970 
-23971 
-23972 
-23973 
-23974 
-23975 
-23976 
-23977 
-23978 
-23979 
-23980 
-23981 
-23982 
-23983 
-23984 
-23985 
-23986 
-23987 
-23988 
-23989 
-23990 
-23991 
-23992 
-23993 
-23994 
-23995 
-23996 
-23997 
-23998 
-23999 
-24000 
-24001 
-24002 
-24003 
-24004 
-24005 
-24006 
-24007 
-24008 
-24009 
-24010 
-24011 
-24012 
-24013 
-24014 
-24015 
-24016 
-24017 
-24018 
-24019 
-24020 
-24021 
-24022 
-24023 
-24024 
-24025 
-24026 
-24027 
-24028 
-24029 
-24030 
-24031 
-24032 
-24033 
-24034 
-24035 
-24036 
-24037 
-24038 
-24039 
-24040 
-24041 
-24042 
-24043 
-24044 
-24045 
-24046 
-24047 
-24048 
-24049 
-24050 
-24051 
-24052 
-24053 
-24054 
-24055 
-24056 
-24057 
-24058 
-24059 
-24060 
-24061 
-24062 
-24063 
-24064 
-24065 
-24066 
-24067 
-24068 
-24069 
-24070 
-24071 
-24072 
-24073 
-24074 
-24075 
-24076 
-24077 
-24078 
-24079 
-24080 
-24081 
-24082 
-24083 
-24084 
-24085 
-24086 
-24087 
-24088 
-24089 
-24090 
-24091 
-24092 
-24093 
-24094 
-24095 
-24096 
-24097 
-24098 
-24099 
-24100 
-24101 
-24102 
-24103 
-24104 
-24105 
-24106 
-24107 
-24108 
-24109 
-24110 
-24111 
-24112 
-24113 
-24114 
-24115 
-24116 
-24117 
-24118 
-24119 
-24120 
-24121 
-24122 
-24123 
-24124 
-24125 
-24126 
-24127 
-24128 
-24129 
-24130 
-24131 
-24132 
-24133 
-24134 
-24135 
-24136 
-24137 
-24138 
-24139 
-24140 
-24141 
-24142 
-24143 
-24144 
-24145 
-24146 
-24147 
-24148 
-24149 
-24150 
-24151 
-24152 
-24153 
-24154 
-24155 
-24156 
-24157 
-24158 
-24159 
-24160 
-24161 
-24162 
-24163 
-24164 
-24165 
-24166 
-24167 
-24168 
-24169 
-24170 
-24171 
-24172 
-24173 
-24174 
-24175 
-24176 
-24177 
-24178 
-24179 
-24180 
-24181 
-24182 
-24183 
-24184 
-24185 
-24186 
-24187 
-24188 
-24189 
-24190 
-24191 
-24192 
-24193 
-24194 
-24195 
-24196 
-24197 
-24198 
-24199 
-24200 
-24201 
-24202 
-24203 
-24204 
-24205 
-24206 
-24207 
-24208 
-24209 
-24210 
-24211 
-24212 
-24213 
-24214 
-24215 
-24216 
-24217 
-24218 
-24219 
-24220 
-24221 
-24222 
-24223 
-24224 
-24225 
-24226 
-24227 
-24228 
-24229 
-24230 
-24231 
-24232 
-24233 
-24234 
-24235 
-24236 
-24237 
-24238 
-24239 
-24240 
-24241 
-24242 
-24243 
-24244 
-24245 
-24246 
-24247 
-24248 
-24249 
-24250 
-24251 
-24252 
-24253 
-24254 
-24255 
-24256 
-24257 
-24258 
-24259 
-24260 
-24261 
-24262 
-24263 
-24264 
-24265 
-24266 
-24267 
-24268 
-24269 
-24270 
-24271 
-24272 
-24273 
-24274 
-24275 
-24276 
-24277 
-24278 
-24279 
-24280 
-24281 
-24282 
-24283 
-24284 
-24285 
-24286 
-24287 
-24288 
-24289 
-24290 
-24291 
-24292 
-24293 
-24294 
-24295 
-24296 
-24297 
-24298 
-24299 
-24300 
-24301 
-24302 
-24303 
-24304 
-24305 
-24306 
-24307 
-24308 
-24309 
-24310 
-24311 
-24312 
-24313 
-24314 
-24315 
-24316 
-24317 
-24318 
-24319 
-24320 
-24321 
-24322 
-24323 
-24324 
-24325 
-24326 
-24327 
-24328 
-24329 
-24330 
-24331 
-24332 
-24333 
-24334 
-24335 
-24336 
-24337 
-24338 
-24339 
-24340 
-24341 
-24342 
-24343 
-24344 
-24345 
-24346 
-24347 
-24348 
-24349 
-24350 
-24351 
-24352 
-24353 
-24354 
-24355 
-24356 
-24357 
-24358 
-24359 
-24360 
-24361 
-24362 
-24363 
-24364 
-24365 
-24366 
-24367 
-24368 
-24369 
-24370 
-24371 
-24372 
-24373 
-24374 
-24375 
-24376 
-24377 
-24378 
-24379 
-24380 
-24381 
-24382 
-24383 
-24384 
-24385 
-24386 
-24387 
-24388 
-24389 
-24390 
-24391 
-24392 
-24393 
-24394 
-24395 
-24396 
-24397 
-24398 
-24399 
-24400 
-24401 
-24402 
-24403 
-24404 
-24405 
-24406 
-24407 
-24408 
-24409 
-24410 
-24411 
-24412 
-24413 
-24414 
-24415 
-24416 
-24417 
-24418 
-24419 
-24420 
-24421 
-24422 
-24423 
-24424 
-24425 
-24426 
-24427 
-24428 
-24429 
-24430 
-24431 
-24432 
-24433 
-24434 
-24435 
-24436 
-24437 
-24438 
-24439 
-24440 
-24441 
-24442 
-24443 
-24444 
-24445 
-24446 
-24447 
-24448 
-24449 
-24450 
-24451 
-24452 
-24453 
-24454 
-24455 
-24456 
-24457 
-24458 
-24459 
-24460 
-24461 
-24462 
-24463 
-24464 
-24465 
-24466 
-24467 
-24468 
-24469 
-24470 
-24471 
-24472 
-24473 
-24474 
-24475 
-24476 
-24477 
-24478 
-24479 
-24480 
-24481 
-24482 
-24483 
-24484 
-24485 
-24486 
-24487 
-24488 
-24489 
-24490 
-24491 
-24492 
-24493 
-24494 
-24495 
-24496 
-24497 
-24498 
-24499 
-24500 
-24501 
-24502 
-24503 
-24504 
-24505 
-24506 
-24507 
-24508 
-24509 
-24510 
-24511 
-24512 
-24513 
-24514 
-24515 
-24516 
-24517 
-24518 
-24519 
-24520 
-24521 
-24522 
-24523 
-24524 
-24525 
-24526 
-24527 
-24528 
-24529 
-24530 
-24531 
-24532 
-24533 
-24534 
-24535 
-24536 
-24537 
-24538 
-24539 
-24540 
-24541 
-24542 
-24543 
-24544 
-24545 
-24546 
-24547 
-24548 
-24549 
-24550 
-24551 
-24552 
-24553 
-24554 
-24555 
-24556 
-24557 
-24558 
-24559 
-24560 
-24561 
-24562 
-24563 
-24564 
-24565 
-24566 
-24567 
-24568 
-24569 
-24570 
-24571 
-24572 
-24573 
-24574 
-24575 
-24576 
-24577 
-24578 
-24579 
-24580 
-24581 
-24582 
-24583 
-24584 
-24585 
-24586 
-24587 
-24588 
-24589 
-24590 
-24591 
-24592 
-24593 
-24594 
-24595 
-24596 
-24597 
-24598 
-24599 
-24600 
-24601 
-24602 
-24603 
-24604 
-24605 
-24606 
-24607 
-24608 
-24609 
-24610 
-24611 
-24612 
-24613 
-24614 
-24615 
-24616 
-24617 
-24618 
-24619 
-24620 
-24621 
-24622 
-24623 
-24624 
-24625 
-24626 
-24627 
-24628 
-24629 
-24630 
-24631 
-24632 
-24633 
-24634 
-24635 
-24636 
-24637 
-24638 
-24639 
-24640 
-24641 
-24642 
-24643 
-24644 
-24645 
-24646 
-24647 
-24648 
-24649 
-24650 
-24651 
-24652 
-24653 
-24654 
-24655 
-24656 
-24657 
-24658 
-24659 
-24660 
-24661 
-24662 
-24663 
-24664 
-24665 
-24666 
-24667 
-24668 
-24669 
-24670 
-24671 
-24672 
-24673 
-24674 
-24675 
-24676 
-24677 
-24678 
-24679 
-24680 
-24681 
-24682 
-24683 
-24684 
-24685 
-24686 
-24687 
-24688 
-24689 
-24690 
-24691 
-24692 
-24693 
-24694 
-24695 
-24696 
-24697 
-24698 
-24699 
-24700 
-24701 
-24702 
-24703 
-24704 
-24705 
-24706 
-24707 
-24708 
-24709 
-24710 
-24711 
-24712 
-24713 
-24714 
-24715 
-24716 
-24717 
-24718 
-24719 
-24720 
-24721 
-24722 
-24723 
-24724 
-24725 
-24726 
-24727 
-24728 
-24729 
-24730 
-24731 
-24732 
-24733 
-24734 
-24735 
-24736 
-24737 
-24738 
-24739 
-24740 
-24741 
-24742 
-24743 
-24744 
-24745 
-24746 
-24747 
-24748 
-24749 
-24750 
-24751 
-24752 
-24753 
-24754 
-24755 
-24756 
-24757 
-24758 
-24759 
-24760 
-24761 
-24762 
-24763 
-24764 
-24765 
-24766 
-24767 
-24768 
-24769 
-24770 
-24771 
-24772 
-24773 
-24774 
-24775 
-24776 
-24777 
-24778 
-24779 
-24780 
-24781 
-24782 
-24783 
-24784 
-24785 
-24786 
-24787 
-24788 
-24789 
-24790 
-24791 
-24792 
-24793 
-24794 
-24795 
-24796 
-24797 
-24798 
-24799 
-24800 
-24801 
-24802 
-24803 
-24804 
-24805 
-24806 
-24807 
-24808 
-24809 
-24810 
-24811 
-24812 
-24813 
-24814 
-24815 
-24816 
-24817 
-24818 
-24819 
-24820 
-24821 
-24822 
-24823 
-24824 
-24825 
-24826 
-24827 
-24828 
-24829 
-24830 
-24831 
-24832 
-24833 
-24834 
-24835 
-24836 
-24837 
-24838 
-24839 
-24840 
-24841 
-24842 
-24843 
-24844 
-24845 
-24846 
-24847 
-24848 
-24849 
-24850 
-24851 
-24852 
-24853 
-24854 
-24855 
-24856 
-24857 
-24858 
-24859 
-24860 
-24861 
-24862 
-24863 
-24864 
-24865 
-24866 
-24867 
-24868 
-24869 
-24870 
-24871 
-24872 
-24873 
-24874 
-24875 
-24876 
-24877 
-24878 
-24879 
-24880 
-24881 
-24882 
-24883 
-24884 
-24885 
-24886 
-24887 
-24888 
-24889 
-24890 
-24891 
-24892 
-24893 
-24894 
-24895 
-24896 
-24897 
-24898 
-24899 
-24900 
-24901 
-24902 
-24903 
-24904 
-24905 
-24906 
-24907 
-24908 
-24909 
-24910 
-24911 
-24912 
-24913 
-24914 
-24915 
-24916 
-24917 
-24918 
-24919 
-24920 
-24921 
-24922 
-24923 
-24924 
-24925 
-24926 
-24927 
-24928 
-24929 
-24930 
-24931 
-24932 
-24933 
-24934 
-24935 
-24936 
-24937 
-24938 
-24939 
-24940 
-24941 
-24942 
-24943 
-24944 
-24945 
-24946 
-24947 
-24948 
-24949 
-24950 
-24951 
-24952 
-24953 
-24954 
-24955 
-24956 
-24957 
-24958 
-24959 
-24960 
-24961 
-24962 
-24963 
-24964 
-24965 
-24966 
-24967 
-24968 
-24969 
-24970 
-24971 
-24972 
-24973 
-24974 
-24975 
-24976 
-24977 
-24978 
-24979 
-24980 
-24981 
-24982 
-24983 
-24984 
-24985 
-24986 
-24987 
-24988 
-24989 
-24990 
-24991 
-24992 
-24993 
-24994 
-24995 
-24996 
-24997 
-24998 
-24999 
-25000 
-25001 
-25002 
-25003 
-25004 
-25005 
-25006 
-25007 
-25008 
-25009 
-25010 
-25011 
-25012 
-25013 
-25014 
-25015 
-25016 
-25017 
-25018 
-25019 
-25020 
-25021 
-25022 
-25023 
-25024 
-25025 
-25026 
-25027 
-25028 
-25029 
-25030 
-25031 
-25032 
-25033 
-25034 
-25035 
-25036 
-25037 
-25038 
-25039 
-25040 
-25041 
-25042 
-25043 
-25044 
-25045 
-25046 
-25047 
-25048 
-25049 
-25050 
-25051 
-25052 
-25053 
-25054 
-25055 
-25056 
-25057 
-25058 
-25059 
-25060 
-25061 
-25062 
-25063 
-25064 
-25065 
-25066 
-25067 
-25068 
-25069 
-25070 
-25071 
-25072 
-25073 
-25074 
-25075 
-25076 
-25077 
-25078 
-25079 
-25080 
-25081 
-25082 
-25083 
-25084 
-25085 
-25086 
-25087 
-25088 
-25089 
-25090 
-25091 
-25092 
-25093 
-25094 
-25095 
-25096 
-25097 
-25098 
-25099 
-25100 
-25101 
-25102 
-25103 
-25104 
-25105 
-25106 
-25107 
-25108 
-25109 
-25110 
-25111 
-25112 
-25113 
-25114 
-25115 
-25116 
-25117 
-25118 
-25119 
-25120 
-25121 
-25122 
-25123 
-25124 
-25125 
-25126 
-25127 
-25128 
-25129 
-25130 
-25131 
-25132 
-25133 
-25134 
-25135 
-25136 
-25137 
-25138 
-25139 
-25140 
-25141 
-25142 
-25143 
-25144 
-25145 
-25146 
-25147 
-25148 
-25149 
-25150 
-25151 
-25152 
-25153 
-25154 
-25155 
-25156 
-25157 
-25158 
-25159 
-25160 
-25161 
-25162 
-25163 
-25164 
-25165 
-25166 
-25167 
-25168 
-25169 
-25170 
-25171 
-25172 
-25173 
-25174 
-25175 
-25176 
-25177 
-25178 
-25179 
-25180 
-25181 
-25182 
-25183 
-25184 
-25185 
-25186 
-25187 
-25188 
-25189 
-25190 
-25191 
-25192 
-25193 
-25194 
-25195 
-25196 
-25197 
-25198 
-25199 
-25200 
-25201 
-25202 
-25203 
-25204 
-25205 
-25206 
-25207 
-25208 
-25209 
-25210 
-25211 
-25212 
-25213 
-25214 
-25215 
-25216 
-25217 
-25218 
-25219 
-25220 
-25221 
-25222 
-25223 
-25224 
-25225 
-25226 
-25227 
-25228 
-25229 
-25230 
-25231 
-25232 
-25233 
-25234 
-25235 
-25236 
-25237 
-25238 
-25239 
-25240 
-25241 
-25242 
-25243 
-25244 
-25245 
-25246 
-25247 
-25248 
-25249 
-25250 
-25251 
-25252 
-25253 
-25254 
-25255 
-25256 
-25257 
-25258 
-25259 
-25260 
-25261 
-25262 
-25263 
-25264 
-25265 
-25266 
-25267 
-25268 
-25269 
-25270 
-25271 
-25272 
-25273 
-25274 
-25275 
-25276 
-25277 
-25278 
-25279 
-25280 
-25281 
-25282 
-25283 
-25284 
-25285 
-25286 
-25287 
-25288 
-25289 
-25290 
-25291 
-25292 
-25293 
-25294 
-25295 
-25296 
-25297 
-25298 
-25299 
-25300 
-25301 
-25302 
-25303 
-25304 
-25305 
-25306 
-25307 
-25308 
-25309 
-25310 
-25311 
-25312 
-25313 
-25314 
-25315 
-25316 
-25317 
-25318 
-25319 
-25320 
-25321 
-25322 
-25323 
-25324 
-25325 
-25326 
-25327 
-25328 
-25329 
-25330 
-25331 
-25332 
-25333 
-25334 
-25335 
-25336 
-25337 
-25338 
-25339 
-25340 
-25341 
-25342 
-25343 
-25344 
-25345 
-25346 
-25347 
-25348 
-25349 
-25350 
-25351 
-25352 
-25353 
-25354 
-25355 
-25356 
-25357 
-25358 
-25359 
-25360 
-25361 
-25362 
-25363 
-25364 
-25365 
-25366 
-25367 
-25368 
-25369 
-25370 
-25371 
-25372 
-25373 
-25374 
-25375 
-25376 
-25377 
-25378 
-25379 
-25380 
-25381 
-25382 
-25383 
-25384 
-25385 
-25386 
-25387 
-25388 
-25389 
-25390 
-25391 
-25392 
-25393 
-25394 
-25395 
-25396 
-25397 
-25398 
-25399 
-25400 
-25401 
-25402 
-25403 
-25404 
-25405 
-25406 
-25407 
-25408 
-25409 
-25410 
-25411 
-25412 
-25413 
-25414 
-25415 
-25416 
-25417 
-25418 
-25419 
-25420 
-25421 
-25422 
-25423 
-25424 
-25425 
-25426 
-25427 
-25428 
-25429 
-25430 
-25431 
-25432 
-25433 
-25434 
-25435 
-25436 
-25437 
-25438 
-25439 
-25440 
-25441 
-25442 
-25443 
-25444 
-25445 
-25446 
-25447 
-25448 
-25449 
-25450 
-25451 
-25452 
-25453 
-25454 
-25455 
-25456 
-25457 
-25458 
-25459 
-25460 
-25461 
-25462 
-25463 
-25464 
-25465 
-25466 
-25467 
-25468 
-25469 
-25470 
-25471 
-25472 
-25473 
-25474 
-25475 
-25476 
-25477 
-25478 
-25479 
-25480 
-25481 
-25482 
-25483 
-25484 
-25485 
-25486 
-25487 
-25488 
-25489 
-25490 
-25491 
-25492 
-25493 
-25494 
-25495 
-25496 
-25497 
-25498 
-25499 
-25500 
-25501 
-25502 
-25503 
-25504 
-25505 
-25506 
-25507 
-25508 
-25509 
-25510 
-25511 
-25512 
-25513 
-25514 
-25515 
-25516 
-25517 
-25518 
-25519 
-25520 
-25521 
-25522 
-25523 
-25524 
-25525 
-25526 
-25527 
-25528 
-25529 
-25530 
-25531 
-25532 
-25533 
-25534 
-25535 
-25536 
-25537 
-25538 
-25539 
-25540 
-25541 
-25542 
-25543 
-25544 
-25545 
-25546 
-25547 
-25548 
-25549 
-25550 
-25551 
-25552 
-25553 
-25554 
-25555 
-25556 
-25557 
-25558 
-25559 
-25560 
-25561 
-25562 
-25563 
-25564 
-25565 
-25566 
-25567 
-25568 
-25569 
-25570 
-25571 
-25572 
-25573 
-25574 
-25575 
-25576 
-25577 
-25578 
-25579 
-25580 
-25581 
-25582 
-25583 
-25584 
-25585 
-25586 
-25587 
-25588 
-25589 
-25590 
-25591 
-25592 
-25593 
-25594 
-25595 
-25596 
-25597 
-25598 
-25599 
-25600 
-25601 
-25602 
-25603 
-25604 
-25605 
-25606 
-25607 
-25608 
-25609 
-25610 
-25611 
-25612 
-25613 
-25614 
-25615 
-25616 
-25617 
-25618 
-25619 
-25620 
-25621 
-25622 
-25623 
-25624 
-25625 
-25626 
-25627 
-25628 
-25629 
-25630 
-25631 
-25632 
-25633 
-25634 
-25635 
-25636 
-25637 
-25638 
-25639 
-25640 
-25641 
-25642 
-25643 
-25644 
-25645 
-25646 
-25647 
-25648 
-25649 
-25650 
-25651 
-25652 
-25653 
-25654 
-25655 
-25656 
-25657 
-25658 
-25659 
-25660 
-25661 
-25662 
-25663 
-25664 
-25665 
-25666 
-25667 
-25668 
-25669 
-25670 
-25671 
-25672 
-25673 
-25674 
-25675 
-25676 
-25677 
-25678 
-25679 
-25680 
-25681 
-25682 
-25683 
-25684 
-25685 
-25686 
-25687 
-25688 
-25689 
-25690 
-25691 
-25692 
-25693 
-25694 
-25695 
-25696 
-25697 
-25698 
-25699 
-25700 
-25701 
-25702 
-25703 
-25704 
-25705 
-25706 
-25707 
-25708 
-25709 
-25710 
-25711 
-25712 
-25713 
-25714 
-25715 
-25716 
-25717 
-25718 
-25719 
-25720 
-25721 
-25722 
-25723 
-25724 
-25725 
-25726 
-25727 
-25728 
-25729 
-25730 
-25731 
-25732 
-25733 
-25734 
-25735 
-25736 
-25737 
-25738 
-25739 
-25740 
-25741 
-25742 
-25743 
-25744 
-25745 
-25746 
-25747 
-25748 
-25749 
-25750 
-25751 
-25752 
-25753 
-25754 
-25755 
-25756 
-25757 
-25758 
-25759 
-25760 
-25761 
-25762 
-25763 
-25764 
-25765 
-25766 
-25767 
-25768 
-25769 
-25770 
-25771 
-25772 
-25773 
-25774 
-25775 
-25776 
-25777 
-25778 
-25779 
-25780 
-25781 
-25782 
-25783 
-25784 
-25785 
-25786 
-25787 
-25788 
-25789 
-25790 
-25791 
-25792 
-25793 
-25794 
-25795 
-25796 
-25797 
-25798 
-25799 
-25800 
-25801 
-25802 
-25803 
-25804 
-25805 
-25806 
-25807 
-25808 
-25809 
-25810 
-25811 
-25812 
-25813 
-25814 
-25815 
-25816 
-25817 
-25818 
-25819 
-25820 
-25821 
-25822 
-25823 
-25824 
-25825 
-25826 
-25827 
-25828 
-25829 
-25830 
-25831 
-25832 
-25833 
-25834 
-25835 
-25836 
-25837 
-25838 
-25839 
-25840 
-25841 
-25842 
-25843 
-25844 
-25845 
-25846 
-25847 
-25848 
-25849 
-25850 
-25851 
-25852 
-25853 
-25854 
-25855 
-25856 
-25857 
-25858 
-25859 
-25860 
-25861 
-25862 
-25863 
-25864 
-25865 
-25866 
-25867 
-25868 
-25869 
-25870 
-25871 
-25872 
-25873 
-25874 
-25875 
-25876 
-25877 
-25878 
-25879 
-25880 
-25881 
-25882 
-25883 
-25884 
-25885 
-25886 
-25887 
-25888 
-25889 
-25890 
-25891 
-25892 
-25893 
-25894 
-25895 
-25896 
-25897 
-25898 
-25899 
-25900 
-25901 
-25902 
-25903 
-25904 
-25905 
-25906 
-25907 
-25908 
-25909 
-25910 
-25911 
-25912 
-25913 
-25914 
-25915 
-25916 
-25917 
-25918 
-25919 
-25920 
-25921 
-25922 
-25923 
-25924 
-25925 
-25926 
-25927 
-25928 
-25929 
-25930 
-25931 
-25932 
-25933 
-25934 
-25935 
-25936 
-25937 
-25938 
-25939 
-25940 
-25941 
-25942 
-25943 
-25944 
-25945 
-25946 
-25947 
-25948 
-25949 
-25950 
-25951 
-25952 
-25953 
-25954 
-25955 
-25956 
-25957 
-25958 
-25959 
-25960 
-25961 
-25962 
-25963 
-25964 
-25965 
-25966 
-25967 
-25968 
-25969 
-25970 
-25971 
-25972 
-25973 
-25974 
-25975 
-25976 
-25977 
-25978 
-25979 
-25980 
-25981 
-25982 
-25983 
-25984 
-25985 
-25986 
-25987 
-25988 
-25989 
-25990 
-25991 
-25992 
-25993 
-25994 
-25995 
-25996 
-25997 
-25998 
-25999 
-26000 
-26001 
-26002 
-26003 
-26004 
-26005 
-26006 
-26007 
-26008 
-26009 
-26010 
-26011 
-26012 
-26013 
-26014 
-26015 
-26016 
-26017 
-26018 
-26019 
-26020 
-26021 
-26022 
-26023 
-26024 
-26025 
-26026 
-26027 
-26028 
-26029 
-26030 
-26031 
-26032 
-26033 
-26034 
-26035 
-26036 
-26037 
-26038 
-26039 
-26040 
-26041 
-26042 
-26043 
-26044 
-26045 
-26046 
-26047 
-26048 
-26049 
-26050 
-26051 
-26052 
-26053 
-26054 
-26055 
-26056 
-26057 
-26058 
-26059 
-26060 
-26061 
-26062 
-26063 
-26064 
-26065 
-26066 
-26067 
-26068 
-26069 
-26070 
-26071 
-26072 
-26073 
-26074 
-26075 
-26076 
-26077 
-26078 
-26079 
-26080 
-26081 
-26082 
-26083 
-26084 
-26085 
-26086 
-26087 
-26088 
-26089 
-26090 
-26091 
-26092 
-26093 
-26094 
-26095 
-26096 
-26097 
-26098 
-26099 
-26100 
-26101 
-26102 
-26103 
-26104 
-26105 
-26106 
-26107 
-26108 
-26109 
-26110 
-26111 
-26112 
-26113 
-26114 
-26115 
-26116 
-26117 
-26118 
-26119 
-26120 
-26121 
-26122 
-26123 
-26124 
-26125 
-26126 
-26127 
-26128 
-26129 
-26130 
-26131 
-26132 
-26133 
-26134 
-26135 
-26136 
-26137 
-26138 
-26139 
-26140 
-26141 
-26142 
-26143 
-26144 
-26145 
-26146 
-26147 
-26148 
-26149 
-26150 
-26151 
-26152 
-26153 
-26154 
-26155 
-26156 
-26157 
-26158 
-26159 
-26160 
-26161 
-26162 
-26163 
-26164 
-26165 
-26166 
-26167 
-26168 
-26169 
-26170 
-26171 
-26172 
-26173 
-26174 
-26175 
-26176 
-26177 
-26178 
-26179 
-26180 
-26181 
-26182 
-26183 
-26184 
-26185 
-26186 
-26187 
-26188 
-26189 
-26190 
-26191 
-26192 
-26193 
-26194 
-26195 
-26196 
-26197 
-26198 
-26199 
-26200 
-26201 
-26202 
-26203 
-26204 
-26205 
-26206 
-26207 
-26208 
-26209 
-26210 
-26211 
-26212 
-26213 
-26214 
-26215 
-26216 
-26217 
-26218 
-26219 
-26220 
-26221 
-26222 
-26223 
-26224 
-26225 
-26226 
-26227 
-26228 
-26229 
-26230 
-26231 
-26232 
-26233 
-26234 
-26235 
-26236 
-26237 
-26238 
-26239 
-26240 
-26241 
-26242 
-26243 
-26244 
-26245 
-26246 
-26247 
-26248 
-26249 
-26250 
-26251 
-26252 
-26253 
-26254 
-26255 
-26256 
-26257 
-26258 
-26259 
-26260 
-26261 
-26262 
-26263 
-26264 
-26265 
-26266 
-26267 
-26268 
-26269 
-26270 
-26271 
-26272 
-26273 
-26274 
-26275 
-26276 
-26277 
-26278 
-26279 
-26280 
-26281 
-26282 
-26283 
-26284 
-26285 
-26286 
-26287 
-26288 
-26289 
-26290 
-26291 
-26292 
-26293 
-26294 
-26295 
-26296 
-26297 
-26298 
-26299 
-26300 
-26301 
-26302 
-26303 
-26304 
-26305 
-26306 
-26307 
-26308 
-26309 
-26310 
-26311 
-26312 
-26313 
-26314 
-26315 
-26316 
-26317 
-26318 
-26319 
-26320 
-26321 
-26322 
-26323 
-26324 
-26325 
-26326 
-26327 
-26328 
-26329 
-26330 
-26331 
-26332 
-26333 
-26334 
-26335 
-26336 
-26337 
-26338 
-26339 
-26340 
-26341 
-26342 
-26343 
-26344 
-26345 
-26346 
-26347 
-26348 
-26349 
-26350 
-26351 
-26352 
-26353 
-26354 
-26355 
-26356 
-26357 
-26358 
-26359 
-26360 
-26361 
-26362 
-26363 
-26364 
-26365 
-26366 
-26367 
-26368 
-26369 
-26370 
-26371 
-26372 
-26373 
-26374 
-26375 
-26376 
-26377 
-26378 
-26379 
-26380 
-26381 
-26382 
-26383 
-26384 
-26385 
-26386 
-26387 
-26388 
-26389 
-26390 
-26391 
-26392 
-26393 
-26394 
-26395 
-26396 
-26397 
-26398 
-26399 
-26400 
-26401 
-26402 
-26403 
-26404 
-26405 
-26406 
-26407 
-26408 
-26409 
-26410 
-26411 
-26412 
-26413 
-26414 
-26415 
-26416 
-26417 
-26418 
-26419 
-26420 
-26421 
-26422 
-26423 
-26424 
-26425 
-26426 
-26427 
-26428 
-26429 
-26430 
-26431 
-26432 
-26433 
-26434 
-26435 
-26436 
-26437 
-26438 
-26439 
-26440 
-26441 
-26442 
-26443 
-26444 
-26445 
-26446 
-26447 
-26448 
-26449 
-26450 
-26451 
-26452 
-26453 
-26454 
-26455 
-26456 
-26457 
-26458 
-26459 
-26460 
-26461 
-26462 
-26463 
-26464 
-26465 
-26466 
-26467 
-26468 
-26469 
-26470 
-26471 
-26472 
-26473 
-26474 
-26475 
-26476 
-26477 
-26478 
-26479 
-26480 
-26481 
-26482 
-26483 
-26484 
-26485 
-26486 
-26487 
-26488 
-26489 
-26490 
-26491 
-26492 
-26493 
-26494 
-26495 
-26496 
-26497 
-26498 
-26499 
-26500 
-26501 
-26502 
-26503 
-26504 
-26505 
-26506 
-26507 
-26508 
-26509 
-26510 
-26511 
-26512 
-26513 
-26514 
-26515 
-26516 
-26517 
-26518 
-26519 
-26520 
-26521 
-26522 
-26523 
-26524 
-26525 
-26526 
-26527 
-26528 
-26529 
-26530 
-26531 
-26532 
-26533 
-26534 
-26535 
-26536 
-26537 
-26538 
-26539 
-26540 
-26541 
-26542 
-26543 
-26544 
-26545 
-26546 
-26547 
-26548 
-26549 
-26550 
-26551 
-26552 
-26553 
-26554 
-26555 
-26556 
-26557 
-26558 
-26559 
-26560 
-26561 
-26562 
-26563 
-26564 
-26565 
-26566 
-26567 
-26568 
-26569 
-26570 
-26571 
-26572 
-26573 
-26574 
-26575 
-26576 
-26577 
-26578 
-26579 
-26580 
-26581 
-26582 
-26583 
-26584 
-26585 
-26586 
-26587 
-26588 
-26589 
-26590 
-26591 
-26592 
-26593 
-26594 
-26595 
-26596 
-26597 
-26598 
-26599 
-26600 
-26601 
-26602 
-26603 
-26604 
-26605 
-26606 
-26607 
-26608 
-26609 
-26610 
-26611 
-26612 
-26613 
-26614 
-26615 
-26616 
-26617 
-26618 
-26619 
-26620 
-26621 
-26622 
-26623 
-26624 
-26625 
-26626 
-26627 
-26628 
-26629 
-26630 
-26631 
-26632 
-26633 
-26634 
-26635 
-26636 
-26637 
-26638 
-26639 
-26640 
-26641 
-26642 
-26643 
-26644 
-26645 
-26646 
-26647 
-26648 
-26649 
-26650 
-26651 
-26652 
-26653 
-26654 
-26655 
-26656 
-26657 
-26658 
-26659 
-26660 
-26661 
-26662 
-26663 
-26664 
-26665 
-26666 
-26667 
-26668 
-26669 
-26670 
-26671 
-26672 
-26673 
-26674 
-26675 
-26676 
-26677 
-26678 
-26679 
-26680 
-26681 
-26682 
-26683 
-26684 
-26685 
-26686 
-26687 
-26688 
-26689 
-26690 
-26691 
-26692 
-26693 
-26694 
-26695 
-26696 
-26697 
-26698 
-26699 
-26700 
-26701 
-26702 
-26703 
-26704 
-26705 
-26706 
-26707 
-26708 
-26709 
-26710 
-26711 
-26712 
-26713 
-26714 
-26715 
-26716 
-26717 
-26718 
-26719 
-26720 
-26721 
-26722 
-26723 
-26724 
-26725 
-26726 
-26727 
-26728 
-26729 
-26730 
-26731 
-26732 
-26733 
-26734 
-26735 
-26736 
-26737 
-26738 
-26739 
-26740 
-26741 
-26742 
-26743 
-26744 
-26745 
-26746 
-26747 
-26748 
-26749 
-26750 
-26751 
-26752 
-26753 
-26754 
-26755 
-26756 
-26757 
-26758 
-26759 
-26760 
-26761 
-26762 
-26763 
-26764 
-26765 
-26766 
-26767 
-26768 
-26769 
-26770 
-26771 
-26772 
-26773 
-26774 
-26775 
-26776 
-26777 
-26778 
-26779 
-26780 
-26781 
-26782 
-26783 
-26784 
-26785 
-26786 
-26787 
-26788 
-26789 
-26790 
-26791 
-26792 
-26793 
-26794 
-26795 
-26796 
-26797 
-26798 
-26799 
-26800 
-26801 
-26802 
-26803 
-26804 
-26805 
-26806 
-26807 
-26808 
-26809 
-26810 
-26811 
-26812 
-26813 
-26814 
-26815 
-26816 
-26817 
-26818 
-26819 
-26820 
-26821 
-26822 
-26823 
-26824 
-26825 
-26826 
-26827 
-26828 
-26829 
-26830 
-26831 
-26832 
-26833 
-26834 
-26835 
-26836 
-26837 
-26838 
-26839 
-26840 
-26841 
-26842 
-26843 
-26844 
-26845 
-26846 
-26847 
-26848 
-26849 
-26850 
-26851 
-26852 
-26853 
-26854 
-26855 
-26856 
-26857 
-26858 
-26859 
-26860 
-26861 
-26862 
-26863 
-26864 
-26865 
-26866 
-26867 
-26868 
-26869 
-26870 
-26871 
-26872 
-26873 
-26874 
-26875 
-26876 
-26877 
-26878 
-26879 
-26880 
-26881 
-26882 
-26883 
-26884 
-26885 
-26886 
-26887 
-26888 
-26889 
-26890 
-26891 
-26892 
-26893 
-26894 
-26895 
-26896 
-26897 
-26898 
-26899 
-26900 
-26901 
-26902 
-26903 
-26904 
-26905 
-26906 
-26907 
-26908 
-26909 
-26910 
-26911 
-26912 
-26913 
-26914 
-26915 
-26916 
-26917 
-26918 
-26919 
-26920 
-26921 
-26922 
-26923 
-26924 
-26925 
-26926 
-26927 
-26928 
-26929 
-26930 
-26931 
-26932 
-26933 
-26934 
-26935 
-26936 
-26937 
-26938 
-26939 
-26940 
-26941 
-26942 
-26943 
-26944 
-26945 
-26946 
-26947 
-26948 
-26949 
-26950 
-26951 
-26952 
-26953 
-26954 
-26955 
-26956 
-26957 
-26958 
-26959 
-26960 
-26961 
-26962 
-26963 
-26964 
-26965 
-26966 
-26967 
-26968 
-26969 
-26970 
-26971 
-26972 
-26973 
-26974 
-26975 
-26976 
-26977 
-26978 
-26979 
-26980 
-26981 
-26982 
-26983 
-26984 
-26985 
-26986 
-26987 
-26988 
-26989 
-26990 
-26991 
-26992 
-26993 
-26994 
-26995 
-26996 
-26997 
-26998 
-26999 
-27000 
-27001 
-27002 
-27003 
-27004 
-27005 
-27006 
-27007 
-27008 
-27009 
-27010 
-27011 
-27012 
-27013 
-27014 
-27015 
-27016 
-27017 
-27018 
-27019 
-27020 
-27021 
-27022 
-27023 
-27024 
-27025 
-27026 
-27027 
-27028 
-27029 
-27030 
-27031 
-27032 
-27033 
-27034 
-27035 
-27036 
-27037 
-27038 
-27039 
-27040 
-27041 
-27042 
-27043 
-27044 
-27045 
-27046 
-27047 
-27048 
-27049 
-27050 
-27051 
-27052 
-27053 
-27054 
-27055 
-27056 
-27057 
-27058 
-27059 
-27060 
-27061 
-27062 
-27063 
-27064 
-27065 
-27066 
-27067 
-27068 
-27069 
-27070 
-27071 
-27072 
-27073 
-27074 
-27075 
-27076 
-27077 
-27078 
-27079 
-27080 
-27081 
-27082 
-27083 
-27084 
-27085 
-27086 
-27087 
-27088 
-27089 
-27090 
-27091 
-27092 
-27093 
-27094 
-27095 
-27096 
-27097 
-27098 
-27099 
-27100 
-27101 
-27102 
-27103 
-27104 
-27105 
-27106 
-27107 
-27108 
-27109 
-27110 
-27111 
-27112 
-27113 
-27114 
-27115 
-27116 
-27117 
-27118 
-27119 
-27120 
-27121 
-27122 
-27123 
-27124 
-27125 
-27126 
-27127 
-27128 
-27129 
-27130 
-27131 
-27132 
-27133 
-27134 
-27135 
-27136 
-27137 
-27138 
-27139 
-27140 
-27141 
-27142 
-27143 
-27144 
-27145 
-27146 
-27147 
-27148 
-27149 
-27150 
-27151 
-27152 
-27153 
-27154 
-27155 
-27156 
-27157 
-27158 
-27159 
-27160 
-27161 
-27162 
-27163 
-27164 
-27165 
-27166 
-27167 
-27168 
-27169 
-27170 
-27171 
-27172 
-27173 
-27174 
-27175 
-27176 
-27177 
-27178 
-27179 
-27180 
-27181 
-27182 
-27183 
-27184 
-27185 
-27186 
-27187 
-27188 
-27189 
-27190 
-27191 
-27192 
-27193 
-27194 
-27195 
-27196 
-27197 
-27198 
-27199 
-27200 
-27201 
-27202 
-27203 
-27204 
-27205 
-27206 
-27207 
-27208 
-27209 
-27210 
-27211 
-27212 
-27213 
-27214 
-27215 
-27216 
-27217 
-27218 
-27219 
-27220 
-27221 
-27222 
-27223 
-27224 
-27225 
-27226 
-27227 
-27228 
-27229 
-27230 
-27231 
-27232 
-27233 
-27234 
-27235 
-27236 
-27237 
-27238 
-27239 
-27240 
-27241 
-27242 
-27243 
-27244 
-27245 
-27246 
-27247 
-27248 
-27249 
-27250 
-27251 
-27252 
-27253 
-27254 
-27255 
-27256 
-27257 
-27258 
-27259 
-27260 
-27261 
-27262 
-27263 
-27264 
-27265 
-27266 
-27267 
-27268 
-27269 
-27270 
-27271 
-27272 
-27273 
-27274 
-27275 
-27276 
-27277 
-27278 
-27279 
-27280 
-27281 
-27282 
-27283 
-27284 
-27285 
-27286 
-27287 
-27288 
-27289 
-27290 
-27291 
-27292 
-27293 
-27294 
-27295 
-27296 
-27297 
-27298 
-27299 
-27300 
-27301 
-27302 
-27303 
-27304 
-27305 
-27306 
-27307 
-27308 
-27309 
-27310 
-27311 
-27312 
-27313 
-27314 
-27315 
-27316 
-27317 
-27318 
-27319 
-27320 
-27321 
-27322 
-27323 
-27324 
-27325 
-27326 
-27327 
-27328 
-27329 
-27330 
-27331 
-27332 
-27333 
-27334 
-27335 
-27336 
-27337 
-27338 
-27339 
-27340 
-27341 
-27342 
-27343 
-27344 
-27345 
-27346 
-27347 
-27348 
-27349 
-27350 
-27351 
-27352 
-27353 
-27354 
-27355 
-27356 
-27357 
-27358 
-27359 
-27360 
-27361 
-27362 
-27363 
-27364 
-27365 
-27366 
-27367 
-27368 
-27369 
-27370 
-27371 
-27372 
-27373 
-27374 
-27375 
-27376 
-27377 
-27378 
-27379 
-27380 
-27381 
-27382 
-27383 
-27384 
-27385 
-27386 
-27387 
-27388 
-27389 
-27390 
-27391 
-27392 
-27393 
-27394 
-27395 
-27396 
-27397 
-27398 
-27399 
-27400 
-27401 
-27402 
-27403 
-27404 
-27405 
-27406 
-27407 
-27408 
-27409 
-27410 
-27411 
-27412 
-27413 
-27414 
-27415 
-27416 
-27417 
-27418 
-27419 
-27420 
-27421 
-27422 
-27423 
-27424 
-27425 
-27426 
-27427 
-27428 
-27429 
-27430 
-27431 
-27432 
-27433 
-27434 
-27435 
-27436 
-27437 
-27438 
-27439 
-27440 
-27441 
-27442 
-27443 
-27444 
-27445 
-27446 
-27447 
-27448 
-27449 
-27450 
-27451 
-27452 
-27453 
-27454 
-27455 
-27456 
-27457 
-27458 
-27459 
-27460 
-27461 
-27462 
-27463 
-27464 
-27465 
-27466 
-27467 
-27468 
-27469 
-27470 
-27471 
-27472 
-27473 
-27474 
-27475 
-27476 
-27477 
-27478 
-27479 
-27480 
-27481 
-27482 
-27483 
-27484 
-27485 
-27486 
-27487 
-27488 
-27489 
-27490 
-27491 
-27492 
-27493 
-27494 
-27495 
-27496 
-27497 
-27498 
-27499 
-27500 
-27501 
-27502 
-27503 
-27504 
-27505 
-27506 
-27507 
-27508 
-27509 
-27510 
-27511 
-27512 
-27513 
-27514 
-27515 
-27516 
-27517 
-27518 
-27519 
-27520 
-27521 
-27522 
-27523 
-27524 
-27525 
-27526 
-27527 
-27528 
-27529 
-27530 
-27531 
-27532 
-27533 
-27534 
-27535 
-27536 
-27537 
-27538 
-27539 
-27540 
-27541 
-27542 
-27543 
-27544 
-27545 
-27546 
-27547 
-27548 
-27549 
-27550 
-27551 
-27552 
-27553 
-27554 
-27555 
-27556 
-27557 
-27558 
-27559 
-27560 
-27561 
-27562 
-27563 
-27564 
-27565 
-27566 
-27567 
-27568 
-27569 
-27570 
-27571 
-27572 
-27573 
-27574 
-27575 
-27576 
-27577 
-27578 
-27579 
-27580 
-27581 
-27582 
-27583 
-27584 
-27585 
-27586 
-27587 
-27588 
-27589 
-27590 
-27591 
-27592 
-27593 
-27594 
-27595 
-27596 
-27597 
-27598 
-27599 
-27600 
-27601 
-27602 
-27603 
-27604 
-27605 
-27606 
-27607 
-27608 
-27609 
-27610 
-27611 
-27612 
-27613 
-27614 
-27615 
-27616 
-27617 
-27618 
-27619 
-27620 
-27621 
-27622 
-27623 
-27624 
-27625 
-27626 
-27627 
-27628 
-27629 
-27630 
-27631 
-27632 
-27633 
-27634 
-27635 
-27636 
-27637 
-27638 
-27639 
-27640 
-27641 
-27642 
-27643 
-27644 
-27645 
-27646 
-27647 
-27648 
-27649 
-27650 
-27651 
-27652 
-27653 
-27654 
-27655 
-27656 
-27657 
-27658 
-27659 
-27660 
-27661 
-27662 
-27663 
-27664 
-27665 
-27666 
-27667 
-27668 
-27669 
-27670 
-27671 
-27672 
-27673 
-27674 
-27675 
-27676 
-27677 
-27678 
-27679 
-27680 
-27681 
-27682 
-27683 
-27684 
-27685 
-27686 
-27687 
-27688 
-27689 
-27690 
-27691 
-27692 
-27693 
-27694 
-27695 
-27696 
-27697 
-27698 
-27699 
-27700 
-27701 
-27702 
-27703 
-27704 
-27705 
-27706 
-27707 
-27708 
-27709 
-27710 
-27711 
-27712 
-27713 
-27714 
-27715 
-27716 
-27717 
-27718 
-27719 
-27720 
-27721 
-27722 
-27723 
-27724 
-27725 
-27726 
-27727 
-27728 
-27729 
-27730 
-27731 
-27732 
-27733 
-27734 
-27735 
-27736 
-27737 
-27738 
-27739 
-27740 
-27741 
-27742 
-27743 
-27744 
-27745 
-27746 
-27747 
-27748 
-27749 
-27750 
-27751 
-27752 
-27753 
-27754 
-27755 
-27756 
-27757 
-27758 
-27759 
-27760 
-27761 
-27762 
-27763 
-27764 
-27765 
-27766 
-27767 
-27768 
-27769 
-27770 
-27771 
-27772 
-27773 
-27774 
-27775 
-27776 
-27777 
-27778 
-27779 
-27780 
-27781 
-27782 
-27783 
-27784 
-27785 
-27786 
-27787 
-27788 
-27789 
-27790 
-27791 
-27792 
-27793 
-27794 
-27795 
-27796 
-27797 
-27798 
-27799 
-27800 
-27801 
-27802 
-27803 
-27804 
-27805 
-27806 
-27807 
-27808 
-27809 
-27810 
-27811 
-27812 
-27813 
-27814 
-27815 
-27816 
-27817 
-27818 
-27819 
-27820 
-27821 
-27822 
-27823 
-27824 
-27825 
-27826 
-27827 
-27828 
-27829 
-27830 
-27831 
-27832 
-27833 
-27834 
-27835 
-27836 
-27837 
-27838 
-27839 
-27840 
-27841 
-27842 
-27843 
-27844 
-27845 
-27846 
-27847 
-27848 
-27849 
-27850 
-27851 
-27852 
-27853 
-27854 
-27855 
-27856 
-27857 
-27858 
-27859 
-27860 
-27861 
-27862 
-27863 
-27864 
-27865 
-27866 
-27867 
-27868 
-27869 
-27870 
-27871 
-27872 
-27873 
-27874 
-27875 
-27876 
-27877 
-27878 
-27879 
-27880 
-27881 
-27882 
-27883 
-27884 
-27885 
-27886 
-27887 
-27888 
-27889 
-27890 
-27891 
-27892 
-27893 
-27894 
-27895 
-27896 
-27897 
-27898 
-27899 
-27900 
-27901 
-27902 
-27903 
-27904 
-27905 
-27906 
-27907 
-27908 
-27909 
-27910 
-27911 
-27912 
-27913 
-27914 
-27915 
-27916 
-27917 
-27918 
-27919 
-27920 
-27921 
-27922 
-27923 
-27924 
-27925 
-27926 
-27927 
-27928 
-27929 
-27930 
-27931 
-27932 
-27933 
-27934 
-27935 
-27936 
-27937 
-27938 
-27939 
-27940 
-27941 
-27942 
-27943 
-27944 
-27945 
-27946 
-27947 
-27948 
-27949 
-27950 
-27951 
-27952 
-27953 
-27954 
-27955 
-27956 
-27957 
-27958 
-27959 
-27960 
-27961 
-27962 
-27963 
-27964 
-27965 
-27966 
-27967 
-27968 
-27969 
-27970 
-27971 
-27972 
-27973 
-27974 
-27975 
-27976 
-27977 
-27978 
-27979 
-27980 
-27981 
-27982 
-27983 
-27984 
-27985 
-27986 
-27987 
-27988 
-27989 
-27990 
-27991 
-27992 
-27993 
-27994 
-27995 
-27996 
-27997 
-27998 
-27999 
-28000 
-28001 
-28002 
-28003 
-28004 
-28005 
-28006 
-28007 
-28008 
-28009 
-28010 
-28011 
-28012 
-28013 
-28014 
-28015 
-28016 
-28017 
-28018 
-28019 
-28020 
-28021 
-28022 
-28023 
-28024 
-28025 
-28026 
-28027 
-28028 
-28029 
-28030 
-28031 
-28032 
-28033 
-28034 
-28035 
-28036 
-28037 
-28038 
-28039 
-28040 
-28041 
-28042 
-28043 
-28044 
-28045 
-28046 
-28047 
-28048 
-28049 
-28050 
-28051 
-28052 
-28053 
-28054 
-28055 
-28056 
-28057 
-28058 
-28059 
-28060 
-28061 
-28062 
-28063 
-28064 
-28065 
-28066 
-28067 
-28068 
-28069 
-28070 
-28071 
-28072 
-28073 
-28074 
-28075 
-28076 
-28077 
-28078 
-28079 
-28080 
-28081 
-28082 
-28083 
-28084 
-28085 
-28086 
-28087 
-28088 
-28089 
-28090 
-28091 
-28092 
-28093 
-28094 
-28095 
-28096 
-28097 
-28098 
-28099 
-28100 
-28101 
-28102 
-28103 
-28104 
-28105 
-28106 
-28107 
-28108 
-28109 
-28110 
-28111 
-28112 
-28113 
-28114 
-28115 
-28116 
-28117 
-28118 
-28119 
-28120 
-28121 
-28122 
-28123 
-28124 
-28125 
-28126 
-28127 
-28128 
-28129 
-28130 
-28131 
-28132 
-28133 
-28134 
-28135 
-28136 
-28137 
-28138 
-28139 
-28140 
-28141 
-28142 
-28143 
-28144 
-28145 
-28146 
-28147 
-28148 
-28149 
-28150 
-28151 
-28152 
-28153 
-28154 
-28155 
-28156 
-28157 
-28158 
-28159 
-28160 
-28161 
-28162 
-28163 
-28164 
-28165 
-28166 
-28167 
-28168 
-28169 
-28170 
-28171 
-28172 
-28173 
-28174 
-28175 
-28176 
-28177 
-28178 
-28179 
-28180 
-28181 
-28182 
-28183 
-28184 
-28185 
-28186 
-28187 
-28188 
-28189 
-28190 
-28191 
-28192 
-28193 
-28194 
-28195 
-28196 
-28197 
-28198 
-28199 
-28200 
-28201 
-28202 
-28203 
-28204 
-28205 
-28206 
-28207 
-28208 
-28209 
-28210 
-28211 
-28212 
-28213 
-28214 
-28215 
-28216 
-28217 
-28218 
-28219 
-28220 
-28221 
-28222 
-28223 
-28224 
-28225 
-28226 
-28227 
-28228 
-28229 
-28230 
-28231 
-28232 
-28233 
-28234 
-28235 
-28236 
-28237 
-28238 
-28239 
-28240 
-28241 
-28242 
-28243 
-28244 
-28245 
-28246 
-28247 
-28248 
-28249 
-28250 
-28251 
-28252 
-28253 
-28254 
-28255 
-28256 
-28257 
-28258 
-28259 
-28260 
-28261 
-28262 
-28263 
-28264 
-28265 
-28266 
-28267 
-28268 
-28269 
-28270 
-28271 
-28272 
-28273 
-28274 
-28275 
-28276 
-28277 
-28278 
-28279 
-28280 
-28281 
-28282 
-28283 
-28284 
-28285 
-28286 
-28287 
-28288 
-28289 
-28290 
-28291 
-28292 
-28293 
-28294 
-28295 
-28296 
-28297 
-28298 
-28299 
-28300 
-28301 
-28302 
-28303 
-28304 
-28305 
-28306 
-28307 
-28308 
-28309 
-28310 
-28311 
-28312 
-28313 
-28314 
-28315 
-28316 
-28317 
-28318 
-28319 
-28320 
-28321 
-28322 
-28323 
-28324 
-28325 
-28326 
-28327 
-28328 
-28329 
-28330 
-28331 
-28332 
-28333 
-28334 
-28335 
-28336 
-28337 
-28338 
-28339 
-28340 
-28341 
-28342 
-28343 
-28344 
-28345 
-28346 
-28347 
-28348 
-28349 
-28350 
-28351 
-28352 
-28353 
-28354 
-28355 
-28356 
-28357 
-28358 
-28359 
-28360 
-28361 
-28362 
-28363 
-28364 
-28365 
-28366 
-28367 
-28368 
-28369 
-28370 
-28371 
-28372 
-28373 
-28374 
-28375 
-28376 
-28377 
-28378 
-28379 
-28380 
-28381 
-28382 
-28383 
-28384 
-28385 
-28386 
-28387 
-28388 
-28389 
-28390 
-28391 
-28392 
-28393 
-28394 
-28395 
-28396 
-28397 
-28398 
-28399 
-28400 
-28401 
-28402 
-28403 
-28404 
-28405 
-28406 
-28407 
-28408 
-28409 
-28410 
-28411 
-28412 
-28413 
-28414 
-28415 
-28416 
-28417 
-28418 
-28419 
-28420 
-28421 
-28422 
-28423 
-28424 
-28425 
-28426 
-28427 
-28428 
-28429 
-28430 
-28431 
-28432 
-28433 
-28434 
-28435 
-28436 
-28437 
-28438 
-28439 
-28440 
-28441 
-28442 
-28443 
-28444 
-28445 
-28446 
-28447 
-28448 
-28449 
-28450 
-28451 
-28452 
-28453 
-28454 
-28455 
-28456 
-28457 
-28458 
-28459 
-28460 
-28461 
-28462 
-28463 
-28464 
-28465 
-28466 
-28467 
-28468 
-28469 
-28470 
-28471 
-28472 
-28473 
-28474 
-28475 
-28476 
-28477 
-28478 
-28479 
-28480 
-28481 
-28482 
-28483 
-28484 
-28485 
-28486 
-28487 
-28488 
-28489 
-28490 
-28491 
-28492 
-28493 
-28494 
-28495 
-28496 
-28497 
-28498 
-28499 
-28500 
-28501 
-28502 
-28503 
-28504 
-28505 
-28506 
-28507 
-28508 
-28509 
-28510 
-28511 
-28512 
-28513 
-28514 
-28515 
-28516 
-28517 
-28518 
-28519 
-28520 
-28521 
-28522 
-28523 
-28524 
-28525 
-28526 
-28527 
-28528 
-28529 
-28530 
-28531 
-28532 
-28533 
-28534 
-28535 
-28536 
-28537 
-28538 
-28539 
-28540 
-28541 
-28542 
-28543 
-28544 
-28545 
-28546 
-28547 
-28548 
-28549 
-28550 
-28551 
-28552 
-28553 
-28554 
-28555 
-28556 
-28557 
-28558 
-28559 
-28560 
-28561 
-28562 
-28563 
-28564 
-28565 
-28566 
-28567 
-28568 
-28569 
-28570 
-28571 
-28572 
-28573 
-28574 
-28575 
-28576 
-28577 
-28578 
-28579 
-28580 
-28581 
-28582 
-28583 
-28584 
-28585 
-28586 
-28587 
-28588 
-28589 
-28590 
-28591 
-28592 
-28593 
-28594 
-28595 
-28596 
-28597 
-28598 
-28599 
-28600 
-28601 
-28602 
-28603 
-28604 
-28605 
-28606 
-28607 
-28608 
-28609 
-28610 
-28611 
-28612 
-28613 
-28614 
-28615 
-28616 
-28617 
-28618 
-28619 
-28620 
-28621 
-28622 
-28623 
-28624 
-28625 
-28626 
-28627 
-28628 
-28629 
-28630 
-28631 
-28632 
-28633 
-28634 
-28635 
-28636 
-28637 
-28638 
-28639 
-28640 
-28641 
-28642 
-28643 
-28644 
-28645 
-28646 
-28647 
-28648 
-28649 
-28650 
-28651 
-28652 
-28653 
-28654 
-28655 
-28656 
-28657 
-28658 
-28659 
-28660 
-28661 
-28662 
-28663 
-28664 
-28665 
-28666 
-28667 
-28668 
-28669 
-28670 
-28671 
-28672 
-28673 
-28674 
-28675 
-28676 
-28677 
-28678 
-28679 
-28680 
-28681 
-28682 
-28683 
-28684 
-28685 
-28686 
-28687 
-28688 
-28689 
-28690 
-28691 
-28692 
-28693 
-28694 
-28695 
-28696 
-28697 
-28698 
-28699 
-28700 
-28701 
-28702 
-28703 
-28704 
-28705 
-28706 
-28707 
-28708 
-28709 
-28710 
-28711 
-28712 
-28713 
-28714 
-28715 
-28716 
-28717 
-28718 
-28719 
-28720 
-28721 
-28722 
-28723 
-28724 
-28725 
-28726 
-28727 
-28728 
-28729 
-28730 
-28731 
-28732 
-28733 
-28734 
-28735 
-28736 
-28737 
-28738 
-28739 
-28740 
-28741 
-28742 
-28743 
-28744 
-28745 
-28746 
-28747 
-28748 
-28749 
-28750 
-28751 
-28752 
-28753 
-28754 
-28755 
-28756 
-28757 
-28758 
-28759 
-28760 
-28761 
-28762 
-28763 
-28764 
-28765 
-28766 
-28767 
-28768 
-28769 
-28770 
-28771 
-28772 
-28773 
-28774 
-28775 
-28776 
-28777 
-28778 
-28779 
-28780 
-28781 
-28782 
-28783 
-28784 
-28785 
-28786 
-28787 
-28788 
-28789 
-28790 
-28791 
-28792 
-28793 
-28794 
-28795 
-28796 
-28797 
-28798 
-28799 
-28800 
-28801 
-28802 
-28803 
-28804 
-28805 
-28806 
-28807 
-28808 
-28809 
-28810 
-28811 
-28812 
-28813 
-28814 
-28815 
-28816 
-28817 
-28818 
-28819 
-28820 
-28821 
-28822 
-28823 
-28824 
-28825 
-28826 
-28827 
-28828 
-28829 
-28830 
-28831 
-28832 
-28833 
-28834 
-28835 
-28836 
-28837 
-28838 
-28839 
-28840 
-28841 
-28842 
-28843 
-28844 
-28845 
-28846 
-28847 
-28848 
-28849 
-28850 
-28851 
-28852 
-28853 
-28854 
-28855 
-28856 
-28857 
-28858 
-28859 
-28860 
-28861 
-28862 
-28863 
-28864 
-28865 
-28866 
-28867 
-28868 
-28869 
-28870 
-28871 
-28872 
-28873 
-28874 
-28875 
-28876 
-28877 
-28878 
-28879 
-28880 
-28881 
-28882 
-28883 
-28884 
-28885 
-28886 
-28887 
-28888 
-28889 
-28890 
-28891 
-28892 
-28893 
-28894 
-28895 
-28896 
-28897 
-28898 
-28899 
-28900 
-28901 
-28902 
-28903 
-28904 
-28905 
-28906 
-28907 
-28908 
-28909 
-28910 
-28911 
-28912 
-28913 
-28914 
-28915 
-28916 
-28917 
-28918 
-28919 
-28920 
-28921 
-28922 
-28923 
-28924 
-28925 
-28926 
-28927 
-28928 
-28929 
-28930 
-28931 
-28932 
-28933 
-28934 
-28935 
-28936 
-28937 
-28938 
-28939 
-28940 
-28941 
-28942 
-28943 
-28944 
-28945 
-28946 
-28947 
-28948 
-28949 
-28950 
-28951 
-28952 
-28953 
-28954 
-28955 
-28956 
-28957 
-28958 
-28959 
-28960 
-28961 
-28962 
-28963 
-28964 
-28965 
-28966 
-28967 
-28968 
-28969 
-28970 
-28971 
-28972 
-28973 
-28974 
-28975 
-28976 
-28977 
-28978 
-28979 
-28980 
-28981 
-28982 
-28983 
-28984 
-28985 
-28986 
-28987 
-28988 
-28989 
-28990 
-28991 
-28992 
-28993 
-28994 
-28995 
-28996 
-28997 
-28998 
-28999 
-29000 
-29001 
-29002 
-29003 
-29004 
-29005 
-29006 
-29007 
-29008 
-29009 
-29010 
-29011 
-29012 
-29013 
-29014 
-29015 
-29016 
-29017 
-29018 
-29019 
-29020 
-29021 
-29022 
-29023 
-29024 
-29025 
-29026 
-29027 
-29028 
-29029 
-29030 
-29031 
-29032 
-29033 
-29034 
-29035 
-29036 
-29037 
-29038 
-29039 
-29040 
-29041 
-29042 
-29043 
-29044 
-29045 
-29046 
-29047 
-29048 
-29049 
-29050 
-29051 
-29052 
-29053 
-29054 
-29055 
-29056 
-29057 
-29058 
-29059 
-29060 
-29061 
-29062 
-29063 
-29064 
-29065 
-29066 
-29067 
-29068 
-29069 
-29070 
-29071 
-29072 
-29073 
-29074 
-29075 
-29076 
-29077 
-29078 
-29079 
-29080 
-29081 
-29082 
-29083 
-29084 
-29085 
-29086 
-29087 
-29088 
-29089 
-29090 
-29091 
-29092 
-29093 
-29094 
-29095 
-29096 
-29097 
-29098 
-29099 
-29100 
-29101 
-29102 
-29103 
-29104 
-29105 
-29106 
-29107 
-29108 
-29109 
-29110 
-29111 
-29112 
-29113 
-29114 
-29115 
-29116 
-29117 
-29118 
-29119 
-29120 
-29121 
-29122 
-29123 
-29124 
-29125 
-29126 
-29127 
-29128 
-29129 
-29130 
-29131 
-29132 
-29133 
-29134 
-29135 
-29136 
-29137 
-29138 
-29139 
-29140 
-29141 
-29142 
-29143 
-29144 
-29145 
-29146 
-29147 
-29148 
-29149 
-29150 
-29151 
-29152 
-29153 
-29154 
-29155 
-29156 
-29157 
-29158 
-29159 
-29160 
-29161 
-29162 
-29163 
-29164 
-29165 
-29166 
-29167 
-29168 
-29169 
-29170 
-29171 
-29172 
-29173 
-29174 
-29175 
-29176 
-29177 
-29178 
-29179 
-29180 
-29181 
-29182 
-29183 
-29184 
-29185 
-29186 
-29187 
-29188 
-29189 
-29190 
-29191 
-29192 
-29193 
-29194 
-29195 
-29196 
-29197 
-29198 
-29199 
-29200 
-29201 
-29202 
-29203 
-29204 
-29205 
-29206 
-29207 
-29208 
-29209 
-29210 
-29211 
-29212 
-29213 
-29214 
-29215 
-29216 
-29217 
-29218 
-29219 
-29220 
-29221 
-29222 
-29223 
-29224 
-29225 
-29226 
-29227 
-29228 
-29229 
-29230 
-29231 
-29232 
-29233 
-29234 
-29235 
-29236 
-29237 
-29238 
-29239 
-29240 
-29241 
-29242 
-29243 
-29244 
-29245 
-29246 
-29247 
-29248 
-29249 
-29250 
-29251 
-29252 
-29253 
-29254 
-29255 
-29256 
-29257 
-29258 
-29259 
-29260 
-29261 
-29262 
-29263 
-29264 
-29265 
-29266 
-29267 
-29268 
-29269 
-29270 
-29271 
-29272 
-29273 
-29274 
-29275 
-29276 
-29277 
-29278 
-29279 
-29280 
-29281 
-29282 
-29283 
-29284 
-29285 
-29286 
-29287 
-29288 
-29289 
-29290 
-29291 
-29292 
-29293 
-29294 
-29295 
-29296 
-29297 
-29298 
-29299 
-29300 
-29301 
-29302 
-29303 
-29304 
-29305 
-29306 
-29307 
-29308 
-29309 
-29310 
-29311 
-29312 
-29313 
-29314 
-29315 
-29316 
-29317 
-29318 
-29319 
-29320 
-29321 
-29322 
-29323 
-29324 
-29325 
-29326 
-29327 
-29328 
-29329 
-29330 
-29331 
-29332 
-29333 
-29334 
-29335 
-29336 
-29337 
-29338 
-29339 
-29340 
-29341 
-29342 
-29343 
-29344 
-29345 
-29346 
-29347 
-29348 
-29349 
-29350 
-29351 
-29352 
-29353 
-29354 
-29355 
-29356 
-29357 
-29358 
-29359 
-29360 
-29361 
-29362 
-29363 
-29364 
-29365 
-29366 
-29367 
-29368 
-29369 
-29370 
-29371 
-29372 
-29373 
-29374 
-29375 
-29376 
-29377 
-29378 
-29379 
-29380 
-29381 
-29382 
-29383 
-29384 
-29385 
-29386 
-29387 
-29388 
-29389 
-29390 
-29391 
-29392 
-29393 
-29394 
-29395 
-29396 
-29397 
-29398 
-29399 
-29400 
-29401 
-29402 
-29403 
-29404 
-29405 
-29406 
-29407 
-29408 
-29409 
-29410 
-29411 
-29412 
-29413 
-29414 
-29415 
-29416 
-29417 
-29418 
-29419 
-29420 
-29421 
-29422 
-29423 
-29424 
-29425 
-29426 
-29427 
-29428 
-29429 
-29430 
-29431 
-29432 
-29433 
-29434 
-29435 
-29436 
-29437 
-29438 
-29439 
-29440 
-29441 
-29442 
-29443 
-29444 
-29445 
-29446 
-29447 
-29448 
-29449 
-29450 
-29451 
-29452 
-29453 
-29454 
-29455 
-29456 
-29457 
-29458 
-29459 
-29460 
-29461 
-29462 
-29463 
-29464 
-29465 
-29466 
-29467 
-29468 
-29469 
-29470 
-29471 
-29472 
-29473 
-29474 
-29475 
-29476 
-29477 
-29478 
-29479 
-29480 
-29481 
-29482 
-29483 
-29484 
-29485 
-29486 
-29487 
-29488 
-29489 
-29490 
-29491 
-29492 
-29493 
-29494 
-29495 
-29496 
-29497 
-29498 
-29499 
-29500 
-29501 
-29502 
-29503 
-29504 
-29505 
-29506 
-29507 
-29508 
-29509 
-29510 
-29511 
-29512 
-29513 
-29514 
-29515 
-29516 
-29517 
-29518 
-29519 
-29520 
-29521 
-29522 
-29523 
-29524 
-29525 
-29526 
-29527 
-29528 
-29529 
-29530 
-29531 
-29532 
-29533 
-29534 
-29535 
-29536 
-29537 
-29538 
-29539 
-29540 
-29541 
-29542 
-29543 
-29544 
-29545 
-29546 
-29547 
-29548 
-29549 
-29550 
-29551 
-29552 
-29553 
-29554 
-29555 
-29556 
-29557 
-29558 
-29559 
-29560 
-29561 
-29562 
-29563 
-29564 
-29565 
-29566 
-29567 
-29568 
-29569 
-29570 
-29571 
-29572 
-29573 
-29574 
-29575 
-29576 
-29577 
-29578 
-29579 
-29580 
-29581 
-29582 
-29583 
-29584 
-29585 
-29586 
-29587 
-29588 
-29589 
-29590 
-29591 
-29592 
-29593 
-29594 
-29595 
-29596 
-29597 
-29598 
-29599 
-29600 
-29601 
-29602 
-29603 
-29604 
-29605 
-29606 
-29607 
-29608 
-29609 
-29610 
-29611 
-29612 
-29613 
-29614 
-29615 
-29616 
-29617 
-29618 
-29619 
-29620 
-29621 
-29622 
-29623 
-29624 
-29625 
-29626 
-29627 
-29628 
-29629 
-29630 
-29631 
-29632 
-29633 
-29634 
-29635 
-29636 
-29637 
-29638 
-29639 
-29640 
-29641 
-29642 
-29643 
-29644 
-29645 
-29646 
-29647 
-29648 
-29649 
-29650 
-29651 
-29652 
-29653 
-29654 
-29655 
-29656 
-29657 
-29658 
-29659 
-29660 
-29661 
-29662 
-29663 
-29664 
-29665 
-29666 
-29667 
-29668 
-29669 
-29670 
-29671 
-29672 
-29673 
-29674 
-29675 
-29676 
-29677 
-29678 
-29679 
-29680 
-29681 
-29682 
-29683 
-29684 
-29685 
-29686 
-29687 
-29688 
-29689 
-29690 
-29691 
-29692 
-29693 
-29694 
-29695 
-29696 
-29697 
-29698 
-29699 
-29700 
-29701 
-29702 
-29703 
-29704 
-29705 
-29706 
-29707 
-29708 
-29709 
-29710 
-29711 
-29712 
-29713 
-29714 
-29715 
-29716 
-29717 
-29718 
-29719 
-29720 
-29721 
-29722 
-29723 
-29724 
-29725 
-29726 
-29727 
-29728 
-29729 
-29730 
-29731 
-29732 
-29733 
-29734 
-29735 
-29736 
-29737 
-29738 
-29739 
-29740 
-29741 
-29742 
-29743 
-29744 
-29745 
-29746 
-29747 
-29748 
-29749 
-29750 
-29751 
-29752 
-29753 
-29754 
-29755 
-29756 
-29757 
-29758 
-29759 
-29760 
-29761 
-29762 
-29763 
-29764 
-29765 
-29766 
-29767 
-29768 
-29769 
-29770 
-29771 
-29772 
-29773 
-29774 
-29775 
-29776 
-29777 
-29778 
-29779 
-29780 
-29781 
-29782 
-29783 
-29784 
-29785 
-29786 
-29787 
-29788 
-29789 
-29790 
-29791 
-29792 
-29793 
-29794 
-29795 
-29796 
-29797 
-29798 
-29799 
-29800 
-29801 
-29802 
-29803 
-29804 
-29805 
-29806 
-29807 
-29808 
-29809 
-29810 
-29811 
-29812 
-29813 
-29814 
-29815 
-29816 
-29817 
-29818 
-29819 
-29820 
-29821 
-29822 
-29823 
-29824 
-29825 
-29826 
-29827 
-29828 
-29829 
-29830 
-29831 
-29832 
-29833 
-29834 
-29835 
-29836 
-29837 
-29838 
-29839 
-29840 
-29841 
-29842 
-29843 
-29844 
-29845 
-29846 
-29847 
-29848 
-29849 
-29850 
-29851 
-29852 
-29853 
-29854 
-29855 
-29856 
-29857 
-29858 
-29859 
-29860 
-29861 
-29862 
-29863 
-29864 
-29865 
-29866 
-29867 
-29868 
-29869 
-29870 
-29871 
-29872 
-29873 
-29874 
-29875 
-29876 
-29877 
-29878 
-29879 
-29880 
-29881 
-29882 
-29883 
-29884 
-29885 
-29886 
-29887 
-29888 
-29889 
-29890 
-29891 
-29892 
-29893 
-29894 
-29895 
-29896 
-29897 
-29898 
-29899 
-29900 
-29901 
-29902 
-29903 
-29904 
-29905 
-29906 
-29907 
-29908 
-29909 
-29910 
-29911 
-29912 
-29913 
-29914 
-29915 
-29916 
-29917 
-29918 
-29919 
-29920 
-29921 
-29922 
-29923 
-29924 
-29925 
-29926 
-29927 
-29928 
-29929 
-29930 
-29931 
-29932 
-29933 
-29934 
-29935 
-29936 
-29937 
-29938 
-29939 
-29940 
-29941 
-29942 
-29943 
-29944 
-29945 
-29946 
-29947 
-29948 
-29949 
-29950 
-29951 
-29952 
-29953 
-29954 
-29955 
-29956 
-29957 
-29958 
-29959 
-29960 
-29961 
-29962 
-29963 
-29964 
-29965 
-29966 
-29967 
-29968 
-29969 
-29970 
-29971 
-29972 
-29973 
-29974 
-29975 
-29976 
-29977 
-29978 
-29979 
-29980 
-29981 
-29982 
-29983 
-29984 
-29985 
-29986 
-29987 
-29988 
-29989 
-29990 
-29991 
-29992 
-29993 
-29994 
-29995 
-29996 
-29997 
-29998 
-29999 
-30000 
-30001 
-30002 
-30003 
-30004 
-30005 
-30006 
-30007 
-30008 
-30009 
-30010 
-30011 
-30012 
-30013 
-30014 
-30015 
-30016 
-30017 
-30018 
-30019 
-30020 
-30021 
-30022 
-30023 
-30024 
-30025 
-30026 
-30027 
-30028 
-30029 
-30030 
-30031 
-30032 
-30033 
-30034 
-30035 
-30036 
-30037 
-30038 
-30039 
-30040 
-30041 
-30042 
-30043 
-30044 
-30045 
-30046 
-30047 
-30048 
-30049 
-30050 
-30051 
-30052 
-30053 
-30054 
-30055 
-30056 
-30057 
-30058 
-30059 
-30060 
-30061 
-30062 
-30063 
-30064 
-30065 
-30066 
-30067 
-30068 
-30069 
-30070 
-30071 
-30072 
-30073 
-30074 
-30075 
-30076 
-30077 
-30078 
-30079 
-30080 
-30081 
-30082 
-30083 
-30084 
-30085 
-30086 
-30087 
-30088 
-30089 
-30090 
-30091 
-30092 
-30093 
-30094 
-30095 
-30096 
-30097 
-30098 
-30099 
-30100 
-30101 
-30102 
-30103 
-30104 
-30105 
-30106 
-30107 
-30108 
-30109 
-30110 
-30111 
-30112 
-30113 
-30114 
-30115 
-30116 
-30117 
-30118 
-30119 
-30120 
-30121 
-30122 
-30123 
-30124 
-30125 
-30126 
-30127 
-30128 
-30129 
-30130 
-30131 
-30132 
-30133 
-30134 
-30135 
-30136 
-30137 
-30138 
-30139 
-30140 
-30141 
-30142 
-30143 
-30144 
-30145 
-30146 
-30147 
-30148 
-30149 
-30150 
-30151 
-30152 
-30153 
-30154 
-30155 
-30156 
-30157 
-30158 
-30159 
-30160 
-30161 
-30162 
-30163 
-30164 
-30165 
-30166 
-30167 
-30168 
-30169 
-30170 
-30171 
-30172 
-30173 
-30174 
-30175 
-30176 
-30177 
-30178 
-30179 
-30180 
-30181 
-30182 
-30183 
-30184 
-30185 
-30186 
-30187 
-30188 
-30189 
-30190 
-30191 
-30192 
-30193 
-30194 
-30195 
-30196 
-30197 
-30198 
-30199 
-30200 
-30201 
-30202 
-30203 
-30204 
-30205 
-30206 
-30207 
-30208 
-30209 
-30210 
-30211 
-30212 
-30213 
-30214 
-30215 
-30216 
-30217 
-30218 
-30219 
-30220 
-30221 
-30222 
-30223 
-30224 
-30225 
-30226 
-30227 
-30228 
-30229 
-30230 
-30231 
-30232 
-30233 
-30234 
-30235 
-30236 
-30237 
-30238 
-30239 
-30240 
-30241 
-30242 
-30243 
-30244 
-30245 
-30246 
-30247 
-30248 
-30249 
-30250 
-30251 
-30252 
-30253 
-30254 
-30255 
-30256 
-30257 
-30258 
-30259 
-30260 
-30261 
-30262 
-30263 
-30264 
-30265 
-30266 
-30267 
-30268 
-30269 
-30270 
-30271 
-30272 
-30273 
-30274 
-30275 
-30276 
-30277 
-30278 
-30279 
-30280 
-30281 
-30282 
-30283 
-30284 
-30285 
-30286 
-30287 
-30288 
-30289 
-30290 
-30291 
-30292 
-30293 
-30294 
-30295 
-30296 
-30297 
-30298 
-30299 
-30300 
-30301 
-30302 
-30303 
-30304 
-30305 
-30306 
-30307 
-30308 
-30309 
-30310 
-30311 
-30312 
-30313 
-30314 
-30315 
-30316 
-30317 
-30318 
-30319 
-30320 
-30321 
-30322 
-30323 
-30324 
-30325 
-30326 
-30327 
-30328 
-30329 
-30330 
-30331 
-30332 
-30333 
-30334 
-30335 
-30336 
-30337 
-30338 
-30339 
-30340 
-30341 
-30342 
-30343 
-30344 
-30345 
-30346 
-30347 
-30348 
-30349 
-30350 
-30351 
-30352 
-30353 
-30354 
-30355 
-30356 
-30357 
-30358 
-30359 
-30360 
-30361 
-30362 
-30363 
-30364 
-30365 
-30366 
-30367 
-30368 
-30369 
-30370 
-30371 
-30372 
-30373 
-30374 
-30375 
-30376 
-30377 
-30378 
-30379 
-30380 
-30381 
-30382 
-30383 
-30384 
-30385 
-30386 
-30387 
-30388 
-30389 
-30390 
-30391 
-30392 
-30393 
-30394 
-30395 
-30396 
-30397 
-30398 
-30399 
-30400 
-30401 
-30402 
-30403 
-30404 
-30405 
-30406 
-30407 
-30408 
-30409 
-30410 
-30411 
-30412 
-30413 
-30414 
-30415 
-30416 
-30417 
-30418 
-30419 
-30420 
-30421 
-30422 
-30423 
-30424 
-30425 
-30426 
-30427 
-30428 
-30429 
-30430 
-30431 
-30432 
-30433 
-30434 
-30435 
-30436 
-30437 
-30438 
-30439 
-30440 
-30441 
-30442 
-30443 
-30444 
-30445 
-30446 
-30447 
-30448 
-30449 
-30450 
-30451 
-30452 
-30453 
-30454 
-30455 
-30456 
-30457 
-30458 
-30459 
-30460 
-30461 
-30462 
-30463 
-30464 
-30465 
-30466 
-30467 
-30468 
-30469 
-30470 
-30471 
-30472 
-30473 
-30474 
-30475 
-30476 
-30477 
-30478 
-30479 
-30480 
-30481 
-30482 
-30483 
-30484 
-30485 
-30486 
-30487 
-30488 
-30489 
-30490 
-30491 
-30492 
-30493 
-30494 
-30495 
-30496 
-30497 
-30498 
-30499 
-30500 
-30501 
-30502 
-30503 
-30504 
-30505 
-30506 
-30507 
-30508 
-30509 
-30510 
-30511 
-30512 
-30513 
-30514 
-30515 
-30516 
-30517 
-30518 
-30519 
-30520 
-30521 
-30522 
-30523 
-30524 
-30525 
-30526 
-30527 
-30528 
-30529 
-30530 
-30531 
-30532 
-30533 
-30534 
-30535 
-30536 
-30537 
-30538 
-30539 
-30540 
-30541 
-30542 
-30543 
-30544 
-30545 
-30546 
-30547 
-30548 
-30549 
-30550 
-30551 
-30552 
-30553 
-30554 
-30555 
-30556 
-30557 
-30558 
-30559 
-30560 
-30561 
-30562 
-30563 
-30564 
-30565 
-30566 
-30567 
-30568 
-30569 
-30570 
-30571 
-30572 
-30573 
-30574 
-30575 
-30576 
-30577 
-30578 
-30579 
-30580 
-30581 
-30582 
-30583 
-30584 
-30585 
-30586 
-30587 
-30588 
-30589 
-30590 
-30591 
-30592 
-30593 
-30594 
-30595 
-30596 
-30597 
-30598 
-30599 
-30600 
-30601 
-30602 
-30603 
-30604 
-30605 
-30606 
-30607 
-30608 
-30609 
-30610 
-30611 
-30612 
-30613 
-30614 
-30615 
-30616 
-30617 
-30618 
-30619 
-30620 
-30621 
-30622 
-30623 
-30624 
-30625 
-30626 
-30627 
-30628 
-30629 
-30630 
-30631 
-30632 
-30633 
-30634 
-30635 
-30636 
-30637 
-30638 
-30639 
-30640 
-30641 
-30642 
-30643 
-30644 
-30645 
-30646 
-30647 
-30648 
-30649 
-30650 
-30651 
-30652 
-30653 
-30654 
-30655 
-30656 
-30657 
-30658 
-30659 
-30660 
-30661 
-30662 
-30663 
-30664 
-30665 
-30666 
-30667 
-30668 
-30669 
-30670 
-30671 
-30672 
-30673 
-30674 
-30675 
-30676 
-30677 
-30678 
-30679 
-30680 
-30681 
-30682 
-30683 
-30684 
-30685 
-30686 
-30687 
-30688 
-30689 
-30690 
-30691 
-30692 
-30693 
-30694 
-30695 
-30696 
-30697 
-30698 
-30699 
-30700 
-30701 
-30702 
-30703 
-30704 
-30705 
-30706 
-30707 
-30708 
-30709 
-30710 
-30711 
-30712 
-30713 
-30714 
-30715 
-30716 
-30717 
-30718 
-30719 
-30720 
-30721 
-30722 
-30723 
-30724 
-30725 
-30726 
-30727 
-30728 
-30729 
-30730 
-30731 
-30732 
-30733 
-30734 
-30735 
-30736 
-30737 
-30738 
-30739 
-30740 
-30741 
-30742 
-30743 
-30744 
-30745 
-30746 
-30747 
-30748 
-30749 
-30750 
-30751 
-30752 
-30753 
-30754 
-30755 
-30756 
-30757 
-30758 
-30759 
-30760 
-30761 
-30762 
-30763 
-30764 
-30765 
-30766 
-30767 
-30768 
-30769 
-30770 
-30771 
-30772 
-30773 
-30774 
-30775 
-30776 
-30777 
-30778 
-30779 
-30780 
-30781 
-30782 
-30783 
-30784 
-30785 
-30786 
-30787 
-30788 
-30789 
-30790 
-30791 
-30792 
-30793 
-30794 
-30795 
-30796 
-30797 
-30798 
-30799 
-30800 
-30801 
-30802 
-30803 
-30804 
-30805 
-30806 
-30807 
-30808 
-30809 
-30810 
-30811 
-30812 
-30813 
-30814 
-30815 
-30816 
-30817 
-30818 
-30819 
-30820 
-30821 
-30822 
-30823 
-30824 
-30825 
-30826 
-30827 
-30828 
-30829 
-30830 
-30831 
-30832 
-30833 
-30834 
-30835 
-30836 
-30837 
-30838 
-30839 
-30840 
-30841 
-30842 
-30843 
-30844 
-30845 
-30846 
-30847 
-30848 
-30849 
-30850 
-30851 
-30852 
-30853 
-30854 
-30855 
-30856 
-30857 
-30858 
-30859 
-30860 
-30861 
-30862 
-30863 
-30864 
-30865 
-30866 
-30867 
-30868 
-30869 
-30870 
-30871 
-30872 
-30873 
-30874 
-30875 
-30876 
-30877 
-30878 
-30879 
-30880 
-30881 
-30882 
-30883 
-30884 
-30885 
-30886 
-30887 
-30888 
-30889 
-30890 
-30891 
-30892 
-30893 
-30894 
-30895 
-30896 
-30897 
-30898 
-30899 
-30900 
-30901 
-30902 
-30903 
-30904 
-30905 
-30906 
-30907 
-30908 
-30909 
-30910 
-30911 
-30912 
-30913 
-30914 
-30915 
-30916 
-30917 
-30918 
-30919 
-30920 
-30921 
-30922 
-30923 
-30924 
-30925 
-30926 
-30927 
-30928 
-30929 
-30930 
-30931 
-30932 
-30933 
-30934 
-30935 
-30936 
-30937 
-30938 
-30939 
-30940 
-30941 
-30942 
-30943 
-30944 
-30945 
-30946 
-30947 
-30948 
-30949 
-30950 
-30951 
-30952 
-30953 
-30954 
-30955 
-30956 
-30957 
-30958 
-30959 
-30960 
-30961 
-30962 
-30963 
-30964 
-30965 
-30966 
-30967 
-30968 
-30969 
-30970 
-30971 
-30972 
-30973 
-30974 
-30975 
-30976 
-30977 
-30978 
-30979 
-30980 
-30981 
-30982 
-30983 
-30984 
-30985 
-30986 
-30987 
-30988 
-30989 
-30990 
-30991 
-30992 
-30993 
-30994 
-30995 
-30996 
-30997 
-30998 
-30999 
-31000 
-31001 
-31002 
-31003 
-31004 
-31005 
-31006 
-31007 
-31008 
-31009 
-31010 
-31011 
-31012 
-31013 
-31014 
-31015 
-31016 
-31017 
-31018 
-31019 
-31020 
-31021 
-31022 
-31023 
-31024 
-31025 
-31026 
-31027 
-31028 
-31029 
-31030 
-31031 
-31032 
-31033 
-31034 
-31035 
-31036 
-31037 
-31038 
-31039 
-31040 
-31041 
-31042 
-31043 
-31044 
-31045 
-31046 
-31047 
-31048 
-31049 
-31050 
-31051 
-31052 
-31053 
-31054 
-31055 
-31056 
-31057 
-31058 
-31059 
-31060 
-31061 
-31062 
-31063 
-31064 
-31065 
-31066 
-31067 
-31068 
-31069 
-31070 
-31071 
-31072 
-31073 
-31074 
-31075 
-31076 
-31077 
-31078 
-31079 
-31080 
-31081 
-31082 
-31083 
-31084 
-31085 
-31086 
-31087 
-31088 
-31089 
-31090 
-31091 
-31092 
-31093 
-31094 
-31095 
-31096 
-31097 
-31098 
-31099 
-31100 
-31101 
-31102 
-31103 
-31104 
-31105 
-31106 
-31107 
-31108 
-31109 
-31110 
-31111 
-31112 
-31113 
-31114 
-31115 
-31116 
-31117 
-31118 
-31119 
-31120 
-31121 
-31122 
-31123 
-31124 
-31125 
-31126 
-31127 
-31128 
-31129 
-31130 
-31131 
-31132 
-31133 
-31134 
-31135 
-31136 
-31137 
-31138 
-31139 
-31140 
-31141 
-31142 
-31143 
-31144 
-31145 
-31146 
-31147 
-31148 
-31149 
-31150 
-31151 
-31152 
-31153 
-31154 
-31155 
-31156 
-31157 
-31158 
-31159 
-31160 
-31161 
-31162 
-31163 
-31164 
-31165 
-31166 
-31167 
-31168 
-31169 
-31170 
-31171 
-31172 
-31173 
-31174 
-31175 
-31176 
-31177 
-31178 
-31179 
-31180 
-31181 
-31182 
-31183 
-31184 
-31185 
-31186 
-31187 
-31188 
-31189 
-31190 
-31191 
-31192 
-31193 
-31194 
-31195 
-31196 
-31197 
-31198 
-31199 
-31200 
-31201 
-31202 
-31203 
-31204 
-31205 
-31206 
-31207 
-31208 
-31209 
-31210 
-31211 
-31212 
-31213 
-31214 
-31215 
-31216 
-31217 
-31218 
-31219 
-31220 
-31221 
-31222 
-31223 
-31224 
-31225 
-31226 
-31227 
-31228 
-31229 
-31230 
-31231 
-31232 
-31233 
-31234 
-31235 
-31236 
-31237 
-31238 
-31239 
-31240 
-31241 
-31242 
-31243 
-31244 
-31245 
-31246 
-31247 
-31248 
-31249 
-31250 
-31251 
-31252 
-31253 
-31254 
-31255 
-31256 
-31257 
-31258 
-31259 
-31260 
-31261 
-31262 
-31263 
-31264 
-31265 
-31266 
-31267 
-31268 
-31269 
-31270 
-31271 
-31272 
-31273 
-31274 
-31275 
-31276 
-31277 
-31278 
-31279 
-31280 
-31281 
-31282 
-31283 
-31284 
-31285 
-31286 
-31287 
-31288 
-31289 
-31290 
-31291 
-31292 
-31293 
-31294 
-31295 
-31296 
-31297 
-31298 
-31299 
-31300 
-31301 
-31302 
-31303 
-31304 
-31305 
-31306 
-31307 
-31308 
-31309 
-31310 
-31311 
-31312 
-31313 
-31314 
-31315 
-31316 
-31317 
-31318 
-31319 
-31320 
-31321 
-31322 
-31323 
-31324 
-31325 
-31326 
-31327 
-31328 
-31329 
-31330 
-31331 
-31332 
-31333 
-31334 
-31335 
-31336 
-31337 
-31338 
-31339 
-31340 
-31341 
-31342 
-31343 
-31344 
-31345 
-31346 
-31347 
-31348 
-31349 
-31350 
-31351 
-31352 
-31353 
-31354 
-31355 
-31356 
-31357 
-31358 
-31359 
-31360 
-31361 
-31362 
-31363 
-31364 
-31365 
-31366 
-31367 
-31368 
-31369 
-31370 
-31371 
-31372 
-31373 
-31374 
-31375 
-31376 
-31377 
-31378 
-31379 
-31380 
-31381 
-31382 
-31383 
-31384 
-31385 
-31386 
-31387 
-31388 
-31389 
-31390 
-31391 
-31392 
-31393 
-31394 
-31395 
-31396 
-31397 
-31398 
-31399 
-31400 
-31401 
-31402 
-31403 
-31404 
-31405 
-31406 
-31407 
-31408 
-31409 
-31410 
-31411 
-31412 
-31413 
-31414 
-31415 
-31416 
-31417 
-31418 
-31419 
-31420 
-31421 
-31422 
-31423 
-31424 
-31425 
-31426 
-31427 
-31428 
-31429 
-31430 
-31431 
-31432 
-31433 
-31434 
-31435 
-31436 
-31437 
-31438 
-31439 
-31440 
-31441 
-31442 
-31443 
-31444 
-31445 
-31446 
-31447 
-31448 
-31449 
-31450 
-31451 
-31452 
-31453 
-31454 
-31455 
-31456 
-31457 
-31458 
-31459 
-31460 
-31461 
-31462 
-31463 
-31464 
-31465 
-31466 
-31467 
-31468 
-31469 
-31470 
-31471 
-31472 
-31473 
-31474 
-31475 
-31476 
-31477 
-31478 
-31479 
-31480 
-31481 
-31482 
-31483 
-31484 
-31485 
-31486 
-31487 
-31488 
-31489 
-31490 
-31491 
-31492 
-31493 
-31494 
-31495 
-31496 
-31497 
-31498 
-31499 
-31500 
-31501 
-31502 
-31503 
-31504 
-31505 
-31506 
-31507 
-31508 
-31509 
-31510 
-31511 
-31512 
-31513 
-31514 
-31515 
-31516 
-31517 
-31518 
-31519 
-31520 
-31521 
-31522 
-31523 
-31524 
-31525 
-31526 
-31527 
-31528 
-31529 
-31530 
-31531 
-31532 
-31533 
-31534 
-31535 
-31536 
-31537 
-31538 
-31539 
-31540 
-31541 
-31542 
-31543 
-31544 
-31545 
-31546 
-31547 
-31548 
-31549 
-31550 
-31551 
-31552 
-31553 
-31554 
-31555 
-31556 
-31557 
-31558 
-31559 
-31560 
-31561 
-31562 
-31563 
-31564 
-31565 
-31566 
-31567 
-31568 
-31569 
-31570 
-31571 
-31572 
-31573 
-31574 
-31575 
-31576 
-31577 
-31578 
-31579 
-31580 
-31581 
-31582 
-31583 
-31584 
-31585 
-31586 
-31587 
-31588 
-31589 
-31590 
-31591 
-31592 
-31593 
-31594 
-31595 
-31596 
-31597 
-31598 
-31599 
-31600 
-31601 
-31602 
-31603 
-31604 
-31605 
-31606 
-31607 
-31608 
-31609 
-31610 
-31611 
-31612 
-31613 
-31614 
-31615 
-31616 
-31617 
-31618 
-31619 
-31620 
-31621 
-31622 
-31623 
-31624 
-31625 
-31626 
-31627 
-31628 
-31629 
-31630 
-31631 
-31632 
-31633 
-31634 
-31635 
-31636 
-31637 
-31638 
-31639 
-31640 
-31641 
-31642 
-31643 
-31644 
-31645 
-31646 
-31647 
-31648 
-31649 
-31650 
-31651 
-31652 
-31653 
-31654 
-31655 
-31656 
-31657 
-31658 
-31659 
-31660 
-31661 
-31662 
-31663 
-31664 
-31665 
-31666 
-31667 
-31668 
-31669 
-31670 
-31671 
-31672 
-31673 
-31674 
-31675 
-31676 
-31677 
-31678 
-31679 
-31680 
-31681 
-31682 
-31683 
-31684 
-31685 
-31686 
-31687 
-31688 
-31689 
-31690 
-31691 
-31692 
-31693 
-31694 
-31695 
-31696 
-31697 
-31698 
-31699 
-31700 
-31701 
-31702 
-31703 
-31704 
-31705 
-31706 
-31707 
-31708 
-31709 
-31710 
-31711 
-31712 
-31713 
-31714 
-31715 
-31716 
-31717 
-31718 
-31719 
-31720 
-31721 
-31722 
-31723 
-31724 
-31725 
-31726 
-31727 
-31728 
-31729 
-31730 
-31731 
-31732 
-31733 
-31734 
-31735 
-31736 
-31737 
-31738 
-31739 
-31740 
-31741 
-31742 
-31743 
-31744 
-31745 
-31746 
-31747 
-31748 
-31749 
-31750 
-31751 
-31752 
-31753 
-31754 
-31755 
-31756 
-31757 
-31758 
-31759 
-31760 
-31761 
-31762 
-31763 
-31764 
-31765 
-31766 
-31767 
-31768 
-31769 
-31770 
-31771 
-31772 
-31773 
-31774 
-31775 
-31776 
-31777 
-31778 
-31779 
-31780 
-31781 
-31782 
-31783 
-31784 
-31785 
-31786 
-31787 
-31788 
-31789 
-31790 
-31791 
-31792 
-31793 
-31794 
-31795 
-31796 
-31797 
-31798 
-31799 
-31800 
-31801 
-31802 
-31803 
-31804 
-31805 
-31806 
-31807 
-31808 
-31809 
-31810 
-31811 
-31812 
-31813 
-31814 
-31815 
-31816 
-31817 
-31818 
-31819 
-31820 
-31821 
-31822 
-31823 
-31824 
-31825 
-31826 
-31827 
-31828 
-31829 
-31830 
-31831 
-31832 
-31833 
-31834 
-31835 
-31836 
-31837 
-31838 
-31839 
-31840 
-31841 
-31842 
-31843 
-31844 
-31845 
-31846 
-31847 
-31848 
-31849 
-31850 
-31851 
-31852 
-31853 
-31854 
-31855 
-31856 
-31857 
-31858 
-31859 
-31860 
-31861 
-31862 
-31863 
-31864 
-31865 
-31866 
-31867 
-31868 
-31869 
-31870 
-31871 
-31872 
-31873 
-31874 
-31875 
-31876 
-31877 
-31878 
-31879 
-31880 
-31881 
-31882 
-31883 
-31884 
-31885 
-31886 
-31887 
-31888 
-31889 
-31890 
-31891 
-31892 
-31893 
-31894 
-31895 
-31896 
-31897 
-31898 
-31899 
-31900 
-31901 
-31902 
-31903 
-31904 
-31905 
-31906 
-31907 
-31908 
-31909 
-31910 
-31911 
-31912 
-31913 
-31914 
-31915 
-31916 
-31917 
-31918 
-31919 
-31920 
-31921 
-31922 
-31923 
-31924 
-31925 
-31926 
-31927 
-31928 
-31929 
-31930 
-31931 
-31932 
-31933 
-31934 
-31935 
-31936 
-31937 
-31938 
-31939 
-31940 
-31941 
-31942 
-31943 
-31944 
-31945 
-31946 
-31947 
-31948 
-31949 
-31950 
-31951 
-31952 
-31953 
-31954 
-31955 
-31956 
-31957 
-31958 
-31959 
-31960 
-31961 
-31962 
-31963 
-31964 
-31965 
-31966 
-31967 
-31968 
-31969 
-31970 
-31971 
-31972 
-31973 
-31974 
-31975 
-31976 
-31977 
-31978 
-31979 
-31980 
-31981 
-31982 
-31983 
-31984 
-31985 
-31986 
-31987 
-31988 
-31989 
-31990 
-31991 
-31992 
-31993 
-31994 
-31995 
-31996 
-31997 
-31998 
-31999 
-32000 
-32001 
-32002 
-32003 
-32004 
-32005 
-32006 
-32007 
-32008 
-32009 
-32010 
-32011 
-32012 
-32013 
-32014 
-32015 
-32016 
-32017 
-32018 
-32019 
-32020 
-32021 
-32022 
-32023 
-32024 
-32025 
-32026 
-32027 
-32028 
-32029 
-32030 
-32031 
-32032 
-32033 
-32034 
-32035 
-32036 
-32037 
-32038 
-32039 
-32040 
-32041 
-32042 
-32043 
-32044 
-32045 
-32046 
-32047 
-32048 
-32049 
-32050 
-32051 
-32052 
-32053 
-32054 
-32055 
-32056 
-32057 
-32058 
-32059 
-32060 
-32061 
-32062 
-32063 
-32064 
-32065 
-32066 
-32067 
-32068 
-32069 
-32070 
-32071 
-32072 
-32073 
-32074 
-32075 
-32076 
-32077 
-32078 
-32079 
-32080 
-32081 
-32082 
-32083 
-32084 
-32085 
-32086 
-32087 
-32088 
-32089 
-32090 
-32091 
-32092 
-32093 
-32094 
-32095 
-32096 
-32097 
-32098 
-32099 
-32100 
-32101 
-32102 
-32103 
-32104 
-32105 
-32106 
-32107 
-32108 
-32109 
-32110 
-32111 
-32112 
-32113 
-32114 
-32115 
-32116 
-32117 
-32118 
-32119 
-32120 
-32121 
-32122 
-32123 
-32124 
-32125 
-32126 
-32127 
-32128 
-32129 
-32130 
-32131 
-32132 
-32133 
-32134 
-32135 
-32136 
-32137 
-32138 
-32139 
-32140 
-32141 
-32142 
-32143 
-32144 
-32145 
-32146 
-32147 
-32148 
-32149 
-32150 
-32151 
-32152 
-32153 
-32154 
-32155 
-32156 
-32157 
-32158 
-32159 
-32160 
-32161 
-32162 
-32163 
-32164 
-32165 
-32166 
-32167 
-32168 
-32169 
-32170 
-32171 
-32172 
-32173 
-32174 
-32175 
-32176 
-32177 
-32178 
-32179 
-32180 
-32181 
-32182 
-32183 
-32184 
-32185 
-32186 
-32187 
-32188 
-32189 
-32190 
-32191 
-32192 
-32193 
-32194 
-32195 
-32196 
-32197 
-32198 
-32199 
-32200 
-32201 
-32202 
-32203 
-32204 
-32205 
-32206 
-32207 
-32208 
-32209 
-32210 
-32211 
-32212 
-32213 
-32214 
-32215 
-32216 
-32217 
-32218 
-32219 
-32220 
-32221 
-32222 
-32223 
-32224 
-32225 
-32226 
-32227 
-32228 
-32229 
-32230 
-32231 
-32232 
-32233 
-32234 
-32235 
-32236 
-32237 
-32238 
-32239 
-32240 
-32241 
-32242 
-32243 
-32244 
-32245 
-32246 
-32247 
-32248 
-32249 
-32250 
-32251 
-32252 
-32253 
-32254 
-32255 
-32256 
-32257 
-32258 
-32259 
-32260 
-32261 
-32262 
-32263 
-32264 
-32265 
-32266 
-32267 
-32268 
-32269 
-32270 
-32271 
-32272 
-32273 
-32274 
-32275 
-32276 
-32277 
-32278 
-32279 
-32280 
-32281 
-32282 
-32283 
-32284 
-32285 
-32286 
-32287 
-32288 
-32289 
-32290 
-32291 
-32292 
-32293 
-32294 
-32295 
-32296 
-32297 
-32298 
-32299 
-32300 
-32301 
-32302 
-32303 
-32304 
-32305 
-32306 
-32307 
-32308 
-32309 
-32310 
-32311 
-32312 
-32313 
-32314 
-32315 
-32316 
-32317 
-32318 
-32319 
-32320 
-32321 
-32322 
-32323 
-32324 
-32325 
-32326 
-32327 
-32328 
-32329 
-32330 
-32331 
-32332 
-32333 
-32334 
-32335 
-32336 
-32337 
-32338 
-32339 
-32340 
-32341 
-32342 
-32343 
-32344 
-32345 
-32346 
-32347 
-32348 
-32349 
-32350 
-32351 
-32352 
-32353 
-32354 
-32355 
-32356 
-32357 
-32358 
-32359 
-32360 
-32361 
-32362 
-32363 
-32364 
-32365 
-32366 
-32367 
-32368 
-32369 
-32370 
-32371 
-32372 
-32373 
-32374 
-32375 
-32376 
-32377 
-32378 
-32379 
-32380 
-32381 
-32382 
-32383 
-32384 
-32385 
-32386 
-32387 
-32388 
-32389 
-32390 
-32391 
-32392 
-32393 
-32394 
-32395 
-32396 
-32397 
-32398 
-32399 
-32400 
-32401 
-32402 
-32403 
-32404 
-32405 
-32406 
-32407 
-32408 
-32409 
-32410 
-32411 
-32412 
-32413 
-32414 
-32415 
-32416 
-32417 
-32418 
-32419 
-32420 
-32421 
-32422 
-32423 
-32424 
-32425 
-32426 
-32427 
-32428 
-32429 
-32430 
-32431 
-32432 
-32433 
-32434 
-32435 
-32436 
-32437 
-32438 
-32439 
-32440 
-32441 
-32442 
-32443 
-32444 
-32445 
-32446 
-32447 
-32448 
-32449 
-32450 
-32451 
-32452 
-32453 
-32454 
-32455 
-32456 
-32457 
-32458 
-32459 
-32460 
-32461 
-32462 
-32463 
-32464 
-32465 
-32466 
-32467 
-32468 
-32469 
-32470 
-32471 
-32472 
-32473 
-32474 
-32475 
-32476 
-32477 
-32478 
-32479 
-32480 
-32481 
-32482 
-32483 
-32484 
-32485 
-32486 
-32487 
-32488 
-32489 
-32490 
-32491 
-32492 
-32493 
-32494 
-32495 
-32496 
-32497 
-32498 
-32499 
-32500 
-32501 
-32502 
-32503 
-32504 
-32505 
-32506 
-32507 
-32508 
-32509 
-32510 
-32511 
-32512 
-32513 
-32514 
-32515 
-32516 
-32517 
-32518 
-32519 
-32520 
-32521 
-32522 
-32523 
-32524 
-32525 
-32526 
-32527 
-32528 
-32529 
-32530 
-32531 
-32532 
-32533 
-32534 
-32535 
-32536 
-32537 
-32538 
-32539 
-32540 
-32541 
-32542 
-32543 
-32544 
-32545 
-32546 
-32547 
-32548 
-32549 
-32550 
-32551 
-32552 
-32553 
-32554 
-32555 
-32556 
-32557 
-32558 
-32559 
-32560 
-32561 
-32562 
-32563 
-32564 
-32565 
-32566 
-32567 
-32568 
-32569 
-32570 
-32571 
-32572 
-32573 
-32574 
-32575 
-32576 
-32577 
-32578 
-32579 
-32580 
-32581 
-32582 
-32583 
-32584 
-32585 
-32586 
-32587 
-32588 
-32589 
-32590 
-32591 
-32592 
-32593 
-32594 
-32595 
-32596 
-32597 
-32598 
-32599 
-32600 
-32601 
-32602 
-32603 
-32604 
-32605 
-32606 
-32607 
-32608 
-32609 
-32610 
-32611 
-32612 
-32613 
-32614 
-32615 
-32616 
-32617 
-32618 
-32619 
-32620 
-32621 
-32622 
-32623 
-32624 
-32625 
-32626 
-32627 
-32628 
-32629 
-32630 
-32631 
-32632 
-32633 
-32634 
-32635 
-32636 
-32637 
-32638 
-32639 
-32640 
-32641 
-32642 
-32643 
-32644 
-32645 
-32646 
-32647 
-32648 
-32649 
-32650 
-32651 
-32652 
-32653 
-32654 
-32655 
-32656 
-32657 
-32658 
-32659 
-32660 
-32661 
-32662 
-32663 
-32664 
-32665 
-32666 
-32667 
-32668 
-32669 
-32670 
-32671 
-32672 
-32673 
-32674 
-32675 
-32676 
-32677 
-32678 
-32679 
-32680 
-32681 
-32682 
-32683 
-32684 
-32685 
-32686 
-32687 
-32688 
-32689 
-32690 
-32691 
-32692 
-32693 
-32694 
-32695 
-32696 
-32697 
-32698 
-32699 
-32700 
-32701 
-32702 
-32703 
-32704 
-32705 
-32706 
-32707 
-32708 
-32709 
-32710 
-32711 
-32712 
-32713 
-32714 
-32715 
-32716 
-32717 
-32718 
-32719 
-32720 
-32721 
-32722 
-32723 
-32724 
-32725 
-32726 
-32727 
-32728 
-32729 
-32730 
-32731 
-32732 
-32733 
-32734 
-32735 
-32736 
-32737 
-32738 
-32739 
-32740 
-32741 
-32742 
-32743 
-32744 
-32745 
-32746 
-32747 
-32748 
-32749 
-32750 
-32751 
-32752 
-32753 
-32754 
-32755 
-32756 
-32757 
-32758 
-32759 
-32760 
-32761 
-32762 
-32763 
-32764 
-32765 
-32766 
-32767 
-)
-
-// ************************************************************************* //
diff --git a/tutorials/multiphase/interDyMFoam/ras/damBreakWithObstacle/system/fvSchemes b/tutorials/multiphase/interDyMFoam/ras/damBreakWithObstacle/system/fvSchemes
index c563a4cd8fe840a8bbabf755739cbf83ae20fff5..a6ed1d41742c9330925f532a0f080cce8bdbe21e 100644
--- a/tutorials/multiphase/interDyMFoam/ras/damBreakWithObstacle/system/fvSchemes
+++ b/tutorials/multiphase/interDyMFoam/ras/damBreakWithObstacle/system/fvSchemes
@@ -52,9 +52,9 @@ snGradSchemes
 fluxRequired
 {
     default         no;
-    pd              ;
-    pcorr           ;
-    alpha           ;
+    p;
+    pcorr;
+    alpha;
 }
 
 
diff --git a/tutorials/multiphase/interDyMFoam/ras/damBreakWithObstacle/system/fvSolution b/tutorials/multiphase/interDyMFoam/ras/damBreakWithObstacle/system/fvSolution
index 2ca306273d2f9178a190c71b10c6f37cbc5ac67a..fe7b6a88515a806090e82ac24cc50f10c9ea01df 100644
--- a/tutorials/multiphase/interDyMFoam/ras/damBreakWithObstacle/system/fvSolution
+++ b/tutorials/multiphase/interDyMFoam/ras/damBreakWithObstacle/system/fvSolution
@@ -40,7 +40,7 @@ solvers
         maxIter         100;
     }
 
-    pd
+    p
     {
         solver          GAMG;
         tolerance       1e-08;
@@ -55,7 +55,7 @@ solvers
         mergeLevels     1;
     }
 
-    pdFinal
+    pFinal
     {
         solver          PCG;
         preconditioner
@@ -122,9 +122,8 @@ PISO
     nAlphaSubCycles 3;
     cAlpha          1;
 
-    pdRefPoint      (0.51 0.51 0.51);
-    pdRefValue      0;
-    pRefValue       0;
+    pRefPoint      (0.51 0.51 0.51);
+    pRefValue      0;
 }
 
 
diff --git a/tutorials/multiphase/interDyMFoam/ras/sloshingTank2D3DoF/0/pd b/tutorials/multiphase/interDyMFoam/ras/sloshingTank2D/0/p
similarity index 98%
rename from tutorials/multiphase/interDyMFoam/ras/sloshingTank2D3DoF/0/pd
rename to tutorials/multiphase/interDyMFoam/ras/sloshingTank2D/0/p
index 020ff7cc00a27e6b27aed9640ba406c34958cb98..c69b424dc75602864a806fc737b9f17d4017de74 100644
--- a/tutorials/multiphase/interDyMFoam/ras/sloshingTank2D3DoF/0/pd
+++ b/tutorials/multiphase/interDyMFoam/ras/sloshingTank2D/0/p
@@ -10,7 +10,7 @@ FoamFile
     version     2.0;
     format      ascii;
     class       volScalarField;
-    object      pd;
+    object      p;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
diff --git a/tutorials/multiphase/interDyMFoam/ras/sloshingTank2D/system/controlDict b/tutorials/multiphase/interDyMFoam/ras/sloshingTank2D/system/controlDict
index e4a69588f6ea514229a8f1616348508e27a1bc41..35735bacbbe1f9b409860731920c58c2bb23e935 100644
--- a/tutorials/multiphase/interDyMFoam/ras/sloshingTank2D/system/controlDict
+++ b/tutorials/multiphase/interDyMFoam/ras/sloshingTank2D/system/controlDict
@@ -54,7 +54,7 @@ functions
     probes
     {
         type            probes;
-        name            probes;
+        functionObjectLibs ( "libsampling.so" );
         outputControl   timeStep;
         outputInterval  1;
         probeLocations
diff --git a/tutorials/multiphase/interDyMFoam/ras/sloshingTank2D/system/fvSchemes b/tutorials/multiphase/interDyMFoam/ras/sloshingTank2D/system/fvSchemes
index 3a940dbe40590b8a3661aaa877dc5c159edb986e..2f7da16bb6cae840274d0344b5c92de2fc959ed3 100644
--- a/tutorials/multiphase/interDyMFoam/ras/sloshingTank2D/system/fvSchemes
+++ b/tutorials/multiphase/interDyMFoam/ras/sloshingTank2D/system/fvSchemes
@@ -52,9 +52,9 @@ snGradSchemes
 fluxRequired
 {
     default         no;
-    pd              ;
-    pcorr           ;
-    alpha           ;
+    p;
+    pcorr;
+    alpha;
 }
 
 
diff --git a/tutorials/multiphase/interDyMFoam/ras/sloshingTank2D/system/fvSolution b/tutorials/multiphase/interDyMFoam/ras/sloshingTank2D/system/fvSolution
index c9dccc239e4610d982bc3f6e8a70b36aad0e9d79..77e4ff75cfbdbc79a7a241312acdab31fb65a954 100644
--- a/tutorials/multiphase/interDyMFoam/ras/sloshingTank2D/system/fvSolution
+++ b/tutorials/multiphase/interDyMFoam/ras/sloshingTank2D/system/fvSolution
@@ -40,7 +40,7 @@ solvers
         maxIter         100;
     }
 
-    pd
+    p
     {
         solver          GAMG;
         tolerance       1e-08;
@@ -55,7 +55,7 @@ solvers
         mergeLevels     1;
     }
 
-    pdFinal
+    pFinal
     {
         solver          PCG;
         preconditioner
@@ -99,8 +99,7 @@ PISO
     cAlpha          1.5;
     correctPhi      no;
 
-    pdRefPoint      (0 0 0.15);
-    pdRefValue      0;
+    pRefPoint       (0 0 0.15);
     pRefValue       1e5;
 }
 
diff --git a/tutorials/multiphase/interDyMFoam/ras/sloshingTank2D/system/setFieldsDict b/tutorials/multiphase/interDyMFoam/ras/sloshingTank2D/system/setFieldsDict
index 7ff571c6d130cf0424493bcc96a52251eedc746a..ec8d1717d50aba095d49655c4509cd75692a659b 100644
--- a/tutorials/multiphase/interDyMFoam/ras/sloshingTank2D/system/setFieldsDict
+++ b/tutorials/multiphase/interDyMFoam/ras/sloshingTank2D/system/setFieldsDict
@@ -25,7 +25,10 @@ regions
     boxToCell
     {
         box ( -100 -100 -100 ) ( 100 100 0 );
-        fieldValues ( volScalarFieldValue alpha1 1 );
+        fieldValues
+        (
+            volScalarFieldValue alpha1 1
+        );
     }
 );
 
diff --git a/tutorials/multiphase/interDyMFoam/ras/sloshingTank2D/0/pd b/tutorials/multiphase/interDyMFoam/ras/sloshingTank2D3DoF/0/p
similarity index 98%
rename from tutorials/multiphase/interDyMFoam/ras/sloshingTank2D/0/pd
rename to tutorials/multiphase/interDyMFoam/ras/sloshingTank2D3DoF/0/p
index 020ff7cc00a27e6b27aed9640ba406c34958cb98..c69b424dc75602864a806fc737b9f17d4017de74 100644
--- a/tutorials/multiphase/interDyMFoam/ras/sloshingTank2D/0/pd
+++ b/tutorials/multiphase/interDyMFoam/ras/sloshingTank2D3DoF/0/p
@@ -10,7 +10,7 @@ FoamFile
     version     2.0;
     format      ascii;
     class       volScalarField;
-    object      pd;
+    object      p;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
diff --git a/tutorials/multiphase/interDyMFoam/ras/sloshingTank2D3DoF/system/fvSchemes b/tutorials/multiphase/interDyMFoam/ras/sloshingTank2D3DoF/system/fvSchemes
index d4eb5a19662e68864722f579d30296c6d4fbfd87..b5c55ba3d740f3873f7f59512cfcb73893801262 100644
--- a/tutorials/multiphase/interDyMFoam/ras/sloshingTank2D3DoF/system/fvSchemes
+++ b/tutorials/multiphase/interDyMFoam/ras/sloshingTank2D3DoF/system/fvSchemes
@@ -52,9 +52,9 @@ snGradSchemes
 fluxRequired
 {
     default         no;
-    pd              ;
-    pcorr           ;
-    alpha           ;
+    p;
+    pcorr;
+    alpha;
 }
 
 
diff --git a/tutorials/multiphase/interDyMFoam/ras/sloshingTank2D3DoF/system/fvSolution b/tutorials/multiphase/interDyMFoam/ras/sloshingTank2D3DoF/system/fvSolution
index c9dccc239e4610d982bc3f6e8a70b36aad0e9d79..77e4ff75cfbdbc79a7a241312acdab31fb65a954 100644
--- a/tutorials/multiphase/interDyMFoam/ras/sloshingTank2D3DoF/system/fvSolution
+++ b/tutorials/multiphase/interDyMFoam/ras/sloshingTank2D3DoF/system/fvSolution
@@ -40,7 +40,7 @@ solvers
         maxIter         100;
     }
 
-    pd
+    p
     {
         solver          GAMG;
         tolerance       1e-08;
@@ -55,7 +55,7 @@ solvers
         mergeLevels     1;
     }
 
-    pdFinal
+    pFinal
     {
         solver          PCG;
         preconditioner
@@ -99,8 +99,7 @@ PISO
     cAlpha          1.5;
     correctPhi      no;
 
-    pdRefPoint      (0 0 0.15);
-    pdRefValue      0;
+    pRefPoint       (0 0 0.15);
     pRefValue       1e5;
 }
 
diff --git a/tutorials/multiphase/interDyMFoam/ras/sloshingTank2D3DoF/system/setFieldsDict b/tutorials/multiphase/interDyMFoam/ras/sloshingTank2D3DoF/system/setFieldsDict
index 7ff571c6d130cf0424493bcc96a52251eedc746a..ec8d1717d50aba095d49655c4509cd75692a659b 100644
--- a/tutorials/multiphase/interDyMFoam/ras/sloshingTank2D3DoF/system/setFieldsDict
+++ b/tutorials/multiphase/interDyMFoam/ras/sloshingTank2D3DoF/system/setFieldsDict
@@ -25,7 +25,10 @@ regions
     boxToCell
     {
         box ( -100 -100 -100 ) ( 100 100 0 );
-        fieldValues ( volScalarFieldValue alpha1 1 );
+        fieldValues
+        (
+            volScalarFieldValue alpha1 1
+        );
     }
 );
 
diff --git a/tutorials/multiphase/interDyMFoam/ras/sloshingTank3D6DoF/0/pd b/tutorials/multiphase/interDyMFoam/ras/sloshingTank3D/0/p
similarity index 97%
rename from tutorials/multiphase/interDyMFoam/ras/sloshingTank3D6DoF/0/pd
rename to tutorials/multiphase/interDyMFoam/ras/sloshingTank3D/0/p
index ac7e49da81a5ead98e613c5891faccae05ef2629..d27ad70eb9ed4cdf91ec9cf25222554b271898e7 100644
--- a/tutorials/multiphase/interDyMFoam/ras/sloshingTank3D6DoF/0/pd
+++ b/tutorials/multiphase/interDyMFoam/ras/sloshingTank3D/0/p
@@ -10,7 +10,7 @@ FoamFile
     version     2.0;
     format      ascii;
     class       volScalarField;
-    object      pd;
+    object      p;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
diff --git a/tutorials/multiphase/interDyMFoam/ras/sloshingTank3D/system/fvSchemes b/tutorials/multiphase/interDyMFoam/ras/sloshingTank3D/system/fvSchemes
index d4eb5a19662e68864722f579d30296c6d4fbfd87..b5c55ba3d740f3873f7f59512cfcb73893801262 100644
--- a/tutorials/multiphase/interDyMFoam/ras/sloshingTank3D/system/fvSchemes
+++ b/tutorials/multiphase/interDyMFoam/ras/sloshingTank3D/system/fvSchemes
@@ -52,9 +52,9 @@ snGradSchemes
 fluxRequired
 {
     default         no;
-    pd              ;
-    pcorr           ;
-    alpha           ;
+    p;
+    pcorr;
+    alpha;
 }
 
 
diff --git a/tutorials/multiphase/interDyMFoam/ras/sloshingTank3D/system/fvSolution b/tutorials/multiphase/interDyMFoam/ras/sloshingTank3D/system/fvSolution
index c9dccc239e4610d982bc3f6e8a70b36aad0e9d79..77e4ff75cfbdbc79a7a241312acdab31fb65a954 100644
--- a/tutorials/multiphase/interDyMFoam/ras/sloshingTank3D/system/fvSolution
+++ b/tutorials/multiphase/interDyMFoam/ras/sloshingTank3D/system/fvSolution
@@ -40,7 +40,7 @@ solvers
         maxIter         100;
     }
 
-    pd
+    p
     {
         solver          GAMG;
         tolerance       1e-08;
@@ -55,7 +55,7 @@ solvers
         mergeLevels     1;
     }
 
-    pdFinal
+    pFinal
     {
         solver          PCG;
         preconditioner
@@ -99,8 +99,7 @@ PISO
     cAlpha          1.5;
     correctPhi      no;
 
-    pdRefPoint      (0 0 0.15);
-    pdRefValue      0;
+    pRefPoint       (0 0 0.15);
     pRefValue       1e5;
 }
 
diff --git a/tutorials/multiphase/interDyMFoam/ras/sloshingTank3D/system/setFieldsDict b/tutorials/multiphase/interDyMFoam/ras/sloshingTank3D/system/setFieldsDict
index 2f947e62416f71a3ff19b87376388cab9269939a..bceaad67cefa6f8fed8a77df0e41275a7d0dc295 100644
--- a/tutorials/multiphase/interDyMFoam/ras/sloshingTank3D/system/setFieldsDict
+++ b/tutorials/multiphase/interDyMFoam/ras/sloshingTank3D/system/setFieldsDict
@@ -25,7 +25,10 @@ regions
     boxToCell
     {
         box ( -100 -100 -100 ) ( 100 100 0 );
-        fieldValues ( volScalarFieldValue alpha1 1 );
+        fieldValues
+        (
+            volScalarFieldValue alpha1 1
+        );
     }
 );
 
diff --git a/tutorials/multiphase/interDyMFoam/ras/sloshingTank3D/0/pd b/tutorials/multiphase/interDyMFoam/ras/sloshingTank3D3DoF/0/p
similarity index 97%
rename from tutorials/multiphase/interDyMFoam/ras/sloshingTank3D/0/pd
rename to tutorials/multiphase/interDyMFoam/ras/sloshingTank3D3DoF/0/p
index ac7e49da81a5ead98e613c5891faccae05ef2629..d27ad70eb9ed4cdf91ec9cf25222554b271898e7 100644
--- a/tutorials/multiphase/interDyMFoam/ras/sloshingTank3D/0/pd
+++ b/tutorials/multiphase/interDyMFoam/ras/sloshingTank3D3DoF/0/p
@@ -10,7 +10,7 @@ FoamFile
     version     2.0;
     format      ascii;
     class       volScalarField;
-    object      pd;
+    object      p;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
diff --git a/tutorials/multiphase/interDyMFoam/ras/sloshingTank3D3DoF/system/fvSchemes b/tutorials/multiphase/interDyMFoam/ras/sloshingTank3D3DoF/system/fvSchemes
index d4eb5a19662e68864722f579d30296c6d4fbfd87..b5c55ba3d740f3873f7f59512cfcb73893801262 100644
--- a/tutorials/multiphase/interDyMFoam/ras/sloshingTank3D3DoF/system/fvSchemes
+++ b/tutorials/multiphase/interDyMFoam/ras/sloshingTank3D3DoF/system/fvSchemes
@@ -52,9 +52,9 @@ snGradSchemes
 fluxRequired
 {
     default         no;
-    pd              ;
-    pcorr           ;
-    alpha           ;
+    p;
+    pcorr;
+    alpha;
 }
 
 
diff --git a/tutorials/multiphase/interDyMFoam/ras/sloshingTank3D3DoF/system/fvSolution b/tutorials/multiphase/interDyMFoam/ras/sloshingTank3D3DoF/system/fvSolution
index c9dccc239e4610d982bc3f6e8a70b36aad0e9d79..77e4ff75cfbdbc79a7a241312acdab31fb65a954 100644
--- a/tutorials/multiphase/interDyMFoam/ras/sloshingTank3D3DoF/system/fvSolution
+++ b/tutorials/multiphase/interDyMFoam/ras/sloshingTank3D3DoF/system/fvSolution
@@ -40,7 +40,7 @@ solvers
         maxIter         100;
     }
 
-    pd
+    p
     {
         solver          GAMG;
         tolerance       1e-08;
@@ -55,7 +55,7 @@ solvers
         mergeLevels     1;
     }
 
-    pdFinal
+    pFinal
     {
         solver          PCG;
         preconditioner
@@ -99,8 +99,7 @@ PISO
     cAlpha          1.5;
     correctPhi      no;
 
-    pdRefPoint      (0 0 0.15);
-    pdRefValue      0;
+    pRefPoint       (0 0 0.15);
     pRefValue       1e5;
 }
 
diff --git a/tutorials/multiphase/interDyMFoam/ras/sloshingTank3D3DoF/system/setFieldsDict b/tutorials/multiphase/interDyMFoam/ras/sloshingTank3D3DoF/system/setFieldsDict
index 7ff571c6d130cf0424493bcc96a52251eedc746a..ec8d1717d50aba095d49655c4509cd75692a659b 100644
--- a/tutorials/multiphase/interDyMFoam/ras/sloshingTank3D3DoF/system/setFieldsDict
+++ b/tutorials/multiphase/interDyMFoam/ras/sloshingTank3D3DoF/system/setFieldsDict
@@ -25,7 +25,10 @@ regions
     boxToCell
     {
         box ( -100 -100 -100 ) ( 100 100 0 );
-        fieldValues ( volScalarFieldValue alpha1 1 );
+        fieldValues
+        (
+            volScalarFieldValue alpha1 1
+        );
     }
 );
 
diff --git a/tutorials/multiphase/interDyMFoam/ras/sloshingTank3D3DoF/0/pd b/tutorials/multiphase/interDyMFoam/ras/sloshingTank3D6DoF/0/p
similarity index 97%
rename from tutorials/multiphase/interDyMFoam/ras/sloshingTank3D3DoF/0/pd
rename to tutorials/multiphase/interDyMFoam/ras/sloshingTank3D6DoF/0/p
index ac7e49da81a5ead98e613c5891faccae05ef2629..d27ad70eb9ed4cdf91ec9cf25222554b271898e7 100644
--- a/tutorials/multiphase/interDyMFoam/ras/sloshingTank3D3DoF/0/pd
+++ b/tutorials/multiphase/interDyMFoam/ras/sloshingTank3D6DoF/0/p
@@ -10,7 +10,7 @@ FoamFile
     version     2.0;
     format      ascii;
     class       volScalarField;
-    object      pd;
+    object      p;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
diff --git a/tutorials/multiphase/interDyMFoam/ras/sloshingTank3D6DoF/system/fvSchemes b/tutorials/multiphase/interDyMFoam/ras/sloshingTank3D6DoF/system/fvSchemes
index d4eb5a19662e68864722f579d30296c6d4fbfd87..b5c55ba3d740f3873f7f59512cfcb73893801262 100644
--- a/tutorials/multiphase/interDyMFoam/ras/sloshingTank3D6DoF/system/fvSchemes
+++ b/tutorials/multiphase/interDyMFoam/ras/sloshingTank3D6DoF/system/fvSchemes
@@ -52,9 +52,9 @@ snGradSchemes
 fluxRequired
 {
     default         no;
-    pd              ;
-    pcorr           ;
-    alpha           ;
+    p;
+    pcorr;
+    alpha;
 }
 
 
diff --git a/tutorials/multiphase/interDyMFoam/ras/sloshingTank3D6DoF/system/fvSolution b/tutorials/multiphase/interDyMFoam/ras/sloshingTank3D6DoF/system/fvSolution
index c9dccc239e4610d982bc3f6e8a70b36aad0e9d79..77e4ff75cfbdbc79a7a241312acdab31fb65a954 100644
--- a/tutorials/multiphase/interDyMFoam/ras/sloshingTank3D6DoF/system/fvSolution
+++ b/tutorials/multiphase/interDyMFoam/ras/sloshingTank3D6DoF/system/fvSolution
@@ -40,7 +40,7 @@ solvers
         maxIter         100;
     }
 
-    pd
+    p
     {
         solver          GAMG;
         tolerance       1e-08;
@@ -55,7 +55,7 @@ solvers
         mergeLevels     1;
     }
 
-    pdFinal
+    pFinal
     {
         solver          PCG;
         preconditioner
@@ -99,8 +99,7 @@ PISO
     cAlpha          1.5;
     correctPhi      no;
 
-    pdRefPoint      (0 0 0.15);
-    pdRefValue      0;
+    pRefPoint       (0 0 0.15);
     pRefValue       1e5;
 }
 
diff --git a/tutorials/multiphase/interFoam/MRFInterFoam/MRFInterFoam/MRFInterFoam.C b/tutorials/multiphase/interFoam/MRFInterFoam/MRFInterFoam/MRFInterFoam.C
new file mode 100644
index 0000000000000000000000000000000000000000..9f1efad337fce1be11e0728662c8980823f3ab80
--- /dev/null
+++ b/tutorials/multiphase/interFoam/MRFInterFoam/MRFInterFoam/MRFInterFoam.C
@@ -0,0 +1,109 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Application
+    MRFInterFoam
+
+Description
+    Solver for 2 incompressible, isothermal immiscible fluids using a VOF
+    (volume of fluid) phase-fraction based interface capturing approach.
+    The momentum and other fluid properties are of the "mixture" and a single
+    momentum equation is solved.
+
+    Turbulence modelling is generic, i.e. laminar, RAS or LES may be selected.
+
+    For a two-fluid approach see twoPhaseEulerFoam.
+
+\*---------------------------------------------------------------------------*/
+
+#include "fvCFD.H"
+#include "MULES.H"
+#include "subCycle.H"
+#include "interfaceProperties.H"
+#include "twoPhaseMixture.H"
+#include "turbulenceModel.H"
+#include "MRFZones.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+int main(int argc, char *argv[])
+{
+    #include "setRootCase.H"
+    #include "createTime.H"
+    #include "createMesh.H"
+    #include "readEnvironmentalProperties.H"
+    #include "readPISOControls.H"
+    #include "initContinuityErrs.H"
+    #include "createFields.H"
+    #include "createMRFZones.H"
+    #include "readTimeControls.H"
+    #include "correctPhi.H"
+    #include "CourantNo.H"
+    #include "setInitialDeltaT.H"
+
+    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+    Info<< "\nStarting time loop\n" << endl;
+
+    while (runTime.run())
+    {
+        #include "readPISOControls.H"
+        #include "readTimeControls.H"
+        #include "CourantNo.H"
+        #include "setDeltaT.H"
+
+        runTime++;
+
+        Info<< "Time = " << runTime.timeName() << nl << endl;
+
+        twoPhaseProperties.correct();
+
+        #include "alphaEqnSubCycle.H"
+
+        #include "UEqn.H"
+
+        // --- PISO loop
+        for (int corr=0; corr<nCorr; corr++)
+        {
+            #include "pEqn.H"
+        }
+
+        #include "continuityErrs.H"
+
+        turbulence->correct();
+
+        runTime.write();
+
+        Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s"
+            << "  ClockTime = " << runTime.elapsedClockTime() << " s"
+            << nl << endl;
+    }
+
+    Info<< "End\n" << endl;
+
+    return 0;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interFoam/MRFInterFoam/MRFInterFoam/Make/files b/tutorials/multiphase/interFoam/MRFInterFoam/MRFInterFoam/Make/files
new file mode 100644
index 0000000000000000000000000000000000000000..706858442e6a56a1a60fb8bb7377b9879e221fd0
--- /dev/null
+++ b/tutorials/multiphase/interFoam/MRFInterFoam/MRFInterFoam/Make/files
@@ -0,0 +1,3 @@
+MRFInterFoam.C
+
+EXE = $(FOAM_USER_APPBIN)/MRFInterFoam
diff --git a/tutorials/multiphase/interFoam/MRFInterFoam/MRFInterFoam/Make/options b/tutorials/multiphase/interFoam/MRFInterFoam/MRFInterFoam/Make/options
new file mode 100644
index 0000000000000000000000000000000000000000..e4acc4ce993fdad66ddeb7fb84c06b2824ccbc53
--- /dev/null
+++ b/tutorials/multiphase/interFoam/MRFInterFoam/MRFInterFoam/Make/options
@@ -0,0 +1,14 @@
+EXE_INC = \
+    -I$(FOAM_SOLVERS)/multiphase/interFoam \
+    -I$(LIB_SRC)/transportModels \
+    -I$(LIB_SRC)/transportModels/incompressible/lnInclude \
+    -I$(LIB_SRC)/transportModels/interfaceProperties/lnInclude \
+    -I$(LIB_SRC)/turbulenceModels/incompressible/turbulenceModel \
+    -I$(LIB_SRC)/finiteVolume/lnInclude
+
+EXE_LIBS = \
+    -linterfaceProperties \
+    -lincompressibleTransportModels \
+    -lincompressibleRASModels \
+    -lincompressibleLESModels \
+    -lfiniteVolume
diff --git a/tutorials/multiphase/interFoam/MRFInterFoam/MRFInterFoam/UEqn.H b/tutorials/multiphase/interFoam/MRFInterFoam/MRFInterFoam/UEqn.H
new file mode 100644
index 0000000000000000000000000000000000000000..ae944a9d0e5b4060da256b629f1ff0326d014967
--- /dev/null
+++ b/tutorials/multiphase/interFoam/MRFInterFoam/MRFInterFoam/UEqn.H
@@ -0,0 +1,35 @@
+    surfaceScalarField muEff
+    (
+        "muEff",
+        twoPhaseProperties.muf()
+      + fvc::interpolate(rho*turbulence->nut())
+    );
+
+    fvVectorMatrix UEqn
+    (
+        fvm::ddt(rho, U)
+      + fvm::div(rhoPhi, U)
+      - fvm::laplacian(muEff, U)
+      - (fvc::grad(U) & fvc::grad(muEff))
+    //- fvc::div(muEff*(fvc::interpolate(dev(fvc::grad(U))) & mesh.Sf()))
+    );
+    mrfZones.addCoriolis(rho, UEqn);
+
+    UEqn.relax();
+
+    if (momentumPredictor)
+    {
+        solve
+        (
+            UEqn
+         ==
+            fvc::reconstruct
+            (
+                fvc::interpolate(rho)*(g & mesh.Sf())
+              + (
+                    fvc::interpolate(interface.sigmaK())*fvc::snGrad(alpha1)
+                  - fvc::snGrad(p)
+                ) * mesh.magSf()
+            )
+        );
+    }
diff --git a/tutorials/multiphase/interFoam/MRFInterFoam/MRFInterFoam/createMRFZones.H b/tutorials/multiphase/interFoam/MRFInterFoam/MRFInterFoam/createMRFZones.H
new file mode 100644
index 0000000000000000000000000000000000000000..161446a8e6f2397982c0579c232b8ce3e458053d
--- /dev/null
+++ b/tutorials/multiphase/interFoam/MRFInterFoam/MRFInterFoam/createMRFZones.H
@@ -0,0 +1,2 @@
+    MRFZones mrfZones(mesh);
+    mrfZones.correctBoundaryVelocity(U);
diff --git a/tutorials/multiphase/interFoam/MRFInterFoam/MRFInterFoam/pEqn.H b/tutorials/multiphase/interFoam/MRFInterFoam/MRFInterFoam/pEqn.H
new file mode 100644
index 0000000000000000000000000000000000000000..5a67dd0497b150c4a46f62f306afdf814cfe17aa
--- /dev/null
+++ b/tutorials/multiphase/interFoam/MRFInterFoam/MRFInterFoam/pEqn.H
@@ -0,0 +1,48 @@
+{
+    volScalarField rUA = 1.0/UEqn.A();
+    surfaceScalarField rUAf = fvc::interpolate(rUA);
+
+    U = rUA*UEqn.H();
+
+    surfaceScalarField phiU
+    (
+        "phiU",
+        (fvc::interpolate(U) & mesh.Sf())
+    //+ fvc::ddtPhiCorr(rUA, rho, U, phi)
+    );
+    mrfZones.relativeFlux(phiU);
+
+    phi = phiU +
+        (
+            fvc::interpolate(interface.sigmaK())*fvc::snGrad(alpha1)*mesh.magSf()
+          + fvc::interpolate(rho)*(g & mesh.Sf())
+        )*rUAf;
+    adjustPhi(phi, U, p);
+
+    for(int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
+    {
+        fvScalarMatrix pEqn
+        (
+            fvm::laplacian(rUAf, p) == fvc::div(phi)
+        );
+
+        pEqn.setReference(pRefCell, pRefValue);
+
+        if (corr == nCorr-1 && nonOrth == nNonOrthCorr)
+        {
+            pEqn.solve(mesh.solver(p.name() + "Final"));
+        }
+        else
+        {
+            pEqn.solve(mesh.solver(p.name()));
+        }
+
+        if (nonOrth == nNonOrthCorr)
+        {
+            phi -= pEqn.flux();
+        }
+    }
+
+    U += rUA*fvc::reconstruct((phi - phiU)/rUAf);
+    U.correctBoundaryConditions();
+}
diff --git a/tutorials/multiphase/interFoam/MRFInterFoam/mixerVessel2D/0/U b/tutorials/multiphase/interFoam/MRFInterFoam/mixerVessel2D/0/U
new file mode 100644
index 0000000000000000000000000000000000000000..500a0fbea165c8862b993215de7a33f21267fd13
--- /dev/null
+++ b/tutorials/multiphase/interFoam/MRFInterFoam/mixerVessel2D/0/U
@@ -0,0 +1,45 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volVectorField;
+    location    "0";
+    object      U;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -1 0 0 0 0];
+
+internalField   uniform (0 0 0);
+
+boundaryField
+{
+    rotor
+    {
+        type            fixedValue;
+        value           uniform (0 0 0);
+    }
+    stator
+    {
+        type            fixedValue;
+        value           uniform (0 0 0);
+    }
+    front
+    {
+        type            empty;
+    }
+    back
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interFoam/MRFInterFoam/mixerVessel2D/0/alpha1 b/tutorials/multiphase/interFoam/MRFInterFoam/mixerVessel2D/0/alpha1
new file mode 100644
index 0000000000000000000000000000000000000000..f4e647e372dc3641e186e02d763fdb92a4217d95
--- /dev/null
+++ b/tutorials/multiphase/interFoam/MRFInterFoam/mixerVessel2D/0/alpha1
@@ -0,0 +1,3119 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      alpha1;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   nonuniform List<scalar> 
+3072
+(
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+)
+;
+
+boundaryField
+{
+    rotor
+    {
+        type            zeroGradient;
+    }
+    stator
+    {
+        type            zeroGradient;
+    }
+    front
+    {
+        type            empty;
+    }
+    back
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interFoam/MRFInterFoam/mixerVessel2D/0/alpha1.org b/tutorials/multiphase/interFoam/MRFInterFoam/mixerVessel2D/0/alpha1.org
new file mode 100644
index 0000000000000000000000000000000000000000..adc19d7f15a738efc8b7f2d48da4e25141e3e6d3
--- /dev/null
+++ b/tutorials/multiphase/interFoam/MRFInterFoam/mixerVessel2D/0/alpha1.org
@@ -0,0 +1,44 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      alpha1;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    rotor
+    {
+        type            zeroGradient;
+    }
+
+    stator
+    {
+        type            zeroGradient;
+    }
+
+    front
+    {
+        type            empty;
+    }
+
+    back
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interFoam/MRFInterFoam/mixerVessel2D/0/p b/tutorials/multiphase/interFoam/MRFInterFoam/mixerVessel2D/0/p
new file mode 100644
index 0000000000000000000000000000000000000000..25b3e3f0d4d589ff4a01f1f88a5c627252dd7288
--- /dev/null
+++ b/tutorials/multiphase/interFoam/MRFInterFoam/mixerVessel2D/0/p
@@ -0,0 +1,44 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      p;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -1 -2 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    rotor
+    {
+        type            zeroGradient;
+    }
+
+    stator
+    {
+        type            zeroGradient;
+    }
+
+    front
+    {
+        type            empty;
+    }
+
+    back
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interFoam/MRFInterFoam/mixerVessel2D/Allrun b/tutorials/multiphase/interFoam/MRFInterFoam/mixerVessel2D/Allrun
new file mode 100755
index 0000000000000000000000000000000000000000..e8e310bf86a0faa6481cf8e4284b6fbfaf5780ce
--- /dev/null
+++ b/tutorials/multiphase/interFoam/MRFInterFoam/mixerVessel2D/Allrun
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+# Source tutorial run functions
+. $WM_PROJECT_DIR/bin/tools/RunFunctions
+
+application="MRFInterFoam"
+
+./makeMesh
+runApplication $application
diff --git a/tutorials/multiphase/interFoam/MRFInterFoam/mixerVessel2D/constant/MRFZones b/tutorials/multiphase/interFoam/MRFInterFoam/mixerVessel2D/constant/MRFZones
new file mode 100644
index 0000000000000000000000000000000000000000..855e3864ce8f3fcf79fe47d6301ddaa13ae78306
--- /dev/null
+++ b/tutorials/multiphase/interFoam/MRFInterFoam/mixerVessel2D/constant/MRFZones
@@ -0,0 +1,31 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      MRFZones;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+1
+(
+    rotor
+    {
+        // Fixed patches (by default they 'move' with the MRF zone)
+        nonRotatingPatches ();
+
+        origin    origin [0 1 0 0 0 0 0]  (0 0 0);
+        axis      axis   [0 0 0 0 0 0 0]  (0 0 1);
+        omega     omega  [0 0 -1 0 0 0 0] 6.2831853;
+    }
+)
+
+// ************************************************************************* //
diff --git a/tutorials/compressible/sonicFoam/laminar/forwardStep/constant/transportProperties b/tutorials/multiphase/interFoam/MRFInterFoam/mixerVessel2D/constant/environmentalProperties
similarity index 90%
rename from tutorials/compressible/sonicFoam/laminar/forwardStep/constant/transportProperties
rename to tutorials/multiphase/interFoam/MRFInterFoam/mixerVessel2D/constant/environmentalProperties
index 1e9d5be60c285c2403250e1961ee8d1552dd14a8..1f0ea06a3cb5296cd1202223d4955977d562ca1f 100644
--- a/tutorials/compressible/sonicFoam/laminar/forwardStep/constant/transportProperties
+++ b/tutorials/multiphase/interFoam/MRFInterFoam/mixerVessel2D/constant/environmentalProperties
@@ -11,11 +11,10 @@ FoamFile
     format      ascii;
     class       dictionary;
     location    "constant";
-    object      transportProperties;
+    object      environmentalProperties;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-mu              mu [ 1 -1 -1 0 0 0 0 ] 0;
-
+g               g [0 1 -2 0 0 0 0] (0 0 0);
 
 // ************************************************************************* //
diff --git a/tutorials/multiphase/interFoam/MRFInterFoam/mixerVessel2D/constant/polyMesh/blockMeshDict b/tutorials/multiphase/interFoam/MRFInterFoam/mixerVessel2D/constant/polyMesh/blockMeshDict
new file mode 100644
index 0000000000000000000000000000000000000000..554df2afd61191c9b3b121c440c6fad3d4ceb429
--- /dev/null
+++ b/tutorials/multiphase/interFoam/MRFInterFoam/mixerVessel2D/constant/polyMesh/blockMeshDict
@@ -0,0 +1,818 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      blockMeshDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// General macros to create 2D/extruded-2D meshes
+
+
+
+
+
+
+
+
+
+
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+convertToMeters 0.1;
+
+// Hub radius
+
+
+// Impeller-tip radius
+
+
+// Baffle-tip radius
+
+
+// Tank radius
+
+
+// MRF region radius
+
+
+// Thickness of 2D slab
+
+
+// Base z
+
+
+// Top z
+
+
+// Number of cells radially between hub and impeller tip
+
+
+// Number of cells radially in each of the two regions between
+// impeller and baffle tips
+
+
+// Number of cells radially between baffle tip and tank
+
+
+// Number of cells azimuthally in each of the 8 blocks
+
+
+// Number of cells in the thickness of the slab
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+vertices
+(
+    (0.2 0 0) // Vertex r0b = 0 
+    (0.2 0 0) // Vertex r0sb = 1 
+    (0.141421356364228 -0.141421356110391 0) // Vertex r1b = 2 
+    (3.58979347393082e-10 -0.2 0) // Vertex r2b = 3 
+    (3.58979347393082e-10 -0.2 0) // Vertex r2sb = 4 
+    (-0.141421355856554 -0.141421356618065 0) // Vertex r3b = 5 
+    (-0.2 7.17958694786164e-10 0) // Vertex r4b = 6 
+    (-0.2 7.17958694786164e-10 0) // Vertex r4sb = 7 
+    (-0.141421355856554 0.141421356618065 0) // Vertex r5b = 8 
+    (3.58979347393082e-10 0.2 0) // Vertex r6b = 9 
+    (3.58979347393082e-10 0.2 0) // Vertex r6sb = 10 
+    (0.141421356364228 0.141421356110391 0) // Vertex r7b = 11 
+
+    (0.5 0 0) // Vertex rb0b = 12 
+    (0.353553390910569 -0.353553390275978 0) // Vertex rb1b = 13 
+    (8.97448368482705e-10 -0.5 0) // Vertex rb2b = 14 
+    (-0.353553389641386 -0.353553391545162 0) // Vertex rb3b = 15 
+    (-0.5 1.79489673696541e-09 0) // Vertex rb4b = 16 
+    (-0.353553389641386 0.353553391545162 0) // Vertex rb5b = 17 
+    (8.97448368482705e-10 0.5 0) // Vertex rb6b = 18 
+    (0.353553390910569 0.353553390275978 0) // Vertex rb7b = 19 
+
+    (0.6 0 0) // Vertex ri0b = 20 
+    (0.424264069092683 -0.424264068331174 0) // Vertex ri1b = 21 
+    (1.07693804217925e-09 -0.6 0) // Vertex ri2b = 22 
+    (-0.424264067569663 -0.424264069854194 0) // Vertex ri3b = 23 
+    (-0.6 2.15387608435849e-09 0) // Vertex ri4b = 24 
+    (-0.424264067569663 0.424264069854194 0) // Vertex ri5b = 25 
+    (1.07693804217925e-09 0.6 0) // Vertex ri6b = 26 
+    (0.424264069092683 0.424264068331174 0) // Vertex ri7b = 27 
+
+    (0.7 0 0) // Vertex Rb0b = 28 
+    (0.494974747274797 -0.494974746386369 0) // Vertex Rb1b = 29 
+    (1.25642771587579e-09 -0.7 0) // Vertex Rb2b = 30 
+    (-0.49497474549794 -0.494974748163226 0) // Vertex Rb3b = 31 
+    (-0.7 2.51285543175157e-09 0) // Vertex Rb4b = 32 
+    (-0.49497474549794 0.494974748163226 0) // Vertex Rb5b = 33 
+    (1.25642771587579e-09 0.7 0) // Vertex Rb6b = 34 
+    (0.494974747274797 0.494974746386369 0) // Vertex Rb7b = 35 
+
+    (1 0 0) // Vertex R0b = 36 
+    (0.707106781821139 -0.707106780551956 0) // Vertex R1b = 37 
+    (0.707106781821139 -0.707106780551956 0) // Vertex R1sb = 38 
+    (1.79489673696541e-09 -1 0) // Vertex R2b = 39 
+    (-0.707106779282772 -0.707106783090323 0) // Vertex R3b = 40 
+    (-0.707106779282772 -0.707106783090323 0) // Vertex R3sb = 41 
+    (-1 3.58979347393082e-09 0) // Vertex R4b = 42 
+    (-0.707106779282772 0.707106783090323 0) // Vertex R5b = 43 
+    (-0.707106779282772 0.707106783090323 0) // Vertex R5sb = 44 
+    (1.79489673696541e-09 1 0) // Vertex R6b = 45 
+    (0.707106781821139 0.707106780551956 0) // Vertex R7b = 46 
+    (0.707106781821139 0.707106780551956 0) // Vertex R7sb = 47 
+
+    (0.2 0 0.1) // Vertex r0t = 48 
+    (0.2 0 0.1) // Vertex r0st = 49 
+    (0.141421356364228 -0.141421356110391 0.1) // Vertex r1t = 50 
+    (3.58979347393082e-10 -0.2 0.1) // Vertex r2t = 51 
+    (3.58979347393082e-10 -0.2 0.1) // Vertex r2st = 52 
+    (-0.141421355856554 -0.141421356618065 0.1) // Vertex r3t = 53 
+    (-0.2 7.17958694786164e-10 0.1) // Vertex r4t = 54 
+    (-0.2 7.17958694786164e-10 0.1) // Vertex r4st = 55 
+    (-0.141421355856554 0.141421356618065 0.1) // Vertex r5t = 56 
+    (3.58979347393082e-10 0.2 0.1) // Vertex r6t = 57 
+    (3.58979347393082e-10 0.2 0.1) // Vertex r6st = 58 
+    (0.141421356364228 0.141421356110391 0.1) // Vertex r7t = 59 
+
+    (0.5 0 0.1) // Vertex rb0t = 60 
+    (0.353553390910569 -0.353553390275978 0.1) // Vertex rb1t = 61 
+    (8.97448368482705e-10 -0.5 0.1) // Vertex rb2t = 62 
+    (-0.353553389641386 -0.353553391545162 0.1) // Vertex rb3t = 63 
+    (-0.5 1.79489673696541e-09 0.1) // Vertex rb4t = 64 
+    (-0.353553389641386 0.353553391545162 0.1) // Vertex rb5t = 65 
+    (8.97448368482705e-10 0.5 0.1) // Vertex rb6t = 66 
+    (0.353553390910569 0.353553390275978 0.1) // Vertex rb7t = 67 
+
+    (0.6 0 0.1) // Vertex ri0t = 68 
+    (0.424264069092683 -0.424264068331174 0.1) // Vertex ri1t = 69 
+    (1.07693804217925e-09 -0.6 0.1) // Vertex ri2t = 70 
+    (-0.424264067569663 -0.424264069854194 0.1) // Vertex ri3t = 71 
+    (-0.6 2.15387608435849e-09 0.1) // Vertex ri4t = 72 
+    (-0.424264067569663 0.424264069854194 0.1) // Vertex ri5t = 73 
+    (1.07693804217925e-09 0.6 0.1) // Vertex ri6t = 74 
+    (0.424264069092683 0.424264068331174 0.1) // Vertex ri7t = 75 
+
+    (0.7 0 0.1) // Vertex Rb0t = 76 
+    (0.494974747274797 -0.494974746386369 0.1) // Vertex Rb1t = 77 
+    (1.25642771587579e-09 -0.7 0.1) // Vertex Rb2t = 78 
+    (-0.49497474549794 -0.494974748163226 0.1) // Vertex Rb3t = 79 
+    (-0.7 2.51285543175157e-09 0.1) // Vertex Rb4t = 80 
+    (-0.49497474549794 0.494974748163226 0.1) // Vertex Rb5t = 81 
+    (1.25642771587579e-09 0.7 0.1) // Vertex Rb6t = 82 
+    (0.494974747274797 0.494974746386369 0.1) // Vertex Rb7t = 83 
+
+    (1 0 0.1) // Vertex R0t = 84 
+    (0.707106781821139 -0.707106780551956 0.1) // Vertex R1t = 85 
+    (0.707106781821139 -0.707106780551956 0.1) // Vertex R1st = 86 
+    (1.79489673696541e-09 -1 0.1) // Vertex R2t = 87 
+    (-0.707106779282772 -0.707106783090323 0.1) // Vertex R3t = 88 
+    (-0.707106779282772 -0.707106783090323 0.1) // Vertex R3st = 89 
+    (-1 3.58979347393082e-09 0.1) // Vertex R4t = 90 
+    (-0.707106779282772 0.707106783090323 0.1) // Vertex R5t = 91 
+    (-0.707106779282772 0.707106783090323 0.1) // Vertex R5st = 92 
+    (1.79489673696541e-09 1 0.1) // Vertex R6t = 93 
+    (0.707106781821139 0.707106780551956 0.1) // Vertex R7t = 94 
+    (0.707106781821139 0.707106780551956 0.1) // Vertex R7st = 95 
+);
+
+blocks
+(
+    // block0
+    hex (0 2 13 12 48 50 61 60)
+    rotor
+    (12 12 1)
+    simpleGrading (1 1 1)
+
+    // block1
+    hex (2 4 14 13 50 52 62 61)
+    rotor
+    (12 12 1)
+    simpleGrading (1 1 1)
+
+    // block2
+    hex (3 5 15 14 51 53 63 62)
+    rotor
+    (12 12 1)
+    simpleGrading (1 1 1)
+
+    // block3
+    hex (5 7 16 15 53 55 64 63)
+    rotor
+    (12 12 1)
+    simpleGrading (1 1 1)
+
+    // block4
+    hex (6 8 17 16 54 56 65 64)
+    rotor
+    (12 12 1)
+    simpleGrading (1 1 1)
+
+    // block5
+    hex (8 10 18 17 56 58 66 65)
+    rotor
+    (12 12 1)
+    simpleGrading (1 1 1)
+
+    // block6
+    hex (9 11 19 18 57 59 67 66)
+    rotor
+    (12 12 1)
+    simpleGrading (1 1 1)
+
+    // block7
+    hex (11 1 12 19 59 49 60 67)
+    rotor
+    (12 12 1)
+    simpleGrading (1 1 1)
+
+    // block0
+    hex (12 13 21 20 60 61 69 68)
+    rotor
+    (12 4 1)
+    simpleGrading (1 1 1)
+
+    // block1
+    hex (13 14 22 21 61 62 70 69)
+    rotor
+    (12 4 1)
+    simpleGrading (1 1 1)
+
+    // block2
+    hex (14 15 23 22 62 63 71 70)
+    rotor
+    (12 4 1)
+    simpleGrading (1 1 1)
+
+    // block3
+    hex (15 16 24 23 63 64 72 71)
+    rotor
+    (12 4 1)
+    simpleGrading (1 1 1)
+
+    // block4
+    hex (16 17 25 24 64 65 73 72)
+    rotor
+    (12 4 1)
+    simpleGrading (1 1 1)
+
+    // block5
+    hex (17 18 26 25 65 66 74 73)
+    rotor
+    (12 4 1)
+    simpleGrading (1 1 1)
+
+    // block6
+    hex (18 19 27 26 66 67 75 74)
+    rotor
+    (12 4 1)
+    simpleGrading (1 1 1)
+
+    // block7
+    hex (19 12 20 27 67 60 68 75)
+    rotor
+    (12 4 1)
+    simpleGrading (1 1 1)
+
+    // block0
+    hex (20 21 29 28 68 69 77 76)
+    (12 4 1)
+    simpleGrading (1 1 1)
+
+    // block1
+    hex (21 22 30 29 69 70 78 77)
+    (12 4 1)
+    simpleGrading (1 1 1)
+
+    // block2
+    hex (22 23 31 30 70 71 79 78)
+    (12 4 1)
+    simpleGrading (1 1 1)
+
+    // block3
+    hex (23 24 32 31 71 72 80 79)
+    (12 4 1)
+    simpleGrading (1 1 1)
+
+    // block4
+    hex (24 25 33 32 72 73 81 80)
+    (12 4 1)
+    simpleGrading (1 1 1)
+
+    // block5
+    hex (25 26 34 33 73 74 82 81)
+    (12 4 1)
+    simpleGrading (1 1 1)
+
+    // block6
+    hex (26 27 35 34 74 75 83 82)
+    (12 4 1)
+    simpleGrading (1 1 1)
+
+    // block7
+    hex (27 20 28 35 75 68 76 83)
+    (12 4 1)
+    simpleGrading (1 1 1)
+
+    // block0
+    hex (28 29 38 36 76 77 86 84)
+    (12 12 1)
+    simpleGrading (1 1 1)
+
+    // block1
+    hex (29 30 39 37 77 78 87 85)
+    (12 12 1)
+    simpleGrading (1 1 1)
+
+    // block2
+    hex (30 31 41 39 78 79 89 87)
+    (12 12 1)
+    simpleGrading (1 1 1)
+
+    // block3
+    hex (31 32 42 40 79 80 90 88)
+    (12 12 1)
+    simpleGrading (1 1 1)
+
+    // block4
+    hex (32 33 44 42 80 81 92 90)
+    (12 12 1)
+    simpleGrading (1 1 1)
+
+    // block5
+    hex (33 34 45 43 81 82 93 91)
+    (12 12 1)
+    simpleGrading (1 1 1)
+
+    // block6
+    hex (34 35 47 45 82 83 95 93)
+    (12 12 1)
+    simpleGrading (1 1 1)
+
+    // block7
+    hex (35 28 36 46 83 76 84 94)
+    (12 12 1)
+    simpleGrading (1 1 1)
+);
+
+edges
+(
+    arc 0 2 (0.184775906536601 -0.0765366863901046 0)
+    arc 2 4 (0.0765366867217582 -0.184775906399226 0)
+    arc 3 5 (-0.0765366860584508 -0.184775906673977 0)
+    arc 5 7 (-0.18477590626185 -0.0765366870534118 0)
+    arc 6 8 (-0.18477590626185 0.0765366870534118 0)
+    arc 8 10 (-0.0765366860584508 0.184775906673977 0)
+    arc 9 11 (0.0765366867217582 0.184775906399226 0)
+    arc 11 1 (0.184775906536601 0.0765366863901046 0)
+
+    arc 12 13 (0.461939766341503 -0.191341715975262 0)
+    arc 13 14 (0.191341716804395 -0.461939765998065 0)
+    arc 14 15 (-0.191341715146127 -0.461939766684942 0)
+    arc 15 16 (-0.461939765654626 -0.19134171763353 0)
+    arc 16 17 (-0.461939765654626 0.19134171763353 0)
+    arc 17 18 (-0.191341715146127 0.461939766684942 0)
+    arc 18 19 (0.191341716804395 0.461939765998065 0)
+    arc 19 12 (0.461939766341503 0.191341715975262 0)
+
+    arc 20 21 (0.554327719609804 -0.229610059170314 0)
+    arc 21 22 (0.229610060165275 -0.554327719197677 0)
+    arc 22 23 (-0.229610058175352 -0.55432772002193 0)
+    arc 23 24 (-0.554327718785551 -0.229610061160235 0)
+    arc 24 25 (-0.554327718785551 0.229610061160235 0)
+    arc 25 26 (-0.229610058175352 0.55432772002193 0)
+    arc 26 27 (0.229610060165275 0.554327719197677 0)
+    arc 27 20 (0.554327719609804 0.229610059170314 0)
+
+    arc 28 29 (0.646715672878104 -0.267878402365366 0)
+    arc 29 30 (0.267878403526154 -0.64671567239729 0)
+    arc 30 31 (-0.267878401204578 -0.646715673358918 0)
+    arc 31 32 (-0.646715671916476 -0.267878404686941 0)
+    arc 32 33 (-0.646715671916476 0.267878404686941 0)
+    arc 33 34 (-0.267878401204578 0.646715673358918 0)
+    arc 34 35 (0.267878403526154 0.64671567239729 0)
+    arc 35 28 (0.646715672878104 0.267878402365366 0)
+
+    arc 36 38 (0.923879532683006 -0.382683431950523 0)
+    arc 37 39 (0.382683433608791 -0.923879531996129 0)
+    arc 39 41 (-0.382683430292254 -0.923879533369883 0)
+    arc 40 42 (-0.923879531309252 -0.382683435267059 0)
+    arc 42 44 (-0.923879531309252 0.382683435267059 0)
+    arc 43 45 (-0.382683430292254 0.923879533369883 0)
+    arc 45 47 (0.382683433608791 0.923879531996129 0)
+    arc 46 36 (0.923879532683006 0.382683431950523 0)
+
+    arc 48 50 (0.184775906536601 -0.0765366863901046 0.1)
+    arc 50 52 (0.0765366867217582 -0.184775906399226 0.1)
+    arc 51 53 (-0.0765366860584508 -0.184775906673977 0.1)
+    arc 53 55 (-0.18477590626185 -0.0765366870534118 0.1)
+    arc 54 56 (-0.18477590626185 0.0765366870534118 0.1)
+    arc 56 58 (-0.0765366860584508 0.184775906673977 0.1)
+    arc 57 59 (0.0765366867217582 0.184775906399226 0.1)
+    arc 59 49 (0.184775906536601 0.0765366863901046 0.1)
+
+    arc 60 61 (0.461939766341503 -0.191341715975262 0.1)
+    arc 61 62 (0.191341716804395 -0.461939765998065 0.1)
+    arc 62 63 (-0.191341715146127 -0.461939766684942 0.1)
+    arc 63 64 (-0.461939765654626 -0.19134171763353 0.1)
+    arc 64 65 (-0.461939765654626 0.19134171763353 0.1)
+    arc 65 66 (-0.191341715146127 0.461939766684942 0.1)
+    arc 66 67 (0.191341716804395 0.461939765998065 0.1)
+    arc 67 60 (0.461939766341503 0.191341715975262 0.1)
+
+    arc 68 69 (0.554327719609804 -0.229610059170314 0.1)
+    arc 69 70 (0.229610060165275 -0.554327719197677 0.1)
+    arc 70 71 (-0.229610058175352 -0.55432772002193 0.1)
+    arc 71 72 (-0.554327718785551 -0.229610061160235 0.1)
+    arc 72 73 (-0.554327718785551 0.229610061160235 0.1)
+    arc 73 74 (-0.229610058175352 0.55432772002193 0.1)
+    arc 74 75 (0.229610060165275 0.554327719197677 0.1)
+    arc 75 68 (0.554327719609804 0.229610059170314 0.1)
+
+    arc 76 77 (0.646715672878104 -0.267878402365366 0.1)
+    arc 77 78 (0.267878403526154 -0.64671567239729 0.1)
+    arc 78 79 (-0.267878401204578 -0.646715673358918 0.1)
+    arc 79 80 (-0.646715671916476 -0.267878404686941 0.1)
+    arc 80 81 (-0.646715671916476 0.267878404686941 0.1)
+    arc 81 82 (-0.267878401204578 0.646715673358918 0.1)
+    arc 82 83 (0.267878403526154 0.64671567239729 0.1)
+    arc 83 76 (0.646715672878104 0.267878402365366 0.1)
+
+    arc 84 86 (0.923879532683006 -0.382683431950523 0.1)
+    arc 85 87 (0.382683433608791 -0.923879531996129 0.1)
+    arc 87 89 (-0.382683430292254 -0.923879533369883 0.1)
+    arc 88 90 (-0.923879531309252 -0.382683435267059 0.1)
+    arc 90 92 (-0.923879531309252 0.382683435267059 0.1)
+    arc 91 93 (-0.382683430292254 0.923879533369883 0.1)
+    arc 93 95 (0.382683433608791 0.923879531996129 0.1)
+    arc 94 84 (0.923879532683006 0.382683431950523 0.1)
+);
+
+patches
+(
+    wall rotor
+    (
+        (0 2 50 48)
+        (2 4 52 50)
+        (3 5 53 51)
+        (5 7 55 53)
+        (6 8 56 54)
+        (8 10 58 56)
+        (9 11 59 57)
+        (11 1 49 59)
+
+        (0 12 60 48)
+        (1 12 60 49)
+
+        (3 14 62 51)
+        (4 14 62 52)
+
+        (6 16 64 54)
+        (7 16 64 55)
+
+        (9 18 66 57)
+        (10 18 66 58)
+    )
+
+    wall stator
+    (
+        (36 38 86 84)
+        (37 39 87 85)
+        (39 41 89 87)
+        (40 42 90 88)
+        (42 44 92 90)
+        (43 45 93 91)
+        (45 47 95 93)
+        (46 36 84 94)
+
+        (37 29 77 85)
+        (38 29 77 86)
+
+        (40 31 79 88)
+        (41 31 79 89)
+
+        (43 33 81 91)
+        (44 33 81 92)
+
+        (46 35 83 94)
+        (47 35 83 95)
+    )
+
+    empty front
+    (
+        (48 50 61 60)
+        (50 52 62 61)
+        (51 53 63 62)
+        (53 55 64 63)
+        (54 56 65 64)
+        (56 58 66 65)
+        (57 59 67 66)
+        (59 49 60 67)
+        (60 61 69 68)
+        (61 62 70 69)
+        (62 63 71 70)
+        (63 64 72 71)
+        (64 65 73 72)
+        (65 66 74 73)
+        (66 67 75 74)
+        (67 60 68 75)
+        (68 69 77 76)
+        (69 70 78 77)
+        (70 71 79 78)
+        (71 72 80 79)
+        (72 73 81 80)
+        (73 74 82 81)
+        (74 75 83 82)
+        (75 68 76 83)
+        (76 77 86 84)
+        (77 78 87 85)
+        (78 79 89 87)
+        (79 80 90 88)
+        (80 81 92 90)
+        (81 82 93 91)
+        (82 83 95 93)
+        (83 76 84 94)
+    )
+
+    empty back
+    (
+        (0 12 13 2)
+        (2 13 14 4)
+        (3 14 15 5)
+        (5 15 16 7)
+        (6 16 17 8)
+        (8 17 18 10)
+        (9 18 19 11)
+        (11 19 12 1)
+        (12 20 21 13)
+        (13 21 22 14)
+        (14 22 23 15)
+        (15 23 24 16)
+        (16 24 25 17)
+        (17 25 26 18)
+        (18 26 27 19)
+        (19 27 20 12)
+        (20 28 29 21)
+        (21 29 30 22)
+        (22 30 31 23)
+        (23 31 32 24)
+        (24 32 33 25)
+        (25 33 34 26)
+        (26 34 35 27)
+        (27 35 28 20)
+        (28 36 38 29)
+        (29 37 39 30)
+        (30 39 41 31)
+        (31 40 42 32)
+        (32 42 44 33)
+        (33 43 45 34)
+        (34 45 47 35)
+        (35 46 36 28)
+    )
+);
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interFoam/MRFInterFoam/mixerVessel2D/constant/polyMesh/blockMeshDict.m4 b/tutorials/multiphase/interFoam/MRFInterFoam/mixerVessel2D/constant/polyMesh/blockMeshDict.m4
new file mode 100644
index 0000000000000000000000000000000000000000..eaa448596c06a89b270603aaabd722cf44fa7f3e
--- /dev/null
+++ b/tutorials/multiphase/interFoam/MRFInterFoam/mixerVessel2D/constant/polyMesh/blockMeshDict.m4
@@ -0,0 +1,818 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    `format'      ascii;
+    class       dictionary;
+    object      blockMeshDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// General macros to create 2D/extruded-2D meshes
+
+changecom(//)changequote([,])
+define(calc, [esyscmd(perl -e 'print ($1)')])
+define(VCOUNT, 0)
+define(vlabel, [[// ]Vertex $1 = VCOUNT define($1, VCOUNT)define([VCOUNT], incr(VCOUNT))])
+define(pi, 3.14159265)
+
+define(hex2D, hex ($1b $2b $3b $4b $1t $2t $3t $4t))
+define(quad2D, ($1b $2b $2t $1t))
+define(frontQuad, ($1t $2t $3t $4t))
+define(backQuad, ($1b $4b $3b $2b))
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+convertToMeters 0.1;
+
+// Hub radius
+define(r, 0.2)
+
+// Impeller-tip radius
+define(rb, 0.5)
+
+// Baffle-tip radius
+define(Rb, 0.7)
+
+// Tank radius
+define(R, 1)
+
+// MRF region radius
+define(ri, calc(0.5*(rb + Rb)))
+
+// Thickness of 2D slab
+define(z, 0.1)
+
+// Base z
+define(Zb, 0)
+
+// Top z
+define(Zt, calc(Zb + z))
+
+// Number of cells radially between hub and impeller tip
+define(Nr, 12)
+
+// Number of cells radially in each of the two regions between
+// impeller and baffle tips
+define(Ni, 4)
+
+// Number of cells radially between baffle tip and tank
+define(NR, 12)
+
+// Number of cells azimuthally in each of the 8 blocks
+define(Na, 12)
+
+// Number of cells in the thickness of the slab
+define(Nz, 1)
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+define(vert, (x$1$2 y$1$2 $3))
+define(evert, (ex$1$2 ey$1$2 $3))
+
+define(a0, 0)
+define(a1, -45)
+define(a2, -90)
+define(a3, -135)
+define(a4, 180)
+define(a5, 135)
+define(a6, 90)
+define(a7, 45)
+
+define(ea0, -22.5)
+define(ea1, -67.5)
+define(ea2, -112.5)
+define(ea3, -157.5)
+define(ea4, 157.5)
+define(ea5, 112.5)
+define(ea6, 67.5)
+define(ea7, 22.5)
+
+define(ca0, calc(cos((pi/180)*a0)))
+define(ca1, calc(cos((pi/180)*a1)))
+define(ca2, calc(cos((pi/180)*a2)))
+define(ca3, calc(cos((pi/180)*a3)))
+define(ca4, calc(cos((pi/180)*a4)))
+define(ca5, calc(cos((pi/180)*a5)))
+define(ca6, calc(cos((pi/180)*a6)))
+define(ca7, calc(cos((pi/180)*a7)))
+
+define(sa0, calc(sin((pi/180)*a0)))
+define(sa1, calc(sin((pi/180)*a1)))
+define(sa2, calc(sin((pi/180)*a2)))
+define(sa3, calc(sin((pi/180)*a3)))
+define(sa4, calc(sin((pi/180)*a4)))
+define(sa5, calc(sin((pi/180)*a5)))
+define(sa6, calc(sin((pi/180)*a6)))
+define(sa7, calc(sin((pi/180)*a7)))
+
+define(cea0, calc(cos((pi/180)*ea0)))
+define(cea1, calc(cos((pi/180)*ea1)))
+define(cea2, calc(cos((pi/180)*ea2)))
+define(cea3, calc(cos((pi/180)*ea3)))
+define(cea4, calc(cos((pi/180)*ea4)))
+define(cea5, calc(cos((pi/180)*ea5)))
+define(cea6, calc(cos((pi/180)*ea6)))
+define(cea7, calc(cos((pi/180)*ea7)))
+
+define(sea0, calc(sin((pi/180)*ea0)))
+define(sea1, calc(sin((pi/180)*ea1)))
+define(sea2, calc(sin((pi/180)*ea2)))
+define(sea3, calc(sin((pi/180)*ea3)))
+define(sea4, calc(sin((pi/180)*ea4)))
+define(sea5, calc(sin((pi/180)*ea5)))
+define(sea6, calc(sin((pi/180)*ea6)))
+define(sea7, calc(sin((pi/180)*ea7)))
+
+define(x00, calc(r*ca0))
+define(x01, calc(r*ca1))
+define(x02, calc(r*ca2))
+define(x03, calc(r*ca3))
+define(x04, calc(r*ca4))
+define(x05, calc(r*ca5))
+define(x06, calc(r*ca6))
+define(x07, calc(r*ca7))
+
+define(x10, calc(rb*ca0))
+define(x11, calc(rb*ca1))
+define(x12, calc(rb*ca2))
+define(x13, calc(rb*ca3))
+define(x14, calc(rb*ca4))
+define(x15, calc(rb*ca5))
+define(x16, calc(rb*ca6))
+define(x17, calc(rb*ca7))
+
+define(x20, calc(ri*ca0))
+define(x21, calc(ri*ca1))
+define(x22, calc(ri*ca2))
+define(x23, calc(ri*ca3))
+define(x24, calc(ri*ca4))
+define(x25, calc(ri*ca5))
+define(x26, calc(ri*ca6))
+define(x27, calc(ri*ca7))
+
+define(x30, calc(Rb*ca0))
+define(x31, calc(Rb*ca1))
+define(x32, calc(Rb*ca2))
+define(x33, calc(Rb*ca3))
+define(x34, calc(Rb*ca4))
+define(x35, calc(Rb*ca5))
+define(x36, calc(Rb*ca6))
+define(x37, calc(Rb*ca7))
+
+define(x40, calc(R*ca0))
+define(x41, calc(R*ca1))
+define(x42, calc(R*ca2))
+define(x43, calc(R*ca3))
+define(x44, calc(R*ca4))
+define(x45, calc(R*ca5))
+define(x46, calc(R*ca6))
+define(x47, calc(R*ca7))
+
+define(y00, calc(r*sa0))
+define(y01, calc(r*sa1))
+define(y02, calc(r*sa2))
+define(y03, calc(r*sa3))
+define(y04, calc(r*sa4))
+define(y05, calc(r*sa5))
+define(y06, calc(r*sa6))
+define(y07, calc(r*sa7))
+
+define(y10, calc(rb*sa0))
+define(y11, calc(rb*sa1))
+define(y12, calc(rb*sa2))
+define(y13, calc(rb*sa3))
+define(y14, calc(rb*sa4))
+define(y15, calc(rb*sa5))
+define(y16, calc(rb*sa6))
+define(y17, calc(rb*sa7))
+
+define(y20, calc(ri*sa0))
+define(y21, calc(ri*sa1))
+define(y22, calc(ri*sa2))
+define(y23, calc(ri*sa3))
+define(y24, calc(ri*sa4))
+define(y25, calc(ri*sa5))
+define(y26, calc(ri*sa6))
+define(y27, calc(ri*sa7))
+
+define(y30, calc(Rb*sa0))
+define(y31, calc(Rb*sa1))
+define(y32, calc(Rb*sa2))
+define(y33, calc(Rb*sa3))
+define(y34, calc(Rb*sa4))
+define(y35, calc(Rb*sa5))
+define(y36, calc(Rb*sa6))
+define(y37, calc(Rb*sa7))
+
+define(y40, calc(R*sa0))
+define(y41, calc(R*sa1))
+define(y42, calc(R*sa2))
+define(y43, calc(R*sa3))
+define(y44, calc(R*sa4))
+define(y45, calc(R*sa5))
+define(y46, calc(R*sa6))
+define(y47, calc(R*sa7))
+
+define(ex00, calc(r*cea0))
+define(ex01, calc(r*cea1))
+define(ex02, calc(r*cea2))
+define(ex03, calc(r*cea3))
+define(ex04, calc(r*cea4))
+define(ex05, calc(r*cea5))
+define(ex06, calc(r*cea6))
+define(ex07, calc(r*cea7))
+
+define(ex10, calc(rb*cea0))
+define(ex11, calc(rb*cea1))
+define(ex12, calc(rb*cea2))
+define(ex13, calc(rb*cea3))
+define(ex14, calc(rb*cea4))
+define(ex15, calc(rb*cea5))
+define(ex16, calc(rb*cea6))
+define(ex17, calc(rb*cea7))
+
+define(ex20, calc(ri*cea0))
+define(ex21, calc(ri*cea1))
+define(ex22, calc(ri*cea2))
+define(ex23, calc(ri*cea3))
+define(ex24, calc(ri*cea4))
+define(ex25, calc(ri*cea5))
+define(ex26, calc(ri*cea6))
+define(ex27, calc(ri*cea7))
+
+define(ex30, calc(Rb*cea0))
+define(ex31, calc(Rb*cea1))
+define(ex32, calc(Rb*cea2))
+define(ex33, calc(Rb*cea3))
+define(ex34, calc(Rb*cea4))
+define(ex35, calc(Rb*cea5))
+define(ex36, calc(Rb*cea6))
+define(ex37, calc(Rb*cea7))
+
+define(ex40, calc(R*cea0))
+define(ex41, calc(R*cea1))
+define(ex42, calc(R*cea2))
+define(ex43, calc(R*cea3))
+define(ex44, calc(R*cea4))
+define(ex45, calc(R*cea5))
+define(ex46, calc(R*cea6))
+define(ex47, calc(R*cea7))
+
+define(ey00, calc(r*sea0))
+define(ey01, calc(r*sea1))
+define(ey02, calc(r*sea2))
+define(ey03, calc(r*sea3))
+define(ey04, calc(r*sea4))
+define(ey05, calc(r*sea5))
+define(ey06, calc(r*sea6))
+define(ey07, calc(r*sea7))
+
+define(ey10, calc(rb*sea0))
+define(ey11, calc(rb*sea1))
+define(ey12, calc(rb*sea2))
+define(ey13, calc(rb*sea3))
+define(ey14, calc(rb*sea4))
+define(ey15, calc(rb*sea5))
+define(ey16, calc(rb*sea6))
+define(ey17, calc(rb*sea7))
+
+define(ey20, calc(ri*sea0))
+define(ey21, calc(ri*sea1))
+define(ey22, calc(ri*sea2))
+define(ey23, calc(ri*sea3))
+define(ey24, calc(ri*sea4))
+define(ey25, calc(ri*sea5))
+define(ey26, calc(ri*sea6))
+define(ey27, calc(ri*sea7))
+
+define(ey30, calc(Rb*sea0))
+define(ey31, calc(Rb*sea1))
+define(ey32, calc(Rb*sea2))
+define(ey33, calc(Rb*sea3))
+define(ey34, calc(Rb*sea4))
+define(ey35, calc(Rb*sea5))
+define(ey36, calc(Rb*sea6))
+define(ey37, calc(Rb*sea7))
+
+define(ey40, calc(R*sea0))
+define(ey41, calc(R*sea1))
+define(ey42, calc(R*sea2))
+define(ey43, calc(R*sea3))
+define(ey44, calc(R*sea4))
+define(ey45, calc(R*sea5))
+define(ey46, calc(R*sea6))
+define(ey47, calc(R*sea7))
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+vertices
+(
+    vert(0, 0, Zb) vlabel(r0b)
+    vert(0, 0, Zb) vlabel(r0sb)
+    vert(0, 1, Zb) vlabel(r1b)
+    vert(0, 2, Zb) vlabel(r2b)
+    vert(0, 2, Zb) vlabel(r2sb)
+    vert(0, 3, Zb) vlabel(r3b)
+    vert(0, 4, Zb) vlabel(r4b)
+    vert(0, 4, Zb) vlabel(r4sb)
+    vert(0, 5, Zb) vlabel(r5b)
+    vert(0, 6, Zb) vlabel(r6b)
+    vert(0, 6, Zb) vlabel(r6sb)
+    vert(0, 7, Zb) vlabel(r7b)
+
+    vert(1, 0, Zb) vlabel(rb0b)
+    vert(1, 1, Zb) vlabel(rb1b)
+    vert(1, 2, Zb) vlabel(rb2b)
+    vert(1, 3, Zb) vlabel(rb3b)
+    vert(1, 4, Zb) vlabel(rb4b)
+    vert(1, 5, Zb) vlabel(rb5b)
+    vert(1, 6, Zb) vlabel(rb6b)
+    vert(1, 7, Zb) vlabel(rb7b)
+
+    vert(2, 0, Zb) vlabel(ri0b)
+    vert(2, 1, Zb) vlabel(ri1b)
+    vert(2, 2, Zb) vlabel(ri2b)
+    vert(2, 3, Zb) vlabel(ri3b)
+    vert(2, 4, Zb) vlabel(ri4b)
+    vert(2, 5, Zb) vlabel(ri5b)
+    vert(2, 6, Zb) vlabel(ri6b)
+    vert(2, 7, Zb) vlabel(ri7b)
+
+    vert(3, 0, Zb) vlabel(Rb0b)
+    vert(3, 1, Zb) vlabel(Rb1b)
+    vert(3, 2, Zb) vlabel(Rb2b)
+    vert(3, 3, Zb) vlabel(Rb3b)
+    vert(3, 4, Zb) vlabel(Rb4b)
+    vert(3, 5, Zb) vlabel(Rb5b)
+    vert(3, 6, Zb) vlabel(Rb6b)
+    vert(3, 7, Zb) vlabel(Rb7b)
+
+    vert(4, 0, Zb) vlabel(R0b)
+    vert(4, 1, Zb) vlabel(R1b)
+    vert(4, 1, Zb) vlabel(R1sb)
+    vert(4, 2, Zb) vlabel(R2b)
+    vert(4, 3, Zb) vlabel(R3b)
+    vert(4, 3, Zb) vlabel(R3sb)
+    vert(4, 4, Zb) vlabel(R4b)
+    vert(4, 5, Zb) vlabel(R5b)
+    vert(4, 5, Zb) vlabel(R5sb)
+    vert(4, 6, Zb) vlabel(R6b)
+    vert(4, 7, Zb) vlabel(R7b)
+    vert(4, 7, Zb) vlabel(R7sb)
+
+    vert(0, 0, Zt) vlabel(r0t)
+    vert(0, 0, Zt) vlabel(r0st)
+    vert(0, 1, Zt) vlabel(r1t)
+    vert(0, 2, Zt) vlabel(r2t)
+    vert(0, 2, Zt) vlabel(r2st)
+    vert(0, 3, Zt) vlabel(r3t)
+    vert(0, 4, Zt) vlabel(r4t)
+    vert(0, 4, Zt) vlabel(r4st)
+    vert(0, 5, Zt) vlabel(r5t)
+    vert(0, 6, Zt) vlabel(r6t)
+    vert(0, 6, Zt) vlabel(r6st)
+    vert(0, 7, Zt) vlabel(r7t)
+
+    vert(1, 0, Zt) vlabel(rb0t)
+    vert(1, 1, Zt) vlabel(rb1t)
+    vert(1, 2, Zt) vlabel(rb2t)
+    vert(1, 3, Zt) vlabel(rb3t)
+    vert(1, 4, Zt) vlabel(rb4t)
+    vert(1, 5, Zt) vlabel(rb5t)
+    vert(1, 6, Zt) vlabel(rb6t)
+    vert(1, 7, Zt) vlabel(rb7t)
+
+    vert(2, 0, Zt) vlabel(ri0t)
+    vert(2, 1, Zt) vlabel(ri1t)
+    vert(2, 2, Zt) vlabel(ri2t)
+    vert(2, 3, Zt) vlabel(ri3t)
+    vert(2, 4, Zt) vlabel(ri4t)
+    vert(2, 5, Zt) vlabel(ri5t)
+    vert(2, 6, Zt) vlabel(ri6t)
+    vert(2, 7, Zt) vlabel(ri7t)
+
+    vert(3, 0, Zt) vlabel(Rb0t)
+    vert(3, 1, Zt) vlabel(Rb1t)
+    vert(3, 2, Zt) vlabel(Rb2t)
+    vert(3, 3, Zt) vlabel(Rb3t)
+    vert(3, 4, Zt) vlabel(Rb4t)
+    vert(3, 5, Zt) vlabel(Rb5t)
+    vert(3, 6, Zt) vlabel(Rb6t)
+    vert(3, 7, Zt) vlabel(Rb7t)
+
+    vert(4, 0, Zt) vlabel(R0t)
+    vert(4, 1, Zt) vlabel(R1t)
+    vert(4, 1, Zt) vlabel(R1st)
+    vert(4, 2, Zt) vlabel(R2t)
+    vert(4, 3, Zt) vlabel(R3t)
+    vert(4, 3, Zt) vlabel(R3st)
+    vert(4, 4, Zt) vlabel(R4t)
+    vert(4, 5, Zt) vlabel(R5t)
+    vert(4, 5, Zt) vlabel(R5st)
+    vert(4, 6, Zt) vlabel(R6t)
+    vert(4, 7, Zt) vlabel(R7t)
+    vert(4, 7, Zt) vlabel(R7st)
+);
+
+blocks
+(
+    // block0
+    hex2D(r0, r1, rb1, rb0)
+    rotor
+    (Na Nr Nz)
+    simpleGrading (1 1 1)
+
+    // block1
+    hex2D(r1, r2s, rb2, rb1)
+    rotor
+    (Na Nr Nz)
+    simpleGrading (1 1 1)
+
+    // block2
+    hex2D(r2, r3, rb3, rb2)
+    rotor
+    (Na Nr Nz)
+    simpleGrading (1 1 1)
+
+    // block3
+    hex2D(r3, r4s, rb4, rb3)
+    rotor
+    (Na Nr Nz)
+    simpleGrading (1 1 1)
+
+    // block4
+    hex2D(r4, r5, rb5, rb4)
+    rotor
+    (Na Nr Nz)
+    simpleGrading (1 1 1)
+
+    // block5
+    hex2D(r5, r6s, rb6, rb5)
+    rotor
+    (Na Nr Nz)
+    simpleGrading (1 1 1)
+
+    // block6
+    hex2D(r6, r7, rb7, rb6)
+    rotor
+    (Na Nr Nz)
+    simpleGrading (1 1 1)
+
+    // block7
+    hex2D(r7, r0s, rb0, rb7)
+    rotor
+    (Na Nr Nz)
+    simpleGrading (1 1 1)
+
+    // block0
+    hex2D(rb0, rb1, ri1, ri0)
+    rotor
+    (Na Ni Nz)
+    simpleGrading (1 1 1)
+
+    // block1
+    hex2D(rb1, rb2, ri2, ri1)
+    rotor
+    (Na Ni Nz)
+    simpleGrading (1 1 1)
+
+    // block2
+    hex2D(rb2, rb3, ri3, ri2)
+    rotor
+    (Na Ni Nz)
+    simpleGrading (1 1 1)
+
+    // block3
+    hex2D(rb3, rb4, ri4, ri3)
+    rotor
+    (Na Ni Nz)
+    simpleGrading (1 1 1)
+
+    // block4
+    hex2D(rb4, rb5, ri5, ri4)
+    rotor
+    (Na Ni Nz)
+    simpleGrading (1 1 1)
+
+    // block5
+    hex2D(rb5, rb6, ri6, ri5)
+    rotor
+    (Na Ni Nz)
+    simpleGrading (1 1 1)
+
+    // block6
+    hex2D(rb6, rb7, ri7, ri6)
+    rotor
+    (Na Ni Nz)
+    simpleGrading (1 1 1)
+
+    // block7
+    hex2D(rb7, rb0, ri0, ri7)
+    rotor
+    (Na Ni Nz)
+    simpleGrading (1 1 1)
+
+    // block0
+    hex2D(ri0, ri1, Rb1, Rb0)
+    (Na Ni Nz)
+    simpleGrading (1 1 1)
+
+    // block1
+    hex2D(ri1, ri2, Rb2, Rb1)
+    (Na Ni Nz)
+    simpleGrading (1 1 1)
+
+    // block2
+    hex2D(ri2, ri3, Rb3, Rb2)
+    (Na Ni Nz)
+    simpleGrading (1 1 1)
+
+    // block3
+    hex2D(ri3, ri4, Rb4, Rb3)
+    (Na Ni Nz)
+    simpleGrading (1 1 1)
+
+    // block4
+    hex2D(ri4, ri5, Rb5, Rb4)
+    (Na Ni Nz)
+    simpleGrading (1 1 1)
+
+    // block5
+    hex2D(ri5, ri6, Rb6, Rb5)
+    (Na Ni Nz)
+    simpleGrading (1 1 1)
+
+    // block6
+    hex2D(ri6, ri7, Rb7, Rb6)
+    (Na Ni Nz)
+    simpleGrading (1 1 1)
+
+    // block7
+    hex2D(ri7, ri0, Rb0, Rb7)
+    (Na Ni Nz)
+    simpleGrading (1 1 1)
+
+    // block0
+    hex2D(Rb0, Rb1, R1s, R0)
+    (Na NR Nz)
+    simpleGrading (1 1 1)
+
+    // block1
+    hex2D(Rb1, Rb2, R2, R1)
+    (Na NR Nz)
+    simpleGrading (1 1 1)
+
+    // block2
+    hex2D(Rb2, Rb3, R3s, R2)
+    (Na NR Nz)
+    simpleGrading (1 1 1)
+
+    // block3
+    hex2D(Rb3, Rb4, R4, R3)
+    (Na NR Nz)
+    simpleGrading (1 1 1)
+
+    // block4
+    hex2D(Rb4, Rb5, R5s, R4)
+    (Na NR Nz)
+    simpleGrading (1 1 1)
+
+    // block5
+    hex2D(Rb5, Rb6, R6, R5)
+    (Na NR Nz)
+    simpleGrading (1 1 1)
+
+    // block6
+    hex2D(Rb6, Rb7, R7s, R6)
+    (Na NR Nz)
+    simpleGrading (1 1 1)
+
+    // block7
+    hex2D(Rb7, Rb0, R0, R7)
+    (Na NR Nz)
+    simpleGrading (1 1 1)
+);
+
+edges
+(
+    arc r0b r1b evert(0, 0, Zb)
+    arc r1b r2sb evert(0, 1, Zb)
+    arc r2b r3b evert(0, 2, Zb)
+    arc r3b r4sb evert(0, 3, Zb)
+    arc r4b r5b evert(0, 4, Zb)
+    arc r5b r6sb evert(0, 5, Zb)
+    arc r6b r7b evert(0, 6, Zb)
+    arc r7b r0sb evert(0, 7, Zb)
+
+    arc rb0b rb1b evert(1, 0, Zb)
+    arc rb1b rb2b evert(1, 1, Zb)
+    arc rb2b rb3b evert(1, 2, Zb)
+    arc rb3b rb4b evert(1, 3, Zb)
+    arc rb4b rb5b evert(1, 4, Zb)
+    arc rb5b rb6b evert(1, 5, Zb)
+    arc rb6b rb7b evert(1, 6, Zb)
+    arc rb7b rb0b evert(1, 7, Zb)
+
+    arc ri0b ri1b evert(2, 0, Zb)
+    arc ri1b ri2b evert(2, 1, Zb)
+    arc ri2b ri3b evert(2, 2, Zb)
+    arc ri3b ri4b evert(2, 3, Zb)
+    arc ri4b ri5b evert(2, 4, Zb)
+    arc ri5b ri6b evert(2, 5, Zb)
+    arc ri6b ri7b evert(2, 6, Zb)
+    arc ri7b ri0b evert(2, 7, Zb)
+
+    arc Rb0b Rb1b evert(3, 0, Zb)
+    arc Rb1b Rb2b evert(3, 1, Zb)
+    arc Rb2b Rb3b evert(3, 2, Zb)
+    arc Rb3b Rb4b evert(3, 3, Zb)
+    arc Rb4b Rb5b evert(3, 4, Zb)
+    arc Rb5b Rb6b evert(3, 5, Zb)
+    arc Rb6b Rb7b evert(3, 6, Zb)
+    arc Rb7b Rb0b evert(3, 7, Zb)
+
+    arc R0b R1sb evert(4, 0, Zb)
+    arc R1b R2b evert(4, 1, Zb)
+    arc R2b R3sb evert(4, 2, Zb)
+    arc R3b R4b evert(4, 3, Zb)
+    arc R4b R5sb evert(4, 4, Zb)
+    arc R5b R6b evert(4, 5, Zb)
+    arc R6b R7sb evert(4, 6, Zb)
+    arc R7b R0b evert(4, 7, Zb)
+
+    arc r0t r1t evert(0, 0, Zt)
+    arc r1t r2st evert(0, 1, Zt)
+    arc r2t r3t evert(0, 2, Zt)
+    arc r3t r4st evert(0, 3, Zt)
+    arc r4t r5t evert(0, 4, Zt)
+    arc r5t r6st evert(0, 5, Zt)
+    arc r6t r7t evert(0, 6, Zt)
+    arc r7t r0st evert(0, 7, Zt)
+
+    arc rb0t rb1t evert(1, 0, Zt)
+    arc rb1t rb2t evert(1, 1, Zt)
+    arc rb2t rb3t evert(1, 2, Zt)
+    arc rb3t rb4t evert(1, 3, Zt)
+    arc rb4t rb5t evert(1, 4, Zt)
+    arc rb5t rb6t evert(1, 5, Zt)
+    arc rb6t rb7t evert(1, 6, Zt)
+    arc rb7t rb0t evert(1, 7, Zt)
+
+    arc ri0t ri1t evert(2, 0, Zt)
+    arc ri1t ri2t evert(2, 1, Zt)
+    arc ri2t ri3t evert(2, 2, Zt)
+    arc ri3t ri4t evert(2, 3, Zt)
+    arc ri4t ri5t evert(2, 4, Zt)
+    arc ri5t ri6t evert(2, 5, Zt)
+    arc ri6t ri7t evert(2, 6, Zt)
+    arc ri7t ri0t evert(2, 7, Zt)
+
+    arc Rb0t Rb1t evert(3, 0, Zt)
+    arc Rb1t Rb2t evert(3, 1, Zt)
+    arc Rb2t Rb3t evert(3, 2, Zt)
+    arc Rb3t Rb4t evert(3, 3, Zt)
+    arc Rb4t Rb5t evert(3, 4, Zt)
+    arc Rb5t Rb6t evert(3, 5, Zt)
+    arc Rb6t Rb7t evert(3, 6, Zt)
+    arc Rb7t Rb0t evert(3, 7, Zt)
+
+    arc R0t R1st evert(4, 0, Zt)
+    arc R1t R2t evert(4, 1, Zt)
+    arc R2t R3st evert(4, 2, Zt)
+    arc R3t R4t evert(4, 3, Zt)
+    arc R4t R5st evert(4, 4, Zt)
+    arc R5t R6t evert(4, 5, Zt)
+    arc R6t R7st evert(4, 6, Zt)
+    arc R7t R0t evert(4, 7, Zt)
+);
+
+patches
+(
+    wall rotor
+    (
+        quad2D(r0, r1)
+        quad2D(r1, r2s)
+        quad2D(r2, r3)
+        quad2D(r3, r4s)
+        quad2D(r4, r5)
+        quad2D(r5, r6s)
+        quad2D(r6, r7)
+        quad2D(r7, r0s)
+
+        quad2D(r0, rb0)
+        quad2D(r0s, rb0)
+
+        quad2D(r2, rb2)
+        quad2D(r2s, rb2)
+
+        quad2D(r4, rb4)
+        quad2D(r4s, rb4)
+
+        quad2D(r6, rb6)
+        quad2D(r6s, rb6)
+    )
+
+    wall stator
+    (
+        quad2D(R0, R1s)
+        quad2D(R1, R2)
+        quad2D(R2, R3s)
+        quad2D(R3, R4)
+        quad2D(R4, R5s)
+        quad2D(R5, R6)
+        quad2D(R6, R7s)
+        quad2D(R7, R0)
+
+        quad2D(R1, Rb1)
+        quad2D(R1s, Rb1)
+
+        quad2D(R3, Rb3)
+        quad2D(R3s, Rb3)
+
+        quad2D(R5, Rb5)
+        quad2D(R5s, Rb5)
+
+        quad2D(R7, Rb7)
+        quad2D(R7s, Rb7)
+    )
+
+    empty front
+    (
+        frontQuad(r0, r1, rb1, rb0)
+        frontQuad(r1, r2s, rb2, rb1)
+        frontQuad(r2, r3, rb3, rb2)
+        frontQuad(r3, r4s, rb4, rb3)
+        frontQuad(r4, r5, rb5, rb4)
+        frontQuad(r5, r6s, rb6, rb5)
+        frontQuad(r6, r7, rb7, rb6)
+        frontQuad(r7, r0s, rb0, rb7)
+        frontQuad(rb0, rb1, ri1, ri0)
+        frontQuad(rb1, rb2, ri2, ri1)
+        frontQuad(rb2, rb3, ri3, ri2)
+        frontQuad(rb3, rb4, ri4, ri3)
+        frontQuad(rb4, rb5, ri5, ri4)
+        frontQuad(rb5, rb6, ri6, ri5)
+        frontQuad(rb6, rb7, ri7, ri6)
+        frontQuad(rb7, rb0, ri0, ri7)
+        frontQuad(ri0, ri1, Rb1, Rb0)
+        frontQuad(ri1, ri2, Rb2, Rb1)
+        frontQuad(ri2, ri3, Rb3, Rb2)
+        frontQuad(ri3, ri4, Rb4, Rb3)
+        frontQuad(ri4, ri5, Rb5, Rb4)
+        frontQuad(ri5, ri6, Rb6, Rb5)
+        frontQuad(ri6, ri7, Rb7, Rb6)
+        frontQuad(ri7, ri0, Rb0, Rb7)
+        frontQuad(Rb0, Rb1, R1s, R0)
+        frontQuad(Rb1, Rb2, R2, R1)
+        frontQuad(Rb2, Rb3, R3s, R2)
+        frontQuad(Rb3, Rb4, R4, R3)
+        frontQuad(Rb4, Rb5, R5s, R4)
+        frontQuad(Rb5, Rb6, R6, R5)
+        frontQuad(Rb6, Rb7, R7s, R6)
+        frontQuad(Rb7, Rb0, R0, R7)
+    )
+
+    empty back
+    (
+        backQuad(r0, r1, rb1, rb0)
+        backQuad(r1, r2s, rb2, rb1)
+        backQuad(r2, r3, rb3, rb2)
+        backQuad(r3, r4s, rb4, rb3)
+        backQuad(r4, r5, rb5, rb4)
+        backQuad(r5, r6s, rb6, rb5)
+        backQuad(r6, r7, rb7, rb6)
+        backQuad(r7, r0s, rb0, rb7)
+        backQuad(rb0, rb1, ri1, ri0)
+        backQuad(rb1, rb2, ri2, ri1)
+        backQuad(rb2, rb3, ri3, ri2)
+        backQuad(rb3, rb4, ri4, ri3)
+        backQuad(rb4, rb5, ri5, ri4)
+        backQuad(rb5, rb6, ri6, ri5)
+        backQuad(rb6, rb7, ri7, ri6)
+        backQuad(rb7, rb0, ri0, ri7)
+        backQuad(ri0, ri1, Rb1, Rb0)
+        backQuad(ri1, ri2, Rb2, Rb1)
+        backQuad(ri2, ri3, Rb3, Rb2)
+        backQuad(ri3, ri4, Rb4, Rb3)
+        backQuad(ri4, ri5, Rb5, Rb4)
+        backQuad(ri5, ri6, Rb6, Rb5)
+        backQuad(ri6, ri7, Rb7, Rb6)
+        backQuad(ri7, ri0, Rb0, Rb7)
+        backQuad(Rb0, Rb1, R1s, R0)
+        backQuad(Rb1, Rb2, R2, R1)
+        backQuad(Rb2, Rb3, R3s, R2)
+        backQuad(Rb3, Rb4, R4, R3)
+        backQuad(Rb4, Rb5, R5s, R4)
+        backQuad(Rb5, Rb6, R6, R5)
+        backQuad(Rb6, Rb7, R7s, R6)
+        backQuad(Rb7, Rb0, R0, R7)
+    )
+);
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interFoam/MRFInterFoam/mixerVessel2D/constant/polyMesh/boundary b/tutorials/multiphase/interFoam/MRFInterFoam/mixerVessel2D/constant/polyMesh/boundary
new file mode 100644
index 0000000000000000000000000000000000000000..292f25b806357d9df75c7731f74dee0ec0aa3a40
--- /dev/null
+++ b/tutorials/multiphase/interFoam/MRFInterFoam/mixerVessel2D/constant/polyMesh/boundary
@@ -0,0 +1,46 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       polyBoundaryMesh;
+    location    "constant/polyMesh";
+    object      boundary;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+4
+(
+    rotor
+    {
+        type            wall;
+        nFaces          192;
+        startFace       5952;
+    }
+    stator
+    {
+        type            wall;
+        nFaces          192;
+        startFace       6144;
+    }
+    front
+    {
+        type            empty;
+        nFaces          3072;
+        startFace       6336;
+    }
+    back
+    {
+        type            empty;
+        nFaces          3072;
+        startFace       9408;
+    }
+)
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interFoam/MRFInterFoam/mixerVessel2D/constant/transportProperties b/tutorials/multiphase/interFoam/MRFInterFoam/mixerVessel2D/constant/transportProperties
new file mode 100644
index 0000000000000000000000000000000000000000..e29c7f9fc04be3aafc3bf54d2ac9208b0250c4e6
--- /dev/null
+++ b/tutorials/multiphase/interFoam/MRFInterFoam/mixerVessel2D/constant/transportProperties
@@ -0,0 +1,35 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      transportProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+phase1
+{
+    transportModel  Newtonian;
+    nu              nu [ 0 2 -1 0 0 0 0 ] 1e-4;
+    rho             rho [ 1 -3 0 0 0 0 0 ] 1000;
+}
+
+phase2
+{
+    transportModel  Newtonian;
+    nu              nu [ 0 2 -1 0 0 0 0 ] 1e-4;
+    rho             rho [ 1 -3 0 0 0 0 0 ] 500;
+}
+
+sigma           sigma [ 1 0 -2 0 0 0 0 ] 0.05;
+
+
+// ************************************************************************* //
diff --git a/tutorials/compressible/sonicFoam/laminar/shockTube/constant/transportProperties b/tutorials/multiphase/interFoam/MRFInterFoam/mixerVessel2D/constant/turbulenceProperties
similarity index 91%
rename from tutorials/compressible/sonicFoam/laminar/shockTube/constant/transportProperties
rename to tutorials/multiphase/interFoam/MRFInterFoam/mixerVessel2D/constant/turbulenceProperties
index 1e9d5be60c285c2403250e1961ee8d1552dd14a8..886d34bdef135c39216d342240a96bf0530bdd62 100644
--- a/tutorials/compressible/sonicFoam/laminar/shockTube/constant/transportProperties
+++ b/tutorials/multiphase/interFoam/MRFInterFoam/mixerVessel2D/constant/turbulenceProperties
@@ -11,11 +11,11 @@ FoamFile
     format      ascii;
     class       dictionary;
     location    "constant";
-    object      transportProperties;
+    object      turbulenceProperties;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-mu              mu [ 1 -1 -1 0 0 0 0 ] 0;
+simulationType  laminar;
 
 
 // ************************************************************************* //
diff --git a/tutorials/multiphase/interFoam/MRFInterFoam/mixerVessel2D/makeMesh b/tutorials/multiphase/interFoam/MRFInterFoam/mixerVessel2D/makeMesh
new file mode 100755
index 0000000000000000000000000000000000000000..b0be10d8e5f2b0525cec8f23c93585fde73f5879
--- /dev/null
+++ b/tutorials/multiphase/interFoam/MRFInterFoam/mixerVessel2D/makeMesh
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+m4 < constant/polyMesh/blockMeshDict.m4 > constant/polyMesh/blockMeshDict
+blockMesh
+cellSet
+#- MRF determines its own faceZone if not supplied
+#cp system/faceSetDict_rotorFaces system/faceSetDict
+#faceSet
+#cp system/faceSetDict_noBoundaryFaces system/faceSetDict
+#faceSet
+setsToZones -noFlipMap
diff --git a/tutorials/multiphase/interFoam/MRFInterFoam/mixerVessel2D/system/cellSetDict b/tutorials/multiphase/interFoam/MRFInterFoam/mixerVessel2D/system/cellSetDict
new file mode 100644
index 0000000000000000000000000000000000000000..6d1af846e3c61c753852a90c8c8bcc5cfd68cf4d
--- /dev/null
+++ b/tutorials/multiphase/interFoam/MRFInterFoam/mixerVessel2D/system/cellSetDict
@@ -0,0 +1,25 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      cellSetDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+name            rotor;
+
+action          new;
+
+topoSetSources  ( zoneToCell { name rotor ; } );
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interFoam/MRFInterFoam/mixerVessel2D/system/controlDict b/tutorials/multiphase/interFoam/MRFInterFoam/mixerVessel2D/system/controlDict
new file mode 100644
index 0000000000000000000000000000000000000000..249378f87cac7f374e958053846a949d585e047e
--- /dev/null
+++ b/tutorials/multiphase/interFoam/MRFInterFoam/mixerVessel2D/system/controlDict
@@ -0,0 +1,53 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      controlDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+startFrom       startTime;
+
+startTime       0;
+
+stopAt          endTime;
+
+endTime         4;
+
+deltaT          1e-3;
+
+writeControl    adjustableRunTime;
+
+writeInterval   0.125;
+
+purgeWrite      0;
+
+writeFormat     ascii;
+
+writePrecision  6;
+
+writeCompression uncompressed;
+
+timeFormat      general;
+
+timePrecision   6;
+
+runTimeModifiable yes;
+
+adjustTimeStep  yes;
+
+maxCo           0.5;
+
+maxDeltaT       1;
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interFoam/MRFInterFoam/mixerVessel2D/system/faceSetDict b/tutorials/multiphase/interFoam/MRFInterFoam/mixerVessel2D/system/faceSetDict
new file mode 100644
index 0000000000000000000000000000000000000000..5507dbd729453219d583c8c3f7e8867eee0ac1a4
--- /dev/null
+++ b/tutorials/multiphase/interFoam/MRFInterFoam/mixerVessel2D/system/faceSetDict
@@ -0,0 +1,25 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      faceSetDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+name            rotor;
+
+action          delete;
+
+topoSetSources  ( boundaryToFace { } );
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interFoam/MRFInterFoam/mixerVessel2D/system/faceSetDict_noBoundaryFaces b/tutorials/multiphase/interFoam/MRFInterFoam/mixerVessel2D/system/faceSetDict_noBoundaryFaces
new file mode 100644
index 0000000000000000000000000000000000000000..062727698328907a23480d3aaae086f2030a1537
--- /dev/null
+++ b/tutorials/multiphase/interFoam/MRFInterFoam/mixerVessel2D/system/faceSetDict_noBoundaryFaces
@@ -0,0 +1,25 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      faceSetDict_noBoundaryFaces;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+name            rotor;
+
+action          delete;
+
+topoSetSources  ( boundaryToFace { } );
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interFoam/MRFInterFoam/mixerVessel2D/system/faceSetDict_rotorFaces b/tutorials/multiphase/interFoam/MRFInterFoam/mixerVessel2D/system/faceSetDict_rotorFaces
new file mode 100644
index 0000000000000000000000000000000000000000..5e7917b2fe4f3eae8b3dd4db38d66a39f29a92a3
--- /dev/null
+++ b/tutorials/multiphase/interFoam/MRFInterFoam/mixerVessel2D/system/faceSetDict_rotorFaces
@@ -0,0 +1,25 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      faceSetDict_rotorFaces;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+name            rotor;
+
+action          new;
+
+topoSetSources  ( cellToFace { set rotor ; option all ; } );
+
+
+// ************************************************************************* //
diff --git a/tutorials/discreteMethods/molecularDynamics/gnemdFoam/constrictedChannel/system/fvSchemes b/tutorials/multiphase/interFoam/MRFInterFoam/mixerVessel2D/system/fvSchemes
similarity index 80%
rename from tutorials/discreteMethods/molecularDynamics/gnemdFoam/constrictedChannel/system/fvSchemes
rename to tutorials/multiphase/interFoam/MRFInterFoam/mixerVessel2D/system/fvSchemes
index f923afcfacf038c5cd521b7e67b1c11b4d535866..75d5813812fc769d95a0204eab2181acc078ca8c 100644
--- a/tutorials/discreteMethods/molecularDynamics/gnemdFoam/constrictedChannel/system/fvSchemes
+++ b/tutorials/multiphase/interFoam/MRFInterFoam/mixerVessel2D/system/fvSchemes
@@ -23,26 +23,25 @@ ddtSchemes
 gradSchemes
 {
     default         Gauss linear;
-    grad(p)         Gauss linear;
+    grad(U)         Gauss linear;
+    grad(alpha1)    Gauss linear;
 }
 
 divSchemes
 {
-    default         none;
-    div(phi,U)      Gauss linear;
+    div(rho*phi,U)  Gauss linear;
+    div(phi,alpha)  Gauss vanLeer;
+    div(phirb,alpha) Gauss interfaceCompression;
 }
 
 laplacianSchemes
 {
-    default         none;
-    laplacian(nu,U) Gauss linear corrected;
-    laplacian(1|A(U),p) Gauss linear corrected;
+    default         Gauss linear corrected;
 }
 
 interpolationSchemes
 {
     default         linear;
-    interpolate(HbyA) linear;
 }
 
 snGradSchemes
@@ -54,6 +53,8 @@ fluxRequired
 {
     default         no;
     p               ;
+    pcorr           ;
+    alpha1          ;
 }
 
 
diff --git a/tutorials/discreteMethods/molecularDynamics/gnemdFoam/nanoNozzle/system/fvSolution b/tutorials/multiphase/interFoam/MRFInterFoam/mixerVessel2D/system/fvSolution
similarity index 73%
rename from tutorials/discreteMethods/molecularDynamics/gnemdFoam/nanoNozzle/system/fvSolution
rename to tutorials/multiphase/interFoam/MRFInterFoam/mixerVessel2D/system/fvSolution
index 46670343363af32a79fcf7bd788316556b9de7d7..febd619c4824c91a5fee8280895288ecf80e408e 100644
--- a/tutorials/discreteMethods/molecularDynamics/gnemdFoam/nanoNozzle/system/fvSolution
+++ b/tutorials/multiphase/interFoam/MRFInterFoam/mixerVessel2D/system/fvSolution
@@ -17,11 +17,27 @@ FoamFile
 
 solvers
 {
+    pcorr
+    {
+        solver          PCG;
+        preconditioner  DIC;
+        tolerance       1e-10;
+        relTol          0;
+    }
+
     p
     {
         solver          PCG;
         preconditioner  DIC;
-        tolerance       1e-06;
+        tolerance       1e-07;
+        relTol          0.05;
+    }
+
+    pFinal
+    {
+        solver          PCG;
+        preconditioner  DIC;
+        tolerance       1e-07;
         relTol          0;
     }
 
@@ -29,15 +45,19 @@ solvers
     {
         solver          PBiCG;
         preconditioner  DILU;
-        tolerance       1e-05;
+        tolerance       1e-06;
         relTol          0;
     }
 }
 
 PISO
 {
-    nCorrectors     2;
+    momentumPredictor no;
+    nCorrectors     3;
     nNonOrthogonalCorrectors 0;
+    nAlphaCorr      1;
+    nAlphaSubCycles 2;
+    cAlpha          1;
     pRefCell        0;
     pRefValue       0;
 }
diff --git a/tutorials/multiphase/interFoam/MRFInterFoam/mixerVessel2D/system/setFieldsDict b/tutorials/multiphase/interFoam/MRFInterFoam/mixerVessel2D/system/setFieldsDict
new file mode 100644
index 0000000000000000000000000000000000000000..2de344506d223ab76e1bb8cc7b273c285b37d5a3
--- /dev/null
+++ b/tutorials/multiphase/interFoam/MRFInterFoam/mixerVessel2D/system/setFieldsDict
@@ -0,0 +1,37 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.5                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      setFieldsDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+defaultFieldValues
+(
+    volScalarFieldValue alpha1 0
+    volVectorFieldValue U (0 0 0)
+);
+
+regions
+(
+    boxToCell
+    {
+        box (0 0 -1) (1 1 1);
+        fieldValues
+        (
+            volScalarFieldValue alpha1 1
+        );
+    }
+);
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interFoam/ras/damBreak/0/pd b/tutorials/multiphase/interFoam/laminar/damBreak/0/p
similarity index 98%
rename from tutorials/multiphase/interFoam/ras/damBreak/0/pd
rename to tutorials/multiphase/interFoam/laminar/damBreak/0/p
index 520a3e9b0b291a7913c871b614d8fe9845e8ab08..15ab9897a899264f52a2cfb792b0fc6c39324dc4 100644
--- a/tutorials/multiphase/interFoam/ras/damBreak/0/pd
+++ b/tutorials/multiphase/interFoam/laminar/damBreak/0/p
@@ -10,7 +10,7 @@ FoamFile
     version     2.0;
     format      ascii;
     class       volScalarField;
-    object      pd;
+    object      p;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
diff --git a/tutorials/multiphase/interFoam/laminar/damBreak/system/fvSchemes b/tutorials/multiphase/interFoam/laminar/damBreak/system/fvSchemes
index d242b76b754914e7115105855ad61600253674b9..0b17c289c20ba9a27c48d9ddec20f44f1c47f8f3 100644
--- a/tutorials/multiphase/interFoam/laminar/damBreak/system/fvSchemes
+++ b/tutorials/multiphase/interFoam/laminar/damBreak/system/fvSchemes
@@ -52,9 +52,9 @@ snGradSchemes
 fluxRequired
 {
     default         no;
-    pd              ;
-    pcorr           ;
-    alpha1          ;
+    p;
+    pcorr;
+    alpha1;
 }
 
 
diff --git a/tutorials/multiphase/interFoam/laminar/damBreak/system/fvSolution b/tutorials/multiphase/interFoam/laminar/damBreak/system/fvSolution
index b1b00223fcd0bbe688671476a0173185fb0313f5..6c3a8c5da3dd2e83b7454a5ed945bc9684310a0f 100644
--- a/tutorials/multiphase/interFoam/laminar/damBreak/system/fvSolution
+++ b/tutorials/multiphase/interFoam/laminar/damBreak/system/fvSolution
@@ -25,7 +25,7 @@ solvers
         relTol          0;
     }
 
-    pd
+    p
     {
         solver          PCG;
         preconditioner  DIC;
@@ -33,7 +33,7 @@ solvers
         relTol          0.05;
     }
 
-    pdFinal
+    pFinal
     {
         solver          PCG;
         preconditioner  DIC;
diff --git a/tutorials/multiphase/interFoam/les/nozzleFlow2D/0/pd b/tutorials/multiphase/interFoam/les/nozzleFlow2D/0/p
similarity index 98%
rename from tutorials/multiphase/interFoam/les/nozzleFlow2D/0/pd
rename to tutorials/multiphase/interFoam/les/nozzleFlow2D/0/p
index b533fbc016f7cc5b593988af8555c43a371cd0a1..8f01f473bbda69c4823f35737c47695029173338 100644
--- a/tutorials/multiphase/interFoam/les/nozzleFlow2D/0/pd
+++ b/tutorials/multiphase/interFoam/les/nozzleFlow2D/0/p
@@ -10,7 +10,7 @@ FoamFile
     version     2.0;
     format      ascii;
     class       volScalarField;
-    object      pd;
+    object      p;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
diff --git a/tutorials/multiphase/interFoam/les/nozzleFlow2D/constant/polyMesh/sets/c0 b/tutorials/multiphase/interFoam/les/nozzleFlow2D/constant/polyMesh/sets/c0
deleted file mode 100644
index 04d478574abae87d7877c2a6465c449190ebb533..0000000000000000000000000000000000000000
--- a/tutorials/multiphase/interFoam/les/nozzleFlow2D/constant/polyMesh/sets/c0
+++ /dev/null
@@ -1,7092 +0,0 @@
-/*--------------------------------*- C++ -*----------------------------------*\
-| =========                 |                                                 |
-| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.5                                   |
-|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
-|    \\/     M anipulation  |                                                 |
-\*---------------------------------------------------------------------------*/
-FoamFile
-{
-    version     2.0;
-    format      ascii;
-    class       cellSet;
-    location    "constant/polyMesh/sets";
-    object      c0;
-}
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-
-7069
-(
-10832 
-0 
-10833 
-1 
-10834 
-2 
-10835 
-3 
-10836 
-4 
-10837 
-5 
-10838 
-6 
-10839 
-7 
-10840 
-8 
-10841 
-9 
-10842 
-10 
-10843 
-11 
-10844 
-12 
-10845 
-13 
-10846 
-14 
-10847 
-15 
-10848 
-16 
-10849 
-17 
-10850 
-18 
-10851 
-19 
-10852 
-20 
-10853 
-21 
-10854 
-22 
-10855 
-23 
-10856 
-24 
-10857 
-25 
-10858 
-26 
-10859 
-27 
-10860 
-28 
-10861 
-29 
-10862 
-30 
-10863 
-31 
-10864 
-32 
-10865 
-33 
-10866 
-34 
-10867 
-35 
-10868 
-36 
-10869 
-37 
-10870 
-38 
-10871 
-39 
-10872 
-40 
-10873 
-41 
-10874 
-42 
-10875 
-43 
-10876 
-44 
-10877 
-45 
-10878 
-46 
-10879 
-47 
-10880 
-48 
-10881 
-49 
-10882 
-50 
-10883 
-51 
-10884 
-52 
-10885 
-53 
-10886 
-54 
-10887 
-55 
-10888 
-56 
-10889 
-57 
-10890 
-58 
-10891 
-59 
-10892 
-60 
-10893 
-61 
-10894 
-62 
-10895 
-63 
-10896 
-64 
-10897 
-65 
-10898 
-66 
-10899 
-67 
-10900 
-68 
-10901 
-69 
-10902 
-70 
-10903 
-71 
-10904 
-72 
-10905 
-73 
-10906 
-74 
-10907 
-75 
-10908 
-76 
-10909 
-77 
-10910 
-78 
-10911 
-79 
-10912 
-80 
-10913 
-81 
-10914 
-82 
-10915 
-83 
-10916 
-84 
-10917 
-85 
-10918 
-86 
-10919 
-87 
-10920 
-88 
-10921 
-89 
-10922 
-90 
-10923 
-91 
-10924 
-92 
-10925 
-93 
-10926 
-94 
-10927 
-95 
-10928 
-96 
-10929 
-97 
-10930 
-98 
-10931 
-99 
-10932 
-100 
-10933 
-101 
-10934 
-102 
-10935 
-103 
-10936 
-104 
-10937 
-105 
-10938 
-106 
-10939 
-107 
-10940 
-108 
-10941 
-109 
-10942 
-110 
-10943 
-111 
-10944 
-112 
-10945 
-113 
-10946 
-114 
-10947 
-115 
-10948 
-116 
-10949 
-117 
-10950 
-118 
-10951 
-119 
-10952 
-120 
-10953 
-121 
-10954 
-122 
-10955 
-123 
-10956 
-124 
-10957 
-125 
-10958 
-126 
-10959 
-127 
-10960 
-128 
-10961 
-129 
-10962 
-130 
-10963 
-131 
-10964 
-132 
-10965 
-133 
-10966 
-134 
-10967 
-135 
-10968 
-136 
-10969 
-137 
-10970 
-138 
-10971 
-139 
-10972 
-140 
-10973 
-141 
-10974 
-142 
-10975 
-143 
-10976 
-144 
-10977 
-145 
-10978 
-146 
-10979 
-147 
-10980 
-148 
-10981 
-149 
-10982 
-150 
-10983 
-151 
-10984 
-152 
-10985 
-153 
-10986 
-154 
-10987 
-155 
-10988 
-156 
-10989 
-157 
-10990 
-158 
-10991 
-159 
-10992 
-160 
-10993 
-161 
-10994 
-162 
-10995 
-163 
-10996 
-164 
-10997 
-165 
-10998 
-166 
-10999 
-167 
-11000 
-168 
-11001 
-169 
-11002 
-170 
-11003 
-171 
-11004 
-172 
-11005 
-173 
-11006 
-174 
-11007 
-175 
-11008 
-176 
-11009 
-177 
-11010 
-178 
-11011 
-179 
-11012 
-180 
-11013 
-181 
-11014 
-182 
-11015 
-183 
-11016 
-184 
-11017 
-185 
-11018 
-186 
-11019 
-187 
-11020 
-188 
-11021 
-189 
-11022 
-190 
-11023 
-191 
-11024 
-192 
-11025 
-193 
-11026 
-194 
-11027 
-195 
-11028 
-196 
-11029 
-197 
-11030 
-198 
-11031 
-199 
-11032 
-200 
-11033 
-201 
-11034 
-202 
-11035 
-203 
-11036 
-204 
-11037 
-205 
-11038 
-206 
-11039 
-207 
-11040 
-208 
-11041 
-209 
-11042 
-210 
-11043 
-211 
-11044 
-212 
-11045 
-213 
-11046 
-214 
-11047 
-215 
-11048 
-216 
-11049 
-217 
-11050 
-218 
-11051 
-219 
-11052 
-220 
-11053 
-221 
-11054 
-222 
-11055 
-223 
-11056 
-224 
-11057 
-225 
-11058 
-226 
-11059 
-227 
-11060 
-228 
-11061 
-229 
-11062 
-230 
-11063 
-231 
-11064 
-232 
-11065 
-233 
-11066 
-234 
-11067 
-235 
-11068 
-236 
-11069 
-237 
-11070 
-238 
-11071 
-239 
-11072 
-240 
-11073 
-241 
-11074 
-242 
-11075 
-243 
-11076 
-244 
-11077 
-245 
-11078 
-246 
-11079 
-247 
-11080 
-248 
-11081 
-249 
-11082 
-250 
-11083 
-251 
-11084 
-252 
-11085 
-253 
-11086 
-254 
-11087 
-255 
-11088 
-256 
-11089 
-257 
-11090 
-258 
-11091 
-259 
-11092 
-260 
-11093 
-261 
-11094 
-262 
-11095 
-263 
-11096 
-264 
-11097 
-265 
-11098 
-266 
-11099 
-267 
-11100 
-268 
-11101 
-269 
-11102 
-270 
-11103 
-271 
-11104 
-272 
-11105 
-273 
-11106 
-274 
-11107 
-275 
-11108 
-276 
-11109 
-277 
-11110 
-278 
-11111 
-279 
-11112 
-280 
-11113 
-281 
-11114 
-282 
-11115 
-283 
-11116 
-284 
-11117 
-285 
-11118 
-286 
-11119 
-287 
-11120 
-288 
-11121 
-289 
-11122 
-290 
-11123 
-291 
-11124 
-292 
-11125 
-293 
-11126 
-294 
-11127 
-295 
-11128 
-296 
-11129 
-297 
-11130 
-298 
-11131 
-299 
-11132 
-300 
-11133 
-301 
-11134 
-302 
-11135 
-303 
-11136 
-304 
-11137 
-305 
-11138 
-306 
-11139 
-307 
-11140 
-308 
-11141 
-309 
-11142 
-310 
-11143 
-311 
-11144 
-312 
-11145 
-313 
-11146 
-314 
-11147 
-315 
-11148 
-316 
-11149 
-317 
-11150 
-318 
-11151 
-319 
-11152 
-320 
-11153 
-321 
-11154 
-322 
-11155 
-323 
-11156 
-324 
-11157 
-325 
-11158 
-326 
-11159 
-327 
-11160 
-328 
-11161 
-329 
-11162 
-330 
-11163 
-331 
-11164 
-332 
-11165 
-333 
-11166 
-334 
-11167 
-335 
-11168 
-336 
-11169 
-337 
-11170 
-338 
-11171 
-339 
-11172 
-340 
-11173 
-341 
-11174 
-342 
-11175 
-343 
-11176 
-344 
-11177 
-345 
-11178 
-346 
-11179 
-347 
-11180 
-348 
-11181 
-349 
-11182 
-350 
-11183 
-351 
-11184 
-352 
-11185 
-353 
-11186 
-354 
-11187 
-355 
-11188 
-356 
-11189 
-357 
-11190 
-358 
-11191 
-359 
-11192 
-360 
-11193 
-361 
-11194 
-362 
-11195 
-363 
-11196 
-364 
-11197 
-365 
-11198 
-366 
-11199 
-367 
-11200 
-368 
-11201 
-369 
-11202 
-370 
-11203 
-371 
-11204 
-372 
-11205 
-373 
-11206 
-374 
-11207 
-375 
-11208 
-376 
-11209 
-377 
-11210 
-378 
-11211 
-379 
-11212 
-380 
-11213 
-381 
-11214 
-382 
-11215 
-383 
-11216 
-384 
-11217 
-385 
-11218 
-386 
-11219 
-387 
-11220 
-388 
-11221 
-389 
-11222 
-390 
-11223 
-391 
-11224 
-392 
-11225 
-393 
-11226 
-394 
-11227 
-395 
-11228 
-396 
-11229 
-397 
-11230 
-398 
-11231 
-399 
-11232 
-400 
-11233 
-401 
-11234 
-402 
-11235 
-403 
-11236 
-404 
-11237 
-405 
-11238 
-406 
-11239 
-407 
-11240 
-408 
-11241 
-409 
-11242 
-410 
-11243 
-411 
-11244 
-412 
-11245 
-413 
-11246 
-414 
-11247 
-415 
-11248 
-416 
-11249 
-417 
-11250 
-418 
-11251 
-419 
-11252 
-420 
-11253 
-421 
-11254 
-422 
-11255 
-423 
-11256 
-424 
-11257 
-425 
-11258 
-426 
-11259 
-427 
-11260 
-428 
-11261 
-429 
-11262 
-430 
-11263 
-431 
-11264 
-432 
-11265 
-433 
-11266 
-434 
-11267 
-435 
-11268 
-436 
-11269 
-437 
-11270 
-438 
-11271 
-439 
-11272 
-440 
-11273 
-441 
-11274 
-442 
-11275 
-443 
-11276 
-444 
-11277 
-445 
-11278 
-446 
-11279 
-447 
-11280 
-448 
-11281 
-449 
-11282 
-450 
-11283 
-451 
-11284 
-452 
-11285 
-453 
-11286 
-454 
-11287 
-455 
-11288 
-456 
-11289 
-457 
-11290 
-458 
-11291 
-459 
-11292 
-460 
-11293 
-461 
-11294 
-462 
-11295 
-463 
-11296 
-464 
-11297 
-465 
-11298 
-466 
-11299 
-467 
-11300 
-468 
-11301 
-469 
-11302 
-470 
-11303 
-471 
-11304 
-472 
-11305 
-473 
-11306 
-474 
-11307 
-475 
-11308 
-476 
-11309 
-477 
-11310 
-478 
-11311 
-479 
-11312 
-480 
-11313 
-481 
-11314 
-482 
-11315 
-483 
-11316 
-484 
-11317 
-485 
-11318 
-486 
-11319 
-487 
-11320 
-488 
-11321 
-489 
-11322 
-490 
-11323 
-491 
-11324 
-492 
-11325 
-493 
-11326 
-494 
-11327 
-495 
-11328 
-496 
-11329 
-497 
-11330 
-498 
-11331 
-499 
-11332 
-500 
-11333 
-501 
-11334 
-502 
-11335 
-503 
-11336 
-504 
-11337 
-505 
-11338 
-506 
-11339 
-507 
-11340 
-508 
-11341 
-509 
-11342 
-510 
-11343 
-511 
-11344 
-512 
-11345 
-513 
-11346 
-514 
-11347 
-515 
-11348 
-516 
-11349 
-517 
-11350 
-518 
-11351 
-519 
-11352 
-520 
-11353 
-521 
-11354 
-522 
-11355 
-523 
-11356 
-524 
-11357 
-525 
-11358 
-526 
-11359 
-527 
-11360 
-528 
-11361 
-529 
-11362 
-530 
-11363 
-531 
-11364 
-532 
-11365 
-533 
-11366 
-534 
-11367 
-535 
-11368 
-536 
-11369 
-537 
-11370 
-538 
-11371 
-539 
-11372 
-540 
-11373 
-541 
-11374 
-542 
-11375 
-543 
-11376 
-544 
-11377 
-545 
-11378 
-546 
-11379 
-547 
-11380 
-548 
-11381 
-549 
-11382 
-550 
-11383 
-551 
-11384 
-552 
-11385 
-553 
-11386 
-554 
-11387 
-555 
-11388 
-556 
-11389 
-557 
-11390 
-558 
-11391 
-559 
-11392 
-560 
-11393 
-561 
-11394 
-562 
-11395 
-563 
-11396 
-564 
-11397 
-565 
-11398 
-566 
-11399 
-567 
-11400 
-568 
-11401 
-569 
-11402 
-570 
-11403 
-571 
-11404 
-572 
-11405 
-573 
-11406 
-574 
-11407 
-575 
-11408 
-576 
-11409 
-577 
-11410 
-578 
-11411 
-579 
-11412 
-580 
-11413 
-581 
-11414 
-582 
-11415 
-583 
-11416 
-584 
-11417 
-585 
-11418 
-586 
-11419 
-587 
-11420 
-588 
-11421 
-589 
-11422 
-590 
-11423 
-591 
-11424 
-592 
-11425 
-593 
-11426 
-594 
-11427 
-595 
-11428 
-596 
-11429 
-597 
-11430 
-598 
-11431 
-599 
-11432 
-600 
-11433 
-601 
-11434 
-602 
-11435 
-603 
-11436 
-604 
-11437 
-605 
-11438 
-606 
-11439 
-607 
-11440 
-608 
-11441 
-609 
-11442 
-610 
-11443 
-611 
-11444 
-612 
-11445 
-613 
-11446 
-614 
-11447 
-615 
-11448 
-616 
-11449 
-617 
-11450 
-618 
-11451 
-619 
-11452 
-620 
-11453 
-621 
-11454 
-622 
-11455 
-623 
-11456 
-624 
-11457 
-625 
-11458 
-626 
-11459 
-627 
-11460 
-628 
-11461 
-629 
-11462 
-630 
-11463 
-631 
-11464 
-632 
-11465 
-633 
-11466 
-634 
-11467 
-635 
-11468 
-636 
-11469 
-637 
-11470 
-638 
-11471 
-639 
-11472 
-640 
-11473 
-641 
-11474 
-642 
-11475 
-643 
-11476 
-644 
-11477 
-645 
-11478 
-646 
-11479 
-647 
-11480 
-648 
-11481 
-649 
-11482 
-650 
-11483 
-651 
-11484 
-652 
-11485 
-653 
-11486 
-654 
-11487 
-655 
-11488 
-656 
-11489 
-657 
-11490 
-658 
-11491 
-659 
-11492 
-660 
-11493 
-661 
-11494 
-662 
-11495 
-663 
-11496 
-664 
-11497 
-665 
-11498 
-666 
-11499 
-667 
-11500 
-668 
-11501 
-669 
-11502 
-670 
-11503 
-671 
-11504 
-672 
-11505 
-673 
-11506 
-674 
-11507 
-675 
-11508 
-676 
-11509 
-677 
-11510 
-678 
-11511 
-679 
-11512 
-680 
-11513 
-681 
-11514 
-682 
-11515 
-683 
-11516 
-684 
-11517 
-685 
-11518 
-686 
-11519 
-687 
-11520 
-688 
-11521 
-689 
-11522 
-690 
-11523 
-691 
-11524 
-692 
-11525 
-693 
-11526 
-694 
-11527 
-695 
-11528 
-696 
-11529 
-697 
-11530 
-698 
-11531 
-699 
-11532 
-700 
-11533 
-701 
-11534 
-702 
-11535 
-703 
-11536 
-704 
-11537 
-705 
-11538 
-706 
-11539 
-707 
-11540 
-708 
-11541 
-709 
-11542 
-710 
-11543 
-711 
-11544 
-712 
-11545 
-713 
-11546 
-714 
-11547 
-715 
-11548 
-716 
-11549 
-717 
-11550 
-718 
-11551 
-719 
-11552 
-720 
-11553 
-721 
-11554 
-722 
-11555 
-723 
-11556 
-724 
-11557 
-725 
-11558 
-726 
-11559 
-727 
-11560 
-728 
-11561 
-729 
-11562 
-730 
-11563 
-731 
-11564 
-732 
-11565 
-733 
-11566 
-734 
-11567 
-735 
-11568 
-736 
-11569 
-737 
-11570 
-738 
-11571 
-739 
-11572 
-740 
-11573 
-741 
-11574 
-742 
-11575 
-743 
-11576 
-744 
-11577 
-745 
-11578 
-746 
-11579 
-747 
-11580 
-748 
-11581 
-749 
-11582 
-750 
-11583 
-751 
-11584 
-752 
-11585 
-753 
-11586 
-754 
-11587 
-755 
-11588 
-756 
-11589 
-757 
-11590 
-758 
-11591 
-759 
-11592 
-760 
-11593 
-761 
-11594 
-762 
-11595 
-763 
-11596 
-764 
-11597 
-765 
-11598 
-766 
-11599 
-767 
-11600 
-768 
-11601 
-769 
-11602 
-770 
-11603 
-771 
-11604 
-772 
-11605 
-773 
-11606 
-774 
-11607 
-775 
-11608 
-776 
-11609 
-777 
-11610 
-778 
-11611 
-779 
-11612 
-780 
-11613 
-781 
-11614 
-782 
-11615 
-783 
-11616 
-784 
-11617 
-785 
-11618 
-786 
-11619 
-787 
-11620 
-788 
-11621 
-789 
-11622 
-790 
-11623 
-791 
-11624 
-792 
-11625 
-793 
-11626 
-794 
-11627 
-795 
-11628 
-796 
-11629 
-797 
-11630 
-798 
-11631 
-799 
-11632 
-800 
-11633 
-801 
-11634 
-802 
-11635 
-803 
-11636 
-804 
-11637 
-805 
-11638 
-806 
-11639 
-807 
-11640 
-808 
-11641 
-809 
-11642 
-810 
-11643 
-811 
-11644 
-812 
-11645 
-813 
-11646 
-814 
-11647 
-815 
-11648 
-816 
-11649 
-817 
-11650 
-818 
-11651 
-819 
-11652 
-820 
-11653 
-821 
-11654 
-822 
-11655 
-823 
-11656 
-824 
-11657 
-825 
-11658 
-826 
-11659 
-827 
-11660 
-828 
-11661 
-829 
-11662 
-830 
-11663 
-831 
-11664 
-832 
-11665 
-833 
-11666 
-834 
-11667 
-835 
-11668 
-836 
-11669 
-837 
-11670 
-838 
-11671 
-839 
-11672 
-840 
-11673 
-841 
-11674 
-842 
-11675 
-843 
-11676 
-844 
-11677 
-845 
-11678 
-846 
-11679 
-847 
-11680 
-848 
-11681 
-849 
-11682 
-850 
-11683 
-851 
-11684 
-852 
-11685 
-853 
-11686 
-854 
-11687 
-855 
-11688 
-856 
-11689 
-857 
-11690 
-858 
-11691 
-859 
-11692 
-860 
-11693 
-861 
-11694 
-862 
-11695 
-863 
-11696 
-864 
-11697 
-865 
-11698 
-866 
-11699 
-867 
-11700 
-868 
-11701 
-869 
-11702 
-870 
-11703 
-871 
-11704 
-872 
-11705 
-873 
-11706 
-874 
-11707 
-875 
-11708 
-876 
-11709 
-877 
-11710 
-878 
-11711 
-879 
-11712 
-880 
-11713 
-881 
-11714 
-882 
-11715 
-883 
-11716 
-884 
-11717 
-885 
-11718 
-886 
-11719 
-887 
-11720 
-888 
-11721 
-889 
-11722 
-890 
-11723 
-891 
-11724 
-892 
-11725 
-893 
-11726 
-894 
-11727 
-895 
-11728 
-896 
-11729 
-897 
-11730 
-898 
-11731 
-899 
-11732 
-900 
-11733 
-901 
-11734 
-902 
-903 
-904 
-905 
-906 
-907 
-908 
-909 
-11742 
-910 
-11743 
-911 
-11744 
-912 
-11745 
-913 
-11746 
-914 
-11747 
-915 
-11748 
-916 
-11749 
-917 
-11750 
-918 
-11751 
-919 
-11752 
-920 
-11753 
-921 
-11754 
-922 
-11755 
-923 
-11756 
-924 
-11757 
-925 
-11758 
-926 
-11759 
-927 
-11760 
-928 
-11761 
-929 
-11762 
-930 
-11763 
-931 
-11764 
-932 
-11765 
-933 
-11766 
-934 
-11767 
-935 
-11768 
-936 
-11769 
-937 
-11770 
-938 
-11771 
-939 
-11772 
-940 
-11773 
-941 
-11774 
-942 
-11775 
-943 
-11776 
-944 
-11777 
-945 
-11778 
-946 
-11779 
-947 
-11780 
-948 
-11781 
-949 
-11782 
-950 
-11783 
-951 
-11784 
-952 
-11785 
-953 
-11786 
-954 
-11787 
-955 
-11788 
-956 
-11789 
-957 
-11790 
-958 
-11791 
-959 
-11792 
-960 
-11793 
-961 
-11794 
-962 
-11795 
-963 
-11796 
-964 
-11797 
-965 
-11798 
-966 
-11799 
-967 
-11800 
-968 
-11801 
-969 
-11802 
-970 
-11803 
-971 
-11804 
-972 
-973 
-974 
-975 
-976 
-977 
-978 
-979 
-980 
-981 
-982 
-983 
-984 
-11817 
-985 
-11818 
-986 
-11819 
-987 
-11820 
-988 
-11821 
-989 
-11822 
-990 
-11823 
-991 
-11824 
-992 
-11825 
-993 
-11826 
-994 
-11827 
-995 
-11828 
-996 
-11829 
-997 
-11830 
-998 
-11831 
-999 
-11832 
-1000 
-11833 
-1001 
-11834 
-1002 
-11835 
-1003 
-11836 
-1004 
-11837 
-1005 
-11838 
-1006 
-11839 
-1007 
-11840 
-1008 
-11841 
-1009 
-11842 
-1010 
-11843 
-1011 
-11844 
-1012 
-11845 
-1013 
-11846 
-1014 
-11847 
-1015 
-11848 
-1016 
-11849 
-1017 
-11850 
-1018 
-11851 
-1019 
-11852 
-1020 
-11853 
-1021 
-11854 
-1022 
-11855 
-1023 
-11856 
-1024 
-11857 
-1025 
-11858 
-1026 
-11859 
-1027 
-11860 
-1028 
-11861 
-1029 
-11862 
-1030 
-11863 
-1031 
-11864 
-1032 
-11865 
-1033 
-11866 
-1034 
-11867 
-1035 
-11868 
-1036 
-11869 
-1037 
-11870 
-1038 
-11871 
-1039 
-11872 
-1040 
-11873 
-1041 
-11874 
-1042 
-1043 
-1044 
-1045 
-1046 
-1047 
-1048 
-1049 
-1050 
-1051 
-1052 
-1053 
-1054 
-1055 
-1056 
-1057 
-1058 
-1059 
-11892 
-1060 
-11893 
-1061 
-11894 
-1062 
-11895 
-1063 
-11896 
-1064 
-11897 
-1065 
-11898 
-1066 
-11899 
-1067 
-11900 
-1068 
-11901 
-1069 
-11902 
-1070 
-11903 
-1071 
-11904 
-1072 
-11905 
-1073 
-11906 
-1074 
-11907 
-1075 
-11908 
-1076 
-11909 
-1077 
-11910 
-1078 
-11911 
-1079 
-11912 
-1080 
-11913 
-1081 
-11914 
-1082 
-11915 
-1083 
-11916 
-1084 
-11917 
-1085 
-11918 
-1086 
-11919 
-1087 
-11920 
-1088 
-11921 
-1089 
-11922 
-1090 
-11923 
-1091 
-11924 
-1092 
-11925 
-1093 
-11926 
-1094 
-11927 
-1095 
-11928 
-1096 
-11929 
-1097 
-11930 
-1098 
-11931 
-1099 
-11932 
-1100 
-11933 
-1101 
-11934 
-1102 
-11935 
-1103 
-11936 
-1104 
-11937 
-1105 
-11938 
-1106 
-11939 
-1107 
-11940 
-1108 
-11941 
-1109 
-11942 
-1110 
-11943 
-1111 
-11944 
-1112 
-11945 
-1113 
-1114 
-1115 
-1116 
-1117 
-1118 
-1119 
-1120 
-1121 
-1122 
-1123 
-1124 
-1125 
-1126 
-1127 
-1128 
-1129 
-1130 
-1131 
-1132 
-1133 
-1134 
-11967 
-1135 
-11968 
-1136 
-11969 
-1137 
-11970 
-1138 
-11971 
-1139 
-11972 
-1140 
-11973 
-1141 
-11974 
-1142 
-11975 
-1143 
-11976 
-1144 
-11977 
-1145 
-11978 
-1146 
-11979 
-1147 
-11980 
-1148 
-11981 
-1149 
-11982 
-1150 
-11983 
-1151 
-11984 
-1152 
-11985 
-1153 
-11986 
-1154 
-11987 
-1155 
-11988 
-1156 
-11989 
-1157 
-11990 
-1158 
-11991 
-1159 
-11992 
-1160 
-11993 
-1161 
-11994 
-1162 
-11995 
-1163 
-11996 
-1164 
-11997 
-1165 
-11998 
-1166 
-11999 
-1167 
-12000 
-1168 
-12001 
-1169 
-12002 
-1170 
-12003 
-1171 
-12004 
-1172 
-12005 
-1173 
-12006 
-1174 
-12007 
-1175 
-12008 
-1176 
-12009 
-1177 
-12010 
-1178 
-12011 
-1179 
-12012 
-1180 
-12013 
-1181 
-12014 
-1182 
-12015 
-1183 
-12016 
-1184 
-1185 
-1186 
-1187 
-1188 
-1189 
-1190 
-1191 
-1192 
-1193 
-1194 
-1195 
-1196 
-1197 
-1198 
-1199 
-1200 
-1201 
-1202 
-1203 
-1204 
-1205 
-1206 
-1207 
-1208 
-1209 
-12042 
-1210 
-12043 
-1211 
-12044 
-1212 
-12045 
-1213 
-12046 
-1214 
-12047 
-1215 
-12048 
-1216 
-12049 
-1217 
-12050 
-1218 
-12051 
-1219 
-12052 
-1220 
-12053 
-1221 
-12054 
-1222 
-12055 
-1223 
-12056 
-1224 
-12057 
-1225 
-12058 
-1226 
-12059 
-1227 
-12060 
-1228 
-12061 
-1229 
-12062 
-1230 
-12063 
-1231 
-12064 
-1232 
-12065 
-1233 
-12066 
-1234 
-12067 
-1235 
-12068 
-1236 
-12069 
-1237 
-12070 
-1238 
-12071 
-1239 
-12072 
-1240 
-12073 
-1241 
-12074 
-1242 
-12075 
-1243 
-12076 
-1244 
-12077 
-1245 
-12078 
-1246 
-12079 
-1247 
-12080 
-1248 
-12081 
-1249 
-12082 
-1250 
-12083 
-1251 
-12084 
-1252 
-12085 
-1253 
-12086 
-1254 
-12087 
-1255 
-1256 
-1257 
-1258 
-1259 
-1260 
-1261 
-1262 
-1263 
-1264 
-1265 
-1266 
-1267 
-1268 
-1269 
-1270 
-1271 
-1272 
-1273 
-1274 
-1275 
-1276 
-1277 
-1278 
-1279 
-1280 
-1281 
-1282 
-1283 
-1284 
-12117 
-1285 
-12118 
-1286 
-12119 
-1287 
-12120 
-1288 
-12121 
-1289 
-12122 
-1290 
-12123 
-1291 
-12124 
-1292 
-12125 
-1293 
-12126 
-1294 
-12127 
-1295 
-12128 
-1296 
-12129 
-1297 
-12130 
-1298 
-12131 
-1299 
-12132 
-1300 
-12133 
-1301 
-12134 
-1302 
-12135 
-1303 
-12136 
-1304 
-12137 
-1305 
-12138 
-1306 
-12139 
-1307 
-12140 
-1308 
-12141 
-1309 
-12142 
-1310 
-12143 
-1311 
-12144 
-1312 
-12145 
-1313 
-12146 
-1314 
-12147 
-1315 
-12148 
-1316 
-12149 
-1317 
-12150 
-1318 
-12151 
-1319 
-12152 
-1320 
-12153 
-1321 
-12154 
-1322 
-12155 
-1323 
-12156 
-1324 
-12157 
-1325 
-12158 
-1326 
-1327 
-1328 
-1329 
-1330 
-1331 
-1332 
-1333 
-1334 
-1335 
-1336 
-1337 
-1338 
-1339 
-1340 
-1341 
-1342 
-1343 
-1344 
-1345 
-1346 
-1347 
-1348 
-1349 
-1350 
-1351 
-1352 
-1353 
-1354 
-1355 
-1356 
-1357 
-1358 
-1359 
-12192 
-1360 
-12193 
-1361 
-12194 
-1362 
-12195 
-1363 
-12196 
-1364 
-12197 
-1365 
-12198 
-1366 
-12199 
-1367 
-12200 
-1368 
-12201 
-1369 
-12202 
-1370 
-12203 
-1371 
-12204 
-1372 
-12205 
-1373 
-12206 
-1374 
-12207 
-1375 
-12208 
-1376 
-12209 
-1377 
-12210 
-1378 
-12211 
-1379 
-12212 
-1380 
-12213 
-1381 
-12214 
-1382 
-12215 
-1383 
-12216 
-1384 
-12217 
-1385 
-12218 
-1386 
-12219 
-1387 
-12220 
-1388 
-12221 
-1389 
-12222 
-1390 
-12223 
-1391 
-12224 
-1392 
-12225 
-1393 
-12226 
-1394 
-12227 
-1395 
-12228 
-1396 
-12229 
-1397 
-12230 
-1398 
-1399 
-1400 
-1401 
-1402 
-1403 
-1404 
-1405 
-1406 
-1407 
-1408 
-1409 
-1410 
-1411 
-1412 
-1413 
-1414 
-1415 
-1416 
-1417 
-1418 
-1419 
-1420 
-1421 
-1422 
-1423 
-1424 
-1425 
-1426 
-1427 
-1428 
-1429 
-1430 
-1431 
-1432 
-1433 
-1434 
-12267 
-1435 
-12268 
-1436 
-12269 
-1437 
-12270 
-1438 
-12271 
-1439 
-12272 
-1440 
-12273 
-1441 
-12274 
-1442 
-12275 
-1443 
-12276 
-1444 
-12277 
-1445 
-12278 
-1446 
-12279 
-1447 
-12280 
-1448 
-12281 
-1449 
-12282 
-1450 
-12283 
-1451 
-12284 
-1452 
-12285 
-1453 
-12286 
-1454 
-12287 
-1455 
-12288 
-1456 
-12289 
-1457 
-12290 
-1458 
-12291 
-1459 
-12292 
-1460 
-12293 
-1461 
-12294 
-1462 
-12295 
-1463 
-12296 
-1464 
-12297 
-1465 
-12298 
-1466 
-12299 
-1467 
-12300 
-1468 
-12301 
-1469 
-12302 
-1470 
-1471 
-1472 
-1473 
-1474 
-1475 
-1476 
-1477 
-1478 
-1479 
-1480 
-1481 
-1482 
-1483 
-1484 
-1485 
-1486 
-1487 
-1488 
-1489 
-1490 
-1491 
-1492 
-1493 
-1494 
-1495 
-1496 
-1497 
-1498 
-1499 
-1500 
-1501 
-1502 
-1503 
-1504 
-1505 
-1506 
-1507 
-1508 
-1509 
-12342 
-1510 
-12343 
-1511 
-12344 
-1512 
-12345 
-1513 
-12346 
-1514 
-12347 
-1515 
-12348 
-1516 
-12349 
-1517 
-12350 
-1518 
-12351 
-1519 
-12352 
-1520 
-12353 
-1521 
-12354 
-1522 
-12355 
-1523 
-12356 
-1524 
-12357 
-1525 
-12358 
-1526 
-12359 
-1527 
-12360 
-1528 
-12361 
-1529 
-12362 
-1530 
-12363 
-1531 
-12364 
-1532 
-12365 
-1533 
-12366 
-1534 
-12367 
-1535 
-12368 
-1536 
-12369 
-1537 
-12370 
-1538 
-12371 
-1539 
-12372 
-1540 
-12373 
-1541 
-12374 
-1542 
-1543 
-1544 
-1545 
-1546 
-1547 
-1548 
-1549 
-1550 
-1551 
-1552 
-1553 
-1554 
-1555 
-1556 
-1557 
-1558 
-1559 
-1560 
-1561 
-1562 
-1563 
-1564 
-1565 
-1566 
-1567 
-1568 
-1569 
-1570 
-1571 
-1572 
-1573 
-1574 
-1575 
-1576 
-1577 
-1578 
-1579 
-1580 
-1581 
-1582 
-1583 
-1584 
-12417 
-1585 
-12418 
-1586 
-12419 
-1587 
-12420 
-1588 
-12421 
-1589 
-12422 
-1590 
-12423 
-1591 
-12424 
-1592 
-12425 
-1593 
-12426 
-1594 
-12427 
-1595 
-12428 
-1596 
-12429 
-1597 
-12430 
-1598 
-12431 
-1599 
-12432 
-1600 
-12433 
-1601 
-12434 
-1602 
-12435 
-1603 
-12436 
-1604 
-12437 
-1605 
-12438 
-1606 
-12439 
-1607 
-12440 
-1608 
-12441 
-1609 
-12442 
-1610 
-12443 
-1611 
-12444 
-1612 
-12445 
-1613 
-12446 
-1614 
-1615 
-1616 
-1617 
-1618 
-1619 
-1620 
-1621 
-1622 
-1623 
-1624 
-1625 
-1626 
-1627 
-1628 
-1629 
-1630 
-1631 
-1632 
-1633 
-1634 
-1635 
-1636 
-1637 
-1638 
-1639 
-1640 
-1641 
-1642 
-1643 
-1644 
-1645 
-1646 
-1647 
-1648 
-1649 
-1650 
-1651 
-1652 
-1653 
-1654 
-1655 
-1656 
-1657 
-1658 
-1659 
-12492 
-1660 
-12493 
-1661 
-12494 
-1662 
-12495 
-1663 
-12496 
-1664 
-12497 
-1665 
-12498 
-1666 
-12499 
-1667 
-12500 
-1668 
-12501 
-1669 
-12502 
-1670 
-12503 
-1671 
-12504 
-1672 
-12505 
-1673 
-12506 
-1674 
-12507 
-1675 
-12508 
-1676 
-12509 
-1677 
-12510 
-1678 
-12511 
-1679 
-12512 
-1680 
-12513 
-1681 
-12514 
-1682 
-12515 
-1683 
-12516 
-1684 
-12517 
-1685 
-1686 
-1687 
-1688 
-1689 
-1690 
-1691 
-1692 
-1693 
-1694 
-1695 
-1696 
-1697 
-1698 
-1699 
-1700 
-1701 
-1702 
-1703 
-1704 
-1705 
-1706 
-1707 
-1708 
-1709 
-1710 
-1711 
-1712 
-1713 
-1714 
-1715 
-1716 
-1717 
-1718 
-1719 
-1720 
-1721 
-1722 
-1723 
-1724 
-1725 
-1726 
-1727 
-1728 
-1729 
-1730 
-1731 
-1732 
-1733 
-1734 
-12567 
-1735 
-12568 
-1736 
-12569 
-1737 
-12570 
-1738 
-12571 
-1739 
-12572 
-1740 
-12573 
-1741 
-12574 
-1742 
-12575 
-1743 
-12576 
-1744 
-12577 
-1745 
-12578 
-1746 
-12579 
-1747 
-12580 
-1748 
-12581 
-1749 
-12582 
-1750 
-12583 
-1751 
-12584 
-1752 
-12585 
-1753 
-12586 
-1754 
-12587 
-1755 
-12588 
-1756 
-12589 
-1757 
-1758 
-1759 
-1760 
-1761 
-1762 
-1763 
-1764 
-1765 
-1766 
-1767 
-1768 
-1769 
-1770 
-1771 
-1772 
-1773 
-1774 
-1775 
-1776 
-1777 
-1778 
-1779 
-1780 
-1781 
-1782 
-1783 
-1784 
-1785 
-1786 
-1787 
-1788 
-1789 
-1790 
-1791 
-1792 
-1793 
-1794 
-1795 
-1796 
-1797 
-1798 
-1799 
-1800 
-1801 
-1802 
-1803 
-1804 
-1805 
-1806 
-1807 
-1808 
-1809 
-12642 
-1810 
-12643 
-1811 
-12644 
-1812 
-12645 
-1813 
-12646 
-1814 
-12647 
-1815 
-12648 
-1816 
-12649 
-1817 
-12650 
-1818 
-12651 
-1819 
-12652 
-1820 
-12653 
-1821 
-12654 
-1822 
-12655 
-1823 
-12656 
-1824 
-12657 
-1825 
-12658 
-1826 
-12659 
-1827 
-12660 
-1828 
-1829 
-1830 
-1831 
-1832 
-1833 
-1834 
-1835 
-1836 
-1837 
-1838 
-1839 
-1840 
-1841 
-1842 
-1843 
-1844 
-1845 
-1846 
-1847 
-1848 
-1849 
-1850 
-1851 
-1852 
-1853 
-1854 
-1855 
-1856 
-1857 
-1858 
-1859 
-1860 
-1861 
-1862 
-1863 
-1864 
-1865 
-1866 
-1867 
-1868 
-1869 
-1870 
-1871 
-1872 
-1873 
-1874 
-1875 
-1876 
-1877 
-1878 
-1879 
-1880 
-1881 
-1882 
-1883 
-1884 
-12717 
-1885 
-12718 
-1886 
-12719 
-1887 
-12720 
-1888 
-12721 
-1889 
-12722 
-1890 
-12723 
-1891 
-12724 
-1892 
-12725 
-1893 
-12726 
-1894 
-12727 
-1895 
-12728 
-1896 
-12729 
-1897 
-12730 
-1898 
-12731 
-1899 
-1900 
-1901 
-1902 
-1903 
-1904 
-1905 
-1906 
-1907 
-1908 
-1909 
-1910 
-1911 
-1912 
-1913 
-1914 
-1915 
-1916 
-1917 
-1918 
-1919 
-1920 
-1921 
-1922 
-1923 
-1924 
-1925 
-1926 
-1927 
-1928 
-1929 
-1930 
-1931 
-1932 
-1933 
-1934 
-1935 
-1936 
-1937 
-1938 
-1939 
-1940 
-1941 
-1942 
-1943 
-1944 
-1945 
-1946 
-1947 
-1948 
-1949 
-1950 
-1951 
-1952 
-1953 
-1954 
-1955 
-1956 
-1957 
-1958 
-1959 
-12792 
-1960 
-12793 
-1961 
-12794 
-1962 
-12795 
-1963 
-12796 
-1964 
-12797 
-1965 
-12798 
-1966 
-12799 
-1967 
-12800 
-1968 
-12801 
-1969 
-1970 
-1971 
-1972 
-1973 
-1974 
-1975 
-1976 
-1977 
-1978 
-1979 
-1980 
-1981 
-1982 
-1983 
-1984 
-1985 
-1986 
-1987 
-1988 
-1989 
-1990 
-1991 
-1992 
-1993 
-1994 
-1995 
-1996 
-1997 
-1998 
-1999 
-2000 
-2001 
-2002 
-2003 
-2004 
-2005 
-2006 
-2007 
-2008 
-2009 
-2010 
-2011 
-2012 
-2013 
-2014 
-2015 
-2016 
-2017 
-2018 
-2019 
-2020 
-2021 
-2022 
-2023 
-2024 
-2025 
-2026 
-2027 
-2028 
-2029 
-2030 
-2031 
-2032 
-2033 
-2034 
-12867 
-2035 
-12868 
-2036 
-12869 
-2037 
-12870 
-2038 
-12871 
-2039 
-2040 
-2041 
-2042 
-2043 
-2044 
-2045 
-2046 
-2047 
-2048 
-2049 
-2050 
-2051 
-2052 
-2053 
-2054 
-2055 
-2056 
-2057 
-2058 
-2059 
-2060 
-2061 
-2062 
-2063 
-2064 
-2065 
-2066 
-2067 
-2068 
-2069 
-2070 
-2071 
-2072 
-2073 
-2074 
-2075 
-2076 
-2077 
-2078 
-2079 
-2080 
-2081 
-2082 
-2083 
-2084 
-2085 
-2086 
-2087 
-2088 
-2089 
-2090 
-2091 
-2092 
-2093 
-2094 
-2095 
-2096 
-2097 
-2098 
-2099 
-2100 
-2101 
-2102 
-2103 
-2104 
-2105 
-2106 
-2107 
-2108 
-2109 
-2110 
-2111 
-2112 
-2113 
-2114 
-2115 
-2116 
-2117 
-2118 
-2119 
-2120 
-2121 
-2122 
-2123 
-2124 
-2125 
-2126 
-2127 
-2128 
-2129 
-2130 
-2131 
-2132 
-2133 
-2134 
-2135 
-2136 
-2137 
-2138 
-2139 
-2140 
-2141 
-2142 
-2143 
-2144 
-2145 
-2146 
-2147 
-2148 
-2149 
-2150 
-2151 
-2152 
-2153 
-2154 
-2155 
-2156 
-2157 
-2158 
-2159 
-2160 
-2161 
-2162 
-2163 
-2164 
-2165 
-2166 
-2167 
-2168 
-2169 
-2170 
-2171 
-2172 
-2173 
-2174 
-2175 
-2176 
-2177 
-2178 
-2179 
-2180 
-2181 
-2182 
-2183 
-2184 
-2185 
-2186 
-2187 
-2188 
-2189 
-2190 
-2191 
-2192 
-2193 
-2194 
-2195 
-2196 
-2197 
-2198 
-2199 
-2200 
-2201 
-2202 
-2203 
-2204 
-2205 
-2206 
-2207 
-2208 
-2209 
-2210 
-2211 
-2212 
-2213 
-2214 
-2215 
-2216 
-2217 
-2218 
-2219 
-2220 
-2221 
-2222 
-2223 
-2224 
-2225 
-2226 
-2227 
-2228 
-2229 
-2230 
-2231 
-2232 
-2233 
-2234 
-2235 
-2236 
-2237 
-2238 
-2239 
-2240 
-2241 
-2242 
-2243 
-2244 
-2245 
-2246 
-2247 
-2248 
-2249 
-2250 
-2251 
-2252 
-2253 
-2254 
-2255 
-2256 
-2257 
-2258 
-2259 
-2260 
-2261 
-2262 
-2263 
-2264 
-2265 
-2266 
-2267 
-2268 
-2269 
-2270 
-2271 
-2272 
-2273 
-2274 
-2275 
-2276 
-2277 
-2278 
-2279 
-2280 
-2281 
-2282 
-2283 
-2284 
-2285 
-2286 
-2287 
-2288 
-2289 
-2290 
-2291 
-2292 
-2293 
-2294 
-2295 
-2296 
-2297 
-2298 
-2299 
-2300 
-2301 
-2302 
-2303 
-2304 
-2305 
-2306 
-2307 
-2308 
-2309 
-2310 
-2311 
-2312 
-2313 
-2314 
-2315 
-2316 
-2317 
-2318 
-2319 
-2320 
-2321 
-2322 
-2325 
-2326 
-2327 
-2328 
-2329 
-2330 
-2331 
-2332 
-2333 
-2334 
-2335 
-2336 
-2337 
-2338 
-2339 
-2340 
-2341 
-2342 
-2343 
-2344 
-2345 
-2346 
-2347 
-2348 
-2349 
-2350 
-2351 
-2352 
-2353 
-2354 
-2355 
-2356 
-2357 
-2358 
-2359 
-2360 
-2361 
-2362 
-2363 
-2364 
-2365 
-2366 
-2367 
-2368 
-2369 
-2370 
-2371 
-2372 
-2373 
-2374 
-2375 
-2376 
-2377 
-2378 
-2379 
-2380 
-2381 
-2382 
-2383 
-2384 
-2385 
-2386 
-2387 
-2388 
-2389 
-2390 
-2391 
-2392 
-2393 
-2394 
-2400 
-2401 
-2402 
-2403 
-2404 
-2405 
-2406 
-2407 
-2408 
-2409 
-2410 
-2411 
-2412 
-2413 
-2414 
-2415 
-2416 
-2417 
-2418 
-2419 
-2420 
-2421 
-2422 
-2423 
-2424 
-2425 
-2426 
-2427 
-2428 
-2429 
-2430 
-2431 
-2432 
-2433 
-2434 
-2435 
-2436 
-2437 
-2438 
-2439 
-2440 
-2441 
-2442 
-2443 
-2444 
-2445 
-2446 
-2447 
-2448 
-2449 
-2450 
-2451 
-2452 
-2453 
-2454 
-2455 
-2456 
-2457 
-2458 
-2459 
-2460 
-2461 
-2462 
-2463 
-2464 
-2465 
-2466 
-2475 
-2476 
-2477 
-2478 
-2479 
-2480 
-2481 
-2482 
-2483 
-2484 
-2485 
-2486 
-2487 
-2488 
-2489 
-2490 
-2491 
-2492 
-2493 
-2494 
-2495 
-2496 
-2497 
-2498 
-2499 
-2500 
-2501 
-2502 
-2503 
-2504 
-2505 
-2506 
-2507 
-2508 
-2509 
-2510 
-2511 
-2512 
-2513 
-2514 
-2515 
-2516 
-2517 
-2518 
-2519 
-2520 
-2521 
-2522 
-2523 
-2524 
-2525 
-2526 
-2527 
-2528 
-2529 
-2530 
-2531 
-2532 
-2533 
-2534 
-2535 
-2536 
-2537 
-2538 
-2550 
-2551 
-2552 
-2553 
-2554 
-2555 
-2556 
-2557 
-2558 
-2559 
-2560 
-2561 
-2562 
-2563 
-2564 
-2565 
-2566 
-2567 
-2568 
-2569 
-2570 
-2571 
-2572 
-2573 
-2574 
-2575 
-2576 
-2577 
-2578 
-2579 
-2580 
-2581 
-2582 
-2583 
-2584 
-2585 
-2586 
-2587 
-2588 
-2589 
-2590 
-2591 
-2592 
-2593 
-2594 
-2595 
-2596 
-2597 
-2598 
-2599 
-2600 
-2601 
-2602 
-2603 
-2604 
-2605 
-2606 
-2607 
-2608 
-2609 
-2610 
-2625 
-2626 
-2627 
-2628 
-2629 
-2630 
-2631 
-2632 
-2633 
-2634 
-2635 
-2636 
-2637 
-2638 
-2639 
-2640 
-2641 
-2642 
-2643 
-2644 
-2645 
-2646 
-2647 
-2648 
-2649 
-2650 
-2651 
-2652 
-2653 
-2654 
-2655 
-2656 
-2657 
-2658 
-2659 
-2660 
-2661 
-2662 
-2663 
-2664 
-2665 
-2666 
-2667 
-2668 
-2669 
-2670 
-2671 
-2672 
-2673 
-2674 
-2675 
-2676 
-2677 
-2678 
-2679 
-2680 
-2681 
-2682 
-2683 
-2700 
-2701 
-2702 
-2703 
-2704 
-2705 
-2706 
-2707 
-2708 
-2709 
-2710 
-2711 
-2712 
-2713 
-2714 
-2715 
-2716 
-2717 
-2718 
-2719 
-2720 
-2721 
-2722 
-2723 
-2724 
-2725 
-2726 
-2727 
-2728 
-2729 
-2730 
-2731 
-2732 
-2733 
-2734 
-2735 
-2736 
-2737 
-2738 
-2739 
-2740 
-2741 
-2742 
-2743 
-2744 
-2745 
-2746 
-2747 
-2748 
-2749 
-2750 
-2751 
-2752 
-2753 
-2754 
-2755 
-2775 
-2776 
-2777 
-2778 
-2779 
-2780 
-2781 
-2782 
-2783 
-2784 
-2785 
-2786 
-2787 
-2788 
-2789 
-2790 
-2791 
-2792 
-2793 
-2794 
-2795 
-2796 
-2797 
-2798 
-2799 
-2800 
-2801 
-2802 
-2803 
-2804 
-2805 
-2806 
-2807 
-2808 
-2809 
-2810 
-2811 
-2812 
-2813 
-2814 
-2815 
-2816 
-2817 
-2818 
-2819 
-2820 
-2821 
-2822 
-2823 
-2824 
-2825 
-2826 
-2827 
-2828 
-2850 
-2851 
-2852 
-2853 
-2854 
-2855 
-2856 
-2857 
-2858 
-2859 
-2860 
-2861 
-2862 
-2863 
-2864 
-2865 
-2866 
-2867 
-2868 
-2869 
-2870 
-2871 
-2872 
-2873 
-2874 
-2875 
-2876 
-2877 
-2878 
-2879 
-2880 
-2881 
-2882 
-2883 
-2884 
-2885 
-2886 
-2887 
-2888 
-2889 
-2890 
-2891 
-2892 
-2893 
-2894 
-2895 
-2896 
-2897 
-2898 
-2899 
-2900 
-2901 
-2925 
-2926 
-2927 
-2928 
-2929 
-2930 
-2931 
-2932 
-2933 
-2934 
-2935 
-2936 
-2937 
-2938 
-2939 
-2940 
-2941 
-2942 
-2943 
-2944 
-2945 
-2946 
-2947 
-2948 
-2949 
-2950 
-2951 
-2952 
-2953 
-2954 
-2955 
-2956 
-2957 
-2958 
-2959 
-2960 
-2961 
-2962 
-2963 
-2964 
-2965 
-2966 
-2967 
-2968 
-2969 
-2970 
-2971 
-2972 
-2973 
-2974 
-3000 
-3001 
-3002 
-3003 
-3004 
-3005 
-3006 
-3007 
-3008 
-3009 
-3010 
-3011 
-3012 
-3013 
-3014 
-3015 
-3016 
-3017 
-3018 
-3019 
-3020 
-3021 
-3022 
-3023 
-3024 
-3025 
-3026 
-3027 
-3028 
-3029 
-3030 
-3031 
-3032 
-3033 
-3034 
-3035 
-3036 
-3037 
-3038 
-3039 
-3040 
-3041 
-3042 
-3043 
-3044 
-3045 
-3046 
-3047 
-3075 
-3076 
-3077 
-3078 
-3079 
-3080 
-3081 
-3082 
-3083 
-3084 
-3085 
-3086 
-3087 
-3088 
-3089 
-3090 
-3091 
-3092 
-3093 
-3094 
-3095 
-3096 
-3097 
-3098 
-3099 
-3100 
-3101 
-3102 
-3103 
-3104 
-3105 
-3106 
-3107 
-3108 
-3109 
-3110 
-3111 
-3112 
-3113 
-3114 
-3115 
-3116 
-3117 
-3118 
-3119 
-3120 
-3150 
-3151 
-3152 
-3153 
-3154 
-3155 
-3156 
-3157 
-3158 
-3159 
-3160 
-3161 
-3162 
-3163 
-3164 
-3165 
-3166 
-3167 
-3168 
-3169 
-3170 
-3171 
-3172 
-3173 
-3174 
-3175 
-3176 
-3177 
-3178 
-3179 
-3180 
-3181 
-3182 
-3183 
-3184 
-3185 
-3186 
-3187 
-3188 
-3189 
-3190 
-3191 
-3192 
-3193 
-3194 
-3225 
-3226 
-3227 
-3228 
-3229 
-3230 
-3231 
-3232 
-3233 
-3234 
-3235 
-3236 
-3237 
-3238 
-3239 
-3240 
-3241 
-3242 
-3243 
-3244 
-3245 
-3246 
-3247 
-3248 
-3249 
-3250 
-3251 
-3252 
-3253 
-3254 
-3255 
-3256 
-3257 
-3258 
-3259 
-3260 
-3261 
-3262 
-3263 
-3264 
-3265 
-3266 
-3267 
-3300 
-3301 
-3302 
-3303 
-3304 
-3305 
-3306 
-3307 
-3308 
-3309 
-3310 
-3311 
-3312 
-3313 
-3314 
-3315 
-3316 
-3317 
-3318 
-3319 
-3320 
-3321 
-3322 
-3323 
-3324 
-3325 
-3326 
-3327 
-3328 
-3329 
-3330 
-3331 
-3332 
-3333 
-3334 
-3335 
-3336 
-3337 
-3338 
-3339 
-3340 
-3375 
-3376 
-3377 
-3378 
-3379 
-3380 
-3381 
-3382 
-3383 
-3384 
-3385 
-3386 
-3387 
-3388 
-3389 
-3390 
-3391 
-3392 
-3393 
-3394 
-3395 
-3396 
-3397 
-3398 
-3399 
-3400 
-3401 
-3402 
-3403 
-3404 
-3405 
-3406 
-3407 
-3408 
-3409 
-3410 
-3411 
-3412 
-3413 
-3414 
-3450 
-3451 
-3452 
-3453 
-3454 
-3455 
-3456 
-3457 
-3458 
-3459 
-3460 
-3461 
-3462 
-3463 
-3464 
-3465 
-3466 
-3467 
-3468 
-3469 
-3470 
-3471 
-3472 
-3473 
-3474 
-3475 
-3476 
-3477 
-3478 
-3479 
-3480 
-3481 
-3482 
-3483 
-3484 
-3485 
-3486 
-3487 
-3525 
-3526 
-3527 
-3528 
-3529 
-3530 
-3531 
-3532 
-3533 
-3534 
-3535 
-3536 
-3537 
-3538 
-3539 
-3540 
-3541 
-3542 
-3543 
-3544 
-3545 
-3546 
-3547 
-3548 
-3549 
-3550 
-3551 
-3552 
-3553 
-3554 
-3555 
-3556 
-3557 
-3558 
-3559 
-3560 
-3600 
-3601 
-3602 
-3603 
-3604 
-3605 
-3606 
-3607 
-3608 
-3609 
-3610 
-3611 
-3612 
-3613 
-3614 
-3615 
-3616 
-3617 
-3618 
-3619 
-3620 
-3621 
-3622 
-3623 
-3624 
-3625 
-3626 
-3627 
-3628 
-3629 
-3630 
-3631 
-3632 
-3633 
-3634 
-3675 
-3676 
-3677 
-3678 
-3679 
-3680 
-3681 
-3682 
-3683 
-3684 
-3685 
-3686 
-3687 
-3688 
-3689 
-3690 
-3691 
-3692 
-3693 
-3694 
-3695 
-3696 
-3697 
-3698 
-3699 
-3700 
-3701 
-3702 
-3703 
-3704 
-3705 
-3706 
-3707 
-3750 
-3751 
-3752 
-3753 
-3754 
-3755 
-3756 
-3757 
-3758 
-3759 
-3760 
-3761 
-3762 
-3763 
-3764 
-3765 
-3766 
-3767 
-3768 
-3769 
-3770 
-3771 
-3772 
-3773 
-3774 
-3775 
-3776 
-3777 
-3778 
-3779 
-3780 
-3781 
-3825 
-3826 
-3827 
-3828 
-3829 
-3830 
-3831 
-3832 
-3833 
-3834 
-3835 
-3836 
-3837 
-3838 
-3839 
-3840 
-3841 
-3842 
-3843 
-3844 
-3845 
-3846 
-3847 
-3848 
-3849 
-3850 
-3851 
-3852 
-3853 
-3854 
-3900 
-3901 
-3902 
-3903 
-3904 
-3905 
-3906 
-3907 
-3908 
-3909 
-3910 
-3911 
-3912 
-3913 
-3914 
-3915 
-3916 
-3917 
-3918 
-3919 
-3920 
-3921 
-3922 
-3923 
-3924 
-3925 
-3926 
-3927 
-3928 
-3975 
-3976 
-3977 
-3978 
-3979 
-3980 
-3981 
-3982 
-3983 
-3984 
-3985 
-3986 
-3987 
-3988 
-3989 
-3990 
-3991 
-3992 
-3993 
-3994 
-3995 
-3996 
-3997 
-3998 
-3999 
-4000 
-4001 
-4050 
-4051 
-4052 
-4053 
-4054 
-4055 
-4056 
-4057 
-4058 
-4059 
-4060 
-4061 
-4062 
-4063 
-4064 
-4065 
-4066 
-4067 
-4068 
-4069 
-4070 
-4071 
-4072 
-4073 
-4074 
-4125 
-4126 
-4127 
-4128 
-4129 
-4130 
-4131 
-4132 
-4133 
-4134 
-4135 
-4136 
-4137 
-4138 
-4139 
-4140 
-4141 
-4142 
-4143 
-4144 
-4145 
-4146 
-4147 
-4148 
-4200 
-4201 
-4202 
-4203 
-4204 
-4205 
-4206 
-4207 
-4208 
-4209 
-4210 
-4211 
-4212 
-4213 
-4214 
-4215 
-4216 
-4217 
-4218 
-4219 
-4220 
-4221 
-4275 
-4276 
-4277 
-4278 
-4279 
-4280 
-4281 
-4282 
-4283 
-4284 
-4285 
-4286 
-4287 
-4288 
-4289 
-4290 
-4291 
-4292 
-4293 
-4294 
-4350 
-4351 
-4352 
-4353 
-4354 
-4355 
-4356 
-4357 
-4358 
-4359 
-4360 
-4361 
-4362 
-4363 
-4364 
-4365 
-4366 
-4367 
-4425 
-4426 
-4427 
-4428 
-4429 
-4430 
-4431 
-4432 
-4433 
-4434 
-4435 
-4436 
-4437 
-4438 
-4439 
-4440 
-4500 
-4501 
-4502 
-4503 
-4504 
-4505 
-4506 
-4507 
-4508 
-4509 
-4510 
-4511 
-4512 
-4575 
-4576 
-4577 
-4578 
-4579 
-4580 
-4581 
-4582 
-4583 
-4584 
-4585 
-4650 
-4651 
-4652 
-4653 
-4654 
-4655 
-4656 
-4657 
-4725 
-4726 
-4727 
-4728 
-4729 
-4800 
-4801 
-7500 
-7501 
-7502 
-7503 
-7504 
-7505 
-7506 
-7507 
-7508 
-7509 
-7510 
-7511 
-7512 
-7513 
-7514 
-7515 
-7516 
-7517 
-7518 
-7519 
-7520 
-7521 
-7522 
-7523 
-7524 
-7525 
-7526 
-7527 
-7528 
-7529 
-7530 
-7531 
-7532 
-7533 
-7534 
-7535 
-7536 
-7537 
-7538 
-7539 
-7540 
-7541 
-7542 
-7543 
-7544 
-7545 
-7546 
-7547 
-7548 
-7549 
-7550 
-7551 
-7552 
-7553 
-7554 
-7555 
-7556 
-7557 
-7558 
-7559 
-7560 
-7561 
-7562 
-7563 
-7564 
-7565 
-7566 
-7567 
-7568 
-7569 
-7570 
-7571 
-7572 
-7573 
-7574 
-7575 
-7576 
-7577 
-7578 
-7579 
-7580 
-7581 
-7582 
-7583 
-7584 
-7585 
-7586 
-7587 
-7588 
-7589 
-7590 
-7591 
-7592 
-7593 
-7594 
-7595 
-7596 
-7597 
-7598 
-7599 
-7600 
-7601 
-7602 
-7603 
-7604 
-7605 
-7606 
-7607 
-7608 
-7609 
-7610 
-7611 
-7612 
-7613 
-7614 
-7615 
-7616 
-7617 
-7618 
-7619 
-7620 
-7621 
-7622 
-7623 
-7624 
-7625 
-7626 
-7627 
-7628 
-7629 
-7630 
-7631 
-7632 
-7633 
-7634 
-7635 
-7636 
-7637 
-7638 
-7639 
-7640 
-7641 
-7642 
-7643 
-7644 
-7645 
-7646 
-7647 
-7648 
-7649 
-7650 
-7651 
-7652 
-7653 
-7654 
-7655 
-7656 
-7657 
-7658 
-7659 
-7660 
-7661 
-7662 
-7663 
-7664 
-7665 
-7666 
-7667 
-7668 
-7669 
-7670 
-7671 
-7672 
-7673 
-7674 
-7675 
-7676 
-7677 
-7678 
-7679 
-7680 
-7681 
-7682 
-7683 
-7684 
-7685 
-7686 
-7687 
-7688 
-7689 
-7690 
-7691 
-7692 
-7693 
-7694 
-7695 
-7696 
-7697 
-7698 
-7699 
-7700 
-7701 
-7702 
-7703 
-7704 
-7705 
-7706 
-7707 
-7708 
-7709 
-7710 
-7711 
-7712 
-7713 
-7714 
-7715 
-7716 
-7717 
-7718 
-7719 
-7720 
-7721 
-7722 
-7723 
-7724 
-7725 
-7726 
-7727 
-7728 
-7729 
-7730 
-7731 
-7732 
-7733 
-7734 
-7735 
-7736 
-7737 
-7738 
-7739 
-7740 
-7741 
-7742 
-7743 
-7744 
-7745 
-7746 
-7747 
-7748 
-7749 
-7750 
-7751 
-7752 
-7753 
-7754 
-7755 
-7756 
-7757 
-7758 
-7759 
-7760 
-7761 
-7762 
-7763 
-7764 
-7765 
-7766 
-7767 
-7768 
-7769 
-7770 
-7771 
-7772 
-7773 
-7774 
-7775 
-7776 
-7777 
-7778 
-7779 
-7780 
-7781 
-7782 
-7783 
-7784 
-7785 
-7786 
-7787 
-7788 
-7789 
-7790 
-7791 
-7792 
-7793 
-7794 
-7795 
-7796 
-7797 
-7798 
-7799 
-7800 
-7801 
-7802 
-7803 
-7804 
-7805 
-7806 
-7807 
-7808 
-7809 
-7810 
-7811 
-7812 
-7813 
-7814 
-7815 
-7816 
-7817 
-7818 
-7819 
-7820 
-7821 
-7822 
-7823 
-7824 
-7825 
-7826 
-7827 
-7828 
-7829 
-7830 
-7831 
-7832 
-7833 
-7834 
-7835 
-7836 
-7837 
-7838 
-7839 
-7840 
-7841 
-7842 
-7843 
-7844 
-7845 
-7846 
-7847 
-7848 
-7849 
-7850 
-7851 
-7852 
-7853 
-7854 
-7855 
-7856 
-7857 
-7858 
-7859 
-7860 
-7861 
-7862 
-7863 
-7864 
-7865 
-7866 
-7867 
-7868 
-7869 
-7870 
-7871 
-7872 
-7873 
-7874 
-7875 
-7876 
-7877 
-7878 
-7879 
-7880 
-7881 
-7882 
-7883 
-7884 
-7885 
-7886 
-7887 
-7888 
-7889 
-7890 
-7891 
-7892 
-7893 
-7894 
-7895 
-7896 
-7897 
-7898 
-7899 
-7900 
-7901 
-7902 
-7903 
-7904 
-7905 
-7906 
-7907 
-7908 
-7909 
-7910 
-7911 
-7912 
-7913 
-7914 
-7915 
-7916 
-7917 
-7918 
-7919 
-7920 
-7921 
-7922 
-7923 
-7924 
-7925 
-7926 
-7927 
-7928 
-7929 
-7930 
-7931 
-7932 
-7933 
-7934 
-7935 
-7936 
-7937 
-7938 
-7939 
-7940 
-7941 
-7942 
-7943 
-7944 
-7945 
-7946 
-7947 
-7948 
-7949 
-7950 
-7951 
-7952 
-7953 
-7954 
-7955 
-7956 
-7957 
-7958 
-7959 
-7960 
-7961 
-7962 
-7963 
-7964 
-7965 
-7966 
-7967 
-7968 
-7969 
-7970 
-7971 
-7972 
-7973 
-7974 
-7975 
-7976 
-7977 
-7978 
-7979 
-7980 
-7981 
-7982 
-7983 
-7984 
-7985 
-7986 
-7987 
-7988 
-7989 
-7990 
-7991 
-7992 
-7993 
-7994 
-7995 
-7996 
-7997 
-7998 
-7999 
-8000 
-8001 
-8002 
-8003 
-8004 
-8005 
-8006 
-8007 
-8008 
-8009 
-8010 
-8011 
-8012 
-8013 
-8014 
-8015 
-8016 
-8017 
-8018 
-8019 
-8020 
-8021 
-8022 
-8023 
-8024 
-8025 
-8026 
-8027 
-8028 
-8029 
-8030 
-8031 
-8032 
-8033 
-8034 
-8035 
-8036 
-8037 
-8038 
-8039 
-8040 
-8041 
-8042 
-8043 
-8044 
-8045 
-8046 
-8047 
-8048 
-8049 
-8050 
-8051 
-8052 
-8053 
-8054 
-8055 
-8056 
-8057 
-8058 
-8059 
-8060 
-8061 
-8062 
-8063 
-8064 
-8065 
-8066 
-8067 
-8068 
-8069 
-8070 
-8071 
-8072 
-8073 
-8074 
-8075 
-8076 
-8077 
-8078 
-8079 
-8080 
-8081 
-8082 
-8083 
-8084 
-8085 
-8086 
-8087 
-8088 
-8089 
-8090 
-8091 
-8092 
-8093 
-8094 
-8095 
-8096 
-8097 
-8098 
-8099 
-8100 
-8101 
-8102 
-8103 
-8104 
-8105 
-8106 
-8107 
-8108 
-8109 
-8110 
-8111 
-8112 
-8113 
-8114 
-8115 
-8116 
-8117 
-8118 
-8119 
-8120 
-8121 
-8122 
-8123 
-8124 
-8125 
-8126 
-8127 
-8128 
-8129 
-8130 
-8131 
-8132 
-8133 
-8134 
-8135 
-8136 
-8137 
-8138 
-8139 
-8140 
-8141 
-8142 
-8143 
-8144 
-8145 
-8146 
-8147 
-8148 
-8149 
-8150 
-8151 
-8152 
-8153 
-8154 
-8155 
-8156 
-8157 
-8158 
-8159 
-8160 
-8161 
-8162 
-8163 
-8164 
-8165 
-8166 
-8167 
-8168 
-8169 
-8170 
-8171 
-8172 
-8173 
-8174 
-8175 
-8176 
-8177 
-8178 
-8179 
-8180 
-8181 
-8182 
-8183 
-8184 
-8185 
-8186 
-8187 
-8188 
-8189 
-8190 
-8191 
-8192 
-8193 
-8194 
-8195 
-8196 
-8197 
-8198 
-8199 
-8200 
-8201 
-8202 
-8203 
-8204 
-8205 
-8206 
-8207 
-8208 
-8209 
-8210 
-8211 
-8212 
-8213 
-8214 
-8215 
-8216 
-8217 
-8218 
-8219 
-8220 
-8221 
-8222 
-8223 
-8224 
-8225 
-8226 
-8227 
-8228 
-8229 
-8230 
-8231 
-8232 
-8233 
-8234 
-8235 
-8236 
-8237 
-8238 
-8239 
-8240 
-8241 
-8242 
-8243 
-8244 
-8245 
-8246 
-8247 
-8248 
-8249 
-8250 
-8251 
-8252 
-8253 
-8254 
-8255 
-8256 
-8257 
-8258 
-8259 
-8260 
-8261 
-8262 
-8263 
-8264 
-8265 
-8266 
-8267 
-8268 
-8269 
-8270 
-8271 
-8272 
-8273 
-8274 
-8275 
-8276 
-8277 
-8278 
-8279 
-8280 
-8281 
-8282 
-8283 
-8284 
-8285 
-8286 
-8287 
-8288 
-8289 
-8290 
-8291 
-8292 
-8293 
-8294 
-8295 
-8296 
-8297 
-8298 
-8299 
-8300 
-8301 
-8302 
-8303 
-8304 
-8305 
-8306 
-8307 
-8308 
-8309 
-8310 
-8311 
-8312 
-8313 
-8314 
-8315 
-8316 
-8317 
-8318 
-8319 
-8320 
-8321 
-8322 
-8323 
-8324 
-8325 
-8326 
-8327 
-8328 
-8329 
-8330 
-8331 
-8332 
-8333 
-8334 
-8335 
-8336 
-8337 
-8338 
-8339 
-8340 
-8341 
-8342 
-8343 
-8344 
-8345 
-8346 
-8347 
-8348 
-8349 
-8350 
-8351 
-8352 
-8353 
-8354 
-8355 
-8356 
-8357 
-8358 
-8359 
-8360 
-8361 
-8362 
-8363 
-8364 
-8365 
-8366 
-8367 
-8368 
-8369 
-8370 
-8371 
-8372 
-8373 
-8374 
-8375 
-8376 
-8377 
-8378 
-8379 
-8380 
-8381 
-8382 
-8383 
-8384 
-8385 
-8386 
-8387 
-8388 
-8389 
-8390 
-8391 
-8392 
-8393 
-8394 
-8395 
-8396 
-8397 
-8398 
-8399 
-8400 
-8401 
-8402 
-8403 
-8404 
-8405 
-8406 
-8407 
-8408 
-8409 
-8410 
-8411 
-8412 
-8413 
-8414 
-8415 
-8416 
-8417 
-8418 
-8419 
-8420 
-8421 
-8422 
-8423 
-8424 
-8425 
-8426 
-8427 
-8428 
-8429 
-8430 
-8431 
-8432 
-8433 
-8434 
-8435 
-8436 
-8437 
-8438 
-8439 
-8440 
-8441 
-8442 
-8443 
-8444 
-8445 
-8446 
-8447 
-8448 
-8449 
-8450 
-8451 
-8452 
-8453 
-8454 
-8455 
-8456 
-8457 
-8458 
-8459 
-8460 
-8461 
-8462 
-8463 
-8464 
-8465 
-8466 
-8467 
-8468 
-8469 
-8470 
-8471 
-8472 
-8473 
-8474 
-8475 
-8476 
-8477 
-8478 
-8479 
-8480 
-8481 
-8482 
-8483 
-8484 
-8485 
-8486 
-8487 
-8488 
-8489 
-8490 
-8491 
-8492 
-8493 
-8494 
-8495 
-8496 
-8497 
-8498 
-8499 
-8500 
-8501 
-8502 
-8503 
-8504 
-8505 
-8506 
-8507 
-8508 
-8509 
-8510 
-8511 
-8512 
-8513 
-8514 
-8515 
-8516 
-8517 
-8518 
-8519 
-8520 
-8521 
-8522 
-8523 
-8524 
-8525 
-8526 
-8527 
-8528 
-8529 
-8530 
-8531 
-8532 
-8533 
-8534 
-8535 
-8536 
-8537 
-8538 
-8539 
-8540 
-8541 
-8542 
-8543 
-8544 
-8545 
-8546 
-8547 
-8548 
-8549 
-8550 
-8551 
-8552 
-8553 
-8554 
-8555 
-8556 
-8557 
-8558 
-8559 
-8560 
-8561 
-8562 
-8563 
-8564 
-8565 
-8566 
-8567 
-8568 
-8569 
-8570 
-8571 
-8572 
-8573 
-8574 
-8575 
-8576 
-8577 
-8578 
-8579 
-8580 
-8581 
-8582 
-8583 
-8584 
-8585 
-8586 
-8587 
-8588 
-8589 
-8590 
-8591 
-8592 
-8593 
-8594 
-8595 
-8596 
-8597 
-8598 
-8599 
-8600 
-8601 
-8602 
-8603 
-8604 
-8605 
-8606 
-8607 
-8608 
-8609 
-8610 
-8611 
-8612 
-8613 
-8614 
-8615 
-8616 
-8617 
-8618 
-8619 
-8620 
-8621 
-8622 
-8623 
-8624 
-8625 
-8626 
-8627 
-8628 
-8629 
-8630 
-8631 
-8632 
-8633 
-8634 
-8635 
-8636 
-8637 
-8638 
-8639 
-8640 
-8641 
-8642 
-8643 
-8644 
-8645 
-8646 
-8647 
-8648 
-8649 
-8650 
-8651 
-8652 
-8653 
-8654 
-8655 
-8656 
-8657 
-8658 
-8659 
-8660 
-8661 
-8662 
-8663 
-8664 
-8665 
-8666 
-8667 
-8668 
-8669 
-8670 
-8671 
-8672 
-8673 
-8674 
-8675 
-8676 
-8677 
-8678 
-8679 
-8680 
-8681 
-8682 
-8683 
-8684 
-8685 
-8686 
-8687 
-8688 
-8689 
-8690 
-8691 
-8692 
-8693 
-8694 
-8695 
-8696 
-8697 
-8700 
-8701 
-8702 
-8703 
-8704 
-8705 
-8712 
-8713 
-8714 
-8715 
-8716 
-8717 
-8718 
-8719 
-8720 
-8721 
-8722 
-8723 
-8724 
-8725 
-8726 
-8727 
-8728 
-8729 
-8730 
-8731 
-8732 
-8733 
-8734 
-8735 
-8736 
-8737 
-8738 
-8739 
-8740 
-8741 
-8742 
-8743 
-8744 
-8745 
-8746 
-8747 
-8748 
-8749 
-8750 
-8751 
-8752 
-8753 
-8754 
-8755 
-8756 
-8757 
-8758 
-8759 
-8760 
-8761 
-8762 
-8763 
-8764 
-8765 
-8766 
-8767 
-8768 
-8769 
-8770 
-8771 
-8772 
-8773 
-8774 
-8787 
-8788 
-8789 
-8790 
-8791 
-8792 
-8793 
-8794 
-8795 
-8796 
-8797 
-8798 
-8799 
-8800 
-8801 
-8802 
-8803 
-8804 
-8805 
-8806 
-8807 
-8808 
-8809 
-8810 
-8811 
-8812 
-8813 
-8814 
-8815 
-8816 
-8817 
-8818 
-8819 
-8820 
-8821 
-8822 
-8823 
-8824 
-8825 
-8826 
-8827 
-8828 
-8829 
-8830 
-8831 
-8832 
-8833 
-8834 
-8835 
-8836 
-8837 
-8838 
-8839 
-8840 
-8841 
-8842 
-8843 
-8844 
-8845 
-8846 
-8847 
-8862 
-8863 
-8864 
-8865 
-8866 
-8867 
-8868 
-8869 
-8870 
-8871 
-8872 
-8873 
-8874 
-8875 
-8876 
-8877 
-8878 
-8879 
-8880 
-8881 
-8882 
-8883 
-8884 
-8885 
-8886 
-8887 
-8888 
-8889 
-8890 
-8891 
-8892 
-8893 
-8894 
-8895 
-8896 
-8897 
-8898 
-8899 
-8900 
-8901 
-8902 
-8903 
-8904 
-8905 
-8906 
-8907 
-8908 
-8909 
-8910 
-8911 
-8912 
-8913 
-8914 
-8915 
-8916 
-8917 
-8937 
-8938 
-8939 
-8940 
-8941 
-8942 
-8943 
-8944 
-8945 
-8946 
-8947 
-8948 
-8949 
-8950 
-8951 
-8952 
-8953 
-8954 
-8955 
-8956 
-8957 
-8958 
-8959 
-8960 
-8961 
-8962 
-8963 
-8964 
-8965 
-8966 
-8967 
-8968 
-8969 
-8970 
-8971 
-8972 
-8973 
-8974 
-8975 
-8976 
-8977 
-8978 
-8979 
-8980 
-8981 
-8982 
-8983 
-8984 
-8985 
-8986 
-8987 
-8988 
-9012 
-9013 
-9014 
-9015 
-9016 
-9017 
-9018 
-9019 
-9020 
-9021 
-9022 
-9023 
-9024 
-9025 
-9026 
-9027 
-9028 
-9029 
-9030 
-9031 
-9032 
-9033 
-9034 
-9035 
-9036 
-9037 
-9038 
-9039 
-9040 
-9041 
-9042 
-9043 
-9044 
-9045 
-9046 
-9047 
-9048 
-9049 
-9050 
-9051 
-9052 
-9053 
-9054 
-9055 
-9056 
-9057 
-9058 
-9059 
-9087 
-9088 
-9089 
-9090 
-9091 
-9092 
-9093 
-9094 
-9095 
-9096 
-9097 
-9098 
-9099 
-9100 
-9101 
-9102 
-9103 
-9104 
-9105 
-9106 
-9107 
-9108 
-9109 
-9110 
-9111 
-9112 
-9113 
-9114 
-9115 
-9116 
-9117 
-9118 
-9119 
-9120 
-9121 
-9122 
-9123 
-9124 
-9125 
-9126 
-9127 
-9128 
-9129 
-9130 
-9162 
-9163 
-9164 
-9165 
-9166 
-9167 
-9168 
-9169 
-9170 
-9171 
-9172 
-9173 
-9174 
-9175 
-9176 
-9177 
-9178 
-9179 
-9180 
-9181 
-9182 
-9183 
-9184 
-9185 
-9186 
-9187 
-9188 
-9189 
-9190 
-9191 
-9192 
-9193 
-9194 
-9195 
-9196 
-9197 
-9198 
-9199 
-9200 
-9201 
-9202 
-9237 
-9238 
-9239 
-9240 
-9241 
-9242 
-9243 
-9244 
-9245 
-9246 
-9247 
-9248 
-9249 
-9250 
-9251 
-9252 
-9253 
-9254 
-9255 
-9256 
-9257 
-9258 
-9259 
-9260 
-9261 
-9262 
-9263 
-9264 
-9265 
-9266 
-9267 
-9268 
-9269 
-9270 
-9271 
-9272 
-9273 
-9274 
-9312 
-9313 
-9314 
-9315 
-9316 
-9317 
-9318 
-9319 
-9320 
-9321 
-9322 
-9323 
-9324 
-9325 
-9326 
-9327 
-9328 
-9329 
-9330 
-9331 
-9332 
-9333 
-9334 
-9335 
-9336 
-9337 
-9338 
-9339 
-9340 
-9341 
-9342 
-9343 
-9344 
-9345 
-9387 
-9388 
-9389 
-9390 
-9391 
-9392 
-9393 
-9394 
-9395 
-9396 
-9397 
-9398 
-9399 
-9400 
-9401 
-9402 
-9403 
-9404 
-9405 
-9406 
-9407 
-9408 
-9409 
-9410 
-9411 
-9412 
-9413 
-9414 
-9415 
-9416 
-9417 
-9462 
-9463 
-9464 
-9465 
-9466 
-9467 
-9468 
-9469 
-9470 
-9471 
-9472 
-9473 
-9474 
-9475 
-9476 
-9477 
-9478 
-9479 
-9480 
-9481 
-9482 
-9483 
-9484 
-9485 
-9486 
-9487 
-9488 
-9489 
-9537 
-9538 
-9539 
-9540 
-9541 
-9542 
-9543 
-9544 
-9545 
-9546 
-9547 
-9548 
-9549 
-9550 
-9551 
-9552 
-9553 
-9554 
-9555 
-9556 
-9557 
-9558 
-9559 
-9560 
-9561 
-9612 
-9613 
-9614 
-9615 
-9616 
-9617 
-9618 
-9619 
-9620 
-9621 
-9622 
-9623 
-9624 
-9625 
-9626 
-9627 
-9628 
-9629 
-9630 
-9631 
-9632 
-9687 
-9688 
-9689 
-9690 
-9691 
-9692 
-9693 
-9694 
-9695 
-9696 
-9697 
-9698 
-9699 
-9700 
-9701 
-9702 
-9703 
-9762 
-9763 
-9764 
-9765 
-9766 
-9767 
-9768 
-9769 
-9770 
-9771 
-9772 
-9773 
-9774 
-9837 
-9838 
-9839 
-9840 
-9841 
-9842 
-9843 
-9844 
-9912 
-9913 
-10544 
-10545 
-10546 
-10547 
-10548 
-10549 
-10550 
-10551 
-10552 
-10553 
-10554 
-10555 
-10556 
-10557 
-10558 
-10559 
-10560 
-10561 
-10562 
-10563 
-10564 
-10565 
-10566 
-10567 
-10568 
-10569 
-10570 
-10571 
-10572 
-10573 
-10574 
-10575 
-10576 
-10577 
-10578 
-10579 
-10580 
-10581 
-10582 
-10583 
-10584 
-10585 
-10586 
-10587 
-10588 
-10589 
-10590 
-10591 
-10592 
-10593 
-10594 
-10595 
-10596 
-10597 
-10598 
-10599 
-10600 
-10601 
-10602 
-10603 
-10604 
-10605 
-10606 
-10607 
-10608 
-10609 
-10610 
-10611 
-10612 
-10613 
-10614 
-10615 
-10616 
-10617 
-10618 
-10619 
-10620 
-10621 
-10622 
-10623 
-10624 
-10625 
-10626 
-10627 
-10628 
-10629 
-10630 
-10631 
-10632 
-10633 
-10634 
-10635 
-10636 
-10637 
-10638 
-10639 
-10640 
-10641 
-10642 
-10643 
-10644 
-10645 
-10646 
-10647 
-10648 
-10649 
-10650 
-10651 
-10652 
-10653 
-10654 
-10655 
-10656 
-10657 
-10658 
-10659 
-10660 
-10661 
-10662 
-10663 
-10664 
-10665 
-10666 
-10667 
-10668 
-10669 
-10670 
-10671 
-10672 
-10673 
-10674 
-10675 
-10676 
-10677 
-10678 
-10679 
-10680 
-10681 
-10682 
-10683 
-10684 
-10685 
-10686 
-10687 
-10688 
-10689 
-10690 
-10691 
-10692 
-10693 
-10694 
-10695 
-10696 
-10697 
-10698 
-10699 
-10700 
-10701 
-10702 
-10703 
-10704 
-10705 
-10706 
-10707 
-10708 
-10709 
-10710 
-10711 
-10712 
-10713 
-10714 
-10715 
-10716 
-10717 
-10718 
-10719 
-10720 
-10721 
-10722 
-10723 
-10724 
-10725 
-10726 
-10727 
-10728 
-10729 
-10730 
-10731 
-10732 
-10733 
-10734 
-10735 
-10736 
-10737 
-10738 
-10739 
-10740 
-10741 
-10742 
-10743 
-10744 
-10745 
-10746 
-10747 
-10748 
-10749 
-10750 
-10751 
-10752 
-10753 
-10754 
-10755 
-10756 
-10757 
-10758 
-10759 
-10760 
-10761 
-10762 
-10763 
-10764 
-10765 
-10766 
-10767 
-10768 
-10769 
-10770 
-10771 
-10772 
-10773 
-10774 
-10775 
-10776 
-10777 
-10778 
-10779 
-10780 
-10781 
-10782 
-10783 
-10784 
-10785 
-10786 
-10787 
-10788 
-10789 
-10790 
-10791 
-10792 
-10793 
-10794 
-10795 
-10796 
-10797 
-10798 
-10799 
-10800 
-10801 
-10802 
-10803 
-10804 
-10805 
-10806 
-10807 
-10808 
-10809 
-10810 
-10811 
-10812 
-10813 
-10814 
-10815 
-10816 
-10817 
-10818 
-10819 
-10820 
-10821 
-10822 
-10823 
-10824 
-10825 
-10826 
-10827 
-10828 
-10829 
-10830 
-10831 
-)
-
-// ************************************************************************* //
diff --git a/tutorials/multiphase/interFoam/les/nozzleFlow2D/constant/polyMesh/sets/refinedCells b/tutorials/multiphase/interFoam/les/nozzleFlow2D/constant/polyMesh/sets/refinedCells
deleted file mode 100644
index 276e2ccb5f5c8196dc1021dedc004f9e6a72ee1c..0000000000000000000000000000000000000000
--- a/tutorials/multiphase/interFoam/les/nozzleFlow2D/constant/polyMesh/sets/refinedCells
+++ /dev/null
@@ -1,14161 +0,0 @@
-/*--------------------------------*- C++ -*----------------------------------*\
-| =========                 |                                                 |
-| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.5                                   |
-|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
-|    \\/     M anipulation  |                                                 |
-\*---------------------------------------------------------------------------*/
-FoamFile
-{
-    version     2.0;
-    format      ascii;
-    class       cellSet;
-    location    "1e-08/polyMesh/sets";
-    object      refinedCells;
-}
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-
-14138
-(
-0 
-1 
-2 
-3 
-4 
-5 
-6 
-7 
-8 
-9 
-10 
-11 
-12 
-13 
-14 
-15 
-16 
-17 
-18 
-19 
-20 
-21 
-22 
-23 
-24 
-25 
-26 
-27 
-28 
-29 
-30 
-31 
-32 
-33 
-34 
-35 
-36 
-37 
-38 
-39 
-40 
-41 
-42 
-43 
-44 
-45 
-46 
-47 
-48 
-49 
-50 
-51 
-52 
-53 
-54 
-55 
-56 
-57 
-58 
-59 
-60 
-61 
-62 
-63 
-64 
-65 
-66 
-67 
-68 
-69 
-70 
-71 
-72 
-73 
-74 
-75 
-76 
-77 
-78 
-79 
-80 
-81 
-82 
-83 
-84 
-85 
-86 
-87 
-88 
-89 
-90 
-91 
-92 
-93 
-94 
-95 
-96 
-97 
-98 
-99 
-100 
-101 
-102 
-103 
-104 
-105 
-106 
-107 
-108 
-109 
-110 
-111 
-112 
-113 
-114 
-115 
-116 
-117 
-118 
-119 
-120 
-121 
-122 
-123 
-124 
-125 
-126 
-127 
-128 
-129 
-130 
-131 
-132 
-133 
-134 
-135 
-136 
-137 
-138 
-139 
-140 
-141 
-142 
-143 
-144 
-145 
-146 
-147 
-148 
-149 
-150 
-151 
-152 
-153 
-154 
-155 
-156 
-157 
-158 
-159 
-160 
-161 
-162 
-163 
-164 
-165 
-166 
-167 
-168 
-169 
-170 
-171 
-172 
-173 
-174 
-175 
-176 
-177 
-178 
-179 
-180 
-181 
-182 
-183 
-184 
-185 
-186 
-187 
-188 
-189 
-190 
-191 
-192 
-193 
-194 
-195 
-196 
-197 
-198 
-199 
-200 
-201 
-202 
-203 
-204 
-205 
-206 
-207 
-208 
-209 
-210 
-211 
-212 
-213 
-214 
-215 
-216 
-217 
-218 
-219 
-220 
-221 
-222 
-223 
-224 
-225 
-226 
-227 
-228 
-229 
-230 
-231 
-232 
-233 
-234 
-235 
-236 
-237 
-238 
-239 
-240 
-241 
-242 
-243 
-244 
-245 
-246 
-247 
-248 
-249 
-250 
-251 
-252 
-253 
-254 
-255 
-256 
-257 
-258 
-259 
-260 
-261 
-262 
-263 
-264 
-265 
-266 
-267 
-268 
-269 
-270 
-271 
-272 
-273 
-274 
-275 
-276 
-277 
-278 
-279 
-280 
-281 
-282 
-283 
-284 
-285 
-286 
-287 
-288 
-289 
-290 
-291 
-292 
-293 
-294 
-295 
-296 
-297 
-298 
-299 
-300 
-301 
-302 
-303 
-304 
-305 
-306 
-307 
-308 
-309 
-310 
-311 
-312 
-313 
-314 
-315 
-316 
-317 
-318 
-319 
-320 
-321 
-322 
-323 
-324 
-325 
-326 
-327 
-328 
-329 
-330 
-331 
-332 
-333 
-334 
-335 
-336 
-337 
-338 
-339 
-340 
-341 
-342 
-343 
-344 
-345 
-346 
-347 
-348 
-349 
-350 
-351 
-352 
-353 
-354 
-355 
-356 
-357 
-358 
-359 
-360 
-361 
-362 
-363 
-364 
-365 
-366 
-367 
-368 
-369 
-370 
-371 
-372 
-373 
-374 
-375 
-376 
-377 
-378 
-379 
-380 
-381 
-382 
-383 
-384 
-385 
-386 
-387 
-388 
-389 
-390 
-391 
-392 
-393 
-394 
-395 
-396 
-397 
-398 
-399 
-400 
-401 
-402 
-403 
-404 
-405 
-406 
-407 
-408 
-409 
-410 
-411 
-412 
-413 
-414 
-415 
-416 
-417 
-418 
-419 
-420 
-421 
-422 
-423 
-424 
-425 
-426 
-427 
-428 
-429 
-430 
-431 
-432 
-433 
-434 
-435 
-436 
-437 
-438 
-439 
-440 
-441 
-442 
-443 
-444 
-445 
-446 
-447 
-448 
-449 
-450 
-451 
-452 
-453 
-454 
-455 
-456 
-457 
-458 
-459 
-460 
-461 
-462 
-463 
-464 
-465 
-466 
-467 
-468 
-469 
-470 
-471 
-472 
-473 
-474 
-475 
-476 
-477 
-478 
-479 
-480 
-481 
-482 
-483 
-484 
-485 
-486 
-487 
-488 
-489 
-490 
-491 
-492 
-493 
-494 
-495 
-496 
-497 
-498 
-499 
-500 
-501 
-502 
-503 
-504 
-505 
-506 
-507 
-508 
-509 
-510 
-511 
-512 
-513 
-514 
-515 
-516 
-517 
-518 
-519 
-520 
-521 
-522 
-523 
-524 
-525 
-526 
-527 
-528 
-529 
-530 
-531 
-532 
-533 
-534 
-535 
-536 
-537 
-538 
-539 
-540 
-541 
-542 
-543 
-544 
-545 
-546 
-547 
-548 
-549 
-550 
-551 
-552 
-553 
-554 
-555 
-556 
-557 
-558 
-559 
-560 
-561 
-562 
-563 
-564 
-565 
-566 
-567 
-568 
-569 
-570 
-571 
-572 
-573 
-574 
-575 
-576 
-577 
-578 
-579 
-580 
-581 
-582 
-583 
-584 
-585 
-586 
-587 
-588 
-589 
-590 
-591 
-592 
-593 
-594 
-595 
-596 
-597 
-598 
-599 
-600 
-601 
-602 
-603 
-604 
-605 
-606 
-607 
-608 
-609 
-610 
-611 
-612 
-613 
-614 
-615 
-616 
-617 
-618 
-619 
-620 
-621 
-622 
-623 
-624 
-625 
-626 
-627 
-628 
-629 
-630 
-631 
-632 
-633 
-634 
-635 
-636 
-637 
-638 
-639 
-640 
-641 
-642 
-643 
-644 
-645 
-646 
-647 
-648 
-649 
-650 
-651 
-652 
-653 
-654 
-655 
-656 
-657 
-658 
-659 
-660 
-661 
-662 
-663 
-664 
-665 
-666 
-667 
-668 
-669 
-670 
-671 
-672 
-673 
-674 
-675 
-676 
-677 
-678 
-679 
-680 
-681 
-682 
-683 
-684 
-685 
-686 
-687 
-688 
-689 
-690 
-691 
-692 
-693 
-694 
-695 
-696 
-697 
-698 
-699 
-700 
-701 
-702 
-703 
-704 
-705 
-706 
-707 
-708 
-709 
-710 
-711 
-712 
-713 
-714 
-715 
-716 
-717 
-718 
-719 
-720 
-721 
-722 
-723 
-724 
-725 
-726 
-727 
-728 
-729 
-730 
-731 
-732 
-733 
-734 
-735 
-736 
-737 
-738 
-739 
-740 
-741 
-742 
-743 
-744 
-745 
-746 
-747 
-748 
-749 
-750 
-751 
-752 
-753 
-754 
-755 
-756 
-757 
-758 
-759 
-760 
-761 
-762 
-763 
-764 
-765 
-766 
-767 
-768 
-769 
-770 
-771 
-772 
-773 
-774 
-775 
-776 
-777 
-778 
-779 
-780 
-781 
-782 
-783 
-784 
-785 
-786 
-787 
-788 
-789 
-790 
-791 
-792 
-793 
-794 
-795 
-796 
-797 
-798 
-799 
-800 
-801 
-802 
-803 
-804 
-805 
-806 
-807 
-808 
-809 
-810 
-811 
-812 
-813 
-814 
-815 
-816 
-817 
-818 
-819 
-820 
-821 
-822 
-823 
-824 
-825 
-826 
-827 
-828 
-829 
-830 
-831 
-832 
-833 
-834 
-835 
-836 
-837 
-838 
-839 
-840 
-841 
-842 
-843 
-844 
-845 
-846 
-847 
-848 
-849 
-850 
-851 
-852 
-853 
-854 
-855 
-856 
-857 
-858 
-859 
-860 
-861 
-862 
-863 
-864 
-865 
-866 
-867 
-868 
-869 
-870 
-871 
-872 
-873 
-874 
-875 
-876 
-877 
-878 
-879 
-880 
-881 
-882 
-883 
-884 
-885 
-886 
-887 
-888 
-889 
-890 
-891 
-892 
-893 
-894 
-895 
-896 
-897 
-898 
-899 
-900 
-901 
-902 
-903 
-904 
-905 
-906 
-907 
-908 
-909 
-910 
-911 
-912 
-913 
-914 
-915 
-916 
-917 
-918 
-919 
-920 
-921 
-922 
-923 
-924 
-925 
-926 
-927 
-928 
-929 
-930 
-931 
-932 
-933 
-934 
-935 
-936 
-937 
-938 
-939 
-940 
-941 
-942 
-943 
-944 
-945 
-946 
-947 
-948 
-949 
-950 
-951 
-952 
-953 
-954 
-955 
-956 
-957 
-958 
-959 
-960 
-961 
-962 
-963 
-964 
-965 
-966 
-967 
-968 
-969 
-970 
-971 
-972 
-973 
-974 
-975 
-976 
-977 
-978 
-979 
-980 
-981 
-982 
-983 
-984 
-985 
-986 
-987 
-988 
-989 
-990 
-991 
-992 
-993 
-994 
-995 
-996 
-997 
-998 
-999 
-1000 
-1001 
-1002 
-1003 
-1004 
-1005 
-1006 
-1007 
-1008 
-1009 
-1010 
-1011 
-1012 
-1013 
-1014 
-1015 
-1016 
-1017 
-1018 
-1019 
-1020 
-1021 
-1022 
-1023 
-1024 
-1025 
-1026 
-1027 
-1028 
-1029 
-1030 
-1031 
-1032 
-1033 
-1034 
-1035 
-1036 
-1037 
-1038 
-1039 
-1040 
-1041 
-1042 
-1043 
-1044 
-1045 
-1046 
-1047 
-1048 
-1049 
-1050 
-1051 
-1052 
-1053 
-1054 
-1055 
-1056 
-1057 
-1058 
-1059 
-1060 
-1061 
-1062 
-1063 
-1064 
-1065 
-1066 
-1067 
-1068 
-1069 
-1070 
-1071 
-1072 
-1073 
-1074 
-1075 
-1076 
-1077 
-1078 
-1079 
-1080 
-1081 
-1082 
-1083 
-1084 
-1085 
-1086 
-1087 
-1088 
-1089 
-1090 
-1091 
-1092 
-1093 
-1094 
-1095 
-1096 
-1097 
-1098 
-1099 
-1100 
-1101 
-1102 
-1103 
-1104 
-1105 
-1106 
-1107 
-1108 
-1109 
-1110 
-1111 
-1112 
-1113 
-1114 
-1115 
-1116 
-1117 
-1118 
-1119 
-1120 
-1121 
-1122 
-1123 
-1124 
-1125 
-1126 
-1127 
-1128 
-1129 
-1130 
-1131 
-1132 
-1133 
-1134 
-1135 
-1136 
-1137 
-1138 
-1139 
-1140 
-1141 
-1142 
-1143 
-1144 
-1145 
-1146 
-1147 
-1148 
-1149 
-1150 
-1151 
-1152 
-1153 
-1154 
-1155 
-1156 
-1157 
-1158 
-1159 
-1160 
-1161 
-1162 
-1163 
-1164 
-1165 
-1166 
-1167 
-1168 
-1169 
-1170 
-1171 
-1172 
-1173 
-1174 
-1175 
-1176 
-1177 
-1178 
-1179 
-1180 
-1181 
-1182 
-1183 
-1184 
-1185 
-1186 
-1187 
-1188 
-1189 
-1190 
-1191 
-1192 
-1193 
-1194 
-1195 
-1196 
-1197 
-1198 
-1199 
-1200 
-1201 
-1202 
-1203 
-1204 
-1205 
-1206 
-1207 
-1208 
-1209 
-1210 
-1211 
-1212 
-1213 
-1214 
-1215 
-1216 
-1217 
-1218 
-1219 
-1220 
-1221 
-1222 
-1223 
-1224 
-1225 
-1226 
-1227 
-1228 
-1229 
-1230 
-1231 
-1232 
-1233 
-1234 
-1235 
-1236 
-1237 
-1238 
-1239 
-1240 
-1241 
-1242 
-1243 
-1244 
-1245 
-1246 
-1247 
-1248 
-1249 
-1250 
-1251 
-1252 
-1253 
-1254 
-1255 
-1256 
-1257 
-1258 
-1259 
-1260 
-1261 
-1262 
-1263 
-1264 
-1265 
-1266 
-1267 
-1268 
-1269 
-1270 
-1271 
-1272 
-1273 
-1274 
-1275 
-1276 
-1277 
-1278 
-1279 
-1280 
-1281 
-1282 
-1283 
-1284 
-1285 
-1286 
-1287 
-1288 
-1289 
-1290 
-1291 
-1292 
-1293 
-1294 
-1295 
-1296 
-1297 
-1298 
-1299 
-1300 
-1301 
-1302 
-1303 
-1304 
-1305 
-1306 
-1307 
-1308 
-1309 
-1310 
-1311 
-1312 
-1313 
-1314 
-1315 
-1316 
-1317 
-1318 
-1319 
-1320 
-1321 
-1322 
-1323 
-1324 
-1325 
-1326 
-1327 
-1328 
-1329 
-1330 
-1331 
-1332 
-1333 
-1334 
-1335 
-1336 
-1337 
-1338 
-1339 
-1340 
-1341 
-1342 
-1343 
-1344 
-1345 
-1346 
-1347 
-1348 
-1349 
-1350 
-1351 
-1352 
-1353 
-1354 
-1355 
-1356 
-1357 
-1358 
-1359 
-1360 
-1361 
-1362 
-1363 
-1364 
-1365 
-1366 
-1367 
-1368 
-1369 
-1370 
-1371 
-1372 
-1373 
-1374 
-1375 
-1376 
-1377 
-1378 
-1379 
-1380 
-1381 
-1382 
-1383 
-1384 
-1385 
-1386 
-1387 
-1388 
-1389 
-1390 
-1391 
-1392 
-1393 
-1394 
-1395 
-1396 
-1397 
-1398 
-1399 
-1400 
-1401 
-1402 
-1403 
-1404 
-1405 
-1406 
-1407 
-1408 
-1409 
-1410 
-1411 
-1412 
-1413 
-1414 
-1415 
-1416 
-1417 
-1418 
-1419 
-1420 
-1421 
-1422 
-1423 
-1424 
-1425 
-1426 
-1427 
-1428 
-1429 
-1430 
-1431 
-1432 
-1433 
-1434 
-1435 
-1436 
-1437 
-1438 
-1439 
-1440 
-1441 
-1442 
-1443 
-1444 
-1445 
-1446 
-1447 
-1448 
-1449 
-1450 
-1451 
-1452 
-1453 
-1454 
-1455 
-1456 
-1457 
-1458 
-1459 
-1460 
-1461 
-1462 
-1463 
-1464 
-1465 
-1466 
-1467 
-1468 
-1469 
-1470 
-1471 
-1472 
-1473 
-1474 
-1475 
-1476 
-1477 
-1478 
-1479 
-1480 
-1481 
-1482 
-1483 
-1484 
-1485 
-1486 
-1487 
-1488 
-1489 
-1490 
-1491 
-1492 
-1493 
-1494 
-1495 
-1496 
-1497 
-1498 
-1499 
-1500 
-1501 
-1502 
-1503 
-1504 
-1505 
-1506 
-1507 
-1508 
-1509 
-1510 
-1511 
-1512 
-1513 
-1514 
-1515 
-1516 
-1517 
-1518 
-1519 
-1520 
-1521 
-1522 
-1523 
-1524 
-1525 
-1526 
-1527 
-1528 
-1529 
-1530 
-1531 
-1532 
-1533 
-1534 
-1535 
-1536 
-1537 
-1538 
-1539 
-1540 
-1541 
-1542 
-1543 
-1544 
-1545 
-1546 
-1547 
-1548 
-1549 
-1550 
-1551 
-1552 
-1553 
-1554 
-1555 
-1556 
-1557 
-1558 
-1559 
-1560 
-1561 
-1562 
-1563 
-1564 
-1565 
-1566 
-1567 
-1568 
-1569 
-1570 
-1571 
-1572 
-1573 
-1574 
-1575 
-1576 
-1577 
-1578 
-1579 
-1580 
-1581 
-1582 
-1583 
-1584 
-1585 
-1586 
-1587 
-1588 
-1589 
-1590 
-1591 
-1592 
-1593 
-1594 
-1595 
-1596 
-1597 
-1598 
-1599 
-1600 
-1601 
-1602 
-1603 
-1604 
-1605 
-1606 
-1607 
-1608 
-1609 
-1610 
-1611 
-1612 
-1613 
-1614 
-1615 
-1616 
-1617 
-1618 
-1619 
-1620 
-1621 
-1622 
-1623 
-1624 
-1625 
-1626 
-1627 
-1628 
-1629 
-1630 
-1631 
-1632 
-1633 
-1634 
-1635 
-1636 
-1637 
-1638 
-1639 
-1640 
-1641 
-1642 
-1643 
-1644 
-1645 
-1646 
-1647 
-1648 
-1649 
-1650 
-1651 
-1652 
-1653 
-1654 
-1655 
-1656 
-1657 
-1658 
-1659 
-1660 
-1661 
-1662 
-1663 
-1664 
-1665 
-1666 
-1667 
-1668 
-1669 
-1670 
-1671 
-1672 
-1673 
-1674 
-1675 
-1676 
-1677 
-1678 
-1679 
-1680 
-1681 
-1682 
-1683 
-1684 
-1685 
-1686 
-1687 
-1688 
-1689 
-1690 
-1691 
-1692 
-1693 
-1694 
-1695 
-1696 
-1697 
-1698 
-1699 
-1700 
-1701 
-1702 
-1703 
-1704 
-1705 
-1706 
-1707 
-1708 
-1709 
-1710 
-1711 
-1712 
-1713 
-1714 
-1715 
-1716 
-1717 
-1718 
-1719 
-1720 
-1721 
-1722 
-1723 
-1724 
-1725 
-1726 
-1727 
-1728 
-1729 
-1730 
-1731 
-1732 
-1733 
-1734 
-1735 
-1736 
-1737 
-1738 
-1739 
-1740 
-1741 
-1742 
-1743 
-1744 
-1745 
-1746 
-1747 
-1748 
-1749 
-1750 
-1751 
-1752 
-1753 
-1754 
-1755 
-1756 
-1757 
-1758 
-1759 
-1760 
-1761 
-1762 
-1763 
-1764 
-1765 
-1766 
-1767 
-1768 
-1769 
-1770 
-1771 
-1772 
-1773 
-1774 
-1775 
-1776 
-1777 
-1778 
-1779 
-1780 
-1781 
-1782 
-1783 
-1784 
-1785 
-1786 
-1787 
-1788 
-1789 
-1790 
-1791 
-1792 
-1793 
-1794 
-1795 
-1796 
-1797 
-1798 
-1799 
-1800 
-1801 
-1802 
-1803 
-1804 
-1805 
-1806 
-1807 
-1808 
-1809 
-1810 
-1811 
-1812 
-1813 
-1814 
-1815 
-1816 
-1817 
-1818 
-1819 
-1820 
-1821 
-1822 
-1823 
-1824 
-1825 
-1826 
-1827 
-1828 
-1829 
-1830 
-1831 
-1832 
-1833 
-1834 
-1835 
-1836 
-1837 
-1838 
-1839 
-1840 
-1841 
-1842 
-1843 
-1844 
-1845 
-1846 
-1847 
-1848 
-1849 
-1850 
-1851 
-1852 
-1853 
-1854 
-1855 
-1856 
-1857 
-1858 
-1859 
-1860 
-1861 
-1862 
-1863 
-1864 
-1865 
-1866 
-1867 
-1868 
-1869 
-1870 
-1871 
-1872 
-1873 
-1874 
-1875 
-1876 
-1877 
-1878 
-1879 
-1880 
-1881 
-1882 
-1883 
-1884 
-1885 
-1886 
-1887 
-1888 
-1889 
-1890 
-1891 
-1892 
-1893 
-1894 
-1895 
-1896 
-1897 
-1898 
-1899 
-1900 
-1901 
-1902 
-1903 
-1904 
-1905 
-1906 
-1907 
-1908 
-1909 
-1910 
-1911 
-1912 
-1913 
-1914 
-1915 
-1916 
-1917 
-1918 
-1919 
-1920 
-1921 
-1922 
-1923 
-1924 
-1925 
-1926 
-1927 
-1928 
-1929 
-1930 
-1931 
-1932 
-1933 
-1934 
-1935 
-1936 
-1937 
-1938 
-1939 
-1940 
-1941 
-1942 
-1943 
-1944 
-1945 
-1946 
-1947 
-1948 
-1949 
-1950 
-1951 
-1952 
-1953 
-1954 
-1955 
-1956 
-1957 
-1958 
-1959 
-1960 
-1961 
-1962 
-1963 
-1964 
-1965 
-1966 
-1967 
-1968 
-1969 
-1970 
-1971 
-1972 
-1973 
-1974 
-1975 
-1976 
-1977 
-1978 
-1979 
-1980 
-1981 
-1982 
-1983 
-1984 
-1985 
-1986 
-1987 
-1988 
-1989 
-1990 
-1991 
-1992 
-1993 
-1994 
-1995 
-1996 
-1997 
-1998 
-1999 
-2000 
-2001 
-2002 
-2003 
-2004 
-2005 
-2006 
-2007 
-2008 
-2009 
-2010 
-2011 
-2012 
-2013 
-2014 
-2015 
-2016 
-2017 
-2018 
-2019 
-2020 
-2021 
-2022 
-2023 
-2024 
-2025 
-2026 
-2027 
-2028 
-2029 
-2030 
-2031 
-2032 
-2033 
-2034 
-2035 
-2036 
-2037 
-2038 
-2039 
-2040 
-2041 
-2042 
-2043 
-2044 
-2045 
-2046 
-2047 
-2048 
-2049 
-2050 
-2051 
-2052 
-2053 
-2054 
-2055 
-2056 
-2057 
-2058 
-2059 
-2060 
-2061 
-2062 
-2063 
-2064 
-2065 
-2066 
-2067 
-2068 
-2069 
-2070 
-2071 
-2072 
-2073 
-2074 
-2075 
-2076 
-2077 
-2078 
-2079 
-2080 
-2081 
-2082 
-2083 
-2084 
-2085 
-2086 
-2087 
-2088 
-2089 
-2090 
-2091 
-2092 
-2093 
-2094 
-2095 
-2096 
-2097 
-2098 
-2099 
-2100 
-2101 
-2102 
-2103 
-2104 
-2105 
-2106 
-2107 
-2108 
-2109 
-2110 
-2111 
-2112 
-2113 
-2114 
-2115 
-2116 
-2117 
-2118 
-2119 
-2120 
-2121 
-2122 
-2123 
-2124 
-2125 
-2126 
-2127 
-2128 
-2129 
-2130 
-2131 
-2132 
-2133 
-2134 
-2135 
-2136 
-2137 
-2138 
-2139 
-2140 
-2141 
-2142 
-2143 
-2144 
-2145 
-2146 
-2147 
-2148 
-2149 
-2150 
-2151 
-2152 
-2153 
-2154 
-2155 
-2156 
-2157 
-2158 
-2159 
-2160 
-2161 
-2162 
-2163 
-2164 
-2165 
-2166 
-2167 
-2168 
-2169 
-2170 
-2171 
-2172 
-2173 
-2174 
-2175 
-2176 
-2177 
-2178 
-2179 
-2180 
-2181 
-2182 
-2183 
-2184 
-2185 
-2186 
-2187 
-2188 
-2189 
-2190 
-2191 
-2192 
-2193 
-2194 
-2195 
-2196 
-2197 
-2198 
-2199 
-2200 
-2201 
-2202 
-2203 
-2204 
-2205 
-2206 
-2207 
-2208 
-2209 
-2210 
-2211 
-2212 
-2213 
-2214 
-2215 
-2216 
-2217 
-2218 
-2219 
-2220 
-2221 
-2222 
-2223 
-2224 
-2225 
-2226 
-2227 
-2228 
-2229 
-2230 
-2231 
-2232 
-2233 
-2234 
-2235 
-2236 
-2237 
-2238 
-2239 
-2240 
-2241 
-2242 
-2243 
-2244 
-2245 
-2246 
-2247 
-2248 
-2249 
-2250 
-2251 
-2252 
-2253 
-2254 
-2255 
-2256 
-2257 
-2258 
-2259 
-2260 
-2261 
-2262 
-2263 
-2264 
-2265 
-2266 
-2267 
-2268 
-2269 
-2270 
-2271 
-2272 
-2273 
-2274 
-2275 
-2276 
-2277 
-2278 
-2279 
-2280 
-2281 
-2282 
-2283 
-2284 
-2285 
-2286 
-2287 
-2288 
-2289 
-2290 
-2291 
-2292 
-2293 
-2294 
-2295 
-2296 
-2297 
-2298 
-2299 
-2300 
-2301 
-2302 
-2303 
-2304 
-2305 
-2306 
-2307 
-2308 
-2309 
-2310 
-2311 
-2312 
-2313 
-2314 
-2315 
-2316 
-2317 
-2318 
-2319 
-2320 
-2321 
-2322 
-2325 
-2326 
-2327 
-2328 
-2329 
-2330 
-2331 
-2332 
-2333 
-2334 
-2335 
-2336 
-2337 
-2338 
-2339 
-2340 
-2341 
-2342 
-2343 
-2344 
-2345 
-2346 
-2347 
-2348 
-2349 
-2350 
-2351 
-2352 
-2353 
-2354 
-2355 
-2356 
-2357 
-2358 
-2359 
-2360 
-2361 
-2362 
-2363 
-2364 
-2365 
-2366 
-2367 
-2368 
-2369 
-2370 
-2371 
-2372 
-2373 
-2374 
-2375 
-2376 
-2377 
-2378 
-2379 
-2380 
-2381 
-2382 
-2383 
-2384 
-2385 
-2386 
-2387 
-2388 
-2389 
-2390 
-2391 
-2392 
-2393 
-2394 
-2400 
-2401 
-2402 
-2403 
-2404 
-2405 
-2406 
-2407 
-2408 
-2409 
-2410 
-2411 
-2412 
-2413 
-2414 
-2415 
-2416 
-2417 
-2418 
-2419 
-2420 
-2421 
-2422 
-2423 
-2424 
-2425 
-2426 
-2427 
-2428 
-2429 
-2430 
-2431 
-2432 
-2433 
-2434 
-2435 
-2436 
-2437 
-2438 
-2439 
-2440 
-2441 
-2442 
-2443 
-2444 
-2445 
-2446 
-2447 
-2448 
-2449 
-2450 
-2451 
-2452 
-2453 
-2454 
-2455 
-2456 
-2457 
-2458 
-2459 
-2460 
-2461 
-2462 
-2463 
-2464 
-2465 
-2466 
-2475 
-2476 
-2477 
-2478 
-2479 
-2480 
-2481 
-2482 
-2483 
-2484 
-2485 
-2486 
-2487 
-2488 
-2489 
-2490 
-2491 
-2492 
-2493 
-2494 
-2495 
-2496 
-2497 
-2498 
-2499 
-2500 
-2501 
-2502 
-2503 
-2504 
-2505 
-2506 
-2507 
-2508 
-2509 
-2510 
-2511 
-2512 
-2513 
-2514 
-2515 
-2516 
-2517 
-2518 
-2519 
-2520 
-2521 
-2522 
-2523 
-2524 
-2525 
-2526 
-2527 
-2528 
-2529 
-2530 
-2531 
-2532 
-2533 
-2534 
-2535 
-2536 
-2537 
-2538 
-2550 
-2551 
-2552 
-2553 
-2554 
-2555 
-2556 
-2557 
-2558 
-2559 
-2560 
-2561 
-2562 
-2563 
-2564 
-2565 
-2566 
-2567 
-2568 
-2569 
-2570 
-2571 
-2572 
-2573 
-2574 
-2575 
-2576 
-2577 
-2578 
-2579 
-2580 
-2581 
-2582 
-2583 
-2584 
-2585 
-2586 
-2587 
-2588 
-2589 
-2590 
-2591 
-2592 
-2593 
-2594 
-2595 
-2596 
-2597 
-2598 
-2599 
-2600 
-2601 
-2602 
-2603 
-2604 
-2605 
-2606 
-2607 
-2608 
-2609 
-2610 
-2625 
-2626 
-2627 
-2628 
-2629 
-2630 
-2631 
-2632 
-2633 
-2634 
-2635 
-2636 
-2637 
-2638 
-2639 
-2640 
-2641 
-2642 
-2643 
-2644 
-2645 
-2646 
-2647 
-2648 
-2649 
-2650 
-2651 
-2652 
-2653 
-2654 
-2655 
-2656 
-2657 
-2658 
-2659 
-2660 
-2661 
-2662 
-2663 
-2664 
-2665 
-2666 
-2667 
-2668 
-2669 
-2670 
-2671 
-2672 
-2673 
-2674 
-2675 
-2676 
-2677 
-2678 
-2679 
-2680 
-2681 
-2682 
-2683 
-2700 
-2701 
-2702 
-2703 
-2704 
-2705 
-2706 
-2707 
-2708 
-2709 
-2710 
-2711 
-2712 
-2713 
-2714 
-2715 
-2716 
-2717 
-2718 
-2719 
-2720 
-2721 
-2722 
-2723 
-2724 
-2725 
-2726 
-2727 
-2728 
-2729 
-2730 
-2731 
-2732 
-2733 
-2734 
-2735 
-2736 
-2737 
-2738 
-2739 
-2740 
-2741 
-2742 
-2743 
-2744 
-2745 
-2746 
-2747 
-2748 
-2749 
-2750 
-2751 
-2752 
-2753 
-2754 
-2755 
-2775 
-2776 
-2777 
-2778 
-2779 
-2780 
-2781 
-2782 
-2783 
-2784 
-2785 
-2786 
-2787 
-2788 
-2789 
-2790 
-2791 
-2792 
-2793 
-2794 
-2795 
-2796 
-2797 
-2798 
-2799 
-2800 
-2801 
-2802 
-2803 
-2804 
-2805 
-2806 
-2807 
-2808 
-2809 
-2810 
-2811 
-2812 
-2813 
-2814 
-2815 
-2816 
-2817 
-2818 
-2819 
-2820 
-2821 
-2822 
-2823 
-2824 
-2825 
-2826 
-2827 
-2828 
-2850 
-2851 
-2852 
-2853 
-2854 
-2855 
-2856 
-2857 
-2858 
-2859 
-2860 
-2861 
-2862 
-2863 
-2864 
-2865 
-2866 
-2867 
-2868 
-2869 
-2870 
-2871 
-2872 
-2873 
-2874 
-2875 
-2876 
-2877 
-2878 
-2879 
-2880 
-2881 
-2882 
-2883 
-2884 
-2885 
-2886 
-2887 
-2888 
-2889 
-2890 
-2891 
-2892 
-2893 
-2894 
-2895 
-2896 
-2897 
-2898 
-2899 
-2900 
-2901 
-2925 
-2926 
-2927 
-2928 
-2929 
-2930 
-2931 
-2932 
-2933 
-2934 
-2935 
-2936 
-2937 
-2938 
-2939 
-2940 
-2941 
-2942 
-2943 
-2944 
-2945 
-2946 
-2947 
-2948 
-2949 
-2950 
-2951 
-2952 
-2953 
-2954 
-2955 
-2956 
-2957 
-2958 
-2959 
-2960 
-2961 
-2962 
-2963 
-2964 
-2965 
-2966 
-2967 
-2968 
-2969 
-2970 
-2971 
-2972 
-2973 
-2974 
-3000 
-3001 
-3002 
-3003 
-3004 
-3005 
-3006 
-3007 
-3008 
-3009 
-3010 
-3011 
-3012 
-3013 
-3014 
-3015 
-3016 
-3017 
-3018 
-3019 
-3020 
-3021 
-3022 
-3023 
-3024 
-3025 
-3026 
-3027 
-3028 
-3029 
-3030 
-3031 
-3032 
-3033 
-3034 
-3035 
-3036 
-3037 
-3038 
-3039 
-3040 
-3041 
-3042 
-3043 
-3044 
-3045 
-3046 
-3047 
-3075 
-3076 
-3077 
-3078 
-3079 
-3080 
-3081 
-3082 
-3083 
-3084 
-3085 
-3086 
-3087 
-3088 
-3089 
-3090 
-3091 
-3092 
-3093 
-3094 
-3095 
-3096 
-3097 
-3098 
-3099 
-3100 
-3101 
-3102 
-3103 
-3104 
-3105 
-3106 
-3107 
-3108 
-3109 
-3110 
-3111 
-3112 
-3113 
-3114 
-3115 
-3116 
-3117 
-3118 
-3119 
-3120 
-3150 
-3151 
-3152 
-3153 
-3154 
-3155 
-3156 
-3157 
-3158 
-3159 
-3160 
-3161 
-3162 
-3163 
-3164 
-3165 
-3166 
-3167 
-3168 
-3169 
-3170 
-3171 
-3172 
-3173 
-3174 
-3175 
-3176 
-3177 
-3178 
-3179 
-3180 
-3181 
-3182 
-3183 
-3184 
-3185 
-3186 
-3187 
-3188 
-3189 
-3190 
-3191 
-3192 
-3193 
-3194 
-3225 
-3226 
-3227 
-3228 
-3229 
-3230 
-3231 
-3232 
-3233 
-3234 
-3235 
-3236 
-3237 
-3238 
-3239 
-3240 
-3241 
-3242 
-3243 
-3244 
-3245 
-3246 
-3247 
-3248 
-3249 
-3250 
-3251 
-3252 
-3253 
-3254 
-3255 
-3256 
-3257 
-3258 
-3259 
-3260 
-3261 
-3262 
-3263 
-3264 
-3265 
-3266 
-3267 
-3300 
-3301 
-3302 
-3303 
-3304 
-3305 
-3306 
-3307 
-3308 
-3309 
-3310 
-3311 
-3312 
-3313 
-3314 
-3315 
-3316 
-3317 
-3318 
-3319 
-3320 
-3321 
-3322 
-3323 
-3324 
-3325 
-3326 
-3327 
-3328 
-3329 
-3330 
-3331 
-3332 
-3333 
-3334 
-3335 
-3336 
-3337 
-3338 
-3339 
-3340 
-3375 
-3376 
-3377 
-3378 
-3379 
-3380 
-3381 
-3382 
-3383 
-3384 
-3385 
-3386 
-3387 
-3388 
-3389 
-3390 
-3391 
-3392 
-3393 
-3394 
-3395 
-3396 
-3397 
-3398 
-3399 
-3400 
-3401 
-3402 
-3403 
-3404 
-3405 
-3406 
-3407 
-3408 
-3409 
-3410 
-3411 
-3412 
-3413 
-3414 
-3450 
-3451 
-3452 
-3453 
-3454 
-3455 
-3456 
-3457 
-3458 
-3459 
-3460 
-3461 
-3462 
-3463 
-3464 
-3465 
-3466 
-3467 
-3468 
-3469 
-3470 
-3471 
-3472 
-3473 
-3474 
-3475 
-3476 
-3477 
-3478 
-3479 
-3480 
-3481 
-3482 
-3483 
-3484 
-3485 
-3486 
-3487 
-3525 
-3526 
-3527 
-3528 
-3529 
-3530 
-3531 
-3532 
-3533 
-3534 
-3535 
-3536 
-3537 
-3538 
-3539 
-3540 
-3541 
-3542 
-3543 
-3544 
-3545 
-3546 
-3547 
-3548 
-3549 
-3550 
-3551 
-3552 
-3553 
-3554 
-3555 
-3556 
-3557 
-3558 
-3559 
-3560 
-3600 
-3601 
-3602 
-3603 
-3604 
-3605 
-3606 
-3607 
-3608 
-3609 
-3610 
-3611 
-3612 
-3613 
-3614 
-3615 
-3616 
-3617 
-3618 
-3619 
-3620 
-3621 
-3622 
-3623 
-3624 
-3625 
-3626 
-3627 
-3628 
-3629 
-3630 
-3631 
-3632 
-3633 
-3634 
-3675 
-3676 
-3677 
-3678 
-3679 
-3680 
-3681 
-3682 
-3683 
-3684 
-3685 
-3686 
-3687 
-3688 
-3689 
-3690 
-3691 
-3692 
-3693 
-3694 
-3695 
-3696 
-3697 
-3698 
-3699 
-3700 
-3701 
-3702 
-3703 
-3704 
-3705 
-3706 
-3707 
-3750 
-3751 
-3752 
-3753 
-3754 
-3755 
-3756 
-3757 
-3758 
-3759 
-3760 
-3761 
-3762 
-3763 
-3764 
-3765 
-3766 
-3767 
-3768 
-3769 
-3770 
-3771 
-3772 
-3773 
-3774 
-3775 
-3776 
-3777 
-3778 
-3779 
-3780 
-3781 
-3825 
-3826 
-3827 
-3828 
-3829 
-3830 
-3831 
-3832 
-3833 
-3834 
-3835 
-3836 
-3837 
-3838 
-3839 
-3840 
-3841 
-3842 
-3843 
-3844 
-3845 
-3846 
-3847 
-3848 
-3849 
-3850 
-3851 
-3852 
-3853 
-3854 
-3900 
-3901 
-3902 
-3903 
-3904 
-3905 
-3906 
-3907 
-3908 
-3909 
-3910 
-3911 
-3912 
-3913 
-3914 
-3915 
-3916 
-3917 
-3918 
-3919 
-3920 
-3921 
-3922 
-3923 
-3924 
-3925 
-3926 
-3927 
-3928 
-3975 
-3976 
-3977 
-3978 
-3979 
-3980 
-3981 
-3982 
-3983 
-3984 
-3985 
-3986 
-3987 
-3988 
-3989 
-3990 
-3991 
-3992 
-3993 
-3994 
-3995 
-3996 
-3997 
-3998 
-3999 
-4000 
-4001 
-4050 
-4051 
-4052 
-4053 
-4054 
-4055 
-4056 
-4057 
-4058 
-4059 
-4060 
-4061 
-4062 
-4063 
-4064 
-4065 
-4066 
-4067 
-4068 
-4069 
-4070 
-4071 
-4072 
-4073 
-4074 
-4125 
-4126 
-4127 
-4128 
-4129 
-4130 
-4131 
-4132 
-4133 
-4134 
-4135 
-4136 
-4137 
-4138 
-4139 
-4140 
-4141 
-4142 
-4143 
-4144 
-4145 
-4146 
-4147 
-4148 
-4200 
-4201 
-4202 
-4203 
-4204 
-4205 
-4206 
-4207 
-4208 
-4209 
-4210 
-4211 
-4212 
-4213 
-4214 
-4215 
-4216 
-4217 
-4218 
-4219 
-4220 
-4221 
-4275 
-4276 
-4277 
-4278 
-4279 
-4280 
-4281 
-4282 
-4283 
-4284 
-4285 
-4286 
-4287 
-4288 
-4289 
-4290 
-4291 
-4292 
-4293 
-4294 
-4350 
-4351 
-4352 
-4353 
-4354 
-4355 
-4356 
-4357 
-4358 
-4359 
-4360 
-4361 
-4362 
-4363 
-4364 
-4365 
-4366 
-4367 
-4425 
-4426 
-4427 
-4428 
-4429 
-4430 
-4431 
-4432 
-4433 
-4434 
-4435 
-4436 
-4437 
-4438 
-4439 
-4440 
-4500 
-4501 
-4502 
-4503 
-4504 
-4505 
-4506 
-4507 
-4508 
-4509 
-4510 
-4511 
-4512 
-4575 
-4576 
-4577 
-4578 
-4579 
-4580 
-4581 
-4582 
-4583 
-4584 
-4585 
-4650 
-4651 
-4652 
-4653 
-4654 
-4655 
-4656 
-4657 
-4725 
-4726 
-4727 
-4728 
-4729 
-4800 
-4801 
-7500 
-7501 
-7502 
-7503 
-7504 
-7505 
-7506 
-7507 
-7508 
-7509 
-7510 
-7511 
-7512 
-7513 
-7514 
-7515 
-7516 
-7517 
-7518 
-7519 
-7520 
-7521 
-7522 
-7523 
-7524 
-7525 
-7526 
-7527 
-7528 
-7529 
-7530 
-7531 
-7532 
-7533 
-7534 
-7535 
-7536 
-7537 
-7538 
-7539 
-7540 
-7541 
-7542 
-7543 
-7544 
-7545 
-7546 
-7547 
-7548 
-7549 
-7550 
-7551 
-7552 
-7553 
-7554 
-7555 
-7556 
-7557 
-7558 
-7559 
-7560 
-7561 
-7562 
-7563 
-7564 
-7565 
-7566 
-7567 
-7568 
-7569 
-7570 
-7571 
-7572 
-7573 
-7574 
-7575 
-7576 
-7577 
-7578 
-7579 
-7580 
-7581 
-7582 
-7583 
-7584 
-7585 
-7586 
-7587 
-7588 
-7589 
-7590 
-7591 
-7592 
-7593 
-7594 
-7595 
-7596 
-7597 
-7598 
-7599 
-7600 
-7601 
-7602 
-7603 
-7604 
-7605 
-7606 
-7607 
-7608 
-7609 
-7610 
-7611 
-7612 
-7613 
-7614 
-7615 
-7616 
-7617 
-7618 
-7619 
-7620 
-7621 
-7622 
-7623 
-7624 
-7625 
-7626 
-7627 
-7628 
-7629 
-7630 
-7631 
-7632 
-7633 
-7634 
-7635 
-7636 
-7637 
-7638 
-7639 
-7640 
-7641 
-7642 
-7643 
-7644 
-7645 
-7646 
-7647 
-7648 
-7649 
-7650 
-7651 
-7652 
-7653 
-7654 
-7655 
-7656 
-7657 
-7658 
-7659 
-7660 
-7661 
-7662 
-7663 
-7664 
-7665 
-7666 
-7667 
-7668 
-7669 
-7670 
-7671 
-7672 
-7673 
-7674 
-7675 
-7676 
-7677 
-7678 
-7679 
-7680 
-7681 
-7682 
-7683 
-7684 
-7685 
-7686 
-7687 
-7688 
-7689 
-7690 
-7691 
-7692 
-7693 
-7694 
-7695 
-7696 
-7697 
-7698 
-7699 
-7700 
-7701 
-7702 
-7703 
-7704 
-7705 
-7706 
-7707 
-7708 
-7709 
-7710 
-7711 
-7712 
-7713 
-7714 
-7715 
-7716 
-7717 
-7718 
-7719 
-7720 
-7721 
-7722 
-7723 
-7724 
-7725 
-7726 
-7727 
-7728 
-7729 
-7730 
-7731 
-7732 
-7733 
-7734 
-7735 
-7736 
-7737 
-7738 
-7739 
-7740 
-7741 
-7742 
-7743 
-7744 
-7745 
-7746 
-7747 
-7748 
-7749 
-7750 
-7751 
-7752 
-7753 
-7754 
-7755 
-7756 
-7757 
-7758 
-7759 
-7760 
-7761 
-7762 
-7763 
-7764 
-7765 
-7766 
-7767 
-7768 
-7769 
-7770 
-7771 
-7772 
-7773 
-7774 
-7775 
-7776 
-7777 
-7778 
-7779 
-7780 
-7781 
-7782 
-7783 
-7784 
-7785 
-7786 
-7787 
-7788 
-7789 
-7790 
-7791 
-7792 
-7793 
-7794 
-7795 
-7796 
-7797 
-7798 
-7799 
-7800 
-7801 
-7802 
-7803 
-7804 
-7805 
-7806 
-7807 
-7808 
-7809 
-7810 
-7811 
-7812 
-7813 
-7814 
-7815 
-7816 
-7817 
-7818 
-7819 
-7820 
-7821 
-7822 
-7823 
-7824 
-7825 
-7826 
-7827 
-7828 
-7829 
-7830 
-7831 
-7832 
-7833 
-7834 
-7835 
-7836 
-7837 
-7838 
-7839 
-7840 
-7841 
-7842 
-7843 
-7844 
-7845 
-7846 
-7847 
-7848 
-7849 
-7850 
-7851 
-7852 
-7853 
-7854 
-7855 
-7856 
-7857 
-7858 
-7859 
-7860 
-7861 
-7862 
-7863 
-7864 
-7865 
-7866 
-7867 
-7868 
-7869 
-7870 
-7871 
-7872 
-7873 
-7874 
-7875 
-7876 
-7877 
-7878 
-7879 
-7880 
-7881 
-7882 
-7883 
-7884 
-7885 
-7886 
-7887 
-7888 
-7889 
-7890 
-7891 
-7892 
-7893 
-7894 
-7895 
-7896 
-7897 
-7898 
-7899 
-7900 
-7901 
-7902 
-7903 
-7904 
-7905 
-7906 
-7907 
-7908 
-7909 
-7910 
-7911 
-7912 
-7913 
-7914 
-7915 
-7916 
-7917 
-7918 
-7919 
-7920 
-7921 
-7922 
-7923 
-7924 
-7925 
-7926 
-7927 
-7928 
-7929 
-7930 
-7931 
-7932 
-7933 
-7934 
-7935 
-7936 
-7937 
-7938 
-7939 
-7940 
-7941 
-7942 
-7943 
-7944 
-7945 
-7946 
-7947 
-7948 
-7949 
-7950 
-7951 
-7952 
-7953 
-7954 
-7955 
-7956 
-7957 
-7958 
-7959 
-7960 
-7961 
-7962 
-7963 
-7964 
-7965 
-7966 
-7967 
-7968 
-7969 
-7970 
-7971 
-7972 
-7973 
-7974 
-7975 
-7976 
-7977 
-7978 
-7979 
-7980 
-7981 
-7982 
-7983 
-7984 
-7985 
-7986 
-7987 
-7988 
-7989 
-7990 
-7991 
-7992 
-7993 
-7994 
-7995 
-7996 
-7997 
-7998 
-7999 
-8000 
-8001 
-8002 
-8003 
-8004 
-8005 
-8006 
-8007 
-8008 
-8009 
-8010 
-8011 
-8012 
-8013 
-8014 
-8015 
-8016 
-8017 
-8018 
-8019 
-8020 
-8021 
-8022 
-8023 
-8024 
-8025 
-8026 
-8027 
-8028 
-8029 
-8030 
-8031 
-8032 
-8033 
-8034 
-8035 
-8036 
-8037 
-8038 
-8039 
-8040 
-8041 
-8042 
-8043 
-8044 
-8045 
-8046 
-8047 
-8048 
-8049 
-8050 
-8051 
-8052 
-8053 
-8054 
-8055 
-8056 
-8057 
-8058 
-8059 
-8060 
-8061 
-8062 
-8063 
-8064 
-8065 
-8066 
-8067 
-8068 
-8069 
-8070 
-8071 
-8072 
-8073 
-8074 
-8075 
-8076 
-8077 
-8078 
-8079 
-8080 
-8081 
-8082 
-8083 
-8084 
-8085 
-8086 
-8087 
-8088 
-8089 
-8090 
-8091 
-8092 
-8093 
-8094 
-8095 
-8096 
-8097 
-8098 
-8099 
-8100 
-8101 
-8102 
-8103 
-8104 
-8105 
-8106 
-8107 
-8108 
-8109 
-8110 
-8111 
-8112 
-8113 
-8114 
-8115 
-8116 
-8117 
-8118 
-8119 
-8120 
-8121 
-8122 
-8123 
-8124 
-8125 
-8126 
-8127 
-8128 
-8129 
-8130 
-8131 
-8132 
-8133 
-8134 
-8135 
-8136 
-8137 
-8138 
-8139 
-8140 
-8141 
-8142 
-8143 
-8144 
-8145 
-8146 
-8147 
-8148 
-8149 
-8150 
-8151 
-8152 
-8153 
-8154 
-8155 
-8156 
-8157 
-8158 
-8159 
-8160 
-8161 
-8162 
-8163 
-8164 
-8165 
-8166 
-8167 
-8168 
-8169 
-8170 
-8171 
-8172 
-8173 
-8174 
-8175 
-8176 
-8177 
-8178 
-8179 
-8180 
-8181 
-8182 
-8183 
-8184 
-8185 
-8186 
-8187 
-8188 
-8189 
-8190 
-8191 
-8192 
-8193 
-8194 
-8195 
-8196 
-8197 
-8198 
-8199 
-8200 
-8201 
-8202 
-8203 
-8204 
-8205 
-8206 
-8207 
-8208 
-8209 
-8210 
-8211 
-8212 
-8213 
-8214 
-8215 
-8216 
-8217 
-8218 
-8219 
-8220 
-8221 
-8222 
-8223 
-8224 
-8225 
-8226 
-8227 
-8228 
-8229 
-8230 
-8231 
-8232 
-8233 
-8234 
-8235 
-8236 
-8237 
-8238 
-8239 
-8240 
-8241 
-8242 
-8243 
-8244 
-8245 
-8246 
-8247 
-8248 
-8249 
-8250 
-8251 
-8252 
-8253 
-8254 
-8255 
-8256 
-8257 
-8258 
-8259 
-8260 
-8261 
-8262 
-8263 
-8264 
-8265 
-8266 
-8267 
-8268 
-8269 
-8270 
-8271 
-8272 
-8273 
-8274 
-8275 
-8276 
-8277 
-8278 
-8279 
-8280 
-8281 
-8282 
-8283 
-8284 
-8285 
-8286 
-8287 
-8288 
-8289 
-8290 
-8291 
-8292 
-8293 
-8294 
-8295 
-8296 
-8297 
-8298 
-8299 
-8300 
-8301 
-8302 
-8303 
-8304 
-8305 
-8306 
-8307 
-8308 
-8309 
-8310 
-8311 
-8312 
-8313 
-8314 
-8315 
-8316 
-8317 
-8318 
-8319 
-8320 
-8321 
-8322 
-8323 
-8324 
-8325 
-8326 
-8327 
-8328 
-8329 
-8330 
-8331 
-8332 
-8333 
-8334 
-8335 
-8336 
-8337 
-8338 
-8339 
-8340 
-8341 
-8342 
-8343 
-8344 
-8345 
-8346 
-8347 
-8348 
-8349 
-8350 
-8351 
-8352 
-8353 
-8354 
-8355 
-8356 
-8357 
-8358 
-8359 
-8360 
-8361 
-8362 
-8363 
-8364 
-8365 
-8366 
-8367 
-8368 
-8369 
-8370 
-8371 
-8372 
-8373 
-8374 
-8375 
-8376 
-8377 
-8378 
-8379 
-8380 
-8381 
-8382 
-8383 
-8384 
-8385 
-8386 
-8387 
-8388 
-8389 
-8390 
-8391 
-8392 
-8393 
-8394 
-8395 
-8396 
-8397 
-8398 
-8399 
-8400 
-8401 
-8402 
-8403 
-8404 
-8405 
-8406 
-8407 
-8408 
-8409 
-8410 
-8411 
-8412 
-8413 
-8414 
-8415 
-8416 
-8417 
-8418 
-8419 
-8420 
-8421 
-8422 
-8423 
-8424 
-8425 
-8426 
-8427 
-8428 
-8429 
-8430 
-8431 
-8432 
-8433 
-8434 
-8435 
-8436 
-8437 
-8438 
-8439 
-8440 
-8441 
-8442 
-8443 
-8444 
-8445 
-8446 
-8447 
-8448 
-8449 
-8450 
-8451 
-8452 
-8453 
-8454 
-8455 
-8456 
-8457 
-8458 
-8459 
-8460 
-8461 
-8462 
-8463 
-8464 
-8465 
-8466 
-8467 
-8468 
-8469 
-8470 
-8471 
-8472 
-8473 
-8474 
-8475 
-8476 
-8477 
-8478 
-8479 
-8480 
-8481 
-8482 
-8483 
-8484 
-8485 
-8486 
-8487 
-8488 
-8489 
-8490 
-8491 
-8492 
-8493 
-8494 
-8495 
-8496 
-8497 
-8498 
-8499 
-8500 
-8501 
-8502 
-8503 
-8504 
-8505 
-8506 
-8507 
-8508 
-8509 
-8510 
-8511 
-8512 
-8513 
-8514 
-8515 
-8516 
-8517 
-8518 
-8519 
-8520 
-8521 
-8522 
-8523 
-8524 
-8525 
-8526 
-8527 
-8528 
-8529 
-8530 
-8531 
-8532 
-8533 
-8534 
-8535 
-8536 
-8537 
-8538 
-8539 
-8540 
-8541 
-8542 
-8543 
-8544 
-8545 
-8546 
-8547 
-8548 
-8549 
-8550 
-8551 
-8552 
-8553 
-8554 
-8555 
-8556 
-8557 
-8558 
-8559 
-8560 
-8561 
-8562 
-8563 
-8564 
-8565 
-8566 
-8567 
-8568 
-8569 
-8570 
-8571 
-8572 
-8573 
-8574 
-8575 
-8576 
-8577 
-8578 
-8579 
-8580 
-8581 
-8582 
-8583 
-8584 
-8585 
-8586 
-8587 
-8588 
-8589 
-8590 
-8591 
-8592 
-8593 
-8594 
-8595 
-8596 
-8597 
-8598 
-8599 
-8600 
-8601 
-8602 
-8603 
-8604 
-8605 
-8606 
-8607 
-8608 
-8609 
-8610 
-8611 
-8612 
-8613 
-8614 
-8615 
-8616 
-8617 
-8618 
-8619 
-8620 
-8621 
-8622 
-8623 
-8624 
-8625 
-8626 
-8627 
-8628 
-8629 
-8630 
-8631 
-8632 
-8633 
-8634 
-8635 
-8636 
-8637 
-8638 
-8639 
-8640 
-8641 
-8642 
-8643 
-8644 
-8645 
-8646 
-8647 
-8648 
-8649 
-8650 
-8651 
-8652 
-8653 
-8654 
-8655 
-8656 
-8657 
-8658 
-8659 
-8660 
-8661 
-8662 
-8663 
-8664 
-8665 
-8666 
-8667 
-8668 
-8669 
-8670 
-8671 
-8672 
-8673 
-8674 
-8675 
-8676 
-8677 
-8678 
-8679 
-8680 
-8681 
-8682 
-8683 
-8684 
-8685 
-8686 
-8687 
-8688 
-8689 
-8690 
-8691 
-8692 
-8693 
-8694 
-8695 
-8696 
-8697 
-8700 
-8701 
-8702 
-8703 
-8704 
-8705 
-8712 
-8713 
-8714 
-8715 
-8716 
-8717 
-8718 
-8719 
-8720 
-8721 
-8722 
-8723 
-8724 
-8725 
-8726 
-8727 
-8728 
-8729 
-8730 
-8731 
-8732 
-8733 
-8734 
-8735 
-8736 
-8737 
-8738 
-8739 
-8740 
-8741 
-8742 
-8743 
-8744 
-8745 
-8746 
-8747 
-8748 
-8749 
-8750 
-8751 
-8752 
-8753 
-8754 
-8755 
-8756 
-8757 
-8758 
-8759 
-8760 
-8761 
-8762 
-8763 
-8764 
-8765 
-8766 
-8767 
-8768 
-8769 
-8770 
-8771 
-8772 
-8773 
-8774 
-8787 
-8788 
-8789 
-8790 
-8791 
-8792 
-8793 
-8794 
-8795 
-8796 
-8797 
-8798 
-8799 
-8800 
-8801 
-8802 
-8803 
-8804 
-8805 
-8806 
-8807 
-8808 
-8809 
-8810 
-8811 
-8812 
-8813 
-8814 
-8815 
-8816 
-8817 
-8818 
-8819 
-8820 
-8821 
-8822 
-8823 
-8824 
-8825 
-8826 
-8827 
-8828 
-8829 
-8830 
-8831 
-8832 
-8833 
-8834 
-8835 
-8836 
-8837 
-8838 
-8839 
-8840 
-8841 
-8842 
-8843 
-8844 
-8845 
-8846 
-8847 
-8862 
-8863 
-8864 
-8865 
-8866 
-8867 
-8868 
-8869 
-8870 
-8871 
-8872 
-8873 
-8874 
-8875 
-8876 
-8877 
-8878 
-8879 
-8880 
-8881 
-8882 
-8883 
-8884 
-8885 
-8886 
-8887 
-8888 
-8889 
-8890 
-8891 
-8892 
-8893 
-8894 
-8895 
-8896 
-8897 
-8898 
-8899 
-8900 
-8901 
-8902 
-8903 
-8904 
-8905 
-8906 
-8907 
-8908 
-8909 
-8910 
-8911 
-8912 
-8913 
-8914 
-8915 
-8916 
-8917 
-8937 
-8938 
-8939 
-8940 
-8941 
-8942 
-8943 
-8944 
-8945 
-8946 
-8947 
-8948 
-8949 
-8950 
-8951 
-8952 
-8953 
-8954 
-8955 
-8956 
-8957 
-8958 
-8959 
-8960 
-8961 
-8962 
-8963 
-8964 
-8965 
-8966 
-8967 
-8968 
-8969 
-8970 
-8971 
-8972 
-8973 
-8974 
-8975 
-8976 
-8977 
-8978 
-8979 
-8980 
-8981 
-8982 
-8983 
-8984 
-8985 
-8986 
-8987 
-8988 
-9012 
-9013 
-9014 
-9015 
-9016 
-9017 
-9018 
-9019 
-9020 
-9021 
-9022 
-9023 
-9024 
-9025 
-9026 
-9027 
-9028 
-9029 
-9030 
-9031 
-9032 
-9033 
-9034 
-9035 
-9036 
-9037 
-9038 
-9039 
-9040 
-9041 
-9042 
-9043 
-9044 
-9045 
-9046 
-9047 
-9048 
-9049 
-9050 
-9051 
-9052 
-9053 
-9054 
-9055 
-9056 
-9057 
-9058 
-9059 
-9087 
-9088 
-9089 
-9090 
-9091 
-9092 
-9093 
-9094 
-9095 
-9096 
-9097 
-9098 
-9099 
-9100 
-9101 
-9102 
-9103 
-9104 
-9105 
-9106 
-9107 
-9108 
-9109 
-9110 
-9111 
-9112 
-9113 
-9114 
-9115 
-9116 
-9117 
-9118 
-9119 
-9120 
-9121 
-9122 
-9123 
-9124 
-9125 
-9126 
-9127 
-9128 
-9129 
-9130 
-9162 
-9163 
-9164 
-9165 
-9166 
-9167 
-9168 
-9169 
-9170 
-9171 
-9172 
-9173 
-9174 
-9175 
-9176 
-9177 
-9178 
-9179 
-9180 
-9181 
-9182 
-9183 
-9184 
-9185 
-9186 
-9187 
-9188 
-9189 
-9190 
-9191 
-9192 
-9193 
-9194 
-9195 
-9196 
-9197 
-9198 
-9199 
-9200 
-9201 
-9202 
-9237 
-9238 
-9239 
-9240 
-9241 
-9242 
-9243 
-9244 
-9245 
-9246 
-9247 
-9248 
-9249 
-9250 
-9251 
-9252 
-9253 
-9254 
-9255 
-9256 
-9257 
-9258 
-9259 
-9260 
-9261 
-9262 
-9263 
-9264 
-9265 
-9266 
-9267 
-9268 
-9269 
-9270 
-9271 
-9272 
-9273 
-9274 
-9312 
-9313 
-9314 
-9315 
-9316 
-9317 
-9318 
-9319 
-9320 
-9321 
-9322 
-9323 
-9324 
-9325 
-9326 
-9327 
-9328 
-9329 
-9330 
-9331 
-9332 
-9333 
-9334 
-9335 
-9336 
-9337 
-9338 
-9339 
-9340 
-9341 
-9342 
-9343 
-9344 
-9345 
-9387 
-9388 
-9389 
-9390 
-9391 
-9392 
-9393 
-9394 
-9395 
-9396 
-9397 
-9398 
-9399 
-9400 
-9401 
-9402 
-9403 
-9404 
-9405 
-9406 
-9407 
-9408 
-9409 
-9410 
-9411 
-9412 
-9413 
-9414 
-9415 
-9416 
-9417 
-9462 
-9463 
-9464 
-9465 
-9466 
-9467 
-9468 
-9469 
-9470 
-9471 
-9472 
-9473 
-9474 
-9475 
-9476 
-9477 
-9478 
-9479 
-9480 
-9481 
-9482 
-9483 
-9484 
-9485 
-9486 
-9487 
-9488 
-9489 
-9537 
-9538 
-9539 
-9540 
-9541 
-9542 
-9543 
-9544 
-9545 
-9546 
-9547 
-9548 
-9549 
-9550 
-9551 
-9552 
-9553 
-9554 
-9555 
-9556 
-9557 
-9558 
-9559 
-9560 
-9561 
-9612 
-9613 
-9614 
-9615 
-9616 
-9617 
-9618 
-9619 
-9620 
-9621 
-9622 
-9623 
-9624 
-9625 
-9626 
-9627 
-9628 
-9629 
-9630 
-9631 
-9632 
-9687 
-9688 
-9689 
-9690 
-9691 
-9692 
-9693 
-9694 
-9695 
-9696 
-9697 
-9698 
-9699 
-9700 
-9701 
-9702 
-9703 
-9762 
-9763 
-9764 
-9765 
-9766 
-9767 
-9768 
-9769 
-9770 
-9771 
-9772 
-9773 
-9774 
-9837 
-9838 
-9839 
-9840 
-9841 
-9842 
-9843 
-9844 
-9912 
-9913 
-10544 
-10545 
-10546 
-10547 
-10548 
-10549 
-10550 
-10551 
-10552 
-10553 
-10554 
-10555 
-10556 
-10557 
-10558 
-10559 
-10560 
-10561 
-10562 
-10563 
-10564 
-10565 
-10566 
-10567 
-10568 
-10569 
-10570 
-10571 
-10572 
-10573 
-10574 
-10575 
-10576 
-10577 
-10578 
-10579 
-10580 
-10581 
-10582 
-10583 
-10584 
-10585 
-10586 
-10587 
-10588 
-10589 
-10590 
-10591 
-10592 
-10593 
-10594 
-10595 
-10596 
-10597 
-10598 
-10599 
-10600 
-10601 
-10602 
-10603 
-10604 
-10605 
-10606 
-10607 
-10608 
-10609 
-10610 
-10611 
-10612 
-10613 
-10614 
-10615 
-10616 
-10617 
-10618 
-10619 
-10620 
-10621 
-10622 
-10623 
-10624 
-10625 
-10626 
-10627 
-10628 
-10629 
-10630 
-10631 
-10632 
-10633 
-10634 
-10635 
-10636 
-10637 
-10638 
-10639 
-10640 
-10641 
-10642 
-10643 
-10644 
-10645 
-10646 
-10647 
-10648 
-10649 
-10650 
-10651 
-10652 
-10653 
-10654 
-10655 
-10656 
-10657 
-10658 
-10659 
-10660 
-10661 
-10662 
-10663 
-10664 
-10665 
-10666 
-10667 
-10668 
-10669 
-10670 
-10671 
-10672 
-10673 
-10674 
-10675 
-10676 
-10677 
-10678 
-10679 
-10680 
-10681 
-10682 
-10683 
-10684 
-10685 
-10686 
-10687 
-10688 
-10689 
-10690 
-10691 
-10692 
-10693 
-10694 
-10695 
-10696 
-10697 
-10698 
-10699 
-10700 
-10701 
-10702 
-10703 
-10704 
-10705 
-10706 
-10707 
-10708 
-10709 
-10710 
-10711 
-10712 
-10713 
-10714 
-10715 
-10716 
-10717 
-10718 
-10719 
-10720 
-10721 
-10722 
-10723 
-10724 
-10725 
-10726 
-10727 
-10728 
-10729 
-10730 
-10731 
-10732 
-10733 
-10734 
-10735 
-10736 
-10737 
-10738 
-10739 
-10740 
-10741 
-10742 
-10743 
-10744 
-10745 
-10746 
-10747 
-10748 
-10749 
-10750 
-10751 
-10752 
-10753 
-10754 
-10755 
-10756 
-10757 
-10758 
-10759 
-10760 
-10761 
-10762 
-10763 
-10764 
-10765 
-10766 
-10767 
-10768 
-10769 
-10770 
-10771 
-10772 
-10773 
-10774 
-10775 
-10776 
-10777 
-10778 
-10779 
-10780 
-10781 
-10782 
-10783 
-10784 
-10785 
-10786 
-10787 
-10788 
-10789 
-10790 
-10791 
-10792 
-10793 
-10794 
-10795 
-10796 
-10797 
-10798 
-10799 
-10800 
-10801 
-10802 
-10803 
-10804 
-10805 
-10806 
-10807 
-10808 
-10809 
-10810 
-10811 
-10812 
-10813 
-10814 
-10815 
-10816 
-10817 
-10818 
-10819 
-10820 
-10821 
-10822 
-10823 
-10824 
-10825 
-10826 
-10827 
-10828 
-10829 
-10830 
-10831 
-10832 
-10833 
-10834 
-10835 
-10836 
-10837 
-10838 
-10839 
-10840 
-10841 
-10842 
-10843 
-10844 
-10845 
-10846 
-10847 
-10848 
-10849 
-10850 
-10851 
-10852 
-10853 
-10854 
-10855 
-10856 
-10857 
-10858 
-10859 
-10860 
-10861 
-10862 
-10863 
-10864 
-10865 
-10866 
-10867 
-10868 
-10869 
-10870 
-10871 
-10872 
-10873 
-10874 
-10875 
-10876 
-10877 
-10878 
-10879 
-10880 
-10881 
-10882 
-10883 
-10884 
-10885 
-10886 
-10887 
-10888 
-10889 
-10890 
-10891 
-10892 
-10893 
-10894 
-10895 
-10896 
-10897 
-10898 
-10899 
-10900 
-10901 
-10902 
-10903 
-10904 
-10905 
-10906 
-10907 
-10908 
-10909 
-10910 
-10911 
-10912 
-10913 
-10914 
-10915 
-10916 
-10917 
-10918 
-10919 
-10920 
-10921 
-10922 
-10923 
-10924 
-10925 
-10926 
-10927 
-10928 
-10929 
-10930 
-10931 
-10932 
-10933 
-10934 
-10935 
-10936 
-10937 
-10938 
-10939 
-10940 
-10941 
-10942 
-10943 
-10944 
-10945 
-10946 
-10947 
-10948 
-10949 
-10950 
-10951 
-10952 
-10953 
-10954 
-10955 
-10956 
-10957 
-10958 
-10959 
-10960 
-10961 
-10962 
-10963 
-10964 
-10965 
-10966 
-10967 
-10968 
-10969 
-10970 
-10971 
-10972 
-10973 
-10974 
-10975 
-10976 
-10977 
-10978 
-10979 
-10980 
-10981 
-10982 
-10983 
-10984 
-10985 
-10986 
-10987 
-10988 
-10989 
-10990 
-10991 
-10992 
-10993 
-10994 
-10995 
-10996 
-10997 
-10998 
-10999 
-11000 
-11001 
-11002 
-11003 
-11004 
-11005 
-11006 
-11007 
-11008 
-11009 
-11010 
-11011 
-11012 
-11013 
-11014 
-11015 
-11016 
-11017 
-11018 
-11019 
-11020 
-11021 
-11022 
-11023 
-11024 
-11025 
-11026 
-11027 
-11028 
-11029 
-11030 
-11031 
-11032 
-11033 
-11034 
-11035 
-11036 
-11037 
-11038 
-11039 
-11040 
-11041 
-11042 
-11043 
-11044 
-11045 
-11046 
-11047 
-11048 
-11049 
-11050 
-11051 
-11052 
-11053 
-11054 
-11055 
-11056 
-11057 
-11058 
-11059 
-11060 
-11061 
-11062 
-11063 
-11064 
-11065 
-11066 
-11067 
-11068 
-11069 
-11070 
-11071 
-11072 
-11073 
-11074 
-11075 
-11076 
-11077 
-11078 
-11079 
-11080 
-11081 
-11082 
-11083 
-11084 
-11085 
-11086 
-11087 
-11088 
-11089 
-11090 
-11091 
-11092 
-11093 
-11094 
-11095 
-11096 
-11097 
-11098 
-11099 
-11100 
-11101 
-11102 
-11103 
-11104 
-11105 
-11106 
-11107 
-11108 
-11109 
-11110 
-11111 
-11112 
-11113 
-11114 
-11115 
-11116 
-11117 
-11118 
-11119 
-11120 
-11121 
-11122 
-11123 
-11124 
-11125 
-11126 
-11127 
-11128 
-11129 
-11130 
-11131 
-11132 
-11133 
-11134 
-11135 
-11136 
-11137 
-11138 
-11139 
-11140 
-11141 
-11142 
-11143 
-11144 
-11145 
-11146 
-11147 
-11148 
-11149 
-11150 
-11151 
-11152 
-11153 
-11154 
-11155 
-11156 
-11157 
-11158 
-11159 
-11160 
-11161 
-11162 
-11163 
-11164 
-11165 
-11166 
-11167 
-11168 
-11169 
-11170 
-11171 
-11172 
-11173 
-11174 
-11175 
-11176 
-11177 
-11178 
-11179 
-11180 
-11181 
-11182 
-11183 
-11184 
-11185 
-11186 
-11187 
-11188 
-11189 
-11190 
-11191 
-11192 
-11193 
-11194 
-11195 
-11196 
-11197 
-11198 
-11199 
-11200 
-11201 
-11202 
-11203 
-11204 
-11205 
-11206 
-11207 
-11208 
-11209 
-11210 
-11211 
-11212 
-11213 
-11214 
-11215 
-11216 
-11217 
-11218 
-11219 
-11220 
-11221 
-11222 
-11223 
-11224 
-11225 
-11226 
-11227 
-11228 
-11229 
-11230 
-11231 
-11232 
-11233 
-11234 
-11235 
-11236 
-11237 
-11238 
-11239 
-11240 
-11241 
-11242 
-11243 
-11244 
-11245 
-11246 
-11247 
-11248 
-11249 
-11250 
-11251 
-11252 
-11253 
-11254 
-11255 
-11256 
-11257 
-11258 
-11259 
-11260 
-11261 
-11262 
-11263 
-11264 
-11265 
-11266 
-11267 
-11268 
-11269 
-11270 
-11271 
-11272 
-11273 
-11274 
-11275 
-11276 
-11277 
-11278 
-11279 
-11280 
-11281 
-11282 
-11283 
-11284 
-11285 
-11286 
-11287 
-11288 
-11289 
-11290 
-11291 
-11292 
-11293 
-11294 
-11295 
-11296 
-11297 
-11298 
-11299 
-11300 
-11301 
-11302 
-11303 
-11304 
-11305 
-11306 
-11307 
-11308 
-11309 
-11310 
-11311 
-11312 
-11313 
-11314 
-11315 
-11316 
-11317 
-11318 
-11319 
-11320 
-11321 
-11322 
-11323 
-11324 
-11325 
-11326 
-11327 
-11328 
-11329 
-11330 
-11331 
-11332 
-11333 
-11334 
-11335 
-11336 
-11337 
-11338 
-11339 
-11340 
-11341 
-11342 
-11343 
-11344 
-11345 
-11346 
-11347 
-11348 
-11349 
-11350 
-11351 
-11352 
-11353 
-11354 
-11355 
-11356 
-11357 
-11358 
-11359 
-11360 
-11361 
-11362 
-11363 
-11364 
-11365 
-11366 
-11367 
-11368 
-11369 
-11370 
-11371 
-11372 
-11373 
-11374 
-11375 
-11376 
-11377 
-11378 
-11379 
-11380 
-11381 
-11382 
-11383 
-11384 
-11385 
-11386 
-11387 
-11388 
-11389 
-11390 
-11391 
-11392 
-11393 
-11394 
-11395 
-11396 
-11397 
-11398 
-11399 
-11400 
-11401 
-11402 
-11403 
-11404 
-11405 
-11406 
-11407 
-11408 
-11409 
-11410 
-11411 
-11412 
-11413 
-11414 
-11415 
-11416 
-11417 
-11418 
-11419 
-11420 
-11421 
-11422 
-11423 
-11424 
-11425 
-11426 
-11427 
-11428 
-11429 
-11430 
-11431 
-11432 
-11433 
-11434 
-11435 
-11436 
-11437 
-11438 
-11439 
-11440 
-11441 
-11442 
-11443 
-11444 
-11445 
-11446 
-11447 
-11448 
-11449 
-11450 
-11451 
-11452 
-11453 
-11454 
-11455 
-11456 
-11457 
-11458 
-11459 
-11460 
-11461 
-11462 
-11463 
-11464 
-11465 
-11466 
-11467 
-11468 
-11469 
-11470 
-11471 
-11472 
-11473 
-11474 
-11475 
-11476 
-11477 
-11478 
-11479 
-11480 
-11481 
-11482 
-11483 
-11484 
-11485 
-11486 
-11487 
-11488 
-11489 
-11490 
-11491 
-11492 
-11493 
-11494 
-11495 
-11496 
-11497 
-11498 
-11499 
-11500 
-11501 
-11502 
-11503 
-11504 
-11505 
-11506 
-11507 
-11508 
-11509 
-11510 
-11511 
-11512 
-11513 
-11514 
-11515 
-11516 
-11517 
-11518 
-11519 
-11520 
-11521 
-11522 
-11523 
-11524 
-11525 
-11526 
-11527 
-11528 
-11529 
-11530 
-11531 
-11532 
-11533 
-11534 
-11535 
-11536 
-11537 
-11538 
-11539 
-11540 
-11541 
-11542 
-11543 
-11544 
-11545 
-11546 
-11547 
-11548 
-11549 
-11550 
-11551 
-11552 
-11553 
-11554 
-11555 
-11556 
-11557 
-11558 
-11559 
-11560 
-11561 
-11562 
-11563 
-11564 
-11565 
-11566 
-11567 
-11568 
-11569 
-11570 
-11571 
-11572 
-11573 
-11574 
-11575 
-11576 
-11577 
-11578 
-11579 
-11580 
-11581 
-11582 
-11583 
-11584 
-11585 
-11586 
-11587 
-11588 
-11589 
-11590 
-11591 
-11592 
-11593 
-11594 
-11595 
-11596 
-11597 
-11598 
-11599 
-11600 
-11601 
-11602 
-11603 
-11604 
-11605 
-11606 
-11607 
-11608 
-11609 
-11610 
-11611 
-11612 
-11613 
-11614 
-11615 
-11616 
-11617 
-11618 
-11619 
-11620 
-11621 
-11622 
-11623 
-11624 
-11625 
-11626 
-11627 
-11628 
-11629 
-11630 
-11631 
-11632 
-11633 
-11634 
-11635 
-11636 
-11637 
-11638 
-11639 
-11640 
-11641 
-11642 
-11643 
-11644 
-11645 
-11646 
-11647 
-11648 
-11649 
-11650 
-11651 
-11652 
-11653 
-11654 
-11655 
-11656 
-11657 
-11658 
-11659 
-11660 
-11661 
-11662 
-11663 
-11664 
-11665 
-11666 
-11667 
-11668 
-11669 
-11670 
-11671 
-11672 
-11673 
-11674 
-11675 
-11676 
-11677 
-11678 
-11679 
-11680 
-11681 
-11682 
-11683 
-11684 
-11685 
-11686 
-11687 
-11688 
-11689 
-11690 
-11691 
-11692 
-11693 
-11694 
-11695 
-11696 
-11697 
-11698 
-11699 
-11700 
-11701 
-11702 
-11703 
-11704 
-11705 
-11706 
-11707 
-11708 
-11709 
-11710 
-11711 
-11712 
-11713 
-11714 
-11715 
-11716 
-11717 
-11718 
-11719 
-11720 
-11721 
-11722 
-11723 
-11724 
-11725 
-11726 
-11727 
-11728 
-11729 
-11730 
-11731 
-11732 
-11733 
-11734 
-11742 
-11743 
-11744 
-11745 
-11746 
-11747 
-11748 
-11749 
-11750 
-11751 
-11752 
-11753 
-11754 
-11755 
-11756 
-11757 
-11758 
-11759 
-11760 
-11761 
-11762 
-11763 
-11764 
-11765 
-11766 
-11767 
-11768 
-11769 
-11770 
-11771 
-11772 
-11773 
-11774 
-11775 
-11776 
-11777 
-11778 
-11779 
-11780 
-11781 
-11782 
-11783 
-11784 
-11785 
-11786 
-11787 
-11788 
-11789 
-11790 
-11791 
-11792 
-11793 
-11794 
-11795 
-11796 
-11797 
-11798 
-11799 
-11800 
-11801 
-11802 
-11803 
-11804 
-11817 
-11818 
-11819 
-11820 
-11821 
-11822 
-11823 
-11824 
-11825 
-11826 
-11827 
-11828 
-11829 
-11830 
-11831 
-11832 
-11833 
-11834 
-11835 
-11836 
-11837 
-11838 
-11839 
-11840 
-11841 
-11842 
-11843 
-11844 
-11845 
-11846 
-11847 
-11848 
-11849 
-11850 
-11851 
-11852 
-11853 
-11854 
-11855 
-11856 
-11857 
-11858 
-11859 
-11860 
-11861 
-11862 
-11863 
-11864 
-11865 
-11866 
-11867 
-11868 
-11869 
-11870 
-11871 
-11872 
-11873 
-11874 
-11892 
-11893 
-11894 
-11895 
-11896 
-11897 
-11898 
-11899 
-11900 
-11901 
-11902 
-11903 
-11904 
-11905 
-11906 
-11907 
-11908 
-11909 
-11910 
-11911 
-11912 
-11913 
-11914 
-11915 
-11916 
-11917 
-11918 
-11919 
-11920 
-11921 
-11922 
-11923 
-11924 
-11925 
-11926 
-11927 
-11928 
-11929 
-11930 
-11931 
-11932 
-11933 
-11934 
-11935 
-11936 
-11937 
-11938 
-11939 
-11940 
-11941 
-11942 
-11943 
-11944 
-11945 
-11967 
-11968 
-11969 
-11970 
-11971 
-11972 
-11973 
-11974 
-11975 
-11976 
-11977 
-11978 
-11979 
-11980 
-11981 
-11982 
-11983 
-11984 
-11985 
-11986 
-11987 
-11988 
-11989 
-11990 
-11991 
-11992 
-11993 
-11994 
-11995 
-11996 
-11997 
-11998 
-11999 
-12000 
-12001 
-12002 
-12003 
-12004 
-12005 
-12006 
-12007 
-12008 
-12009 
-12010 
-12011 
-12012 
-12013 
-12014 
-12015 
-12016 
-12042 
-12043 
-12044 
-12045 
-12046 
-12047 
-12048 
-12049 
-12050 
-12051 
-12052 
-12053 
-12054 
-12055 
-12056 
-12057 
-12058 
-12059 
-12060 
-12061 
-12062 
-12063 
-12064 
-12065 
-12066 
-12067 
-12068 
-12069 
-12070 
-12071 
-12072 
-12073 
-12074 
-12075 
-12076 
-12077 
-12078 
-12079 
-12080 
-12081 
-12082 
-12083 
-12084 
-12085 
-12086 
-12087 
-12117 
-12118 
-12119 
-12120 
-12121 
-12122 
-12123 
-12124 
-12125 
-12126 
-12127 
-12128 
-12129 
-12130 
-12131 
-12132 
-12133 
-12134 
-12135 
-12136 
-12137 
-12138 
-12139 
-12140 
-12141 
-12142 
-12143 
-12144 
-12145 
-12146 
-12147 
-12148 
-12149 
-12150 
-12151 
-12152 
-12153 
-12154 
-12155 
-12156 
-12157 
-12158 
-12192 
-12193 
-12194 
-12195 
-12196 
-12197 
-12198 
-12199 
-12200 
-12201 
-12202 
-12203 
-12204 
-12205 
-12206 
-12207 
-12208 
-12209 
-12210 
-12211 
-12212 
-12213 
-12214 
-12215 
-12216 
-12217 
-12218 
-12219 
-12220 
-12221 
-12222 
-12223 
-12224 
-12225 
-12226 
-12227 
-12228 
-12229 
-12230 
-12267 
-12268 
-12269 
-12270 
-12271 
-12272 
-12273 
-12274 
-12275 
-12276 
-12277 
-12278 
-12279 
-12280 
-12281 
-12282 
-12283 
-12284 
-12285 
-12286 
-12287 
-12288 
-12289 
-12290 
-12291 
-12292 
-12293 
-12294 
-12295 
-12296 
-12297 
-12298 
-12299 
-12300 
-12301 
-12302 
-12342 
-12343 
-12344 
-12345 
-12346 
-12347 
-12348 
-12349 
-12350 
-12351 
-12352 
-12353 
-12354 
-12355 
-12356 
-12357 
-12358 
-12359 
-12360 
-12361 
-12362 
-12363 
-12364 
-12365 
-12366 
-12367 
-12368 
-12369 
-12370 
-12371 
-12372 
-12373 
-12374 
-12417 
-12418 
-12419 
-12420 
-12421 
-12422 
-12423 
-12424 
-12425 
-12426 
-12427 
-12428 
-12429 
-12430 
-12431 
-12432 
-12433 
-12434 
-12435 
-12436 
-12437 
-12438 
-12439 
-12440 
-12441 
-12442 
-12443 
-12444 
-12445 
-12446 
-12492 
-12493 
-12494 
-12495 
-12496 
-12497 
-12498 
-12499 
-12500 
-12501 
-12502 
-12503 
-12504 
-12505 
-12506 
-12507 
-12508 
-12509 
-12510 
-12511 
-12512 
-12513 
-12514 
-12515 
-12516 
-12517 
-12567 
-12568 
-12569 
-12570 
-12571 
-12572 
-12573 
-12574 
-12575 
-12576 
-12577 
-12578 
-12579 
-12580 
-12581 
-12582 
-12583 
-12584 
-12585 
-12586 
-12587 
-12588 
-12589 
-12642 
-12643 
-12644 
-12645 
-12646 
-12647 
-12648 
-12649 
-12650 
-12651 
-12652 
-12653 
-12654 
-12655 
-12656 
-12657 
-12658 
-12659 
-12660 
-12717 
-12718 
-12719 
-12720 
-12721 
-12722 
-12723 
-12724 
-12725 
-12726 
-12727 
-12728 
-12729 
-12730 
-12731 
-12792 
-12793 
-12794 
-12795 
-12796 
-12797 
-12798 
-12799 
-12800 
-12801 
-12867 
-12868 
-12869 
-12870 
-12871 
-13534 
-13535 
-13536 
-13537 
-13538 
-13539 
-13540 
-13541 
-13542 
-13543 
-13544 
-13545 
-13546 
-13547 
-13548 
-13549 
-13550 
-13551 
-13552 
-13553 
-13554 
-13555 
-13556 
-13557 
-13558 
-13559 
-13560 
-13561 
-13562 
-13563 
-13564 
-13565 
-13566 
-13567 
-13568 
-13569 
-13570 
-13571 
-13572 
-13573 
-13574 
-13575 
-13576 
-13577 
-13578 
-13579 
-13580 
-13581 
-13582 
-13583 
-13584 
-13585 
-13586 
-13587 
-13588 
-13589 
-13590 
-13591 
-13592 
-13593 
-13594 
-13595 
-13596 
-13597 
-13598 
-13599 
-13600 
-13601 
-13602 
-13603 
-13604 
-13605 
-13606 
-13607 
-13608 
-13609 
-13610 
-13611 
-13612 
-13613 
-13614 
-13615 
-13616 
-13617 
-13618 
-13619 
-13620 
-13621 
-13622 
-13623 
-13624 
-13625 
-13626 
-13627 
-13628 
-13629 
-13630 
-13631 
-13632 
-13633 
-13634 
-13635 
-13636 
-13637 
-13638 
-13639 
-13640 
-13641 
-13642 
-13643 
-13644 
-13645 
-13646 
-13647 
-13648 
-13649 
-13650 
-13651 
-13652 
-13653 
-13654 
-13655 
-13656 
-13657 
-13658 
-13659 
-13660 
-13661 
-13662 
-13663 
-13664 
-13665 
-13666 
-13667 
-13668 
-13669 
-13670 
-13671 
-13672 
-13673 
-13674 
-13675 
-13676 
-13677 
-13678 
-13679 
-13680 
-13681 
-13682 
-13683 
-13684 
-13685 
-13686 
-13687 
-13688 
-13689 
-13690 
-13691 
-13692 
-13693 
-13694 
-13695 
-13696 
-13697 
-13698 
-13699 
-13700 
-13701 
-13702 
-13703 
-13704 
-13705 
-13706 
-13707 
-13708 
-13709 
-13710 
-13711 
-13712 
-13713 
-13714 
-13715 
-13716 
-13717 
-13718 
-13719 
-13720 
-13721 
-13722 
-13723 
-13724 
-13725 
-13726 
-13727 
-13728 
-13729 
-13730 
-13731 
-13732 
-13733 
-13734 
-13735 
-13736 
-13737 
-13738 
-13739 
-13740 
-13741 
-13742 
-13743 
-13744 
-13745 
-13746 
-13747 
-13748 
-13749 
-13750 
-13751 
-13752 
-13753 
-13754 
-13755 
-13756 
-13757 
-13758 
-13759 
-13760 
-13761 
-13762 
-13763 
-13764 
-13765 
-13766 
-13767 
-13768 
-13769 
-13770 
-13771 
-13772 
-13773 
-13774 
-13775 
-13776 
-13777 
-13778 
-13779 
-13780 
-13781 
-13782 
-13783 
-13784 
-13785 
-13786 
-13787 
-13788 
-13789 
-13790 
-13791 
-13792 
-13793 
-13794 
-13795 
-13796 
-13797 
-13798 
-13799 
-13800 
-13801 
-13802 
-13803 
-13804 
-13805 
-13806 
-13807 
-13808 
-13809 
-13810 
-13811 
-13812 
-13813 
-13814 
-13815 
-13816 
-13817 
-13818 
-13819 
-13820 
-13821 
-13822 
-13823 
-13824 
-13825 
-13826 
-13827 
-13828 
-13829 
-13830 
-13831 
-13832 
-13833 
-13834 
-13835 
-13836 
-13837 
-13838 
-13839 
-13840 
-13841 
-13842 
-13843 
-13844 
-13845 
-13846 
-13847 
-13848 
-13849 
-13850 
-13851 
-13852 
-13853 
-13854 
-13855 
-13856 
-13857 
-13858 
-13859 
-13860 
-13861 
-13862 
-13863 
-13864 
-13865 
-13866 
-13867 
-13868 
-13869 
-13870 
-13871 
-13872 
-13873 
-13874 
-13875 
-13876 
-13877 
-13878 
-13879 
-13880 
-13881 
-13882 
-13883 
-13884 
-13885 
-13886 
-13887 
-13888 
-13889 
-13890 
-13891 
-13892 
-13893 
-13894 
-13895 
-13896 
-13897 
-13898 
-13899 
-13900 
-13901 
-13902 
-13903 
-13904 
-13905 
-13906 
-13907 
-13908 
-13909 
-13910 
-13911 
-13912 
-13913 
-13914 
-13915 
-13916 
-13917 
-13918 
-13919 
-13920 
-13921 
-13922 
-13923 
-13924 
-13925 
-13926 
-13927 
-13928 
-13929 
-13930 
-13931 
-13932 
-13933 
-13934 
-13935 
-13936 
-13937 
-13938 
-13939 
-13940 
-13941 
-13942 
-13943 
-13944 
-13945 
-13946 
-13947 
-13948 
-13949 
-13950 
-13951 
-13952 
-13953 
-13954 
-13955 
-13956 
-13957 
-13958 
-13959 
-13960 
-13961 
-13962 
-13963 
-13964 
-13965 
-13966 
-13967 
-13968 
-13969 
-13970 
-13971 
-13972 
-13973 
-13974 
-13975 
-13976 
-13977 
-13978 
-13979 
-13980 
-13981 
-13982 
-13983 
-13984 
-13985 
-13986 
-13987 
-13988 
-13989 
-13990 
-13991 
-13992 
-13993 
-13994 
-13995 
-13996 
-13997 
-13998 
-13999 
-14000 
-14001 
-14002 
-14003 
-14004 
-14005 
-14006 
-14007 
-14008 
-14009 
-14010 
-14011 
-14012 
-14013 
-14014 
-14015 
-14016 
-14017 
-14018 
-14019 
-14020 
-14021 
-14022 
-14023 
-14024 
-14025 
-14026 
-14027 
-14028 
-14029 
-14030 
-14031 
-14032 
-14033 
-14034 
-14035 
-14036 
-14037 
-14038 
-14039 
-14040 
-14041 
-14042 
-14043 
-14044 
-14045 
-14046 
-14047 
-14048 
-14049 
-14050 
-14051 
-14052 
-14053 
-14054 
-14055 
-14056 
-14057 
-14058 
-14059 
-14060 
-14061 
-14062 
-14063 
-14064 
-14065 
-14066 
-14067 
-14068 
-14069 
-14070 
-14071 
-14072 
-14073 
-14074 
-14075 
-14076 
-14077 
-14078 
-14079 
-14080 
-14081 
-14082 
-14083 
-14084 
-14085 
-14086 
-14087 
-14088 
-14089 
-14090 
-14091 
-14092 
-14093 
-14094 
-14095 
-14096 
-14097 
-14098 
-14099 
-14100 
-14101 
-14102 
-14103 
-14104 
-14105 
-14106 
-14107 
-14108 
-14109 
-14110 
-14111 
-14112 
-14113 
-14114 
-14115 
-14116 
-14117 
-14118 
-14119 
-14120 
-14121 
-14122 
-14123 
-14124 
-14125 
-14126 
-14127 
-14128 
-14129 
-14130 
-14131 
-14132 
-14133 
-14134 
-14135 
-14136 
-14137 
-14138 
-14139 
-14140 
-14141 
-14142 
-14143 
-14144 
-14145 
-14146 
-14147 
-14148 
-14149 
-14150 
-14151 
-14152 
-14153 
-14154 
-14155 
-14156 
-14157 
-14158 
-14159 
-14160 
-14161 
-14162 
-14163 
-14164 
-14165 
-14166 
-14167 
-14168 
-14169 
-14170 
-14171 
-14172 
-14173 
-14174 
-14175 
-14176 
-14177 
-14178 
-14179 
-14180 
-14181 
-14182 
-14183 
-14184 
-14185 
-14186 
-14187 
-14188 
-14189 
-14190 
-14191 
-14192 
-14193 
-14194 
-14195 
-14196 
-14197 
-14198 
-14199 
-14200 
-14201 
-14202 
-14203 
-14204 
-14205 
-14206 
-14207 
-14208 
-14209 
-14210 
-14211 
-14212 
-14213 
-14214 
-14215 
-14216 
-14217 
-14218 
-14219 
-14220 
-14221 
-14222 
-14223 
-14224 
-14225 
-14226 
-14227 
-14228 
-14229 
-14230 
-14231 
-14232 
-14233 
-14234 
-14235 
-14236 
-14237 
-14238 
-14239 
-14240 
-14241 
-14242 
-14243 
-14244 
-14245 
-14246 
-14247 
-14248 
-14249 
-14250 
-14251 
-14252 
-14253 
-14254 
-14255 
-14256 
-14257 
-14258 
-14259 
-14260 
-14261 
-14262 
-14263 
-14264 
-14265 
-14266 
-14267 
-14268 
-14269 
-14270 
-14271 
-14272 
-14273 
-14274 
-14275 
-14276 
-14277 
-14278 
-14279 
-14280 
-14281 
-14282 
-14283 
-14284 
-14285 
-14286 
-14287 
-14288 
-14289 
-14290 
-14291 
-14292 
-14293 
-14294 
-14295 
-14296 
-14297 
-14298 
-14299 
-14300 
-14301 
-14302 
-14303 
-14304 
-14305 
-14306 
-14307 
-14308 
-14309 
-14310 
-14311 
-14312 
-14313 
-14314 
-14315 
-14316 
-14317 
-14318 
-14319 
-14320 
-14321 
-14322 
-14323 
-14324 
-14325 
-14326 
-14327 
-14328 
-14329 
-14330 
-14331 
-14332 
-14333 
-14334 
-14335 
-14336 
-14337 
-14338 
-14339 
-14340 
-14341 
-14342 
-14343 
-14344 
-14345 
-14346 
-14347 
-14348 
-14349 
-14350 
-14351 
-14352 
-14353 
-14354 
-14355 
-14356 
-14357 
-14358 
-14359 
-14360 
-14361 
-14362 
-14363 
-14364 
-14365 
-14366 
-14367 
-14368 
-14369 
-14370 
-14371 
-14372 
-14373 
-14374 
-14375 
-14376 
-14377 
-14378 
-14379 
-14380 
-14381 
-14382 
-14383 
-14384 
-14385 
-14386 
-14387 
-14388 
-14389 
-14390 
-14391 
-14392 
-14393 
-14394 
-14395 
-14396 
-14397 
-14398 
-14399 
-14400 
-14401 
-14402 
-14403 
-14404 
-14405 
-14406 
-14407 
-14408 
-14409 
-14410 
-14411 
-14412 
-14413 
-14414 
-14415 
-14416 
-14417 
-14418 
-14419 
-14420 
-14421 
-14422 
-14423 
-14424 
-14425 
-14426 
-14427 
-14428 
-14429 
-14430 
-14431 
-14432 
-14433 
-14434 
-14435 
-14436 
-14437 
-14438 
-14439 
-14440 
-14441 
-14442 
-14443 
-14444 
-14445 
-14446 
-14447 
-14448 
-14449 
-14450 
-14451 
-14452 
-14453 
-14454 
-14455 
-14456 
-14457 
-14458 
-14459 
-14460 
-14461 
-14462 
-14463 
-14464 
-14465 
-14466 
-14467 
-14468 
-14469 
-14470 
-14471 
-14472 
-14473 
-14474 
-14475 
-14476 
-14477 
-14478 
-14479 
-14480 
-14481 
-14482 
-14483 
-14484 
-14485 
-14486 
-14487 
-14488 
-14489 
-14490 
-14491 
-14492 
-14493 
-14494 
-14495 
-14496 
-14497 
-14498 
-14499 
-14500 
-14501 
-14502 
-14503 
-14504 
-14505 
-14506 
-14507 
-14508 
-14509 
-14510 
-14511 
-14512 
-14513 
-14514 
-14515 
-14516 
-14517 
-14518 
-14519 
-14520 
-14521 
-14522 
-14523 
-14524 
-14525 
-14526 
-14527 
-14528 
-14529 
-14530 
-14531 
-14532 
-14533 
-14534 
-14535 
-14536 
-14537 
-14538 
-14539 
-14540 
-14541 
-14542 
-14543 
-14544 
-14545 
-14546 
-14547 
-14548 
-14549 
-14550 
-14551 
-14552 
-14553 
-14554 
-14555 
-14556 
-14557 
-14558 
-14559 
-14560 
-14561 
-14562 
-14563 
-14564 
-14565 
-14566 
-14567 
-14568 
-14569 
-14570 
-14571 
-14572 
-14573 
-14574 
-14575 
-14576 
-14577 
-14578 
-14579 
-14580 
-14581 
-14582 
-14583 
-14584 
-14585 
-14586 
-14587 
-14588 
-14589 
-14590 
-14591 
-14592 
-14593 
-14594 
-14595 
-14596 
-14597 
-14598 
-14599 
-14600 
-14601 
-14602 
-14603 
-14604 
-14605 
-14606 
-14607 
-14608 
-14609 
-14610 
-14611 
-14612 
-14613 
-14614 
-14615 
-14616 
-14617 
-14618 
-14619 
-14620 
-14621 
-14622 
-14623 
-14624 
-14625 
-14626 
-14627 
-14628 
-14629 
-14630 
-14631 
-14632 
-14633 
-14634 
-14635 
-14636 
-14637 
-14638 
-14639 
-14640 
-14641 
-14642 
-14643 
-14644 
-14645 
-14646 
-14647 
-14648 
-14649 
-14650 
-14651 
-14652 
-14653 
-14654 
-14655 
-14656 
-14657 
-14658 
-14659 
-14660 
-14661 
-14662 
-14663 
-14664 
-14665 
-14666 
-14667 
-14668 
-14669 
-14670 
-14671 
-14672 
-14673 
-14674 
-14675 
-14676 
-14677 
-14678 
-14679 
-14680 
-14681 
-14682 
-14683 
-14684 
-14685 
-14686 
-14687 
-14688 
-14689 
-14690 
-14691 
-14692 
-14693 
-14694 
-14695 
-14696 
-14697 
-14698 
-14699 
-14700 
-14701 
-14702 
-14703 
-14704 
-14705 
-14706 
-14707 
-14708 
-14709 
-14710 
-14711 
-14712 
-14713 
-14714 
-14715 
-14716 
-14717 
-14718 
-14719 
-14720 
-14721 
-14722 
-14723 
-14724 
-14725 
-14726 
-14727 
-14728 
-14729 
-14730 
-14731 
-14732 
-14733 
-14734 
-14735 
-14736 
-14737 
-14738 
-14739 
-14740 
-14741 
-14742 
-14743 
-14744 
-14745 
-14746 
-14747 
-14748 
-14749 
-14750 
-14751 
-14752 
-14753 
-14754 
-14755 
-14756 
-14757 
-14758 
-14759 
-14760 
-14761 
-14762 
-14763 
-14764 
-14765 
-14766 
-14767 
-14768 
-14769 
-14770 
-14771 
-14772 
-14773 
-14774 
-14775 
-14776 
-14777 
-14778 
-14779 
-14780 
-14781 
-14782 
-14783 
-14784 
-14785 
-14786 
-14787 
-14788 
-14789 
-14790 
-14791 
-14792 
-14793 
-14794 
-14795 
-14796 
-14797 
-14798 
-14799 
-14800 
-14801 
-14802 
-14803 
-14804 
-14805 
-14806 
-14807 
-14808 
-14809 
-14810 
-14811 
-14812 
-14813 
-14814 
-14815 
-14816 
-14817 
-14818 
-14819 
-14820 
-14821 
-14822 
-14823 
-14824 
-14825 
-14826 
-14827 
-14828 
-14829 
-14830 
-14831 
-14832 
-14833 
-14834 
-14835 
-14836 
-14837 
-14838 
-14839 
-14840 
-14841 
-14842 
-14843 
-14844 
-14845 
-14846 
-14847 
-14848 
-14849 
-14850 
-14851 
-14852 
-14853 
-14854 
-14855 
-14856 
-14857 
-14858 
-14859 
-14860 
-14861 
-14862 
-14863 
-14864 
-14865 
-14866 
-14867 
-14868 
-14869 
-14870 
-14871 
-14872 
-14873 
-14874 
-14875 
-14876 
-14877 
-14878 
-14879 
-14880 
-14881 
-14882 
-14883 
-14884 
-14885 
-14886 
-14887 
-14888 
-14889 
-14890 
-14891 
-14892 
-14893 
-14894 
-14895 
-14896 
-14897 
-14898 
-14899 
-14900 
-14901 
-14902 
-14903 
-14904 
-14905 
-14906 
-14907 
-14908 
-14909 
-14910 
-14911 
-14912 
-14913 
-14914 
-14915 
-14916 
-14917 
-14918 
-14919 
-14920 
-14921 
-14922 
-14923 
-14924 
-14925 
-14926 
-14927 
-14928 
-14929 
-14930 
-14931 
-14932 
-14933 
-14934 
-14935 
-14936 
-14937 
-14938 
-14939 
-14940 
-14941 
-14942 
-14943 
-14944 
-14945 
-14946 
-14947 
-14948 
-14949 
-14950 
-14951 
-14952 
-14953 
-14954 
-14955 
-14956 
-14957 
-14958 
-14959 
-14960 
-14961 
-14962 
-14963 
-14964 
-14965 
-14966 
-14967 
-14968 
-14969 
-14970 
-14971 
-14972 
-14973 
-14974 
-14975 
-14976 
-14977 
-14978 
-14979 
-14980 
-14981 
-14982 
-14983 
-14984 
-14985 
-14986 
-14987 
-14988 
-14989 
-14990 
-14991 
-14992 
-14993 
-14994 
-14995 
-14996 
-14997 
-14998 
-14999 
-15000 
-15001 
-15002 
-15003 
-15004 
-15005 
-15006 
-15007 
-15008 
-15009 
-15010 
-15011 
-15012 
-15013 
-15014 
-15015 
-15016 
-15017 
-15018 
-15019 
-15020 
-15021 
-15022 
-15023 
-15024 
-15025 
-15026 
-15027 
-15028 
-15029 
-15030 
-15031 
-15032 
-15033 
-15034 
-15035 
-15036 
-15037 
-15038 
-15039 
-15040 
-15041 
-15042 
-15043 
-15044 
-15045 
-15046 
-15047 
-15048 
-15049 
-15050 
-15051 
-15052 
-15053 
-15054 
-15055 
-15056 
-15057 
-15058 
-15059 
-15060 
-15061 
-15062 
-15063 
-15064 
-15065 
-15066 
-15067 
-15068 
-15069 
-15070 
-15071 
-15072 
-15073 
-15074 
-15075 
-15076 
-15077 
-15078 
-15079 
-15080 
-15081 
-15082 
-15083 
-15084 
-15085 
-15086 
-15087 
-15088 
-15089 
-15090 
-15091 
-15092 
-15093 
-15094 
-15095 
-15096 
-15097 
-15098 
-15099 
-15100 
-15101 
-15102 
-15103 
-15104 
-15105 
-15106 
-15107 
-15108 
-15109 
-15110 
-15111 
-15112 
-15113 
-15114 
-15115 
-15116 
-15117 
-15118 
-15119 
-15120 
-15121 
-15122 
-15123 
-15124 
-15125 
-15126 
-15127 
-15128 
-15129 
-15130 
-15131 
-15132 
-15133 
-15134 
-15135 
-15136 
-15137 
-15138 
-15139 
-15140 
-15141 
-15142 
-15143 
-15144 
-15145 
-15146 
-15147 
-15148 
-15149 
-15150 
-15151 
-15152 
-15153 
-15154 
-15155 
-15156 
-15157 
-15158 
-15159 
-15160 
-15161 
-15162 
-15163 
-15164 
-15165 
-15166 
-15167 
-15168 
-15169 
-15170 
-15171 
-15172 
-15173 
-15174 
-15175 
-15176 
-15177 
-15178 
-15179 
-15180 
-15181 
-15182 
-15183 
-15184 
-15185 
-15186 
-15187 
-15188 
-15189 
-15190 
-15191 
-15192 
-15193 
-15194 
-15195 
-15196 
-15197 
-15198 
-15199 
-15200 
-15201 
-15202 
-15203 
-15204 
-15205 
-15206 
-15207 
-15208 
-15209 
-15210 
-15211 
-15212 
-15213 
-15214 
-15215 
-15216 
-15217 
-15218 
-15219 
-15220 
-15221 
-15222 
-15223 
-15224 
-15225 
-15226 
-15227 
-15228 
-15229 
-15230 
-15231 
-15232 
-15233 
-15234 
-15235 
-15236 
-15237 
-15238 
-15239 
-15240 
-15241 
-15242 
-15243 
-15244 
-15245 
-15246 
-15247 
-15248 
-15249 
-15250 
-15251 
-15252 
-15253 
-15254 
-15255 
-15256 
-15257 
-15258 
-15259 
-15260 
-15261 
-15262 
-15263 
-15264 
-15265 
-15266 
-15267 
-15268 
-15269 
-15270 
-15271 
-15272 
-15273 
-15274 
-15275 
-15276 
-15277 
-15278 
-15279 
-15280 
-15281 
-15282 
-15283 
-15284 
-15285 
-15286 
-15287 
-15288 
-15289 
-15290 
-15291 
-15292 
-15293 
-15294 
-15295 
-15296 
-15297 
-15298 
-15299 
-15300 
-15301 
-15302 
-15303 
-15304 
-15305 
-15306 
-15307 
-15308 
-15309 
-15310 
-15311 
-15312 
-15313 
-15314 
-15315 
-15316 
-15317 
-15318 
-15319 
-15320 
-15321 
-15322 
-15323 
-15324 
-15325 
-15326 
-15327 
-15328 
-15329 
-15330 
-15331 
-15332 
-15333 
-15334 
-15335 
-15336 
-15337 
-15338 
-15339 
-15340 
-15341 
-15342 
-15343 
-15344 
-15345 
-15346 
-15347 
-15348 
-15349 
-15350 
-15351 
-15352 
-15353 
-15354 
-15355 
-15356 
-15357 
-15358 
-15359 
-15360 
-15361 
-15362 
-15363 
-15364 
-15365 
-15366 
-15367 
-15368 
-15369 
-15370 
-15371 
-15372 
-15373 
-15374 
-15375 
-15376 
-15377 
-15378 
-15379 
-15380 
-15381 
-15382 
-15383 
-15384 
-15385 
-15386 
-15387 
-15388 
-15389 
-15390 
-15391 
-15392 
-15393 
-15394 
-15395 
-15396 
-15397 
-15398 
-15399 
-15400 
-15401 
-15402 
-15403 
-15404 
-15405 
-15406 
-15407 
-15408 
-15409 
-15410 
-15411 
-15412 
-15413 
-15414 
-15415 
-15416 
-15417 
-15418 
-15419 
-15420 
-15421 
-15422 
-15423 
-15424 
-15425 
-15426 
-15427 
-15428 
-15429 
-15430 
-15431 
-15432 
-15433 
-15434 
-15435 
-15436 
-15437 
-15438 
-15439 
-15440 
-15441 
-15442 
-15443 
-15444 
-15445 
-15446 
-15447 
-15448 
-15449 
-15450 
-15451 
-15452 
-15453 
-15454 
-15455 
-15456 
-15457 
-15458 
-15459 
-15460 
-15461 
-15462 
-15463 
-15464 
-15465 
-15466 
-15467 
-15468 
-15469 
-15470 
-15471 
-15472 
-15473 
-15474 
-15475 
-15476 
-15477 
-15478 
-15479 
-15480 
-15481 
-15482 
-15483 
-15484 
-15485 
-15486 
-15487 
-15488 
-15489 
-15490 
-15491 
-15492 
-15493 
-15494 
-15495 
-15496 
-15497 
-15498 
-15499 
-15500 
-15501 
-15502 
-15503 
-15504 
-15505 
-15506 
-15507 
-15508 
-15509 
-15510 
-15511 
-15512 
-15513 
-15514 
-15515 
-15516 
-15517 
-15518 
-15519 
-15520 
-15521 
-15522 
-15523 
-15524 
-15525 
-15526 
-15527 
-15528 
-15529 
-15530 
-15531 
-15532 
-15533 
-15534 
-15535 
-15536 
-15537 
-15538 
-15539 
-15540 
-15541 
-15542 
-15543 
-15544 
-15545 
-15546 
-15547 
-15548 
-15549 
-15550 
-15551 
-15552 
-15553 
-15554 
-15555 
-15556 
-15557 
-15558 
-15559 
-15560 
-15561 
-15562 
-15563 
-15564 
-15565 
-15566 
-15567 
-15568 
-15569 
-15570 
-15571 
-15572 
-15573 
-15574 
-15575 
-15576 
-15577 
-15578 
-15579 
-15580 
-15581 
-15582 
-15583 
-15584 
-15585 
-15586 
-15587 
-15588 
-15589 
-15590 
-15591 
-15592 
-15593 
-15594 
-15595 
-15596 
-15597 
-15598 
-15599 
-15600 
-15601 
-15602 
-15603 
-15604 
-15605 
-15606 
-15607 
-15608 
-15609 
-15610 
-15611 
-15612 
-15613 
-15614 
-15615 
-15616 
-15617 
-15618 
-15619 
-15620 
-15621 
-15622 
-15623 
-15624 
-15625 
-15626 
-15627 
-15628 
-15629 
-15630 
-15631 
-15632 
-15633 
-15634 
-15635 
-15636 
-15637 
-15638 
-15639 
-15640 
-15641 
-15642 
-15643 
-15644 
-15645 
-15646 
-15647 
-15648 
-15649 
-15650 
-15651 
-15652 
-15653 
-15654 
-15655 
-15656 
-15657 
-15658 
-15659 
-15660 
-15661 
-15662 
-15663 
-15664 
-15665 
-15666 
-15667 
-15668 
-15669 
-15670 
-15671 
-15672 
-15673 
-15674 
-15675 
-15676 
-15677 
-15678 
-15679 
-15680 
-15681 
-15682 
-15683 
-15684 
-15685 
-15686 
-15687 
-15688 
-15689 
-15690 
-15691 
-15692 
-15693 
-15694 
-15695 
-15696 
-15697 
-15698 
-15699 
-15700 
-15701 
-15702 
-15703 
-15704 
-15705 
-15706 
-15707 
-15708 
-15709 
-15710 
-15711 
-15712 
-15713 
-15714 
-15715 
-15716 
-15717 
-15718 
-15719 
-15720 
-15721 
-15722 
-15723 
-15724 
-15725 
-15726 
-15727 
-15728 
-15729 
-15730 
-15731 
-15732 
-15733 
-15734 
-15735 
-15736 
-15737 
-15738 
-15739 
-15740 
-15741 
-15742 
-15743 
-15744 
-15745 
-15746 
-15747 
-15748 
-15749 
-15750 
-15751 
-15752 
-15753 
-15754 
-15755 
-15756 
-15757 
-15758 
-15759 
-15760 
-15761 
-15762 
-15763 
-15764 
-15765 
-15766 
-15767 
-15768 
-15769 
-15770 
-15771 
-15772 
-15773 
-15774 
-15775 
-15776 
-15777 
-15778 
-15779 
-15780 
-15781 
-15782 
-15783 
-15784 
-15785 
-15786 
-15787 
-15788 
-15789 
-15790 
-15791 
-15792 
-15793 
-15794 
-15795 
-15796 
-15797 
-15798 
-15799 
-15800 
-15801 
-15802 
-15803 
-15804 
-15805 
-15806 
-15807 
-15808 
-15809 
-15810 
-15811 
-15812 
-15813 
-15814 
-15815 
-15816 
-15817 
-15818 
-15819 
-15820 
-15821 
-15822 
-15823 
-15824 
-15825 
-15826 
-15827 
-15828 
-15829 
-15830 
-15831 
-15832 
-15833 
-15834 
-15835 
-15836 
-15837 
-15838 
-15839 
-15840 
-15841 
-15842 
-15843 
-15844 
-15845 
-15846 
-15847 
-15848 
-15849 
-15850 
-15851 
-15852 
-15853 
-15854 
-15855 
-15856 
-15857 
-15858 
-15859 
-15860 
-15861 
-15862 
-15863 
-15864 
-15865 
-15866 
-15867 
-15868 
-15869 
-15870 
-15871 
-15872 
-15873 
-15874 
-15875 
-15876 
-15877 
-15878 
-15879 
-15880 
-15881 
-15882 
-15883 
-15884 
-15885 
-15886 
-15887 
-15888 
-15889 
-15890 
-15891 
-15892 
-15893 
-15894 
-15895 
-15896 
-15897 
-15898 
-15899 
-15900 
-15901 
-15902 
-15903 
-15904 
-15905 
-15906 
-15907 
-15908 
-15909 
-15910 
-15911 
-15912 
-15913 
-15914 
-15915 
-15916 
-15917 
-15918 
-15919 
-15920 
-15921 
-15922 
-15923 
-15924 
-15925 
-15926 
-15927 
-15928 
-15929 
-15930 
-15931 
-15932 
-15933 
-15934 
-15935 
-15936 
-15937 
-15938 
-15939 
-15940 
-15941 
-15942 
-15943 
-15944 
-15945 
-15946 
-15947 
-15948 
-15949 
-15950 
-15951 
-15952 
-15953 
-15954 
-15955 
-15956 
-15957 
-15958 
-15959 
-15960 
-15961 
-15962 
-15963 
-15964 
-15965 
-15966 
-15967 
-15968 
-15969 
-15970 
-15971 
-15972 
-15973 
-15974 
-15975 
-15976 
-15977 
-15978 
-15979 
-15980 
-15981 
-15982 
-15983 
-15984 
-15985 
-15986 
-15987 
-15988 
-15989 
-15990 
-15991 
-15992 
-15993 
-15994 
-15995 
-15996 
-15997 
-15998 
-15999 
-16000 
-16001 
-16002 
-16003 
-16004 
-16005 
-16006 
-16007 
-16008 
-16009 
-16010 
-16011 
-16012 
-16013 
-16014 
-16015 
-16016 
-16017 
-16018 
-16019 
-16020 
-16021 
-16022 
-16023 
-16024 
-16025 
-16026 
-16027 
-16028 
-16029 
-16030 
-16031 
-16032 
-16033 
-16034 
-16035 
-16036 
-16037 
-16038 
-16039 
-16040 
-16041 
-16042 
-16043 
-16044 
-16045 
-16046 
-16047 
-16048 
-16049 
-16050 
-16051 
-16052 
-16053 
-16054 
-16055 
-16056 
-16057 
-16058 
-16059 
-16060 
-16061 
-16062 
-16063 
-16064 
-16065 
-16066 
-16067 
-16068 
-16069 
-16070 
-16071 
-16072 
-16073 
-16074 
-16075 
-16076 
-16077 
-16078 
-16079 
-16080 
-16081 
-16082 
-16083 
-16084 
-16085 
-16086 
-16087 
-16088 
-16089 
-16090 
-16091 
-16092 
-16093 
-16094 
-16095 
-16096 
-16097 
-16098 
-16099 
-16100 
-16101 
-16102 
-16103 
-16104 
-16105 
-16106 
-16107 
-16108 
-16109 
-16110 
-16111 
-16112 
-16113 
-16114 
-16115 
-16116 
-16117 
-16118 
-16119 
-16120 
-16121 
-16122 
-16123 
-16124 
-16125 
-16126 
-16127 
-16128 
-16129 
-16130 
-16131 
-16132 
-16133 
-16134 
-16135 
-16136 
-16137 
-16138 
-16139 
-16140 
-16141 
-16142 
-16143 
-16144 
-16145 
-16146 
-16147 
-16148 
-16149 
-16150 
-16151 
-16152 
-16153 
-16154 
-16155 
-16156 
-16157 
-16158 
-16159 
-16160 
-16161 
-16162 
-16163 
-16164 
-16165 
-16166 
-16167 
-16168 
-16169 
-16170 
-16171 
-16172 
-16173 
-16174 
-16175 
-16176 
-16177 
-16178 
-16179 
-16180 
-16181 
-16182 
-16183 
-16184 
-16185 
-16186 
-16187 
-16188 
-16189 
-16190 
-16191 
-16192 
-16193 
-16194 
-16195 
-16196 
-16197 
-16198 
-16199 
-16200 
-16201 
-16202 
-16203 
-16204 
-16205 
-16206 
-16207 
-16208 
-16209 
-16210 
-16211 
-16212 
-16213 
-16214 
-16215 
-16216 
-16217 
-16218 
-16219 
-16220 
-16221 
-16222 
-16223 
-16224 
-16225 
-16226 
-16227 
-16228 
-16229 
-16230 
-16231 
-16232 
-16233 
-16234 
-16235 
-16236 
-16237 
-16238 
-16239 
-16240 
-16241 
-16242 
-16243 
-16244 
-16245 
-16246 
-16247 
-16248 
-16249 
-16250 
-16251 
-16252 
-16253 
-16254 
-16255 
-16256 
-16257 
-16258 
-16259 
-16260 
-16261 
-16262 
-16263 
-16264 
-16265 
-16266 
-16267 
-16268 
-16269 
-16270 
-16271 
-16272 
-16273 
-16274 
-16275 
-16276 
-16277 
-16278 
-16279 
-16280 
-16281 
-16282 
-16283 
-16284 
-16285 
-16286 
-16287 
-16288 
-16289 
-16290 
-16291 
-16292 
-16293 
-16294 
-16295 
-16296 
-16297 
-16298 
-16299 
-16300 
-16301 
-16302 
-16303 
-16304 
-16305 
-16306 
-16307 
-16308 
-16309 
-16310 
-16311 
-16312 
-16313 
-16314 
-16315 
-16316 
-16317 
-16318 
-16319 
-16320 
-16321 
-16322 
-16323 
-16324 
-16325 
-16326 
-16327 
-16328 
-16329 
-16330 
-16331 
-16332 
-16333 
-16334 
-16335 
-16336 
-16337 
-16338 
-16339 
-16340 
-16341 
-16342 
-16343 
-16344 
-16345 
-16346 
-16347 
-16348 
-16349 
-16350 
-16351 
-16352 
-16353 
-16354 
-16355 
-16356 
-16357 
-16358 
-16359 
-16360 
-16361 
-16362 
-16363 
-16364 
-16365 
-16366 
-16367 
-16368 
-16369 
-16370 
-16371 
-16372 
-16373 
-16374 
-16375 
-16376 
-16377 
-16378 
-16379 
-16380 
-16381 
-16382 
-16383 
-16384 
-16385 
-16386 
-16387 
-16388 
-16389 
-16390 
-16391 
-16392 
-16393 
-16394 
-16395 
-16396 
-16397 
-16398 
-16399 
-16400 
-16401 
-16402 
-16403 
-16404 
-16405 
-16406 
-16407 
-16408 
-16409 
-16410 
-16411 
-16412 
-16413 
-16414 
-16415 
-16416 
-16417 
-16418 
-16419 
-16420 
-16421 
-16422 
-16423 
-16424 
-16425 
-16426 
-16427 
-16428 
-16429 
-16430 
-16431 
-16432 
-16433 
-16434 
-16435 
-16436 
-16437 
-16438 
-16439 
-16440 
-16441 
-16442 
-16443 
-16444 
-16445 
-16446 
-16447 
-16448 
-16449 
-16450 
-16451 
-16452 
-16453 
-16454 
-16455 
-16456 
-16457 
-16458 
-16459 
-16460 
-16461 
-16462 
-16463 
-16464 
-16465 
-16466 
-16467 
-16468 
-16469 
-16470 
-16471 
-16472 
-16473 
-16474 
-16475 
-16476 
-16477 
-16478 
-16479 
-16480 
-16481 
-16482 
-16483 
-16484 
-16485 
-16486 
-16487 
-16488 
-16489 
-16490 
-16491 
-16492 
-16493 
-16494 
-16495 
-16496 
-16497 
-16498 
-16499 
-16500 
-16501 
-16502 
-16503 
-16504 
-16505 
-16506 
-16507 
-16508 
-16509 
-16510 
-16511 
-16512 
-16513 
-16514 
-16515 
-16516 
-16517 
-16518 
-16519 
-16520 
-16521 
-16522 
-16523 
-16524 
-16525 
-16526 
-16527 
-16528 
-16529 
-16530 
-16531 
-16532 
-16533 
-16534 
-16535 
-16536 
-16537 
-16538 
-16539 
-16540 
-16541 
-16542 
-16543 
-16544 
-16545 
-16546 
-16547 
-16548 
-16549 
-16550 
-16551 
-16552 
-16553 
-16554 
-16555 
-16556 
-16557 
-16558 
-16559 
-16560 
-16561 
-16562 
-16563 
-16564 
-16565 
-16566 
-16567 
-16568 
-16569 
-16570 
-16571 
-16572 
-16573 
-16574 
-16575 
-16576 
-16577 
-16578 
-16579 
-16580 
-16581 
-16582 
-16583 
-16584 
-16585 
-16586 
-16587 
-16588 
-16589 
-16590 
-16591 
-16592 
-16593 
-16594 
-16595 
-16596 
-16597 
-16598 
-16599 
-16600 
-16601 
-16602 
-16603 
-16604 
-16605 
-16606 
-16607 
-16608 
-16609 
-16610 
-16611 
-16612 
-16613 
-16614 
-16615 
-16616 
-16617 
-16618 
-16619 
-16620 
-16621 
-16622 
-16623 
-16624 
-16625 
-16626 
-16627 
-16628 
-16629 
-16630 
-16631 
-16632 
-16633 
-16634 
-16635 
-16636 
-16637 
-16638 
-16639 
-16640 
-16641 
-16642 
-16643 
-16644 
-16645 
-16646 
-16647 
-16648 
-16649 
-16650 
-16651 
-16652 
-16653 
-16654 
-16655 
-16656 
-16657 
-16658 
-16659 
-16660 
-16661 
-16662 
-16663 
-16664 
-16665 
-16666 
-16667 
-16668 
-16669 
-16670 
-16671 
-16672 
-16673 
-16674 
-16675 
-16676 
-16677 
-16678 
-16679 
-16680 
-16681 
-16682 
-16683 
-16684 
-16685 
-16686 
-16687 
-16688 
-16689 
-16690 
-16691 
-16692 
-16693 
-16694 
-16695 
-16696 
-16697 
-16698 
-16699 
-16700 
-16701 
-16702 
-16703 
-16704 
-16705 
-16706 
-16707 
-16708 
-16709 
-16710 
-16711 
-16712 
-16713 
-16714 
-16715 
-16716 
-16717 
-16718 
-16719 
-16720 
-16721 
-16722 
-16723 
-16724 
-16725 
-16726 
-16727 
-16728 
-16729 
-16730 
-16731 
-16732 
-16733 
-16734 
-16735 
-16736 
-16737 
-16738 
-16739 
-16740 
-16741 
-16742 
-16743 
-16744 
-16745 
-16746 
-16747 
-16748 
-16749 
-16750 
-16751 
-16752 
-16753 
-16754 
-16755 
-16756 
-16757 
-16758 
-16759 
-16760 
-16761 
-16762 
-16763 
-16764 
-16765 
-16766 
-16767 
-16768 
-16769 
-16770 
-16771 
-16772 
-16773 
-16774 
-16775 
-16776 
-16777 
-16778 
-16779 
-16780 
-16781 
-16782 
-16783 
-16784 
-16785 
-16786 
-16787 
-16788 
-16789 
-16790 
-16791 
-16792 
-16793 
-16794 
-16795 
-16796 
-16797 
-16798 
-16799 
-16800 
-16801 
-16802 
-16803 
-16804 
-16805 
-16806 
-16807 
-16808 
-16809 
-16810 
-16811 
-16812 
-16813 
-16814 
-16815 
-16816 
-16817 
-16818 
-16819 
-16820 
-16821 
-16822 
-16823 
-16824 
-16825 
-16826 
-16827 
-16828 
-16829 
-16830 
-16831 
-16832 
-16833 
-16834 
-16835 
-16836 
-16837 
-16838 
-16839 
-16840 
-16841 
-16842 
-16843 
-16844 
-16845 
-16846 
-16847 
-16848 
-16849 
-16850 
-16851 
-16852 
-16853 
-16854 
-16855 
-16856 
-16857 
-16858 
-16859 
-16860 
-16861 
-16862 
-16863 
-16864 
-16865 
-16866 
-16867 
-16868 
-16869 
-16870 
-16871 
-16872 
-16873 
-16874 
-16875 
-16876 
-16877 
-16878 
-16879 
-16880 
-16881 
-16882 
-16883 
-16884 
-16885 
-16886 
-16887 
-16888 
-16889 
-16890 
-16891 
-16892 
-16893 
-16894 
-16895 
-16896 
-16897 
-16898 
-16899 
-16900 
-16901 
-16902 
-16903 
-16904 
-16905 
-16906 
-16907 
-16908 
-16909 
-16910 
-16911 
-16912 
-16913 
-16914 
-16915 
-16916 
-16917 
-16918 
-16919 
-16920 
-16921 
-16922 
-16923 
-16924 
-16925 
-16926 
-16927 
-16928 
-16929 
-16930 
-16931 
-16932 
-16933 
-16934 
-16935 
-16936 
-16937 
-16938 
-16939 
-16940 
-16941 
-16942 
-16943 
-16944 
-16945 
-16946 
-16947 
-16948 
-16949 
-16950 
-16951 
-16952 
-16953 
-16954 
-16955 
-16956 
-16957 
-16958 
-16959 
-16960 
-16961 
-16962 
-16963 
-16964 
-16965 
-16966 
-16967 
-16968 
-16969 
-16970 
-16971 
-16972 
-16973 
-16974 
-16975 
-16976 
-16977 
-16978 
-16979 
-16980 
-16981 
-16982 
-16983 
-16984 
-16985 
-16986 
-16987 
-16988 
-16989 
-16990 
-16991 
-16992 
-16993 
-16994 
-16995 
-16996 
-16997 
-16998 
-16999 
-17000 
-17001 
-17002 
-17003 
-17004 
-17005 
-17006 
-17007 
-17008 
-17009 
-17010 
-17011 
-17012 
-17013 
-17014 
-17015 
-17016 
-17017 
-17018 
-17019 
-17020 
-17021 
-17022 
-17023 
-17024 
-17025 
-17026 
-17027 
-17028 
-17029 
-17030 
-17031 
-17032 
-17033 
-17034 
-17035 
-17036 
-17037 
-17038 
-17039 
-17040 
-17041 
-17042 
-17043 
-17044 
-17045 
-17046 
-17047 
-17048 
-17049 
-17050 
-17051 
-17052 
-17053 
-17054 
-17055 
-17056 
-17057 
-17058 
-17059 
-17060 
-17061 
-17062 
-17063 
-17064 
-17065 
-17066 
-17067 
-17068 
-17069 
-17070 
-17071 
-17072 
-17073 
-17074 
-17075 
-17076 
-17077 
-17078 
-17079 
-17080 
-17081 
-17082 
-17083 
-17084 
-17085 
-17086 
-17087 
-17088 
-17089 
-17090 
-17091 
-17092 
-17093 
-17094 
-17095 
-17096 
-17097 
-17098 
-17099 
-17100 
-17101 
-17102 
-17103 
-17104 
-17105 
-17106 
-17107 
-17108 
-17109 
-17110 
-17111 
-17112 
-17113 
-17114 
-17115 
-17116 
-17117 
-17118 
-17119 
-17120 
-17121 
-17122 
-17123 
-17124 
-17125 
-17126 
-17127 
-17128 
-17129 
-17130 
-17131 
-17132 
-17133 
-17134 
-17135 
-17136 
-17137 
-17138 
-17139 
-17140 
-17141 
-17142 
-17143 
-17144 
-17145 
-17146 
-17147 
-17148 
-17149 
-17150 
-17151 
-17152 
-17153 
-17154 
-17155 
-17156 
-17157 
-17158 
-17159 
-17160 
-17161 
-17162 
-17163 
-17164 
-17165 
-17166 
-17167 
-17168 
-17169 
-17170 
-17171 
-17172 
-17173 
-17174 
-17175 
-17176 
-17177 
-17178 
-17179 
-17180 
-17181 
-17182 
-17183 
-17184 
-17185 
-17186 
-17187 
-17188 
-17189 
-17190 
-17191 
-17192 
-17193 
-17194 
-17195 
-17196 
-17197 
-17198 
-17199 
-17200 
-17201 
-17202 
-17203 
-17204 
-17205 
-17206 
-17207 
-17208 
-17209 
-17210 
-17211 
-17212 
-17213 
-17214 
-17215 
-17216 
-17217 
-17218 
-17219 
-17220 
-17221 
-17222 
-17223 
-17224 
-17225 
-17226 
-17227 
-17228 
-17229 
-17230 
-17231 
-17232 
-17233 
-17234 
-17235 
-17236 
-17237 
-17238 
-17239 
-17240 
-17241 
-17242 
-17243 
-17244 
-17245 
-17246 
-17247 
-17248 
-17249 
-17250 
-17251 
-17252 
-17253 
-17254 
-17255 
-17256 
-17257 
-17258 
-17259 
-17260 
-17261 
-17262 
-17263 
-17264 
-17265 
-17266 
-17267 
-17268 
-17269 
-17270 
-17271 
-17272 
-17273 
-17274 
-17275 
-17276 
-17277 
-17278 
-17279 
-17280 
-17281 
-17282 
-17283 
-17284 
-17285 
-17286 
-17287 
-17288 
-17289 
-17290 
-17291 
-17292 
-17293 
-17294 
-17295 
-17296 
-17297 
-17298 
-17299 
-17300 
-17301 
-17302 
-17303 
-17304 
-17305 
-17306 
-17307 
-17308 
-17309 
-17310 
-17311 
-17312 
-17313 
-17314 
-17315 
-17316 
-17317 
-17318 
-17319 
-17320 
-17321 
-17322 
-17323 
-17324 
-17325 
-17326 
-17327 
-17328 
-17329 
-17330 
-17331 
-17332 
-17333 
-17334 
-17335 
-17336 
-17337 
-17338 
-17339 
-17340 
-17341 
-17342 
-17343 
-17344 
-17345 
-17346 
-17347 
-17348 
-17349 
-17350 
-17351 
-17352 
-17353 
-17354 
-17355 
-17356 
-17357 
-17358 
-17359 
-17360 
-17361 
-17362 
-17363 
-17364 
-17365 
-17366 
-17367 
-17368 
-17369 
-17370 
-17371 
-17372 
-17373 
-17374 
-17375 
-17376 
-17377 
-17378 
-17379 
-17380 
-17381 
-17382 
-17383 
-17384 
-17385 
-17386 
-17387 
-17388 
-17389 
-17390 
-17391 
-17392 
-17393 
-17394 
-17395 
-17396 
-17397 
-17398 
-17399 
-17400 
-17401 
-17402 
-17403 
-17404 
-17405 
-17406 
-17407 
-17408 
-17409 
-17410 
-17411 
-17412 
-17413 
-17414 
-17415 
-17416 
-17417 
-17418 
-17419 
-17420 
-17421 
-17422 
-17423 
-17424 
-17425 
-17426 
-17427 
-17428 
-17429 
-17430 
-17431 
-17432 
-17433 
-17434 
-17435 
-17436 
-17437 
-17438 
-17439 
-17440 
-17441 
-17442 
-17443 
-17444 
-17445 
-17446 
-17447 
-17448 
-17449 
-17450 
-17451 
-17452 
-17453 
-17454 
-17455 
-17456 
-17457 
-17458 
-17459 
-17460 
-17461 
-17462 
-17463 
-17464 
-17465 
-17466 
-17467 
-17468 
-17469 
-17470 
-17471 
-17472 
-17473 
-17474 
-17475 
-17476 
-17477 
-17478 
-17479 
-17480 
-17481 
-17482 
-17483 
-17484 
-17485 
-17486 
-17487 
-17488 
-17489 
-17490 
-17491 
-17492 
-17493 
-17494 
-17495 
-17496 
-17497 
-17498 
-17499 
-17500 
-17501 
-17502 
-17503 
-17504 
-17505 
-17506 
-17507 
-17508 
-17509 
-17510 
-17511 
-17512 
-17513 
-17514 
-17515 
-17516 
-17517 
-17518 
-17519 
-17520 
-17521 
-17522 
-17523 
-17524 
-17525 
-17526 
-17527 
-17528 
-17529 
-17530 
-17531 
-17532 
-17533 
-17534 
-17535 
-17536 
-17537 
-17538 
-17539 
-17540 
-17541 
-17542 
-17543 
-17544 
-17545 
-17546 
-17547 
-17548 
-17549 
-17550 
-17551 
-17552 
-17553 
-17554 
-17555 
-17556 
-17557 
-17558 
-17559 
-17560 
-17561 
-17562 
-17563 
-17564 
-17565 
-17566 
-17567 
-17568 
-17569 
-17570 
-17571 
-17572 
-17573 
-17574 
-17575 
-17576 
-17577 
-17578 
-17579 
-17580 
-17581 
-17582 
-17583 
-17584 
-17585 
-17586 
-17587 
-17588 
-17589 
-17590 
-17591 
-17592 
-17593 
-17594 
-17595 
-17596 
-17597 
-17598 
-17599 
-17600 
-17601 
-17602 
-17603 
-17604 
-17605 
-17606 
-17607 
-17608 
-17609 
-17610 
-17611 
-17612 
-17613 
-17614 
-17615 
-17616 
-17617 
-17618 
-17619 
-17620 
-17621 
-17622 
-17623 
-17624 
-17625 
-17626 
-17627 
-17628 
-17629 
-17630 
-17631 
-17632 
-17633 
-17634 
-17635 
-17636 
-17637 
-17638 
-17639 
-17640 
-17641 
-17642 
-17643 
-17644 
-17645 
-17646 
-17647 
-17648 
-17649 
-17650 
-17651 
-17652 
-17653 
-17654 
-17655 
-17656 
-17657 
-17658 
-17659 
-17660 
-17661 
-17662 
-17663 
-17664 
-17665 
-17666 
-17667 
-17668 
-17669 
-17670 
-17671 
-17672 
-17673 
-17674 
-17675 
-17676 
-17677 
-17678 
-17679 
-17680 
-17681 
-17682 
-17683 
-17684 
-17685 
-17686 
-17687 
-17688 
-17689 
-17690 
-17691 
-17692 
-17693 
-17694 
-17695 
-17696 
-17697 
-17698 
-17699 
-17700 
-17701 
-17702 
-17703 
-17704 
-17705 
-17706 
-17707 
-17708 
-17709 
-17710 
-17711 
-17712 
-17713 
-17714 
-17715 
-17716 
-17717 
-17718 
-17719 
-17720 
-17721 
-17722 
-17723 
-17724 
-17725 
-17726 
-17727 
-17728 
-17729 
-17730 
-17731 
-17732 
-17733 
-17734 
-17735 
-17736 
-17737 
-17738 
-17739 
-17740 
-17741 
-17742 
-17743 
-17744 
-17745 
-17746 
-17747 
-17748 
-17749 
-17750 
-17751 
-17752 
-17753 
-17754 
-17755 
-17756 
-17757 
-17758 
-17759 
-17760 
-17761 
-17762 
-17763 
-17764 
-17765 
-17766 
-17767 
-17768 
-17769 
-17770 
-17771 
-17772 
-17773 
-17774 
-17775 
-17776 
-17777 
-17778 
-17779 
-17780 
-17781 
-17782 
-17783 
-17784 
-17785 
-17786 
-17787 
-17788 
-17789 
-17790 
-17791 
-17792 
-17793 
-17794 
-17795 
-17796 
-17797 
-17798 
-17799 
-17800 
-17801 
-17802 
-17803 
-17804 
-17805 
-17806 
-17807 
-17808 
-17809 
-17810 
-17811 
-17812 
-17813 
-17814 
-17815 
-17816 
-17817 
-17818 
-17819 
-17820 
-17821 
-17822 
-17823 
-17824 
-17825 
-17826 
-17827 
-17828 
-17829 
-17830 
-17831 
-17832 
-17833 
-17834 
-17835 
-17836 
-17837 
-17838 
-17839 
-17840 
-17841 
-17842 
-17843 
-17844 
-17845 
-17846 
-17847 
-17848 
-17849 
-17850 
-17851 
-17852 
-17853 
-17854 
-17855 
-17856 
-17857 
-17858 
-17859 
-17860 
-17861 
-17862 
-17863 
-17864 
-17865 
-17866 
-17867 
-17868 
-17869 
-17870 
-17871 
-17872 
-17873 
-17874 
-17875 
-17876 
-17877 
-17878 
-17879 
-17880 
-17881 
-17882 
-17883 
-17884 
-17885 
-17886 
-17887 
-17888 
-17889 
-17890 
-17891 
-17892 
-17893 
-17894 
-17895 
-17896 
-17897 
-17898 
-17899 
-17900 
-17901 
-17902 
-17903 
-17904 
-17905 
-17906 
-17907 
-17908 
-17909 
-17910 
-17911 
-17912 
-17913 
-17914 
-17915 
-17916 
-17917 
-17918 
-17919 
-17920 
-17921 
-17922 
-17923 
-17924 
-17925 
-17926 
-17927 
-17928 
-17929 
-17930 
-17931 
-17932 
-17933 
-17934 
-17935 
-17936 
-17937 
-17938 
-17939 
-17940 
-17941 
-17942 
-17943 
-17944 
-17945 
-17946 
-17947 
-17948 
-17949 
-17950 
-17951 
-17952 
-17953 
-17954 
-17955 
-17956 
-17957 
-17958 
-17959 
-17960 
-17961 
-17962 
-17963 
-17964 
-17965 
-17966 
-17967 
-17968 
-17969 
-17970 
-17971 
-17972 
-17973 
-17974 
-17975 
-17976 
-17977 
-17978 
-17979 
-17980 
-17981 
-17982 
-17983 
-17984 
-17985 
-17986 
-17987 
-17988 
-17989 
-17990 
-17991 
-17992 
-17993 
-17994 
-17995 
-17996 
-17997 
-17998 
-17999 
-18000 
-18001 
-18002 
-18003 
-18004 
-18005 
-18006 
-18007 
-18008 
-18009 
-18010 
-18011 
-18012 
-18013 
-18014 
-18015 
-18016 
-18017 
-18018 
-18019 
-18020 
-18021 
-18022 
-18023 
-18024 
-18025 
-18026 
-18027 
-18028 
-18029 
-18030 
-18031 
-18032 
-18033 
-18034 
-18035 
-18036 
-18037 
-18038 
-18039 
-18040 
-18041 
-18042 
-18043 
-18044 
-18045 
-18046 
-18047 
-18048 
-18049 
-18050 
-18051 
-18052 
-18053 
-18054 
-18055 
-18056 
-18057 
-18058 
-18059 
-18060 
-18061 
-18062 
-18063 
-18064 
-18065 
-18066 
-18067 
-18068 
-18069 
-18070 
-18071 
-18072 
-18073 
-18074 
-18075 
-18076 
-18077 
-18078 
-18079 
-18080 
-18081 
-18082 
-18083 
-18084 
-18085 
-18086 
-18087 
-18088 
-18089 
-18090 
-18091 
-18092 
-18093 
-18094 
-18095 
-18096 
-18097 
-18098 
-18099 
-18100 
-18101 
-18102 
-18103 
-18104 
-18105 
-18106 
-18107 
-18108 
-18109 
-18110 
-18111 
-18112 
-18113 
-18114 
-18115 
-18116 
-18117 
-18118 
-18119 
-18120 
-18121 
-18122 
-18123 
-18124 
-18125 
-18126 
-18127 
-18128 
-18129 
-18130 
-18131 
-18132 
-18133 
-18134 
-18135 
-18136 
-18137 
-18138 
-18139 
-18140 
-18141 
-18142 
-18143 
-18144 
-18145 
-18146 
-18147 
-18148 
-18149 
-18150 
-18151 
-18152 
-18153 
-18154 
-18155 
-18156 
-18157 
-18158 
-18159 
-18160 
-18161 
-18162 
-18163 
-18164 
-18165 
-18166 
-18167 
-18168 
-18169 
-18170 
-18171 
-18172 
-18173 
-18174 
-18175 
-18176 
-18177 
-18178 
-18179 
-18180 
-18181 
-18182 
-18183 
-18184 
-18185 
-18186 
-18187 
-18188 
-18189 
-18190 
-18191 
-18192 
-18193 
-18194 
-18195 
-18196 
-18197 
-18198 
-18199 
-18200 
-18201 
-18202 
-18203 
-18204 
-18205 
-18206 
-18207 
-18208 
-18209 
-18210 
-18211 
-18212 
-18213 
-18214 
-18215 
-18216 
-18217 
-18218 
-18219 
-18220 
-18221 
-18222 
-18223 
-18224 
-18225 
-18226 
-18227 
-18228 
-18229 
-18230 
-18231 
-18232 
-18233 
-18234 
-18235 
-18236 
-18237 
-18238 
-18239 
-18240 
-18241 
-18242 
-18243 
-18244 
-18245 
-18246 
-18247 
-18248 
-18249 
-18250 
-18251 
-18252 
-18253 
-18254 
-18255 
-18256 
-18257 
-18258 
-18259 
-18260 
-18261 
-18262 
-18263 
-18264 
-18265 
-18266 
-18267 
-18268 
-18269 
-18270 
-18271 
-18272 
-18273 
-18274 
-18275 
-18276 
-18277 
-18278 
-18279 
-18280 
-18281 
-18282 
-18283 
-18284 
-18285 
-18286 
-18287 
-18288 
-18289 
-18290 
-18291 
-18292 
-18293 
-18294 
-18295 
-18296 
-18297 
-18298 
-18299 
-18300 
-18301 
-18302 
-18303 
-18304 
-18305 
-18306 
-18307 
-18308 
-18309 
-18310 
-18311 
-18312 
-18313 
-18314 
-18315 
-18316 
-18317 
-18318 
-18319 
-18320 
-18321 
-18322 
-18323 
-18324 
-18325 
-18326 
-18327 
-18328 
-18329 
-18330 
-18331 
-18332 
-18333 
-18334 
-18335 
-18336 
-18337 
-18338 
-18339 
-18340 
-18341 
-18342 
-18343 
-18344 
-18345 
-18346 
-18347 
-18348 
-18349 
-18350 
-18351 
-18352 
-18353 
-18354 
-18355 
-18356 
-18357 
-18358 
-18359 
-18360 
-18361 
-18362 
-18363 
-18364 
-18365 
-18366 
-18367 
-18368 
-18369 
-18370 
-18371 
-18372 
-18373 
-18374 
-18375 
-18376 
-18377 
-18378 
-18379 
-18380 
-18381 
-18382 
-18383 
-18384 
-18385 
-18386 
-18387 
-18388 
-18389 
-18390 
-18391 
-18392 
-18393 
-18394 
-18395 
-18396 
-18397 
-18398 
-18399 
-18400 
-18401 
-18402 
-18403 
-18404 
-18405 
-18406 
-18407 
-18408 
-18409 
-18410 
-18411 
-18412 
-18413 
-18414 
-18415 
-18416 
-18417 
-18418 
-18419 
-18420 
-18421 
-18422 
-18423 
-18424 
-18425 
-18426 
-18427 
-18428 
-18429 
-18430 
-18431 
-18432 
-18433 
-18434 
-18435 
-18436 
-18437 
-18438 
-18439 
-18440 
-18441 
-18442 
-18443 
-18444 
-18445 
-18446 
-18447 
-18448 
-18449 
-18450 
-18451 
-18452 
-18453 
-18454 
-18455 
-18456 
-18457 
-18458 
-18459 
-18460 
-18461 
-18462 
-18463 
-18464 
-18465 
-18466 
-18467 
-18468 
-18469 
-18470 
-18471 
-18472 
-18473 
-18474 
-18475 
-18476 
-18477 
-18478 
-18479 
-18480 
-18481 
-18482 
-18483 
-18484 
-18485 
-18486 
-18487 
-18488 
-18489 
-18490 
-18491 
-18492 
-18493 
-18494 
-18495 
-18496 
-18497 
-18498 
-18499 
-18500 
-18501 
-18502 
-18503 
-18504 
-18505 
-18506 
-18507 
-18508 
-18509 
-18510 
-18511 
-18512 
-18513 
-18514 
-18515 
-18516 
-18517 
-18518 
-18519 
-18520 
-18521 
-18522 
-18523 
-18524 
-18525 
-18526 
-18527 
-18528 
-18529 
-18530 
-18531 
-18532 
-18533 
-18534 
-18535 
-18536 
-18537 
-18538 
-18539 
-18540 
-18541 
-18542 
-18543 
-18544 
-18545 
-18546 
-18547 
-18548 
-18549 
-18550 
-18551 
-18552 
-18553 
-18554 
-18555 
-18556 
-18557 
-18558 
-18559 
-18560 
-18561 
-18562 
-18563 
-18564 
-18565 
-18566 
-18567 
-18568 
-18569 
-18570 
-18571 
-18572 
-18573 
-18574 
-18575 
-18576 
-18577 
-18578 
-18579 
-18580 
-18581 
-18582 
-18583 
-18584 
-18585 
-18586 
-18587 
-18588 
-18589 
-18590 
-18591 
-18592 
-18593 
-18594 
-18595 
-18596 
-18597 
-18598 
-18599 
-18600 
-18601 
-18602 
-18603 
-18604 
-18605 
-18606 
-18607 
-18608 
-18609 
-18610 
-18611 
-18612 
-18613 
-18614 
-18615 
-18616 
-18617 
-18618 
-18619 
-18620 
-18621 
-18622 
-18623 
-18624 
-18625 
-18626 
-18627 
-18628 
-18629 
-18630 
-18631 
-18632 
-18633 
-18634 
-18635 
-18636 
-18637 
-18638 
-18639 
-18640 
-18641 
-18642 
-18643 
-18644 
-18645 
-18646 
-18647 
-18648 
-18649 
-18650 
-18651 
-18652 
-18653 
-18654 
-18655 
-18656 
-18657 
-18658 
-18659 
-18660 
-18661 
-18662 
-18663 
-18664 
-18665 
-18666 
-18667 
-18668 
-18669 
-18670 
-18671 
-18672 
-18673 
-18674 
-18675 
-18676 
-18677 
-18678 
-18679 
-18680 
-18681 
-18682 
-18683 
-18684 
-18685 
-18686 
-18687 
-18688 
-18689 
-18690 
-18691 
-18692 
-18693 
-18694 
-18695 
-18696 
-18697 
-18698 
-18699 
-18700 
-18701 
-18702 
-18703 
-18704 
-18705 
-18706 
-18707 
-18708 
-18709 
-18710 
-18711 
-18712 
-18713 
-18714 
-18715 
-18716 
-18717 
-18718 
-18719 
-18720 
-18721 
-18722 
-18723 
-18724 
-18725 
-18726 
-18727 
-18728 
-18729 
-18730 
-18731 
-18732 
-18733 
-18734 
-18735 
-18736 
-18737 
-18738 
-18739 
-18740 
-18741 
-18742 
-18743 
-18744 
-18745 
-18746 
-18747 
-18748 
-18749 
-18750 
-18751 
-18752 
-18753 
-18754 
-18755 
-18756 
-18757 
-18758 
-18759 
-18760 
-18761 
-18762 
-18763 
-18764 
-18765 
-18766 
-18767 
-18768 
-18769 
-18770 
-18771 
-18772 
-18773 
-18774 
-18775 
-18776 
-18777 
-18778 
-18779 
-18780 
-18781 
-18782 
-18783 
-18784 
-18785 
-18786 
-18787 
-18788 
-18789 
-18790 
-18791 
-18792 
-18793 
-18794 
-18795 
-18796 
-18797 
-18798 
-18799 
-18800 
-18801 
-18802 
-18803 
-18804 
-18805 
-18806 
-18807 
-18808 
-18809 
-18810 
-18811 
-18812 
-18813 
-18814 
-18815 
-18816 
-18817 
-18818 
-18819 
-18820 
-18821 
-18822 
-18823 
-18824 
-18825 
-18826 
-18827 
-18828 
-18829 
-18830 
-18831 
-18832 
-18833 
-18834 
-18835 
-18836 
-18837 
-18838 
-18839 
-18840 
-18841 
-18842 
-18843 
-18844 
-18845 
-18846 
-18847 
-18848 
-18849 
-18850 
-18851 
-18852 
-18853 
-18854 
-18855 
-18856 
-18857 
-18858 
-18859 
-18860 
-18861 
-18862 
-18863 
-18864 
-18865 
-18866 
-18867 
-18868 
-18869 
-18870 
-18871 
-18872 
-18873 
-18874 
-18875 
-18876 
-18877 
-18878 
-18879 
-18880 
-18881 
-18882 
-18883 
-18884 
-18885 
-18886 
-18887 
-18888 
-18889 
-18890 
-18891 
-18892 
-18893 
-18894 
-18895 
-18896 
-18897 
-18898 
-18899 
-18900 
-18901 
-18902 
-18903 
-18904 
-18905 
-18906 
-18907 
-18908 
-18909 
-18910 
-18911 
-18912 
-18913 
-18914 
-18915 
-18916 
-18917 
-18918 
-18919 
-18920 
-18921 
-18922 
-18923 
-18924 
-18925 
-18926 
-18927 
-18928 
-18929 
-18930 
-18931 
-18932 
-18933 
-18934 
-18935 
-18936 
-18937 
-18938 
-18939 
-18940 
-18941 
-18942 
-18943 
-18944 
-18945 
-18946 
-18947 
-18948 
-18949 
-18950 
-18951 
-18952 
-18953 
-18954 
-18955 
-18956 
-18957 
-18958 
-18959 
-18960 
-18961 
-18962 
-18963 
-18964 
-18965 
-18966 
-18967 
-18968 
-18969 
-18970 
-18971 
-18972 
-18973 
-18974 
-18975 
-18976 
-18977 
-18978 
-18979 
-18980 
-18981 
-18982 
-18983 
-18984 
-18985 
-18986 
-18987 
-18988 
-18989 
-18990 
-18991 
-18992 
-18993 
-18994 
-18995 
-18996 
-18997 
-18998 
-18999 
-19000 
-19001 
-19002 
-19003 
-19004 
-19005 
-19006 
-19007 
-19008 
-19009 
-19010 
-19011 
-19012 
-19013 
-19014 
-19015 
-19016 
-19017 
-19018 
-19019 
-19020 
-19021 
-19022 
-19023 
-19024 
-19025 
-19026 
-19027 
-19028 
-19029 
-19030 
-19031 
-19032 
-19033 
-19034 
-19035 
-19036 
-19037 
-19038 
-19039 
-19040 
-19041 
-19042 
-19043 
-19044 
-19045 
-19046 
-19047 
-19048 
-19049 
-19050 
-19051 
-19052 
-19053 
-19054 
-19055 
-19056 
-19057 
-19058 
-19059 
-19060 
-19061 
-19062 
-19063 
-19064 
-19065 
-19066 
-19067 
-19068 
-19069 
-19070 
-19071 
-19072 
-19073 
-19074 
-19075 
-19076 
-19077 
-19078 
-19079 
-19080 
-19081 
-19082 
-19083 
-19084 
-19085 
-19086 
-19087 
-19088 
-19089 
-19090 
-19091 
-19092 
-19093 
-19094 
-19095 
-19096 
-19097 
-19098 
-19099 
-19100 
-19101 
-19102 
-19103 
-19104 
-19105 
-19106 
-19107 
-19108 
-19109 
-19110 
-19111 
-19112 
-19113 
-19114 
-19115 
-19116 
-19117 
-19118 
-19119 
-19120 
-19121 
-19122 
-19123 
-19124 
-19125 
-19126 
-19127 
-19128 
-19129 
-19130 
-19131 
-19132 
-19133 
-19134 
-19135 
-19136 
-19137 
-19138 
-19139 
-19140 
-19141 
-19142 
-19143 
-19144 
-19145 
-19146 
-19147 
-19148 
-19149 
-19150 
-19151 
-19152 
-19153 
-19154 
-19155 
-19156 
-19157 
-19158 
-19159 
-19160 
-19161 
-19162 
-19163 
-19164 
-19165 
-19166 
-19167 
-19168 
-19169 
-19170 
-19171 
-19172 
-19173 
-19174 
-19175 
-19176 
-19177 
-19178 
-19179 
-19180 
-19181 
-19182 
-19183 
-19184 
-19185 
-19186 
-19187 
-19188 
-19189 
-19190 
-19191 
-19192 
-19193 
-19194 
-19195 
-19196 
-19197 
-19198 
-19199 
-19200 
-19201 
-19202 
-19203 
-19204 
-19205 
-19206 
-19207 
-19208 
-19209 
-19210 
-19211 
-19212 
-19213 
-19214 
-19215 
-19216 
-19217 
-19218 
-19219 
-19220 
-19221 
-19222 
-19223 
-19224 
-19225 
-19226 
-19227 
-19228 
-19229 
-19230 
-19231 
-19232 
-19233 
-19234 
-19235 
-19236 
-19237 
-19238 
-19239 
-19240 
-19241 
-19242 
-19243 
-19244 
-19245 
-19246 
-19247 
-19248 
-19249 
-19250 
-19251 
-19252 
-19253 
-19254 
-19255 
-19256 
-19257 
-19258 
-19259 
-19260 
-19261 
-19262 
-19263 
-19264 
-19265 
-19266 
-19267 
-19268 
-19269 
-19270 
-19271 
-19272 
-19273 
-19274 
-19275 
-19276 
-19277 
-19278 
-19279 
-19280 
-19281 
-19282 
-19283 
-19284 
-19285 
-19286 
-19287 
-19288 
-19289 
-19290 
-19291 
-19292 
-19293 
-19294 
-19295 
-19296 
-19297 
-19298 
-19299 
-19300 
-19301 
-19302 
-19303 
-19304 
-19305 
-19306 
-19307 
-19308 
-19309 
-19310 
-19311 
-19312 
-19313 
-19314 
-19315 
-19316 
-19317 
-19318 
-19319 
-19320 
-19321 
-19322 
-19323 
-19324 
-19325 
-19326 
-19327 
-19328 
-19329 
-19330 
-19331 
-19332 
-19333 
-19334 
-19335 
-19336 
-19337 
-19338 
-19339 
-19340 
-19341 
-19342 
-19343 
-19344 
-19345 
-19346 
-19347 
-19348 
-19349 
-19350 
-19351 
-19352 
-19353 
-19354 
-19355 
-19356 
-19357 
-19358 
-19359 
-19360 
-19361 
-19362 
-19363 
-19364 
-19365 
-19366 
-19367 
-19368 
-19369 
-19370 
-19371 
-19372 
-19373 
-19374 
-19375 
-19376 
-19377 
-19378 
-19379 
-19380 
-19381 
-19382 
-19383 
-19384 
-19385 
-19386 
-19387 
-19388 
-19389 
-19390 
-19391 
-19392 
-19393 
-19394 
-19395 
-19396 
-19397 
-19398 
-19399 
-19400 
-19401 
-19402 
-19403 
-19404 
-19405 
-19406 
-19407 
-19408 
-19409 
-19410 
-19411 
-19412 
-19413 
-19414 
-19415 
-19416 
-19417 
-19418 
-19419 
-19420 
-19421 
-19422 
-19423 
-19424 
-19425 
-19426 
-19427 
-19428 
-19429 
-19430 
-19431 
-19432 
-19433 
-19434 
-19435 
-19436 
-19437 
-19438 
-19439 
-19440 
-19441 
-19442 
-19443 
-19444 
-19445 
-19446 
-19447 
-19448 
-19449 
-19450 
-19451 
-19452 
-19453 
-19454 
-19455 
-19456 
-19457 
-19458 
-19459 
-19460 
-19461 
-19462 
-19463 
-19464 
-19465 
-19466 
-19467 
-19468 
-19469 
-19470 
-19471 
-19472 
-19473 
-19474 
-19475 
-19476 
-19477 
-19478 
-19479 
-19480 
-19481 
-19482 
-19483 
-19484 
-19485 
-19486 
-19487 
-19488 
-19489 
-19490 
-19491 
-19492 
-19493 
-19494 
-19495 
-19496 
-19497 
-19498 
-19499 
-19500 
-19501 
-19502 
-19503 
-19504 
-19505 
-19506 
-19507 
-19508 
-19509 
-19510 
-19511 
-19512 
-19513 
-19514 
-19515 
-19516 
-19517 
-19518 
-19519 
-19520 
-19521 
-19522 
-19523 
-19524 
-19525 
-19526 
-19527 
-19528 
-19529 
-19530 
-19531 
-19532 
-19533 
-19534 
-19535 
-19536 
-19537 
-19538 
-19539 
-19540 
-19541 
-19542 
-19543 
-19544 
-19545 
-19546 
-19547 
-19548 
-19549 
-19550 
-19551 
-19552 
-19553 
-19554 
-19555 
-19556 
-19557 
-19558 
-19559 
-19560 
-19561 
-19562 
-19563 
-19564 
-19565 
-19566 
-19567 
-19568 
-19569 
-19570 
-19571 
-19572 
-19573 
-19574 
-19575 
-19576 
-19577 
-19578 
-19579 
-19580 
-19581 
-19582 
-19583 
-19584 
-19585 
-19586 
-19587 
-19588 
-19589 
-19590 
-19591 
-19592 
-19593 
-19594 
-19595 
-19596 
-19597 
-19598 
-19599 
-19600 
-19601 
-19602 
-19603 
-19604 
-19605 
-19606 
-19607 
-19608 
-19609 
-19610 
-19611 
-19612 
-19613 
-19614 
-19615 
-19616 
-19617 
-19618 
-19619 
-19620 
-19621 
-19622 
-19623 
-19624 
-19625 
-19626 
-19627 
-19628 
-19629 
-19630 
-19631 
-19632 
-19633 
-19634 
-19635 
-19636 
-19637 
-19638 
-19639 
-19640 
-19641 
-19642 
-19643 
-19644 
-19645 
-19646 
-19647 
-19648 
-19649 
-19650 
-19651 
-19652 
-19653 
-19654 
-19655 
-19656 
-19657 
-19658 
-19659 
-19660 
-19661 
-19662 
-19663 
-19664 
-19665 
-19666 
-19667 
-19668 
-19669 
-19670 
-19671 
-19672 
-19673 
-19674 
-19675 
-19676 
-19677 
-19678 
-19679 
-19680 
-19681 
-19682 
-19683 
-19684 
-19685 
-19686 
-19687 
-19688 
-19689 
-19690 
-19691 
-19692 
-19693 
-19694 
-19695 
-19696 
-19697 
-19698 
-19699 
-19700 
-19701 
-19702 
-19703 
-19704 
-19705 
-19706 
-19707 
-19708 
-19709 
-19710 
-19711 
-19712 
-19713 
-19714 
-19715 
-19716 
-19717 
-19718 
-19719 
-19720 
-19721 
-19722 
-19723 
-19724 
-19725 
-19726 
-19727 
-19728 
-19729 
-19730 
-19731 
-19732 
-19733 
-19734 
-19735 
-19736 
-19737 
-19738 
-19739 
-19740 
-19741 
-19742 
-19743 
-19744 
-19745 
-19746 
-19747 
-19748 
-19749 
-19750 
-19751 
-19752 
-19753 
-19754 
-19755 
-19756 
-19757 
-19758 
-19759 
-19760 
-19761 
-19762 
-19763 
-19764 
-19765 
-19766 
-19767 
-19768 
-19769 
-19770 
-19771 
-19772 
-19773 
-19774 
-19775 
-19776 
-19777 
-19778 
-19779 
-19780 
-19781 
-19782 
-19783 
-19784 
-19785 
-19786 
-19787 
-19788 
-19789 
-19790 
-19791 
-19792 
-19793 
-19794 
-19795 
-19796 
-19797 
-19798 
-19799 
-19800 
-19801 
-19802 
-19803 
-19804 
-19805 
-19806 
-19807 
-19808 
-19809 
-19810 
-19811 
-19812 
-19813 
-19814 
-19815 
-19816 
-19817 
-19818 
-19819 
-19820 
-19821 
-19822 
-19823 
-19824 
-19825 
-19826 
-19827 
-19828 
-19829 
-19830 
-19831 
-19832 
-19833 
-19834 
-19835 
-19836 
-19837 
-19838 
-19839 
-19840 
-19841 
-19842 
-19843 
-19844 
-19845 
-19846 
-19847 
-19848 
-19849 
-19850 
-19851 
-19852 
-19853 
-19854 
-19855 
-19856 
-19857 
-19858 
-19859 
-19860 
-19861 
-19862 
-19863 
-19864 
-19865 
-19866 
-19867 
-19868 
-19869 
-19870 
-19871 
-19872 
-19873 
-19874 
-19875 
-19876 
-19877 
-19878 
-19879 
-19880 
-19881 
-19882 
-19883 
-19884 
-19885 
-19886 
-19887 
-19888 
-19889 
-19890 
-19891 
-19892 
-19893 
-19894 
-19895 
-19896 
-19897 
-19898 
-19899 
-19900 
-19901 
-19902 
-19903 
-19904 
-19905 
-19906 
-19907 
-19908 
-19909 
-19910 
-19911 
-19912 
-19913 
-19914 
-19915 
-19916 
-19917 
-19918 
-19919 
-19920 
-19921 
-19922 
-19923 
-19924 
-19925 
-19926 
-19927 
-19928 
-19929 
-19930 
-19931 
-19932 
-19933 
-19934 
-19935 
-19936 
-19937 
-19938 
-19939 
-19940 
-19941 
-19942 
-19943 
-19944 
-19945 
-19946 
-19947 
-19948 
-19949 
-19950 
-19951 
-19952 
-19953 
-19954 
-19955 
-19956 
-19957 
-19958 
-19959 
-19960 
-19961 
-19962 
-19963 
-19964 
-19965 
-19966 
-19967 
-19968 
-19969 
-19970 
-19971 
-19972 
-19973 
-19974 
-19975 
-19976 
-19977 
-19978 
-19979 
-19980 
-19981 
-19982 
-19983 
-19984 
-19985 
-19986 
-19987 
-19988 
-19989 
-19990 
-19991 
-19992 
-19993 
-19994 
-19995 
-19996 
-19997 
-19998 
-19999 
-20000 
-20001 
-20002 
-20003 
-20004 
-20005 
-20006 
-20007 
-20008 
-20009 
-20010 
-20011 
-20012 
-20013 
-20014 
-20015 
-20016 
-20017 
-20018 
-20019 
-20020 
-20021 
-20022 
-20023 
-20024 
-20025 
-20026 
-20027 
-20028 
-20029 
-20030 
-20031 
-20032 
-20033 
-20034 
-20035 
-20036 
-20037 
-20038 
-20039 
-20040 
-20041 
-20042 
-20043 
-20044 
-20045 
-20046 
-20047 
-20048 
-20049 
-20050 
-20051 
-20052 
-20053 
-20054 
-20055 
-20056 
-20057 
-20058 
-20059 
-20060 
-20061 
-20062 
-20063 
-20064 
-20065 
-20066 
-20067 
-20068 
-20069 
-20070 
-20071 
-20072 
-20073 
-20074 
-20075 
-20076 
-20077 
-20078 
-20079 
-20080 
-20081 
-20082 
-20083 
-20084 
-20085 
-20086 
-20087 
-20088 
-20089 
-20090 
-20091 
-20092 
-20093 
-20094 
-20095 
-20096 
-20097 
-20098 
-20099 
-20100 
-20101 
-20102 
-20103 
-20104 
-20105 
-20106 
-20107 
-20108 
-20109 
-20110 
-20111 
-20112 
-20113 
-20114 
-20115 
-20116 
-20117 
-20118 
-20119 
-20120 
-20121 
-20122 
-20123 
-20124 
-20125 
-20126 
-20127 
-20128 
-20129 
-20130 
-20131 
-20132 
-20133 
-20134 
-20135 
-20136 
-20137 
-20138 
-20139 
-20140 
-20141 
-20142 
-20143 
-20144 
-20145 
-20146 
-20147 
-20148 
-20149 
-20150 
-20151 
-20152 
-20153 
-20154 
-20155 
-20156 
-20157 
-20158 
-20159 
-20160 
-20161 
-20162 
-20163 
-20164 
-20165 
-20166 
-20167 
-20168 
-20169 
-20170 
-20171 
-20172 
-20173 
-20174 
-20175 
-20176 
-20177 
-20178 
-20179 
-20180 
-20181 
-20182 
-20183 
-20184 
-20185 
-20186 
-20187 
-20188 
-20189 
-20190 
-20191 
-20192 
-20193 
-20194 
-20195 
-20196 
-20197 
-20198 
-20199 
-20200 
-20201 
-20202 
-20203 
-20204 
-20205 
-20206 
-20207 
-20208 
-20209 
-20210 
-20211 
-20212 
-20213 
-20214 
-20215 
-20216 
-20217 
-20218 
-20219 
-20220 
-20221 
-20222 
-20223 
-20224 
-20225 
-20226 
-20227 
-20228 
-20229 
-20230 
-20231 
-20232 
-20233 
-20234 
-20235 
-20236 
-20237 
-20238 
-20239 
-20240 
-20241 
-20242 
-20243 
-20244 
-20245 
-20246 
-20247 
-20248 
-20249 
-20250 
-20251 
-20252 
-20253 
-20254 
-20255 
-20256 
-20257 
-20258 
-20259 
-20260 
-20261 
-20262 
-20263 
-20264 
-20265 
-20266 
-20267 
-20268 
-20269 
-20270 
-20271 
-20272 
-20273 
-20274 
-20275 
-20276 
-20277 
-20278 
-20279 
-20280 
-20281 
-20282 
-20283 
-20284 
-20285 
-20286 
-20287 
-20288 
-20289 
-20290 
-20291 
-20292 
-20293 
-20294 
-20295 
-20296 
-20297 
-20298 
-20299 
-20300 
-20301 
-20302 
-20303 
-20304 
-20305 
-20306 
-20307 
-20308 
-20309 
-20310 
-20311 
-20312 
-20313 
-20314 
-20315 
-20316 
-20317 
-20318 
-20319 
-20320 
-20321 
-20322 
-20323 
-20324 
-20325 
-20326 
-20327 
-20328 
-20329 
-20330 
-20331 
-20332 
-20333 
-20334 
-20335 
-20336 
-20337 
-20338 
-20339 
-20340 
-20341 
-20342 
-20343 
-20344 
-20345 
-20346 
-20347 
-20348 
-20349 
-20350 
-20351 
-20352 
-20353 
-20354 
-20355 
-20356 
-20357 
-20358 
-20359 
-20360 
-20361 
-20362 
-20363 
-20364 
-20365 
-20366 
-20367 
-20368 
-20369 
-20370 
-20371 
-20372 
-20373 
-20374 
-20375 
-20376 
-20377 
-20378 
-20379 
-20380 
-20381 
-20382 
-20383 
-20384 
-20385 
-20386 
-20387 
-20388 
-20389 
-20390 
-20391 
-20392 
-20393 
-20394 
-20395 
-20396 
-20397 
-20398 
-20399 
-20400 
-20401 
-20402 
-20403 
-20404 
-20405 
-20406 
-20407 
-20408 
-20409 
-20410 
-20411 
-20412 
-20413 
-20414 
-20415 
-20416 
-20417 
-20418 
-20419 
-20420 
-20421 
-20422 
-20423 
-20424 
-20425 
-20426 
-20427 
-20428 
-20429 
-20430 
-20431 
-20432 
-20433 
-20434 
-20435 
-20436 
-20437 
-20438 
-20439 
-20440 
-20441 
-20442 
-20443 
-20444 
-20445 
-20446 
-20447 
-20448 
-20449 
-20450 
-20451 
-20452 
-20453 
-20454 
-20455 
-20456 
-20457 
-20458 
-20459 
-20460 
-20461 
-20462 
-20463 
-20464 
-20465 
-20466 
-20467 
-20468 
-20469 
-20470 
-20471 
-20472 
-20473 
-20474 
-20475 
-20476 
-20477 
-20478 
-20479 
-20480 
-20481 
-20482 
-20483 
-20484 
-20485 
-20486 
-20487 
-20488 
-20489 
-20490 
-20491 
-20492 
-20493 
-20494 
-20495 
-20496 
-20497 
-20498 
-20499 
-20500 
-20501 
-20502 
-20503 
-20504 
-20505 
-20506 
-20507 
-20508 
-20509 
-20510 
-20511 
-20512 
-20513 
-20514 
-20515 
-20516 
-20517 
-20518 
-20519 
-20520 
-20521 
-20522 
-20523 
-20524 
-20525 
-20526 
-20527 
-20528 
-20529 
-20530 
-20531 
-20532 
-20533 
-20534 
-20535 
-20536 
-20537 
-20538 
-20539 
-20540 
-20541 
-20542 
-20543 
-20544 
-20545 
-20546 
-20547 
-20548 
-20549 
-20550 
-20551 
-20552 
-20553 
-20554 
-20555 
-20556 
-20557 
-20558 
-20559 
-20560 
-20561 
-20562 
-20563 
-20564 
-20565 
-20566 
-20567 
-20568 
-20569 
-20570 
-20571 
-20572 
-20573 
-20574 
-20575 
-20576 
-20577 
-20578 
-20579 
-20580 
-20581 
-20582 
-20583 
-20584 
-20585 
-20586 
-20587 
-20588 
-20589 
-20590 
-20591 
-20592 
-20593 
-20594 
-20595 
-20596 
-20597 
-20598 
-20599 
-20600 
-20601 
-20602 
-)
-
-// ************************************************************************* //
diff --git a/tutorials/multiphase/interFoam/les/nozzleFlow2D/system/fvSchemes b/tutorials/multiphase/interFoam/les/nozzleFlow2D/system/fvSchemes
index 2a273c5e51cb5bcdaf8b079c33459db6568e75a2..153a1ea73a20a1f11684eee3085622aa9375be87 100644
--- a/tutorials/multiphase/interFoam/les/nozzleFlow2D/system/fvSchemes
+++ b/tutorials/multiphase/interFoam/les/nozzleFlow2D/system/fvSchemes
@@ -56,9 +56,9 @@ snGradSchemes
 fluxRequired
 {
     default         no;
-    pd              ;
-    pcorr           ;
-    alpha1          ;
+    p;
+    pcorr;
+    alpha;
 }
 
 
diff --git a/tutorials/multiphase/interFoam/les/nozzleFlow2D/system/fvSolution b/tutorials/multiphase/interFoam/les/nozzleFlow2D/system/fvSolution
index 660482ad377d9745a5a8fd4b6fc67486640c3726..4642da139683a71541d7b045c40507ee0b02627f 100644
--- a/tutorials/multiphase/interFoam/les/nozzleFlow2D/system/fvSolution
+++ b/tutorials/multiphase/interFoam/les/nozzleFlow2D/system/fvSolution
@@ -40,7 +40,7 @@ solvers
         maxIter         100;
     }
 
-    pd
+    p
     {
         solver          GAMG;
         tolerance       1e-07;
@@ -55,7 +55,7 @@ solvers
         mergeLevels     1;
     }
 
-    pdFinal
+    pFinal
     {
         solver          PCG;
         preconditioner
diff --git a/tutorials/multiphase/interFoam/ras/Allclean b/tutorials/multiphase/interFoam/ras/Allclean
index 62275784712aebe76b90f3356879dce098912e1e..6ad97e1a0bd7ffd8f0073bb9a1f9f9d3391d7c6b 100755
--- a/tutorials/multiphase/interFoam/ras/Allclean
+++ b/tutorials/multiphase/interFoam/ras/Allclean
@@ -12,7 +12,7 @@ do
 
     if [ "$case" = "damBreak" ]
     then
-        cp $case/0/gamma.org $case/0/gamma
+        cp $case/0/alpha1.org $case/0/alpha1
     fi
 done
 
diff --git a/tutorials/multiphase/interFoam/ras/Allrun b/tutorials/multiphase/interFoam/ras/Allrun
index c01b35fcbd4aa6d8576f8c96ef86fd924006b8dc..e222cf7e15d05f8a2f8d11bb3e86ba15491bffd2 100755
--- a/tutorials/multiphase/interFoam/ras/Allrun
+++ b/tutorials/multiphase/interFoam/ras/Allrun
@@ -32,7 +32,7 @@ cloneCase damBreak damBreakFine
 cd damBreakFine
     # Modify case
     setDamBreakFine
-    cp ../damBreak/0/gamma.org 0/gamma
+    cp ../damBreak/0/alpha1.org 0/alpha1
     # And execute
     runApplication blockMesh
     runApplication setFields
diff --git a/tutorials/multiphase/interFoam/ras/damBreak/0/U b/tutorials/multiphase/interFoam/ras/damBreak/0/U
index d4cc4c65a67476de08b56cbb2efd682e88a46db6..7ea3a0c32328d93fd01ba3c580c7d73b54473d22 100644
--- a/tutorials/multiphase/interFoam/ras/damBreak/0/U
+++ b/tutorials/multiphase/interFoam/ras/damBreak/0/U
@@ -1,8 +1,8 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.5                                   |
-|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
 FoamFile
@@ -10,6 +10,7 @@ FoamFile
     version     2.0;
     format      ascii;
     class       volVectorField;
+    location    "0";
     object      U;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -38,7 +39,6 @@ boundaryField
     atmosphere
     {
         type            pressureInletOutletVelocity;
-        phi             phi;
         value           uniform (0 0 0);
     }
     defaultFaces
@@ -47,4 +47,5 @@ boundaryField
     }
 }
 
+
 // ************************************************************************* //
diff --git a/tutorials/multiphase/interFoam/ras/damBreak/0/gamma.org b/tutorials/multiphase/interFoam/ras/damBreak/0/alpha1
similarity index 98%
rename from tutorials/multiphase/interFoam/ras/damBreak/0/gamma.org
rename to tutorials/multiphase/interFoam/ras/damBreak/0/alpha1
index 742f2974431e8ab23664341603ef199480f49c68..36d4d31dcdd7caa199ad6f5be76cff952156cb96 100644
--- a/tutorials/multiphase/interFoam/ras/damBreak/0/gamma.org
+++ b/tutorials/multiphase/interFoam/ras/damBreak/0/alpha1
@@ -10,7 +10,7 @@ FoamFile
     version     2.0;
     format      ascii;
     class       volScalarField;
-    object      gamma;
+    object      alpha1;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
diff --git a/tutorials/multiphase/interFoam/ras/damBreak/0/gamma b/tutorials/multiphase/interFoam/ras/damBreak/0/alpha1.org
similarity index 98%
rename from tutorials/multiphase/interFoam/ras/damBreak/0/gamma
rename to tutorials/multiphase/interFoam/ras/damBreak/0/alpha1.org
index 742f2974431e8ab23664341603ef199480f49c68..36d4d31dcdd7caa199ad6f5be76cff952156cb96 100644
--- a/tutorials/multiphase/interFoam/ras/damBreak/0/gamma
+++ b/tutorials/multiphase/interFoam/ras/damBreak/0/alpha1.org
@@ -10,7 +10,7 @@ FoamFile
     version     2.0;
     format      ascii;
     class       volScalarField;
-    object      gamma;
+    object      alpha1;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
diff --git a/tutorials/multiphase/interFoam/ras/damBreak/0/epsilon b/tutorials/multiphase/interFoam/ras/damBreak/0/epsilon
index 92ed8a7d75e228fe370ae2c54f67161b484f4973..b49a80428493c25ee922fb2501e11cd749b3ddf7 100644
--- a/tutorials/multiphase/interFoam/ras/damBreak/0/epsilon
+++ b/tutorials/multiphase/interFoam/ras/damBreak/0/epsilon
@@ -15,7 +15,7 @@ FoamFile
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-dimensions      [ 0 2 -3 0 0 0 0 ];
+dimensions      [0 2 -3 0 0 0 0];
 
 internalField   uniform 0.1;
 
@@ -24,28 +24,24 @@ boundaryField
     leftWall
     {
         type            epsilonWallFunction;
-        value           uniform 0;
+        value           uniform 0.1;
     }
-
     rightWall
     {
         type            epsilonWallFunction;
-        value           uniform 0;
+        value           uniform 0.1;
     }
-
     lowerWall
     {
         type            epsilonWallFunction;
-        value           uniform 0;
+        value           uniform 0.1;
     }
-
     atmosphere
     {
         type            inletOutlet;
         inletValue      uniform 0.1;
         value           uniform 0.1;
     }
-
     defaultFaces
     {
         type            empty;
diff --git a/tutorials/multiphase/interFoam/ras/damBreak/0/k b/tutorials/multiphase/interFoam/ras/damBreak/0/k
index c8071de03ba06ce1292fe0b5ebb3e018c88efc6d..897224d725f3bd8e0f02800a735dae854a9b03e9 100644
--- a/tutorials/multiphase/interFoam/ras/damBreak/0/k
+++ b/tutorials/multiphase/interFoam/ras/damBreak/0/k
@@ -15,7 +15,7 @@ FoamFile
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-dimensions      [ 0 2 -2 0 0 0 0 ];
+dimensions      [0 2 -2 0 0 0 0];
 
 internalField   uniform 0.1;
 
@@ -24,28 +24,24 @@ boundaryField
     leftWall
     {
         type            kQRWallFunction;
-        value           uniform 0;
+        value           uniform 0.1;
     }
-
     rightWall
     {
         type            kQRWallFunction;
-        value           uniform 0;
+        value           uniform 0.1;
     }
-
     lowerWall
     {
         type            kQRWallFunction;
-        value           uniform 0;
+        value           uniform 0.1;
     }
-
     atmosphere
     {
         type            inletOutlet;
         inletValue      uniform 0.1;
         value           uniform 0.1;
     }
-
     defaultFaces
     {
         type            empty;
diff --git a/tutorials/multiphase/multiphaseInterFoam/laminar/damBreak4phaseFine/0/pd b/tutorials/multiphase/interFoam/ras/damBreak/0/p
similarity index 98%
rename from tutorials/multiphase/multiphaseInterFoam/laminar/damBreak4phaseFine/0/pd
rename to tutorials/multiphase/interFoam/ras/damBreak/0/p
index 520a3e9b0b291a7913c871b614d8fe9845e8ab08..15ab9897a899264f52a2cfb792b0fc6c39324dc4 100644
--- a/tutorials/multiphase/multiphaseInterFoam/laminar/damBreak4phaseFine/0/pd
+++ b/tutorials/multiphase/interFoam/ras/damBreak/0/p
@@ -10,7 +10,7 @@ FoamFile
     version     2.0;
     format      ascii;
     class       volScalarField;
-    object      pd;
+    object      p;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
diff --git a/tutorials/multiphase/interFoam/ras/damBreak/system/fvSchemes b/tutorials/multiphase/interFoam/ras/damBreak/system/fvSchemes
index 499ad01e5c625d5e9cb16c5f3693f73f17a84206..81f8e2c48bd5283e46a085104826d809ae7169be 100644
--- a/tutorials/multiphase/interFoam/ras/damBreak/system/fvSchemes
+++ b/tutorials/multiphase/interFoam/ras/damBreak/system/fvSchemes
@@ -28,8 +28,8 @@ gradSchemes
 divSchemes
 {
     div(rho*phi,U)  Gauss linear;
-    div(phi,gamma)  Gauss vanLeer;
-    div(phirb,gamma) Gauss interfaceCompression;
+    div(phi,alpha)  Gauss vanLeer;
+    div(phirb,alpha) Gauss interfaceCompression;
     div(phi,k)      Gauss upwind;
     div(phi,epsilon) Gauss upwind;
     div(phi,R)      Gauss upwind;
@@ -57,9 +57,9 @@ snGradSchemes
 fluxRequired
 {
     default         no;
-    pd              ;
-    pcorr           ;
-    gamma           ;
+    p;
+    pcorr;
+    alpha;
 }
 
 
diff --git a/tutorials/multiphase/interFoam/ras/damBreak/system/fvSolution b/tutorials/multiphase/interFoam/ras/damBreak/system/fvSolution
index ea7bd97c27c3f83f3dd9ab1b2c0da77625af3bd2..6af3dad37e44b40c8d5a8f4d48d2b5f1207423ec 100644
--- a/tutorials/multiphase/interFoam/ras/damBreak/system/fvSolution
+++ b/tutorials/multiphase/interFoam/ras/damBreak/system/fvSolution
@@ -25,7 +25,7 @@ solvers
         relTol          0;
     }
 
-    pd
+    p
     {
         solver          PCG;
         preconditioner  DIC;
@@ -33,7 +33,7 @@ solvers
         relTol          0.05;
     }
 
-    pdFinal
+    pFinal
     {
         solver          PCG;
         preconditioner  DIC;
@@ -87,9 +87,9 @@ PISO
     momentumPredictor no;
     nCorrectors     3;
     nNonOrthogonalCorrectors 0;
-    nGammaCorr      1;
-    nGammaSubCycles 4;
-    cGamma          2;
+    nAlphaCorr      1;
+    nAlphaSubCycles 4;
+    cAlpha          2;
 }
 
 
diff --git a/tutorials/multiphase/multiphaseInterFoam/laminar/damBreak4phase/0/pd b/tutorials/multiphase/multiphaseInterFoam/laminar/damBreak4phase/0/p
similarity index 98%
rename from tutorials/multiphase/multiphaseInterFoam/laminar/damBreak4phase/0/pd
rename to tutorials/multiphase/multiphaseInterFoam/laminar/damBreak4phase/0/p
index 520a3e9b0b291a7913c871b614d8fe9845e8ab08..15ab9897a899264f52a2cfb792b0fc6c39324dc4 100644
--- a/tutorials/multiphase/multiphaseInterFoam/laminar/damBreak4phase/0/pd
+++ b/tutorials/multiphase/multiphaseInterFoam/laminar/damBreak4phase/0/p
@@ -10,7 +10,7 @@ FoamFile
     version     2.0;
     format      ascii;
     class       volScalarField;
-    object      pd;
+    object      p;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
diff --git a/tutorials/multiphase/multiphaseInterFoam/laminar/damBreak4phase/system/fvSolution b/tutorials/multiphase/multiphaseInterFoam/laminar/damBreak4phase/system/fvSolution
index 8c303f95402ad22e64766b3e454753746a7c68cf..47957b22b37e777ec21a079ffcb3b6dc1399d7a0 100644
--- a/tutorials/multiphase/multiphaseInterFoam/laminar/damBreak4phase/system/fvSolution
+++ b/tutorials/multiphase/multiphaseInterFoam/laminar/damBreak4phase/system/fvSolution
@@ -40,7 +40,7 @@ solvers
         maxIter         100;
     }
 
-    pd
+    p
     {
         solver          GAMG;
         tolerance       1e-07;
@@ -55,7 +55,7 @@ solvers
         mergeLevels     1;
     }
 
-    pdFinal
+    pFinal
     {
         solver          PCG;
         preconditioner
diff --git a/tutorials/multiphase/interFoam/laminar/damBreak/0/pd b/tutorials/multiphase/multiphaseInterFoam/laminar/damBreak4phaseFine/0/p
similarity index 98%
rename from tutorials/multiphase/interFoam/laminar/damBreak/0/pd
rename to tutorials/multiphase/multiphaseInterFoam/laminar/damBreak4phaseFine/0/p
index 520a3e9b0b291a7913c871b614d8fe9845e8ab08..15ab9897a899264f52a2cfb792b0fc6c39324dc4 100644
--- a/tutorials/multiphase/interFoam/laminar/damBreak/0/pd
+++ b/tutorials/multiphase/multiphaseInterFoam/laminar/damBreak4phaseFine/0/p
@@ -10,7 +10,7 @@ FoamFile
     version     2.0;
     format      ascii;
     class       volScalarField;
-    object      pd;
+    object      p;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
diff --git a/tutorials/multiphase/multiphaseInterFoam/laminar/damBreak4phaseFine/system/fvSolution b/tutorials/multiphase/multiphaseInterFoam/laminar/damBreak4phaseFine/system/fvSolution
index 8c303f95402ad22e64766b3e454753746a7c68cf..47957b22b37e777ec21a079ffcb3b6dc1399d7a0 100644
--- a/tutorials/multiphase/multiphaseInterFoam/laminar/damBreak4phaseFine/system/fvSolution
+++ b/tutorials/multiphase/multiphaseInterFoam/laminar/damBreak4phaseFine/system/fvSolution
@@ -40,7 +40,7 @@ solvers
         maxIter         100;
     }
 
-    pd
+    p
     {
         solver          GAMG;
         tolerance       1e-07;
@@ -55,7 +55,7 @@ solvers
         mergeLevels     1;
     }
 
-    pdFinal
+    pFinal
     {
         solver          PCG;
         preconditioner
diff --git a/wmake/rules/General/cint b/wmake/rules/General/cint
deleted file mode 100644
index f09d622977cbfe33bf69eaeb2cb118442fbc92d2..0000000000000000000000000000000000000000
--- a/wmake/rules/General/cint
+++ /dev/null
@@ -1,12 +0,0 @@
-.SUFFIXES: .ldf
-
-ifeq ($(origin WM_SCHEDULER), undefined)
-    EVAL_LDF = eval
-else
-    EVAL_LDF = $(WM_SCHEDULER)
-endif
-
-ldftoo = $(EVAL_LDF) m4 $$SOURCE \> $*.H \; cint -n$*.C -N$(*F) -p -c-1 -A -I${CINTSYSDIR}/inc -I${WM_PROJECT_DIR}/src/OpenFOAM/lnInclude -D__MAKECINT__ -DG__MAKECINT  -DG__SHAREDLIB -DG__OSFDLL -DG__ANSI -DG__ERRORCALLBACK -DG__SIGNEDCHAR -DG__NEWSTDHEADER -DG__CINT_VER6 -DG__NATIVELONGLONG -DG__P2FCAST -DG__STD_EXCEPTION -DG__HAVE_CONFIG -DG__NOMAKEINFO -DDP -D__restrict__= -Y0 -DNoInline $*.H \; $(CC) $(c++FLAGS) -c $*.C -o $@
-
-.ldf.dep:
-	$(MAKE_DEP)
diff --git a/wmake/rules/General/general b/wmake/rules/General/general
index 2f2a67cb568190ebce735a24924acc639dbf0505..419d9b1d38244cee1ab5fba753e639089474df7f 100644
--- a/wmake/rules/General/general
+++ b/wmake/rules/General/general
@@ -3,7 +3,7 @@ ARFLAGS    = cr
 RANLIB     = ranlib
 LD         = ld
 
-GFLAGS     = -D$(WM_ARCH) -D$(WM_PRECISION_OPTION)
-GINC       = 
+GFLAGS     = -D$(WM_ARCH) -DWM_$(WM_PRECISION_OPTION)
+GINC       =
 GLIBS      = -lm
-GLIB_LIBS  = 
+GLIB_LIBS  =
diff --git a/wmake/rules/SiCortex64Gcc/general b/wmake/rules/SiCortex64Gcc/general
index 11b48acc3fc0c67c177b464c70de18248881c12d..d70a77cdb037212e12f9b54cd0c80005dcae4ccb 100644
--- a/wmake/rules/SiCortex64Gcc/general
+++ b/wmake/rules/SiCortex64Gcc/general
@@ -8,4 +8,3 @@ include $(GENERAL_RULES)/standard
 include $(RULES)/X
 include $(RULES)/c
 include $(RULES)/c++
-include $(GENERAL_RULES)/cint
diff --git a/wmake/rules/SunOS64Gcc/general b/wmake/rules/SunOS64Gcc/general
index 70ee588d82de5943cd89d28acc2703bf3476940b..f9b563219850dada6751ec3cf50b17291f212d0f 100644
--- a/wmake/rules/SunOS64Gcc/general
+++ b/wmake/rules/SunOS64Gcc/general
@@ -1,11 +1,10 @@
 CPP        = /lib/cpp $(GFLAGS)
 LD         = ld -64
 
-PROJECT_LIBS = -l$(WM_PROJECT) -liberty -lnsl -lsocket -L$(FOAM_LIBBIN)/dummy -lPstream 
+PROJECT_LIBS = -l$(WM_PROJECT) -liberty -lnsl -lsocket -L$(FOAM_LIBBIN)/dummy -lPstream
 
 include $(GENERAL_RULES)/standard
 
 include $(RULES)/X
 include $(RULES)/c
 include $(RULES)/c++
-include $(GENERAL_RULES)/cint
diff --git a/wmake/rules/linux64Gcc/c++ b/wmake/rules/linux64Gcc/c++
index 36b5c29b20b6297dcc3d42dcc5b46342cd34a116..9d074e2715ef9cacfdc2f29e0a6c06bf13ed2413 100644
--- a/wmake/rules/linux64Gcc/c++
+++ b/wmake/rules/linux64Gcc/c++
@@ -1,6 +1,6 @@
 .SUFFIXES: .C .cxx .cc .cpp
 
-c++WARN     = -Wall -Wno-strict-aliasing -Wextra -Wno-unused-parameter -Wold-style-cast
+c++WARN     = -Wall -Wno-strict-aliasing -Wextra -Wno-unused-parameter -Wold-style-cast -Wnon-virtual-dtor
 
 CC          = g++ -m64
 
diff --git a/wmake/rules/linux64Gcc/c++Opt b/wmake/rules/linux64Gcc/c++Opt
index 8ac07d2124e4b49b9bda82d3ea0c4380b9c6b8e6..3446f7f58cbeb23e1753e982a9734bbf1a180b43 100644
--- a/wmake/rules/linux64Gcc/c++Opt
+++ b/wmake/rules/linux64Gcc/c++Opt
@@ -1,4 +1,4 @@
-c++DBUG     = 
+c++DBUG     =
 c++OPT      = -O3
 #c++OPT      = -march=nocona -O3
 # -ftree-vectorize -ftree-vectorizer-verbose=3
diff --git a/wmake/rules/linux64Gcc/general b/wmake/rules/linux64Gcc/general
index 3c2e4db2ee31ca84bfb6adcd135f9b3651195c0a..10237bd1b67211d2d008b2e9fe5c52248e359ab6 100644
--- a/wmake/rules/linux64Gcc/general
+++ b/wmake/rules/linux64Gcc/general
@@ -8,4 +8,3 @@ include $(GENERAL_RULES)/standard
 include $(RULES)/X
 include $(RULES)/c
 include $(RULES)/c++
-include $(GENERAL_RULES)/cint
diff --git a/wmake/rules/linux64Gcc42/general b/wmake/rules/linux64Gcc42/general
index 11b48acc3fc0c67c177b464c70de18248881c12d..d70a77cdb037212e12f9b54cd0c80005dcae4ccb 100644
--- a/wmake/rules/linux64Gcc42/general
+++ b/wmake/rules/linux64Gcc42/general
@@ -8,4 +8,3 @@ include $(GENERAL_RULES)/standard
 include $(RULES)/X
 include $(RULES)/c
 include $(RULES)/c++
-include $(GENERAL_RULES)/cint
diff --git a/wmake/rules/linux64Gcc43/general b/wmake/rules/linux64Gcc43/general
index 3c2e4db2ee31ca84bfb6adcd135f9b3651195c0a..10237bd1b67211d2d008b2e9fe5c52248e359ab6 100644
--- a/wmake/rules/linux64Gcc43/general
+++ b/wmake/rules/linux64Gcc43/general
@@ -8,4 +8,3 @@ include $(GENERAL_RULES)/standard
 include $(RULES)/X
 include $(RULES)/c
 include $(RULES)/c++
-include $(GENERAL_RULES)/cint
diff --git a/wmake/rules/linuxGcc/general b/wmake/rules/linuxGcc/general
index d009001a6e3a18369eb608cede9eed6bdc600606..02ad6973ff3f0dd9498c091f427642d23c867508 100644
--- a/wmake/rules/linuxGcc/general
+++ b/wmake/rules/linuxGcc/general
@@ -8,4 +8,3 @@ include $(GENERAL_RULES)/standard
 include $(RULES)/X
 include $(RULES)/c
 include $(RULES)/c++
-include $(GENERAL_RULES)/cint
diff --git a/wmake/rules/linuxGcc43/general b/wmake/rules/linuxGcc43/general
index d009001a6e3a18369eb608cede9eed6bdc600606..02ad6973ff3f0dd9498c091f427642d23c867508 100644
--- a/wmake/rules/linuxGcc43/general
+++ b/wmake/rules/linuxGcc43/general
@@ -8,4 +8,3 @@ include $(GENERAL_RULES)/standard
 include $(RULES)/X
 include $(RULES)/c
 include $(RULES)/c++
-include $(GENERAL_RULES)/cint
diff --git a/wmake/rules/linuxPPC64Gcc/general b/wmake/rules/linuxPPC64Gcc/general
index 2626ab65d12cbba1680848fdc93cfb2b05f3920b..76d507634a936cc0b01185048dfdd9bbb7da4ec6 100644
--- a/wmake/rules/linuxPPC64Gcc/general
+++ b/wmake/rules/linuxPPC64Gcc/general
@@ -8,4 +8,3 @@ include $(GENERAL_RULES)/standard
 include $(RULES)/X
 include $(RULES)/c
 include $(RULES)/c++
-include $(GENERAL_RULES)/cint