diff --git a/applications/solvers/compressible/sonicDyMFoam/createFields.H b/applications/solvers/compressible/sonicDyMFoam/createFields.H
index 93dac20e076c44a31a4848b83987429bafa87b1d..4344a4f5e49451f647a322eb45b08bd07bf062b5 100644
--- a/applications/solvers/compressible/sonicDyMFoam/createFields.H
+++ b/applications/solvers/compressible/sonicDyMFoam/createFields.H
@@ -7,7 +7,7 @@
     basicPsiThermo& thermo = pThermo();
 
     volScalarField& p = thermo.p();
-    volScalarField& e = thermo.h();
+    volScalarField& e = thermo.e();
     const volScalarField& psi = thermo.psi();
 
     volScalarField rho
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/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/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 067ae6a992487e9e1c2d113e1e330b4aa306db30..a8ff18374220e04a17c01dcd59325f030ea38361 100644
--- a/applications/solvers/heatTransfer/buoyantBoussinesqPisoFoam/buoyantBoussinesqPisoFoam.C
+++ b/applications/solvers/heatTransfer/buoyantBoussinesqPisoFoam/buoyantBoussinesqPisoFoam.C
@@ -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]
 
 \*---------------------------------------------------------------------------*/
@@ -78,20 +78,17 @@ int main(int argc, char *argv[])
         #include "setDeltaT.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 58947fe295498057e57fb51c557a5782b8f2ef9e..63b938fa3625c2a15475b5ab5eb2157ce4cd9416 100644
--- a/applications/solvers/heatTransfer/buoyantBoussinesqSimpleFoam/buoyantBoussinesqSimpleFoam.C
+++ b/applications/solvers/heatTransfer/buoyantBoussinesqSimpleFoam/buoyantBoussinesqSimpleFoam.C
@@ -72,21 +72,18 @@ int main(int argc, char *argv[])
         #include "readSIMPLEControls.H"
         #include "initConvergenceCheck.H"
 
-        pd.storePrevIter();
+        p.storePrevIter();
 
         // Pressure-velocity SIMPLE corrector
         {
             #include "UEqn.H"
             #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/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..e1d42d738e8deff2eda578436baca131809f352f 100644
--- a/applications/solvers/heatTransfer/buoyantBoussinesqSimpleFoam/pdEqn.H
+++ b/applications/solvers/heatTransfer/buoyantBoussinesqSimpleFoam/pEqn.H
@@ -6,41 +6,42 @@
     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/createFields.H b/applications/solvers/heatTransfer/buoyantPisoFoam/createFields.H
index b5c84e435e3b2a95ad2cb8b67e215559d49758a0..b8ac5595e47cec77aa257c54a1710f91b08f20f7 100644
--- a/applications/solvers/heatTransfer/buoyantPisoFoam/createFields.H
+++ b/applications/solvers/heatTransfer/buoyantPisoFoam/createFields.H
@@ -65,4 +65,3 @@
     dimensionedScalar initialMass = fvc::domainIntegrate(rho);
 
     dimensionedScalar totalVolume = sum(mesh.V());
-
diff --git a/applications/solvers/heatTransfer/buoyantSimpleRadiationFoam/buoyantSimpleRadiationFoam.C b/applications/solvers/heatTransfer/buoyantSimpleRadiationFoam/buoyantSimpleRadiationFoam.C
index 0862d20bb2ce9fe649be9b286df8b149ae3e024f..c869eff89956a1b4e581fcdf6e1adf4643ecbfe4 100644
--- a/applications/solvers/heatTransfer/buoyantSimpleRadiationFoam/buoyantSimpleRadiationFoam.C
+++ b/applications/solvers/heatTransfer/buoyantSimpleRadiationFoam/buoyantSimpleRadiationFoam.C
@@ -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"
 
         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/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/utilities/mesh/generation/blockMesh/mergePatchPairs.H b/applications/utilities/mesh/generation/blockMesh/mergePatchPairs.H
index 3347db180bbe769eefeb5a41762550409e5b16e2..aeb3137adfe091daaabbda9490016527a066afe9 100644
--- a/applications/utilities/mesh/generation/blockMesh/mergePatchPairs.H
+++ 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/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/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/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/molConfig.C b/applications/utilities/preProcessing/mdInitialise/molConfig_old/molConfig.C
deleted file mode 100644
index e81c24ca6a3cda74c841511a8519496ddcdf1638..0000000000000000000000000000000000000000
--- a/applications/utilities/preProcessing/mdInitialise/molConfig_old/molConfig.C
+++ /dev/null
@@ -1,50 +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"
-
-// * * * * * * * * * * * * * * * * Constructor * * * * * * * * * * * * * * * //
-
-Foam::molConfig::molConfig
-(
-    IOdictionary& molConfigDescription,
-    const polyMesh& mesh
-)
-:
-    molConfigDescription_(molConfigDescription),
-    mesh_(mesh)
-{
-    createMolecules();
-}
-
-
-// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
-
-Foam::molConfig::~molConfig()
-{}
-
-
-// ************************************************************************* //
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/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 a6bf29686a56ff15d07e61a26c8ee2145d351efb..b89f6c95a9f15c2bfe07eddfb3aa537a30c1d9b1 100644
--- a/src/OpenFOAM/containers/Lists/List/List.H
+++ b/src/OpenFOAM/containers/Lists/List/List.H
@@ -248,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/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 f7db8226ff74d5dc0efa82edc11533b372481c79..087f685ff6cf182cee3be9fe3a4c24370d3f25fa 100644
--- a/src/OpenFOAM/containers/Lists/UList/UList.H
+++ b/src/OpenFOAM/containers/Lists/UList/UList.H
@@ -320,6 +320,18 @@ public:
         );
 };
 
+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/meshes/polyMesh/globalMeshData/globalIndex.H b/src/OpenFOAM/meshes/polyMesh/globalMeshData/globalIndex.H
index 0ed207057a347a07612bb089c2575777aeaf88f8..e394f679d042dd0c425f6fa7a869ebafeb5f2a4a 100644
--- a/src/OpenFOAM/meshes/polyMesh/globalMeshData/globalIndex.H
+++ b/src/OpenFOAM/meshes/polyMesh/globalMeshData/globalIndex.H
@@ -106,6 +106,15 @@ public:
             //- 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;
 
@@ -115,9 +124,6 @@ public:
             //- Start of procI data
             inline label offset(const label procI) const;
 
-            //- Size of procI data
-            inline label localSize(const label procI) const;
-
 
 
     // IOstream Operators
diff --git a/src/OpenFOAM/meshes/polyMesh/globalMeshData/globalIndexI.H b/src/OpenFOAM/meshes/polyMesh/globalMeshData/globalIndexI.H
index f9444fe54b0291f32f3d19b9476bf21dfbcf8618..d7c44107c665e29d0fd38900b2767e116b5e1b57 100644
--- a/src/OpenFOAM/meshes/polyMesh/globalMeshData/globalIndexI.H
+++ b/src/OpenFOAM/meshes/polyMesh/globalMeshData/globalIndexI.H
@@ -63,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/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/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/autoMesh/autoHexMesh/meshRefinement/meshRefinementBaffles.C b/src/autoMesh/autoHexMesh/meshRefinement/meshRefinementBaffles.C
index baa2e5d463b10845b076713ce6112b99634dd4e1..0839e621cb1d273cb254280b2db067fe8e0459d2 100644
--- a/src/autoMesh/autoHexMesh/meshRefinement/meshRefinementBaffles.C
+++ b/src/autoMesh/autoHexMesh/meshRefinement/meshRefinementBaffles.C
@@ -110,7 +110,7 @@ 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
@@ -1017,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,
@@ -1059,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,
@@ -2211,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()];
             }
         }
@@ -2357,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
@@ -2369,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];
@@ -2387,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
@@ -2399,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
                     )
                 );
             }
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 5e7a0b010bec6621e7340df8853e3f516f9add28..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();
@@ -782,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);
 }
 
 
@@ -1097,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
+                            );
                         }
                     }
                 }
@@ -2302,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
@@ -2716,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;
 }
@@ -2754,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);
 
@@ -2770,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);
 }
 
 
@@ -2823,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;
 }
 
 
@@ -3119,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>
     (
@@ -3147,7 +3147,7 @@ Foam::autoPtr<Foam::mapPolyMesh> Foam::polyTopoChange::changeMesh
             reverseFaceMap_,
             reverseCellMap_,
 
-            flipFaceFlux_,
+            flipFaceFluxSet,
 
             patchPointMap,
 
@@ -3410,6 +3410,8 @@ Foam::autoPtr<Foam::mapPolyMesh> Foam::polyTopoChange::makeMesh
         writeMeshStats(mesh, Pout);
     }
 
+    labelHashSet flipFaceFluxSet(getSetIndices(flipFaceFlux_));
+
     return autoPtr<mapPolyMesh>
     (
         new mapPolyMesh
@@ -3437,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/finiteVolume/Make/files b/src/finiteVolume/Make/files
index 313110bd43ad9541a65a0d4199803aa3420141c3..37b59c523a3e541665964c469a5fbe75bee38012 100644
--- a/src/finiteVolume/Make/files
+++ b/src/finiteVolume/Make/files
@@ -109,7 +109,6 @@ $(derivedFvPatchFields)/directMappedFixedValue/directMappedFixedValueFvPatchFiel
 $(derivedFvPatchFields)/directMappedVelocityFluxFixedValue/directMappedVelocityFluxFixedValueFvPatchField.C
 $(derivedFvPatchFields)/fan/fanFvPatchFields.C
 $(derivedFvPatchFields)/fixedFluxBuoyantPressure/fixedFluxBuoyantPressureFvPatchScalarField.C
-$(derivedFvPatchFields)/fixedFluxBoussinesqBuoyantPressure/fixedFluxBoussinesqBuoyantPressureFvPatchScalarField.C
 $(derivedFvPatchFields)/fixedFluxPressure/fixedFluxPressureFvPatchScalarField.C
 $(derivedFvPatchFields)/fixedInternalValueFvPatchField/fixedInternalValueFvPatchFields.C
 $(derivedFvPatchFields)/fixedNormalSlip/fixedNormalSlipFvPatchFields.C
@@ -148,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
diff --git a/src/finiteVolume/cfdTools/general/findRefCell/findRefCell.C b/src/finiteVolume/cfdTools/general/findRefCell/findRefCell.C
index 370b13747d204dad917ba3da9b4bdc6af2176252..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);
             }
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/fixedFluxBuoyantPressure/fixedFluxBuoyantPressureFvPatchScalarField.C b/src/finiteVolume/fields/fvPatchFields/derived/fixedFluxBuoyantPressure/fixedFluxBuoyantPressureFvPatchScalarField.C
index b6f48ff6ada8e214e41f83c848bafabdb32de46e..279918b47af95cdb9d91b7344ff5844af91888bd 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/fixedFluxBuoyantPressure/fixedFluxBuoyantPressureFvPatchScalarField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/fixedFluxBuoyantPressure/fixedFluxBuoyantPressureFvPatchScalarField.C
@@ -43,56 +43,61 @@ fixedFluxBuoyantPressureFvPatchScalarField
     const DimensionedField<scalar, volMesh>& iF
 )
 :
-    fixedGradientFvPatchScalarField(p, iF)
+    fixedGradientFvPatchScalarField(p, iF),
+    rhoName_("rho")
 {}
 
 
 fixedFluxBuoyantPressureFvPatchScalarField::
 fixedFluxBuoyantPressureFvPatchScalarField
 (
-    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
 (
+    const fixedFluxBuoyantPressureFvPatchScalarField& 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
 (
-    const fixedFluxBuoyantPressureFvPatchScalarField& wbppsf
+    const fixedFluxBuoyantPressureFvPatchScalarField& ptf
 )
 :
-    fixedGradientFvPatchScalarField(wbppsf)
+    fixedGradientFvPatchScalarField(ptf),
+    rhoName_(ptf.rhoName_)
 {}
 
 
 fixedFluxBuoyantPressureFvPatchScalarField::
 fixedFluxBuoyantPressureFvPatchScalarField
 (
-    const fixedFluxBuoyantPressureFvPatchScalarField& wbppsf,
+    const fixedFluxBuoyantPressureFvPatchScalarField& ptf,
     const DimensionedField<scalar, volMesh>& iF
 )
 :
-    fixedGradientFvPatchScalarField(wbppsf, iF)
+    fixedGradientFvPatchScalarField(ptf, iF),
+    rhoName_(ptf.rhoName_)
 {}
 
 
@@ -111,7 +116,7 @@ void fixedFluxBuoyantPressureFvPatchScalarField::updateCoeffs()
     dimensionedVector g(environmentalProperties.lookup("g"));
 
     const fvPatchField<scalar>& rho =
-        patch().lookupPatchField<volScalarField, scalar>("rho");
+        patch().lookupPatchField<volScalarField, scalar>(rhoName_);
 
     // If the variable name is "pd" assume it is p - rho*g.h
     // and set the gradient appropriately.
@@ -132,6 +137,7 @@ void fixedFluxBuoyantPressureFvPatchScalarField::updateCoeffs()
 void fixedFluxBuoyantPressureFvPatchScalarField::write(Ostream& os) const
 {
     fixedGradientFvPatchScalarField::write(os);
+    os.writeKeyword("rho") << rhoName_ << token::END_STATEMENT << nl;
     writeEntry("value", os);
 }
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/fixedFluxBuoyantPressure/fixedFluxBuoyantPressureFvPatchScalarField.H b/src/finiteVolume/fields/fvPatchFields/derived/fixedFluxBuoyantPressure/fixedFluxBuoyantPressureFvPatchScalarField.H
index 8e433cb8f167f0304ec840bb270c4521c9230e5b..ec5dc7dd990d69170621c253ca5b73b5d9e91b74 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/fixedFluxBuoyantPressure/fixedFluxBuoyantPressureFvPatchScalarField.H
+++ b/src/finiteVolume/fields/fvPatchFields/derived/fixedFluxBuoyantPressure/fixedFluxBuoyantPressureFvPatchScalarField.H
@@ -55,6 +55,11 @@ class fixedFluxBuoyantPressureFvPatchScalarField
 :
     public fixedGradientFvPatchScalarField
 {
+    // Private data
+
+        //- Name of the density field used to calculate the buoyancy force
+        word rhoName_;
+
 
 public:
 
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/src/finiteVolume/fields/fvPatchFields/derived/uniformDensityHydrostaticPressure/uniformDensityHydrostaticPressureFvPatchScalarField.C b/src/finiteVolume/fields/fvPatchFields/derived/uniformDensityHydrostaticPressure/uniformDensityHydrostaticPressureFvPatchScalarField.C
new file mode 100644
index 0000000000000000000000000000000000000000..dfda8caf521d7e6f3733d3e4bf640fbfd58ee22f
--- /dev/null
+++ b/src/finiteVolume/fields/fvPatchFields/derived/uniformDensityHydrostaticPressure/uniformDensityHydrostaticPressureFvPatchScalarField.C
@@ -0,0 +1,168 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  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 "uniformDensityHydrostaticPressureFvPatchScalarField.H"
+#include "addToRunTimeSelectionTable.H"
+#include "fvPatchFieldMapper.H"
+#include "volFields.H"
+#include "surfaceFields.H"
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::uniformDensityHydrostaticPressureFvPatchScalarField::
+uniformDensityHydrostaticPressureFvPatchScalarField
+(
+    const fvPatch& p,
+    const DimensionedField<scalar, volMesh>& iF
+)
+:
+    fixedValueFvPatchScalarField(p, iF),
+    rho_(0.0),
+    pRefValue_(0.0),
+    pRefPoint_(vector::zero)
+{}
+
+
+Foam::uniformDensityHydrostaticPressureFvPatchScalarField::
+uniformDensityHydrostaticPressureFvPatchScalarField
+(
+    const fvPatch& p,
+    const DimensionedField<scalar, volMesh>& iF,
+    const dictionary& dict
+)
+:
+    fixedValueFvPatchScalarField(p, iF),
+    rho_(readScalar(dict.lookup("rho"))),
+    pRefValue_(readScalar(dict.lookup("pRefValue"))),
+    pRefPoint_(dict.lookup("pRefPoint"))
+{
+    if (dict.found("value"))
+    {
+        fvPatchField<scalar>::operator=
+        (
+            scalarField("value", dict, p.size())
+        );
+    }
+    else
+    {
+        evaluate();
+    }
+}
+
+
+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 uniformDensityHydrostaticPressureFvPatchScalarField& ptf,
+    const DimensionedField<scalar, volMesh>& iF
+)
+:
+    fixedValueFvPatchScalarField(ptf, iF),
+    rho_(ptf.rho_),
+    pRefValue_(ptf.pRefValue_),
+    pRefPoint_(ptf.pRefPoint_)
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+void Foam::uniformDensityHydrostaticPressureFvPatchScalarField::updateCoeffs()
+{
+    if (updated())
+    {
+        return;
+    }
+
+    const dictionary& environmentalProperties
+        = db().lookupObject<IOdictionary>("environmentalProperties");
+
+    dimensionedVector g(environmentalProperties.lookup("g"));
+
+    operator==
+    (
+        pRefValue_
+      + rho_*((g.value() & patch().Cf()) - (g.value() & pRefPoint_))
+    );
+
+    fixedValueFvPatchScalarField::updateCoeffs();
+}
+
+
+void Foam::uniformDensityHydrostaticPressureFvPatchScalarField::write
+(
+    Ostream& os
+) const
+{
+    fvPatchScalarField::write(os);
+    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);
+}
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+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/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/dsmc/submodels/BinaryCollisionModel/BinaryCollisionModel/BinaryCollisionModel.H b/src/lagrangian/dsmc/submodels/BinaryCollisionModel/BinaryCollisionModel/BinaryCollisionModel.H
index 4b422bdd3176e4ac3320ec6e32a8f9956e3fe699..0dc8f02ea7d73f24da679049d2a3172e442e2c0d 100644
--- a/src/lagrangian/dsmc/submodels/BinaryCollisionModel/BinaryCollisionModel/BinaryCollisionModel.H
+++ b/src/lagrangian/dsmc/submodels/BinaryCollisionModel/BinaryCollisionModel/BinaryCollisionModel.H
@@ -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/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/molecularMeasurements/distribution/distributionIO.C b/src/lagrangian/molecularDynamics/molecularMeasurements/distribution/distributionIO.C
deleted file mode 100644
index 65743800e84b540ee59895c3c4458f8783fff082..0000000000000000000000000000000000000000
--- a/src/lagrangian/molecularDynamics/molecularMeasurements/distribution/distributionIO.C
+++ /dev/null
@@ -1,35 +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 "distribution.H"
-#include "IOstreams.H"
-
-// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
-
-// construct from Istream
-
-
-// ************************************************************************* //
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 bc9c502ffb57f90181a70127c23c67563e4eb8f1..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
diff --git a/src/lagrangian/molecularDynamics/molecule/molecule/molecule.H b/src/lagrangian/molecularDynamics/molecule/molecule/molecule.H
index 0ee16f461f00cc2b61c28b694aa290a877448175..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>;
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..b747373e3a71e2682a01f0cb335262bc916ce8dc 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
@@ -928,7 +928,6 @@ void Foam::moleculeCloud::initialiseMolecules
 
                     n++;
                 }
-
             }
         }
     }
@@ -1025,6 +1024,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 +1172,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/applications/utilities/preProcessing/mdInitialise/molConfig_old/molConfigI.H b/src/lagrangian/molecularDynamics/potential/pairPotential/derived/dampedCoulomb/dampedCoulomb.H
similarity index 53%
rename from applications/utilities/preProcessing/mdInitialise/molConfig_old/molConfigI.H
rename to src/lagrangian/molecularDynamics/potential/pairPotential/derived/dampedCoulomb/dampedCoulomb.H
index 2cfd5bf57bcf750224f9d2c42f55633d36f4e4e9..377b531824e4d520ccf3621672e1ae537e9e7585 100644
--- a/applications/utilities/preProcessing/mdInitialise/molConfig_old/molConfigI.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
@@ -22,77 +22,87 @@ 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::pairPotentials::electrostatic
+
+Description
+
+
+SourceFiles
+    dampedCoulomb.C
+
 \*---------------------------------------------------------------------------*/
 
+#ifndef dampedCoulomb_H
+#define dampedCoulomb_H
+
+#include "pairPotential.H"
+
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 namespace Foam
 {
+namespace pairPotentials
+{
 
-// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+/*---------------------------------------------------------------------------*\
+                         Class dampedCoulomb Declaration
+\*---------------------------------------------------------------------------*/
 
-inline const List<word>& molConfig::molIdList() const
+class dampedCoulomb
+:
+    public pairPotential
 {
-    return idList_;
-}
+    // Private data
 
+        dictionary dampedCoulombCoeffs_;
 
-inline const labelField& molConfig::id() const
-{
-    return id_;
-}
+        scalar alpha_;
 
 
-inline const scalarField& molConfig::mass() const
-{
-    return mass_;
-}
+public:
 
+    //- Runtime type information
+    TypeName("dampedCoulomb");
 
-inline const vectorField& molConfig::positions() const
-{
-    return positions_;
-}
 
+    // Static data members
 
-inline const labelField& molConfig::cells() const
-{
-    return cells_;
-}
+        static scalar oneOverFourPiEps0;
 
 
-inline const vectorField& molConfig::U() const
-{
-    return U_;
-}
+    // Constructors
 
+        //- Construct from components
+        dampedCoulomb
+        (
+            const word& name,
+            const dictionary& pairPotentialProperties
+        );
 
-inline const vectorField& molConfig::A() const
-{
-    return A_;
-}
 
+    // Destructor
 
-inline const labelField& molConfig::tethered() const
-{
-    return tethered_;
-}
+        ~dampedCoulomb()
+        {}
 
 
-inline const vectorField& molConfig::tetherPositions() const
-{
-    return tetherPositions_;
-}
+    // Member Functions
 
+        scalar unscaledEnergy(const scalar r) const;
 
-inline label molConfig::nMol() const
-{
-    return nMol_;
-}
+        //- Read dictionary
+        bool read(const dictionary& pairPotentialProperties);
+};
 
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+} // End namespace pairPotentials
 } // End namespace Foam
 
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
 // ************************************************************************* //
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/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/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/applications/utilities/preProcessing/mdInitialise/molConfig_old/molConfig.H b/src/meshTools/sets/cellSources/faceZoneToCell/faceZoneToCell.H
similarity index 53%
rename from applications/utilities/preProcessing/mdInitialise/molConfig_old/molConfig.H
rename to src/meshTools/sets/cellSources/faceZoneToCell/faceZoneToCell.H
index 3b0ba8fd504846ecb073c7083593eff38dec23c0..b09c58399fcca136725ec959690542ff25221318 100644
--- a/applications/utilities/preProcessing/mdInitialise/molConfig_old/molConfig.H
+++ b/src/meshTools/sets/cellSources/faceZoneToCell/faceZoneToCell.H
@@ -23,34 +23,21 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::molConfig
+    Foam::faceZoneToCell
 
 Description
+    A topoSetSource to select cells based on side of faceZone.
 
 SourceFiles
-    molConfigI.H
-    molConfig.C
-    molConfigIO.C
+    faceZoneToCell.C
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef molConfig_H
-#define molConfig_H
+#ifndef faceZoneToCell_H
+#define faceZoneToCell_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"
-
-#include "Time.H"
-#include "IOdictionary.H"
-#include "IOstreams.H"
-#include "moleculeCloud.H"
+#include "topoSetSource.H"
+#include "wordRe.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -58,77 +45,85 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                           Class molConfig Declaration
+                        Class faceZoneToCell Declaration
 \*---------------------------------------------------------------------------*/
 
-class molConfig
+class faceZoneToCell
+:
+    public topoSetSource
 {
-    // Private data
-
-        const IOdictionary& molConfigDescription_;
-
-        const polyMesh& mesh_;
-
-        DynamicList<word> idList_;
+public:
+        //- Enumeration defining the valid options
+        enum faceAction
+        {
+            MASTER,
+            SLAVE
+        };
 
-        labelField id_;
+private:
 
-        scalarField mass_;
+    // Private data
 
-        vectorField positions_;
+        static const NamedEnum<faceAction, 2> faceActionNames_;
 
-        labelField cells_;
+        //- Add usage string
+        static addToUsageTable usage_;
 
-        vectorField U_;
+        //- Name/regular expression of faceZone
+        wordRe zoneName_;
 
-        vectorField A_;
+        //- Option
+        faceAction option_;
 
-        labelField tethered_;
 
-        vectorField tetherPositions_;
+    // Private Member Functions
 
-        label nMol_;
+        void combine(topoSet& set, const bool add) const;
 
 
 public:
 
+    //- Runtime type information
+    TypeName("faceZoneToCell");
+
     // Constructors
 
-        //- Construct from IOdictionary and mesh
-        molConfig(IOdictionary&, const polyMesh&);
+        //- 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
 
-        ~molConfig();
+        virtual ~faceZoneToCell();
 
 
     // Member Functions
 
-        void createMolecules();
-
-
-        // Access
-
-            inline const List<word>& molIdList() const;
+        virtual void applyToSet
+        (
+            const topoSetSource::setAction action,
+            topoSet&
+        ) 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;
 };
 
 
@@ -138,10 +133,6 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-#include "molConfigI.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
 #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/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/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..0d8c6de9d1b4ecf76f0d6b46642adac9dd514c8c 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 mdInitialise
+#     runApplication $application
+# cd ..
+
+cd periodicCubeWater
     runApplication blockMesh
-    runApplication molConfig
+    runApplication mdInitialise
     runApplication $application
-cd ..
-
+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/periodicCube/system/fvSchemes b/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeArgon/system/fvSchemes
similarity index 76%
rename from tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCube/system/fvSchemes
rename to tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeArgon/system/fvSchemes
index f923afcfacf038c5cd521b7e67b1c11b4d535866..42fda7921ca0a70a5b1f415666f49d4d07befb7b 100644
--- a/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCube/system/fvSchemes
+++ b/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeArgon/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/molecularDynamics/mdEquilibrationFoam/periodicCubeArgon/system/fvSolution
similarity index 91%
rename from tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCube/system/mdEquilibrationDict
rename to tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeArgon/system/fvSolution
index 2dd296045bbd9676b0bf078bc53d2dc5e4958365..1e39435250fcc6c21b5ca292d31d085533ce9716 100644
--- a/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCube/system/mdEquilibrationDict
+++ b/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeArgon/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/molecularDynamics/mdEquilibrationFoam/periodicCubeArgon/system/mdEquilibrationDict b/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeArgon/system/mdEquilibrationDict
new file mode 100644
index 0000000000000000000000000000000000000000..e044b8378542974b38127b812d5a4e04aa9e2ac3
--- /dev/null
+++ b/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeArgon/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;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+equilibrationTargetTemperature  300.0;
+
+// ************************************************************************* //
\ No newline at end of file
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/nanoNozzle/system/controlDict b/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeWater/system/controlDict
similarity index 86%
rename from tutorials/discreteMethods/molecularDynamics/gnemdFoam/nanoNozzle/system/controlDict
rename to tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeWater/system/controlDict
index 46436871638186b4ead04e658ceeadd2579b9a5f..51a42ecc0e828d90fd725f5c361eae36c95f5f15 100644
--- a/tutorials/discreteMethods/molecularDynamics/gnemdFoam/nanoNozzle/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         3e-11;
+endTime         5e-12;
 
-deltaT          1e-14;
+deltaT          1e-15;
 
 writeControl    runTime;
 
-writeInterval   1e-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/gnemdFoam/constrictedChannel/system/fvSchemes b/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeWater/system/fvSchemes
similarity index 76%
rename from tutorials/discreteMethods/molecularDynamics/gnemdFoam/constrictedChannel/system/fvSchemes
rename to tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeWater/system/fvSchemes
index f923afcfacf038c5cd521b7e67b1c11b4d535866..42fda7921ca0a70a5b1f415666f49d4d07befb7b 100644
--- a/tutorials/discreteMethods/molecularDynamics/gnemdFoam/constrictedChannel/system/fvSchemes
+++ b/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeWater/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/mdSolution b/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeWater/system/fvSolution
similarity index 89%
rename from tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCube/system/mdSolution
rename to tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeWater/system/fvSolution
index dfef948901fc9407d740d27c3f58e12fc09f78c8..1e39435250fcc6c21b5ca292d31d085533ce9716 100644
--- a/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCube/system/mdSolution
+++ b/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeWater/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/mdEquilibrationFoam/periodicCubeWater/system/mdEquilibrationDict b/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeWater/system/mdEquilibrationDict
new file mode 100644
index 0000000000000000000000000000000000000000..de8cb745e1f62f9f76556059a8d34a750d5b808f
--- /dev/null
+++ b/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeWater/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/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..8a3ba006163857eb4fafe09388c1ae873b0f23bf
--- /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         1e-10;
+
+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/gnemdFoam/nanoNozzle/system/fvSchemes b/tutorials/discreteMethods/molecularDynamics/mdFoam/nanoNozzle/system/fvSchemes
similarity index 76%
rename from tutorials/discreteMethods/molecularDynamics/gnemdFoam/nanoNozzle/system/fvSchemes
rename to tutorials/discreteMethods/molecularDynamics/mdFoam/nanoNozzle/system/fvSchemes
index f923afcfacf038c5cd521b7e67b1c11b4d535866..42fda7921ca0a70a5b1f415666f49d4d07befb7b 100644
--- a/tutorials/discreteMethods/molecularDynamics/gnemdFoam/nanoNozzle/system/fvSchemes
+++ b/tutorials/discreteMethods/molecularDynamics/mdFoam/nanoNozzle/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/molecularDynamics/mdFoam/nanoNozzle/system/fvSolution
similarity index 89%
rename from tutorials/discreteMethods/molecularDynamics/gnemdFoam/constrictedChannel/system/mdSolution
rename to tutorials/discreteMethods/molecularDynamics/mdFoam/nanoNozzle/system/fvSolution
index dfef948901fc9407d740d27c3f58e12fc09f78c8..1e39435250fcc6c21b5ca292d31d085533ce9716 100644
--- a/tutorials/discreteMethods/molecularDynamics/gnemdFoam/constrictedChannel/system/mdSolution
+++ b/tutorials/discreteMethods/molecularDynamics/mdFoam/nanoNozzle/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/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..ac85160f5cb2e1cbc774f42df6b87eb70ccd320d
--- /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             980;
+    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             980;
+    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             980;
+    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/discreteMethods/molecularDynamics/gnemdFoam/nanoNozzle/system/fvSolution b/tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/0/U
similarity index 59%
rename from tutorials/discreteMethods/molecularDynamics/gnemdFoam/nanoNozzle/system/fvSolution
rename to tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/0/U
index 46670343363af32a79fcf7bd788316556b9de7d7..0b6b191dab023e6aa4c9701188dd93252aeb7aa9 100644
--- a/tutorials/discreteMethods/molecularDynamics/gnemdFoam/nanoNozzle/system/fvSolution
+++ b/tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/0/U
@@ -2,45 +2,41 @@
 | =========                 |                                                 |
 | \\      /  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
 {
     version     2.0;
     format      ascii;
-    class       dictionary;
-    location    "system";
-    object      fvSolution;
+    class       volVectorField;
+    object      U;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-solvers
+dimensions      [0 1 -1 0 0 0 0];
+
+internalField   uniform (0 0 0);
+
+boundaryField
 {
-    p
+    floor           
     {
-        solver          PCG;
-        preconditioner  DIC;
-        tolerance       1e-06;
-        relTol          0;
+        type            fixedValue;
+        value           uniform (0 0 0);
     }
 
-    U
+    ceiling         
     {
-        solver          PBiCG;
-        preconditioner  DILU;
-        tolerance       1e-05;
-        relTol          0;
+        type            fixedValue;
+        value           uniform (0 0 0);
     }
-}
 
-PISO
-{
-    nCorrectors     2;
-    nNonOrthogonalCorrectors 0;
-    pRefCell        0;
-    pRefValue       0;
+    fixedWalls      
+    {
+        type            fixedValue;
+        value           uniform (0 0 0);
+    }
 }
 
-
 // ************************************************************************* //
diff --git a/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCube/system/fvSolution b/tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/0/alphat
similarity index 59%
rename from tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCube/system/fvSolution
rename to tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/0/alphat
index 46670343363af32a79fcf7bd788316556b9de7d7..3bcb9c03b13cf7d96e3456eabea33e5f6d0ee8e1 100644
--- a/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCube/system/fvSolution
+++ b/tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/0/alphat
@@ -2,44 +2,40 @@
 | =========                 |                                                 |
 | \\      /  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
 {
     version     2.0;
     format      ascii;
-    class       dictionary;
-    location    "system";
-    object      fvSolution;
+    class       volScalarField;
+    location    "0";
+    object      alphat;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-solvers
+dimensions      [1 -1 -1 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
 {
-    p
+    floor
     {
-        solver          PCG;
-        preconditioner  DIC;
-        tolerance       1e-06;
-        relTol          0;
+        type            alphatWallFunction;
+        value           uniform 0;
     }
-
-    U
+    ceiling
     {
-        solver          PBiCG;
-        preconditioner  DILU;
-        tolerance       1e-05;
-        relTol          0;
+        type            alphatWallFunction;
+        value           uniform 0;
+    }
+    fixedWalls
+    {
+        type            alphatWallFunction;
+        value           uniform 0;
     }
-}
-
-PISO
-{
-    nCorrectors     2;
-    nNonOrthogonalCorrectors 0;
-    pRefCell        0;
-    pRefValue       0;
 }
 
 
diff --git a/tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/0/epsilon b/tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/0/epsilon
new file mode 100644
index 0000000000000000000000000000000000000000..892d69375d9d5eab2aa804a87ee6661bbc1a9f06
--- /dev/null
+++ b/tutorials/heatTransfer/buoyantBoussinesqPisoFoam/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/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/discreteMethods/molecularDynamics/gnemdFoam/nanoNozzle/system/decomposeParDict b/tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/0/nut
similarity index 58%
rename from tutorials/discreteMethods/molecularDynamics/gnemdFoam/nanoNozzle/system/decomposeParDict
rename to tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/0/nut
index 2b1855ea4634bda4d66c8129ce2d08d57a2fb0c9..a81ad6b59fd8d4b8617763e08058fbb36b3b8aef 100644
--- a/tutorials/discreteMethods/molecularDynamics/gnemdFoam/nanoNozzle/system/decomposeParDict
+++ b/tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/0/nut
@@ -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,42 +9,34 @@ FoamFile
 {
     version     2.0;
     format      ascii;
-    class       dictionary;
-    location    "system";
-    object      decomposeParDict;
+    class       volScalarField;
+    location    "0";
+    object      nut;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-numberOfSubdomains 4;
+dimensions      [0 2 -1 0 0 0 0];
 
-method          metis;
+internalField   uniform 0;
 
-simpleCoeffs
+boundaryField
 {
-    n               ( 4 1 1 );
-    delta           0.001;
+    floor
+    {
+        type            nutWallFunction;
+        value           uniform 0;
+    }
+    ceiling
+    {
+        type            nutWallFunction;
+        value           uniform 0;
+    }
+    fixedWalls
+    {
+        type            nutWallFunction;
+        value           uniform 0;
+    }
 }
 
-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/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/0/p b/tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/0/p
new file mode 100644
index 0000000000000000000000000000000000000000..2014ca6e8c05c4140f60fa97f5d77545a31b68c8
--- /dev/null
+++ b/tutorials/heatTransfer/buoyantBoussinesqPisoFoam/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            fixedFluxBuoyantPressure;
+        rho             rhok;
+        value           uniform 0;
+    }
+
+    ceiling
+    {
+        type            fixedFluxBuoyantPressure;
+        rho             rhok;
+        value           uniform 0;
+    }
+
+    fixedWalls
+    {
+        type            fixedFluxBuoyantPressure;
+        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/discreteMethods/molecularDynamics/gnemdFoam/nanoNozzle/system/mdSolution b/tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/constant/environmentalProperties
similarity index 86%
rename from tutorials/discreteMethods/molecularDynamics/gnemdFoam/nanoNozzle/system/mdSolution
rename to tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/constant/environmentalProperties
index dfef948901fc9407d740d27c3f58e12fc09f78c8..a866ff549fd799e63d2d6946a66cf3da14d092bd 100644
--- a/tutorials/discreteMethods/molecularDynamics/gnemdFoam/nanoNozzle/system/mdSolution
+++ b/tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/constant/environmentalProperties
@@ -10,14 +10,12 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
-    object      mdSolution;
+    location    "constant";
+    object      environmentalProperties;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-integrationMethod verletLeapfrog;
-
-potentialEnergyLimit 5.256e-20;
+g               g [ 0 1 -2 0 0 0 0 ] ( 0 -9.81 0 );
 
 
 // ************************************************************************* //
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/constrictedChannel/system/controlDict b/tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/system/controlDict
similarity index 89%
rename from tutorials/discreteMethods/molecularDynamics/gnemdFoam/constrictedChannel/system/controlDict
rename to tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/system/controlDict
index c43b52a4489940816c201cd8c03c5ca1f7694a2e..26a1219ee04433266c5a0540f5ecf239fc0d0f93 100644
--- a/tutorials/discreteMethods/molecularDynamics/gnemdFoam/constrictedChannel/system/controlDict
+++ b/tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/system/controlDict
@@ -21,19 +21,19 @@ startTime       0;
 
 stopAt          endTime;
 
-endTime         8e-11;
+endTime         1000;
 
-deltaT          1e-14;
+deltaT          1;
 
-writeControl    runTime;
+writeControl    timeStep;
 
-writeInterval   2e-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/gnemdFoam/constrictedChannel/system/fvSolution b/tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/system/fvSolution
similarity index 61%
rename from tutorials/discreteMethods/molecularDynamics/gnemdFoam/constrictedChannel/system/fvSolution
rename to tutorials/heatTransfer/buoyantBoussinesqPisoFoam/hotRoom/system/fvSolution
index 46670343363af32a79fcf7bd788316556b9de7d7..7afa2f50aa9b1dc663a24bada8c0971be911c656 100644
--- a/tutorials/discreteMethods/molecularDynamics/gnemdFoam/constrictedChannel/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/buoyantBoussinesqSimpleFoam/hotRoom/0/alphat b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom/0/alphat
new file mode 100644
index 0000000000000000000000000000000000000000..3bcb9c03b13cf7d96e3456eabea33e5f6d0ee8e1
--- /dev/null
+++ b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom/0/alphat
@@ -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;
+    location    "0";
+    object      alphat;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -1 -1 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    floor
+    {
+        type            alphatWallFunction;
+        value           uniform 0;
+    }
+    ceiling
+    {
+        type            alphatWallFunction;
+        value           uniform 0;
+    }
+    fixedWalls
+    {
+        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..2014ca6e8c05c4140f60fa97f5d77545a31b68c8
--- /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            fixedFluxBuoyantPressure;
+        rho             rhok;
+        value           uniform 0;
+    }
+
+    ceiling
+    {
+        type            fixedFluxBuoyantPressure;
+        rho             rhok;
+        value           uniform 0;
+    }
+
+    fixedWalls
+    {
+        type            fixedFluxBuoyantPressure;
+        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/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom/system/controlDict b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom/system/controlDict
new file mode 100644
index 0000000000000000000000000000000000000000..bfc52cf914e6d70563729bb9790dda8a20daaa70
--- /dev/null
+++ b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom/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       latestTime;
+
+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/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/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/lagrangian/porousExplicitSourceReactingParcelFoam/filter/Allrun b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/Allrun
index 68d74e3f344237944e77206bc85e3c7df36d36e6..8378f1f44bd4f26fb3c1d54117242f35a5b0cf5b 100755
--- a/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/Allrun
+++ b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/Allrun
@@ -1,24 +1,23 @@
 #!/bin/sh
 
+# Source tutorial run functions
+. $WM_PROJECT_DIR/bin/tools/RunFunctions
+
+application="porousExplicitSourceReactingParcelFoam"
+
 # create mesh
-blockMesh >& log.blockMesh
+runApplication blockMesh
 
-# create sets - 1
+# 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
 createBaffles cycLeft cycLeft -overwrite >& log.createBaffles1
 
-# create sets - 2 (ordering changed after createBaffles)
-setSet -batch system/sets.setSet >& log.setSet2
-
 # create the second cyclic - rhs of porous zone
 createBaffles cycRight cycRight -overwrite >& log.createBaffles2
 
-# create sets - 3 (ordering changed after createBaffles)
-setSet -batch system/sets.setSet >& log.setSet3
-
-# convert sets to zones
-setsToZones -noFlipMap >& log.setsToZones
-
-
+runApplication $application
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/moveDynamicMesh/SnakeRiverCanyon/system/fvSchemes b/tutorials/mesh/moveDynamicMesh/SnakeRiverCanyon/system/fvSchemes
new file mode 100644
index 0000000000000000000000000000000000000000..ebcd68557528c297120d8e5e1e9ee43f0b933650
--- /dev/null
+++ b/tutorials/mesh/moveDynamicMesh/SnakeRiverCanyon/system/fvSchemes
@@ -0,0 +1,69 @@
+/*---------------------------------------------------------------------------*\
+| =========                 |                                                 |
+| \\      /  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          fvSchemes;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ddtSchemes
+{
+    default         Euler;
+}
+
+gradSchemes
+{
+    default         Gauss linear;
+    grad(p)         Gauss linear;
+}
+
+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,cellDisplacement) Gauss linear corrected;
+    laplacian(diffusivity,cellMotionU) Gauss linear corrected;
+}
+
+interpolationSchemes
+{
+    default         linear;
+    interpolate(HbyA) linear;
+}
+
+snGradSchemes
+{
+    default         corrected;
+}
+
+fluxRequired
+{
+    default         no;
+    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/iglooWithFridges/0/T b/tutorials/mesh/snappyHexMesh/iglooWithFridges/0/T
new file mode 100644
index 0000000000000000000000000000000000000000..2f930360fd37896b527889abe6270f3643cca6e6
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/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/mesh/snappyHexMesh/iglooWithFridges/0/U b/tutorials/mesh/snappyHexMesh/iglooWithFridges/0/U
new file mode 100644
index 0000000000000000000000000000000000000000..5d70f2a9c021a7c55ded01f6296f0113bb31029b
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/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/mesh/snappyHexMesh/iglooWithFridges/0/alphat b/tutorials/mesh/snappyHexMesh/iglooWithFridges/0/alphat
new file mode 100644
index 0000000000000000000000000000000000000000..acdcda178a7d947cf732c6668ddf055b5bc51d05
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/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/mesh/snappyHexMesh/iglooWithFridges/0/epsilon b/tutorials/mesh/snappyHexMesh/iglooWithFridges/0/epsilon
new file mode 100644
index 0000000000000000000000000000000000000000..0fa9bf60f265f63d0b0c957fc39f70ec920c8323
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/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/mesh/snappyHexMesh/iglooWithFridges/0/k b/tutorials/mesh/snappyHexMesh/iglooWithFridges/0/k
new file mode 100644
index 0000000000000000000000000000000000000000..bd0cf46f0db295c3f0170202b33472417c20bca3
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/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/mesh/snappyHexMesh/iglooWithFridges/0/nut b/tutorials/mesh/snappyHexMesh/iglooWithFridges/0/nut
new file mode 100644
index 0000000000000000000000000000000000000000..e9e5f16e555dccc27b4fd7c11b0b4877afc1bb4f
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/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/mesh/snappyHexMesh/iglooWithFridges/0/p b/tutorials/mesh/snappyHexMesh/iglooWithFridges/0/p
new file mode 100644
index 0000000000000000000000000000000000000000..2b90b18e74e8b30535be502ed783da524727c7df
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/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            fixedFluxBuoyantPressure;
+        rho             rhok;
+        value           uniform 0;
+    }
+
+    igloo_region0
+    {
+        type            fixedFluxBuoyantPressure;
+        rho             rhok;
+        value           uniform 0;
+    }
+
+    twoFridgeFreezers_seal_0
+    {
+        type            fixedFluxBuoyantPressure;
+        rho             rhok;
+        value           uniform 0;
+    }
+
+    twoFridgeFreezers_herring_1
+    {
+        type            fixedFluxBuoyantPressure;
+        rho             rhok;
+        value           uniform 0;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/mesh/snappyHexMesh/iglooWithFridges/Allrun b/tutorials/mesh/snappyHexMesh/iglooWithFridges/Allrun
new file mode 100755
index 0000000000000000000000000000000000000000..79dc3f4b95e1f1dff9646fd6dd1ba9fa3bbae4ac
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/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/mesh/snappyHexMesh/iglooWithFridges/constant/RASProperties b/tutorials/mesh/snappyHexMesh/iglooWithFridges/constant/RASProperties
new file mode 100644
index 0000000000000000000000000000000000000000..35b5a409f230c180f07469bfe0679cdf00cb419d
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/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/mesh/snappyHexMesh/iglooWithFridges/constant/environmentalProperties b/tutorials/mesh/snappyHexMesh/iglooWithFridges/constant/environmentalProperties
new file mode 100644
index 0000000000000000000000000000000000000000..8ecb2a440203a35f242328826e7484e672012712
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/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/mesh/snappyHexMesh/iglooWithFridges/constant/polyMesh/blockMeshDict
index d97dbb8e268c425f32326827a59e880e05e07eda..39d94d804fadab1df4f1ac72260fbd477d5f9204 100644
--- a/tutorials/mesh/snappyHexMesh/iglooWithFridges/constant/polyMesh/blockMeshDict
+++ b/tutorials/mesh/snappyHexMesh/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/mesh/snappyHexMesh/iglooWithFridges/constant/transportProperties b/tutorials/mesh/snappyHexMesh/iglooWithFridges/constant/transportProperties
new file mode 100644
index 0000000000000000000000000000000000000000..f48fda19ccac705f76f1573b7ba40cce45abfd5b
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/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/system/controlDict b/tutorials/mesh/snappyHexMesh/iglooWithFridges/system/controlDict
index ef80311ee11931792c1d637b6d45c5a9b75c24de..46e7cd00c334efd3d10a44f4e932cef57ccff22d 100644
--- a/tutorials/mesh/snappyHexMesh/iglooWithFridges/system/controlDict
+++ b/tutorials/mesh/snappyHexMesh/iglooWithFridges/system/controlDict
@@ -15,25 +15,25 @@ FoamFile
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-startFrom       latestTime;
+startFrom       startTime;
 
 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/mesh/snappyHexMesh/iglooWithFridges/system/fvSchemes b/tutorials/mesh/snappyHexMesh/iglooWithFridges/system/fvSchemes
index 2fa85964b7e2113902ff5be6f03334f6777d84b6..b54bb8631600a594830b214816d8a858bcf83a02 100644
--- a/tutorials/mesh/snappyHexMesh/iglooWithFridges/system/fvSchemes
+++ b/tutorials/mesh/snappyHexMesh/iglooWithFridges/system/fvSchemes
@@ -17,33 +17,40 @@ FoamFile
 
 ddtSchemes
 {
-    default         Euler;
+    default         steadyState;
 }
 
 gradSchemes
 {
     default         Gauss linear;
-    grad(p)         Gauss linear;
 }
 
 divSchemes
 {
     default         none;
-    div(phi,U)      Gauss linear;
+    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(nu,U) Gauss linear corrected;
-    laplacian(1|A(U),p) Gauss linear corrected;
-    laplacian(diffusivity,cellMotionU) Gauss linear uncorrected;
+    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;
-    interpolate(HbyA) linear;
 }
 
 snGradSchemes
diff --git a/tutorials/mesh/snappyHexMesh/iglooWithFridges/system/fvSolution b/tutorials/mesh/snappyHexMesh/iglooWithFridges/system/fvSolution
index 876c8c233f9dece81ca38c9186f66b783bae4ec9..c2053ee47d6e6890ba5dc9b2e9041cdd7eb269d5 100644
--- a/tutorials/mesh/snappyHexMesh/iglooWithFridges/system/fvSolution
+++ b/tutorials/mesh/snappyHexMesh/iglooWithFridges/system/fvSolution
@@ -16,15 +16,73 @@ FoamFile
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 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;
+    }
 
-PISO
+    R
+    {
+        solver          PBiCG;
+        preconditioner  DILU;
+        tolerance       1e-05;
+        relTol          0.1;
+    }
+}
+
+SIMPLE
 {
-    nCorrectors     2;
     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/mesh/snappyHexMesh/iglooWithFridges/system/snappyHexMeshDict
index 30da45333116a695a3d463d85d30aa98babc1b38..d31010ace7ef8ced9166f5e0bd4e2ec0ad4c347c 100644
--- a/tutorials/mesh/snappyHexMesh/iglooWithFridges/system/snappyHexMeshDict
+++ b/tutorials/mesh/snappyHexMesh/iglooWithFridges/system/snappyHexMeshDict
@@ -42,12 +42,13 @@ geometry
         min (0 0 0);
         max (1 1 1);
     }
+
     fridgeFreezer
     {
         type searchableSurfaceCollection;
 
         mergeSubRegions true;
-    
+
         freezer
         {
             surface box1;
@@ -73,16 +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;
@@ -93,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;
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/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