diff --git a/applications/solvers/combustion/PDRFoam/Make/options b/applications/solvers/combustion/PDRFoam/Make/options
index b9937a8a698bc9451afe8e721e00be58cb3f6170..135659c2766cb7ec98124f7969e95a8fad1d6f48 100644
--- a/applications/solvers/combustion/PDRFoam/Make/options
+++ b/applications/solvers/combustion/PDRFoam/Make/options
@@ -23,7 +23,7 @@ EXE_LIBS = \
     -lmeshTools \
     -lcompressibleTurbulenceModel \
     -lcompressibleRASModels \
-    -lbasicThermophysicalModels \
+    -lfluidThermophysicalModels \
     -lreactionThermophysicalModels \
     -lspecie \
     -llaminarFlameSpeedModels \
diff --git a/applications/solvers/combustion/PDRFoam/PDRModels/turbulence/PDRkEpsilon/PDRkEpsilon.C b/applications/solvers/combustion/PDRFoam/PDRModels/turbulence/PDRkEpsilon/PDRkEpsilon.C
index 1e08ae11975328093f0987a89a7dcf1e0ec03e6f..79b9fb7756f30c445b15729655df17d2ff5ab5c2 100644
--- a/applications/solvers/combustion/PDRFoam/PDRModels/turbulence/PDRkEpsilon/PDRkEpsilon.C
+++ b/applications/solvers/combustion/PDRFoam/PDRModels/turbulence/PDRkEpsilon/PDRkEpsilon.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -50,7 +50,7 @@ PDRkEpsilon::PDRkEpsilon
     const volScalarField& rho,
     const volVectorField& U,
     const surfaceScalarField& phi,
-    const basicThermo& thermophysicalModel,
+    const fluidThermo& thermophysicalModel,
     const word& turbulenceModelName,
     const word& modelName
 )
diff --git a/applications/solvers/combustion/PDRFoam/PDRModels/turbulence/PDRkEpsilon/PDRkEpsilon.H b/applications/solvers/combustion/PDRFoam/PDRModels/turbulence/PDRkEpsilon/PDRkEpsilon.H
index 68387c934a93dc871db4543adcf0e1ae91773a06..d210aab70c57f6b9f395b4f0e99dabd2047820d5 100644
--- a/applications/solvers/combustion/PDRFoam/PDRModels/turbulence/PDRkEpsilon/PDRkEpsilon.H
+++ b/applications/solvers/combustion/PDRFoam/PDRModels/turbulence/PDRkEpsilon/PDRkEpsilon.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -100,7 +100,7 @@ public:
             const volScalarField& rho,
             const volVectorField& U,
             const surfaceScalarField& phi,
-            const basicThermo& thermophysicalModel,
+            const fluidThermo& thermophysicalModel,
             const word& turbulenceModelName = turbulenceModel::typeName,
             const word& modelName = typeName
         );
diff --git a/applications/solvers/combustion/PDRFoam/createFields.H b/applications/solvers/combustion/PDRFoam/createFields.H
index c4be37dfc93f27d892baf8550897a99f9966cb30..64d3058c0ef641c051d0a90f54598baae522efd8 100644
--- a/applications/solvers/combustion/PDRFoam/createFields.H
+++ b/applications/solvers/combustion/PDRFoam/createFields.H
@@ -60,7 +60,17 @@
 
 
     Info<< "Creating field dpdt\n" << endl;
-    volScalarField dpdt("dpdt", fvc::ddt(p));
+    volScalarField dpdt
+    (
+        IOobject
+        (
+            "dpdt",
+            runTime.timeName(),
+            mesh
+        ),
+        mesh,
+        dimensionedScalar("dpdt", p.dimensions()/dimTime, 0)
+    );
 
     Info<< "Creating field kinetic energy K\n" << endl;
     volScalarField K("K", 0.5*magSqr(U));
diff --git a/applications/solvers/combustion/PDRFoam/pEqn.H b/applications/solvers/combustion/PDRFoam/pEqn.H
index f3ba02efbe25e1cc8fcf5b3a5c779a3df867b351..e1c4274f3387945b31a17fa41fbd6164ea64faf9 100644
--- a/applications/solvers/combustion/PDRFoam/pEqn.H
+++ b/applications/solvers/combustion/PDRFoam/pEqn.H
@@ -70,4 +70,7 @@ U = HbyA - (invA & (betav*fvc::grad(p)));
 U.correctBoundaryConditions();
 K = 0.5*magSqr(U);
 
-dpdt = fvc::ddt(p);
+if (thermo.dpdt())
+{
+    dpdt = fvc::ddt(p);
+}
diff --git a/applications/solvers/combustion/XiFoam/Make/options b/applications/solvers/combustion/XiFoam/Make/options
index 66dae7fcb34ded2b6df3a287657d2132917b3865..0812df5e3bf3bb3979d1bde18c97acb35b91583d 100644
--- a/applications/solvers/combustion/XiFoam/Make/options
+++ b/applications/solvers/combustion/XiFoam/Make/options
@@ -13,7 +13,7 @@ EXE_LIBS = \
     -lcompressibleTurbulenceModel \
     -lcompressibleRASModels \
     -lcompressibleLESModels \
-    -lbasicThermophysicalModels \
+    -lfluidThermophysicalModels \
     -lreactionThermophysicalModels \
     -lspecie \
     -llaminarFlameSpeedModels \
diff --git a/applications/solvers/combustion/XiFoam/createFields.H b/applications/solvers/combustion/XiFoam/createFields.H
index a09e1c8f25690dbe842e93a57998951343514c4b..c266010adbeeab428c760598671edb76b112a3d4 100644
--- a/applications/solvers/combustion/XiFoam/createFields.H
+++ b/applications/solvers/combustion/XiFoam/createFields.H
@@ -61,7 +61,17 @@
     );
 
     Info<< "Creating field dpdt\n" << endl;
-    volScalarField dpdt("dpdt", fvc::ddt(p));
+    volScalarField dpdt
+    (
+        IOobject
+        (
+            "dpdt",
+            runTime.timeName(),
+            mesh
+        ),
+        mesh,
+        dimensionedScalar("dpdt", p.dimensions()/dimTime, 0)
+    );
 
     Info<< "Creating field kinetic energy K\n" << endl;
     volScalarField K("K", 0.5*magSqr(U));
diff --git a/applications/solvers/combustion/XiFoam/pEqn.H b/applications/solvers/combustion/XiFoam/pEqn.H
index 723df7af982da3ee4d48cb32cbbe10cc1be68c03..1543ca539a6793ee15b3df87dec596e415600422 100644
--- a/applications/solvers/combustion/XiFoam/pEqn.H
+++ b/applications/solvers/combustion/XiFoam/pEqn.H
@@ -70,4 +70,7 @@ U = HbyA - rAU*fvc::grad(p);
 U.correctBoundaryConditions();
 K = 0.5*magSqr(U);
 
-dpdt = fvc::ddt(p);
+if (thermo.dpdt())
+{
+    dpdt = fvc::ddt(p);
+}
diff --git a/applications/solvers/combustion/chemFoam/Make/options b/applications/solvers/combustion/chemFoam/Make/options
index d5a7a75202f6542ae39a84fb27fa6eee406318b4..7b95c2f16f7a1edd45273879385e064d33ebe805 100644
--- a/applications/solvers/combustion/chemFoam/Make/options
+++ b/applications/solvers/combustion/chemFoam/Make/options
@@ -14,7 +14,7 @@ EXE_LIBS = \
     -lfiniteVolume \
     -lcompressibleRASModels \
     -lreactionThermophysicalModels \
-    -lbasicThermophysicalModels \
+    -lfluidThermophysicalModels \
     -lchemistryModel \
     -lODE \
     -lthermophysicalFunctions \
diff --git a/applications/solvers/combustion/chemFoam/createSingleCellMesh.H b/applications/solvers/combustion/chemFoam/createSingleCellMesh.H
index c125a7f31fb7dc6b7651df9dfb6d09ba99a0072a..e5e7de6496f97f675f3d71a0b55fa9fbeb5a2ff1 100644
--- a/applications/solvers/combustion/chemFoam/createSingleCellMesh.H
+++ b/applications/solvers/combustion/chemFoam/createSingleCellMesh.H
@@ -33,6 +33,14 @@ fvMesh mesh
 
 List<polyPatch*> patches(1);
 
-patches[0] = new emptyPolyPatch("boundary", 6, 0, 0, mesh.boundaryMesh());
+patches[0] = new emptyPolyPatch
+(
+    "boundary",
+    6,
+    0,
+    0,
+    mesh.boundaryMesh(),
+    emptyPolyPatch::typeName
+);
 
 mesh.addFvPatches(patches);
diff --git a/applications/solvers/combustion/coldEngineFoam/Make/options b/applications/solvers/combustion/coldEngineFoam/Make/options
index dfd9248ded0419b53563798ce68372c9b42fb928..5af1f2fd617c31bd3da68a85f86d39f3a9f9597d 100644
--- a/applications/solvers/combustion/coldEngineFoam/Make/options
+++ b/applications/solvers/combustion/coldEngineFoam/Make/options
@@ -13,6 +13,6 @@ EXE_LIBS = \
     -lcompressibleTurbulenceModel \
     -lcompressibleRASModels \
     -lcompressibleLESModels \
-    -lbasicThermophysicalModels \
+    -lfluidThermophysicalModels \
     -lspecie \
     -lfiniteVolume
diff --git a/applications/solvers/combustion/coldEngineFoam/createFields.H b/applications/solvers/combustion/coldEngineFoam/createFields.H
index 04465505797db2ed840bebfdc8db684e1e30a4ee..f97c40eab9efa83afbce87606d4386d833d47b1e 100644
--- a/applications/solvers/combustion/coldEngineFoam/createFields.H
+++ b/applications/solvers/combustion/coldEngineFoam/createFields.H
@@ -55,7 +55,17 @@
     );
 
     Info<< "Creating field dpdt\n" << endl;
-    volScalarField dpdt("dpdt", fvc::ddt(p));
+    volScalarField dpdt
+    (
+        IOobject
+        (
+            "dpdt",
+            runTime.timeName(),
+            mesh
+        ),
+        mesh,
+        dimensionedScalar("dpdt", p.dimensions()/dimTime, 0)
+    );
 
     Info<< "Creating field kinetic energy K\n" << endl;
     volScalarField K("K", 0.5*magSqr(U));
diff --git a/applications/solvers/combustion/engineFoam/Make/options b/applications/solvers/combustion/engineFoam/Make/options
index cf5fa5febe38f3057fef233376bf24e30796286a..ff38fdf05192bcfac7d2133718dadd6fdd3cb721 100644
--- a/applications/solvers/combustion/engineFoam/Make/options
+++ b/applications/solvers/combustion/engineFoam/Make/options
@@ -13,7 +13,7 @@ EXE_LIBS = \
     -lcompressibleTurbulenceModel \
     -lcompressibleRASModels \
     -lcompressibleLESModels \
-    -lbasicThermophysicalModels \
+    -lfluidThermophysicalModels \
     -lreactionThermophysicalModels \
     -lspecie \
     -llaminarFlameSpeedModels \
diff --git a/applications/solvers/combustion/engineFoam/pEqn.H b/applications/solvers/combustion/engineFoam/pEqn.H
index 00603dc7d917e6a6adce071e40f9edd68690088b..d66cdd8130414be096689534cd183f760c51e27a 100644
--- a/applications/solvers/combustion/engineFoam/pEqn.H
+++ b/applications/solvers/combustion/engineFoam/pEqn.H
@@ -64,4 +64,7 @@ U = HbyA - rAU*fvc::grad(p);
 U.correctBoundaryConditions();
 K = 0.5*magSqr(U);
 
-dpdt = fvc::ddt(p);
+if (thermo.dpdt())
+{
+    dpdt = fvc::ddt(p);
+}
diff --git a/applications/solvers/combustion/fireFoam/Make/options b/applications/solvers/combustion/fireFoam/Make/options
index f1f6e1d9514c951717d78bbff07f9e658eabaab1..861bde659c1909dc799402c71c154400d023161f 100644
--- a/applications/solvers/combustion/fireFoam/Make/options
+++ b/applications/solvers/combustion/fireFoam/Make/options
@@ -6,7 +6,7 @@ EXE_INC = \
     -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/solid/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
-    -I$(LIB_SRC)/thermophysicalModels/basicSolidThermo/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/solidThermo/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/chemistryModel/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/solidChemistryModel/lnInclude \
     -I$(LIB_SRC)/combustionModels/lnInclude \
@@ -33,7 +33,7 @@ EXE_LIBS = \
     -lcompressibleRASModels \
     -lcompressibleLESModels \
     -lspecie \
-    -lbasicThermophysicalModels \
+    -lfluidThermophysicalModels \
     -lsolidProperties \
     -lsolidMixtureProperties \
     -lthermophysicalFunctions \
diff --git a/applications/solvers/combustion/fireFoam/createFields.H b/applications/solvers/combustion/fireFoam/createFields.H
index 555e09aefbaa6636a63a5a807e045e1fbcb7088f..873ae28a074ac96101b4fe1cd84df78b92944446 100644
--- a/applications/solvers/combustion/fireFoam/createFields.H
+++ b/applications/solvers/combustion/fireFoam/createFields.H
@@ -85,7 +85,17 @@
 
 
     Info<< "Creating field dpdt\n" << endl;
-    volScalarField dpdt("dpdt", fvc::ddt(p));
+    volScalarField dpdt
+    (
+        IOobject
+        (
+            "dpdt",
+            runTime.timeName(),
+            mesh
+        ),
+        mesh,
+        dimensionedScalar("dpdt", p.dimensions()/dimTime, 0)
+    );
 
     Info<< "Creating field kinetic energy K\n" << endl;
     volScalarField K("K", 0.5*magSqr(U));
diff --git a/applications/solvers/combustion/fireFoam/pEqn.H b/applications/solvers/combustion/fireFoam/pEqn.H
index 22c3f0139ad5f9801d7f3f00fb1d173d90c51d35..4c33f5633e1c6b984488bea990e1a142d5da669c 100644
--- a/applications/solvers/combustion/fireFoam/pEqn.H
+++ b/applications/solvers/combustion/fireFoam/pEqn.H
@@ -52,4 +52,7 @@ p = p_rgh + rho*gh;
 
 K = 0.5*magSqr(U);
 
-dpdt = fvc::ddt(p);
+if (thermo.dpdt())
+{
+    dpdt = fvc::ddt(p);
+}
diff --git a/applications/solvers/combustion/reactingFoam/Make/options b/applications/solvers/combustion/reactingFoam/Make/options
index 8eb6d4cabdac7d75a037f5f639685739bdb30b45..46b69a63cd523c4af2fd12d5f78a228fe64c8b96 100644
--- a/applications/solvers/combustion/reactingFoam/Make/options
+++ b/applications/solvers/combustion/reactingFoam/Make/options
@@ -14,7 +14,7 @@ EXE_LIBS = \
     -lcompressibleLESModels \
     -lreactionThermophysicalModels \
     -lspecie \
-    -lbasicThermophysicalModels \
+    -lfluidThermophysicalModels \
     -lchemistryModel \
     -lODE \
     -lfiniteVolume \
diff --git a/applications/solvers/combustion/reactingFoam/createFields.H b/applications/solvers/combustion/reactingFoam/createFields.H
index 21a7fac1e79057ce2698fce1c4224292913fd824..24f4135d7d72289fea453abe59be942f77a6e163 100644
--- a/applications/solvers/combustion/reactingFoam/createFields.H
+++ b/applications/solvers/combustion/reactingFoam/createFields.H
@@ -62,7 +62,17 @@ reaction->setTurbulence(turbulence());
 
 
 Info<< "Creating field dpdt\n" << endl;
-volScalarField dpdt("dpdt", fvc::ddt(p));
+volScalarField dpdt
+(
+    IOobject
+    (
+        "dpdt",
+        runTime.timeName(),
+        mesh
+    ),
+    mesh,
+    dimensionedScalar("dpdt", p.dimensions()/dimTime, 0)
+);
 
 Info<< "Creating field kinetic energy K\n" << endl;
 volScalarField K("K", 0.5*magSqr(U));
diff --git a/applications/solvers/combustion/reactingFoam/pEqn.H b/applications/solvers/combustion/reactingFoam/pEqn.H
index 723df7af982da3ee4d48cb32cbbe10cc1be68c03..1543ca539a6793ee15b3df87dec596e415600422 100644
--- a/applications/solvers/combustion/reactingFoam/pEqn.H
+++ b/applications/solvers/combustion/reactingFoam/pEqn.H
@@ -70,4 +70,7 @@ U = HbyA - rAU*fvc::grad(p);
 U.correctBoundaryConditions();
 K = 0.5*magSqr(U);
 
-dpdt = fvc::ddt(p);
+if (thermo.dpdt())
+{
+    dpdt = fvc::ddt(p);
+}
diff --git a/applications/solvers/combustion/rhoReactingFoam/Make/options b/applications/solvers/combustion/rhoReactingFoam/Make/options
index 5a5df2ed7b6f552e4d6a281f8b0de7cff35470fc..8d18c08338865091658fd810ae0ebb66269ba966 100644
--- a/applications/solvers/combustion/rhoReactingFoam/Make/options
+++ b/applications/solvers/combustion/rhoReactingFoam/Make/options
@@ -16,7 +16,7 @@ EXE_LIBS = \
     -lcompressibleLESModels \
     -lreactionThermophysicalModels \
     -lspecie \
-    -lbasicThermophysicalModels \
+    -lfluidThermophysicalModels \
     -lchemistryModel \
     -lODE \
     -lfiniteVolume \
diff --git a/applications/solvers/combustion/rhoReactingFoam/createFields.H b/applications/solvers/combustion/rhoReactingFoam/createFields.H
index f58e6e71bd68d5f2f6aa2db1adeff2cb84a6a7d4..c0b1a76381a2e1c25003b0ddfbe062aa837d04cd 100644
--- a/applications/solvers/combustion/rhoReactingFoam/createFields.H
+++ b/applications/solvers/combustion/rhoReactingFoam/createFields.H
@@ -64,7 +64,17 @@ reaction->setTurbulence(turbulence());
 
 
 Info<< "Creating field dpdt\n" << endl;
-volScalarField dpdt("dpdt", fvc::ddt(p));
+volScalarField dpdt
+(
+    IOobject
+    (
+        "dpdt",
+        runTime.timeName(),
+        mesh
+    ),
+    mesh,
+    dimensionedScalar("dpdt", p.dimensions()/dimTime, 0)
+);
 
 Info<< "Creating field kinetic energy K\n" << endl;
 volScalarField K("K", 0.5*magSqr(U));
diff --git a/applications/solvers/combustion/rhoReactingFoam/pEqn.H b/applications/solvers/combustion/rhoReactingFoam/pEqn.H
index ef11c677ad00c067ea9d4e3e243ed13098964300..85dbbf7f7e6902951fd9072a1ea0f8efd2c234da 100644
--- a/applications/solvers/combustion/rhoReactingFoam/pEqn.H
+++ b/applications/solvers/combustion/rhoReactingFoam/pEqn.H
@@ -89,5 +89,8 @@
     U.correctBoundaryConditions();
     K = 0.5*magSqr(U);
 
-    dpdt = fvc::ddt(p);
+    if (thermo.dpdt())
+    {
+        dpdt = fvc::ddt(p);
+    }
 }
diff --git a/applications/solvers/compressible/rhoCentralFoam/BCs/Make/options b/applications/solvers/compressible/rhoCentralFoam/BCs/Make/options
index 999e0466cdcb59be93b6fbeda75dc6cd431e74b1..6870682cf27f31edbe4ecc4b32c3db40e7afc701 100644
--- a/applications/solvers/compressible/rhoCentralFoam/BCs/Make/options
+++ b/applications/solvers/compressible/rhoCentralFoam/BCs/Make/options
@@ -5,6 +5,6 @@ EXE_INC = \
 
 LIB_LIBS = \
     -lfiniteVolume \
-    -lbasicThermophysicalModels \
+    -lfluidThermophysicalModels \
     -lspecie
 
diff --git a/applications/solvers/compressible/rhoCentralFoam/Make/options b/applications/solvers/compressible/rhoCentralFoam/Make/options
index b3be16a505ba404ffae656a60cf07afc128b55c6..4ddaa7fb9714e9ec0106886343b52157ef7fcb36 100644
--- a/applications/solvers/compressible/rhoCentralFoam/Make/options
+++ b/applications/solvers/compressible/rhoCentralFoam/Make/options
@@ -9,7 +9,7 @@ EXE_INC = \
 
 EXE_LIBS = \
     -lfiniteVolume \
-    -lbasicThermophysicalModels \
+    -lfluidThermophysicalModels \
     -lspecie \
     -lrhoCentralFoam \
     -lcompressibleTurbulenceModel \
diff --git a/applications/solvers/compressible/rhoCentralFoam/rhoCentralDyMFoam/Make/options b/applications/solvers/compressible/rhoCentralFoam/rhoCentralDyMFoam/Make/options
index 250effbee28f0d9ffbe9f1abe7d75f4ea7dd8be3..33707728f697baebd4fbc5b604e0cea1b6592549 100644
--- a/applications/solvers/compressible/rhoCentralFoam/rhoCentralDyMFoam/Make/options
+++ b/applications/solvers/compressible/rhoCentralFoam/rhoCentralDyMFoam/Make/options
@@ -10,7 +10,7 @@ EXE_INC = \
 
 EXE_LIBS = \
     -lfiniteVolume \
-    -lbasicThermophysicalModels \
+    -lfluidThermophysicalModels \
     -lspecie \
     -lrhoCentralFoam \
     -lcompressibleTurbulenceModel \
diff --git a/applications/solvers/compressible/rhoPimpleFoam/Make/options b/applications/solvers/compressible/rhoPimpleFoam/Make/options
index 47a62ae92a03b39d2fa5a6b0e9e835913c806fc0..f21e7394e4db3c8d5cf3770ecebbe46e30e4ec50 100644
--- a/applications/solvers/compressible/rhoPimpleFoam/Make/options
+++ b/applications/solvers/compressible/rhoPimpleFoam/Make/options
@@ -5,7 +5,7 @@ EXE_INC = \
     -I$(LIB_SRC)/finiteVolume/lnInclude
 
 EXE_LIBS = \
-    -lbasicThermophysicalModels \
+    -lfluidThermophysicalModels \
     -lspecie \
     -lcompressibleTurbulenceModel \
     -lcompressibleRASModels \
diff --git a/applications/solvers/compressible/rhoPimpleFoam/createFields.H b/applications/solvers/compressible/rhoPimpleFoam/createFields.H
index e81fea629125e0745d126ef65a4fab6370532b62..8d3a6ad21d6f79a95d942911ea3a2b1778aebb6c 100644
--- a/applications/solvers/compressible/rhoPimpleFoam/createFields.H
+++ b/applications/solvers/compressible/rhoPimpleFoam/createFields.H
@@ -55,7 +55,17 @@
     );
 
     Info<< "Creating field dpdt\n" << endl;
-    volScalarField dpdt("dpdt", fvc::ddt(p));
+    volScalarField dpdt
+    (
+        IOobject
+        (
+            "dpdt",
+            runTime.timeName(),
+            mesh
+        ),
+        mesh,
+        dimensionedScalar("dpdt", p.dimensions()/dimTime, 0)
+    );
 
     Info<< "Creating field kinetic energy K\n" << endl;
     volScalarField K("K", 0.5*magSqr(U));
diff --git a/applications/solvers/compressible/rhoPimpleFoam/pEqn.H b/applications/solvers/compressible/rhoPimpleFoam/pEqn.H
index 3d324e085b943574aec0f3ef60f8901e13d8cb0c..d40c66d40252239b172f7d493da57b51c92e7d93 100644
--- a/applications/solvers/compressible/rhoPimpleFoam/pEqn.H
+++ b/applications/solvers/compressible/rhoPimpleFoam/pEqn.H
@@ -94,4 +94,7 @@ U = HbyA - rAU*fvc::grad(p);
 U.correctBoundaryConditions();
 K = 0.5*magSqr(U);
 
-dpdt = fvc::ddt(p);
+if (thermo.dpdt())
+{
+    dpdt = fvc::ddt(p);
+}
diff --git a/applications/solvers/compressible/rhoPimpleFoam/rhoPimplecFoam/Make/options b/applications/solvers/compressible/rhoPimpleFoam/rhoPimplecFoam/Make/options
index d16a0ee1d88a2d9a037f976e6f5b9bc7c7074261..6d3c41f0dfa6bde2b2e91e36a9458c172ca6cf13 100644
--- a/applications/solvers/compressible/rhoPimpleFoam/rhoPimplecFoam/Make/options
+++ b/applications/solvers/compressible/rhoPimpleFoam/rhoPimplecFoam/Make/options
@@ -6,7 +6,7 @@ EXE_INC = \
     -I$(LIB_SRC)/finiteVolume/lnInclude
 
 EXE_LIBS = \
-    -lbasicThermophysicalModels \
+    -lfluidThermophysicalModels \
     -lspecie \
     -lcompressibleTurbulenceModel \
     -lcompressibleRASModels \
diff --git a/applications/solvers/compressible/rhoPimpleFoam/rhoPimplecFoam/pEqn.H b/applications/solvers/compressible/rhoPimpleFoam/rhoPimplecFoam/pEqn.H
index 7ef1b6253319db33d97a6617e6ba464e34eef840..75ed20e271981cb2d350171947c2bc680593b389 100644
--- a/applications/solvers/compressible/rhoPimpleFoam/rhoPimplecFoam/pEqn.H
+++ b/applications/solvers/compressible/rhoPimpleFoam/rhoPimplecFoam/pEqn.H
@@ -102,7 +102,10 @@ U = HbyA - rAtU*fvc::grad(p);
 U.correctBoundaryConditions();
 K = 0.5*magSqr(U);
 
-dpdt = fvc::ddt(p);
+if (thermo.dpdt())
+{
+    dpdt = fvc::ddt(p);
+}
 
 // Recalculate density from the relaxed pressure
 rho = thermo.rho();
diff --git a/applications/solvers/compressible/rhoPimpleFoam/rhoPorousMRFLTSPimpleFoam/Make/options b/applications/solvers/compressible/rhoPimpleFoam/rhoPorousMRFLTSPimpleFoam/Make/options
index dcf5a81490fdfecb93c5c995b24bf6b82e0ad9ce..5c83c910d95a4aa6b5de30075e4f764309a4bec3 100644
--- a/applications/solvers/compressible/rhoPimpleFoam/rhoPorousMRFLTSPimpleFoam/Make/options
+++ b/applications/solvers/compressible/rhoPimpleFoam/rhoPorousMRFLTSPimpleFoam/Make/options
@@ -8,7 +8,7 @@ EXE_INC = \
     -I$(LIB_SRC)/meshTools/lnInclude
 
 EXE_LIBS = \
-    -lbasicThermophysicalModels \
+    -lfluidThermophysicalModels \
     -lspecie \
     -lcompressibleTurbulenceModel \
     -lcompressibleRASModels \
diff --git a/applications/solvers/compressible/rhoPimpleFoam/rhoPorousMRFPimpleFoam/Make/options b/applications/solvers/compressible/rhoPimpleFoam/rhoPorousMRFPimpleFoam/Make/options
index 4067875fbc6f02fa0ca80cc96e289e6d8e33a894..f01ebda533b3a30f359683e4b72fde503798f830 100644
--- a/applications/solvers/compressible/rhoPimpleFoam/rhoPorousMRFPimpleFoam/Make/options
+++ b/applications/solvers/compressible/rhoPimpleFoam/rhoPorousMRFPimpleFoam/Make/options
@@ -7,7 +7,7 @@ EXE_INC = \
     -I$(LIB_SRC)/meshTools/lnInclude
 
 EXE_LIBS = \
-    -lbasicThermophysicalModels \
+    -lfluidThermophysicalModels \
     -lspecie \
     -lcompressibleTurbulenceModel \
     -lcompressibleRASModels \
diff --git a/applications/solvers/compressible/rhoPimpleFoam/rhoPorousMRFPimpleFoam/pEqn.H b/applications/solvers/compressible/rhoPimpleFoam/rhoPorousMRFPimpleFoam/pEqn.H
index 3c75e87e6461998422e897f490c5edff9668dfe2..b68823c6e3d1beaa68743ba7a973e5a17b2d44eb 100644
--- a/applications/solvers/compressible/rhoPimpleFoam/rhoPorousMRFPimpleFoam/pEqn.H
+++ b/applications/solvers/compressible/rhoPimpleFoam/rhoPorousMRFPimpleFoam/pEqn.H
@@ -96,4 +96,7 @@ U = HbyA - rAU*fvc::grad(p);
 U.correctBoundaryConditions();
 K = 0.5*magSqr(U);
 
-dpdt = fvc::ddt(p);
+if (thermo.dpdt())
+{
+    dpdt = fvc::ddt(p);
+}
diff --git a/applications/solvers/compressible/rhoSimpleFoam/Make/options b/applications/solvers/compressible/rhoSimpleFoam/Make/options
index 700a6a67535022ddcaa5f28f4d9eb721b3d30ba3..339cc53bd9e9e2e045b859cec7a26b8076168565 100644
--- a/applications/solvers/compressible/rhoSimpleFoam/Make/options
+++ b/applications/solvers/compressible/rhoSimpleFoam/Make/options
@@ -6,7 +6,7 @@ EXE_INC = \
     -I$(LIB_SRC)/finiteVolume/lnInclude
 
 EXE_LIBS = \
-    -lbasicThermophysicalModels \
+    -lfluidThermophysicalModels \
     -lspecie \
     -lcompressibleTurbulenceModel \
     -lcompressibleRASModels \
diff --git a/applications/solvers/compressible/rhoSimpleFoam/rhoPorousMRFSimpleFoam/Make/options b/applications/solvers/compressible/rhoSimpleFoam/rhoPorousMRFSimpleFoam/Make/options
index 14e73bf2a5c70655050bcbf6bdb1a45f326d8365..2d328b3ed1f86ecd981c6c3fa3bc0225bd67aa4a 100644
--- a/applications/solvers/compressible/rhoSimpleFoam/rhoPorousMRFSimpleFoam/Make/options
+++ b/applications/solvers/compressible/rhoSimpleFoam/rhoPorousMRFSimpleFoam/Make/options
@@ -9,7 +9,7 @@ EXE_INC = \
     -I$(LIB_SRC)/meshTools/lnInclude
 
 EXE_LIBS = \
-    -lbasicThermophysicalModels \
+    -lfluidThermophysicalModels \
     -lthermalPorousZone \
     -lspecie \
     -lcompressibleTurbulenceModel \
diff --git a/applications/solvers/compressible/rhoSimpleFoam/rhoSimplecFoam/Make/options b/applications/solvers/compressible/rhoSimpleFoam/rhoSimplecFoam/Make/options
index 30c1e55d3102e2ff68a095ea497bc3481bc79735..8a8553525f39f3e90f00669cec5ee8eb4633f149 100644
--- a/applications/solvers/compressible/rhoSimpleFoam/rhoSimplecFoam/Make/options
+++ b/applications/solvers/compressible/rhoSimpleFoam/rhoSimplecFoam/Make/options
@@ -7,7 +7,7 @@ EXE_INC = \
     -I$(LIB_SRC)/finiteVolume/lnInclude
 
 EXE_LIBS = \
-    -lbasicThermophysicalModels \
+    -lfluidThermophysicalModels \
     -lspecie \
     -lcompressibleRASModels \
     -lfiniteVolume \
diff --git a/applications/solvers/compressible/sonicFoam/Make/options b/applications/solvers/compressible/sonicFoam/Make/options
index a5b9436ac6e288f4f31f7ae6fdf29c7272af5357..f9c097c87482261e6fb2b54448d52c6e540f18b0 100644
--- a/applications/solvers/compressible/sonicFoam/Make/options
+++ b/applications/solvers/compressible/sonicFoam/Make/options
@@ -4,7 +4,7 @@ EXE_INC = \
     -I$(LIB_SRC)/finiteVolume/lnInclude
 
 EXE_LIBS = \
-    -lbasicThermophysicalModels \
+    -lfluidThermophysicalModels \
     -lspecie \
     -lcompressibleTurbulenceModel \
     -lcompressibleRASModels \
diff --git a/applications/solvers/compressible/sonicFoam/UEqn.H b/applications/solvers/compressible/sonicFoam/UEqn.H
index 27edbece47f8dc336fc17db7de91ff5c442f2d38..c002490b483b8d632480062c82845108d087e588 100644
--- a/applications/solvers/compressible/sonicFoam/UEqn.H
+++ b/applications/solvers/compressible/sonicFoam/UEqn.H
@@ -6,3 +6,4 @@ fvVectorMatrix UEqn
 );
 
 solve(UEqn == -fvc::grad(p));
+K = 0.5*magSqr(U);
diff --git a/applications/solvers/compressible/sonicFoam/createFields.H b/applications/solvers/compressible/sonicFoam/createFields.H
index 14ae0941d211bea33a5b74ca4a90be614e1eb0c7..3c39d3e7aad309ccefaec4c861d33decc49001a3 100644
--- a/applications/solvers/compressible/sonicFoam/createFields.H
+++ b/applications/solvers/compressible/sonicFoam/createFields.H
@@ -49,3 +49,6 @@
             thermo
         )
     );
+
+    Info<< "Creating field kinetic energy K\n" << endl;
+    volScalarField K("K", 0.5*magSqr(U));
diff --git a/applications/solvers/compressible/sonicFoam/eEqn.H b/applications/solvers/compressible/sonicFoam/eEqn.H
index 6733f528854a92ebba609a2769535f4b28fe36a3..cfd908ded81ed56b906b12b111f94d3f77b5ab1a 100644
--- a/applications/solvers/compressible/sonicFoam/eEqn.H
+++ b/applications/solvers/compressible/sonicFoam/eEqn.H
@@ -5,7 +5,7 @@
       + fvm::div(phi, e)
       - fvm::laplacian(turbulence->alphaEff(), e)
      ==
-      - p*fvc::div(phi/fvc::interpolate(rho))
+      - (fvc::ddt(rho, K) + fvc::div(phi, volScalarField("Ekp", K + p/rho)))
     );
 
     thermo.correct();
diff --git a/applications/solvers/compressible/sonicFoam/pEqn.H b/applications/solvers/compressible/sonicFoam/pEqn.H
index aeebee2df51502346e832f342259848a83934e1a..99ca26fce35e974a868a4a05a9376ba1cdb7f07c 100644
--- a/applications/solvers/compressible/sonicFoam/pEqn.H
+++ b/applications/solvers/compressible/sonicFoam/pEqn.H
@@ -39,3 +39,4 @@ for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
 
 U = HbyA - rAU*fvc::grad(p);
 U.correctBoundaryConditions();
+K = 0.5*magSqr(U);
diff --git a/applications/solvers/compressible/sonicFoam/sonicDyMFoam/Make/options b/applications/solvers/compressible/sonicFoam/sonicDyMFoam/Make/options
index 73e3e02dc4acbb2d18afafaa48863c59d5e2f3e3..263b9861edb4f2a86bc3908ab378ee0ea974dddb 100644
--- a/applications/solvers/compressible/sonicFoam/sonicDyMFoam/Make/options
+++ b/applications/solvers/compressible/sonicFoam/sonicDyMFoam/Make/options
@@ -7,7 +7,7 @@ EXE_INC = \
     -I$(LIB_SRC)/meshTools/lnInclude
 
 EXE_LIBS = \
-    -lbasicThermophysicalModels \
+    -lfluidThermophysicalModels \
     -lspecie \
     -lcompressibleTurbulenceModel \
     -lcompressibleRASModels \
diff --git a/applications/solvers/compressible/sonicFoam/sonicFoam.C b/applications/solvers/compressible/sonicFoam/sonicFoam.C
index 2697c3ea96061414054fa1e072e0a2c999a6c514..954404b6a47f225dd398d5935ba1b969931f1048 100644
--- a/applications/solvers/compressible/sonicFoam/sonicFoam.C
+++ b/applications/solvers/compressible/sonicFoam/sonicFoam.C
@@ -56,16 +56,12 @@ int main(int argc, char *argv[])
         #include "compressibleCourantNo.H"
 
         #include "rhoEqn.H"
-
         #include "UEqn.H"
 
-        #include "eEqn.H"
-
-
         // --- PISO loop
-
         for (int corr=0; corr<nCorr; corr++)
         {
+            #include "eEqn.H"
             #include "pEqn.H"
         }
 
diff --git a/applications/solvers/heatTransfer/buoyantPimpleFoam/Make/options b/applications/solvers/heatTransfer/buoyantPimpleFoam/Make/options
index 8d01214e6cf4ab096cb34b4ee3d4cc4694420798..db07a71c8601ca497a8dc9e7badfc4026aaf2cd5 100644
--- a/applications/solvers/heatTransfer/buoyantPimpleFoam/Make/options
+++ b/applications/solvers/heatTransfer/buoyantPimpleFoam/Make/options
@@ -5,7 +5,7 @@ EXE_INC = \
 
 EXE_LIBS = \
     -lmeshTools \
-    -lbasicThermophysicalModels \
+    -lfluidThermophysicalModels \
     -lspecie \
     -lcompressibleTurbulenceModel \
     -lcompressibleRASModels \
diff --git a/applications/solvers/heatTransfer/buoyantPimpleFoam/createFields.H b/applications/solvers/heatTransfer/buoyantPimpleFoam/createFields.H
index 67760f219d2d5ea7a149602b7ced25ae989dc95d..f2edc4cdba0bf5d47170ef1f06d36c7666dffb3b 100644
--- a/applications/solvers/heatTransfer/buoyantPimpleFoam/createFields.H
+++ b/applications/solvers/heatTransfer/buoyantPimpleFoam/createFields.H
@@ -75,7 +75,17 @@
     p_rgh = p - rho*gh;
 
     Info<< "Creating field dpdt\n" << endl;
-    volScalarField dpdt("dpdt", fvc::ddt(p));
+    volScalarField dpdt
+    (
+        IOobject
+        (
+            "dpdt",
+            runTime.timeName(),
+            mesh
+        ),
+        mesh,
+        dimensionedScalar("dpdt", p.dimensions()/dimTime, 0)
+    );
 
     Info<< "Creating field kinetic energy K\n" << endl;
     volScalarField K("K", 0.5*magSqr(U));
diff --git a/applications/solvers/heatTransfer/buoyantPimpleFoam/pEqn.H b/applications/solvers/heatTransfer/buoyantPimpleFoam/pEqn.H
index 96389fee7b7215f48b21c7ed64c03e0791466dde..d67011dba107dfaa529a214691903cfb81db6dc7 100644
--- a/applications/solvers/heatTransfer/buoyantPimpleFoam/pEqn.H
+++ b/applications/solvers/heatTransfer/buoyantPimpleFoam/pEqn.H
@@ -61,7 +61,10 @@
     // Second part of thermodynamic density update
     thermo.rho() += psi*p_rgh;
 
-    dpdt = fvc::ddt(p);
+    if (thermo.dpdt())
+    {
+        dpdt = fvc::ddt(p);
+    }
 
     #include "rhoEqn.H"
     #include "compressibleContinuityErrs.H"
diff --git a/applications/solvers/heatTransfer/buoyantSimpleFoam/Make/options b/applications/solvers/heatTransfer/buoyantSimpleFoam/Make/options
index c8a3b02a0fab2ece7d783785b0805e92e1d1f15d..74ddd1244659aa9f6591ddb2ea9f9b2d46881429 100644
--- a/applications/solvers/heatTransfer/buoyantSimpleFoam/Make/options
+++ b/applications/solvers/heatTransfer/buoyantSimpleFoam/Make/options
@@ -7,7 +7,7 @@ EXE_INC = \
 
 EXE_LIBS = \
     -lmeshTools \
-    -lbasicThermophysicalModels \
+    -lfluidThermophysicalModels \
     -lspecie \
     -lcompressibleTurbulenceModel \
     -lcompressibleRASModels \
diff --git a/applications/solvers/heatTransfer/buoyantSimpleRadiationFoam/Make/options b/applications/solvers/heatTransfer/buoyantSimpleRadiationFoam/Make/options
index 96c99816d0fc80bff0e7e70ab5f9c86c02c6fd32..f2ebc095ffc09ece9eca7b3713ef4ecbdc3dd407 100644
--- a/applications/solvers/heatTransfer/buoyantSimpleRadiationFoam/Make/options
+++ b/applications/solvers/heatTransfer/buoyantSimpleRadiationFoam/Make/options
@@ -9,7 +9,7 @@ EXE_INC = \
     -I$(LIB_SRC)/finiteVolume/lnInclude
 
 EXE_LIBS = \
-    -lbasicThermophysicalModels \
+    -lfluidThermophysicalModels \
     -lspecie \
     -lradiationModels \
     -lcompressibleTurbulenceModel \
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/Make/options b/applications/solvers/heatTransfer/chtMultiRegionFoam/Make/options
index 95dee86bce2577d64c554922f2b2f19c0b5ed887..f5520125f788c39bf4c6c0e507f20f8cf14d27ca 100644
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/Make/options
+++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/Make/options
@@ -10,7 +10,7 @@ EXE_INC = \
     -I$(LIB_SRC)/finiteVolume/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \
-    -I$(LIB_SRC)/thermophysicalModels/basicSolidThermo/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/solidThermo/lnInclude \
     -I$(LIB_SRC)/turbulenceModels/compressible/RAS/lnInclude \
     -I$(LIB_SRC)/turbulenceModels/compressible/turbulenceModel/lnInclude \
     -I$(LIB_SRC)/turbulenceModels \
@@ -20,8 +20,8 @@ EXE_INC = \
 
 
 EXE_LIBS = \
-    -lbasicThermophysicalModels \
-    -lbasicSolidThermo \
+    -lfluidThermophysicalModels \
+    -lsolidThermo \
     -lspecie \
     -lcompressibleTurbulenceModel \
     -lcompressibleRASModels \
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/Make/options b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/Make/options
index 306ea815f6ac1c120bcbdc398903329f1701c2dc..d5c1e47394af7f6b76f040c6455916a661561d92 100644
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/Make/options
+++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/Make/options
@@ -8,7 +8,7 @@ EXE_INC = \
     -I$(LIB_SRC)/finiteVolume/cfdTools \
     -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \
-    -I$(LIB_SRC)/thermophysicalModels/basicSolidThermo/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/solidThermo/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/radiationModels/lnInclude \
     -I$(LIB_SRC)/turbulenceModels \
     -I$(LIB_SRC)/turbulenceModels/compressible/turbulenceModel/lnInclude \
@@ -19,8 +19,8 @@ EXE_INC = \
 
 EXE_LIBS = \
     -lfiniteVolume \
-    -lbasicThermophysicalModels \
-    -lbasicSolidThermo \
+    -lfluidThermophysicalModels \
+    -lsolidThermo \
     -lspecie \
     -lcompressibleTurbulenceModel \
     -lcompressibleRASModels \
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/createFluidFields.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/createFluidFields.H
index 84ac7751d7ce7030ae0cfae9b93e05dd2584060e..81cb541ea4b646f33b2432334043cf81515d4606 100644
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/createFluidFields.H
+++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/createFluidFields.H
@@ -175,8 +175,19 @@
             i,
             new volScalarField
             (
-                "dpdt",
-                fvc::ddt(thermoFluid[i].p())
+                IOobject
+                (
+                    "dpdt",
+                    runTime.timeName(),
+                    fluidRegions[i]
+                ),
+                fluidRegions[i],
+                dimensionedScalar
+                (
+                    "dpdt",
+                    thermoFluid[i].p().dimensions()/dimTime,
+                    0
+                )
             )
         );
 
@@ -194,5 +205,3 @@
             new porousZones(fluidRegions[i])
         );
     }
-
-
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/pEqn.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/pEqn.H
index 3a4b1814bc30e9018c7437a625b95641367f721a..753c3257de033e361dbeecafced8d21f665bc5f6 100644
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/pEqn.H
+++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/pEqn.H
@@ -74,8 +74,11 @@
 
     p = p_rgh + rho*gh;
 
-    // Update pressure time derivative
-    dpdt = fvc::ddt(p);
+    // Update pressure time derivative if needed
+    if (thermo.dpdt())
+    {
+        dpdt = fvc::ddt(p);
+    }
 
     // Solve continuity
     #include "rhoEqn.H"
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/porousFluid/pPorousFluidEqn.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/porousFluid/pPorousFluidEqn.H
index cd3a309126620bab9664378550abfb63647a9abb..4257680be350d8ff36847bdec389acd5c246c04c 100644
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/porousFluid/pPorousFluidEqn.H
+++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/porousFluid/pPorousFluidEqn.H
@@ -56,6 +56,8 @@ porousU -= rAUPorous*fvc::grad(porousP);
 porousU.correctBoundaryConditions();
 porousK = 0.5*magSqr(porousU);
 
-// Update pressure time derivative
-porousdpdt = fvc::ddt(porousP);
-
+// Update pressure time derivative if needed
+if (porousThermo.dpdt())
+{
+    porousdpdt = fvc::ddt(porousP);
+}
diff --git a/applications/solvers/lagrangian/LTSReactingParcelFoam/Make/options b/applications/solvers/lagrangian/LTSReactingParcelFoam/Make/options
index bfe0fa7d39c30b9e590b7a10baaa62bf145fdb39..f87b446266f02f8b9ba8d53d12bf9f2c265ba097 100644
--- a/applications/solvers/lagrangian/LTSReactingParcelFoam/Make/options
+++ b/applications/solvers/lagrangian/LTSReactingParcelFoam/Make/options
@@ -34,7 +34,7 @@ EXE_LIBS = \
     -llagrangian \
     -llagrangianIntermediate \
     -lspecie \
-    -lbasicThermophysicalModels \
+    -lfluidThermophysicalModels \
     -lliquidProperties \
     -lliquidMixtureProperties \
     -lsolidProperties \
diff --git a/applications/solvers/lagrangian/coalChemistryFoam/Make/options b/applications/solvers/lagrangian/coalChemistryFoam/Make/options
index e008a3e3f5324af694fffbce651a134b6b835baa..adc629c4f2b168e56c74193bd05ba17571106af8 100644
--- a/applications/solvers/lagrangian/coalChemistryFoam/Make/options
+++ b/applications/solvers/lagrangian/coalChemistryFoam/Make/options
@@ -37,7 +37,7 @@ EXE_LIBS = \
     -llagrangianIntermediate \
     -lcoalCombustion\
     -lspecie \
-    -lbasicThermophysicalModels \
+    -lfluidThermophysicalModels \
     -lliquidProperties \
     -lliquidMixtureProperties \
     -lsolidProperties \
diff --git a/applications/solvers/lagrangian/coalChemistryFoam/coalChemistryFoam.C b/applications/solvers/lagrangian/coalChemistryFoam/coalChemistryFoam.C
index 7b9dff602e77a2ba68d4103f9682a84ee199549e..9cdd2b7295d70a8d74d87c9bd5b047abdff753f7 100644
--- a/applications/solvers/lagrangian/coalChemistryFoam/coalChemistryFoam.C
+++ b/applications/solvers/lagrangian/coalChemistryFoam/coalChemistryFoam.C
@@ -37,7 +37,7 @@ Description
 
 #include "fvCFD.H"
 #include "turbulenceModel.H"
-#include "basicThermoCloud.H"
+#include "fluidThermoCloud.H"
 #include "coalCloud.H"
 #include "psiCombustionModel.H"
 #include "IObasicSourceList.H"
diff --git a/applications/solvers/lagrangian/coalChemistryFoam/createClouds.H b/applications/solvers/lagrangian/coalChemistryFoam/createClouds.H
index 5dcfe1df4fa11c97439b34517bb6edf4ebae649e..87c882c9a6a34a67136fe5c844e1c175830ea23a 100644
--- a/applications/solvers/lagrangian/coalChemistryFoam/createClouds.H
+++ b/applications/solvers/lagrangian/coalChemistryFoam/createClouds.H
@@ -9,7 +9,7 @@ coalCloud coalParcels
 );
 
 Info<< "\nConstructing limestone cloud" << endl;
-basicThermoCloud limestoneParcels
+fluidThermoCloud limestoneParcels
 (
     "limestoneCloud1",
     rho,
diff --git a/applications/solvers/lagrangian/coalChemistryFoam/createFields.H b/applications/solvers/lagrangian/coalChemistryFoam/createFields.H
index 22451ca1088043e0a620d3f309cefe89d41053ba..ef241d2103cb6e9321139a04591561f50343b05f 100644
--- a/applications/solvers/lagrangian/coalChemistryFoam/createFields.H
+++ b/applications/solvers/lagrangian/coalChemistryFoam/createFields.H
@@ -111,7 +111,17 @@
     combustion->setTurbulence(turbulence());
 
     Info<< "Creating field dpdt\n" << endl;
-    volScalarField dpdt("dpdt", fvc::ddt(p));
+    volScalarField dpdt
+    (
+        IOobject
+        (
+            "dpdt",
+            runTime.timeName(),
+            mesh
+        ),
+        mesh,
+        dimensionedScalar("dpdt", p.dimensions()/dimTime, 0)
+    );
 
     Info<< "Creating field kinetic energy K\n" << endl;
     volScalarField K("K", 0.5*magSqr(U));
diff --git a/applications/solvers/lagrangian/coalChemistryFoam/pEqn.H b/applications/solvers/lagrangian/coalChemistryFoam/pEqn.H
index 3a61b28e60a4c3deec5b3aa64fafb42a1c8ffe08..22d927ca6b109b721d4c36f579c6057575b098f0 100644
--- a/applications/solvers/lagrangian/coalChemistryFoam/pEqn.H
+++ b/applications/solvers/lagrangian/coalChemistryFoam/pEqn.H
@@ -82,4 +82,7 @@ sources.correct(U);
 
 K = 0.5*magSqr(U);
 
-dpdt = fvc::ddt(p);
+if (thermo.dpdt())
+{
+    dpdt = fvc::ddt(p);
+}
diff --git a/applications/solvers/lagrangian/icoUncoupledKinematicParcelDyMFoam/Make/options b/applications/solvers/lagrangian/icoUncoupledKinematicParcelDyMFoam/Make/options
index f7bb7d2f2d26c5dc2efb6d8830df8f885d317a5e..4535f635dcd0452e4d818ac938680a29f257013b 100644
--- a/applications/solvers/lagrangian/icoUncoupledKinematicParcelDyMFoam/Make/options
+++ b/applications/solvers/lagrangian/icoUncoupledKinematicParcelDyMFoam/Make/options
@@ -21,7 +21,7 @@ EXE_LIBS = \
     -llagrangian \
     -llagrangianIntermediate \
     -lthermophysicalFunctions \
-    -lbasicThermophysicalModels \
+    -lfluidThermophysicalModels \
     -lspecie \
     -lradiationModels \
     -lincompressibleRASModels \
diff --git a/applications/solvers/lagrangian/icoUncoupledKinematicParcelDyMFoam/icoUncoupledKinematicParcelDyMFoam.C b/applications/solvers/lagrangian/icoUncoupledKinematicParcelDyMFoam/icoUncoupledKinematicParcelDyMFoam.C
index 557344fa62b428bd3c3761a620a7bdcb1b0fb102..8f7619cdd3fc1aa593e39cd1b6ddc38536821b0a 100644
--- a/applications/solvers/lagrangian/icoUncoupledKinematicParcelDyMFoam/icoUncoupledKinematicParcelDyMFoam.C
+++ b/applications/solvers/lagrangian/icoUncoupledKinematicParcelDyMFoam/icoUncoupledKinematicParcelDyMFoam.C
@@ -72,7 +72,7 @@ int main(int argc, char *argv[])
 
         laminarTransport.correct();
 
-        mu = nu*rhoInfValue;
+        mu = laminarTransport.nu()*rhoInfValue;
 
         kinematicCloud.evolve();
 
diff --git a/applications/solvers/lagrangian/icoUncoupledKinematicParcelFoam/Make/options b/applications/solvers/lagrangian/icoUncoupledKinematicParcelFoam/Make/options
index 9986f9f78bcb87ddd54524d5b021e62aca5335a0..cb0f90524a56003c87aa192cba3889fca575eac3 100644
--- a/applications/solvers/lagrangian/icoUncoupledKinematicParcelFoam/Make/options
+++ b/applications/solvers/lagrangian/icoUncoupledKinematicParcelFoam/Make/options
@@ -17,7 +17,7 @@ EXE_LIBS = \
     -llagrangian \
     -llagrangianIntermediate \
     -lthermophysicalFunctions \
-    -lbasicThermophysicalModels \
+    -lfluidThermophysicalModels \
     -lspecie \
     -lradiationModels \
     -lincompressibleRASModels \
diff --git a/applications/solvers/lagrangian/icoUncoupledKinematicParcelFoam/createFields.H b/applications/solvers/lagrangian/icoUncoupledKinematicParcelFoam/createFields.H
index 125f8706d10699ec1adf5d4e9d4e7d851ee89393..4a9dc609e93e0c854b7c3d4eae48f8648d93f781 100644
--- a/applications/solvers/lagrangian/icoUncoupledKinematicParcelFoam/createFields.H
+++ b/applications/solvers/lagrangian/icoUncoupledKinematicParcelFoam/createFields.H
@@ -54,8 +54,6 @@
         incompressible::turbulenceModel::New(U, phi, laminarTransport)
     );
 
-    const volScalarField nu(laminarTransport.nu());
-
     volScalarField mu
     (
         IOobject
@@ -66,7 +64,7 @@
             IOobject::NO_READ,
             IOobject::AUTO_WRITE
         ),
-        nu*rhoInfValue
+        laminarTransport.nu()*rhoInfValue
     );
 
     word kinematicCloudName("kinematicCloud");
diff --git a/applications/solvers/lagrangian/icoUncoupledKinematicParcelFoam/icoUncoupledKinematicParcelFoam.C b/applications/solvers/lagrangian/icoUncoupledKinematicParcelFoam/icoUncoupledKinematicParcelFoam.C
index 79436625e2f99c843672258e526fca059e0ea03c..6e9c2bfe7e2f4645881be1451d59cea0288e8396 100644
--- a/applications/solvers/lagrangian/icoUncoupledKinematicParcelFoam/icoUncoupledKinematicParcelFoam.C
+++ b/applications/solvers/lagrangian/icoUncoupledKinematicParcelFoam/icoUncoupledKinematicParcelFoam.C
@@ -66,7 +66,7 @@ int main(int argc, char *argv[])
 
         laminarTransport.correct();
 
-        mu = nu*rhoInfValue;
+        mu = laminarTransport.nu()*rhoInfValue;
 
         kinematicCloud.evolve();
 
diff --git a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/Make/options b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/Make/options
index 7fc77306fd426213ac3ea3b25dd259c066a12226..1f776f0412568d449857c043483bdda8c4c44ceb 100644
--- a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/Make/options
+++ b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/Make/options
@@ -35,7 +35,7 @@ EXE_LIBS = \
     -llagrangian \
     -llagrangianIntermediate \
     -lspecie \
-    -lbasicThermophysicalModels \
+    -lfluidThermophysicalModels \
     -lliquidProperties \
     -lliquidMixtureProperties \
     -lsolidProperties \
diff --git a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/createFields.H b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/createFields.H
index 1dfb6aa284a62111e1ea7d8eb019462b1ce11695..41d5401f08e0aba408776abc7861bf93d1e0c795 100644
--- a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/createFields.H
+++ b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/createFields.H
@@ -95,7 +95,17 @@
     );
 
     Info<< "Creating field dpdt\n" << endl;
-    volScalarField dpdt("dpdt", fvc::ddt(p));
+    volScalarField dpdt
+    (
+        IOobject
+        (
+            "dpdt",
+            runTime.timeName(),
+            mesh
+        ),
+        mesh,
+        dimensionedScalar("dpdt", p.dimensions()/dimTime, 0)
+    );
 
     Info<< "Creating field kinetic energy K\n" << endl;
     volScalarField K("K", 0.5*magSqr(U));
diff --git a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/pEqn.H b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/pEqn.H
index 4c9b41bba4fa60cf456356e4df46aee135824fef..4401afc9fc8dc8a7e24993cc0c63f57a63586019 100644
--- a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/pEqn.H
+++ b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/pEqn.H
@@ -59,5 +59,8 @@
 
     K = 0.5*magSqr(U);
 
-    dpdt = fvc::ddt(p);
+    if (thermo.dpdt())
+    {
+        dpdt = fvc::ddt(p);
+    }
 }
diff --git a/applications/solvers/lagrangian/reactingParcelFilmFoam/Make/options b/applications/solvers/lagrangian/reactingParcelFilmFoam/Make/options
index 5a1c428566a1ab527773aaf7e470f1f3dac77746..a477abff475c373cff3e7d55f71c69d7706bb88e 100644
--- a/applications/solvers/lagrangian/reactingParcelFilmFoam/Make/options
+++ b/applications/solvers/lagrangian/reactingParcelFilmFoam/Make/options
@@ -29,7 +29,7 @@ EXE_LIBS = \
     -lcompressibleRASModels \
     -lcompressibleLESModels \
     -lspecie \
-    -lbasicThermophysicalModels \
+    -lfluidThermophysicalModels \
     -lsolidProperties \
     -lsolidMixtureProperties \
     -lthermophysicalFunctions \
diff --git a/applications/solvers/lagrangian/reactingParcelFilmFoam/createFields.H b/applications/solvers/lagrangian/reactingParcelFilmFoam/createFields.H
index 6b0dd8655f74942f5499de6ee9373933c806a01f..d5cd8e6aee7bf110728970fbc5dab458912b03a3 100644
--- a/applications/solvers/lagrangian/reactingParcelFilmFoam/createFields.H
+++ b/applications/solvers/lagrangian/reactingParcelFilmFoam/createFields.H
@@ -65,7 +65,17 @@
     combustion->setTurbulence(turbulence());
 
     Info<< "Creating field dpdt\n" << endl;
-    volScalarField dpdt("dpdt", fvc::ddt(p));
+    volScalarField dpdt
+    (
+        IOobject
+        (
+            "dpdt",
+            runTime.timeName(),
+            mesh
+        ),
+        mesh,
+        dimensionedScalar("dpdt", p.dimensions()/dimTime, 0)
+    );
 
     Info<< "Creating field kinetic energy K\n" << endl;
     volScalarField K("K", 0.5*magSqr(U));
diff --git a/applications/solvers/lagrangian/reactingParcelFilmFoam/pEqn.H b/applications/solvers/lagrangian/reactingParcelFilmFoam/pEqn.H
index 3f4f485cf6b7e0abe4e43577558952568598e786..6a09845b6b5822e9c71e16c5fdc0475732160b70 100644
--- a/applications/solvers/lagrangian/reactingParcelFilmFoam/pEqn.H
+++ b/applications/solvers/lagrangian/reactingParcelFilmFoam/pEqn.H
@@ -49,4 +49,7 @@ p = p_rgh + rho*gh;
 
 K = 0.5*magSqr(U);
 
-dpdt = fvc::ddt(p);
+if (thermo.dpdt())
+{
+    dpdt = fvc::ddt(p);
+}
diff --git a/applications/solvers/lagrangian/reactingParcelFoam/Make/options b/applications/solvers/lagrangian/reactingParcelFoam/Make/options
index ba327a029fc365b016c2493853f6cd9115ad1a14..6438a34c2997c626961cc2568d1a8a83d7dc33fe 100644
--- a/applications/solvers/lagrangian/reactingParcelFoam/Make/options
+++ b/applications/solvers/lagrangian/reactingParcelFoam/Make/options
@@ -35,7 +35,7 @@ EXE_LIBS = \
     -llagrangian \
     -llagrangianIntermediate \
     -lspecie \
-    -lbasicThermophysicalModels \
+    -lfluidThermophysicalModels \
     -lliquidProperties \
     -lliquidMixtureProperties \
     -lsolidProperties \
diff --git a/applications/solvers/lagrangian/reactingParcelFoam/createFields.H b/applications/solvers/lagrangian/reactingParcelFoam/createFields.H
index 3d27c50bc682812262ac065aef34485dc403a76f..ead3dac75f32d420604da05d949564ebece31943 100644
--- a/applications/solvers/lagrangian/reactingParcelFoam/createFields.H
+++ b/applications/solvers/lagrangian/reactingParcelFoam/createFields.H
@@ -72,7 +72,17 @@
     combustion->setTurbulence(turbulence());
 
     Info<< "Creating field dpdt\n" << endl;
-    volScalarField dpdt("dpdt", fvc::ddt(p));
+    volScalarField dpdt
+    (
+        IOobject
+        (
+            "dpdt",
+            runTime.timeName(),
+            mesh
+        ),
+        mesh,
+        dimensionedScalar("dpdt", p.dimensions()/dimTime, 0)
+    );
 
     Info<< "Creating field kinetic energy K\n" << endl;
     volScalarField K("K", 0.5*magSqr(U));
diff --git a/applications/solvers/lagrangian/reactingParcelFoam/pEqn.H b/applications/solvers/lagrangian/reactingParcelFoam/pEqn.H
index 511347cdce5a5971ca746881482fae31e04a5bed..d476a6bda8004f209adf65a540e53415e6a5edf1 100644
--- a/applications/solvers/lagrangian/reactingParcelFoam/pEqn.H
+++ b/applications/solvers/lagrangian/reactingParcelFoam/pEqn.H
@@ -77,4 +77,7 @@ U.correctBoundaryConditions();
 sources.correct(U);
 K = 0.5*magSqr(U);
 
-dpdt = fvc::ddt(p);
+if (thermo.dpdt())
+{
+    dpdt = fvc::ddt(p);
+}
diff --git a/applications/solvers/lagrangian/sprayFoam/Make/options b/applications/solvers/lagrangian/sprayFoam/Make/options
index 647a53c1b4ec619834a8a677e68b14004d2c3705..0d5e4b6dd4863150beb6a15dc2a71bffc72963a6 100644
--- a/applications/solvers/lagrangian/sprayFoam/Make/options
+++ b/applications/solvers/lagrangian/sprayFoam/Make/options
@@ -37,7 +37,7 @@ EXE_LIBS = \
     -llagrangianIntermediate \
     -llagrangianSpray \
     -lspecie \
-    -lbasicThermophysicalModels \
+    -lfluidThermophysicalModels \
     -lliquidProperties \
     -lliquidMixtureProperties \
     -lsolidProperties \
diff --git a/applications/solvers/lagrangian/sprayFoam/sprayEngineFoam/Make/options b/applications/solvers/lagrangian/sprayFoam/sprayEngineFoam/Make/options
index f32b47478d1ea2e0d006a8e76061ccc41b29a3f8..d9ae7414b2b989af4a323faaafae2b47e75a8885 100644
--- a/applications/solvers/lagrangian/sprayFoam/sprayEngineFoam/Make/options
+++ b/applications/solvers/lagrangian/sprayFoam/sprayEngineFoam/Make/options
@@ -39,7 +39,7 @@ EXE_LIBS = \
     -llagrangianIntermediate \
     -llagrangianSpray \
     -lspecie \
-    -lbasicThermophysicalModels \
+    -lfluidThermophysicalModels \
     -lliquidProperties \
     -lliquidMixtureProperties \
     -lsolidProperties \
diff --git a/applications/solvers/lagrangian/sprayFoam/sprayEngineFoam/pEqn.H b/applications/solvers/lagrangian/sprayFoam/sprayEngineFoam/pEqn.H
index 1bdc5cf996cdf991894fda4d354fbacf930f197b..475077d3179c7e33c053b9b1e05640cdac521456 100644
--- a/applications/solvers/lagrangian/sprayFoam/sprayEngineFoam/pEqn.H
+++ b/applications/solvers/lagrangian/sprayFoam/sprayEngineFoam/pEqn.H
@@ -77,4 +77,7 @@ U.correctBoundaryConditions();
 sources.correct(U);
 K = 0.5*magSqr(U);
 
-dpdt = fvc::ddt(p);
+if (thermo.dpdt())
+{
+    dpdt = fvc::ddt(p);
+}
diff --git a/applications/solvers/lagrangian/uncoupledKinematicParcelFoam/Make/options b/applications/solvers/lagrangian/uncoupledKinematicParcelFoam/Make/options
index d302015a3140a22865e1becbadc725afd5ed5b05..12c7c1c551124077ff728b972778e9c0a303b38c 100644
--- a/applications/solvers/lagrangian/uncoupledKinematicParcelFoam/Make/options
+++ b/applications/solvers/lagrangian/uncoupledKinematicParcelFoam/Make/options
@@ -15,7 +15,7 @@ EXE_LIBS = \
     -llagrangian \
     -llagrangianIntermediate \
     -lthermophysicalFunctions \
-    -lbasicThermophysicalModels \
+    -lfluidThermophysicalModels \
     -lspecie \
     -lradiationModels \
     -lcompressibleTurbulenceModel \
diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/createFields.H b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/createFields.H
index c969d827d5ffd781a6657125c2700021272651c3..e0cd5328c98a5585040b805c5257cf676ab24996 100644
--- a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/createFields.H
+++ b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/createFields.H
@@ -374,7 +374,17 @@
 
 
     Info<< "Creating field dpdt\n" << endl;
-    volScalarField dpdt("dpdt", fvc::ddt(p));
+    volScalarField dpdt
+    (
+        IOobject
+        (
+            "dpdt",
+            runTime.timeName(),
+            mesh
+        ),
+        mesh,
+        dimensionedScalar("dpdt", p.dimensions()/dimTime, 0)
+    );
 
     Info<< "Creating field kinetic energy K\n" << endl;
     volScalarField K1("K1", 0.5*magSqr(U1));
diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/pEqn.H b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/pEqn.H
index d5a5d20631ab6c02f01825477b661120816a3b9e..f7010b1c459cc8419b658797c7d7e4998ba1ab3a 100644
--- a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/pEqn.H
+++ b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/pEqn.H
@@ -180,5 +180,8 @@
     K1 = 0.5*magSqr(U1);
     K2 = 0.5*magSqr(U2);
 
-    dpdt = fvc::ddt(p);
+    //***HGW if (thermo.dpdt())
+    {
+        dpdt = fvc::ddt(p);
+    }
 }
diff --git a/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseSystem/multiphaseSystem.C b/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseSystem/multiphaseSystem.C
index 4dd5c2ef51ba488dda6833bbee861def1e6ad4bd..d1804b5b6dfe606997829f909b56a380df1fa2e7 100644
--- a/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseSystem/multiphaseSystem.C
+++ b/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseSystem/multiphaseSystem.C
@@ -403,11 +403,6 @@ Foam::multiphaseSystem::multiphaseSystem
     calcAlphas();
     alphas_.write();
 
-    forAllIter(PtrDictionary<phaseModel>, phases_, iter)
-    {
-        phaseModelTable_.add(iter());
-    }
-
     interfaceDictTable dragModelsDict(lookup("drag"));
 
     forAllConstIter(interfaceDictTable, dragModelsDict, iter)
@@ -418,8 +413,8 @@ Foam::multiphaseSystem::multiphaseSystem
             dragModel::New
             (
                 iter(),
-                *phaseModelTable_.find(iter.key().first())(),
-                *phaseModelTable_.find(iter.key().second())()
+                *phases_.lookup(iter.key().first()),
+                *phases_.lookup(iter.key().second())
             ).ptr()
         );
     }
diff --git a/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseSystem/multiphaseSystem.H b/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseSystem/multiphaseSystem.H
index 33ba3d76e926506d522797f2c16461841b77c344..b9238c99282fb5c86996efa4fafc2e5a64e976f0 100644
--- a/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseSystem/multiphaseSystem.H
+++ b/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseSystem/multiphaseSystem.H
@@ -159,25 +159,6 @@ private:
         //- Dictionary of phases
         PtrDictionary<phaseModel> phases_;
 
-        //- phaseModelTable
-        class phaseModelTable
-        :
-            public HashTable<const phaseModel*>
-        {
-        public:
-
-            phaseModelTable()
-            {}
-
-            void add(const phaseModel& pm)
-            {
-                this->insert(pm.name(), &pm);
-            }
-        };
-
-        //- Phase model table for quick lookup
-        phaseModelTable phaseModelTable_;
-
         const fvMesh& mesh_;
         const surfaceScalarField& phi_;
 
diff --git a/applications/test/dictionary/testDict b/applications/test/dictionary/testDict
index 5fdee9401c9ef2c15bdbdf099d0511589202d8ba..af6c565f6fbaeeb282930ab9560dc09ba7d3e05e 100644
--- a/applications/test/dictionary/testDict
+++ b/applications/test/dictionary/testDict
@@ -51,7 +51,7 @@ boundaryField
     inlet_4  { $inactive }
     inlet_5  "a primitiveEntry is squashed by a directory entry";
     inlet_5  { $inactive }
-    inlet_6  { $inactive }
+    inlet_6  { $.inactive }     // Test scoping
     inlet_7  { $inactive }
     inlet_8  { $inactive }
 
diff --git a/applications/test/dictionary/testDictRegex b/applications/test/dictionary/testDictRegex
index c7eeef26138ca543fe92773099ccfc185587cdd4..4a24a74ef3e586d77a87e0b80625dab304d1acd4 100644
--- a/applications/test/dictionary/testDictRegex
+++ b/applications/test/dictionary/testDictRegex
@@ -24,7 +24,7 @@ keyY        parentValue5;
 "(.*)Dict"
 {
     foo         subdictValue0;
-    bar         $f.*;         // should this really match 'foo'?
+    //bar         $f.*;         // should this really match 'foo'?
 
     // result is dependent on insert order!
     "a.*c"      subdictValue3;
diff --git a/applications/test/pointField/Test-PointField.C b/applications/test/pointField/Test-PointField.C
index 8646d87801396828e2d6b8e496d0f17293f922f6..56528228e1b4faf25e44e3592fcd135c994ee46c 100644
--- a/applications/test/pointField/Test-PointField.C
+++ b/applications/test/pointField/Test-PointField.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -43,7 +43,7 @@ int main(int argc, char *argv[])
 #   include "createTime.H"
 #   include "createMesh.H"
 
-    pointMesh pMesh(mesh);
+    const pointMesh& pMesh = pointMesh::New(mesh);
 
     pointVectorField U
     (
diff --git a/applications/utilities/mesh/advanced/autoRefineMesh/autoRefineMesh.C b/applications/utilities/mesh/advanced/autoRefineMesh/autoRefineMesh.C
index 22b757e8610b237124c30c910ec93dac4074b3bb..b158dbae38ef9f340b70ce62395e17c0d95d83bc 100644
--- a/applications/utilities/mesh/advanced/autoRefineMesh/autoRefineMesh.C
+++ b/applications/utilities/mesh/advanced/autoRefineMesh/autoRefineMesh.C
@@ -208,7 +208,8 @@ label addPatch(polyMesh& mesh, const word& patchName)
                 0,
                 mesh.nInternalFaces(),
                 patchI,
-                patches
+                patches,
+                emptyPolyPatch::typeName
             );
 
         forAll(patches, i)
diff --git a/applications/utilities/mesh/advanced/refineHexMesh/refineHexMesh.C b/applications/utilities/mesh/advanced/refineHexMesh/refineHexMesh.C
index 876d46d9846c894f35448c822ca0ac8e4ef7d3bc..94aecd2ffcef7a4b8f52e614d4a54ea2b0c37d09 100644
--- a/applications/utilities/mesh/advanced/refineHexMesh/refineHexMesh.C
+++ b/applications/utilities/mesh/advanced/refineHexMesh/refineHexMesh.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -60,8 +60,6 @@ int main(int argc, char *argv[])
 #   include "createMesh.H"
     const word oldInstance = mesh.pointsInstance();
 
-    pointMesh pMesh(mesh);
-
     word cellSetName(args.args()[1]);
     const bool overwrite = args.optionFound("overwrite");
 
@@ -114,11 +112,10 @@ int main(int argc, char *argv[])
 
     // Read point fields
     PtrList<pointScalarField> psFlds;
-    ReadFields(pMesh, objects, psFlds);
+    ReadFields(pointMesh::New(mesh), objects, psFlds);
 
     PtrList<pointVectorField> pvFlds;
-    ReadFields(pMesh, objects, pvFlds);
-
+    ReadFields(pointMesh::New(mesh), objects, pvFlds);
 
 
     // Construct refiner without unrefinement. Read existing point/cell level.
@@ -164,7 +161,6 @@ int main(int argc, char *argv[])
 
     // Update fields
     mesh.updateMesh(map);
-    pMesh.updateMesh(map);
 
     // Update numbering of cells/vertices.
     meshCutter.updateMesh(map);
@@ -173,7 +169,6 @@ int main(int argc, char *argv[])
     if (map().hasMotionPoints())
     {
         mesh.movePoints(map().preMotionPoints());
-        pMesh.movePoints(map().preMotionPoints());
     }
 
     Pout<< "Refined from " << returnReduce(map().nOldCells(), sumOp<label>())
diff --git a/applications/utilities/mesh/conversion/fluent3DMeshToFoam/fluent3DMeshToFoam.L b/applications/utilities/mesh/conversion/fluent3DMeshToFoam/fluent3DMeshToFoam.L
index c67f5b289b4e10ee29cad4d993db5b66667fd6c1..54055e8406f28b35e7c415f0c5ed6eb17a478924 100644
--- a/applications/utilities/mesh/conversion/fluent3DMeshToFoam/fluent3DMeshToFoam.L
+++ b/applications/utilities/mesh/conversion/fluent3DMeshToFoam/fluent3DMeshToFoam.L
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -1113,7 +1113,8 @@ int main(int argc, char *argv[])
                 0,
                 0,
                 patchi,
-                mesh.boundaryMesh()
+                mesh.boundaryMesh(),
+                polyPatch::typeName
             );
         }
     }
diff --git a/applications/utilities/mesh/generation/extrude/extrudeMesh/Make/files b/applications/utilities/mesh/generation/extrude/extrudeMesh/Make/files
index f5a718066dbf105696cfbb28e0023345c7375e20..211c09c94e1664b5d6316d910ddecd30efd79d01 100644
--- a/applications/utilities/mesh/generation/extrude/extrudeMesh/Make/files
+++ b/applications/utilities/mesh/generation/extrude/extrudeMesh/Make/files
@@ -1,3 +1,4 @@
+extrudedMesh/extrudedMesh.C
 extrudeMesh.C
 
 EXE = $(FOAM_APPBIN)/extrudeMesh
diff --git a/applications/utilities/mesh/generation/extrude/extrudeMesh/extrudedMesh/extrudedMesh.C b/applications/utilities/mesh/generation/extrude/extrudeMesh/extrudedMesh/extrudedMesh.C
index 4aeb9809f80cea75a2be5cdb3ab346d4437ec9a1..fbcfe5c9082095463c11f2fd47739400bc837545 100644
--- a/applications/utilities/mesh/generation/extrude/extrudeMesh/extrudedMesh/extrudedMesh.C
+++ b/applications/utilities/mesh/generation/extrude/extrudeMesh/extrudedMesh/extrudedMesh.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -24,10 +24,6 @@ License
 \*---------------------------------------------------------------------------*/
 
 #include "extrudedMesh.H"
-#include "wallPolyPatch.H"
-#include "meshTools.H"
-#include "ListOps.H"
-#include "OFstream.H"
 
 // * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
 
@@ -41,343 +37,4 @@ bool Foam::extrudedMesh::sameOrder(const face& f, const edge& e)
 }
 
 
-template
-<
-    class Face,
-    template<class> class FaceList,
-    class PointField
->
-Foam::Xfer<Foam::pointField> Foam::extrudedMesh::extrudedPoints
-(
-    const PrimitivePatch<Face, FaceList, PointField>& extrudePatch,
-    const extrudeModel& model
-)
-{
-    const pointField& surfacePoints = extrudePatch.localPoints();
-    const vectorField& surfaceNormals = extrudePatch.pointNormals();
-
-    const label nLayers = model.nLayers();
-
-    pointField ePoints((nLayers + 1)*surfacePoints.size());
-
-    for (label layer=0; layer<=nLayers; layer++)
-    {
-        label offset = layer*surfacePoints.size();
-
-        forAll(surfacePoints, i)
-        {
-            ePoints[offset + i] = model
-            (
-                surfacePoints[i],
-                surfaceNormals[i],
-                layer
-            );
-        }
-    }
-
-    // return points for transferring
-    return xferMove(ePoints);
-}
-
-
-template<class Face, template<class> class FaceList, class PointField>
-Foam::Xfer<Foam::faceList> Foam::extrudedMesh::extrudedFaces
-(
-    const PrimitivePatch<Face, FaceList, PointField>& extrudePatch,
-    const extrudeModel& model
-)
-{
-    const pointField& surfacePoints = extrudePatch.localPoints();
-    const List<face>& surfaceFaces = extrudePatch.localFaces();
-    const edgeList& surfaceEdges = extrudePatch.edges();
-    const label nInternalEdges = extrudePatch.nInternalEdges();
-
-    const label nLayers = model.nLayers();
-
-    label nFaces =
-        (nLayers + 1)*surfaceFaces.size() + nLayers*surfaceEdges.size();
-
-    faceList eFaces(nFaces);
-
-    labelList quad(4);
-    label facei = 0;
-
-    // Internal faces
-    for (label layer=0; layer<nLayers; layer++)
-    {
-        label currentLayerOffset = layer*surfacePoints.size();
-        label nextLayerOffset = currentLayerOffset + surfacePoints.size();
-
-        // Vertical faces from layer to layer+1
-        for (label edgeI=0; edgeI<nInternalEdges; edgeI++)
-        {
-            const edge& e = surfaceEdges[edgeI];
-            const labelList& edgeFaces = extrudePatch.edgeFaces()[edgeI];
-
-            face& f = eFaces[facei++];
-            f.setSize(4);
-
-            if
-            (
-                (edgeFaces[0] < edgeFaces[1])
-             == sameOrder(surfaceFaces[edgeFaces[0]], e)
-            )
-            {
-                f[0] = e[0] + currentLayerOffset;
-                f[1] = e[1] + currentLayerOffset;
-                f[2] = e[1] + nextLayerOffset;
-                f[3] = e[0] + nextLayerOffset;
-            }
-            else
-            {
-                f[0] = e[1] + currentLayerOffset;
-                f[1] = e[0] + currentLayerOffset;
-                f[2] = e[0] + nextLayerOffset;
-                f[3] = e[1] + nextLayerOffset;
-            }
-        }
-
-        // Faces between layer and layer+1
-        if (layer < nLayers-1)
-        {
-            forAll(surfaceFaces, i)
-            {
-                eFaces[facei++] =
-                    face
-                    (
-                        surfaceFaces[i] //.reverseFace()
-                      + nextLayerOffset
-                    );
-            }
-        }
-    }
-
-    // External side faces
-    for (label layer=0; layer<nLayers; layer++)
-    {
-        label currentLayerOffset = layer*surfacePoints.size();
-        label nextLayerOffset = currentLayerOffset + surfacePoints.size();
-
-        // Side faces across layer
-        for (label edgeI=nInternalEdges; edgeI<surfaceEdges.size(); edgeI++)
-        {
-            const edge& e = surfaceEdges[edgeI];
-            const labelList& edgeFaces = extrudePatch.edgeFaces()[edgeI];
-
-            face& f = eFaces[facei++];
-            f.setSize(4);
-
-            if (sameOrder(surfaceFaces[edgeFaces[0]], e))
-            {
-                f[0] = e[0] + currentLayerOffset;
-                f[1] = e[1] + currentLayerOffset;
-                f[2] = e[1] + nextLayerOffset;
-                f[3] = e[0] + nextLayerOffset;
-            }
-            else
-            {
-                f[0] = e[1] + currentLayerOffset;
-                f[1] = e[0] + currentLayerOffset;
-                f[2] = e[0] + nextLayerOffset;
-                f[3] = e[1] + nextLayerOffset;
-            }
-        }
-    }
-
-    // Bottom faces
-    forAll(surfaceFaces, i)
-    {
-        eFaces[facei++] = face(surfaceFaces[i]).reverseFace();
-    }
-
-    // Top faces
-    forAll(surfaceFaces, i)
-    {
-        eFaces[facei++] =
-            face
-            (
-                surfaceFaces[i]
-              + nLayers*surfacePoints.size()
-            );
-    }
-
-    // return points for transferring
-    return xferMove(eFaces);
-}
-
-
-template<class Face, template<class> class FaceList, class PointField>
-Foam::Xfer<Foam::cellList> Foam::extrudedMesh::extrudedCells
-(
-    const PrimitivePatch<Face, FaceList, PointField>& extrudePatch,
-    const extrudeModel& model
-)
-{
-    const List<face>& surfaceFaces = extrudePatch.localFaces();
-    const edgeList& surfaceEdges = extrudePatch.edges();
-    const label nInternalEdges = extrudePatch.nInternalEdges();
-
-    const label nLayers = model.nLayers();
-
-    cellList eCells(nLayers*surfaceFaces.size());
-
-    // Size the cells
-    forAll(surfaceFaces, i)
-    {
-        const face& f = surfaceFaces[i];
-
-        for (label layer=0; layer<nLayers; layer++)
-        {
-            eCells[i + layer*surfaceFaces.size()].setSize(f.size() + 2);
-        }
-    }
-
-    // Current face count per cell.
-    labelList nCellFaces(eCells.size(), 0);
-
-
-    label facei = 0;
-
-    for (label layer=0; layer<nLayers; layer++)
-    {
-        // Side faces from layer to layer+1
-        for (label i=0; i<nInternalEdges; i++)
-        {
-            // Get patch faces using edge
-            const labelList& edgeFaces = extrudePatch.edgeFaces()[i];
-
-            // Get cells on this layer
-            label cell0 = layer*surfaceFaces.size() + edgeFaces[0];
-            label cell1 = layer*surfaceFaces.size() + edgeFaces[1];
-
-            eCells[cell0][nCellFaces[cell0]++] = facei;
-            eCells[cell1][nCellFaces[cell1]++] = facei;
-
-            facei++;
-        }
-
-        // Faces between layer and layer+1
-        if (layer < nLayers-1)
-        {
-            forAll(surfaceFaces, i)
-            {
-                label cell0 = layer*surfaceFaces.size() + i;
-                label cell1 = (layer+1)*surfaceFaces.size() + i;
-
-                eCells[cell0][nCellFaces[cell0]++] = facei;
-                eCells[cell1][nCellFaces[cell1]++] = facei;
-
-                facei++;
-            }
-        }
-    }
-
-    // External side faces
-    for (label layer=0; layer<nLayers; layer++)
-    {
-        // Side faces across layer
-        for (label i=nInternalEdges; i<surfaceEdges.size(); i++)
-        {
-            // Get patch faces using edge
-            const labelList& edgeFaces = extrudePatch.edgeFaces()[i];
-
-            // Get cells on this layer
-            label cell0 = layer*surfaceFaces.size() + edgeFaces[0];
-
-            eCells[cell0][nCellFaces[cell0]++] = facei;
-
-            facei++;
-        }
-    }
-
-    // Top faces
-    forAll(surfaceFaces, i)
-    {
-        eCells[i][nCellFaces[i]++] = facei;
-
-        facei++;
-    }
-
-    // Bottom faces
-    forAll(surfaceFaces, i)
-    {
-        label cell0 = (nLayers-1)*surfaceFaces.size() + i;
-
-        eCells[cell0][nCellFaces[cell0]++] = facei;
-
-        facei++;
-    }
-
-    // return points for transferring
-    return xferMove(eCells);
-}
-
-
-// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
-
-template
-<
-    class Face,
-    template<class> class FaceList,
-    class PointField
->
-Foam::extrudedMesh::extrudedMesh
-(
-    const IOobject& io,
-    const PrimitivePatch<Face, FaceList, PointField>& extrudePatch,
-    const extrudeModel& model
-)
-:
-    polyMesh
-    (
-        io,
-        extrudedPoints(extrudePatch, model),
-        extrudedFaces(extrudePatch, model),
-        extrudedCells(extrudePatch, model)
-    ),
-    model_(model)
-{
-    List<polyPatch*> patches(3);
-
-    label facei = nInternalFaces();
-
-    label sz =
-        model_.nLayers()
-       *(extrudePatch.nEdges() - extrudePatch.nInternalEdges());
-
-    patches[0] = new wallPolyPatch
-    (
-        "sides",
-        sz,
-        facei,
-        0,
-        boundaryMesh()
-    );
-
-    facei += sz;
-
-    patches[1] = new polyPatch
-    (
-        "originalPatch",
-        extrudePatch.size(),
-        facei,
-        1,
-        boundaryMesh()
-    );
-
-    facei += extrudePatch.size();
-
-    patches[2] = new polyPatch
-    (
-        "otherSide",
-        extrudePatch.size(),
-        facei,
-        2,
-        boundaryMesh()
-    );
-
-    addPatches(patches);
-}
-
-
 // ************************************************************************* //
diff --git a/applications/utilities/mesh/generation/extrude/extrudeMesh/extrudedMesh/extrudedMesh.H b/applications/utilities/mesh/generation/extrude/extrudeMesh/extrudedMesh/extrudedMesh.H
index c0aac4bcdd3e877724eb664efbea90730ef63528..710d975f91b4aeb9979b935608214851845f14d5 100644
--- a/applications/utilities/mesh/generation/extrude/extrudeMesh/extrudedMesh/extrudedMesh.H
+++ b/applications/utilities/mesh/generation/extrude/extrudeMesh/extrudedMesh/extrudedMesh.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -28,6 +28,7 @@ Description
 
 SourceFiles
     extrudedMesh.C
+    extrudedMeshTemplates.C
 
 \*---------------------------------------------------------------------------*/
 
@@ -114,13 +115,11 @@ public:
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 #ifdef NoRepository
-#   include "extrudedMesh.C"
-#else
-#   ifdef xlC
-#   pragma implementation("extrudedMesh.C")
-#   endif
+#   include "extrudedMeshTemplates.C"
 #endif
 
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 #endif
 
 // ************************************************************************* //
diff --git a/applications/utilities/mesh/generation/extrude/extrudeMesh/extrudedMesh/extrudedMeshTemplates.C b/applications/utilities/mesh/generation/extrude/extrudeMesh/extrudedMesh/extrudedMeshTemplates.C
new file mode 100644
index 0000000000000000000000000000000000000000..97befbd4dcf82018afae36241c3da3e0451648bc
--- /dev/null
+++ b/applications/utilities/mesh/generation/extrude/extrudeMesh/extrudedMesh/extrudedMeshTemplates.C
@@ -0,0 +1,373 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "extrudedMesh.H"
+#include "wallPolyPatch.H"
+
+// * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
+
+template
+<
+    class Face,
+    template<class> class FaceList,
+    class PointField
+>
+Foam::Xfer<Foam::pointField> Foam::extrudedMesh::extrudedPoints
+(
+    const PrimitivePatch<Face, FaceList, PointField>& extrudePatch,
+    const extrudeModel& model
+)
+{
+    const pointField& surfacePoints = extrudePatch.localPoints();
+    const vectorField& surfaceNormals = extrudePatch.pointNormals();
+
+    const label nLayers = model.nLayers();
+
+    pointField ePoints((nLayers + 1)*surfacePoints.size());
+
+    for (label layer=0; layer<=nLayers; layer++)
+    {
+        label offset = layer*surfacePoints.size();
+
+        forAll(surfacePoints, i)
+        {
+            ePoints[offset + i] = model
+            (
+                surfacePoints[i],
+                surfaceNormals[i],
+                layer
+            );
+        }
+    }
+
+    // return points for transferring
+    return xferMove(ePoints);
+}
+
+
+template<class Face, template<class> class FaceList, class PointField>
+Foam::Xfer<Foam::faceList> Foam::extrudedMesh::extrudedFaces
+(
+    const PrimitivePatch<Face, FaceList, PointField>& extrudePatch,
+    const extrudeModel& model
+)
+{
+    const pointField& surfacePoints = extrudePatch.localPoints();
+    const List<face>& surfaceFaces = extrudePatch.localFaces();
+    const edgeList& surfaceEdges = extrudePatch.edges();
+    const label nInternalEdges = extrudePatch.nInternalEdges();
+
+    const label nLayers = model.nLayers();
+
+    label nFaces =
+        (nLayers + 1)*surfaceFaces.size() + nLayers*surfaceEdges.size();
+
+    faceList eFaces(nFaces);
+
+    labelList quad(4);
+    label facei = 0;
+
+    // Internal faces
+    for (label layer=0; layer<nLayers; layer++)
+    {
+        label currentLayerOffset = layer*surfacePoints.size();
+        label nextLayerOffset = currentLayerOffset + surfacePoints.size();
+
+        // Vertical faces from layer to layer+1
+        for (label edgeI=0; edgeI<nInternalEdges; edgeI++)
+        {
+            const edge& e = surfaceEdges[edgeI];
+            const labelList& edgeFaces = extrudePatch.edgeFaces()[edgeI];
+
+            face& f = eFaces[facei++];
+            f.setSize(4);
+
+            if
+            (
+                (edgeFaces[0] < edgeFaces[1])
+             == sameOrder(surfaceFaces[edgeFaces[0]], e)
+            )
+            {
+                f[0] = e[0] + currentLayerOffset;
+                f[1] = e[1] + currentLayerOffset;
+                f[2] = e[1] + nextLayerOffset;
+                f[3] = e[0] + nextLayerOffset;
+            }
+            else
+            {
+                f[0] = e[1] + currentLayerOffset;
+                f[1] = e[0] + currentLayerOffset;
+                f[2] = e[0] + nextLayerOffset;
+                f[3] = e[1] + nextLayerOffset;
+            }
+        }
+
+        // Faces between layer and layer+1
+        if (layer < nLayers-1)
+        {
+            forAll(surfaceFaces, i)
+            {
+                eFaces[facei++] =
+                    face
+                    (
+                        surfaceFaces[i] //.reverseFace()
+                      + nextLayerOffset
+                    );
+            }
+        }
+    }
+
+    // External side faces
+    for (label layer=0; layer<nLayers; layer++)
+    {
+        label currentLayerOffset = layer*surfacePoints.size();
+        label nextLayerOffset = currentLayerOffset + surfacePoints.size();
+
+        // Side faces across layer
+        for (label edgeI=nInternalEdges; edgeI<surfaceEdges.size(); edgeI++)
+        {
+            const edge& e = surfaceEdges[edgeI];
+            const labelList& edgeFaces = extrudePatch.edgeFaces()[edgeI];
+
+            face& f = eFaces[facei++];
+            f.setSize(4);
+
+            if (sameOrder(surfaceFaces[edgeFaces[0]], e))
+            {
+                f[0] = e[0] + currentLayerOffset;
+                f[1] = e[1] + currentLayerOffset;
+                f[2] = e[1] + nextLayerOffset;
+                f[3] = e[0] + nextLayerOffset;
+            }
+            else
+            {
+                f[0] = e[1] + currentLayerOffset;
+                f[1] = e[0] + currentLayerOffset;
+                f[2] = e[0] + nextLayerOffset;
+                f[3] = e[1] + nextLayerOffset;
+            }
+        }
+    }
+
+    // Bottom faces
+    forAll(surfaceFaces, i)
+    {
+        eFaces[facei++] = face(surfaceFaces[i]).reverseFace();
+    }
+
+    // Top faces
+    forAll(surfaceFaces, i)
+    {
+        eFaces[facei++] =
+            face
+            (
+                surfaceFaces[i]
+              + nLayers*surfacePoints.size()
+            );
+    }
+
+    // return points for transferring
+    return xferMove(eFaces);
+}
+
+
+template<class Face, template<class> class FaceList, class PointField>
+Foam::Xfer<Foam::cellList> Foam::extrudedMesh::extrudedCells
+(
+    const PrimitivePatch<Face, FaceList, PointField>& extrudePatch,
+    const extrudeModel& model
+)
+{
+    const List<face>& surfaceFaces = extrudePatch.localFaces();
+    const edgeList& surfaceEdges = extrudePatch.edges();
+    const label nInternalEdges = extrudePatch.nInternalEdges();
+
+    const label nLayers = model.nLayers();
+
+    cellList eCells(nLayers*surfaceFaces.size());
+
+    // Size the cells
+    forAll(surfaceFaces, i)
+    {
+        const face& f = surfaceFaces[i];
+
+        for (label layer=0; layer<nLayers; layer++)
+        {
+            eCells[i + layer*surfaceFaces.size()].setSize(f.size() + 2);
+        }
+    }
+
+    // Current face count per cell.
+    labelList nCellFaces(eCells.size(), 0);
+
+
+    label facei = 0;
+
+    for (label layer=0; layer<nLayers; layer++)
+    {
+        // Side faces from layer to layer+1
+        for (label i=0; i<nInternalEdges; i++)
+        {
+            // Get patch faces using edge
+            const labelList& edgeFaces = extrudePatch.edgeFaces()[i];
+
+            // Get cells on this layer
+            label cell0 = layer*surfaceFaces.size() + edgeFaces[0];
+            label cell1 = layer*surfaceFaces.size() + edgeFaces[1];
+
+            eCells[cell0][nCellFaces[cell0]++] = facei;
+            eCells[cell1][nCellFaces[cell1]++] = facei;
+
+            facei++;
+        }
+
+        // Faces between layer and layer+1
+        if (layer < nLayers-1)
+        {
+            forAll(surfaceFaces, i)
+            {
+                label cell0 = layer*surfaceFaces.size() + i;
+                label cell1 = (layer+1)*surfaceFaces.size() + i;
+
+                eCells[cell0][nCellFaces[cell0]++] = facei;
+                eCells[cell1][nCellFaces[cell1]++] = facei;
+
+                facei++;
+            }
+        }
+    }
+
+    // External side faces
+    for (label layer=0; layer<nLayers; layer++)
+    {
+        // Side faces across layer
+        for (label i=nInternalEdges; i<surfaceEdges.size(); i++)
+        {
+            // Get patch faces using edge
+            const labelList& edgeFaces = extrudePatch.edgeFaces()[i];
+
+            // Get cells on this layer
+            label cell0 = layer*surfaceFaces.size() + edgeFaces[0];
+
+            eCells[cell0][nCellFaces[cell0]++] = facei;
+
+            facei++;
+        }
+    }
+
+    // Top faces
+    forAll(surfaceFaces, i)
+    {
+        eCells[i][nCellFaces[i]++] = facei;
+
+        facei++;
+    }
+
+    // Bottom faces
+    forAll(surfaceFaces, i)
+    {
+        label cell0 = (nLayers-1)*surfaceFaces.size() + i;
+
+        eCells[cell0][nCellFaces[cell0]++] = facei;
+
+        facei++;
+    }
+
+    // return points for transferring
+    return xferMove(eCells);
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template
+<
+    class Face,
+    template<class> class FaceList,
+    class PointField
+>
+Foam::extrudedMesh::extrudedMesh
+(
+    const IOobject& io,
+    const PrimitivePatch<Face, FaceList, PointField>& extrudePatch,
+    const extrudeModel& model
+)
+:
+    polyMesh
+    (
+        io,
+        extrudedPoints(extrudePatch, model),
+        extrudedFaces(extrudePatch, model),
+        extrudedCells(extrudePatch, model)
+    ),
+    model_(model)
+{
+    List<polyPatch*> patches(3);
+
+    label facei = nInternalFaces();
+
+    label sz =
+        model_.nLayers()
+       *(extrudePatch.nEdges() - extrudePatch.nInternalEdges());
+
+    patches[0] = new wallPolyPatch
+    (
+        "sides",
+        sz,
+        facei,
+        0,
+        boundaryMesh(),
+        wallPolyPatch::typeName
+    );
+
+    facei += sz;
+
+    patches[1] = new polyPatch
+    (
+        "originalPatch",
+        extrudePatch.size(),
+        facei,
+        1,
+        boundaryMesh(),
+        polyPatch::typeName
+    );
+
+    facei += extrudePatch.size();
+
+    patches[2] = new polyPatch
+    (
+        "otherSide",
+        extrudePatch.size(),
+        facei,
+        2,
+        boundaryMesh(),
+        polyPatch::typeName
+    );
+
+    addPatches(patches);
+}
+
+
+// ************************************************************************* //
diff --git a/applications/utilities/mesh/generation/extrude2DMesh/extrude2DMeshApp.C b/applications/utilities/mesh/generation/extrude2DMesh/extrude2DMeshApp.C
index 667b0a9b2b895ee130461af53cd7882f1d501120..f161523ffd4c56ce1456218cc92da08075b91fa8 100644
--- a/applications/utilities/mesh/generation/extrude2DMesh/extrude2DMeshApp.C
+++ b/applications/utilities/mesh/generation/extrude2DMesh/extrude2DMeshApp.C
@@ -213,7 +213,8 @@ int main(int argc, char *argv[])
                 poly2DMesh.patchSizes()[patchI],
                 poly2DMesh.patchStarts()[patchI],
                 patchI,
-                mesh().boundaryMesh()
+                mesh().boundaryMesh(),
+                polyPatch::typeName
             );
         }
 
diff --git a/applications/utilities/mesh/generation/snappyHexMesh/snappyHexMesh.C b/applications/utilities/mesh/generation/snappyHexMesh/snappyHexMesh.C
index 9080f58e670beb940e62e2c83a49fb9f20de3e18..2372b144ec9af2d0a7e5920b3e22f9ff8281e407 100644
--- a/applications/utilities/mesh/generation/snappyHexMesh/snappyHexMesh.C
+++ b/applications/utilities/mesh/generation/snappyHexMesh/snappyHexMesh.C
@@ -47,8 +47,6 @@ Description
 #include "snapParameters.H"
 #include "layerParameters.H"
 
-#include "faceSet.H"
-#include "motionSmoother.H"
 
 using namespace Foam;
 
@@ -430,7 +428,7 @@ int main(int argc, char *argv[])
         // Refinement parameters
         refinementParameters refineParams(refineDict);
 
-        if (!overwrite)
+        if (!overwrite && !debug)
         {
             const_cast<Time&>(mesh.time())++;
         }
@@ -467,7 +465,7 @@ int main(int argc, char *argv[])
             curvature = refineParams.curvature();
         }
 
-        if (!overwrite)
+        if (!overwrite && !debug)
         {
             const_cast<Time&>(mesh.time())++;
         }
@@ -507,7 +505,7 @@ int main(int argc, char *argv[])
         }
 
 
-        if (!overwrite)
+        if (!overwrite &&  !debug)
         {
             const_cast<Time&>(mesh.time())++;
         }
diff --git a/applications/utilities/mesh/generation/snappyHexMesh/snappyHexMeshDict b/applications/utilities/mesh/generation/snappyHexMesh/snappyHexMeshDict
index db67ba8a9348b42234115ad3f4bc99af8bb6d6ff..05dcb07286c462198652d72983057bb6122eecdb 100644
--- a/applications/utilities/mesh/generation/snappyHexMesh/snappyHexMeshDict
+++ b/applications/utilities/mesh/generation/snappyHexMesh/snappyHexMeshDict
@@ -233,9 +233,17 @@ snapControls
     //  before upon reaching a correct mesh.
     nRelaxIter 5;
 
-    //- Highly experimental and wip: number of feature edge snapping
-    //  iterations. Leave out altogether to disable.
-    //nFeatureSnapIter 20;
+    // Feature snapping
+
+        //- Number of feature edge snapping iterations.
+        //  Leave out altogether to disable.
+        nFeatureSnapIter 10;
+
+        //- Detect (geometric) features by sampling the surface (default=false)
+        implicitFeatureSnap false;
+
+        //- Use castellatedMeshControls::features (default = true)
+        explicitFeatureSnap true;
 }
 
 // Settings for the layer addition.
diff --git a/applications/utilities/miscellaneous/foamDebugSwitches/Make/options b/applications/utilities/miscellaneous/foamDebugSwitches/Make/options
index ca4f0799001c144838dfd5a615783c612c74e61f..43615129c977cb6ec4a36ca752ce2482f593b556 100644
--- a/applications/utilities/miscellaneous/foamDebugSwitches/Make/options
+++ b/applications/utilities/miscellaneous/foamDebugSwitches/Make/options
@@ -1,8 +1,8 @@
 EXE_LIBS = \
     -lautoMesh \
     -lbarotropicCompressibilityModel \
-    -lbasicSolidThermo \
-    -lbasicThermophysicalModels \
+    -lsolidThermo \
+    -lfluidThermophysicalModels \
     -lblockMesh \
     -lchemistryModel \
     -lcoalCombustion \
diff --git a/applications/utilities/miscellaneous/foamInfoExec/foamInfoExec.C b/applications/utilities/miscellaneous/foamInfoExec/foamInfoExec.C
index 44ba0d624c4fe65272e9d53109a0a889b9bea385..5b85aee0771e769ba869076b6ede2c878d9d5839 100644
--- a/applications/utilities/miscellaneous/foamInfoExec/foamInfoExec.C
+++ b/applications/utilities/miscellaneous/foamInfoExec/foamInfoExec.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -94,41 +94,59 @@ int main(int argc, char *argv[])
 
             if (args.optionFound("entry"))
             {
-                wordList entryNames
-                (
-                    fileName(args.option("entry")).components(':')
-                );
+                fileName entryName(args.option("entry"));
 
-                if (dict.found(entryNames[0]))
+                const entry* entPtr = NULL;
+
+                if (entryName.find('.') != string::npos)
                 {
-                    const entry* entPtr = &dict.lookupEntry
+                    // New syntax
+                    entPtr = dict.lookupScopedEntryPtr
                     (
-                        entryNames[0],
+                        entryName,
                         false,
                         true            // wildcards
                     );
-
-                    for (int i=1; i<entryNames.size(); ++i)
+                }
+                else
+                {
+                    // Old syntax
+                    wordList entryNames(entryName.components(':'));
+                    if (dict.found(entryNames[0]))
                     {
-                        if (entPtr->dict().found(entryNames[i]))
+                        entPtr = &dict.lookupEntry
+                        (
+                            entryNames[0],
+                            false,
+                            true            // wildcards
+                        );
+
+                        for (int i=1; i<entryNames.size(); ++i)
                         {
-                            entPtr = &entPtr->dict().lookupEntry
-                            (
-                                entryNames[i],
-                                false,
-                                true    // wildcards
-                            );
-                        }
-                        else
-                        {
-                            FatalErrorIn(args.executable())
-                                << "Cannot find sub-entry " << entryNames[i]
-                                << " in entry " << args["entry"]
-                                << " in dictionary " << dictFileName;
-                            FatalError.exit(3);
+                            if (entPtr->dict().found(entryNames[i]))
+                            {
+                                entPtr = &entPtr->dict().lookupEntry
+                                (
+                                    entryNames[i],
+                                    false,
+                                    true    // wildcards
+                                );
+                            }
+                            else
+                            {
+                                FatalErrorIn(args.executable())
+                                    << "Cannot find sub-entry " << entryNames[i]
+                                    << " in entry " << args["entry"]
+                                    << " in dictionary " << dictFileName;
+                                FatalError.exit(3);
+                            }
                         }
                     }
+                }
 
+
+                if (entPtr)
+                {
                     if (args.optionFound("keywords"))
                     {
                         /*
@@ -158,7 +176,7 @@ int main(int argc, char *argv[])
                 {
                     FatalErrorIn(args.executable())
                         << "Cannot find entry "
-                        << entryNames[0]
+                        << entryName
                         << " in dictionary " << dictFileName;
                     FatalError.exit(2);
                 }
diff --git a/applications/utilities/parallelProcessing/decomposePar/decomposePar.C b/applications/utilities/parallelProcessing/decomposePar/decomposePar.C
index 49304aadcd71423d530b5c502abb0a22bd3e39b2..26d38130046bbd07965c45cd87023dc91e4930a8 100644
--- a/applications/utilities/parallelProcessing/decomposePar/decomposePar.C
+++ b/applications/utilities/parallelProcessing/decomposePar/decomposePar.C
@@ -395,7 +395,7 @@ int main(int argc, char *argv[])
 
         // Construct the point fields
         // ~~~~~~~~~~~~~~~~~~~~~~~~~~
-        pointMesh pMesh(mesh);
+        const pointMesh& pMesh = pointMesh::New(mesh);
 
         PtrList<pointScalarField> pointScalarFields;
         readFields(pMesh, objects, pointScalarFields);
diff --git a/applications/utilities/parallelProcessing/reconstructPar/reconstructPar.C b/applications/utilities/parallelProcessing/reconstructPar/reconstructPar.C
index 916a0845e5a6dffb0ba141b51fccd5f67cb2d61a..5c354531b7a52c16b047f9e09bd891179546b831 100644
--- a/applications/utilities/parallelProcessing/reconstructPar/reconstructPar.C
+++ b/applications/utilities/parallelProcessing/reconstructPar/reconstructPar.C
@@ -341,7 +341,7 @@ int main(int argc, char *argv[])
         {
             Info<< "Reconstructing point fields" << nl << endl;
 
-            pointMesh pMesh(mesh);
+            const pointMesh& pMesh = pointMesh::New(mesh);
             PtrList<pointMesh> pMeshes(procMeshes.meshes().size());
 
             forAll(pMeshes, procI)
diff --git a/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/vtkPV3Foam/vtkPV3FoamFields.C b/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/vtkPV3Foam/vtkPV3FoamFields.C
index 9a869d37b58c505848e8827201960563af4cf845..6d0e98dd4072d635fa652e216e4c0a697d987079 100644
--- a/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/vtkPV3Foam/vtkPV3FoamFields.C
+++ b/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/vtkPV3Foam/vtkPV3FoamFields.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -195,7 +195,7 @@ void Foam::vtkPV3Foam::convertPointFields
     }
 
     // Construct interpolation on the raw mesh
-    pointMesh pMesh(mesh);
+    const pointMesh& pMesh = pointMesh::New(mesh);
 
 
     convertPointFields<scalar>
diff --git a/applications/utilities/postProcessing/graphics/fieldview9Reader/fieldview9Reader.C b/applications/utilities/postProcessing/graphics/fieldview9Reader/fieldview9Reader.C
index 6369396278d2fae0a261d9c5d46ea824f4a55c49..301f2e66f728c7b8e431d78fc8e3898c3aa68471 100644
--- a/applications/utilities/postProcessing/graphics/fieldview9Reader/fieldview9Reader.C
+++ b/applications/utilities/postProcessing/graphics/fieldview9Reader/fieldview9Reader.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -1133,7 +1133,7 @@ void user_read_one_grid_function
     // Set fieldvalues
     //
 
-    pointMesh pMesh(mesh);
+    const pointMesh& pMesh = pointMesh::New(mesh);
 
     volPointInterpolation pInterp(mesh, pMesh);
 
diff --git a/applications/utilities/postProcessing/miscellaneous/execFlowFunctionObjects/Make/options b/applications/utilities/postProcessing/miscellaneous/execFlowFunctionObjects/Make/options
index 66477ecd8e6c9da88671e00c507f1d4bc2a107ca..e42252ff31c8d5368759d02839d0bbf777eadda7 100644
--- a/applications/utilities/postProcessing/miscellaneous/execFlowFunctionObjects/Make/options
+++ b/applications/utilities/postProcessing/miscellaneous/execFlowFunctionObjects/Make/options
@@ -11,7 +11,7 @@ EXE_LIBS = \
     -lincompressibleTransportModels \
     -lincompressibleRASModels \
     -lincompressibleLESModels \
-    -lbasicThermophysicalModels \
+    -lfluidThermophysicalModels \
     -lspecie \
     -lcompressibleRASModels \
     -lcompressibleLESModels \
diff --git a/applications/utilities/postProcessing/miscellaneous/execFlowFunctionObjects/execFlowFunctionObjects.C b/applications/utilities/postProcessing/miscellaneous/execFlowFunctionObjects/execFlowFunctionObjects.C
index 6531073136cec0d02abf3898e681223370e16637..b133509318af20c296c833c54ab8138119d5272b 100644
--- a/applications/utilities/postProcessing/miscellaneous/execFlowFunctionObjects/execFlowFunctionObjects.C
+++ b/applications/utilities/postProcessing/miscellaneous/execFlowFunctionObjects/execFlowFunctionObjects.C
@@ -47,7 +47,7 @@ Description
 #include "incompressible/RAS/RASModel/RASModel.H"
 #include "incompressible/LES/LESModel/LESModel.H"
 
-#include "basicThermo.H"
+#include "fluidThermo.H"
 #include "compressible/RAS/RASModel/RASModel.H"
 #include "compressible/LES/LESModel/LESModel.H"
 
@@ -265,7 +265,7 @@ void Foam::calc(const argList& args, const Time& runTime, const fvMesh& mesh)
         }
         else if (phi.dimensions() == dimensionSet(1, 0, -1, 0, 0))
         {
-            autoPtr<basicThermo> thermo(basicThermo::New(mesh));
+            autoPtr<fluidThermo> thermo(fluidThermo::New(mesh));
 
             volScalarField rho
             (
diff --git a/applications/utilities/postProcessing/velocityField/Mach/Mach.C b/applications/utilities/postProcessing/velocityField/Mach/Mach.C
index 3463175d7725ab445f191ed7c0d736a8215dd4fa..45e286d247f2e280c9b891e97cab4275864b8e78 100644
--- a/applications/utilities/postProcessing/velocityField/Mach/Mach.C
+++ b/applications/utilities/postProcessing/velocityField/Mach/Mach.C
@@ -33,7 +33,7 @@ Description
 \*---------------------------------------------------------------------------*/
 
 #include "calc.H"
-#include "basicThermo.H"
+#include "fluidThermo.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -75,9 +75,9 @@ void Foam::calc(const argList& args, const Time& runTime, const fvMesh& mesh)
         )
         {
             // thermophysical Mach
-            autoPtr<basicThermo> thermo
+            autoPtr<fluidThermo> thermo
             (
-                basicThermo::New(mesh)
+                fluidThermo::New(mesh)
             );
 
             volScalarField Cp(thermo->Cp());
diff --git a/applications/utilities/postProcessing/velocityField/Mach/Make/options b/applications/utilities/postProcessing/velocityField/Mach/Make/options
index c9733e397ac5cf34d0d6a73af6cb619871ebc47d..d9cb09bedf3a3b2031d2de716afbbce7d8d0ab35 100644
--- a/applications/utilities/postProcessing/velocityField/Mach/Make/options
+++ b/applications/utilities/postProcessing/velocityField/Mach/Make/options
@@ -7,5 +7,5 @@ EXE_LIBS = \
     $(FOAM_LIBBIN)/postCalc.o \
     -lfiniteVolume \
     -lgenericPatchFields \
-    -lbasicThermophysicalModels \
+    -lfluidThermophysicalModels \
     -lspecie
diff --git a/applications/utilities/postProcessing/velocityField/Mach/thermophysicalMach.H b/applications/utilities/postProcessing/velocityField/Mach/thermophysicalMach.H
index 4e4ea81b3d87463b4c8d91fb115e0ea465e4b41b..7125bd33af9ef110e89ee26c312a8b6f0f045324 100644
--- a/applications/utilities/postProcessing/velocityField/Mach/thermophysicalMach.H
+++ b/applications/utilities/postProcessing/velocityField/Mach/thermophysicalMach.H
@@ -18,9 +18,9 @@
         {
             volVectorField U(Uheader, mesh);
 
-            autoPtr<basicThermo> thermo
+            autoPtr<fluidThermo> thermo
             (
-                basicThermo::New(mesh)
+                fluidThermo::New(mesh)
             );
 
             volScalarField Cp = thermo->Cp();
diff --git a/applications/utilities/postProcessing/velocityField/Pe/Make/options b/applications/utilities/postProcessing/velocityField/Pe/Make/options
index 7675f43a75295d0d10acabe3785738463c814282..29d9b4d8c303aacfa11a0947d384d103d21923e4 100644
--- a/applications/utilities/postProcessing/velocityField/Pe/Make/options
+++ b/applications/utilities/postProcessing/velocityField/Pe/Make/options
@@ -13,7 +13,7 @@ EXE_LIBS = \
     -lincompressibleTransportModels \
     -lincompressibleRASModels \
     -lincompressibleLESModels \
-    -lbasicThermophysicalModels \
+    -lfluidThermophysicalModels \
     -lspecie \
     -lcompressibleRASModels \
     -lcompressibleLESModels \
diff --git a/applications/utilities/postProcessing/velocityField/Pe/Pe.C b/applications/utilities/postProcessing/velocityField/Pe/Pe.C
index c262482ce734e742ab063b8ac4b3463c832934b8..959eaad312d004a946c917b88c31e9ebe8c01051 100644
--- a/applications/utilities/postProcessing/velocityField/Pe/Pe.C
+++ b/applications/utilities/postProcessing/velocityField/Pe/Pe.C
@@ -39,7 +39,7 @@ Description
 #include "incompressible/singlePhaseTransportModel/singlePhaseTransportModel.H"
 #include "incompressible/RAS/RASModel/RASModel.H"
 #include "incompressible/LES/LESModel/LESModel.H"
-#include "basicThermo.H"
+#include "fluidThermo.H"
 #include "compressible/RAS/RASModel/RASModel.H"
 #include "compressible/LES/LESModel/LESModel.H"
 
@@ -204,7 +204,7 @@ void Foam::calc(const argList& args, const Time& runTime, const fvMesh& mesh)
             {
                 IOdictionary RASProperties(RASPropertiesHeader);
 
-                autoPtr<basicThermo> thermo(basicThermo::New(mesh));
+                autoPtr<fluidThermo> thermo(fluidThermo::New(mesh));
 
                 volScalarField rho
                 (
@@ -252,7 +252,7 @@ void Foam::calc(const argList& args, const Time& runTime, const fvMesh& mesh)
             {
                 IOdictionary LESProperties(LESPropertiesHeader);
 
-                autoPtr<basicThermo> thermo(basicThermo::New(mesh));
+                autoPtr<fluidThermo> thermo(fluidThermo::New(mesh));
 
                 volScalarField rho
                 (
diff --git a/applications/utilities/postProcessing/velocityField/streamFunction/streamFunction.C b/applications/utilities/postProcessing/velocityField/streamFunction/streamFunction.C
index c5c024b3ef5cf05998a554c8ffcc751fe76c10a7..69ba83ee926abcf929fbdac7214ecd214d901613 100644
--- a/applications/utilities/postProcessing/velocityField/streamFunction/streamFunction.C
+++ b/applications/utilities/postProcessing/velocityField/streamFunction/streamFunction.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -51,7 +51,7 @@ int main(int argc, char *argv[])
 
 #   include "createNamedMesh.H"
 
-    pointMesh pMesh(mesh);
+    const pointMesh& pMesh = pointMesh::New(mesh);
 
     forAll(timeDirs, timeI)
     {
diff --git a/applications/utilities/postProcessing/wall/solidWallHeatFlux/Make/files b/applications/utilities/postProcessing/wall/solidWallHeatFlux/Make/files
deleted file mode 100644
index bdf785fe20e88586224b4b014f354575ba9c9fef..0000000000000000000000000000000000000000
--- a/applications/utilities/postProcessing/wall/solidWallHeatFlux/Make/files
+++ /dev/null
@@ -1,3 +0,0 @@
-solidWallHeatFlux.C
-
-EXE = $(FOAM_APPBIN)/solidWallHeatFlux
diff --git a/applications/utilities/postProcessing/wall/solidWallHeatFlux/Make/options b/applications/utilities/postProcessing/wall/solidWallHeatFlux/Make/options
deleted file mode 100644
index 64d31222de00a8534b59c82b06161f38699097b4..0000000000000000000000000000000000000000
--- a/applications/utilities/postProcessing/wall/solidWallHeatFlux/Make/options
+++ /dev/null
@@ -1,12 +0,0 @@
-EXE_INC = \
-    -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
-    -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \
-    -I$(LIB_SRC)/thermophysicalModels/basicSolidThermo/lnInclude \
-    -I$(LIB_SRC)/finiteVolume/lnInclude
-
-EXE_LIBS = \
-    -lbasicThermophysicalModels \
-    -lbasicSolidThermo \
-    -lspecie \
-    -lfiniteVolume \
-    -lgenericPatchFields
diff --git a/applications/utilities/postProcessing/wall/solidWallHeatFlux/createFields.H b/applications/utilities/postProcessing/wall/solidWallHeatFlux/createFields.H
deleted file mode 100644
index 88adcd8e542840fa7082e472bb5e279702ef0656..0000000000000000000000000000000000000000
--- a/applications/utilities/postProcessing/wall/solidWallHeatFlux/createFields.H
+++ /dev/null
@@ -1,6 +0,0 @@
-autoPtr<solidThermo> thermo
-(
-    solidThermo::New(mesh)
-);
-
-const volScalarField& T = thermo->T();
diff --git a/applications/utilities/postProcessing/wall/solidWallHeatFlux/solidWallHeatFlux.C b/applications/utilities/postProcessing/wall/solidWallHeatFlux/solidWallHeatFlux.C
deleted file mode 100644
index 2ac074a5bafbf5932a1536a7fac9e52b8a0c8128..0000000000000000000000000000000000000000
--- a/applications/utilities/postProcessing/wall/solidWallHeatFlux/solidWallHeatFlux.C
+++ /dev/null
@@ -1,102 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2012 OpenFOAM Foundation
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software: you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
-
-Application
-    solidWallHeatFlux
-
-Description
-    Calculates and writes the heat flux for all patches as the boundary field
-    of a volScalarField and also prints the integrated flux for all wall
-    patches.
-
-\*---------------------------------------------------------------------------*/
-
-#include "fvCFD.H"
-#include "wallFvPatch.H"
-#include "solidThermo.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-int main(int argc, char *argv[])
-{
-    timeSelector::addOptions();
-#   include "addRegionOption.H"
-    #include "setRootCase.H"
-    #include "createTime.H"
-    instantList timeDirs = timeSelector::select0(runTime, args);
-    #include "createNamedMesh.H"
-
-    forAll(timeDirs, timeI)
-    {
-        runTime.setTime(timeDirs[timeI], timeI);
-        Info<< "Time = " << runTime.timeName() << endl;
-        mesh.readUpdate();
-
-        // Read temperature
-        #include "createFields.H"
-
-        // Create heat flux as volScalarField with as boundary values
-        // the heat flux
-        volScalarField wallHeatFlux
-        (
-            IOobject
-            (
-                "solidWallHeatFlux",
-                runTime.timeName(),
-                mesh
-            ),
-            mesh,
-            dimensionedScalar("solidWallHeatFlux", dimPower/dimArea, 0.0)
-        );
-
-        Info<< "\nWall heat fluxes [W]" << endl;
-        forAll(wallHeatFlux.boundaryField(), patchi)
-        {
-            wallHeatFlux.boundaryField()[patchi] =
-                thermo().kappa(patchi)
-               *T.boundaryField()[patchi].snGrad();
-
-            if (isA<wallFvPatch>(mesh.boundary()[patchi]))
-            {
-                Info<< mesh.boundary()[patchi].name()
-                    << " "
-                    << gSum
-                       (
-                           mesh.magSf().boundaryField()[patchi]
-                          *wallHeatFlux.boundaryField()[patchi]
-                       )
-                    << endl;
-            }
-        }
-
-        wallHeatFlux.write();
-
-        Info<< endl;
-    }
-
-    Info<< "End" << endl;
-
-    return 0;
-}
-
-// ************************************************************************* //
diff --git a/applications/utilities/postProcessing/wall/wallHeatFlux/Make/options b/applications/utilities/postProcessing/wall/wallHeatFlux/Make/options
index 52ab08bdcce1695422ab56b0af92c939e4750390..38f94e13c796f0fae889766f19f1f3eb809a1b3c 100644
--- a/applications/utilities/postProcessing/wall/wallHeatFlux/Make/options
+++ b/applications/utilities/postProcessing/wall/wallHeatFlux/Make/options
@@ -4,7 +4,7 @@ EXE_INC = \
     -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
-    -I$(LIB_SRC)/thermophysicalModels/basicSolidThermo/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/solidThermo/lnInclude \
     -I$(LIB_SRC)/finiteVolume/lnInclude
 
 EXE_LIBS = \
@@ -14,5 +14,5 @@ EXE_LIBS = \
     -lgenericPatchFields \
     -lspecie \
     -lsolid \
-    -lbasicThermophysicalModels \
-    -lbasicSolidThermo
+    -lfluidThermophysicalModels \
+    -lsolidThermo
diff --git a/applications/utilities/postProcessing/wall/wallHeatFlux/createFields.H b/applications/utilities/postProcessing/wall/wallHeatFlux/createFields.H
index f1096d657efb2be8075d15d2d6963bf91e1379a8..da7585b83175febac3f111af927b95a21266040e 100644
--- a/applications/utilities/postProcessing/wall/wallHeatFlux/createFields.H
+++ b/applications/utilities/postProcessing/wall/wallHeatFlux/createFields.H
@@ -22,7 +22,7 @@ autoPtr<volVectorField> UPtr;
 autoPtr<surfaceScalarField> phiPtr;
 autoPtr<compressible::turbulenceModel> turbulence;
 
-if (!isA<solidThermo>(thermo()))
+if (isA<fluidThermo>(thermo()))
 {
     UPtr.reset
     (
@@ -51,6 +51,6 @@ if (!isA<solidThermo>(thermo()))
         rho,
         U,
         phiPtr(),
-        thermo()
+        refCast<const fluidThermo>(thermo())
     );
 }
diff --git a/applications/utilities/postProcessing/wall/wallShearStress/Make/options b/applications/utilities/postProcessing/wall/wallShearStress/Make/options
index b386fa4540210e189a3c8887c3f08ae89f9d2f49..240bf953ba50f36955bf829a38a84d2bf8408f6e 100644
--- a/applications/utilities/postProcessing/wall/wallShearStress/Make/options
+++ b/applications/utilities/postProcessing/wall/wallShearStress/Make/options
@@ -7,7 +7,7 @@ EXE_INC = \
 EXE_LIBS = \
     -lincompressibleTransportModels \
     -lincompressibleRASModels \
-    -lbasicThermophysicalModels \
+    -lfluidThermophysicalModels \
     -lspecie \
     -lcompressibleRASModels \
     -lfiniteVolume \
diff --git a/applications/utilities/postProcessing/wall/wallShearStress/wallShearStress.C b/applications/utilities/postProcessing/wall/wallShearStress/wallShearStress.C
index 83a1e57f42dccc7b522af52ac22430dd3be18830..ce89695567e0e583071bdd9d934adce5e5d88817 100644
--- a/applications/utilities/postProcessing/wall/wallShearStress/wallShearStress.C
+++ b/applications/utilities/postProcessing/wall/wallShearStress/wallShearStress.C
@@ -38,7 +38,7 @@ Description
 #include "incompressible/singlePhaseTransportModel/singlePhaseTransportModel.H"
 #include "incompressible/RAS/RASModel/RASModel.H"
 
-#include "basicThermo.H"
+#include "fluidThermo.H"
 #include "compressible/RAS/RASModel/RASModel.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -101,8 +101,8 @@ void calcCompressible
 
     #include "compressibleCreatePhi.H"
 
-    autoPtr<basicThermo> pThermo(basicThermo::New(mesh));
-    basicThermo& thermo = pThermo();
+    autoPtr<fluidThermo> pThermo(fluidThermo::New(mesh));
+    fluidThermo& thermo = pThermo();
 
     autoPtr<compressible::RASModel> model
     (
diff --git a/applications/utilities/postProcessing/wall/yPlusRAS/Make/options b/applications/utilities/postProcessing/wall/yPlusRAS/Make/options
index 55e668ee86e711cc6285fe687a0f8c83570dad79..27b70cae0a7d3fd5c02368e001ad81a0c135c2dc 100644
--- a/applications/utilities/postProcessing/wall/yPlusRAS/Make/options
+++ b/applications/utilities/postProcessing/wall/yPlusRAS/Make/options
@@ -10,7 +10,7 @@ EXE_INC = \
 EXE_LIBS = \
     -lincompressibleTransportModels \
     -lincompressibleRASModels \
-    -lbasicThermophysicalModels \
+    -lfluidThermophysicalModels \
     -lspecie \
     -lcompressibleRASModels \
     -lfiniteVolume \
diff --git a/applications/utilities/postProcessing/wall/yPlusRAS/yPlusRAS.C b/applications/utilities/postProcessing/wall/yPlusRAS/yPlusRAS.C
index 5b0c4b4957f524850a499ac24c2cd1c1c21cfd15..2f8b1503418c5b08bfb13033618f93960e3a0e12 100644
--- a/applications/utilities/postProcessing/wall/yPlusRAS/yPlusRAS.C
+++ b/applications/utilities/postProcessing/wall/yPlusRAS/yPlusRAS.C
@@ -39,7 +39,7 @@ Description
 #include "incompressible/RAS/RASModel/RASModel.H"
 #include "nutWallFunction/nutWallFunctionFvPatchScalarField.H"
 
-#include "basicThermo.H"
+#include "fluidThermo.H"
 #include "compressible/RAS/RASModel/RASModel.H"
 #include "mutWallFunction/mutWallFunctionFvPatchScalarField.H"
 
@@ -130,11 +130,11 @@ void calcCompressibleYPlus
 
     #include "compressibleCreatePhi.H"
 
-    autoPtr<basicThermo> pThermo
+    autoPtr<fluidThermo> pThermo
     (
-        basicThermo::New(mesh)
+        fluidThermo::New(mesh)
     );
-    basicThermo& thermo = pThermo();
+    fluidThermo& thermo = pThermo();
 
     autoPtr<compressible::RASModel> RASModel
     (
diff --git a/applications/utilities/preProcessing/applyBoundaryLayer/Make/options b/applications/utilities/preProcessing/applyBoundaryLayer/Make/options
index 31f1dd4d95e821dd1c1dcee8d5ef2ce9cc568563..e4ea36c3cf0975c2a0bb388629d71353a3abf262 100644
--- a/applications/utilities/preProcessing/applyBoundaryLayer/Make/options
+++ b/applications/utilities/preProcessing/applyBoundaryLayer/Make/options
@@ -9,6 +9,7 @@ EXE_INC = \
 EXE_LIBS = \
     -lfiniteVolume \
     -lincompressibleRASModels \
+    -lincompressibleLESModels \
     -lincompressibleTransportModels \
     -lgenericPatchFields \
     -lmeshTools
diff --git a/applications/utilities/preProcessing/applyBoundaryLayer/applyBoundaryLayer.C b/applications/utilities/preProcessing/applyBoundaryLayer/applyBoundaryLayer.C
index d19ea042102abeca5274b70c575c5e2b5ff66d78..69cee38a01cdd65d9659ad2d354e0ac35b32ba70 100644
--- a/applications/utilities/preProcessing/applyBoundaryLayer/applyBoundaryLayer.C
+++ b/applications/utilities/preProcessing/applyBoundaryLayer/applyBoundaryLayer.C
@@ -63,7 +63,8 @@ int main(int argc, char *argv[])
     );
     argList::addOption
     (
-        "Cbl", "scalar",
+        "Cbl",
+        "scalar",
         "boundary-layer thickness as Cbl * mean distance to wall"
     );
     argList::addBoolOption
@@ -73,6 +74,24 @@ int main(int argc, char *argv[])
     );
 
     #include "setRootCase.H"
+
+    if (!args.optionFound("ybl") && !args.optionFound("Cbl"))
+    {
+        FatalErrorIn(args.executable())
+            << "Neither option 'ybl' or 'Cbl' have been provided to calculate "
+            << "the boundary-layer thickness.\n"
+            << "Please choose either 'ybl' OR 'Cbl'."
+            << exit(FatalError);
+    }
+    else if (args.optionFound("ybl") && args.optionFound("Cbl"))
+    {
+        FatalErrorIn(args.executable())
+            << "Both 'ybl' and 'Cbl' have been provided to calculate "
+            << "the boundary-layer thickness.\n"
+            << "Please choose either 'ybl' OR 'Cbl'."
+            << exit(FatalError);
+    }
+
     #include "createTime.H"
     #include "createMesh.H"
     #include "createFields.H"
@@ -93,7 +112,6 @@ int main(int argc, char *argv[])
             U[celli] *= ::pow(y[celli]/yblv, (1.0/7.0));
         }
     }
-    U.correctBoundaryConditions();
 
     Info<< "Writing U\n" << endl;
     U.write();
@@ -102,90 +120,96 @@ int main(int argc, char *argv[])
     phi = fvc::interpolate(U) & mesh.Sf();
     phi.write();
 
-    // Calculate nut
-    tmp<volScalarField> tnut = turbulence->nut();
-    volScalarField& nut = tnut();
-    volScalarField S(mag(dev(symm(fvc::grad(U)))));
-    nut = sqr(kappa*min(y, ybl))*::sqrt(2)*S;
 
-    if (args.optionFound("writenut"))
+    if (isA<incompressible::RASModel>(turbulence()))
     {
-        Info<< "Writing " << nut.name() << nl << endl;
-        nut.write();
-    }
-
-    // Create G field - used by RAS wall functions
-    volScalarField G("RASModel::G", nut*2*sqr(S));
+        // Calculate nut
+        tmp<volScalarField> tnut = turbulence->nut();
+        volScalarField& nut = tnut();
+        volScalarField S(mag(dev(symm(fvc::grad(U)))));
+        nut = sqr(kappa*min(y, ybl))*::sqrt(2)*S;
 
+        if (args.optionFound("writenut"))
+        {
+            Info<< "Writing nut" << endl;
+            nut.write();
+        }
 
-    //--- Read and modify turbulence fields
-
-    // Turbulence k
-    tmp<volScalarField> tk = turbulence->k();
-    volScalarField& k = tk();
-    scalar ck0 = pow025(Cmu)*kappa;
-    k = sqr(nut/(ck0*min(y, ybl)));
-    k.correctBoundaryConditions();
+        // Create G field - used by RAS wall functions
+        volScalarField G("RASModel::G", nut*2*sqr(S));
 
-    Info<< "Writing " << k.name() << nl << endl;
-    k.write();
 
+        //--- Read and modify turbulence fields
 
-    // Turbulence epsilon
-    tmp<volScalarField> tepsilon = turbulence->epsilon();
-    volScalarField& epsilon = tepsilon();
-    scalar ce0 = ::pow(Cmu, 0.75)/kappa;
-    epsilon = ce0*k*sqrt(k)/min(y, ybl);
-    epsilon.correctBoundaryConditions();
+        // Turbulence k
+        tmp<volScalarField> tk = turbulence->k();
+        volScalarField& k = tk();
+        scalar ck0 = pow025(Cmu)*kappa;
+        k = sqr(nut/(ck0*min(y, ybl)));
+        k.correctBoundaryConditions();
 
-    Info<< "Writing " << epsilon.name() << nl << endl;
-    epsilon.write();
+        Info<< "Writing k\n" << endl;
+        k.write();
 
 
-    // Turbulence omega
-    IOobject omegaHeader
-    (
-        "omega",
-        runTime.timeName(),
-        mesh,
-        IOobject::MUST_READ,
-        IOobject::NO_WRITE,
-        false
-    );
+        // Turbulence epsilon
 
-    if (omegaHeader.headerOk())
-    {
-        volScalarField omega(omegaHeader, mesh);
-        omega = epsilon/(Cmu*k);
-        omega.correctBoundaryConditions();
+        tmp<volScalarField> tepsilon = turbulence->epsilon();
+        volScalarField& epsilon = tepsilon();
+        scalar ce0 = ::pow(Cmu, 0.75)/kappa;
+        epsilon = ce0*k*sqrt(k)/min(y, ybl);
+        epsilon.correctBoundaryConditions();
 
-        Info<< "Writing omega\n" << endl;
-        omega.write();
-    }
+        Info<< "Writing epsilon\n" << endl;
+        epsilon.write();
 
+        // Turbulence omega
+        IOobject omegaHeader
+        (
+            "omega",
+            runTime.timeName(),
+            mesh,
+            IOobject::MUST_READ,
+            IOobject::NO_WRITE,
+            false
+        );
 
-    // Turbulence nuTilda
-    IOobject nuTildaHeader
-    (
-        "nuTilda",
-        runTime.timeName(),
-        mesh,
-        IOobject::MUST_READ,
-        IOobject::NO_WRITE,
-        false
-    );
+        if (omegaHeader.headerOk())
+        {
+            volScalarField omega(omegaHeader, mesh);
+            omega =
+                epsilon
+               /(
+                   Cmu*k+dimensionedScalar("VSMALL", k.dimensions(), VSMALL)
+                );
+            omega.correctBoundaryConditions();
+
+            Info<< "Writing omega\n" << endl;
+            omega.write();
+        }
 
-    if (nuTildaHeader.headerOk())
-    {
-        volScalarField nuTilda(nuTildaHeader, mesh);
-        nuTilda = nut;
-        nuTilda.correctBoundaryConditions();
+        // Turbulence nuTilda
+        IOobject nuTildaHeader
+        (
+            "nuTilda",
+            runTime.timeName(),
+            mesh,
+            IOobject::MUST_READ,
+            IOobject::NO_WRITE,
+            false
+        );
+
+        if (nuTildaHeader.headerOk())
+        {
+            volScalarField nuTilda(nuTildaHeader, mesh);
+            nuTilda = nut;
+            nuTilda.correctBoundaryConditions();
 
-        Info<< "Writing nuTilda\n" << endl;
-        nuTilda.write();
+            Info<< "Writing nuTilda\n" << endl;
+            nuTilda.write();
+        }
     }
 
-
     Info<< nl << "ExecutionTime = " << runTime.elapsedCpuTime() << " s"
         << "  ClockTime = " << runTime.elapsedClockTime() << " s"
         << nl << endl;
diff --git a/applications/utilities/preProcessing/applyBoundaryLayer/createFields.H b/applications/utilities/preProcessing/applyBoundaryLayer/createFields.H
index d74cadc9bc3ecdacf054000887dbc2e2dccfea1e..8b4e6565a9cdae4d7ada263101ab48d63f0d63d4 100644
--- a/applications/utilities/preProcessing/applyBoundaryLayer/createFields.H
+++ b/applications/utilities/preProcessing/applyBoundaryLayer/createFields.H
@@ -62,13 +62,6 @@ License
         // Calculate boundary layer thickness as Cbl * mean distance to wall
         ybl.value() = gAverage(y) * args.optionRead<scalar>("Cbl");
     }
-    else
-    {
-        FatalErrorIn(args.executable())
-            << "Neither option 'ybl' or 'Cbl' have been provided to calculate "
-            << "the boundary-layer thickness"
-            << exit(FatalError);
-    }
 
     Info<< "\nCreating boundary-layer for U of thickness "
         << ybl.value() << " m" << nl << endl;
diff --git a/applications/utilities/preProcessing/applyWallFunctionBoundaryConditions/Make/options b/applications/utilities/preProcessing/applyWallFunctionBoundaryConditions/Make/options
index 7a1f8e278d5aa4904d5c6d21476c08fef1844866..60692ce6739d543330594fac6880c1dd8a686000 100644
--- a/applications/utilities/preProcessing/applyWallFunctionBoundaryConditions/Make/options
+++ b/applications/utilities/preProcessing/applyWallFunctionBoundaryConditions/Make/options
@@ -6,7 +6,7 @@ EXE_INC = \
 
 EXE_LIBS = \
     -lincompressibleRASModels \
-    -lbasicThermophysicalModels \
+    -lfluidThermophysicalModels \
     -lspecie \
     -lcompressibleRASModels \
     -lfiniteVolume \
diff --git a/applications/utilities/surface/surfaceToPatch/surfaceToPatch.C b/applications/utilities/surface/surfaceToPatch/surfaceToPatch.C
index f7fbc53ab8d4314f11743297cbe55a77dcfae7d9..12131e8c724678fbaff4d72992c217e078788708 100644
--- a/applications/utilities/surface/surfaceToPatch/surfaceToPatch.C
+++ b/applications/utilities/surface/surfaceToPatch/surfaceToPatch.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -78,7 +78,8 @@ label addPatch(polyMesh& mesh, const word& patchName)
                 0,
                 mesh.nFaces(),
                 patchI,
-                patches
+                patches,
+                polyPatch::typeName
             );
 
         mesh.removeBoundary();
diff --git a/applications/utilities/thermophysical/chemkinToFoam/Make/options b/applications/utilities/thermophysical/chemkinToFoam/Make/options
index 7fe5ba4077fe6c57b2daafcc873b929c962665a2..3a2cb8bce469c39b39747a764b4bdb8622a8b962 100644
--- a/applications/utilities/thermophysical/chemkinToFoam/Make/options
+++ b/applications/utilities/thermophysical/chemkinToFoam/Make/options
@@ -4,5 +4,5 @@ EXE_INC = \
 
 EXE_LIBS = \
     -lreactionThermophysicalModels \
-    -lbasicThermophysicalModels \
+    -lfluidThermophysicalModels \
     -lspecie
diff --git a/etc/caseDicts/setConstraintTypes b/etc/caseDicts/setConstraintTypes
new file mode 100644
index 0000000000000000000000000000000000000000..7e1194a520f43a0680b29367aa8f92f09ff4150a
--- /dev/null
+++ b/etc/caseDicts/setConstraintTypes
@@ -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  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+cyclic
+{
+    type  cyclic;
+}
+
+cyclicSlip
+{
+    type  cyclicSlip;
+}
+
+empty
+{
+    type  empty;
+}
+
+nonuniformTransformCyclic
+{
+    type  nonuniformTransformCyclic;
+}
+
+processor
+{
+    type  processor;
+}
+
+processorCyclic
+{
+    type  processorCyclic;
+}
+
+symmetryPlane
+{
+    type  symmetryPlane;
+}
+
+wedge
+{
+    type  wedge;
+}
+
+
+// ************************************************************************* //
diff --git a/etc/controlDict b/etc/controlDict
index 5550a0961a4c493e7a11431a44747a6a23fa703b..04ec43aca08ea3643ef9424cd51c4ba19711fa11 100644
--- a/etc/controlDict
+++ b/etc/controlDict
@@ -102,7 +102,7 @@ DebugSwitches
     ChomiakInjector     0;
     Cloud<basicKinematicParcel> 0;
     Cloud<basicReactingParcel>  0;
-    Cloud<basicThermoParcel>    0;
+    Cloud<fluidThermoParcel>    0;
     Cloud<indexedParticle>  0;
     Cloud<parcel>           0;
     Cloud<passiveParticle>  0;
@@ -170,9 +170,9 @@ DebugSwitches
     KRR4                0;
     KinematicCloud<basicKinematicParcel> 0;
     KinematicCloud<basicReactingParcel> 0;
-    KinematicCloud<basicThermoParcel>   0;
+    KinematicCloud<fluidThermoParcel>   0;
     KinematicParcel<basicReactingParcel> 0;
-    KinematicParcel<basicThermoParcel>  0;
+    KinematicParcel<fluidThermoParcel>  0;
     LESModel            0;
     LESdelta            0;
     LESfilter           0;
@@ -280,9 +280,9 @@ DebugSwitches
     TAB                 0;
     Table               0;
     ThermoCloud<basicReactingParcel>    0;
-    ThermoCloud<basicThermoParcel>      0;
+    ThermoCloud<fluidThermoParcel>      0;
     ThermoParcel<basicReactingParcel>   0;
-    ThermoParcel<basicThermoParcel>     0;
+    ThermoParcel<fluidThermoParcel>     0;
     UMIST               0;
     UMISTV              0;
     UpwindFitData<cubicUpwindFitPolynomial> 0;
@@ -321,9 +321,9 @@ DebugSwitches
     basicMixture        0;
     basicReactingCloud  0;
     basicReactingParcel 0;
-    basicThermo         0;
-    basicThermoCloud    0;
-    basicThermoParcel   0;
+    fluidThermo         0;
+    fluidThermoCloud    0;
+    fluidThermoParcel   0;
     biLinearFit         0;
     binaryAbsorptionEmission 0;
     blended             0;
diff --git a/src/OpenFOAM/containers/Lists/UList/UListIO.C b/src/OpenFOAM/containers/Lists/UList/UListIO.C
index a5ffea46792dad781fd477eab0869d780a48f3c2..9f4ad79aabb23a6b3ddbe2e566689961cae5f772 100644
--- a/src/OpenFOAM/containers/Lists/UList/UListIO.C
+++ b/src/OpenFOAM/containers/Lists/UList/UListIO.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -91,7 +91,7 @@ Foam::Ostream& Foam::operator<<(Foam::Ostream& os, const Foam::UList<T>& L)
             // Write end delimiter
             os << token::END_BLOCK;
         }
-        else if (L.size() < 11 && contiguous<T>())
+        else if (L.size() == 1 || (L.size() < 11 && contiguous<T>()))
         {
             // Write size and start delimiter
             os << L.size() << token::BEGIN_LIST;
diff --git a/src/OpenFOAM/db/IOobject/IOobject.H b/src/OpenFOAM/db/IOobject/IOobject.H
index 999b48551d10350e0b197b91a390331bed4f41f5..7b9d73ee28a2474e1ce9fb140710d02408a31d4f 100644
--- a/src/OpenFOAM/db/IOobject/IOobject.H
+++ b/src/OpenFOAM/db/IOobject/IOobject.H
@@ -275,6 +275,12 @@ public:
                 name_ = newName;
             }
 
+            //- Register object created from this IOobject with registry if true
+            bool& registerObject()
+            {
+                return registerObject_;
+            }
+
             //- Register object created from this IOobject with registry if true
             bool registerObject() const
             {
diff --git a/src/OpenFOAM/db/Time/TimeIO.C b/src/OpenFOAM/db/Time/TimeIO.C
index 557ebdddcb6197c392038fdcc60f675cd5f35c77..853c6244d7a8da9594241216aca6bf6fffabb09a 100644
--- a/src/OpenFOAM/db/Time/TimeIO.C
+++ b/src/OpenFOAM/db/Time/TimeIO.C
@@ -30,6 +30,13 @@ License
 
 void Foam::Time::readDict()
 {
+    word application;
+    if (controlDict_.readIfPresent("application", application))
+    {
+        // Do not override if already set so external application can override
+        setEnv("FOAM_APPLICATION", application, false);
+    }
+
     if (!deltaTchanged_)
     {
         deltaT_ = readScalar(controlDict_.lookup("deltaT"));
diff --git a/src/OpenFOAM/db/dictionary/dictionary.C b/src/OpenFOAM/db/dictionary/dictionary.C
index a405d153dd7630cbbf37beed26e29ab587ef22e8..5e67648d17aca1e61ded720d947772e9bdbef972 100644
--- a/src/OpenFOAM/db/dictionary/dictionary.C
+++ b/src/OpenFOAM/db/dictionary/dictionary.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -417,6 +417,120 @@ Foam::ITstream& Foam::dictionary::lookup
 }
 
 
+const Foam::entry* Foam::dictionary::lookupScopedEntryPtr
+(
+    const word& keyword,
+    bool recursive,
+    bool patternMatch
+) const
+{
+    string::size_type dotPos = keyword.find('.');
+
+    if (dotPos == string::npos)
+    {
+        return lookupEntryPtr(keyword, recursive, patternMatch);
+    }
+    else
+    {
+        if (dotPos == 0)
+        {
+            const dictionary* dictPtr = this;
+            while (&dictPtr->parent_ != &dictionary::null)
+            {
+                dictPtr = &dictPtr->parent_;
+            }
+
+            // At top
+            return dictPtr->lookupScopedEntryPtr
+            (
+                keyword.substr(1, keyword.size()-1),
+                false,
+                patternMatch
+            );
+        }
+        else
+        {
+            wordList entryNames(fileName(keyword).components('.'));
+
+            const entry* entPtr = lookupEntryPtr(entryNames[0], false, true);
+
+            for (int i=1; i<entryNames.size(); ++i)
+            {
+                if (!entPtr)
+                {
+                    FatalIOErrorIn
+                    (
+                        "dictionary::lookupScopedEntryPtr"
+                        "(const word&, bool, bool)",
+                        *this
+                    )   << "keyword " << keyword
+                        << " is undefined in dictionary "
+                        << name()
+                        << exit(FatalIOError);
+                }
+                if (!entPtr->isDict())
+                {
+                    FatalIOErrorIn
+                    (
+                        "dictionary::lookupScopedEntryPtr"
+                        "(const word&, bool, bool)",
+                        *this
+                    )   << "Entry " << entPtr->name()
+                        << " is not a dictionary so cannot lookup sub entry "
+                        << entryNames[i]
+                        << exit(FatalIOError);
+                }
+
+                entPtr = entPtr->dict().lookupEntryPtr
+                (
+                    entryNames[i],
+                    false,
+                    true
+                );
+            }
+
+            if (!entPtr)
+            {
+                FatalIOErrorIn
+                (
+                    "dictionary::lookupScopedEntryPtr"
+                    "(const word&, bool, bool)",
+                    *this
+                )   << "keyword " << keyword
+                    << " is not a valid scoped entry in dictionary "
+                    << name()
+                    << exit(FatalIOError);
+            }
+            return entPtr;
+        }
+    }
+}
+
+
+bool Foam::dictionary::substituteScopedKeyword(const word& keyword)
+{
+    word varName = keyword(1, keyword.size()-1);
+
+    // lookup the variable name in the given dictionary
+    const entry* ePtr = lookupScopedEntryPtr(varName, true, true);
+
+    // if defined insert its entries into this dictionary
+    if (ePtr != NULL)
+    {
+        const dictionary& addDict = ePtr->dict();
+
+        forAllConstIter(IDLList<entry>, addDict, iter)
+        {
+            add(iter());
+        }
+
+        return true;
+    }
+
+    return false;
+}
+
+
 bool Foam::dictionary::isDict(const word& keyword) const
 {
     // Find non-recursive with patterns
diff --git a/src/OpenFOAM/db/dictionary/dictionary.H b/src/OpenFOAM/db/dictionary/dictionary.H
index 710643c37493810559cfd760f5ebe49118738e21..17901737caac15c14ed4172c19274291f5da6cd4 100644
--- a/src/OpenFOAM/db/dictionary/dictionary.H
+++ b/src/OpenFOAM/db/dictionary/dictionary.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -353,6 +353,15 @@ public:
                 bool patternMatch=true
             ) const;
 
+            //- Find and return an entry data stream pointer if present
+            //  otherwise return NULL. Allows scoping using '.'
+            const entry* lookupScopedEntryPtr
+            (
+                const word&,
+                bool recursive,
+                bool patternMatch
+            ) const;
+
             //- Check if entry is a sub-dictionary
             bool isDict(const word&) const;
 
@@ -387,6 +396,10 @@ public:
             //  corresponding sub-dictionary entries
             bool substituteKeyword(const word& keyword);
 
+            //- Substitute the given scoped keyword prepended by '$' with the
+            //  corresponding sub-dictionary entries
+            bool substituteScopedKeyword(const word& keyword);
+
             //- Add a new entry
             //  With the merge option, dictionaries are interwoven and
             //  primitive entries are overwritten
diff --git a/src/OpenFOAM/db/dictionary/entry/entryIO.C b/src/OpenFOAM/db/dictionary/entry/entryIO.C
index 3807c3bfafc6a1a2b67507894c440d30eefa2377..dd16f4e6ed9e256cc0bd269fdbb382b7f9ae7181 100644
--- a/src/OpenFOAM/db/dictionary/entry/entryIO.C
+++ b/src/OpenFOAM/db/dictionary/entry/entryIO.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -112,7 +112,7 @@ bool Foam::entry::New(dictionary& parentDict, Istream& is)
            !disableFunctionEntries
          && keyword[0] == '$')      // ... Substitution entry
         {
-            parentDict.substituteKeyword(keyword);
+            parentDict.substituteScopedKeyword(keyword);
             return true;
         }
         else if
diff --git a/src/OpenFOAM/db/dictionary/primitiveEntry/primitiveEntry.C b/src/OpenFOAM/db/dictionary/primitiveEntry/primitiveEntry.C
index bda2bfef9ab67c46ca260f4dd4e0e0f08776459a..c91f3df5aa7f72894b9715a664fed7b85a106fbd 100644
--- a/src/OpenFOAM/db/dictionary/primitiveEntry/primitiveEntry.C
+++ b/src/OpenFOAM/db/dictionary/primitiveEntry/primitiveEntry.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -52,7 +52,7 @@ bool Foam::primitiveEntry::expandVariable
     // internalField:
     //      internalField XXX;
     //      boundaryField { ".*" {YYY;} movingWall {value $internalField;}
-    const entry* ePtr = dict.lookupEntryPtr(varName, true, false);
+    const entry* ePtr = dict.lookupScopedEntryPtr(varName, true, false);
 
     // ...if defined append its tokens into this
     if (ePtr)
diff --git a/src/OpenFOAM/db/dynamicLibrary/dynamicCode/dynamicCodeContext.H b/src/OpenFOAM/db/dynamicLibrary/dynamicCode/dynamicCodeContext.H
index 3551e8c20bb1edb72bf490225bb28baa62f82490..f447e612a7083c0609ea189ad2b0a9114622b2d0 100644
--- a/src/OpenFOAM/db/dynamicLibrary/dynamicCode/dynamicCodeContext.H
+++ b/src/OpenFOAM/db/dynamicLibrary/dynamicCode/dynamicCodeContext.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/OpenFOAM/db/functionObjects/outputFilterOutputControl/outputFilterOutputControl.C b/src/OpenFOAM/db/functionObjects/outputFilterOutputControl/outputFilterOutputControl.C
index f7de9c60ee63e9742132b8ce721d558c8571d8dd..34b9da0da1b77341e41ee5e77413466a26a5e774 100644
--- a/src/OpenFOAM/db/functionObjects/outputFilterOutputControl/outputFilterOutputControl.C
+++ b/src/OpenFOAM/db/functionObjects/outputFilterOutputControl/outputFilterOutputControl.C
@@ -55,7 +55,8 @@ Foam::outputFilterOutputControl::outputFilterOutputControl
 :
     time_(t),
     outputControl_(ocTimeStep),
-    outputInterval_(0)
+    outputInterval_(0),
+    outputTimeLastDump_(0)
 {
     read(dict);
 }
@@ -88,6 +89,12 @@ void Foam::outputFilterOutputControl::read(const dictionary& dict)
             break;
         }
 
+        case ocOutputTime:
+        {
+            outputInterval_ = dict.lookupOrDefault<label>("outputInterval", 1);
+            break;
+        }
+
         default:
         {
             // do nothing
@@ -97,7 +104,7 @@ void Foam::outputFilterOutputControl::read(const dictionary& dict)
 }
 
 
-bool Foam::outputFilterOutputControl::output() const
+bool Foam::outputFilterOutputControl::output()
 {
     switch (outputControl_)
     {
@@ -113,7 +120,11 @@ bool Foam::outputFilterOutputControl::output() const
 
         case ocOutputTime:
         {
-            return time_.outputTime();
+            if (time_.outputTime())
+            {
+                outputTimeLastDump_ ++;
+                return !(outputTimeLastDump_ % outputInterval_);
+            }
             break;
         }
 
diff --git a/src/OpenFOAM/db/functionObjects/outputFilterOutputControl/outputFilterOutputControl.H b/src/OpenFOAM/db/functionObjects/outputFilterOutputControl/outputFilterOutputControl.H
index bb58de5b207028dc37945f7a261f3aae475ba3b1..4676bbd2a70a7868ad527152d1e2059da816d2bb 100644
--- a/src/OpenFOAM/db/functionObjects/outputFilterOutputControl/outputFilterOutputControl.H
+++ b/src/OpenFOAM/db/functionObjects/outputFilterOutputControl/outputFilterOutputControl.H
@@ -78,6 +78,9 @@ private:
         //  a value <= 1 means execute at every time step
         label outputInterval_;
 
+        //- Dumping counter for ocOutputTime
+        label outputTimeLastDump_;
+
 
     // Private Member Functions
 
@@ -110,7 +113,7 @@ public:
         }
 
         //- Flag to indicate whether to output
-        bool output() const;
+        bool output();
 };
 
 
diff --git a/src/OpenFOAM/meshes/pointMesh/pointMesh.C b/src/OpenFOAM/meshes/pointMesh/pointMesh.C
index 6022f03c39bd51df8ef895c244b4d3e182bd0f61..f378a5d78026fa466a2b8bd338202f82e39d8b35 100644
--- a/src/OpenFOAM/meshes/pointMesh/pointMesh.C
+++ b/src/OpenFOAM/meshes/pointMesh/pointMesh.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -30,10 +30,26 @@ License
 #include "MapGeometricFields.H"
 #include "MapPointField.H"
 
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+defineTypeNameAndDebug(pointMesh, 0);
+
+}
+
 // * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
 
 void Foam::pointMesh::mapFields(const mapPolyMesh& mpm)
 {
+    if (debug)
+    {
+        Pout<< "void pointMesh::mapFields(const mapPolyMesh&): "
+            << "Mapping all registered pointFields."
+            << endl;
+    }
     // Create a mapper
     const pointMeshMapper m(*this, mpm);
 
@@ -60,6 +76,13 @@ Foam::pointMesh::pointMesh(const polyMesh& pMesh)
     GeoMesh<polyMesh>(pMesh),
     boundary_(*this, pMesh.boundaryMesh())
 {
+    if (debug)
+    {
+        Pout<< "pointMesh::pointMesh(const polyMesh&): "
+            << "Constructing from polyMesh " << pMesh.name()
+            << endl;
+    }
+
     // Calculate the geometry for the patches (transformation tensors etc.)
     boundary_.calcGeometry();
 }
@@ -67,12 +90,24 @@ Foam::pointMesh::pointMesh(const polyMesh& pMesh)
 
 void Foam::pointMesh::movePoints(const pointField& newPoints)
 {
+    if (debug)
+    {
+        Pout<< "pointMesh::movePoints(const pointField&): "
+            << "Moving points." << endl;
+    }
+
     boundary_.movePoints(newPoints);
 }
 
 
 void Foam::pointMesh::updateMesh(const mapPolyMesh& mpm)
 {
+    if (debug)
+    {
+        Pout<< "pointMesh::updateMesh(const mapPolyMesh&): "
+            << "Updating for topology changes." << endl;
+        Pout<< endl;
+    }
     boundary_.updateMesh();
 
     // Map all registered point fields
diff --git a/src/OpenFOAM/meshes/pointMesh/pointMesh.H b/src/OpenFOAM/meshes/pointMesh/pointMesh.H
index e40e211aefaab8ece852601319d3babd0c48ddf8..25e8af95304c4719b1747bfa4429b26a53106ac0 100644
--- a/src/OpenFOAM/meshes/pointMesh/pointMesh.H
+++ b/src/OpenFOAM/meshes/pointMesh/pointMesh.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -71,6 +71,10 @@ class pointMesh
 
 public:
 
+    // Declare name of the class and its debug switch
+    ClassName("pointMesh");
+
+
     typedef pointMesh Mesh;
     typedef pointBoundaryMesh BoundaryMesh;
 
diff --git a/src/OpenFOAM/meshes/polyMesh/polyMesh.C b/src/OpenFOAM/meshes/polyMesh/polyMesh.C
index ac47fece91a4f6ac1703887c7c876b0e22135a1c..0f4f93f94003a164ab0f9b24fb220f678062d92d 100644
--- a/src/OpenFOAM/meshes/polyMesh/polyMesh.C
+++ b/src/OpenFOAM/meshes/polyMesh/polyMesh.C
@@ -1092,8 +1092,7 @@ const Foam::pointField& Foam::polyMesh::oldPoints() const
 
 Foam::tmp<Foam::scalarField> Foam::polyMesh::movePoints
 (
-    const pointField& newPoints,
-    const bool deleteDemandDrivenData
+    const pointField& newPoints
 )
 {
     if (debug)
@@ -1147,14 +1146,6 @@ Foam::tmp<Foam::scalarField> Foam::polyMesh::movePoints
 
     // Force recalculation of all geometric data with new points
 
-    if (deleteDemandDrivenData)
-    {
-        // Remove the stored tet base points
-        tetBasePtIsPtr_.clear();
-        // Remove the cell tree
-        cellTreePtr_.clear();
-    }
-
     bounds_ = boundBox(points_);
     boundary_.movePoints(points_);
 
diff --git a/src/OpenFOAM/meshes/polyMesh/polyMesh.H b/src/OpenFOAM/meshes/polyMesh/polyMesh.H
index 6c013339745a3add02a726040160f3b61994db50..09c046feb840f098c5a4fb80fd3533b13eb84987 100644
--- a/src/OpenFOAM/meshes/polyMesh/polyMesh.H
+++ b/src/OpenFOAM/meshes/polyMesh/polyMesh.H
@@ -442,11 +442,7 @@ public:
             }
 
             //- Move points, returns volumes swept by faces in motion
-            virtual tmp<scalarField> movePoints
-            (
-                const pointField&,
-                const bool deleteDemandDrivenData = false
-            );
+            virtual tmp<scalarField> movePoints(const pointField&);
 
             //- Reset motion
             void resetMotion() const;
@@ -526,6 +522,9 @@ public:
             //- Clear primitive data (points, faces and cells)
             void clearPrimitives();
 
+            //- Clear geometry not used for CFD (cellTree, tetBasePtIs)
+            void clearAdditionalGeom();
+
             //- Clear cell tree data
             void clearCellTree();
 
diff --git a/src/OpenFOAM/meshes/polyMesh/polyMeshClear.C b/src/OpenFOAM/meshes/polyMesh/polyMeshClear.C
index d765e9f60b7742b2b0846f3b08bec092a36e6d32..95474da4050a1edd3f89a357630b0077a25ecd74 100644
--- a/src/OpenFOAM/meshes/polyMesh/polyMeshClear.C
+++ b/src/OpenFOAM/meshes/polyMesh/polyMeshClear.C
@@ -73,8 +73,22 @@ void Foam::polyMesh::clearGeom()
     tetBasePtIsPtr_.clear();
     // Remove the cell tree
     cellTreePtr_.clear();
+}
 
-    pointMesh::Delete(*this);
+
+void Foam::polyMesh::clearAdditionalGeom()
+{
+    if (debug)
+    {
+        Info<< "void polyMesh::clearAdditionalGeom() : "
+            << "clearing additional geometric data"
+            << endl;
+    }
+
+    // Remove the stored tet base points
+    tetBasePtIsPtr_.clear();
+    // Remove the cell tree
+    cellTreePtr_.clear();
 }
 
 
@@ -106,8 +120,6 @@ void Foam::polyMesh::clearAddressing()
     tetBasePtIsPtr_.clear();
     // Remove the cell tree
     cellTreePtr_.clear();
-
-    pointMesh::Delete(*this);
 }
 
 
@@ -120,6 +132,8 @@ void Foam::polyMesh::clearPrimitives()
     owner_.setSize(0);
     neighbour_.setSize(0);
 
+    pointMesh::Delete(*this);
+
     clearedPrimitives_ = true;
 }
 
@@ -128,11 +142,20 @@ void Foam::polyMesh::clearOut()
 {
     clearGeom();
     clearAddressing();
+
+    pointMesh::Delete(*this);
 }
 
 
 void Foam::polyMesh::clearCellTree()
 {
+    if (debug)
+    {
+        Info<< "void polyMesh::clearCellTree() : "
+            << "clearing cell tree"
+            << endl;
+    }
+
     cellTreePtr_.clear();
 }
 
diff --git a/src/OpenFOAM/meshes/polyMesh/polyMeshIO.C b/src/OpenFOAM/meshes/polyMesh/polyMeshIO.C
index a296fd336ad82647be52f360b0bcac8e0ad16aa8..313eb3e25bb08e2ba52ffc161c78a2c3b1ef6c66 100644
--- a/src/OpenFOAM/meshes/polyMesh/polyMeshIO.C
+++ b/src/OpenFOAM/meshes/polyMesh/polyMeshIO.C
@@ -223,7 +223,8 @@ Foam::polyMesh::readUpdateState Foam::polyMesh::readUpdate()
                     newBoundary[patchI].size(),
                     newBoundary[patchI].start(),
                     patchI,
-                    boundary_
+                    boundary_,
+                    newBoundary[patchI].type()
                 );
             }
         }
diff --git a/src/OpenFOAM/meshes/polyMesh/polyMeshUpdate.C b/src/OpenFOAM/meshes/polyMesh/polyMeshUpdate.C
index 96dc726b44a1c2a2bb53667a99b9036dcefa712f..0fdce95e37a7945241119dc66d4590f03545b3f1 100644
--- a/src/OpenFOAM/meshes/polyMesh/polyMeshUpdate.C
+++ b/src/OpenFOAM/meshes/polyMesh/polyMeshUpdate.C
@@ -38,6 +38,13 @@ Description
 
 void Foam::polyMesh::updateMesh(const mapPolyMesh& mpm)
 {
+    if (debug)
+    {
+        Info<< "void polyMesh::updateMesh(const mapPolyMesh&) : "
+            << "updating addressing and (optional) pointMesh/pointFields"
+            << endl;
+    }
+
     // Update boundaryMesh (note that patches themselves already ok)
     boundary_.updateMesh();
 
diff --git a/src/OpenFOAM/meshes/polyMesh/polyPatches/basic/coupled/coupledPolyPatch.C b/src/OpenFOAM/meshes/polyMesh/polyPatches/basic/coupled/coupledPolyPatch.C
index fd9b0a0828f5c0439093b248370755fc675c57c5..4e433001344c7e53ff37432c552a839a12ade2d3 100644
--- a/src/OpenFOAM/meshes/polyMesh/polyPatches/basic/coupled/coupledPolyPatch.C
+++ b/src/OpenFOAM/meshes/polyMesh/polyPatches/basic/coupled/coupledPolyPatch.C
@@ -426,10 +426,11 @@ Foam::coupledPolyPatch::coupledPolyPatch
     const label size,
     const label start,
     const label index,
-    const polyBoundaryMesh& bm
+    const polyBoundaryMesh& bm,
+    const word& patchType
 )
 :
-    polyPatch(name, size, start, index, bm),
+    polyPatch(name, size, start, index, bm, patchType),
     matchTolerance_(defaultMatchTol_)
 {}
 
@@ -439,10 +440,11 @@ Foam::coupledPolyPatch::coupledPolyPatch
     const word& name,
     const dictionary& dict,
     const label index,
-    const polyBoundaryMesh& bm
+    const polyBoundaryMesh& bm,
+    const word& patchType
 )
 :
-    polyPatch(name, dict, index, bm),
+    polyPatch(name, dict, index, bm, patchType),
     matchTolerance_(dict.lookupOrDefault("matchTolerance", defaultMatchTol_))
 {}
 
diff --git a/src/OpenFOAM/meshes/polyMesh/polyPatches/basic/coupled/coupledPolyPatch.H b/src/OpenFOAM/meshes/polyMesh/polyPatches/basic/coupled/coupledPolyPatch.H
index dac7ddaeb252ff2e7570f57fb8e8735273a9af31..7cb56879c4499dd9ead77db3bd4c5c4aea85f393 100644
--- a/src/OpenFOAM/meshes/polyMesh/polyPatches/basic/coupled/coupledPolyPatch.H
+++ b/src/OpenFOAM/meshes/polyMesh/polyPatches/basic/coupled/coupledPolyPatch.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -183,7 +183,8 @@ public:
             const label size,
             const label start,
             const label index,
-            const polyBoundaryMesh& bm
+            const polyBoundaryMesh& bm,
+            const word& patchType
         );
 
         //- Construct from dictionary
@@ -192,7 +193,8 @@ public:
             const word& name,
             const dictionary& dict,
             const label index,
-            const polyBoundaryMesh& bm
+            const polyBoundaryMesh& bm,
+            const word& patchType
         );
 
         //- Construct as copy, resetting the boundary mesh
diff --git a/src/OpenFOAM/meshes/polyMesh/polyPatches/basic/generic/genericPolyPatch.C b/src/OpenFOAM/meshes/polyMesh/polyPatches/basic/generic/genericPolyPatch.C
index 0911e2271a6e676b6a82dff17681dd0a05727906..d8cfbcdacd84399ef8f30abe43ba609e328a4835 100644
--- a/src/OpenFOAM/meshes/polyMesh/polyPatches/basic/generic/genericPolyPatch.C
+++ b/src/OpenFOAM/meshes/polyMesh/polyPatches/basic/generic/genericPolyPatch.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -45,10 +45,11 @@ Foam::genericPolyPatch::genericPolyPatch
     const label size,
     const label start,
     const label index,
-    const polyBoundaryMesh& bm
+    const polyBoundaryMesh& bm,
+    const word& patchType
 )
 :
-    polyPatch(name, size, start, index, bm)
+    polyPatch(name, size, start, index, bm, patchType)
 {}
 
 
@@ -57,10 +58,11 @@ Foam::genericPolyPatch::genericPolyPatch
     const word& name,
     const dictionary& dict,
     const label index,
-    const polyBoundaryMesh& bm
+    const polyBoundaryMesh& bm,
+    const word& patchType
 )
 :
-    polyPatch(name, dict, index, bm),
+    polyPatch(name, dict, index, bm, patchType),
     actualTypeName_(dict.lookup("type")),
     dict_(dict)
 {}
diff --git a/src/OpenFOAM/meshes/polyMesh/polyPatches/basic/generic/genericPolyPatch.H b/src/OpenFOAM/meshes/polyMesh/polyPatches/basic/generic/genericPolyPatch.H
index 8c093b40153055ed2059d36b13a75d7bc24a0f37..6a22d8af6f504cf9ef1c0e4d61323112403a4702 100644
--- a/src/OpenFOAM/meshes/polyMesh/polyPatches/basic/generic/genericPolyPatch.H
+++ b/src/OpenFOAM/meshes/polyMesh/polyPatches/basic/generic/genericPolyPatch.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -75,7 +75,8 @@ public:
             const label size,
             const label start,
             const label index,
-            const polyBoundaryMesh& bm
+            const polyBoundaryMesh& bm,
+            const word& patchType
         );
 
         //- Construct from dictionary
@@ -84,7 +85,8 @@ public:
             const word& name,
             const dictionary& dict,
             const label index,
-            const polyBoundaryMesh& bm
+            const polyBoundaryMesh& bm,
+            const word& patchType
         );
 
         //- Construct as copy, resetting the boundary mesh
diff --git a/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/cyclic/cyclicPolyPatch.C b/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/cyclic/cyclicPolyPatch.C
index b5d12a042c818d0a4610a989f9a255bf16e32258..ce8f260382f7d980ac6068d84e26ee4f1cf2a6e9 100644
--- a/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/cyclic/cyclicPolyPatch.C
+++ b/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/cyclic/cyclicPolyPatch.C
@@ -600,10 +600,11 @@ Foam::cyclicPolyPatch::cyclicPolyPatch
     const label size,
     const label start,
     const label index,
-    const polyBoundaryMesh& bm
+    const polyBoundaryMesh& bm,
+    const word& patchType
 )
 :
-    coupledPolyPatch(name, size, start, index, bm),
+    coupledPolyPatch(name, size, start, index, bm, patchType),
     neighbPatchName_(word::null),
     neighbPatchID_(-1),
     transform_(UNKNOWN),
@@ -632,7 +633,7 @@ Foam::cyclicPolyPatch::cyclicPolyPatch
     const vector& separationVector
 )
 :
-    coupledPolyPatch(name, size, start, index, bm),
+    coupledPolyPatch(name, size, start, index, bm, typeName),
     neighbPatchName_(neighbPatchName),
     neighbPatchID_(-1),
     transform_(transform),
@@ -652,10 +653,11 @@ Foam::cyclicPolyPatch::cyclicPolyPatch
     const word& name,
     const dictionary& dict,
     const label index,
-    const polyBoundaryMesh& bm
+    const polyBoundaryMesh& bm,
+    const word& patchType
 )
 :
-    coupledPolyPatch(name, dict, index, bm),
+    coupledPolyPatch(name, dict, index, bm, patchType),
     neighbPatchName_(dict.lookupOrDefault("neighbourPatch", word::null)),
     neighbPatchID_(-1),
     transform_(UNKNOWN),
diff --git a/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/cyclic/cyclicPolyPatch.H b/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/cyclic/cyclicPolyPatch.H
index 8af422f09381353a208c5c540f0c7d381d2d05f0..f2f1c49a870a925396740cb5336f7d11f516a88f 100644
--- a/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/cyclic/cyclicPolyPatch.H
+++ b/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/cyclic/cyclicPolyPatch.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -201,7 +201,8 @@ public:
             const label size,
             const label start,
             const label index,
-            const polyBoundaryMesh& bm
+            const polyBoundaryMesh& bm,
+            const word& patchType
         );
 
         //- Construct from components
@@ -225,7 +226,8 @@ public:
             const word& name,
             const dictionary& dict,
             const label index,
-            const polyBoundaryMesh& bm
+            const polyBoundaryMesh& bm,
+            const word& patchType
         );
 
         //- Construct as copy, resetting the boundary mesh
diff --git a/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/cyclicSlip/cyclicSlipPolyPatch.H b/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/cyclicSlip/cyclicSlipPolyPatch.H
index 155c036f4551edd5907f21771ce7e75b334cc5b5..fc2de2d14f586e7b377bbf9a57f57aabc3266cd5 100644
--- a/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/cyclicSlip/cyclicSlipPolyPatch.H
+++ b/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/cyclicSlip/cyclicSlipPolyPatch.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -67,10 +67,11 @@ public:
             const label size,
             const label start,
             const label index,
-            const polyBoundaryMesh& bm
+            const polyBoundaryMesh& bm,
+            const word& patchType
         )
         :
-            cyclicPolyPatch(name, size, start, index, bm)
+            cyclicPolyPatch(name, size, start, index, bm, patchType)
         {}
 
         //- Construct from dictionary
@@ -79,10 +80,11 @@ public:
             const word& name,
             const dictionary& dict,
             const label index,
-            const polyBoundaryMesh& bm
+            const polyBoundaryMesh& bm,
+            const word& patchType
         )
         :
-            cyclicPolyPatch(name, dict, index, bm)
+            cyclicPolyPatch(name, dict, index, bm, patchType)
         {}
 
         //- Construct as copy, resetting the boundary mesh
diff --git a/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/empty/emptyPolyPatch.C b/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/empty/emptyPolyPatch.C
index 63a97a8b70f4ab3e7f0a00a31bfeb7e2b86ab3ce..e6c071bcd11a07447dfd8448f5dab66cbbd1fbea 100644
--- a/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/empty/emptyPolyPatch.C
+++ b/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/empty/emptyPolyPatch.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -44,10 +44,11 @@ Foam::emptyPolyPatch::emptyPolyPatch
     const label size,
     const label start,
     const label index,
-    const polyBoundaryMesh& bm
+    const polyBoundaryMesh& bm,
+    const word& patchType
 )
 :
-    polyPatch(name, size, start, index, bm)
+    polyPatch(name, size, start, index, bm, patchType)
 {}
 
 
@@ -56,10 +57,11 @@ Foam::emptyPolyPatch::emptyPolyPatch
     const word& name,
     const dictionary& dict,
     const label index,
-    const polyBoundaryMesh& bm
+    const polyBoundaryMesh& bm,
+    const word& patchType
 )
 :
-    polyPatch(name, dict, index, bm)
+    polyPatch(name, dict, index, bm, patchType)
 {}
 
 
diff --git a/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/empty/emptyPolyPatch.H b/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/empty/emptyPolyPatch.H
index 23694fc79b82af08f622e79d2eb92d6567bea037..89cbf8fc3174869ba40a6d6fba8d893ebac32e71 100644
--- a/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/empty/emptyPolyPatch.H
+++ b/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/empty/emptyPolyPatch.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -65,7 +65,8 @@ public:
             const label size,
             const label start,
             const label index,
-            const polyBoundaryMesh& bm
+            const polyBoundaryMesh& bm,
+            const word& patchType
         );
 
         //- Construct from dictionary
@@ -74,7 +75,8 @@ public:
             const word& name,
             const dictionary& dict,
             const label index,
-            const polyBoundaryMesh& bm
+            const polyBoundaryMesh& bm,
+            const word& patchType
         );
 
         //- Construct as copy, resetting the boundary mesh
diff --git a/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/nonuniformTransformCyclic/nonuniformTransformCyclicPolyPatch.H b/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/nonuniformTransformCyclic/nonuniformTransformCyclicPolyPatch.H
index f359891c9279d8a44e81379ac2588a270bc5237a..8ed56b38787cecb5e5b841f6292677c0ef45fdf7 100644
--- a/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/nonuniformTransformCyclic/nonuniformTransformCyclicPolyPatch.H
+++ b/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/nonuniformTransformCyclic/nonuniformTransformCyclicPolyPatch.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -67,10 +67,11 @@ public:
             const label size,
             const label start,
             const label index,
-            const polyBoundaryMesh& bm
+            const polyBoundaryMesh& bm,
+            const word& patchType
         )
         :
-            cyclicPolyPatch(name, size, start, index, bm)
+            cyclicPolyPatch(name, size, start, index, bm, patchType)
         {}
 
         //- Construct from dictionary
@@ -79,10 +80,11 @@ public:
             const word& name,
             const dictionary& dict,
             const label index,
-            const polyBoundaryMesh& bm
+            const polyBoundaryMesh& bm,
+            const word& patchType
         )
         :
-            cyclicPolyPatch(name, dict, index, bm)
+            cyclicPolyPatch(name, dict, index, bm, patchType)
         {}
 
         //- Construct as copy, resetting the boundary mesh
diff --git a/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/oldCyclic/oldCyclicPolyPatch.C b/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/oldCyclic/oldCyclicPolyPatch.C
index aa8fca5d6a3902241e302c01c6c4ed054342a076..7dc587bbfe5ec7b1533ac501705558505f6a5d89 100644
--- a/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/oldCyclic/oldCyclicPolyPatch.C
+++ b/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/oldCyclic/oldCyclicPolyPatch.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -587,10 +587,11 @@ Foam::oldCyclicPolyPatch::oldCyclicPolyPatch
     const label size,
     const label start,
     const label index,
-    const polyBoundaryMesh& bm
+    const polyBoundaryMesh& bm,
+    const word& patchType
 )
 :
-    coupledPolyPatch(name, size, start, index, bm),
+    coupledPolyPatch(name, size, start, index, bm, patchType),
     featureCos_(0.9),
     transform_(UNKNOWN),
     rotationAxis_(vector::zero),
@@ -604,10 +605,11 @@ Foam::oldCyclicPolyPatch::oldCyclicPolyPatch
     const word& name,
     const dictionary& dict,
     const label index,
-    const polyBoundaryMesh& bm
+    const polyBoundaryMesh& bm,
+    const word& patchType
 )
 :
-    coupledPolyPatch(name, dict, index, bm),
+    coupledPolyPatch(name, dict, index, bm, patchType),
     featureCos_(0.9),
     transform_(UNKNOWN),
     rotationAxis_(vector::zero),
diff --git a/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/oldCyclic/oldCyclicPolyPatch.H b/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/oldCyclic/oldCyclicPolyPatch.H
index 45dfe5b7e2763d86a4561a9917a4d7459d767581..5d996988c21ca2200a4774d3270597b2a4ed46a6 100644
--- a/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/oldCyclic/oldCyclicPolyPatch.H
+++ b/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/oldCyclic/oldCyclicPolyPatch.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -198,7 +198,8 @@ public:
             const label size,
             const label start,
             const label index,
-            const polyBoundaryMesh& bm
+            const polyBoundaryMesh& bm,
+            const word& patchType
         );
 
         //- Construct from dictionary
@@ -207,7 +208,8 @@ public:
             const word& name,
             const dictionary& dict,
             const label index,
-            const polyBoundaryMesh& bm
+            const polyBoundaryMesh& bm,
+            const word& patchType
         );
 
         //- Construct as copy, resetting the boundary mesh
diff --git a/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/processor/processorPolyPatch.C b/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/processor/processorPolyPatch.C
index be7f1cb3fae778efbe50e92a58a716db2bf42752..05664dd6eaf3b29574df1a37d6539f8d273428fc 100644
--- a/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/processor/processorPolyPatch.C
+++ b/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/processor/processorPolyPatch.C
@@ -57,7 +57,7 @@ Foam::processorPolyPatch::processorPolyPatch
     const int neighbProcNo
 )
 :
-    coupledPolyPatch(name, size, start, index, bm),
+    coupledPolyPatch(name, size, start, index, bm, typeName),
     myProcNo_(myProcNo),
     neighbProcNo_(neighbProcNo),
     neighbFaceCentres_(),
@@ -71,10 +71,11 @@ Foam::processorPolyPatch::processorPolyPatch
     const word& name,
     const dictionary& dict,
     const label index,
-    const polyBoundaryMesh& bm
+    const polyBoundaryMesh& bm,
+    const word& patchType
 )
 :
-    coupledPolyPatch(name, dict, index, bm),
+    coupledPolyPatch(name, dict, index, bm, patchType),
     myProcNo_(readLabel(dict.lookup("myProcNo"))),
     neighbProcNo_(readLabel(dict.lookup("neighbProcNo"))),
     neighbFaceCentres_(),
diff --git a/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/processor/processorPolyPatch.H b/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/processor/processorPolyPatch.H
index 7f62967641ad8e543bbf0db56e1e80a96249562f..2b39411ee51fa48043e08271946bb1619451dc2d 100644
--- a/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/processor/processorPolyPatch.H
+++ b/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/processor/processorPolyPatch.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -143,7 +143,8 @@ public:
             const word& name,
             const dictionary& dict,
             const label index,
-            const polyBoundaryMesh&
+            const polyBoundaryMesh&,
+            const word& patchType
         );
 
         //- Construct as copy, resetting the boundary mesh
diff --git a/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/processorCyclic/processorCyclicPolyPatch.C b/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/processorCyclic/processorCyclicPolyPatch.C
index 1f194578e05ccb24a4a7bdd9df67c043de3a80ab..eaa818b9fe2618d4ec452344e509fabb03ce4410 100644
--- a/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/processorCyclic/processorCyclicPolyPatch.C
+++ b/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/processorCyclic/processorCyclicPolyPatch.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -76,10 +76,11 @@ Foam::processorCyclicPolyPatch::processorCyclicPolyPatch
     const word& name,
     const dictionary& dict,
     const label index,
-    const polyBoundaryMesh& bm
+    const polyBoundaryMesh& bm,
+    const word& patchType
 )
 :
-    processorPolyPatch(name, dict, index, bm),
+    processorPolyPatch(name, dict, index, bm, patchType),
     tag_
     (
         Pstream::nProcs()*max(myProcNo(), neighbProcNo())
diff --git a/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/processorCyclic/processorCyclicPolyPatch.H b/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/processorCyclic/processorCyclicPolyPatch.H
index 77eea65d6c6448a193bd640e65cb52c87ac0ac12..8d94466543bc46fe57a873174eef2f538d6365bd 100644
--- a/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/processorCyclic/processorCyclicPolyPatch.H
+++ b/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/processorCyclic/processorCyclicPolyPatch.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -132,7 +132,8 @@ public:
             const word& name,
             const dictionary& dict,
             const label index,
-            const polyBoundaryMesh&
+            const polyBoundaryMesh&,
+            const word& patchType
         );
 
         //- Construct as copy, resetting the boundary mesh
diff --git a/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/symmetry/symmetryPolyPatch.C b/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/symmetry/symmetryPolyPatch.C
index 446d4074b906fa874de4937b103ed06dec4273d6..71c7a2cfcf05800a8c2789b74387b0a7efd8c8cf 100644
--- a/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/symmetry/symmetryPolyPatch.C
+++ b/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/symmetry/symmetryPolyPatch.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -44,10 +44,11 @@ Foam::symmetryPolyPatch::symmetryPolyPatch
     const label size,
     const label start,
     const label index,
-    const polyBoundaryMesh& bm
+    const polyBoundaryMesh& bm,
+    const word& patchType
 )
 :
-    polyPatch(name, size, start, index, bm)
+    polyPatch(name, size, start, index, bm, patchType)
 {}
 
 
@@ -56,10 +57,11 @@ Foam::symmetryPolyPatch::symmetryPolyPatch
     const word& name,
     const dictionary& dict,
     const label index,
-    const polyBoundaryMesh& bm
+    const polyBoundaryMesh& bm,
+    const word& patchType
 )
 :
-    polyPatch(name, dict, index, bm)
+    polyPatch(name, dict, index, bm, patchType)
 {}
 
 
diff --git a/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/symmetry/symmetryPolyPatch.H b/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/symmetry/symmetryPolyPatch.H
index b9806082cdb593f8877f194cd3bb948761bf08f1..9df659518f7069221510301924fd0dbb59dcd956 100644
--- a/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/symmetry/symmetryPolyPatch.H
+++ b/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/symmetry/symmetryPolyPatch.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -65,7 +65,8 @@ public:
             const label size,
             const label start,
             const label index,
-            const polyBoundaryMesh& bm
+            const polyBoundaryMesh& bm,
+            const word& patchType
         );
 
         //- Construct from dictionary
@@ -74,7 +75,8 @@ public:
             const word& name,
             const dictionary& dict,
             const label index,
-            const polyBoundaryMesh& bm
+            const polyBoundaryMesh& bm,
+            const word& patchType
         );
 
         //- Construct as copy, resetting the boundary mesh
diff --git a/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/wedge/wedgePolyPatch.C b/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/wedge/wedgePolyPatch.C
index 6223661b8152764404bc518226f6be127a5bc17c..b7c9783cb984dad0c2cf0691c9afd93fac55b36b 100644
--- a/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/wedge/wedgePolyPatch.C
+++ b/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/wedge/wedgePolyPatch.C
@@ -103,10 +103,11 @@ Foam::wedgePolyPatch::wedgePolyPatch
     const label size,
     const label start,
     const label index,
-    const polyBoundaryMesh& bm
+    const polyBoundaryMesh& bm,
+    const word& patchType
 )
 :
-    polyPatch(name, size, start, index, bm)
+    polyPatch(name, size, start, index, bm, patchType)
 {
     initTransforms();
 }
@@ -117,10 +118,11 @@ Foam::wedgePolyPatch::wedgePolyPatch
     const word& name,
     const dictionary& dict,
     const label index,
-    const polyBoundaryMesh& bm
+    const polyBoundaryMesh& bm,
+    const word& patchType
 )
 :
-    polyPatch(name, dict, index, bm)
+    polyPatch(name, dict, index, bm, patchType)
 {
     initTransforms();
 }
diff --git a/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/wedge/wedgePolyPatch.H b/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/wedge/wedgePolyPatch.H
index 6e940c29b780babf77daa5c6d744968f81ead3c7..2caa492d9f143c60b6a656c75fdf859bede26b2f 100644
--- a/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/wedge/wedgePolyPatch.H
+++ b/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/wedge/wedgePolyPatch.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -86,7 +86,8 @@ public:
             const label size,
             const label start,
             const label index,
-            const polyBoundaryMesh& bm
+            const polyBoundaryMesh& bm,
+            const word& patchType
         );
 
         //- Construct from dictionary
@@ -95,7 +96,8 @@ public:
             const word& name,
             const dictionary& dict,
             const label index,
-            const polyBoundaryMesh& bm
+            const polyBoundaryMesh& bm,
+            const word& patchType
         );
 
         //- Construct as copy, resetting the boundary mesh
diff --git a/src/OpenFOAM/meshes/polyMesh/polyPatches/derived/wall/wallPolyPatch.C b/src/OpenFOAM/meshes/polyMesh/polyPatches/derived/wall/wallPolyPatch.C
index 06916da09f49c5b41ff1e7f66b3b517350bfd760..f6c3d5106155f37fe7fa4eae84fabbf6c8ea5b42 100644
--- a/src/OpenFOAM/meshes/polyMesh/polyPatches/derived/wall/wallPolyPatch.C
+++ b/src/OpenFOAM/meshes/polyMesh/polyPatches/derived/wall/wallPolyPatch.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -44,10 +44,11 @@ Foam::wallPolyPatch::wallPolyPatch
     const label size,
     const label start,
     const label index,
-    const polyBoundaryMesh& bm
+    const polyBoundaryMesh& bm,
+    const word& patchType
 )
 :
-    polyPatch(name, size, start, index, bm)
+    polyPatch(name, size, start, index, bm, patchType)
 {}
 
 
@@ -56,10 +57,11 @@ Foam::wallPolyPatch::wallPolyPatch
     const word& name,
     const dictionary& dict,
     const label index,
-    const polyBoundaryMesh& bm
+    const polyBoundaryMesh& bm,
+    const word& patchType
 )
 :
-    polyPatch(name, dict, index, bm)
+    polyPatch(name, dict, index, bm, patchType)
 {}
 
 
diff --git a/src/OpenFOAM/meshes/polyMesh/polyPatches/derived/wall/wallPolyPatch.H b/src/OpenFOAM/meshes/polyMesh/polyPatches/derived/wall/wallPolyPatch.H
index faf837285c7697cb305e2daa45aa205d14235802..cdbd1a64db31bb99a21a22ce90a8c27b2c6f9748 100644
--- a/src/OpenFOAM/meshes/polyMesh/polyPatches/derived/wall/wallPolyPatch.H
+++ b/src/OpenFOAM/meshes/polyMesh/polyPatches/derived/wall/wallPolyPatch.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -65,7 +65,8 @@ public:
             const label size,
             const label start,
             const label index,
-            const polyBoundaryMesh& bm
+            const polyBoundaryMesh& bm,
+            const word& patchType
         );
 
         //- Construct from dictionary
@@ -74,7 +75,8 @@ public:
             const word& name,
             const dictionary& dict,
             const label index,
-            const polyBoundaryMesh& bm
+            const polyBoundaryMesh& bm,
+            const word& patchType
         );
 
         //- Construct as copy, resetting the boundary mesh
diff --git a/src/OpenFOAM/meshes/polyMesh/polyPatches/polyPatch/polyPatch.C b/src/OpenFOAM/meshes/polyMesh/polyPatches/polyPatch/polyPatch.C
index e22381b7dd61bc3b1fced49258b2943f451bc313..a10563c3d1b1dc4b1e6f25caba6e3523d4b558a3 100644
--- a/src/OpenFOAM/meshes/polyMesh/polyPatches/polyPatch/polyPatch.C
+++ b/src/OpenFOAM/meshes/polyMesh/polyPatches/polyPatch/polyPatch.C
@@ -79,7 +79,8 @@ Foam::polyPatch::polyPatch
     const label size,
     const label start,
     const label index,
-    const polyBoundaryMesh& bm
+    const polyBoundaryMesh& bm,
+    const word& patchType
 )
 :
     patchIdentifier(name, index),
@@ -92,7 +93,17 @@ Foam::polyPatch::polyPatch
     boundaryMesh_(bm),
     faceCellsPtr_(NULL),
     mePtr_(NULL)
-{}
+{
+    if
+    (
+        patchType != word::null
+     && constraintType(patchType)
+     && findIndex(inGroups(), patchType) == -1
+    )
+    {
+        inGroups().append(patchType);
+    }
+}
 
 
 Foam::polyPatch::polyPatch
@@ -100,7 +111,8 @@ Foam::polyPatch::polyPatch
     const word& name,
     const dictionary& dict,
     const label index,
-    const polyBoundaryMesh& bm
+    const polyBoundaryMesh& bm,
+    const word& patchType
 )
 :
     patchIdentifier(name, dict, index),
@@ -118,7 +130,17 @@ Foam::polyPatch::polyPatch
     boundaryMesh_(bm),
     faceCellsPtr_(NULL),
     mePtr_(NULL)
-{}
+{
+    if
+    (
+        patchType != word::null
+     && constraintType(patchType)
+     && findIndex(inGroups(), patchType) == -1
+    )
+    {
+        inGroups().append(patchType);
+    }
+}
 
 
 Foam::polyPatch::polyPatch
diff --git a/src/OpenFOAM/meshes/polyMesh/polyPatches/polyPatch/polyPatch.H b/src/OpenFOAM/meshes/polyMesh/polyPatches/polyPatch/polyPatch.H
index dd06c031950ed05ea39bc3c819b23a99ccddc8e4..007db9d2fd2cdf00c490719e3ee6682faf13e8e1 100644
--- a/src/OpenFOAM/meshes/polyMesh/polyPatches/polyPatch/polyPatch.H
+++ b/src/OpenFOAM/meshes/polyMesh/polyPatches/polyPatch/polyPatch.H
@@ -141,9 +141,10 @@ public:
                 const label size,
                 const label start,
                 const label index,
-                const polyBoundaryMesh& bm
+                const polyBoundaryMesh& bm,
+                const word& patchType
             ),
-            (name, size, start, index, bm)
+            (name, size, start, index, bm, patchType)
         );
 
         declareRunTimeSelectionTable
@@ -155,9 +156,10 @@ public:
                 const word& name,
                 const dictionary& dict,
                 const label index,
-                const polyBoundaryMesh& bm
+                const polyBoundaryMesh& bm,
+                const word& patchType
             ),
-            (name, dict, index, bm)
+            (name, dict, index, bm, patchType)
         );
 
 
@@ -170,7 +172,8 @@ public:
             const label size,
             const label start,
             const label index,
-            const polyBoundaryMesh& bm
+            const polyBoundaryMesh& bm,
+            const word& patchType
         );
 
         //- Construct from dictionary
@@ -179,7 +182,8 @@ public:
             const word& name,
             const dictionary& dict,
             const label index,
-            const polyBoundaryMesh& bm
+            const polyBoundaryMesh& bm,
+            const word& patchType
         );
 
         //- Construct as copy, resetting the boundary mesh
diff --git a/src/OpenFOAM/meshes/polyMesh/polyPatches/polyPatch/polyPatchNew.C b/src/OpenFOAM/meshes/polyMesh/polyPatches/polyPatch/polyPatchNew.C
index 224b630ae43614f651b160f96fdaba7e501eec95..0b67ab833525de41de3d8dcbcbfc09836a12b1be 100644
--- a/src/OpenFOAM/meshes/polyMesh/polyPatches/polyPatch/polyPatchNew.C
+++ b/src/OpenFOAM/meshes/polyMesh/polyPatches/polyPatch/polyPatchNew.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -62,7 +62,18 @@ Foam::autoPtr<Foam::polyPatch> Foam::polyPatch::New
             << exit(FatalError);
     }
 
-    return autoPtr<polyPatch>(cstrIter()(name, size, start, index, bm));
+    return autoPtr<polyPatch>
+    (
+        cstrIter()
+        (
+            name,
+            size,
+            start,
+            index,
+            bm,
+            patchType
+        )
+    );
 }
 
 
@@ -109,7 +120,7 @@ Foam::autoPtr<Foam::polyPatch> Foam::polyPatch::New
         }
     }
 
-    return autoPtr<polyPatch>(cstrIter()(name, dict, index, bm));
+    return autoPtr<polyPatch>(cstrIter()(name, dict, index, bm, patchType));
 }
 
 
diff --git a/src/OpenFOAM/primitives/functions/Polynomial/Polynomial.C b/src/OpenFOAM/primitives/functions/Polynomial/Polynomial.C
index 87deb1bd8d5f6e5e4eb11eeb5ec1c76b665e4e12..5a545f150cf8573d35a9a38563404c8b034a5d63 100644
--- a/src/OpenFOAM/primitives/functions/Polynomial/Polynomial.C
+++ b/src/OpenFOAM/primitives/functions/Polynomial/Polynomial.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -91,30 +91,6 @@ Foam::Polynomial<PolySize>::Polynomial(const UList<scalar>& coeffs)
 }
 
 
-// template<int PolySize>
-// Foam::Polynomial<PolySize>::Polynomial(const polynomialFunction& poly)
-// :
-//     VectorSpace<Polynomial<PolySize>, scalar, PolySize>(),
-//     logActive_(poly.logActive()),
-//     logCoeff_(poly.logCoeff())
-// {
-//     if (poly.size() != PolySize)
-//     {
-//         FatalErrorIn
-//         (
-//             "Polynomial<PolySize>::Polynomial(const polynomialFunction&)"
-//         )   << "Size mismatch: Needed " << PolySize
-//             << " but given " << poly.size()
-//             << nl << exit(FatalError);
-//     }
-//
-//     for (int i = 0; i < PolySize; ++i)
-//     {
-//         this->v_[i] = poly[i];
-//     }
-// }
-
-
 template<int PolySize>
 Foam::Polynomial<PolySize>::Polynomial(Istream& is)
 :
@@ -178,11 +154,11 @@ Foam::scalar Foam::Polynomial<PolySize>::value(const scalar x) const
     scalar val = this->v_[0];
 
     // avoid costly pow() in calculation
-    scalar powX = x;
+    scalar powX = 1;
     for (label i=1; i<PolySize; ++i)
     {
-        val += this->v_[i]*powX;
         powX *= x;
+        val += this->v_[i]*powX;
     }
 
     if (logActive_)
@@ -195,39 +171,57 @@ Foam::scalar Foam::Polynomial<PolySize>::value(const scalar x) const
 
 
 template<int PolySize>
-Foam::scalar Foam::Polynomial<PolySize>::integrate
-(
-    const scalar x1,
-    const scalar x2
-) const
+Foam::scalar Foam::Polynomial<PolySize>::derivative(const scalar x) const
 {
+    scalar deriv = 0;
+
+    if (PolySize > 1)
+    {
+        // avoid costly pow() in calculation
+        deriv += this->v_[1];
+
+        scalar powX = 1;
+        for (label i=2; i<PolySize; ++i)
+        {
+            powX *= x;
+            deriv += i*this->v_[i]*powX;
+        }
+    }
+
     if (logActive_)
     {
-        FatalErrorIn
-        (
-            "scalar Polynomial<PolySize>::integrate"
-            "("
-                "const scalar, "
-                "const scalar"
-            ") const"
-        )   << "Cannot integrate polynomial with logarithmic coefficients"
-            << nl << abort(FatalError);
+        deriv += logCoeff_/x;
     }
 
+    return deriv;
+}
+
 
+template<int PolySize>
+Foam::scalar Foam::Polynomial<PolySize>::integral
+(
+    const scalar x1,
+    const scalar x2
+) const
+{
     // avoid costly pow() in calculation
     scalar powX1 = x1;
     scalar powX2 = x2;
 
-    scalar val = this->v_[0]*(powX2 - powX1);
+    scalar integ = this->v_[0]*(powX2 - powX1);
     for (label i=1; i<PolySize; ++i)
     {
-        val += this->v_[i]/(i + 1) * (powX2 - powX1);
         powX1 *= x1;
         powX2 *= x2;
+        integ += this->v_[i]/(i + 1)*(powX2 - powX1);
     }
 
-    return val;
+    if (logActive_)
+    {
+        integ += logCoeff_*((x2*log(x2) - x2) - (x1*log(x1) - x1));
+    }
+
+    return integ;
 }
 
 
diff --git a/src/OpenFOAM/primitives/functions/Polynomial/Polynomial.H b/src/OpenFOAM/primitives/functions/Polynomial/Polynomial.H
index 3d1da394c01169e39a833c530fbdf530cfdce75f..c4848302122de7a640d6194c5c1c43fdae58bbb5 100644
--- a/src/OpenFOAM/primitives/functions/Polynomial/Polynomial.H
+++ b/src/OpenFOAM/primitives/functions/Polynomial/Polynomial.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -27,13 +27,14 @@ Class
 Description
     Polynomial templated on size (order):
 
-        poly = logCoeff*log(x) + sum(coeff_[i]*x^i)
+        poly = sum(coeff_[i]*x^i) logCoeff*log(x)
 
     where 0 \<= i \<= N
 
     - integer powers, starting at zero
     - value(x) to evaluate the poly for a given value
-    - integrate(x1, x2) between two scalar values
+    - derivative(x) returns derivative at value
+    - integral(x1, x2) returns integral between two scalar values
     - integral() to return a new, integral coeff polynomial
       - increases the size (order)
     - integralMinus1() to return a new, integral coeff polynomial where
@@ -136,16 +137,18 @@ public:
             //- Return polynomial value
             scalar value(const scalar x) const;
 
-            //- Integrate between two values
-            scalar integrate(const scalar x1, const scalar x2) const;
+            //- Return derivative of the polynomial at the given x
+            scalar derivative(const scalar x) const;
 
+            //- Return integral between two values
+            scalar integral(const scalar x1, const scalar x2) const;
 
             //- Return integral coefficients.
-            //  Argument becomes zeroth element (constant of integration)
+            //  Argument becomes zero'th element (constant of integration)
             intPolyType integral(const scalar intConstant = 0.0) const;
 
             //- Return integral coefficients when lowest order is -1.
-            //  Argument becomes zeroth element (constant of integration)
+            //  Argument becomes zero'th element (constant of integration)
             polyType integralMinus1(const scalar intConstant = 0.0) const;
 
 
diff --git a/src/dynamicFvMesh/dynamicMotionSolverFvMesh/dynamicMotionSolverFvMesh.C b/src/dynamicFvMesh/dynamicMotionSolverFvMesh/dynamicMotionSolverFvMesh.C
index e88c5d9225dff2d956765413f2cf84229dbab1db..cc7405fa68e507ba2d4b027431792b866ff683e6 100644
--- a/src/dynamicFvMesh/dynamicMotionSolverFvMesh/dynamicMotionSolverFvMesh.C
+++ b/src/dynamicFvMesh/dynamicMotionSolverFvMesh/dynamicMotionSolverFvMesh.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/dynamicMesh/Make/files b/src/dynamicMesh/Make/files
index d7310029a7e568fb83edda0d8719c0821948f257..21dcc7239828316acbf60f577c4c8c125b2156ec 100644
--- a/src/dynamicMesh/Make/files
+++ b/src/dynamicMesh/Make/files
@@ -85,7 +85,11 @@ motionSmoother/motionSmoother.C
 motionSmoother/motionSmootherCheck.C
 motionSmoother/polyMeshGeometry/polyMeshGeometry.C
 
-motionSolver/motionSolver.C
+motionSolver/motionSolver/motionSolver.C
+motionSolver/displacement/displacementMotionSolver.C
+motionSolver/componentDisplacement/componentDisplacementMotionSolver.C
+motionSolver/velocity/velocityMotionSolver.C
+motionSolver/componentVelocity/componentVelocityMotionSolver.C
 
 createShellMesh/createShellMesh.C
 
diff --git a/src/dynamicMesh/fvMeshDistribute/fvMeshDistribute.C b/src/dynamicMesh/fvMeshDistribute/fvMeshDistribute.C
index ce775360533424659dde1626e4b304fcfe5ac168..33058afaf4a06de831ad370727bd684751b563c1 100644
--- a/src/dynamicMesh/fvMeshDistribute/fvMeshDistribute.C
+++ b/src/dynamicMesh/fvMeshDistribute/fvMeshDistribute.C
@@ -2445,32 +2445,69 @@ Foam::autoPtr<Foam::mapDistributePolyMesh> Foam::fvMeshDistribute::distribute
     // parallel comms. After this points and edges should again be consistent.
     mergeSharedPoints(constructPointMap);
 
+//    // Bit of hack: processorFvPatchField does not get reset since created
+//    // from nothing so explicitly reset.
+//    initPatchFields<volScalarField, processorFvPatchField<scalar> >
+//    (
+//        pTraits<scalar>::zero
+//    );
+//    initPatchFields<volVectorField, processorFvPatchField<vector> >
+//    (
+//        pTraits<vector>::zero
+//    );
+//    initPatchFields
+//    <
+//        volSphericalTensorField,
+//        processorFvPatchField<sphericalTensor>
+//    >
+//    (
+//        pTraits<sphericalTensor>::zero
+//    );
+//    initPatchFields<volSymmTensorField, processorFvPatchField<symmTensor> >
+//    (
+//        pTraits<symmTensor>::zero
+//    );
+//    initPatchFields<volTensorField, processorFvPatchField<tensor> >
+//    (
+//        pTraits<tensor>::zero
+//    );
+//    initPatchFields<surfaceScalarField, processorFvsPatchField<scalar> >
+//    (
+//        pTraits<scalar>::zero
+//    );
+//    initPatchFields<surfaceVectorField, processorFvsPatchField<vector> >
+//    (
+//        pTraits<vector>::zero
+//    );
+//    initPatchFields
+//    <
+//        surfaceSphericalTensorField,
+//        processorFvsPatchField<sphericalTensor>
+//    >
+//    (
+//        pTraits<sphericalTensor>::zero
+//    );
+//    initPatchFields
+//    <
+//        surfaceSymmTensorField,
+//        processorFvsPatchField<symmTensor>
+//    >
+//    (
+//        pTraits<symmTensor>::zero
+//    );
+//    initPatchFields<surfaceTensorField, processorFvsPatchField<tensor> >
+//    (
+//        pTraits<tensor>::zero
+//    );
+//XXXXX
     // Bit of hack: processorFvPatchField does not get reset since created
     // from nothing so explicitly reset.
-    initPatchFields<volScalarField, processorFvPatchField<scalar> >
-    (
-        pTraits<scalar>::zero
-    );
-    initPatchFields<volVectorField, processorFvPatchField<vector> >
-    (
-        pTraits<vector>::zero
-    );
-    initPatchFields
-    <
-        volSphericalTensorField,
-        processorFvPatchField<sphericalTensor>
-    >
-    (
-        pTraits<sphericalTensor>::zero
-    );
-    initPatchFields<volSymmTensorField, processorFvPatchField<symmTensor> >
-    (
-        pTraits<symmTensor>::zero
-    );
-    initPatchFields<volTensorField, processorFvPatchField<tensor> >
-    (
-        pTraits<tensor>::zero
-    );
+    correctBoundaryConditions<volScalarField>();
+    correctBoundaryConditions<volVectorField>();
+    correctBoundaryConditions<volSphericalTensorField>();
+    correctBoundaryConditions<volSymmTensorField>();
+    correctBoundaryConditions<volTensorField>();
+
     initPatchFields<surfaceScalarField, processorFvsPatchField<scalar> >
     (
         pTraits<scalar>::zero
@@ -2499,7 +2536,7 @@ Foam::autoPtr<Foam::mapDistributePolyMesh> Foam::fvMeshDistribute::distribute
     (
         pTraits<tensor>::zero
     );
-
+//XXXXX
 
     mesh_.setInstance(mesh_.time().timeName());
 
diff --git a/src/dynamicMesh/fvMeshDistribute/fvMeshDistribute.H b/src/dynamicMesh/fvMeshDistribute/fvMeshDistribute.H
index ace7117602d1811f4e0d27ef36683c122a447139..eb771003a0c9674cc5ae4ae3bef6568e1437af92 100644
--- a/src/dynamicMesh/fvMeshDistribute/fvMeshDistribute.H
+++ b/src/dynamicMesh/fvMeshDistribute/fvMeshDistribute.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -138,6 +138,10 @@ class fvMeshDistribute
                 const typename GeoField::value_type& initVal
             );
 
+            //- Call correctBoundaryConditions on fields
+            template<class GeoField>
+            void correctBoundaryConditions();
+
             //- Delete all processor patches. Move any processor faces into
             //  patchI.
             autoPtr<mapPolyMesh> deleteProcPatches(const label patchI);
diff --git a/src/dynamicMesh/fvMeshDistribute/fvMeshDistributeTemplates.C b/src/dynamicMesh/fvMeshDistribute/fvMeshDistributeTemplates.C
index fa88841eb06f56a02ba300f8f34a60ebfa4db423..00364a81add063129d25d828ba2ed7a113890953 100644
--- a/src/dynamicMesh/fvMeshDistribute/fvMeshDistributeTemplates.C
+++ b/src/dynamicMesh/fvMeshDistribute/fvMeshDistributeTemplates.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -241,6 +241,24 @@ void Foam::fvMeshDistribute::initPatchFields
 }
 
 
+// correctBoundaryConditions patch fields of certain type
+template<class GeoField>
+void Foam::fvMeshDistribute::correctBoundaryConditions()
+{
+    HashTable<const GeoField*> flds
+    (
+        mesh_.objectRegistry::lookupClass<GeoField>()
+    );
+
+    forAllConstIter(typename HashTable<const GeoField*>, flds, iter)
+    {
+        const GeoField& fld = *iter();
+
+        const_cast<GeoField&>(fld).correctBoundaryConditions();
+    }
+}
+
+
 // Send fields. Note order supplied so we can receive in exactly the same order.
 // Note that field gets written as entry in dictionary so we
 // can construct from subdictionary.
diff --git a/src/dynamicMesh/motionSmoother/motionSmoother.C b/src/dynamicMesh/motionSmoother/motionSmoother.C
index fa9c2f1baa20a3501d8433efc87e90709afcc39c..0359c1845729b2357425ef60c39f7cb341e048cb 100644
--- a/src/dynamicMesh/motionSmoother/motionSmoother.C
+++ b/src/dynamicMesh/motionSmoother/motionSmoother.C
@@ -905,7 +905,8 @@ Foam::tmp<Foam::scalarField> Foam::motionSmoother::movePoints
 
     // Move actual mesh points. Make sure to delete tetBasePtIs so it
     // gets rebuilt.
-    tmp<scalarField> tsweptVol = mesh_.movePoints(newPoints, true);
+    mesh_.clearAdditionalGeom();
+    tmp<scalarField> tsweptVol = mesh_.movePoints(newPoints);
 
     pp_.movePoints(mesh_.points());
 
diff --git a/src/dynamicMesh/motionSolver/componentDisplacement/componentDisplacementMotionSolver.C b/src/dynamicMesh/motionSolver/componentDisplacement/componentDisplacementMotionSolver.C
new file mode 100644
index 0000000000000000000000000000000000000000..fe902f95a06304249873446625e5c5260f95bc55
--- /dev/null
+++ b/src/dynamicMesh/motionSolver/componentDisplacement/componentDisplacementMotionSolver.C
@@ -0,0 +1,215 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2012 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "componentDisplacementMotionSolver.H"
+#include "mapPolyMesh.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    defineTypeNameAndDebug(componentDisplacementMotionSolver, 0);
+}
+
+
+// * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
+
+Foam::direction Foam::componentDisplacementMotionSolver::cmpt
+(
+    const word& cmptName
+) const
+{
+    if (cmptName == "x")
+    {
+        return vector::X;
+    }
+    else if (cmptName == "y")
+    {
+        return vector::Y;
+    }
+    else if (cmptName == "z")
+    {
+        return vector::Z;
+    }
+    else
+    {
+        FatalErrorIn
+        (
+            "componentDisplacementMotionSolver::"
+            "componentDisplacementMotionSolver"
+            "(const polyMesh& mesh, const IOdictionary&)"
+        )   << "Given component name " << cmptName << " should be x, y or z"
+            << exit(FatalError);
+
+        return 0;
+    }
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::componentDisplacementMotionSolver::componentDisplacementMotionSolver
+(
+    const polyMesh& mesh,
+    const IOdictionary& dict,
+    const word& type
+)
+:
+    motionSolver(mesh, dict, type),
+    cmptName_(coeffDict().lookup("component")),
+    cmpt_(cmpt(cmptName_)),
+    points0_
+    (
+        pointIOField
+        (
+            IOobject
+            (
+                "points",
+                time().constant(),
+                polyMesh::meshSubDir,
+                mesh,
+                IOobject::MUST_READ,
+                IOobject::NO_WRITE,
+                false
+            )
+        ).component(cmpt_)
+    ),
+    pointDisplacement_
+    (
+        IOobject
+        (
+            "pointDisplacement" + cmptName_,
+            mesh.time().timeName(),
+            mesh,
+            IOobject::MUST_READ,
+            IOobject::AUTO_WRITE
+        ),
+        pointMesh::New(mesh)
+    )
+{
+    if (points0_.size() != mesh.nPoints())
+    {
+        FatalErrorIn
+        (
+            "componentDisplacementMotionSolver::"
+            "componentDisplacementMotionSolver\n"
+            "(\n"
+            "    const polyMesh&,\n"
+            "    const IOdictionary&\n"
+            ")"
+        )   << "Number of points in mesh " << mesh.nPoints()
+            << " differs from number of points " << points0_.size()
+            << " read from file "
+            <<
+                IOobject
+                (
+                    "points",
+                    mesh.time().constant(),
+                    polyMesh::meshSubDir,
+                    mesh,
+                    IOobject::MUST_READ,
+                    IOobject::NO_WRITE,
+                    false
+                ).filePath()
+            << exit(FatalError);
+    }
+}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::componentDisplacementMotionSolver::~componentDisplacementMotionSolver()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+void Foam::componentDisplacementMotionSolver::movePoints(const pointField& p)
+{
+    // No local data to update
+}
+
+
+void Foam::componentDisplacementMotionSolver::updateMesh(const mapPolyMesh& mpm)
+{
+    // pointMesh already updates pointFields.
+
+    motionSolver::updateMesh(mpm);
+
+    // Map points0_. Bit special since we somehow have to come up with
+    // a sensible points0 position for introduced points.
+    // Find out scaling between points0 and current points
+
+    // Get the new points either from the map or the mesh
+    const scalarField points
+    (
+        mpm.hasMotionPoints()
+      ? mpm.preMotionPoints().component(cmpt_)
+      : mesh().points().component(cmpt_)
+    );
+
+    // Get extents of points0 and points and determine scale
+    const scalar scale =
+        (gMax(points0_)-gMin(points0_))
+       /(gMax(points)-gMin(points));
+
+    scalarField newPoints0(mpm.pointMap().size());
+
+    forAll(newPoints0, pointI)
+    {
+        label oldPointI = mpm.pointMap()[pointI];
+
+        if (oldPointI >= 0)
+        {
+            label masterPointI = mpm.reversePointMap()[oldPointI];
+
+            if (masterPointI == pointI)
+            {
+                newPoints0[pointI] = points0_[oldPointI];
+            }
+            else
+            {
+                // New point. Assume motion is scaling.
+                newPoints0[pointI] =
+                    points0_[oldPointI]
+                  + scale*(points[pointI]-points[masterPointI]);
+            }
+        }
+        else
+        {
+            FatalErrorIn
+            (
+                "displacementLaplacianFvMotionSolver::updateMesh"
+                "(const mapPolyMesh& mpm)"
+            )   << "Cannot work out coordinates of introduced vertices."
+                << " New vertex " << pointI << " at coordinate "
+                << points[pointI] << exit(FatalError);
+        }
+    }
+    points0_.transfer(newPoints0);
+}
+
+
+// ************************************************************************* //
diff --git a/src/dynamicMesh/motionSolver/componentDisplacement/componentDisplacementMotionSolver.H b/src/dynamicMesh/motionSolver/componentDisplacement/componentDisplacementMotionSolver.H
new file mode 100644
index 0000000000000000000000000000000000000000..9a773a755b18e3d9bb84ef4cf886b55efeca5161
--- /dev/null
+++ b/src/dynamicMesh/motionSolver/componentDisplacement/componentDisplacementMotionSolver.H
@@ -0,0 +1,142 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2012 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::componentDisplacementMotionSolver
+
+Description
+    Virtual base class for displacement motion solver
+
+    The boundary displacement is set as a boundary condition
+    on the pointDisplacementX pointScalarField.
+
+SourceFiles
+    componentDisplacementMotionSolver.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef componentDisplacementMotionSolver_H
+#define componentDisplacementMotionSolver_H
+
+#include "motionSolver.H"
+#include "pointFields.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+class mapPolyMesh;
+
+/*---------------------------------------------------------------------------*\
+                   Class componentDisplacementMotionSolver Declaration
+\*---------------------------------------------------------------------------*/
+
+class componentDisplacementMotionSolver
+:
+    public motionSolver
+{
+protected:
+
+    // Protected data
+
+        //- The component name to solve for
+        word cmptName_;
+
+        //- The component to solve for
+        direction cmpt_;
+
+        //- Reference point field for this component
+        scalarField points0_;
+
+        //- Point motion field
+        mutable pointScalarField pointDisplacement_;
+
+private:
+
+    // Private Member Functions
+
+        //- Return the component corresponding to the given component name
+        direction cmpt(const word& cmptName) const;
+
+        //- Disallow default bitwise copy construct
+        componentDisplacementMotionSolver
+        (
+            const componentDisplacementMotionSolver&
+        );
+
+        //- Disallow default bitwise assignment
+        void operator=(const componentDisplacementMotionSolver&);
+
+public:
+
+    //- Runtime type information
+    TypeName("componentDisplacementMotionSolver");
+
+
+    // Constructors
+
+        //- Construct from polyMesh and dictionary and type
+        componentDisplacementMotionSolver
+        (
+            const polyMesh&,
+            const IOdictionary&,
+            const word& type
+        );
+
+
+    //- Destructor
+    virtual ~componentDisplacementMotionSolver();
+
+
+    // Member Functions
+
+        //- Return reference to the reference field
+        scalarField& points0()
+        {
+            return points0_;
+        }
+
+        //- Return reference to the reference field
+        const scalarField& points0() const
+        {
+            return points0_;
+        }
+
+        //- Update local data for geometry changes
+        virtual void movePoints(const pointField&);
+
+        //-  Update local data for topology changes
+        virtual void updateMesh(const mapPolyMesh&);
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/dynamicMesh/motionSolver/componentVelocity/componentVelocityMotionSolver.C b/src/dynamicMesh/motionSolver/componentVelocity/componentVelocityMotionSolver.C
new file mode 100644
index 0000000000000000000000000000000000000000..57781e3bb1e050c48894ca9d1323e7c58d214905
--- /dev/null
+++ b/src/dynamicMesh/motionSolver/componentVelocity/componentVelocityMotionSolver.C
@@ -0,0 +1,120 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2012 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "componentVelocityMotionSolver.H"
+#include "mapPolyMesh.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    defineTypeNameAndDebug(componentVelocityMotionSolver, 0);
+}
+
+
+// * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
+
+Foam::direction Foam::componentVelocityMotionSolver::cmpt
+(
+    const word& cmptName
+) const
+{
+    if (cmptName == "x")
+    {
+        return vector::X;
+    }
+    else if (cmptName == "y")
+    {
+        return vector::Y;
+    }
+    else if (cmptName == "z")
+    {
+        return vector::Z;
+    }
+    else
+    {
+        FatalErrorIn
+        (
+            "componentVelocityMotionSolver::"
+            "componentVelocityMotionSolver"
+            "(const polyMesh& mesh, const IOdictionary&)"
+        )   << "Given component name " << cmptName << " should be x, y or z"
+            << exit(FatalError);
+
+        return 0;
+    }
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::componentVelocityMotionSolver::componentVelocityMotionSolver
+(
+    const polyMesh& mesh,
+    const IOdictionary& dict,
+    const word& type
+)
+:
+    motionSolver(mesh, dict, type),
+    cmptName_(coeffDict().lookup("component")),
+    cmpt_(cmpt(cmptName_)),
+    pointMotionU_
+    (
+        IOobject
+        (
+            "pointMotionU" + cmptName_,
+            mesh.time().timeName(),
+            mesh,
+            IOobject::MUST_READ,
+            IOobject::AUTO_WRITE
+        ),
+        pointMesh::New(mesh)
+    )
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::componentVelocityMotionSolver::~componentVelocityMotionSolver()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+void Foam::componentVelocityMotionSolver::movePoints(const pointField& p)
+{
+    // No local data to adapt
+}
+
+
+void Foam::componentVelocityMotionSolver::updateMesh(const mapPolyMesh& mpm)
+{
+    // pointMesh already updates pointFields.
+
+    motionSolver::updateMesh(mpm);
+}
+
+
+// ************************************************************************* //
diff --git a/src/dynamicMesh/motionSolver/componentVelocity/componentVelocityMotionSolver.H b/src/dynamicMesh/motionSolver/componentVelocity/componentVelocityMotionSolver.H
new file mode 100644
index 0000000000000000000000000000000000000000..5370797094f02b9bffae69aa980b2007196ed5d8
--- /dev/null
+++ b/src/dynamicMesh/motionSolver/componentVelocity/componentVelocityMotionSolver.H
@@ -0,0 +1,127 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2012 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::componentVelocityMotionSolver
+
+Description
+    Virtual base class for velocity motion solver
+
+    The boundary displacement is set as a boundary condition
+    on the pointMotionUX pointScalarField.
+
+SourceFiles
+    componentVelocityMotionSolver.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef componentVelocityMotionSolver_H
+#define componentVelocityMotionSolver_H
+
+#include "motionSolver.H"
+#include "pointFields.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+class mapPolyMesh;
+
+/*---------------------------------------------------------------------------*\
+                   Class componentVelocityMotionSolver Declaration
+\*---------------------------------------------------------------------------*/
+
+class componentVelocityMotionSolver
+:
+    public motionSolver
+{
+protected:
+
+    // Protected data
+
+        //- The component name to solve for
+        word cmptName_;
+
+        //- The component to solve for
+        direction cmpt_;
+
+        //- Point motion field
+        mutable pointScalarField pointMotionU_;
+
+private:
+
+    // Private Member Functions
+
+        //- Return the component corresponding to the given component name
+        direction cmpt(const word& cmptName) const;
+
+        //- Disallow default bitwise copy construct
+        componentVelocityMotionSolver
+        (
+            const componentVelocityMotionSolver&
+        );
+
+        //- Disallow default bitwise assignment
+        void operator=(const componentVelocityMotionSolver&);
+
+public:
+
+    //- Runtime type information
+    TypeName("componentVelocityMotionSolver");
+
+
+    // Constructors
+
+        //- Construct from mesh and dictionary
+        componentVelocityMotionSolver
+        (
+            const polyMesh&,
+            const IOdictionary&,
+            const word& type
+        );
+
+
+    //- Destructor
+    virtual ~componentVelocityMotionSolver();
+
+
+    // Member Functions
+
+        //- Update local data for geometry changes
+        virtual void movePoints(const pointField&);
+
+        //-  Update local data for topology changes
+        virtual void updateMesh(const mapPolyMesh&);
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/fvMotionSolver/fvMotionSolvers/displacement/displacementFvMotionSolver/displacementFvMotionSolver.C b/src/dynamicMesh/motionSolver/displacement/displacementMotionSolver.C
similarity index 78%
rename from src/fvMotionSolver/fvMotionSolvers/displacement/displacementFvMotionSolver/displacementFvMotionSolver.C
rename to src/dynamicMesh/motionSolver/displacement/displacementMotionSolver.C
index 690c4e1a5565b9e8c37d9a2af08c179e2fb6b30f..9330b5b35a39c6bd39650df827ae6f8ccfa3441b 100644
--- a/src/fvMotionSolver/fvMotionSolvers/displacement/displacementFvMotionSolver/displacementFvMotionSolver.C
+++ b/src/dynamicMesh/motionSolver/displacement/displacementMotionSolver.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -23,27 +23,39 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "displacementFvMotionSolver.H"
-#include "addToRunTimeSelectionTable.H"
+#include "displacementMotionSolver.H"
 #include "mapPolyMesh.H"
 
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 namespace Foam
 {
-    defineTypeNameAndDebug(displacementFvMotionSolver, 0);
+    defineTypeNameAndDebug(displacementMotionSolver, 0);
 }
 
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::displacementFvMotionSolver::displacementFvMotionSolver
+Foam::displacementMotionSolver::displacementMotionSolver
 (
     const polyMesh& mesh,
-    Istream&
+    const IOdictionary& dict,
+    const word& type
 )
 :
-    fvMotionSolver(mesh),
+    motionSolver(mesh, dict, type),
+    pointDisplacement_
+    (
+        IOobject
+        (
+            "pointDisplacement",
+            mesh.time().timeName(),
+            mesh,
+            IOobject::MUST_READ,
+            IOobject::AUTO_WRITE
+        ),
+        pointMesh::New(mesh)
+    ),
     points0_
     (
         pointIOField
@@ -65,10 +77,11 @@ Foam::displacementFvMotionSolver::displacementFvMotionSolver
     {
         FatalErrorIn
         (
-            "displacementFvMotionSolver::displacementFvMotionSolver\n"
+            "displacementMotionSolver::"
+            "displacementMotionSolver\n"
             "(\n"
             "    const polyMesh&,\n"
-            "    Istream&\n"
+            "    const IOdictionary&\n"
             ")"
         )   << "Number of points in mesh " << mesh.nPoints()
             << " differs from number of points " << points0_.size()
@@ -91,15 +104,23 @@ Foam::displacementFvMotionSolver::displacementFvMotionSolver
 
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
-Foam::displacementFvMotionSolver::~displacementFvMotionSolver()
+Foam::displacementMotionSolver::~displacementMotionSolver()
 {}
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-void Foam::displacementFvMotionSolver::updateMesh(const mapPolyMesh& mpm)
+void Foam::displacementMotionSolver::movePoints(const pointField&)
 {
-    fvMotionSolver::updateMesh(mpm);
+    // No local data to update
+}
+
+
+void Foam::displacementMotionSolver::updateMesh(const mapPolyMesh& mpm)
+{
+    // pointMesh already updates pointFields.
+
+    motionSolver::updateMesh(mpm);
 
     // Map points0_. Bit special since we somehow have to come up with
     // a sensible points0 position for introduced points.
@@ -110,7 +131,7 @@ void Foam::displacementFvMotionSolver::updateMesh(const mapPolyMesh& mpm)
     (
         mpm.hasMotionPoints()
       ? mpm.preMotionPoints()
-      : fvMesh_.points()
+      : mesh().points()
     );
 
     // Note: boundBox does reduce
@@ -147,8 +168,8 @@ void Foam::displacementFvMotionSolver::updateMesh(const mapPolyMesh& mpm)
         {
             FatalErrorIn
             (
-                "displacementLaplacianFvMotionSolver::updateMesh"
-                "(const mapPolyMesh& mpm)"
+                "displacementMotionSolver::updateMesh"
+                "(const mapPolyMesh&)"
             )   << "Cannot work out coordinates of introduced vertices."
                 << " New vertex " << pointI << " at coordinate "
                 << points[pointI] << exit(FatalError);
diff --git a/src/dynamicMesh/motionSolver/displacement/displacementMotionSolver.H b/src/dynamicMesh/motionSolver/displacement/displacementMotionSolver.H
new file mode 100644
index 0000000000000000000000000000000000000000..ad7aa193b9a925953bb61ab15953610829fda4f5
--- /dev/null
+++ b/src/dynamicMesh/motionSolver/displacement/displacementMotionSolver.H
@@ -0,0 +1,148 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2012 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::displacementMotionSolver
+
+Description
+    Virtual base class for displacement motion solver
+
+    The boundary displacement is set as a boundary condition
+    on the pointDisplacement pointVectorField.
+
+SourceFiles
+    displacementMotionSolver.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef displacementMotionSolver_H
+#define displacementMotionSolver_H
+
+#include "motionSolver.H"
+#include "pointFields.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+class mapPolyMesh;
+
+/*---------------------------------------------------------------------------*\
+                   Class displacementMotionSolver Declaration
+\*---------------------------------------------------------------------------*/
+
+class displacementMotionSolver
+:
+    public motionSolver
+{
+protected:
+
+    // Protected data
+
+        //- Point motion field
+        mutable pointVectorField pointDisplacement_;
+
+private:
+
+    // Private data
+
+        //- Starting points
+        pointField points0_;
+
+
+    // Private Member Functions
+
+        //- Disallow default bitwise copy construct
+        displacementMotionSolver
+        (
+            const displacementMotionSolver&
+        );
+
+        //- Disallow default bitwise assignment
+        void operator=(const displacementMotionSolver&);
+
+public:
+
+    //- Runtime type information
+    TypeName("displacementMotionSolver");
+
+
+    // Constructors
+
+        //- Construct from mesh and dictionary
+        displacementMotionSolver
+        (
+            const polyMesh&,
+            const IOdictionary&,
+            const word& type
+        );
+
+
+    //- Destructor
+    virtual ~displacementMotionSolver();
+
+
+    // Member Functions
+
+        //- Return reference to the reference field
+        pointField& points0()
+        {
+            return points0_;
+        }
+
+        //- Return reference to the reference field
+        const pointField& points0() const
+        {
+            return points0_;
+        }
+
+        //- Return reference to the point motion displacement field
+        pointVectorField& pointDisplacement()
+        {
+            return pointDisplacement_;
+        }
+
+        //- Return const reference to the point motion displacement field
+        const pointVectorField& pointDisplacement() const
+        {
+            return pointDisplacement_;
+        }
+
+        //- Update local data for geometry changes
+        virtual void movePoints(const pointField&);
+
+        //-  Update local data for topology changes
+        virtual void updateMesh(const mapPolyMesh&);
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/dynamicMesh/motionSolver/motionSolver.C b/src/dynamicMesh/motionSolver/motionSolver/motionSolver.C
similarity index 77%
rename from src/dynamicMesh/motionSolver/motionSolver.C
rename to src/dynamicMesh/motionSolver/motionSolver/motionSolver.C
index 1f54ef61e699b6a2d13bfab3d3c64a7afc85a4e1..eab2208764e0598c2ed80ee2dae5d534f84c83b9 100644
--- a/src/dynamicMesh/motionSolver/motionSolver.C
+++ b/src/dynamicMesh/motionSolver/motionSolver/motionSolver.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -36,6 +36,26 @@ namespace Foam
     defineRunTimeSelectionTable(motionSolver, dictionary);
 }
 
+// * * * * * * * * * * * * * Static Member Functions * * * * * * * * * * * * //
+
+Foam::IOobject Foam::motionSolver::stealRegistration
+(
+    const IOdictionary& dict
+)
+{
+    IOobject io(dict);
+    if (dict.registerObject())
+    {
+        // De-register if necessary
+        const_cast<IOdictionary&>(dict).checkOut();
+
+        io.registerObject() = true;
+    }
+
+    return io;
+}
+
+
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
 Foam::motionSolver::motionSolver(const polyMesh& mesh)
@@ -56,26 +76,29 @@ Foam::motionSolver::motionSolver(const polyMesh& mesh)
 {}
 
 
-// * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * * //
+Foam::motionSolver::motionSolver
+(
+    const polyMesh& mesh,
+    const IOdictionary& dict,
+    const word& type
+)
+:
+    IOdictionary(stealRegistration(dict), dict),
+    mesh_(mesh),
+    twoDPointCorrector_(mesh),
+    coeffDict_(dict.subDict(type + "Coeffs"))
+{}
 
-Foam::autoPtr<Foam::motionSolver> Foam::motionSolver::New(const polyMesh& mesh)
-{
-    IOdictionary solverDict
-    (
-        IOobject
-        (
-            "dynamicMeshDict",
-            mesh.time().constant(),
-            mesh,
-            IOobject::MUST_READ_IF_MODIFIED,
-            IOobject::NO_WRITE,
-            false
-        )
-    );
 
-    Istream& msData = solverDict.lookup("solver");
+// * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * * //
 
-    const word solverTypeName(msData);
+Foam::autoPtr<Foam::motionSolver> Foam::motionSolver::New
+(
+    const polyMesh& mesh,
+    const IOdictionary& solverDict
+)
+{
+    const word solverTypeName(solverDict.lookup("solver"));
 
     Info<< "Selecting motion solver: " << solverTypeName << endl;
 
@@ -102,7 +125,7 @@ Foam::autoPtr<Foam::motionSolver> Foam::motionSolver::New(const polyMesh& mesh)
     {
         FatalErrorIn
         (
-            "motionSolver::New(const polyMesh& mesh)"
+            "motionSolver::New(const polyMesh&)"
         )   << "Unknown solver type "
             << solverTypeName << nl << nl
             << "Valid solver types are:" << endl
@@ -110,7 +133,25 @@ Foam::autoPtr<Foam::motionSolver> Foam::motionSolver::New(const polyMesh& mesh)
             << exit(FatalError);
     }
 
-    return autoPtr<motionSolver>(cstrIter()(mesh, msData));
+    return autoPtr<motionSolver>(cstrIter()(mesh, solverDict));
+}
+
+
+Foam::autoPtr<Foam::motionSolver> Foam::motionSolver::New(const polyMesh& mesh)
+{
+    IOdictionary solverDict
+    (
+        IOobject
+        (
+            "dynamicMeshDict",
+            mesh.time().constant(),
+            mesh,
+            IOobject::MUST_READ_IF_MODIFIED,
+            IOobject::NO_WRITE
+        )
+    );
+
+    return New(mesh, solverDict);
 }
 
 
diff --git a/src/dynamicMesh/motionSolver/motionSolver.H b/src/dynamicMesh/motionSolver/motionSolver/motionSolver.H
similarity index 73%
rename from src/dynamicMesh/motionSolver/motionSolver.H
rename to src/dynamicMesh/motionSolver/motionSolver/motionSolver.H
index 97e6d246826ba3695de867ae2efbe6daaf83c373..1c71d537b654775346f8916134b24e2cec3a0585 100644
--- a/src/dynamicMesh/motionSolver/motionSolver.H
+++ b/src/dynamicMesh/motionSolver/motionSolver/motionSolver.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -56,6 +56,7 @@ class motionSolver
 :
     public IOdictionary
 {
+
 private:
 
     // Private data
@@ -66,6 +67,14 @@ private:
         //- 2-D motion corrector pointer
         twoDPointCorrector twoDPointCorrector_;
 
+        //- Model coefficients dictionary
+        dictionary coeffDict_;
+
+
+    // Private Member Functions
+
+        //- De-register object if registered and assign to current
+        static IOobject stealRegistration(const IOdictionary& dict);
 
 public:
 
@@ -80,15 +89,19 @@ public:
             autoPtr,
             motionSolver,
             dictionary,
-            (const polyMesh& mesh, Istream& msData),
-            (mesh, msData)
+            (const polyMesh& mesh, const IOdictionary& dict),
+            (mesh, dict)
         );
 
 
     // Selectors
 
         //- Select constructed from polyMesh
-        static autoPtr<motionSolver> New(const polyMesh& mesh);
+        static autoPtr<motionSolver> New(const polyMesh&);
+
+        //- Select constructed from polyMesh and dictionary. If dictionary
+        //  was registered this will 'steal' that registration.
+        static autoPtr<motionSolver> New(const polyMesh&, const IOdictionary&);
 
 
     // Constructors
@@ -96,6 +109,14 @@ public:
         //- Construct from polyMesh
         motionSolver(const polyMesh& mesh);
 
+        //- Construct from polyMesh and dictionary and type.
+        motionSolver
+        (
+            const polyMesh& mesh,
+            const IOdictionary&,
+            const word& type
+        );
+
 
     //- Destructor
     virtual ~motionSolver();
@@ -109,6 +130,12 @@ public:
             return mesh_;
         }
 
+        //- Const access to the coefficients dictionary
+        const dictionary& coeffDict() const
+        {
+            return coeffDict_;
+        }
+
         //- Provide new points for motion.  Solves for motion
         virtual tmp<pointField> newPoints();
 
@@ -120,7 +147,10 @@ public:
         //- Solve for motion
         virtual void solve() = 0;
 
-        //- Update topology
+        //- Update local data for geometry changes
+        virtual void movePoints(const pointField&) = 0;
+
+        //-  Update local data for topology changes
         virtual void updateMesh(const mapPolyMesh&) = 0;
 };
 
diff --git a/src/fvMotionSolver/fvMotionSolvers/fvMotionSolver/fvMotionSolver.C b/src/dynamicMesh/motionSolver/velocity/velocityMotionSolver.C
similarity index 64%
rename from src/fvMotionSolver/fvMotionSolvers/fvMotionSolver/fvMotionSolver.C
rename to src/dynamicMesh/motionSolver/velocity/velocityMotionSolver.C
index 6c2a0c591ac44eae8d8edd777ae05409cf5a0385..35f9924b497e7a97f000b05bc23562e2acfe67b7 100644
--- a/src/fvMotionSolver/fvMotionSolvers/fvMotionSolver/fvMotionSolver.C
+++ b/src/dynamicMesh/motionSolver/velocity/velocityMotionSolver.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -23,44 +23,61 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "fvMotionSolver.H"
-#include "volPointInterpolation.H"
+#include "velocityMotionSolver.H"
+#include "mapPolyMesh.H"
 
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 namespace Foam
 {
-    defineTypeNameAndDebug(fvMotionSolver, 0);
+    defineTypeNameAndDebug(velocityMotionSolver, 0);
 }
 
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::fvMotionSolver::fvMotionSolver(const polyMesh& mesh)
+Foam::velocityMotionSolver::velocityMotionSolver
+(
+    const polyMesh& mesh,
+    const IOdictionary& dict,
+    const word& type
+)
 :
-    motionSolver(mesh),
-    fvMesh_(refCast<const fvMesh>(mesh))
+    motionSolver(mesh, dict, type),
+    pointMotionU_
+    (
+        IOobject
+        (
+            "pointMotionU",
+            mesh.time().timeName(),
+            mesh,
+            IOobject::MUST_READ,
+            IOobject::AUTO_WRITE
+        ),
+        pointMesh::New(mesh)
+    )
 {}
 
 
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
-Foam::fvMotionSolver::~fvMotionSolver()
+Foam::velocityMotionSolver::~velocityMotionSolver()
 {}
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-void Foam::fvMotionSolver::movePoints(const pointField& p)
+void Foam::velocityMotionSolver::movePoints(const pointField& p)
 {
-    // Movement of pointMesh and volPointInterpolation done by polyMesh,fvMesh
+    // No local data that needs adapting.
 }
 
 
-void Foam::fvMotionSolver::updateMesh(const mapPolyMesh& mpm)
+void Foam::velocityMotionSolver::updateMesh(const mapPolyMesh& mpm)
 {
+    // pointMesh already updates pointFields.
+
     motionSolver::updateMesh(mpm);
-    // Update of pointMesh and volPointInterpolation done by polyMesh,fvMesh
 }
 
 
diff --git a/src/fvMotionSolver/fvMotionSolvers/displacement/displacementFvMotionSolver/displacementFvMotionSolver.H b/src/dynamicMesh/motionSolver/velocity/velocityMotionSolver.H
similarity index 58%
rename from src/fvMotionSolver/fvMotionSolvers/displacement/displacementFvMotionSolver/displacementFvMotionSolver.H
rename to src/dynamicMesh/motionSolver/velocity/velocityMotionSolver.H
index d69c6a1e73dec9d4a09b267fbe5d4982f3cfc29f..a9a5c160d1afc4d29949930ef3de8fdd56d1cf84 100644
--- a/src/fvMotionSolver/fvMotionSolvers/displacement/displacementFvMotionSolver/displacementFvMotionSolver.H
+++ b/src/dynamicMesh/motionSolver/velocity/velocityMotionSolver.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -22,81 +22,99 @@ License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
 Class
-    Foam::displacementFvMotionSolver
+    Foam::velocityMotionSolver
 
 Description
-    Base class for fvMotionSolvers which calculate displacement.
+    Virtual base class for velocity motion solver
+
+    The boundary displacement is set as a boundary condition
+    on the pointMotionU pointVectorField.
 
 SourceFiles
-    displacementFvMotionSolver.C
+    velocityMotionSolver.C
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef displacementFvMotionSolver_H
-#define displacementFvMotionSolver_H
+#ifndef velocityMotionSolver_H
+#define velocityMotionSolver_H
 
-#include "fvMotionSolver.H"
+#include "motionSolver.H"
+#include "pointFields.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 namespace Foam
 {
 
+class mapPolyMesh;
+
 /*---------------------------------------------------------------------------*\
-        Class displacementFvMotionSolver Declaration
+                   Class velocityMotionSolver Declaration
 \*---------------------------------------------------------------------------*/
 
-class displacementFvMotionSolver
+class velocityMotionSolver
 :
-    public fvMotionSolver
+    public motionSolver
 {
-    // Private data
+protected:
 
-        //- Reference point field
-        pointField points0_;
+    // Protected data
 
+        //- Point motion field
+        mutable pointVectorField pointMotionU_;
+
+private:
 
     // Private Member Functions
 
         //- Disallow default bitwise copy construct
-        displacementFvMotionSolver
+        velocityMotionSolver
         (
-            const displacementFvMotionSolver&
+            const velocityMotionSolver&
         );
 
         //- Disallow default bitwise assignment
-        void operator=(const displacementFvMotionSolver&);
-
+        void operator=(const velocityMotionSolver&);
 
 public:
 
     //- Runtime type information
-    TypeName("displacementInterpolation");
+    TypeName("velocityMotionSolver");
 
 
     // Constructors
 
-        //- Construct from polyMesh and data stream
-        displacementFvMotionSolver
+        //- Construct from mesh and dictionary
+        velocityMotionSolver
         (
             const polyMesh&,
-            Istream& msDataUnused
+            const IOdictionary&,
+            const word& type
         );
 
 
     //- Destructor
-    ~displacementFvMotionSolver();
+    virtual ~velocityMotionSolver();
 
 
     // Member Functions
 
-        //- Return reference to the reference field
-        const pointField& points0() const
+        //- Return reference to the point motion velocity field
+        pointVectorField& pointMotionU()
         {
-            return points0_;
+            return pointMotionU_;
         }
 
-        //- Update topology
+        //- Return const reference to the point motion velocity field
+        const pointVectorField& pointMotionU() const
+        {
+            return pointMotionU_;
+        }
+
+        //- Update local data for geometry changes
+        virtual void movePoints(const pointField&);
+
+        //-  Update local data for topology changes
         virtual void updateMesh(const mapPolyMesh&);
 };
 
diff --git a/src/dynamicMesh/polyTopoChange/polyTopoChange/edgeCollapser.C b/src/dynamicMesh/polyTopoChange/polyTopoChange/edgeCollapser.C
index 22872abf47d6b1c5f87150831ef4ce1d22a82b3a..9cc4349803a3bada66253405f3075fde6ab3f8ae 100644
--- a/src/dynamicMesh/polyTopoChange/polyTopoChange/edgeCollapser.C
+++ b/src/dynamicMesh/polyTopoChange/polyTopoChange/edgeCollapser.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -499,7 +499,7 @@ bool Foam::edgeCollapser::setRefinement(polyTopoChange& meshMod)
 
                         if (nFaces < 4)
                         {
-                            Info<< "Cell:" << cellI
+                            Pout<< "Cell:" << cellI
                                 << " uses faces:" << cFaces
                                 << " of which too many are marked for removal:"
                                 << endl
@@ -508,10 +508,10 @@ bool Foam::edgeCollapser::setRefinement(polyTopoChange& meshMod)
                             {
                                 if (newFaces[cFaces[j]].size() < 3)
                                 {
-                                    Info<< ' '<< cFaces[j];
+                                    Pout<< ' '<< cFaces[j];
                                 }
                             }
-                            Info<< endl;
+                            Pout<< endl;
 
                             cellRemoved[cellI] = true;
 
diff --git a/src/dynamicMesh/polyTopoChange/polyTopoChange/polyTopoChange.C b/src/dynamicMesh/polyTopoChange/polyTopoChange/polyTopoChange.C
index b9b7bde14bc478de7c86d7d5b17cc758767ba494..07618de976ce162e05ccad910db1f66ed026a93d 100644
--- a/src/dynamicMesh/polyTopoChange/polyTopoChange/polyTopoChange.C
+++ b/src/dynamicMesh/polyTopoChange/polyTopoChange/polyTopoChange.C
@@ -495,6 +495,21 @@ void Foam::polyTopoChange::makeCells
 
     for (label faceI = 0; faceI < nActiveFaces; faceI++)
     {
+        if (faceOwner_[faceI] < 0)
+        {
+            FatalErrorIn
+            (
+                "polyTopoChange::makeCells\n"
+                "(\n"
+                "    const label,\n"
+                "    labelList&,\n"
+                "    labelList&\n"
+                ") const\n"
+            )   << "Face " << faceI << " is active but its owner has"
+                << " been deleted. This is usually due to deleting cells"
+                << " without modifying exposed faces to be boundary faces."
+                << exit(FatalError);
+        }
         nNbrs[faceOwner_[faceI]]++;
     }
     for (label faceI = 0; faceI < nActiveFaces; faceI++)
diff --git a/src/engine/engineMesh/fvMotionSolverEngineMesh/fvMotionSolverEngineMesh.C b/src/engine/engineMesh/fvMotionSolverEngineMesh/fvMotionSolverEngineMesh.C
index 62c55fce26badade94dd7c54406babc20c9345d7..cc66e0201d9d0266bcb60770c6e6d809d5e987d5 100644
--- a/src/engine/engineMesh/fvMotionSolverEngineMesh/fvMotionSolverEngineMesh.C
+++ b/src/engine/engineMesh/fvMotionSolverEngineMesh/fvMotionSolverEngineMesh.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -43,7 +43,22 @@ Foam::fvMotionSolverEngineMesh::fvMotionSolverEngineMesh(const IOobject& io)
 :
     engineMesh(io),
     pistonLayers_("pistonLayers", dimLength, 0.0),
-    motionSolver_(*this, engineDB_.engineDict().lookup("motionSolver"))
+    motionSolver_
+    (
+        *this,
+        IOdictionary
+        (
+            IOobject
+            (
+                "dynamicMeshDict",
+                time().constant(),
+                *this,
+                IOobject::NO_READ,
+                IOobject::NO_WRITE
+            ),
+            engineDB_.engineDict()
+        )
+    )
 {
     engineDB_.engineDict().readIfPresent("pistonLayers", pistonLayers_);
 }
diff --git a/src/fieldSources/Make/options b/src/fieldSources/Make/options
index bb78896172a40e95f91e6b5196d0e9aec60f3e6e..5927956469b56f90a17b9136d289915458f1b01f 100644
--- a/src/fieldSources/Make/options
+++ b/src/fieldSources/Make/options
@@ -2,7 +2,7 @@ EXE_INC = \
     -I$(LIB_SRC)/finiteVolume/lnInclude \
     -I$(LIB_SRC)/meshTools/lnInclude \
     -I$(LIB_SRC)/sampling/lnInclude \
-    -I$(LIB_SRC)/thermophysicalModels/basicSolidThermo/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/solidThermo/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \
     -I$(LIB_SRC)/turbulenceModels/compressible/turbulenceModel/lnInclude \
@@ -13,5 +13,5 @@ LIB_LIBS = \
     -lfiniteVolume \
     -lsampling \
     -lmeshTools \
-    -lbasicSolidThermo \
+    -lsolidThermo \
     -lcompressibleTurbulenceModel
diff --git a/src/fieldSources/basicSource/interRegionHeatTransferModel/interRegionHeatTransferModel/interRegionHeatTransferModel.C b/src/fieldSources/basicSource/interRegionHeatTransferModel/interRegionHeatTransferModel/interRegionHeatTransferModel.C
index 3135f89124baa16e325371c253841c6affa2ebf9..1cd4178faf342efd4aa6af9ee46e0642fc989fc5 100644
--- a/src/fieldSources/basicSource/interRegionHeatTransferModel/interRegionHeatTransferModel/interRegionHeatTransferModel.C
+++ b/src/fieldSources/basicSource/interRegionHeatTransferModel/interRegionHeatTransferModel/interRegionHeatTransferModel.C
@@ -24,7 +24,7 @@ License
 \*---------------------------------------------------------------------------*/
 
 #include "interRegionHeatTransferModel.H"
-#include "basicThermo.H"
+#include "fluidThermo.H"
 #include "fvm.H"
 #include "IObasicSourceList.H"
 #include "zeroGradientFvPatchFields.H"
@@ -203,8 +203,8 @@ void Foam::interRegionHeatTransferModel::addSup
 
         if (h.dimensions() == dimEnergy/dimMass)
         {
-            const basicThermo& primaryThermo =
-                mesh_.lookupObject<basicThermo>("thermophysicalProperties");
+            const fluidThermo& primaryThermo =
+                mesh_.lookupObject<fluidThermo>("thermophysicalProperties");
 
             eEqn += htc_*Tmapped - fvm::Sp(htc_/primaryThermo.Cp(), h);
 
diff --git a/src/fieldSources/basicSource/interRegionHeatTransferModel/variableHeatTransfer/variableHeatTransfer.C b/src/fieldSources/basicSource/interRegionHeatTransferModel/variableHeatTransfer/variableHeatTransfer.C
index 030e91ea3906a9f794f557460a3f03322a5806a0..1c4c78a5eb501d6ba6b05b1ae35f98a9dde0596a 100644
--- a/src/fieldSources/basicSource/interRegionHeatTransferModel/variableHeatTransfer/variableHeatTransfer.C
+++ b/src/fieldSources/basicSource/interRegionHeatTransferModel/variableHeatTransfer/variableHeatTransfer.C
@@ -108,8 +108,8 @@ calculateHtc()
             "turbulenceModel"
         );
 
-    const basicThermo& secondaryThermo =
-        secondaryMesh.lookupObject<basicThermo>
+    const fluidThermo& secondaryThermo =
+        secondaryMesh.lookupObject<fluidThermo>
         (
             "thermophysicalProperties"
         );
diff --git a/src/finiteVolume/cfdTools/general/MRF/MRFZone.C b/src/finiteVolume/cfdTools/general/MRF/MRFZone.C
index 9b88668dccf2e908b156ed5730b116973d69f7c9..1aa6bdd0cd7bfc6048cc8aa5f1d7f7282cccc255 100644
--- a/src/finiteVolume/cfdTools/general/MRF/MRFZone.C
+++ b/src/finiteVolume/cfdTools/general/MRF/MRFZone.C
@@ -307,9 +307,7 @@ void Foam::MRFZone::addCoriolis
     vectorField& ddtUc = ddtU.internalField();
     const vectorField& Uc = U.internalField();
 
-    const scalar t = mesh_.time().timeOutputValue();
-
-    const vector& Omega = omega_->value(t)*axis_;
+    const vector Omega = omega_->value(mesh_.time().timeOutputValue())*axis_;
 
     forAll(cells, i)
     {
@@ -331,9 +329,7 @@ void Foam::MRFZone::addCoriolis(fvVectorMatrix& UEqn) const
     vectorField& Usource = UEqn.source();
     const vectorField& U = UEqn.psi();
 
-    const scalar t = mesh_.time().timeOutputValue();
-
-    const vector& Omega = omega_->value(t)*axis_;
+    const vector Omega = omega_->value(mesh_.time().timeOutputValue())*axis_;
 
     forAll(cells, i)
     {
@@ -359,9 +355,7 @@ void Foam::MRFZone::addCoriolis
     vectorField& Usource = UEqn.source();
     const vectorField& U = UEqn.psi();
 
-    const scalar t = mesh_.time().timeOutputValue();
-
-    const vector& Omega = omega_->value(t)*axis_;
+    const vector Omega = omega_->value(mesh_.time().timeOutputValue())*axis_;
 
     forAll(cells, i)
     {
@@ -375,18 +369,14 @@ void Foam::MRFZone::relativeVelocity(volVectorField& U) const
 {
     const volVectorField& C = mesh_.C();
 
-    const vector& origin = origin_;
-
-    const scalar t = mesh_.time().timeOutputValue();
-
-    const vector& Omega = omega_->value(t)*axis_;
+    const vector Omega = omega_->value(mesh_.time().timeOutputValue())*axis_;
 
     const labelList& cells = mesh_.cellZones()[cellZoneID_];
 
     forAll(cells, i)
     {
         label celli = cells[i];
-        U[celli] -= (Omega ^ (C[celli] - origin));
+        U[celli] -= (Omega ^ (C[celli] - origin_));
     }
 
     // Included patches
@@ -407,7 +397,7 @@ void Foam::MRFZone::relativeVelocity(volVectorField& U) const
             label patchFacei = excludedFaces_[patchi][i];
             U.boundaryField()[patchi][patchFacei] -=
                 (Omega
-              ^ (C.boundaryField()[patchi][patchFacei] - origin));
+              ^ (C.boundaryField()[patchi][patchFacei] - origin_));
         }
     }
 }
@@ -417,18 +407,14 @@ void Foam::MRFZone::absoluteVelocity(volVectorField& U) const
 {
     const volVectorField& C = mesh_.C();
 
-    const vector& origin = origin_;
-
-    const scalar t = mesh_.time().timeOutputValue();
-
-    const vector& Omega = omega_->value(t)*axis_;
+    const vector Omega = omega_->value(mesh_.time().timeOutputValue())*axis_;
 
     const labelList& cells = mesh_.cellZones()[cellZoneID_];
 
     forAll(cells, i)
     {
         label celli = cells[i];
-        U[celli] += (Omega ^ (C[celli] - origin));
+        U[celli] += (Omega ^ (C[celli] - origin_));
     }
 
     // Included patches
@@ -438,7 +424,7 @@ void Foam::MRFZone::absoluteVelocity(volVectorField& U) const
         {
             label patchFacei = includedFaces_[patchi][i];
             U.boundaryField()[patchi][patchFacei] =
-                (Omega ^ (C.boundaryField()[patchi][patchFacei] - origin));
+                (Omega ^ (C.boundaryField()[patchi][patchFacei] - origin_));
         }
     }
 
@@ -449,7 +435,7 @@ void Foam::MRFZone::absoluteVelocity(volVectorField& U) const
         {
             label patchFacei = excludedFaces_[patchi][i];
             U.boundaryField()[patchi][patchFacei] +=
-                (Omega ^ (C.boundaryField()[patchi][patchFacei] - origin));
+                (Omega ^ (C.boundaryField()[patchi][patchFacei] - origin_));
         }
     }
 }
@@ -489,11 +475,7 @@ void Foam::MRFZone::absoluteFlux
 
 void Foam::MRFZone::correctBoundaryVelocity(volVectorField& U) const
 {
-    const vector& origin = origin_;
-
-    const scalar t = mesh_.time().timeOutputValue();
-
-    const vector& Omega = omega_->value(t)*axis_;
+    const vector Omega = omega_->value(mesh_.time().timeOutputValue())*axis_;
 
 
     // Included patches
@@ -507,7 +489,7 @@ void Foam::MRFZone::correctBoundaryVelocity(volVectorField& U) const
         {
             label patchFacei = includedFaces_[patchi][i];
 
-            pfld[patchFacei] = (Omega ^ (patchC[patchFacei] - origin));
+            pfld[patchFacei] = (Omega ^ (patchC[patchFacei] - origin_));
         }
 
         U.boundaryField()[patchi] == pfld;
diff --git a/src/finiteVolume/cfdTools/general/MRF/MRFZoneTemplates.C b/src/finiteVolume/cfdTools/general/MRF/MRFZoneTemplates.C
index 6a13cac88855d5293f606b92244f5484ac2cb614..f15aef2647cd48d54ba242547a95a436c6648d7f 100644
--- a/src/finiteVolume/cfdTools/general/MRF/MRFZoneTemplates.C
+++ b/src/finiteVolume/cfdTools/general/MRF/MRFZoneTemplates.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -41,10 +41,7 @@ void Foam::MRFZone::relativeRhoFlux
     const surfaceVectorField& Cf = mesh_.Cf();
     const surfaceVectorField& Sf = mesh_.Sf();
 
-    const vector& origin = origin_;
-
-    const scalar t = mesh_.time().timeOutputValue();
-    const vector& Omega = omega_->value(t)*axis_;
+    const vector Omega = omega_->value(mesh_.time().timeOutputValue())*axis_;
 
     const vectorField& Cfi = Cf.internalField();
     const vectorField& Sfi = Sf.internalField();
@@ -54,7 +51,7 @@ void Foam::MRFZone::relativeRhoFlux
     forAll(internalFaces_, i)
     {
         label facei = internalFaces_[i];
-        phii[facei] -= rho[facei]*(Omega ^ (Cfi[facei] - origin)) & Sfi[facei];
+        phii[facei] -= rho[facei]*(Omega ^ (Cfi[facei] - origin_)) & Sfi[facei];
     }
 
     // Included patches
@@ -77,7 +74,7 @@ void Foam::MRFZone::relativeRhoFlux
 
             phi.boundaryField()[patchi][patchFacei] -=
                 rho.boundaryField()[patchi][patchFacei]
-              * (Omega ^ (Cf.boundaryField()[patchi][patchFacei] - origin))
+              * (Omega ^ (Cf.boundaryField()[patchi][patchFacei] - origin_))
               & Sf.boundaryField()[patchi][patchFacei];
         }
     }
@@ -94,10 +91,7 @@ void Foam::MRFZone::absoluteRhoFlux
     const surfaceVectorField& Cf = mesh_.Cf();
     const surfaceVectorField& Sf = mesh_.Sf();
 
-    const vector& origin = origin_;
-
-    const scalar t = mesh_.time().timeOutputValue();
-    const vector& Omega = omega_->value(t)*axis_;
+    const vector Omega = omega_->value(mesh_.time().timeOutputValue())*axis_;
 
     const vectorField& Cfi = Cf.internalField();
     const vectorField& Sfi = Sf.internalField();
@@ -107,7 +101,7 @@ void Foam::MRFZone::absoluteRhoFlux
     forAll(internalFaces_, i)
     {
         label facei = internalFaces_[i];
-        phii[facei] += rho[facei]*(Omega ^ (Cfi[facei] - origin)) & Sfi[facei];
+        phii[facei] += rho[facei]*(Omega ^ (Cfi[facei] - origin_)) & Sfi[facei];
     }
 
     // Included patches
@@ -119,7 +113,7 @@ void Foam::MRFZone::absoluteRhoFlux
 
             phi.boundaryField()[patchi][patchFacei] +=
                 rho.boundaryField()[patchi][patchFacei]
-              * (Omega ^ (Cf.boundaryField()[patchi][patchFacei] - origin))
+              * (Omega ^ (Cf.boundaryField()[patchi][patchFacei] - origin_))
               & Sf.boundaryField()[patchi][patchFacei];
         }
     }
@@ -133,7 +127,7 @@ void Foam::MRFZone::absoluteRhoFlux
 
             phi.boundaryField()[patchi][patchFacei] +=
                 rho.boundaryField()[patchi][patchFacei]
-              * (Omega ^ (Cf.boundaryField()[patchi][patchFacei] - origin))
+              * (Omega ^ (Cf.boundaryField()[patchi][patchFacei] - origin_))
               & Sf.boundaryField()[patchi][patchFacei];
         }
     }
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/uniformTotalPressure/uniformTotalPressureFvPatchScalarField.C b/src/finiteVolume/fields/fvPatchFields/derived/uniformTotalPressure/uniformTotalPressureFvPatchScalarField.C
index e9bd3270727c8050c5fad99ec892cbe0ea3e236b..c3b35384cdaa0cd3ab1a8e06d972eea42131bb4a 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/uniformTotalPressure/uniformTotalPressureFvPatchScalarField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/uniformTotalPressure/uniformTotalPressureFvPatchScalarField.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -44,7 +44,6 @@ uniformTotalPressureFvPatchScalarField
     rhoName_("none"),
     psiName_("none"),
     gamma_(0.0),
-    p0_(0.0),
     pressure_()
 {}
 
@@ -63,7 +62,6 @@ uniformTotalPressureFvPatchScalarField
     rhoName_(dict.lookupOrDefault<word>("rho", "none")),
     psiName_(dict.lookupOrDefault<word>("psi", "none")),
     gamma_(readScalar(dict.lookup("gamma"))),
-    p0_(readScalar(dict.lookup("p0"))),
     pressure_(DataEntry<scalar>::New("pressure", dict))
 {
     if (dict.found("value"))
@@ -75,7 +73,8 @@ uniformTotalPressureFvPatchScalarField
     }
     else
     {
-        fvPatchField<scalar>::operator=(p0_);
+        scalar p0 = pressure_->value(this->db().time().timeOutputValue());
+        fvPatchField<scalar>::operator=(p0);
     }
 }
 
@@ -95,7 +94,6 @@ uniformTotalPressureFvPatchScalarField
     rhoName_(ptf.rhoName_),
     psiName_(ptf.psiName_),
     gamma_(ptf.gamma_),
-    p0_(ptf.p0_),
     pressure_(ptf.pressure_().clone().ptr())
 {}
 
@@ -112,7 +110,6 @@ uniformTotalPressureFvPatchScalarField
     rhoName_(tppsf.rhoName_),
     psiName_(tppsf.psiName_),
     gamma_(tppsf.gamma_),
-    p0_(tppsf.p0_),
     pressure_(tppsf.pressure_().clone().ptr())
 {}
 
@@ -130,7 +127,6 @@ uniformTotalPressureFvPatchScalarField
     rhoName_(tppsf.rhoName_),
     psiName_(tppsf.psiName_),
     gamma_(tppsf.gamma_),
-    p0_(tppsf.p0_),
     pressure_(tppsf.pressure_().clone().ptr())
 {}
 
@@ -147,14 +143,14 @@ void Foam::uniformTotalPressureFvPatchScalarField::updateCoeffs
         return;
     }
 
-    p0_ = pressure_->value(this->db().time().timeOutputValue());
+    scalar p0 = pressure_->value(this->db().time().timeOutputValue());
 
     const fvsPatchField<scalar>& phip =
         patch().lookupPatchField<surfaceScalarField, scalar>(phiName_);
 
     if (psiName_ == "none" && rhoName_ == "none")
     {
-        operator==(p0_ - 0.5*(1.0 - pos(phip))*magSqr(Up));
+        operator==(p0 - 0.5*(1.0 - pos(phip))*magSqr(Up));
     }
     else if (rhoName_ == "none")
     {
@@ -167,7 +163,7 @@ void Foam::uniformTotalPressureFvPatchScalarField::updateCoeffs
 
             operator==
             (
-                p0_
+                p0
                /pow
                 (
                     (1.0 + 0.5*psip*gM1ByG*(1.0 - pos(phip))*magSqr(Up)),
@@ -177,7 +173,7 @@ void Foam::uniformTotalPressureFvPatchScalarField::updateCoeffs
         }
         else
         {
-            operator==(p0_/(1.0 + 0.5*psip*(1.0 - pos(phip))*magSqr(Up)));
+            operator==(p0/(1.0 + 0.5*psip*(1.0 - pos(phip))*magSqr(Up)));
         }
     }
     else if (psiName_ == "none")
@@ -185,7 +181,7 @@ void Foam::uniformTotalPressureFvPatchScalarField::updateCoeffs
         const fvPatchField<scalar>& rho =
             patch().lookupPatchField<volScalarField, scalar>(rhoName_);
 
-        operator==(p0_ - 0.5*rho*(1.0 - pos(phip))*magSqr(Up));
+        operator==(p0 - 0.5*rho*(1.0 - pos(phip))*magSqr(Up));
     }
     else
     {
@@ -219,7 +215,6 @@ void Foam::uniformTotalPressureFvPatchScalarField::write(Ostream& os) const
     os.writeKeyword("rho") << rhoName_ << token::END_STATEMENT << nl;
     os.writeKeyword("psi") << psiName_ << token::END_STATEMENT << nl;
     os.writeKeyword("gamma") << gamma_ << token::END_STATEMENT << nl;
-    os.writeKeyword("p0") << p0_ << token::END_STATEMENT << nl;
     pressure_->writeData(os);
     writeEntry("value", os);
 }
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/uniformTotalPressure/uniformTotalPressureFvPatchScalarField.H b/src/finiteVolume/fields/fvPatchFields/derived/uniformTotalPressure/uniformTotalPressureFvPatchScalarField.H
index 0dca30f8ff271161200f23de11b4e22fd5ffa87e..25fdabfc1da8329e4b03bca3e9b1b14a267c4573 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/uniformTotalPressure/uniformTotalPressureFvPatchScalarField.H
+++ b/src/finiteVolume/fields/fvPatchFields/derived/uniformTotalPressure/uniformTotalPressureFvPatchScalarField.H
@@ -114,9 +114,6 @@ class uniformTotalPressureFvPatchScalarField
         //- Heat capacity ratio
         scalar gamma_;
 
-        //- Static pressure reference
-        scalar p0_;
-
         //- Table of time vs total pressure, including the bounding treatment
         autoPtr<DataEntry<scalar> > pressure_;
 
@@ -217,18 +214,6 @@ public:
                 return gamma_;
             }
 
-            //- Return the total pressure
-            scalar p0() const
-            {
-                return p0_;
-            }
-
-            //- Return reference to the total pressure to allow adjustment
-            scalar p0()
-            {
-                return p0_;
-            }
-
 
         // Evaluation functions
 
diff --git a/src/finiteVolume/fvMesh/fvMeshSubset/fvMeshSubset.C b/src/finiteVolume/fvMesh/fvMeshSubset/fvMeshSubset.C
index c202e380b81d6484f4fb171c7ab4e5c61020e995..59dbc40a8a65a5a9a26b65cc8a3602d176d378bc 100644
--- a/src/finiteVolume/fvMesh/fvMeshSubset/fvMeshSubset.C
+++ b/src/finiteVolume/fvMesh/fvMeshSubset/fvMeshSubset.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -731,7 +731,8 @@ void Foam::fvMeshSubset::setCellSubset
                 boundaryPatchSizes[oldInternalPatchID],
                 patchStart,
                 nNewPatches,
-                fvMeshSubsetPtr_().boundaryMesh()
+                fvMeshSubsetPtr_().boundaryMesh(),
+                emptyPolyPatch::typeName
             );
 
             // The index for the first patch is -1 as it originates from
@@ -1296,7 +1297,8 @@ void Foam::fvMeshSubset::setLargeCellSubset
                 boundaryPatchSizes[oldInternalPatchID],
                 patchStart,
                 nNewPatches,
-                fvMeshSubsetPtr_().boundaryMesh()
+                fvMeshSubsetPtr_().boundaryMesh(),
+                emptyPolyPatch::typeName
             );
 
             //Pout<< "    oldInternalFaces : "
diff --git a/src/fvMotionSolver/Make/files b/src/fvMotionSolver/Make/files
index cdaf67e6afa5fe670d13d35b24faf34c2c619560..13204042afb597b5c4005b49f21391fb00f1b8df 100644
--- a/src/fvMotionSolver/Make/files
+++ b/src/fvMotionSolver/Make/files
@@ -1,14 +1,13 @@
-fvMotionSolvers/fvMotionSolver/fvMotionSolver.C
-fvMotionSolvers/velocity/laplacian/velocityLaplacianFvMotionSolver.C
-fvMotionSolvers/displacement/displacementFvMotionSolver/displacementFvMotionSolver.C
-fvMotionSolvers/displacement/layeredSolver/displacementLayeredMotionFvMotionSolver.C
-fvMotionSolvers/displacement/layeredSolver/pointEdgeStructuredWalk.C
-fvMotionSolvers/displacement/interpolation/displacementInterpolationFvMotionSolver.C
-fvMotionSolvers/displacement/laplacian/displacementLaplacianFvMotionSolver.C
+fvMotionSolvers/fvMotionSolverCore/fvMotionSolverCore.C
 fvMotionSolvers/displacement/SBRStress/displacementSBRStressFvMotionSolver.C
+fvMotionSolvers/displacement/laplacian/displacementLaplacianFvMotionSolver.C
+fvMotionSolvers/displacement/interpolation/displacementInterpolationMotionSolver.C
+fvMotionSolvers/displacement/layeredSolver/displacementLayeredMotionMotionSolver.C
+fvMotionSolvers/displacement/layeredSolver/pointEdgeStructuredWalk.C
 
-fvMotionSolvers/velocity/componentLaplacian/velocityComponentLaplacianFvMotionSolver.C
-fvMotionSolvers/displacement/componentLaplacian/displacementComponentLaplacianFvMotionSolver.C
+fvMotionSolvers/componentDisplacement/componentLaplacian/displacementComponentLaplacianFvMotionSolver.C
+fvMotionSolvers/velocity/laplacian/velocityLaplacianFvMotionSolver.C
+fvMotionSolvers/componentVelocity/componentLaplacian/velocityComponentLaplacianFvMotionSolver.C
 
 motionDiffusivity/motionDiffusivity/motionDiffusivity.C
 motionDiffusivity/uniform/uniformDiffusivity.C
diff --git a/src/fvMotionSolver/fvMotionSolvers/displacement/componentLaplacian/displacementComponentLaplacianFvMotionSolver.C b/src/fvMotionSolver/fvMotionSolvers/componentDisplacement/componentLaplacian/displacementComponentLaplacianFvMotionSolver.C
similarity index 55%
rename from src/fvMotionSolver/fvMotionSolvers/displacement/componentLaplacian/displacementComponentLaplacianFvMotionSolver.C
rename to src/fvMotionSolver/fvMotionSolvers/componentDisplacement/componentLaplacian/displacementComponentLaplacianFvMotionSolver.C
index c9627ffca9f9c6070b192065f6c64ceee4d24647..8f90cb8444538f561b40325c94cb858b67876470 100644
--- a/src/fvMotionSolver/fvMotionSolvers/displacement/componentLaplacian/displacementComponentLaplacianFvMotionSolver.C
+++ b/src/fvMotionSolver/fvMotionSolvers/componentDisplacement/componentLaplacian/displacementComponentLaplacianFvMotionSolver.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -38,87 +38,24 @@ namespace Foam
 
     addToRunTimeSelectionTable
     (
-        fvMotionSolver,
+        motionSolver,
         displacementComponentLaplacianFvMotionSolver,
         dictionary
     );
 }
 
 
-// * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
-
-Foam::direction Foam::displacementComponentLaplacianFvMotionSolver::cmpt
-(
-    const word& cmptName
-) const
-{
-    if (cmptName == "x")
-    {
-        return vector::X;
-    }
-    else if (cmptName == "y")
-    {
-        return vector::Y;
-    }
-    else if (cmptName == "z")
-    {
-        return vector::Z;
-    }
-    else
-    {
-        FatalErrorIn
-        (
-            "displacementComponentLaplacianFvMotionSolver::"
-            "displacementComponentLaplacianFvMotionSolver"
-            "(const polyMesh& mesh, Istream& msData)"
-        )   << "Given component name " << cmptName << " should be x, y or z"
-            << exit(FatalError);
-
-        return 0;
-    }
-}
-
-
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
 Foam::displacementComponentLaplacianFvMotionSolver::
 displacementComponentLaplacianFvMotionSolver
 (
     const polyMesh& mesh,
-    Istream& msData
+    const IOdictionary& dict
 )
 :
-    fvMotionSolver(mesh),
-    cmptName_(msData),
-    cmpt_(cmpt(cmptName_)),
-    points0_
-    (
-        pointIOField
-        (
-            IOobject
-            (
-                "points",
-                time().constant(),
-                polyMesh::meshSubDir,
-                mesh,
-                IOobject::MUST_READ,
-                IOobject::NO_WRITE,
-                false
-            )
-        ).component(cmpt_)
-    ),
-    pointDisplacement_
-    (
-        IOobject
-        (
-            "pointDisplacement" + cmptName_,
-            fvMesh_.time().timeName(),
-            fvMesh_,
-            IOobject::MUST_READ,
-            IOobject::AUTO_WRITE
-        ),
-        pointMesh::New(fvMesh_)
-    ),
+    componentDisplacementMotionSolver(mesh, dict, type()),
+    fvMotionSolverCore(mesh),
     cellDisplacement_
     (
         IOobject
@@ -141,75 +78,48 @@ displacementComponentLaplacianFvMotionSolver
     pointLocation_(NULL),
     diffusivityPtr_
     (
-        motionDiffusivity::New(*this, lookup("diffusivity"))
+        motionDiffusivity::New(fvMesh_, coeffDict().lookup("diffusivity"))
     ),
     frozenPointsZone_
     (
-        found("frozenPointsZone")
-      ? fvMesh_.pointZones().findZoneID(lookup("frozenPointsZone"))
+        coeffDict().found("frozenPointsZone")
+      ? fvMesh_.pointZones().findZoneID(coeffDict().lookup("frozenPointsZone"))
       : -1
     )
 {
-    if (points0_.size() != mesh.nPoints())
-    {
-        FatalErrorIn
-        (
-            "displacementComponentLaplacianFvMotionSolver::"
-            "displacementComponentLaplacianFvMotionSolver\n"
-            "(\n"
-            "    const polyMesh&,\n"
-            "    Istream&\n"
-            ")"
-        )   << "Number of points in mesh " << mesh.nPoints()
-            << " differs from number of points " << points0_.size()
-            << " read from file "
-            <<
-                IOobject
-                (
-                    "points",
-                    mesh.time().constant(),
-                    polyMesh::meshSubDir,
-                    mesh,
-                    IOobject::MUST_READ,
-                    IOobject::NO_WRITE,
-                    false
-                ).filePath()
-            << exit(FatalError);
-    }
-
-
-    IOobject io
+    Switch applyPointLocation
     (
-        "pointLocation",
-        fvMesh_.time().timeName(),
-        fvMesh_,
-        IOobject::MUST_READ,
-        IOobject::AUTO_WRITE
+        coeffDict().lookupOrDefault
+        (
+            "applyPointLocation",
+            true
+        )
     );
 
-    if (debug)
-    {
-        Info<< "displacementComponentLaplacianFvMotionSolver:" << nl
-            << "    diffusivity       : " << diffusivityPtr_().type() << nl
-            << "    frozenPoints zone : " << frozenPointsZone_ << endl;
-    }
-
-    if (io.headerOk())
+    if (applyPointLocation)
     {
         pointLocation_.reset
         (
             new pointVectorField
             (
-                io,
+                IOobject
+                (
+                    "pointLocation",
+                    fvMesh_.time().timeName(),
+                    fvMesh_,
+                    IOobject::MUST_READ,
+                    IOobject::AUTO_WRITE
+                ),
                 pointMesh::New(fvMesh_)
             )
         );
 
-        if (debug)
+        //if (debug)
         {
             Info<< "displacementComponentLaplacianFvMotionSolver :"
                 << " Read pointVectorField "
-                << io.name() << " to be used for boundary conditions on points."
+                << pointLocation_().name()
+                << " to be used for boundary conditions on points."
                 << nl
                 << "Boundary conditions:"
                 << pointLocation_().boundaryField().types() << endl;
@@ -308,7 +218,7 @@ Foam::displacementComponentLaplacianFvMotionSolver::curPoints() const
 void Foam::displacementComponentLaplacianFvMotionSolver::solve()
 {
     // The points have moved so before interpolation update
-    // the fvMotionSolver accordingly
+    // the motionSolver accordingly
     movePoints(fvMesh_.points());
 
     diffusivityPtr_->correct();
@@ -331,64 +241,16 @@ void Foam::displacementComponentLaplacianFvMotionSolver::updateMesh
     const mapPolyMesh& mpm
 )
 {
-    fvMotionSolver::updateMesh(mpm);
-
-    // Map points0_. Bit special since we somehow have to come up with
-    // a sensible points0 position for introduced points.
-    // Find out scaling between points0 and current points
-
-    // Get the new points either from the map or the mesh
-    const scalarField points
-    (
-        mpm.hasMotionPoints()
-      ? mpm.preMotionPoints().component(cmpt_)
-      : fvMesh_.points().component(cmpt_)
-    );
-
-    // Get extents of points0 and points and determine scale
-    const scalar scale =
-        (gMax(points0_)-gMin(points0_))
-       /(gMax(points)-gMin(points));
-
-    scalarField newPoints0(mpm.pointMap().size());
-
-    forAll(newPoints0, pointI)
-    {
-        label oldPointI = mpm.pointMap()[pointI];
-
-        if (oldPointI >= 0)
-        {
-            label masterPointI = mpm.reversePointMap()[oldPointI];
-
-            if (masterPointI == pointI)
-            {
-                newPoints0[pointI] = points0_[oldPointI];
-            }
-            else
-            {
-                // New point. Assume motion is scaling.
-                newPoints0[pointI] =
-                    points0_[oldPointI]
-                  + scale*(points[pointI]-points[masterPointI]);
-            }
-        }
-        else
-        {
-            FatalErrorIn
-            (
-                "displacementLaplacianFvMotionSolver::updateMesh"
-                "(const mapPolyMesh& mpm)"
-            )   << "Cannot work out coordinates of introduced vertices."
-                << " New vertex " << pointI << " at coordinate "
-                << points[pointI] << exit(FatalError);
-        }
-    }
-    points0_.transfer(newPoints0);
+    componentDisplacementMotionSolver::updateMesh(mpm);
 
     // Update diffusivity. Note two stage to make sure old one is de-registered
     // before creating/registering new one.
     diffusivityPtr_.reset(NULL);
-    diffusivityPtr_ = motionDiffusivity::New(*this, lookup("diffusivity"));
+    diffusivityPtr_ = motionDiffusivity::New
+    (
+        fvMesh_,
+        coeffDict().lookup("diffusivity")
+    );
 }
 
 
diff --git a/src/fvMotionSolver/fvMotionSolvers/displacement/componentLaplacian/displacementComponentLaplacianFvMotionSolver.H b/src/fvMotionSolver/fvMotionSolvers/componentDisplacement/componentLaplacian/displacementComponentLaplacianFvMotionSolver.H
similarity index 86%
rename from src/fvMotionSolver/fvMotionSolvers/displacement/componentLaplacian/displacementComponentLaplacianFvMotionSolver.H
rename to src/fvMotionSolver/fvMotionSolvers/componentDisplacement/componentLaplacian/displacementComponentLaplacianFvMotionSolver.H
index 65e3824b3d1eb67b862c037755013e953db4be0a..56a6f932ddee8fb733f4b7a939a06a3261f7dd1a 100644
--- a/src/fvMotionSolver/fvMotionSolvers/displacement/componentLaplacian/displacementComponentLaplacianFvMotionSolver.H
+++ b/src/fvMotionSolver/fvMotionSolvers/componentDisplacement/componentLaplacian/displacementComponentLaplacianFvMotionSolver.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -36,7 +36,8 @@ SourceFiles
 #ifndef displacementComponentLaplacianFvMotionSolver_H
 #define displacementComponentLaplacianFvMotionSolver_H
 
-#include "fvMotionSolver.H"
+#include "componentDisplacementMotionSolver.H"
+#include "fvMotionSolverCore.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -52,22 +53,11 @@ class motionDiffusivity;
 
 class displacementComponentLaplacianFvMotionSolver
 :
-    public fvMotionSolver
+    public componentDisplacementMotionSolver,
+    public fvMotionSolverCore
 {
     // Private data
 
-        //- The component name to solve for
-        word cmptName_;
-
-        //- The component to solve for
-        direction cmpt_;
-
-        //- Reference point field for this component
-        scalarField points0_;
-
-        //- Point motion field
-        mutable pointScalarField pointDisplacement_;
-
         //- Cell-centre motion field
         mutable volScalarField cellDisplacement_;
 
@@ -106,11 +96,11 @@ public:
 
     // Constructors
 
-        //- Construct from polyMesh and data stream
+        //- Construct from polyMesh and IOdictionary
         displacementComponentLaplacianFvMotionSolver
         (
             const polyMesh&,
-            Istream& msData
+            const IOdictionary&
         );
 
 
@@ -120,12 +110,6 @@ public:
 
     // Member Functions
 
-        //- Return reference to the reference field
-        const scalarField& points0() const
-        {
-            return points0_;
-        }
-
         //- Non-const access to the cellDisplacement in order to allow
         //  changes to the boundary motion
         volScalarField& cellDisplacement()
@@ -141,6 +125,7 @@ public:
 
         //- Update topology
         virtual void updateMesh(const mapPolyMesh&);
+
 };
 
 
diff --git a/src/fvMotionSolver/fvMotionSolvers/velocity/componentLaplacian/velocityComponentLaplacianFvMotionSolver.C b/src/fvMotionSolver/fvMotionSolvers/componentVelocity/componentLaplacian/velocityComponentLaplacianFvMotionSolver.C
similarity index 76%
rename from src/fvMotionSolver/fvMotionSolvers/velocity/componentLaplacian/velocityComponentLaplacianFvMotionSolver.C
rename to src/fvMotionSolver/fvMotionSolvers/componentVelocity/componentLaplacian/velocityComponentLaplacianFvMotionSolver.C
index be09d2cc34d6cc6368c145beefc0cc2f49df74d9..124a679e1543db698307c02efa6d29fad12b6012 100644
--- a/src/fvMotionSolver/fvMotionSolvers/velocity/componentLaplacian/velocityComponentLaplacianFvMotionSolver.C
+++ b/src/fvMotionSolver/fvMotionSolvers/componentVelocity/componentLaplacian/velocityComponentLaplacianFvMotionSolver.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -37,7 +37,7 @@ namespace Foam
 
     addToRunTimeSelectionTable
     (
-        fvMotionSolver,
+        motionSolver,
         velocityComponentLaplacianFvMotionSolver,
         dictionary
     );
@@ -50,24 +50,11 @@ Foam::velocityComponentLaplacianFvMotionSolver::
 velocityComponentLaplacianFvMotionSolver
 (
     const polyMesh& mesh,
-    Istream& msData
+    const IOdictionary& dict
 )
 :
-    fvMotionSolver(mesh),
-    cmptName_(msData),
-    cmpt_(0),
-    pointMotionU_
-    (
-        IOobject
-        (
-            "pointMotionU" + cmptName_,
-            fvMesh_.time().timeName(),
-            fvMesh_,
-            IOobject::MUST_READ,
-            IOobject::AUTO_WRITE
-        ),
-        pointMesh::New(fvMesh_)
-    ),
+    componentVelocityMotionSolver(mesh, dict, typeName),
+    fvMotionSolverCore(mesh),
     cellMotionU_
     (
         IOobject
@@ -89,32 +76,9 @@ velocityComponentLaplacianFvMotionSolver
     ),
     diffusivityPtr_
     (
-        motionDiffusivity::New(*this, lookup("diffusivity"))
+        motionDiffusivity::New(fvMesh_, coeffDict().lookup("diffusivity"))
     )
-{
-    if (cmptName_ == "x")
-    {
-        cmpt_ = vector::X;
-    }
-    else if (cmptName_ == "y")
-    {
-        cmpt_ = vector::Y;
-    }
-    else if (cmptName_ == "z")
-    {
-        cmpt_ = vector::Z;
-    }
-    else
-    {
-        FatalErrorIn
-        (
-            "velocityComponentLaplacianFvMotionSolver::"
-            "velocityComponentLaplacianFvMotionSolver"
-            "(const polyMesh& mesh, Istream& msData)"
-        )   << "Given component name " << cmptName_ << " should be x, y or z"
-            << exit(FatalError);
-    }
-}
+{}
 
 
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
@@ -176,12 +140,16 @@ void Foam::velocityComponentLaplacianFvMotionSolver::updateMesh
     const mapPolyMesh& mpm
 )
 {
-    fvMotionSolver::updateMesh(mpm);
+    componentVelocityMotionSolver::updateMesh(mpm);
 
     // Update diffusivity. Note two stage to make sure old one is de-registered
     // before creating/registering new one.
     diffusivityPtr_.reset(NULL);
-    diffusivityPtr_ = motionDiffusivity::New(*this, lookup("diffusivity"));
+    diffusivityPtr_ = motionDiffusivity::New
+    (
+        fvMesh_,
+        coeffDict().lookup("diffusivity")
+    );
 }
 
 
diff --git a/src/fvMotionSolver/fvMotionSolvers/velocity/componentLaplacian/velocityComponentLaplacianFvMotionSolver.H b/src/fvMotionSolver/fvMotionSolvers/componentVelocity/componentLaplacian/velocityComponentLaplacianFvMotionSolver.H
similarity index 88%
rename from src/fvMotionSolver/fvMotionSolvers/velocity/componentLaplacian/velocityComponentLaplacianFvMotionSolver.H
rename to src/fvMotionSolver/fvMotionSolvers/componentVelocity/componentLaplacian/velocityComponentLaplacianFvMotionSolver.H
index 37e601b1463fa7a4b7d67483be268d560124237a..1f58ddf41467aa41b6a78be323adde2d50816e7e 100644
--- a/src/fvMotionSolver/fvMotionSolvers/velocity/componentLaplacian/velocityComponentLaplacianFvMotionSolver.H
+++ b/src/fvMotionSolver/fvMotionSolvers/componentVelocity/componentLaplacian/velocityComponentLaplacianFvMotionSolver.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -36,7 +36,8 @@ SourceFiles
 #ifndef velocityComponentLaplacianFvMotionSolver_H
 #define velocityComponentLaplacianFvMotionSolver_H
 
-#include "fvMotionSolver.H"
+#include "componentVelocityMotionSolver.H"
+#include "fvMotionSolverCore.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -52,19 +53,11 @@ class motionDiffusivity;
 
 class velocityComponentLaplacianFvMotionSolver
 :
-    public fvMotionSolver
+    public componentVelocityMotionSolver,
+    public fvMotionSolverCore
 {
     // Private data
 
-        //- The component name to solve for
-        word cmptName_;
-
-        //- The component to solve for
-        direction cmpt_;
-
-        //- Point motion field
-        mutable pointScalarField pointMotionU_;
-
         //- Cell-centre motion field
         mutable volScalarField cellMotionU_;
 
@@ -92,11 +85,11 @@ public:
 
     // Constructors
 
-        //- Construct from polyMesh and data stream (provides component)
+        //- Construct from polyMesh and IOdictionary
         velocityComponentLaplacianFvMotionSolver
         (
             const polyMesh&,
-            Istream& msData
+            const IOdictionary&
         );
 
 
@@ -121,6 +114,7 @@ public:
 
         //- Update topology
         virtual void updateMesh(const mapPolyMesh&);
+
 };
 
 
diff --git a/src/fvMotionSolver/fvMotionSolvers/displacement/SBRStress/displacementSBRStressFvMotionSolver.C b/src/fvMotionSolver/fvMotionSolvers/displacement/SBRStress/displacementSBRStressFvMotionSolver.C
index eac555d2243b834297c4c7a956aecbd6ab274e43..04edda45eeadd168ccb2579c6700cc8051cfbd21 100644
--- a/src/fvMotionSolver/fvMotionSolvers/displacement/SBRStress/displacementSBRStressFvMotionSolver.C
+++ b/src/fvMotionSolver/fvMotionSolvers/displacement/SBRStress/displacementSBRStressFvMotionSolver.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -42,7 +42,7 @@ namespace Foam
 
     addToRunTimeSelectionTable
     (
-        fvMotionSolver,
+        motionSolver,
         displacementSBRStressFvMotionSolver,
         dictionary
     );
@@ -54,22 +54,11 @@ namespace Foam
 Foam::displacementSBRStressFvMotionSolver::displacementSBRStressFvMotionSolver
 (
     const polyMesh& mesh,
-    Istream& is
+    const IOdictionary& dict
 )
 :
-    displacementFvMotionSolver(mesh, is),
-    pointDisplacement_
-    (
-        IOobject
-        (
-            "pointDisplacement",
-            fvMesh_.time().timeName(),
-            fvMesh_,
-            IOobject::MUST_READ,
-            IOobject::AUTO_WRITE
-        ),
-        pointMesh::New(fvMesh_)
-    ),
+    displacementMotionSolver(mesh, dict, typeName),
+    fvMotionSolverCore(mesh),
     cellDisplacement_
     (
         IOobject
@@ -84,14 +73,14 @@ Foam::displacementSBRStressFvMotionSolver::displacementSBRStressFvMotionSolver
         dimensionedVector
         (
             "cellDisplacement",
-            pointDisplacement_.dimensions(),
+            pointDisplacement().dimensions(),
             vector::zero
         ),
-        cellMotionBoundaryTypes<vector>(pointDisplacement_.boundaryField())
+        cellMotionBoundaryTypes<vector>(pointDisplacement().boundaryField())
     ),
     diffusivityPtr_
     (
-        motionDiffusivity::New(*this, lookup("diffusivity"))
+        motionDiffusivity::New(fvMesh_, coeffDict().lookup("diffusivity"))
     )
 {}
 
@@ -116,7 +105,7 @@ Foam::displacementSBRStressFvMotionSolver::curPoints() const
 
     tmp<pointField> tcurPoints
     (
-        points0() + pointDisplacement_.internalField()
+        points0() + pointDisplacement().internalField()
     );
 
     twoDCorrectPoints(tcurPoints());
@@ -128,7 +117,7 @@ Foam::displacementSBRStressFvMotionSolver::curPoints() const
 void Foam::displacementSBRStressFvMotionSolver::solve()
 {
     // The points have moved so before interpolation update
-    // the fvMotionSolver accordingly
+    // the mtionSolver accordingly
     movePoints(fvMesh_.points());
 
     diffusivityPtr_->correct();
@@ -192,12 +181,16 @@ void Foam::displacementSBRStressFvMotionSolver::updateMesh
     const mapPolyMesh& mpm
 )
 {
-    displacementFvMotionSolver::updateMesh(mpm);
+    displacementMotionSolver::updateMesh(mpm);
 
     // Update diffusivity. Note two stage to make sure old one is de-registered
     // before creating/registering new one.
     diffusivityPtr_.reset(NULL);
-    diffusivityPtr_ = motionDiffusivity::New(*this, lookup("diffusivity"));
+    diffusivityPtr_ = motionDiffusivity::New
+    (
+        fvMesh_,
+        coeffDict().lookup("diffusivity")
+    );
 }
 
 
diff --git a/src/fvMotionSolver/fvMotionSolvers/displacement/SBRStress/displacementSBRStressFvMotionSolver.H b/src/fvMotionSolver/fvMotionSolvers/displacement/SBRStress/displacementSBRStressFvMotionSolver.H
index 403114ada9e315a2b6554dd3225c108a90eac713..db98e1a7ccd946e95a99f64e433fa29a1206f929 100644
--- a/src/fvMotionSolver/fvMotionSolvers/displacement/SBRStress/displacementSBRStressFvMotionSolver.H
+++ b/src/fvMotionSolver/fvMotionSolvers/displacement/SBRStress/displacementSBRStressFvMotionSolver.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -36,7 +36,8 @@ SourceFiles
 #ifndef displacementSBRStressFvMotionSolver_H
 #define displacementSBRStressFvMotionSolver_H
 
-#include "displacementFvMotionSolver.H"
+#include "displacementMotionSolver.H"
+#include "fvMotionSolverCore.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -52,13 +53,12 @@ class motionDiffusivity;
 
 class displacementSBRStressFvMotionSolver
 :
-    public displacementFvMotionSolver
+//    public displacementFvMotionSolver
+    public displacementMotionSolver,
+    public fvMotionSolverCore
 {
     // Private data
 
-        //- Point motion field
-        mutable pointVectorField pointDisplacement_;
-
         //- Cell-centre motion field
         mutable volVectorField cellDisplacement_;
 
@@ -86,11 +86,11 @@ public:
 
     // Constructors
 
-        //- Construct from polyMesh and data stream
+        //- Construct from polyMesh and IOdictionary
         displacementSBRStressFvMotionSolver
         (
             const polyMesh&,
-            Istream& msDataUnused
+            const IOdictionary&
         );
 
 
@@ -100,18 +100,6 @@ public:
 
     // Member Functions
 
-        //- Return reference to the point motion displacement field
-        pointVectorField& pointDisplacement()
-        {
-            return pointDisplacement_;
-        }
-
-        //- Return const reference to the point motion displacement field
-        const pointVectorField& pointDisplacement() const
-        {
-            return pointDisplacement_;
-        }
-
         //- Return reference to the cell motion displacement field
         volVectorField& cellDisplacement()
         {
diff --git a/src/fvMotionSolver/fvMotionSolvers/displacement/interpolation/displacementInterpolationFvMotionSolver.C b/src/fvMotionSolver/fvMotionSolvers/displacement/interpolation/displacementInterpolationMotionSolver.C
similarity index 89%
rename from src/fvMotionSolver/fvMotionSolvers/displacement/interpolation/displacementInterpolationFvMotionSolver.C
rename to src/fvMotionSolver/fvMotionSolvers/displacement/interpolation/displacementInterpolationMotionSolver.C
index b893de2fde459cecf3e6f96bbc90b959fe594d37..8b34742672bda53cd3b0a0c651f976fce8c26dd2 100644
--- a/src/fvMotionSolver/fvMotionSolvers/displacement/interpolation/displacementInterpolationFvMotionSolver.C
+++ b/src/fvMotionSolver/fvMotionSolvers/displacement/interpolation/displacementInterpolationMotionSolver.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -23,7 +23,7 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "displacementInterpolationFvMotionSolver.H"
+#include "displacementInterpolationMotionSolver.H"
 #include "addToRunTimeSelectionTable.H"
 #include "SortableList.H"
 #include "IOList.H"
@@ -35,12 +35,12 @@ License
 
 namespace Foam
 {
-    defineTypeNameAndDebug(displacementInterpolationFvMotionSolver, 0);
+    defineTypeNameAndDebug(displacementInterpolationMotionSolver, 0);
 
     addToRunTimeSelectionTable
     (
-        fvMotionSolver,
-        displacementInterpolationFvMotionSolver,
+        motionSolver,
+        displacementInterpolationMotionSolver,
         dictionary
     );
 
@@ -53,36 +53,21 @@ namespace Foam
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::displacementInterpolationFvMotionSolver::
-displacementInterpolationFvMotionSolver
+Foam::displacementInterpolationMotionSolver::
+displacementInterpolationMotionSolver
 (
     const polyMesh& mesh,
-    Istream& is
+    const IOdictionary& dict
 )
 :
-    displacementFvMotionSolver(mesh, is),
-    dynamicMeshCoeffs_
-    (
-        IOdictionary
-        (
-            IOobject
-            (
-                "dynamicMeshDict",
-                mesh.time().constant(),
-                mesh,
-                IOobject::MUST_READ_IF_MODIFIED,
-                IOobject::NO_WRITE,
-                false
-            )
-        ).subDict(typeName + "Coeffs")
-    )
+    displacementMotionSolver(mesh, dict, typeName)
 {
     // Get zones and their interpolation tables for displacement
     // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
     List<Pair<word> > faceZoneToTable
     (
-        dynamicMeshCoeffs_.lookup("interpolationTables")
+        coeffDict().lookup("interpolationTables")
     );
 
     const faceZoneMesh& fZones = mesh.faceZones();
@@ -99,8 +84,8 @@ displacementInterpolationFvMotionSolver
         {
             FatalErrorIn
             (
-                "displacementInterpolationFvMotionSolver::"
-                "displacementInterpolationFvMotionSolver(const polyMesh&,"
+                "displacementInterpolationMotionSolver::"
+                "displacementInterpolationMotionSolver(const polyMesh&,"
                 "Istream&)"
             )   << "Cannot find zone " << zoneName << endl
                 << "Valid zones are " << mesh.faceZones().names()
@@ -267,8 +252,8 @@ displacementInterpolationFvMotionSolver
             {
                 FatalErrorIn
                 (
-                    "displacementInterpolationFvMotionSolver::"
-                    "displacementInterpolationFvMotionSolver"
+                    "displacementInterpolationMotionSolver::"
+                    "displacementInterpolationMotionSolver"
                     "(const polyMesh&, Istream&)"
                 )   << "Did not find point " << points0()[pointI]
                     << " coordinate " << meshCoords[pointI]
@@ -316,21 +301,21 @@ displacementInterpolationFvMotionSolver
 
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
-Foam::displacementInterpolationFvMotionSolver::
-~displacementInterpolationFvMotionSolver()
+Foam::displacementInterpolationMotionSolver::
+~displacementInterpolationMotionSolver()
 {}
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 Foam::tmp<Foam::pointField>
-Foam::displacementInterpolationFvMotionSolver::curPoints() const
+Foam::displacementInterpolationMotionSolver::curPoints() const
 {
     if (mesh().nPoints() != points0().size())
     {
         FatalErrorIn
         (
-            "displacementInterpolationFvMotionSolver::curPoints() const"
+            "displacementInterpolationMotionSolver::curPoints() const"
         )   << "The number of points in the mesh seems to have changed." << endl
             << "In constant/polyMesh there are " << points0().size()
             << " points; in the current mesh there are " << mesh().nPoints()
diff --git a/src/fvMotionSolver/fvMotionSolvers/displacement/interpolation/displacementInterpolationFvMotionSolver.H b/src/fvMotionSolver/fvMotionSolvers/displacement/interpolation/displacementInterpolationMotionSolver.H
similarity index 79%
rename from src/fvMotionSolver/fvMotionSolvers/displacement/interpolation/displacementInterpolationFvMotionSolver.H
rename to src/fvMotionSolver/fvMotionSolvers/displacement/interpolation/displacementInterpolationMotionSolver.H
index 24a1c376bf675eeb2ac7b48c1c4fddeff1b93c2a..ec49b1e2231b138a5ccdaa85bfe47a865dd149da 100644
--- a/src/fvMotionSolver/fvMotionSolvers/displacement/interpolation/displacementInterpolationFvMotionSolver.H
+++ b/src/fvMotionSolver/fvMotionSolvers/displacement/interpolation/displacementInterpolationMotionSolver.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -22,7 +22,7 @@ License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
 Class
-    Foam::displacementInterpolationFvMotionSolver
+    Foam::displacementInterpolationMotionSolver
 
 Description
     Mesh motion solver for an fvMesh.
@@ -40,14 +40,14 @@ Note
     could be a motionSolver - does not use any fvMesh structure.
 
 SourceFiles
-    displacementInterpolationFvMotionSolver.C
+    displacementInterpolationMotionSolver.C
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef displacementInterpolationFvMotionSolver_H
-#define displacementInterpolationFvMotionSolver_H
+#ifndef displacementInterpolationMotionSolver_H
+#define displacementInterpolationMotionSolver_H
 
-#include "displacementFvMotionSolver.H"
+#include "displacementMotionSolver.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -55,19 +55,15 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-        Class displacementInterpolationFvMotionSolver Declaration
+        Class displacementInterpolationMotionSolver Declaration
 \*---------------------------------------------------------------------------*/
 
-class displacementInterpolationFvMotionSolver
+class displacementInterpolationMotionSolver
 :
-    public displacementFvMotionSolver
+    public displacementMotionSolver
 {
     // Private data
 
-        //- Additional settings for motion solver
-        dictionary dynamicMeshCoeffs_;
-
-
         // Face zone information (note: could pack these to only contain
         // used zones)
 
@@ -94,13 +90,13 @@ class displacementInterpolationFvMotionSolver
     // Private Member Functions
 
         //- Disallow default bitwise copy construct
-        displacementInterpolationFvMotionSolver
+        displacementInterpolationMotionSolver
         (
-            const displacementInterpolationFvMotionSolver&
+            const displacementInterpolationMotionSolver&
         );
 
         //- Disallow default bitwise assignment
-        void operator=(const displacementInterpolationFvMotionSolver&);
+        void operator=(const displacementInterpolationMotionSolver&);
 
 
 public:
@@ -111,16 +107,16 @@ public:
 
     // Constructors
 
-        //- Construct from polyMesh and data stream
-        displacementInterpolationFvMotionSolver
+        //- Construct from polyMesh and IOdictionary
+        displacementInterpolationMotionSolver
         (
             const polyMesh&,
-            Istream& msDataUnused
+            const IOdictionary& dict
         );
 
 
     //- Destructor
-    ~displacementInterpolationFvMotionSolver();
+    ~displacementInterpolationMotionSolver();
 
 
     // Member Functions
diff --git a/src/fvMotionSolver/fvMotionSolvers/displacement/laplacian/displacementLaplacianFvMotionSolver.C b/src/fvMotionSolver/fvMotionSolvers/displacement/laplacian/displacementLaplacianFvMotionSolver.C
index fdff94f097453013462d9270b7f1673d26b74d11..35db99fe0d7b77333efeda2f7ad159763dc3270e 100644
--- a/src/fvMotionSolver/fvMotionSolvers/displacement/laplacian/displacementLaplacianFvMotionSolver.C
+++ b/src/fvMotionSolver/fvMotionSolvers/displacement/laplacian/displacementLaplacianFvMotionSolver.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -40,7 +40,7 @@ namespace Foam
 
     addToRunTimeSelectionTable
     (
-        fvMotionSolver,
+        motionSolver,
         displacementLaplacianFvMotionSolver,
         dictionary
     );
@@ -52,22 +52,11 @@ namespace Foam
 Foam::displacementLaplacianFvMotionSolver::displacementLaplacianFvMotionSolver
 (
     const polyMesh& mesh,
-    Istream& is
+    const IOdictionary& dict
 )
 :
-    displacementFvMotionSolver(mesh, is),
-    pointDisplacement_
-    (
-        IOobject
-        (
-            "pointDisplacement",
-            fvMesh_.time().timeName(),
-            fvMesh_,
-            IOobject::MUST_READ,
-            IOobject::AUTO_WRITE
-        ),
-        pointMesh::New(fvMesh_)
-    ),
+    displacementMotionSolver(mesh, dict, typeName),
+    fvMotionSolverCore(mesh),
     cellDisplacement_
     (
         IOobject
@@ -90,12 +79,12 @@ Foam::displacementLaplacianFvMotionSolver::displacementLaplacianFvMotionSolver
     pointLocation_(NULL),
     diffusivityPtr_
     (
-        motionDiffusivity::New(*this, lookup("diffusivity"))
+        motionDiffusivity::New(fvMesh_, coeffDict().lookup("diffusivity"))
     ),
     frozenPointsZone_
     (
-        found("frozenPointsZone")
-      ? fvMesh_.pointZones().findZoneID(lookup("frozenPointsZone"))
+        coeffDict().found("frozenPointsZone")
+      ? fvMesh_.pointZones().findZoneID(coeffDict().lookup("frozenPointsZone"))
       : -1
     )
 {
@@ -131,7 +120,8 @@ Foam::displacementLaplacianFvMotionSolver::displacementLaplacianFvMotionSolver
         {
             Info<< "displacementLaplacianFvMotionSolver :"
                 << " Read pointVectorField "
-                << io.name() << " to be used for boundary conditions on points."
+                << io.name()
+                << " to be used for boundary conditions on points."
                 << nl
                 << "Boundary conditions:"
                 << pointLocation_().boundaryField().types() << endl;
@@ -217,7 +207,7 @@ Foam::displacementLaplacianFvMotionSolver::curPoints() const
 void Foam::displacementLaplacianFvMotionSolver::solve()
 {
     // The points have moved so before interpolation update
-    // the fvMotionSolver accordingly
+    // the motionSolver accordingly
     movePoints(fvMesh_.points());
 
     diffusivityPtr_->correct();
@@ -240,12 +230,16 @@ void Foam::displacementLaplacianFvMotionSolver::updateMesh
     const mapPolyMesh& mpm
 )
 {
-    displacementFvMotionSolver::updateMesh(mpm);
+    displacementMotionSolver::updateMesh(mpm);
 
     // Update diffusivity. Note two stage to make sure old one is de-registered
     // before creating/registering new one.
     diffusivityPtr_.reset(NULL);
-    diffusivityPtr_ = motionDiffusivity::New(*this, lookup("diffusivity"));
+    diffusivityPtr_ = motionDiffusivity::New
+    (
+        fvMesh_,
+        coeffDict().lookup("diffusivity")
+    );
 }
 
 
diff --git a/src/fvMotionSolver/fvMotionSolvers/displacement/laplacian/displacementLaplacianFvMotionSolver.H b/src/fvMotionSolver/fvMotionSolvers/displacement/laplacian/displacementLaplacianFvMotionSolver.H
index b3f2347bad8c3851ac82bc20b885819c2549d840..c0b4e9970a25ae31d9b3f6970f8b779263b4383e 100644
--- a/src/fvMotionSolver/fvMotionSolvers/displacement/laplacian/displacementLaplacianFvMotionSolver.H
+++ b/src/fvMotionSolver/fvMotionSolvers/displacement/laplacian/displacementLaplacianFvMotionSolver.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -36,7 +36,8 @@ SourceFiles
 #ifndef displacementLaplacianFvMotionSolver_H
 #define displacementLaplacianFvMotionSolver_H
 
-#include "displacementFvMotionSolver.H"
+#include "displacementMotionSolver.H"
+#include "fvMotionSolverCore.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -52,13 +53,12 @@ class motionDiffusivity;
 
 class displacementLaplacianFvMotionSolver
 :
-    public displacementFvMotionSolver
+//    public displacementFvMotionSolver
+    public displacementMotionSolver,
+    public fvMotionSolverCore
 {
     // Private data
 
-        //- Point motion field
-        mutable pointVectorField pointDisplacement_;
-
         //- Cell-centre motion field
         mutable volVectorField cellDisplacement_;
 
@@ -94,11 +94,11 @@ public:
 
     // Constructors
 
-        //- Construct from polyMesh and data stream
+        //- Construct from polyMesh and IOdictionary
         displacementLaplacianFvMotionSolver
         (
             const polyMesh&,
-            Istream& msDataUnused
+            const IOdictionary&
         );
 
 
@@ -108,18 +108,6 @@ public:
 
     // Member Functions
 
-        //- Return reference to the point motion displacement field
-        pointVectorField& pointDisplacement()
-        {
-            return pointDisplacement_;
-        }
-
-        //- Return const reference to the point motion displacement field
-        const pointVectorField& pointDisplacement() const
-        {
-            return pointDisplacement_;
-        }
-
         //- Return reference to the cell motion displacement field
         volVectorField& cellDisplacement()
         {
@@ -132,18 +120,6 @@ public:
             return cellDisplacement_;
         }
 
-        //- Return const reference to the diffusivity
-        const motionDiffusivity& diffusivity() const
-        {
-            return diffusivityPtr_();
-        }
-
-        //- Return reference to the diffusivity
-        motionDiffusivity& diffusivity()
-        {
-            return diffusivityPtr_();
-        }
-
         //- Return point location obtained from the current motion field
         virtual tmp<pointField> curPoints() const;
 
diff --git a/src/fvMotionSolver/fvMotionSolvers/displacement/layeredSolver/displacementLayeredMotionFvMotionSolver.C b/src/fvMotionSolver/fvMotionSolvers/displacement/layeredSolver/displacementLayeredMotionMotionSolver.C
similarity index 87%
rename from src/fvMotionSolver/fvMotionSolvers/displacement/layeredSolver/displacementLayeredMotionFvMotionSolver.C
rename to src/fvMotionSolver/fvMotionSolvers/displacement/layeredSolver/displacementLayeredMotionMotionSolver.C
index 76e850a515a44c46eb66488a1717c3a3af1a3f3a..f491ee586d78e25e5b1fa96f866d14f45560ff56 100644
--- a/src/fvMotionSolver/fvMotionSolvers/displacement/layeredSolver/displacementLayeredMotionFvMotionSolver.C
+++ b/src/fvMotionSolver/fvMotionSolvers/displacement/layeredSolver/displacementLayeredMotionMotionSolver.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -23,7 +23,7 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "displacementLayeredMotionFvMotionSolver.H"
+#include "displacementLayeredMotionMotionSolver.H"
 #include "addToRunTimeSelectionTable.H"
 #include "pointEdgeStructuredWalk.H"
 #include "pointFields.H"
@@ -35,12 +35,12 @@ License
 
 namespace Foam
 {
-    defineTypeNameAndDebug(displacementLayeredMotionFvMotionSolver, 0);
+    defineTypeNameAndDebug(displacementLayeredMotionMotionSolver, 0);
 
     addToRunTimeSelectionTable
     (
-        fvMotionSolver,
-        displacementLayeredMotionFvMotionSolver,
+        motionSolver,
+        displacementLayeredMotionMotionSolver,
         dictionary
     );
 }
@@ -48,7 +48,7 @@ namespace Foam
 
 // * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
 
-void Foam::displacementLayeredMotionFvMotionSolver::calcZoneMask
+void Foam::displacementLayeredMotionMotionSolver::calcZoneMask
 (
     const label cellZoneI,
     PackedBoolList& isZonePoint,
@@ -121,7 +121,7 @@ void Foam::displacementLayeredMotionFvMotionSolver::calcZoneMask
 
 
 // Find distance to starting point
-void Foam::displacementLayeredMotionFvMotionSolver::walkStructured
+void Foam::displacementLayeredMotionMotionSolver::walkStructured
 (
     const label cellZoneI,
     const PackedBoolList& isZonePoint,
@@ -209,7 +209,7 @@ void Foam::displacementLayeredMotionFvMotionSolver::walkStructured
 
 // Evaluate faceZone patch
 Foam::tmp<Foam::vectorField>
-Foam::displacementLayeredMotionFvMotionSolver::faceZoneEvaluate
+Foam::displacementLayeredMotionMotionSolver::faceZoneEvaluate
 (
     const faceZone& fz,
     const labelList& meshPoints,
@@ -239,7 +239,7 @@ Foam::displacementLayeredMotionFvMotionSolver::faceZoneEvaluate
         {
             FatalIOErrorIn
             (
-                "displacementLayeredMotionFvMotionSolver::faceZoneEvaluate(..)",
+                "displacementLayeredMotionMotionSolver::faceZoneEvaluate(..)",
                 *this
             )   << "slip can only be used on second faceZonePatch of pair."
                 << "FaceZone:" << fz.name()
@@ -257,7 +257,7 @@ Foam::displacementLayeredMotionFvMotionSolver::faceZoneEvaluate
     {
         FatalIOErrorIn
         (
-            "displacementLayeredMotionFvMotionSolver::faceZoneEvaluate(..)",
+            "displacementLayeredMotionMotionSolver::faceZoneEvaluate(..)",
             *this
         )   << "Unknown faceZonePatch type " << type << " for faceZone "
             << fz.name() << exit(FatalIOError);
@@ -266,7 +266,7 @@ Foam::displacementLayeredMotionFvMotionSolver::faceZoneEvaluate
 }
 
 
-void Foam::displacementLayeredMotionFvMotionSolver::cellZoneSolve
+void Foam::displacementLayeredMotionMotionSolver::cellZoneSolve
 (
     const label cellZoneI,
     const dictionary& zoneDict
@@ -282,7 +282,7 @@ void Foam::displacementLayeredMotionFvMotionSolver::cellZoneSolve
     {
         FatalIOErrorIn
         (
-            "displacementLayeredMotionFvMotionSolver::"
+            "displacementLayeredMotionMotionSolver::"
             "correctBoundaryConditions(..)",
             *this
         )   << "Can only handle 2 faceZones (= patches) per cellZone. "
@@ -304,7 +304,7 @@ void Foam::displacementLayeredMotionFvMotionSolver::cellZoneSolve
         {
             FatalIOErrorIn
             (
-                "displacementLayeredMotionFvMotionSolver::"
+                "displacementLayeredMotionMotionSolver::"
                 "correctBoundaryConditions(..)",
                 *this
             )   << "Cannot find faceZone " << faceZoneName
@@ -476,26 +476,14 @@ Info<< "For cellZone:" << cellZoneI
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::displacementLayeredMotionFvMotionSolver::
-displacementLayeredMotionFvMotionSolver
+Foam::displacementLayeredMotionMotionSolver::
+displacementLayeredMotionMotionSolver
 (
     const polyMesh& mesh,
-    Istream& is
+    const IOdictionary& dict
 )
 :
-    displacementFvMotionSolver(mesh, is),
-    pointDisplacement_
-    (
-        IOobject
-        (
-            "pointDisplacement",
-            fvMesh_.time().timeName(),
-            fvMesh_,
-            IOobject::MUST_READ,
-            IOobject::AUTO_WRITE
-        ),
-        pointMesh::New(fvMesh_)
-    )
+    displacementMotionSolver(mesh, dict, typeName)
 {
     pointDisplacement_.correctBoundaryConditions();
 }
@@ -503,15 +491,15 @@ displacementLayeredMotionFvMotionSolver
 
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
-Foam::displacementLayeredMotionFvMotionSolver::
-~displacementLayeredMotionFvMotionSolver()
+Foam::displacementLayeredMotionMotionSolver::
+~displacementLayeredMotionMotionSolver()
 {}
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 Foam::tmp<Foam::pointField>
-Foam::displacementLayeredMotionFvMotionSolver::curPoints() const
+Foam::displacementLayeredMotionMotionSolver::curPoints() const
 {
     tmp<pointField> tcurPoints
     (
@@ -520,27 +508,19 @@ Foam::displacementLayeredMotionFvMotionSolver::curPoints() const
 
     twoDCorrectPoints(tcurPoints());
 
-//    const pointField& pts = tcurPoints();
-//    forAll(pts, pointI)
-//    {
-//        Info<< "    from:" << mesh().points()[pointI]
-//            << " to:" << pts[pointI]
-//            << endl;
-//    }
-
-
     return tcurPoints;
 }
 
 
-void Foam::displacementLayeredMotionFvMotionSolver::solve()
+void Foam::displacementLayeredMotionMotionSolver::solve()
 {
-    const dictionary& ms = mesh().lookupObject<motionSolver>("dynamicMeshDict");
-    const dictionary& solverDict = ms.subDict(typeName + "Coeffs");
+    // The points have moved so before interpolation update
+    // the motionSolver accordingly
+    movePoints(mesh().points());
 
     // Apply all regions (=cellZones)
 
-    const dictionary& regionDicts = solverDict.subDict("regions");
+    const dictionary& regionDicts = coeffDict().subDict("regions");
     forAllConstIter(dictionary, regionDicts, regionIter)
     {
         const word& cellZoneName = regionIter().keyword();
@@ -555,7 +535,7 @@ void Foam::displacementLayeredMotionFvMotionSolver::solve()
         {
             FatalIOErrorIn
             (
-                "displacementLayeredMotionFvMotionSolver::solve(..)",
+                "displacementLayeredMotionMotionSolver::solve(..)",
                 *this
             )   << "Cannot find cellZone " << cellZoneName
                 << endl << "Valid zones are " << mesh().cellZones().names()
@@ -567,12 +547,12 @@ void Foam::displacementLayeredMotionFvMotionSolver::solve()
 }
 
 
-void Foam::displacementLayeredMotionFvMotionSolver::updateMesh
+void Foam::displacementLayeredMotionMotionSolver::updateMesh
 (
     const mapPolyMesh& mpm
 )
 {
-    displacementFvMotionSolver::updateMesh(mpm);
+    displacementMotionSolver::updateMesh(mpm);
 }
 
 
diff --git a/src/fvMotionSolver/fvMotionSolvers/displacement/layeredSolver/displacementLayeredMotionFvMotionSolver.H b/src/fvMotionSolver/fvMotionSolvers/displacement/layeredSolver/displacementLayeredMotionMotionSolver.H
similarity index 77%
rename from src/fvMotionSolver/fvMotionSolvers/displacement/layeredSolver/displacementLayeredMotionFvMotionSolver.H
rename to src/fvMotionSolver/fvMotionSolvers/displacement/layeredSolver/displacementLayeredMotionMotionSolver.H
index ccd5bf0f3b89e451c392b8f5517b6ca2f80c77c6..0f29c4f88fd84b46bbf12ecea0a95ea7cd8ca228 100644
--- a/src/fvMotionSolver/fvMotionSolvers/displacement/layeredSolver/displacementLayeredMotionFvMotionSolver.H
+++ b/src/fvMotionSolver/fvMotionSolvers/displacement/layeredSolver/displacementLayeredMotionMotionSolver.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -22,7 +22,7 @@ License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
 Class
-    Foam::displacementLayeredMotionFvMotionSolver
+    Foam::displacementLayeredMotionMotionSolver
 
 Description
     Mesh motion solver for an (multi-block) extruded fvMesh. Gets given the
@@ -52,14 +52,14 @@ Description
           specified by the first faceZone. (= removes the normal component).
 
 SourceFiles
-    displacementLayeredMotionFvMotionSolver.C
+    displacementLayeredMotionMotionSolver.C
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef displacementLayeredMotionFvMotionSolver_H
-#define displacementLayeredMotionFvMotionSolver_H
+#ifndef displacementLayeredMotionMotionSolver_H
+#define displacementLayeredMotionMotionSolver_H
 
-#include "displacementFvMotionSolver.H"
+#include "displacementMotionSolver.H"
 #include "PackedBoolList.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -70,19 +70,13 @@ namespace Foam
 // Forward class declarations
 
 /*---------------------------------------------------------------------------*\
-             Class displacementLayeredMotionFvMotionSolver Declaration
+             Class displacementLayeredMotionMotionSolver Declaration
 \*---------------------------------------------------------------------------*/
 
-class displacementLayeredMotionFvMotionSolver
+class displacementLayeredMotionMotionSolver
 :
-    public displacementFvMotionSolver
+    public displacementMotionSolver
 {
-    // Private data
-
-        //- Point motion field
-        mutable pointVectorField pointDisplacement_;
-
-
     // Private Member Functions
 
         void calcZoneMask
@@ -120,13 +114,13 @@ class displacementLayeredMotionFvMotionSolver
 
 
         //- Disallow default bitwise copy construct
-        displacementLayeredMotionFvMotionSolver
+        displacementLayeredMotionMotionSolver
         (
-            const displacementLayeredMotionFvMotionSolver&
+            const displacementLayeredMotionMotionSolver&
         );
 
         //- Disallow default bitwise assignment
-        void operator=(const displacementLayeredMotionFvMotionSolver&);
+        void operator=(const displacementLayeredMotionMotionSolver&);
 
 
 public:
@@ -137,32 +131,20 @@ public:
 
     // Constructors
 
-        //- Construct from polyMesh and data stream
-        displacementLayeredMotionFvMotionSolver
+        //- Construct from polyMesh and IOdictionary
+        displacementLayeredMotionMotionSolver
         (
             const polyMesh&,
-            Istream& msDataUnused
+            const IOdictionary&
         );
 
 
     //- Destructor
-    ~displacementLayeredMotionFvMotionSolver();
+    ~displacementLayeredMotionMotionSolver();
 
 
     // Member Functions
 
-        //- Return reference to the point motion displacement field
-        pointVectorField& pointDisplacement()
-        {
-            return pointDisplacement_;
-        }
-
-        //- Return const reference to the point motion displacement field
-        const pointVectorField& pointDisplacement() const
-        {
-            return pointDisplacement_;
-        }
-
         //- Return point location obtained from the current motion field
         virtual tmp<pointField> curPoints() const;
 
diff --git a/src/thermophysicalModels/solid/rhoType/const/constRho.C b/src/fvMotionSolver/fvMotionSolvers/fvMotionSolverCore/fvMotionSolverCore.C
similarity index 72%
rename from src/thermophysicalModels/solid/rhoType/const/constRho.C
rename to src/fvMotionSolver/fvMotionSolvers/fvMotionSolverCore/fvMotionSolverCore.C
index 6b994965058724b6c66add1f8eef336a6078a20d..3a1cc5273ffebcd1116e163ac2a4dcacba9e4882 100644
--- a/src/thermophysicalModels/solid/rhoType/const/constRho.C
+++ b/src/fvMotionSolver/fvMotionSolvers/fvMotionSolverCore/fvMotionSolverCore.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -23,27 +23,22 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "constRho.H"
+#include "fvMotionSolverCore.H"
 
-// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
-
-Foam::constRho::constRho(const dictionary& dict)
-:
-    specie(dict),
-    rho_(readScalar(dict.subDict("density").lookup("rho")))
-{}
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
+namespace Foam
+{
+    defineTypeNameAndDebug(fvMotionSolverCore, 0);
+}
 
-// * * * * * * * * * * * * * * * Ostream Operator  * * * * * * * * * * * * * //
 
-Foam::Ostream& Foam::operator<<(Ostream& os, const constRho& cr)
-{
-    os  << static_cast<const specie&>(cr);
-    os << cr.rho_;
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-    os.check("Ostream& operator<<(Ostream& os, const constRho& cr)");
-    return os;
-}
+Foam::fvMotionSolverCore::fvMotionSolverCore(const polyMesh& mesh)
+:
+    fvMesh_(refCast<const fvMesh>(mesh))
+{}
 
 
 // ************************************************************************* //
diff --git a/src/fvMotionSolver/fvMotionSolvers/fvMotionSolver/fvMotionSolver.H b/src/fvMotionSolver/fvMotionSolvers/fvMotionSolverCore/fvMotionSolverCore.H
similarity index 69%
rename from src/fvMotionSolver/fvMotionSolvers/fvMotionSolver/fvMotionSolver.H
rename to src/fvMotionSolver/fvMotionSolvers/fvMotionSolverCore/fvMotionSolverCore.H
index 33b1d693c9fe6050e9aebb9c9e17d0ca073f357b..b91dd80121a07a11c6ff5003f97fb10b84d69e9a 100644
--- a/src/fvMotionSolver/fvMotionSolvers/fvMotionSolver/fvMotionSolver.H
+++ b/src/fvMotionSolver/fvMotionSolvers/fvMotionSolverCore/fvMotionSolverCore.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -22,40 +22,31 @@ License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
 Class
-    Foam::fvMotionSolver
+    Foam::fvMotionSolverCore
 
 Description
-    Virtual base class for finite volume mesh motion solvers.
-
-    The boundary motion is set as a boundary condition on the motion velocity
-    variable motionU.
+    Base class for fvMesh based motionSolvers.
 
 SourceFiles
-    fvMotionSolver.C
+    fvMotionSolverCore.C
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef fvMotionSolver_H
-#define fvMotionSolver_H
+#ifndef fvMotionSolverCore_H
+#define fvMotionSolverCore_H
 
-#include "motionSolver.H"
-#include "pointFieldsFwd.H"
+#include "fvMesh.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 namespace Foam
 {
 
-class fvMesh;
-class mapPolyMesh;
-
 /*---------------------------------------------------------------------------*\
-                           Class fvMotionSolver Declaration
+                Class velocityMotionSolver Declaration
 \*---------------------------------------------------------------------------*/
 
-class fvMotionSolver
-:
-    public motionSolver
+class fvMotionSolverCore
 {
 
 protected:
@@ -77,21 +68,15 @@ protected:
             GeometricBoundaryField& pmUbf
         ) const;
 
-
 public:
 
     //- Runtime type information
-    TypeName("fvMotionSolver");
-
+    ClassName("displacementMotionSolver");
 
     // Constructors
 
         //- Construct from polyMesh
-        fvMotionSolver(const polyMesh& mesh);
-
-
-    //- Destructor
-    virtual ~fvMotionSolver();
+        fvMotionSolverCore(const polyMesh&);
 
 
     // Member Functions
@@ -101,18 +86,6 @@ public:
         {
             return fvMesh_;
         }
-
-        //- Return point location obtained from the current motion field
-        virtual tmp<pointField> curPoints() const = 0;
-
-        //- Solve for motion
-        virtual void solve() = 0;
-
-        //- Update the pointMesh corresponding to the new points
-        void movePoints(const pointField&);
-
-        //- Update the mesh corresponding to given map
-        virtual void updateMesh(const mapPolyMesh&);
 };
 
 
@@ -123,7 +96,7 @@ public:
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 #ifdef NoRepository
-#   include "fvMotionSolverTemplates.C"
+#   include "fvMotionSolverCoreTemplates.C"
 #endif
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/fvMotionSolver/fvMotionSolvers/fvMotionSolver/fvMotionSolverTemplates.C b/src/fvMotionSolver/fvMotionSolvers/fvMotionSolverCore/fvMotionSolverCoreTemplates.C
similarity index 92%
rename from src/fvMotionSolver/fvMotionSolvers/fvMotionSolver/fvMotionSolverTemplates.C
rename to src/fvMotionSolver/fvMotionSolvers/fvMotionSolverCore/fvMotionSolverCoreTemplates.C
index b102b252f0d77422852b0b520dbc59ef7a8ee91c..71dbdaa69f2c3bfeb62cf317941296a25001d91d 100644
--- a/src/fvMotionSolver/fvMotionSolvers/fvMotionSolver/fvMotionSolverTemplates.C
+++ b/src/fvMotionSolver/fvMotionSolvers/fvMotionSolverCore/fvMotionSolverCoreTemplates.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -23,14 +23,14 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "fvMotionSolver.H"
+#include "fvMotionSolverCore.H"
 #include "fixedValuePointPatchFields.H"
 #include "cellMotionFvPatchFields.H"
 
 // * * * * * * * * * * * * Protected Member Functions  * * * * * * * * * * * //
 
 template<class Type>
-Foam::wordList Foam::fvMotionSolver::cellMotionBoundaryTypes
+Foam::wordList Foam::fvMotionSolverCore::cellMotionBoundaryTypes
 (
     const typename GeometricField<Type, pointPatchField, pointMesh>::
     GeometricBoundaryField& pmUbf
diff --git a/src/fvMotionSolver/fvMotionSolvers/velocity/laplacian/velocityLaplacianFvMotionSolver.C b/src/fvMotionSolver/fvMotionSolvers/velocity/laplacian/velocityLaplacianFvMotionSolver.C
index dcf367f0858b0a85794ae7205df81f1b1dfddc57..ce63274ed9fc8a25dfab738bde02878932a521ba 100644
--- a/src/fvMotionSolver/fvMotionSolvers/velocity/laplacian/velocityLaplacianFvMotionSolver.C
+++ b/src/fvMotionSolver/fvMotionSolvers/velocity/laplacian/velocityLaplacianFvMotionSolver.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -37,7 +37,7 @@ namespace Foam
 
     addToRunTimeSelectionTable
     (
-        fvMotionSolver,
+        motionSolver,
         velocityLaplacianFvMotionSolver,
         dictionary
     );
@@ -49,22 +49,11 @@ namespace Foam
 Foam::velocityLaplacianFvMotionSolver::velocityLaplacianFvMotionSolver
 (
     const polyMesh& mesh,
-    Istream&
+    const IOdictionary& dict
 )
 :
-    fvMotionSolver(mesh),
-    pointMotionU_
-    (
-        IOobject
-        (
-            "pointMotionU",
-            fvMesh_.time().timeName(),
-            fvMesh_,
-            IOobject::MUST_READ,
-            IOobject::AUTO_WRITE
-        ),
-        pointMesh::New(fvMesh_)
-    ),
+    velocityMotionSolver(mesh, dict, typeName),
+    fvMotionSolverCore(mesh),
     cellMotionU_
     (
         IOobject
@@ -86,7 +75,7 @@ Foam::velocityLaplacianFvMotionSolver::velocityLaplacianFvMotionSolver
     ),
     diffusivityPtr_
     (
-        motionDiffusivity::New(*this, lookup("diffusivity"))
+        motionDiffusivity::New(fvMesh_, coeffDict().lookup("diffusivity"))
     )
 {}
 
@@ -141,17 +130,28 @@ void Foam::velocityLaplacianFvMotionSolver::solve()
 }
 
 
+//void Foam::velocityLaplacianFvMotionSolver::movePoints(const pointField& p)
+//{
+//    // Movement of pointMesh and volPointInterpolation already
+//    // done by polyMesh,fvMesh
+//}
+
+
 void Foam::velocityLaplacianFvMotionSolver::updateMesh
 (
     const mapPolyMesh& mpm
 )
 {
-    fvMotionSolver::updateMesh(mpm);
+    velocityMotionSolver::updateMesh(mpm);
 
     // Update diffusivity. Note two stage to make sure old one is de-registered
     // before creating/registering new one.
     diffusivityPtr_.reset(NULL);
-    diffusivityPtr_ = motionDiffusivity::New(*this, lookup("diffusivity"));
+    diffusivityPtr_ = motionDiffusivity::New
+    (
+        fvMesh_,
+        coeffDict().lookup("diffusivity")
+    );
 }
 
 
diff --git a/src/fvMotionSolver/fvMotionSolvers/velocity/laplacian/velocityLaplacianFvMotionSolver.H b/src/fvMotionSolver/fvMotionSolvers/velocity/laplacian/velocityLaplacianFvMotionSolver.H
index 774cb960b7e8c15c7718bea5166f25c81791a7e0..cb187022a29429cb6c5ff8f877572a5c4a124fc8 100644
--- a/src/fvMotionSolver/fvMotionSolvers/velocity/laplacian/velocityLaplacianFvMotionSolver.H
+++ b/src/fvMotionSolver/fvMotionSolvers/velocity/laplacian/velocityLaplacianFvMotionSolver.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -36,7 +36,8 @@ SourceFiles
 #ifndef velocityLaplacianFvMotionSolver_H
 #define velocityLaplacianFvMotionSolver_H
 
-#include "fvMotionSolver.H"
+#include "velocityMotionSolver.H"
+#include "fvMotionSolverCore.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -52,13 +53,11 @@ class motionDiffusivity;
 
 class velocityLaplacianFvMotionSolver
 :
-    public fvMotionSolver
+    public velocityMotionSolver,
+    public fvMotionSolverCore
 {
     // Private data
 
-        //- Point motion field
-        mutable pointVectorField pointMotionU_;
-
         //- Cell-centre motion field
         mutable volVectorField cellMotionU_;
 
@@ -86,11 +85,11 @@ public:
 
     // Constructors
 
-        //- Construct from polyMesh and data stream
+        //- Construct from polyMesh and IOdictionary
         velocityLaplacianFvMotionSolver
         (
             const polyMesh&,
-            Istream& msDataUnused
+            const IOdictionary&
         );
 
 
@@ -100,18 +99,6 @@ public:
 
     // Member Functions
 
-        //- Return reference to the point motion velocity field
-        pointVectorField& pointMotionU()
-        {
-            return pointMotionU_;
-        }
-
-        //- Return const reference to the point motion velocity field
-        const pointVectorField& pointMotionU() const
-        {
-            return pointMotionU_;
-        }
-
         //- Return reference to the cell motion velocity field
         volVectorField& cellMotionU()
         {
diff --git a/src/fvMotionSolver/motionDiffusivity/directional/directionalDiffusivity.C b/src/fvMotionSolver/motionDiffusivity/directional/directionalDiffusivity.C
index 462bca14bfa3aae7e73c270ea387d0f1bbf8fa5c..2fdc9b10656148306c6a234966a41acd91e10ee6 100644
--- a/src/fvMotionSolver/motionDiffusivity/directional/directionalDiffusivity.C
+++ b/src/fvMotionSolver/motionDiffusivity/directional/directionalDiffusivity.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -45,11 +45,11 @@ namespace Foam
 
 Foam::directionalDiffusivity::directionalDiffusivity
 (
-    const fvMotionSolver& mSolver,
+    const fvMesh& mesh,
     Istream& mdData
 )
 :
-    uniformDiffusivity(mSolver, mdData),
+    uniformDiffusivity(mesh, mdData),
     diffusivityVector_(mdData)
 {
     correct();
@@ -66,9 +66,7 @@ Foam::directionalDiffusivity::~directionalDiffusivity()
 
 void Foam::directionalDiffusivity::correct()
 {
-    const fvMesh& mesh = mSolver().mesh();
-
-    const surfaceVectorField n(mesh.Sf()/mesh.magSf());
+    const surfaceVectorField n(mesh().Sf()/mesh().magSf());
     faceDiffusivity_ == (n & cmptMultiply(diffusivityVector_, n));
 }
 
diff --git a/src/fvMotionSolver/motionDiffusivity/directional/directionalDiffusivity.H b/src/fvMotionSolver/motionDiffusivity/directional/directionalDiffusivity.H
index 9292c94573e3a0cec93b438ccb39e640d04d707d..2e83b3734917f3bf421104793080c8662231f1a5 100644
--- a/src/fvMotionSolver/motionDiffusivity/directional/directionalDiffusivity.H
+++ b/src/fvMotionSolver/motionDiffusivity/directional/directionalDiffusivity.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -72,12 +72,8 @@ public:
 
     // Constructors
 
-        //- Construct for the given fvMotionSolver and data Istream
-        directionalDiffusivity
-        (
-            const fvMotionSolver& mSolver,
-            Istream& mdData
-        );
+        //- Construct for the given fvMesh and data Istream
+        directionalDiffusivity(const fvMesh& mesh, Istream& mdData);
 
 
     //- Destructor
diff --git a/src/fvMotionSolver/motionDiffusivity/file/fileDiffusivity.C b/src/fvMotionSolver/motionDiffusivity/file/fileDiffusivity.C
index bfb1b73d3e1a1d8c9b978d2afc797129b43dd0b5..61223d059183a1ac67aed79b88793d231796166b 100644
--- a/src/fvMotionSolver/motionDiffusivity/file/fileDiffusivity.C
+++ b/src/fvMotionSolver/motionDiffusivity/file/fileDiffusivity.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -45,22 +45,22 @@ namespace Foam
 
 Foam::fileDiffusivity::fileDiffusivity
 (
-    const fvMotionSolver& mSolver,
+    const fvMesh& mesh,
     Istream& mdData
 )
 :
-    motionDiffusivity(mSolver),
+    motionDiffusivity(mesh),
     faceDiffusivity_
     (
         IOobject
         (
             word(mdData),
-            mSolver.mesh().time().constant(),
-            mSolver.mesh(),
+            mesh.time().constant(),
+            mesh,
             IOobject::MUST_READ,
             IOobject::NO_WRITE
         ),
-        mSolver.mesh()
+        mesh
     )
 {}
 
diff --git a/src/fvMotionSolver/motionDiffusivity/file/fileDiffusivity.H b/src/fvMotionSolver/motionDiffusivity/file/fileDiffusivity.H
index 2bac5288d0de36452657eeeadfbd9e287841876e..8269bf449b14e8d57000a81098f1f0ba58f5fc69 100644
--- a/src/fvMotionSolver/motionDiffusivity/file/fileDiffusivity.H
+++ b/src/fvMotionSolver/motionDiffusivity/file/fileDiffusivity.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -78,12 +78,8 @@ public:
 
     // Constructors
 
-        //- Construct for the given fvMotionSolver and data Istream
-        fileDiffusivity
-        (
-            const fvMotionSolver& mSolver,
-            Istream& mdData
-        );
+        //- Construct for the given fvMesh and data Istream
+        fileDiffusivity(const fvMesh& mesh, Istream& mdData);
 
 
     //- Destructor
diff --git a/src/fvMotionSolver/motionDiffusivity/inverseDistance/inverseDistanceDiffusivity.C b/src/fvMotionSolver/motionDiffusivity/inverseDistance/inverseDistanceDiffusivity.C
index ca133b5631f4ce3eed28999709d9cdf6ceaae3cd..657dac6d988b8f313c26199b8eec6d6c19287484 100644
--- a/src/fvMotionSolver/motionDiffusivity/inverseDistance/inverseDistanceDiffusivity.C
+++ b/src/fvMotionSolver/motionDiffusivity/inverseDistance/inverseDistanceDiffusivity.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -49,11 +49,11 @@ namespace Foam
 
 Foam::inverseDistanceDiffusivity::inverseDistanceDiffusivity
 (
-    const fvMotionSolver& mSolver,
+    const fvMesh& mesh,
     Istream& mdData
 )
 :
-    uniformDiffusivity(mSolver, mdData),
+    uniformDiffusivity(mesh, mdData),
     patchNames_(mdData)
 {
     correct();
@@ -70,37 +70,33 @@ Foam::inverseDistanceDiffusivity::~inverseDistanceDiffusivity()
 
 Foam::tmp<Foam::scalarField> Foam::inverseDistanceDiffusivity::y() const
 {
-    const polyMesh& mesh = mSolver().mesh();
-
-    labelHashSet patchSet(mesh.boundaryMesh().patchSet(patchNames_));
+    labelHashSet patchSet(mesh().boundaryMesh().patchSet(patchNames_));
 
     if (patchSet.size())
     {
         return tmp<scalarField>
         (
-            new scalarField(patchWave(mesh, patchSet, false).distance())
+            new scalarField(patchWave(mesh(), patchSet, false).distance())
         );
     }
     else
     {
-        return tmp<scalarField>(new scalarField(mesh.nCells(), 1.0));
+        return tmp<scalarField>(new scalarField(mesh().nCells(), 1.0));
     }
 }
 
 
 void Foam::inverseDistanceDiffusivity::correct()
 {
-    const fvMesh& mesh = mSolver().mesh();
-
     volScalarField y_
     (
         IOobject
         (
             "y",
-            mesh.time().timeName(),
-            mesh
+            mesh().time().timeName(),
+            mesh()
         ),
-        mesh,
+        mesh(),
         dimless,
         zeroGradientFvPatchScalarField::typeName
     );
diff --git a/src/fvMotionSolver/motionDiffusivity/inverseDistance/inverseDistanceDiffusivity.H b/src/fvMotionSolver/motionDiffusivity/inverseDistance/inverseDistanceDiffusivity.H
index d39e4fad26feff27b74ebc5c8236a8f93a19edf0..e5f6f3c9a56003b64d5b5efaa74ee752bf68be8e 100644
--- a/src/fvMotionSolver/motionDiffusivity/inverseDistance/inverseDistanceDiffusivity.H
+++ b/src/fvMotionSolver/motionDiffusivity/inverseDistance/inverseDistanceDiffusivity.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -78,12 +78,8 @@ public:
 
     // Constructors
 
-        //- Construct for the given fvMotionSolver and data Istream
-        inverseDistanceDiffusivity
-        (
-            const fvMotionSolver& mSolver,
-            Istream& mdData
-        );
+        //- Construct for the given fvMesh and data Istream
+        inverseDistanceDiffusivity(const fvMesh& mesh, Istream& mdData);
 
 
     //- Destructor
diff --git a/src/fvMotionSolver/motionDiffusivity/inverseFaceDistance/inverseFaceDistanceDiffusivity.C b/src/fvMotionSolver/motionDiffusivity/inverseFaceDistance/inverseFaceDistanceDiffusivity.C
index 0dc3b39f98ebbab347b7ba55559ae97c0abdbb44..a2886679985cf478b929377fa1f12457b99bedeb 100644
--- a/src/fvMotionSolver/motionDiffusivity/inverseFaceDistance/inverseFaceDistanceDiffusivity.C
+++ b/src/fvMotionSolver/motionDiffusivity/inverseFaceDistance/inverseFaceDistanceDiffusivity.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -48,11 +48,11 @@ namespace Foam
 
 Foam::inverseFaceDistanceDiffusivity::inverseFaceDistanceDiffusivity
 (
-    const fvMotionSolver& mSolver,
+    const fvMesh& mesh,
     Istream& mdData
 )
 :
-    uniformDiffusivity(mSolver, mdData),
+    uniformDiffusivity(mesh, mdData),
     patchNames_(mdData)
 {
     correct();
@@ -69,8 +69,7 @@ Foam::inverseFaceDistanceDiffusivity::~inverseFaceDistanceDiffusivity()
 
 void Foam::inverseFaceDistanceDiffusivity::correct()
 {
-    const polyMesh& mesh = mSolver().mesh();
-    const polyBoundaryMesh& bdry = mesh.boundaryMesh();
+    const polyBoundaryMesh& bdry = mesh().boundaryMesh();
 
     labelHashSet patchSet(bdry.size());
 
@@ -112,16 +111,16 @@ void Foam::inverseFaceDistanceDiffusivity::correct()
 
     MeshWave<wallPoint> waveInfo
     (
-        mesh,
+        mesh(),
         changedFaces,
         faceDist,
-        mesh.globalData().nTotalCells()+1   // max iterations
+        mesh().globalData().nTotalCells()+1   // max iterations
     );
 
     const List<wallPoint>& faceInfo = waveInfo.allFaceInfo();
     const List<wallPoint>& cellInfo = waveInfo.allCellInfo();
 
-    for (label faceI=0; faceI<mesh.nInternalFaces(); faceI++)
+    for (label faceI=0; faceI<mesh().nInternalFaces(); faceI++)
     {
         scalar dist = faceInfo[faceI].distSqr();
 
diff --git a/src/fvMotionSolver/motionDiffusivity/inverseFaceDistance/inverseFaceDistanceDiffusivity.H b/src/fvMotionSolver/motionDiffusivity/inverseFaceDistance/inverseFaceDistanceDiffusivity.H
index 08f94c71571d36001593398ac576b1ff9d9141f8..0a5b6809ad89c37f961912a5a7cb59b831771ee8 100644
--- a/src/fvMotionSolver/motionDiffusivity/inverseFaceDistance/inverseFaceDistanceDiffusivity.H
+++ b/src/fvMotionSolver/motionDiffusivity/inverseFaceDistance/inverseFaceDistanceDiffusivity.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -73,12 +73,8 @@ public:
 
     // Constructors
 
-        //- Construct for the given fvMotionSolver and data Istream
-        inverseFaceDistanceDiffusivity
-        (
-            const fvMotionSolver& mSolver,
-            Istream& mdData
-        );
+        //- Construct for the given fvMesh and data Istream
+        inverseFaceDistanceDiffusivity(const fvMesh& mesh, Istream& mdData);
 
 
     //- Destructor
diff --git a/src/fvMotionSolver/motionDiffusivity/inversePointDistance/inversePointDistanceDiffusivity.C b/src/fvMotionSolver/motionDiffusivity/inversePointDistance/inversePointDistanceDiffusivity.C
index c363129c9b9acf03a091697a5d30ee9c36070a25..de8a3fd2736c2159d6012cfb3a1247b53c7586b8 100644
--- a/src/fvMotionSolver/motionDiffusivity/inversePointDistance/inversePointDistanceDiffusivity.C
+++ b/src/fvMotionSolver/motionDiffusivity/inversePointDistance/inversePointDistanceDiffusivity.C
@@ -48,11 +48,11 @@ namespace Foam
 
 Foam::inversePointDistanceDiffusivity::inversePointDistanceDiffusivity
 (
-    const fvMotionSolver& mSolver,
+    const fvMesh& mesh,
     Istream& mdData
 )
 :
-    uniformDiffusivity(mSolver, mdData),
+    uniformDiffusivity(mesh, mdData),
     patchNames_(mdData)
 {
     correct();
@@ -69,8 +69,7 @@ Foam::inversePointDistanceDiffusivity::~inversePointDistanceDiffusivity()
 
 void Foam::inversePointDistanceDiffusivity::correct()
 {
-    const polyMesh& mesh = mSolver().mesh();
-    const polyBoundaryMesh& bdry = mesh.boundaryMesh();
+    const polyBoundaryMesh& bdry = mesh().boundaryMesh();
 
     labelHashSet patchSet(bdry.patchSet(patchNames_));
 
@@ -82,8 +81,8 @@ void Foam::inversePointDistanceDiffusivity::correct()
     }
 
     // Distance to wall on points and edges.
-    List<pointEdgePoint> pointWallDist(mesh.nPoints());
-    List<pointEdgePoint> edgeWallDist(mesh.nEdges());
+    List<pointEdgePoint> pointWallDist(mesh().nPoints());
+    List<pointEdgePoint> edgeWallDist(mesh().nEdges());
 
     int dummyTrackData = 0;
 
@@ -110,7 +109,7 @@ void Foam::inversePointDistanceDiffusivity::correct()
                     // Not yet seeded
                     seedInfo[nPatchEdges] = pointEdgePoint
                     (
-                        mesh.points()[pointI],
+                        mesh().points()[pointI],
                         0.0
                     );
                     seedPoints[nPatchEdges] = pointI;
@@ -126,21 +125,21 @@ void Foam::inversePointDistanceDiffusivity::correct()
         // Do calculations
         PointEdgeWave<pointEdgePoint> waveInfo
         (
-            mesh,
+            mesh(),
             seedPoints,
             seedInfo,
 
             pointWallDist,
             edgeWallDist,
-            mesh.globalData().nTotalPoints(),// max iterations
+            mesh().globalData().nTotalPoints(),// max iterations
             dummyTrackData
         );
     }
 
 
-    for (label faceI=0; faceI<mesh.nInternalFaces(); faceI++)
+    for (label faceI=0; faceI<mesh().nInternalFaces(); faceI++)
     {
-        const face& f = mesh.faces()[faceI];
+        const face& f = mesh().faces()[faceI];
 
         scalar dist = 0;
 
@@ -163,7 +162,7 @@ void Foam::inversePointDistanceDiffusivity::correct()
 
             forAll(bfld, i)
             {
-                const cell& ownFaces = mesh.cells()[faceCells[i]];
+                const cell& ownFaces = mesh().cells()[faceCells[i]];
 
                 labelHashSet cPoints(4*ownFaces.size());
 
@@ -171,7 +170,7 @@ void Foam::inversePointDistanceDiffusivity::correct()
 
                 forAll(ownFaces, ownFaceI)
                 {
-                    const face& f = mesh.faces()[ownFaces[ownFaceI]];
+                    const face& f = mesh().faces()[ownFaces[ownFaceI]];
 
                     forAll(f, fp)
                     {
@@ -192,7 +191,7 @@ void Foam::inversePointDistanceDiffusivity::correct()
 
             forAll(bfld, i)
             {
-                const face& f = mesh.faces()[start+i];
+                const face& f = mesh().faces()[start+i];
 
                 scalar dist = 0;
 
diff --git a/src/fvMotionSolver/motionDiffusivity/inversePointDistance/inversePointDistanceDiffusivity.H b/src/fvMotionSolver/motionDiffusivity/inversePointDistance/inversePointDistanceDiffusivity.H
index 0cb15b7fab921a8d14b62672feee460ea899f19f..030c7db6a8109e8ee4bd0dab0307ad599520ce9f 100644
--- a/src/fvMotionSolver/motionDiffusivity/inversePointDistance/inversePointDistanceDiffusivity.H
+++ b/src/fvMotionSolver/motionDiffusivity/inversePointDistance/inversePointDistanceDiffusivity.H
@@ -73,12 +73,8 @@ public:
 
     // Constructors
 
-        //- Construct for the given fvMotionSolver and data Istream
-        inversePointDistanceDiffusivity
-        (
-            const fvMotionSolver& mSolver,
-            Istream& mdData
-        );
+        //- Construct for the given fvMesh and data Istream
+        inversePointDistanceDiffusivity(const fvMesh& mesh, Istream& mdData);
 
 
     //- Destructor
diff --git a/src/fvMotionSolver/motionDiffusivity/inverseVolume/inverseVolumeDiffusivity.C b/src/fvMotionSolver/motionDiffusivity/inverseVolume/inverseVolumeDiffusivity.C
index f4a4ebbd51ce55e1ea9ce99b80def03ac2410e5e..3e0b5442d71717cb5ce25eebdce8687308e9be68 100644
--- a/src/fvMotionSolver/motionDiffusivity/inverseVolume/inverseVolumeDiffusivity.C
+++ b/src/fvMotionSolver/motionDiffusivity/inverseVolume/inverseVolumeDiffusivity.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -49,11 +49,11 @@ namespace Foam
 
 Foam::inverseVolumeDiffusivity::inverseVolumeDiffusivity
 (
-    const fvMotionSolver& mSolver,
+    const fvMesh& mesh,
     Istream& mdData
 )
 :
-    uniformDiffusivity(mSolver, mdData)
+    uniformDiffusivity(mesh, mdData)
 {
     correct();
 }
@@ -69,22 +69,20 @@ Foam::inverseVolumeDiffusivity::~inverseVolumeDiffusivity()
 
 void Foam::inverseVolumeDiffusivity::correct()
 {
-    const fvMesh& mesh = mSolver().mesh();
-
     volScalarField V
     (
         IOobject
         (
             "V",
-            mesh.time().timeName(),
-            mesh
+            mesh().time().timeName(),
+            mesh()
         ),
-        mesh,
+        mesh(),
         dimless,
         zeroGradientFvPatchScalarField::typeName
     );
 
-    V.internalField() = mesh.V();
+    V.internalField() = mesh().V();
     V.correctBoundaryConditions();
 
     faceDiffusivity_ = 1.0/fvc::interpolate(V);
diff --git a/src/fvMotionSolver/motionDiffusivity/inverseVolume/inverseVolumeDiffusivity.H b/src/fvMotionSolver/motionDiffusivity/inverseVolume/inverseVolumeDiffusivity.H
index 46385a5e930d7350fd41cd7b8d8eb1d422af5f62..ee395f979f1e0bd03576bebf8188467e4058046b 100644
--- a/src/fvMotionSolver/motionDiffusivity/inverseVolume/inverseVolumeDiffusivity.H
+++ b/src/fvMotionSolver/motionDiffusivity/inverseVolume/inverseVolumeDiffusivity.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -67,12 +67,8 @@ public:
 
     // Constructors
 
-        //- Construct for the given fvMotionSolver and data Istream
-        inverseVolumeDiffusivity
-        (
-            const fvMotionSolver& mSolver,
-            Istream& mdData
-        );
+        //- Construct for the given fvMesh and data Istream
+        inverseVolumeDiffusivity(const fvMesh& mesh, Istream& mdData);
 
 
     //- Destructor
diff --git a/src/fvMotionSolver/motionDiffusivity/manipulators/exponential/exponentialDiffusivity.C b/src/fvMotionSolver/motionDiffusivity/manipulators/exponential/exponentialDiffusivity.C
index a486c19687a4b626438208df09c80fe2c4bef628..34f1c8ebce849bb97248c9e874471c1012c569a2 100644
--- a/src/fvMotionSolver/motionDiffusivity/manipulators/exponential/exponentialDiffusivity.C
+++ b/src/fvMotionSolver/motionDiffusivity/manipulators/exponential/exponentialDiffusivity.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -46,13 +46,13 @@ namespace Foam
 
 Foam::exponentialDiffusivity::exponentialDiffusivity
 (
-    const fvMotionSolver& mSolver,
+    const fvMesh& mesh,
     Istream& mdData
 )
 :
-    motionDiffusivity(mSolver),
+    motionDiffusivity(mesh),
     alpha_(readScalar(mdData)),
-    basicDiffusivityPtr_(motionDiffusivity::New(mSolver, mdData))
+    basicDiffusivityPtr_(motionDiffusivity::New(mesh, mdData))
 {}
 
 
diff --git a/src/fvMotionSolver/motionDiffusivity/manipulators/exponential/exponentialDiffusivity.H b/src/fvMotionSolver/motionDiffusivity/manipulators/exponential/exponentialDiffusivity.H
index deda4ab9c8099243281ef46b7070c63ef0318fe5..c9a7ea47a6a1355b71d9a7764558ecb5c8cc37b0 100644
--- a/src/fvMotionSolver/motionDiffusivity/manipulators/exponential/exponentialDiffusivity.H
+++ b/src/fvMotionSolver/motionDiffusivity/manipulators/exponential/exponentialDiffusivity.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -74,12 +74,8 @@ public:
 
     // Constructors
 
-        //- Construct for the given fvMotionSolver and data Istream
-        exponentialDiffusivity
-        (
-            const fvMotionSolver& mSolver,
-            Istream& mdData
-        );
+        //- Construct for the given fvMesh and data Istream
+        exponentialDiffusivity(const fvMesh& mesh, Istream& mdData);
 
 
     //- Destructor
diff --git a/src/fvMotionSolver/motionDiffusivity/manipulators/quadratic/quadraticDiffusivity.C b/src/fvMotionSolver/motionDiffusivity/manipulators/quadratic/quadraticDiffusivity.C
index bc396b44642487dbd2a3f25568ac6f095e9032d3..1b79c8777741ff69b891d035da9a22b95839d3ec 100644
--- a/src/fvMotionSolver/motionDiffusivity/manipulators/quadratic/quadraticDiffusivity.C
+++ b/src/fvMotionSolver/motionDiffusivity/manipulators/quadratic/quadraticDiffusivity.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -46,12 +46,12 @@ namespace Foam
 
 Foam::quadraticDiffusivity::quadraticDiffusivity
 (
-    const fvMotionSolver& mSolver,
+    const fvMesh& mesh,
     Istream& mdData
 )
 :
-    motionDiffusivity(mSolver),
-    basicDiffusivityPtr_(motionDiffusivity::New(mSolver, mdData))
+    motionDiffusivity(mesh),
+    basicDiffusivityPtr_(motionDiffusivity::New(mesh, mdData))
 {}
 
 
diff --git a/src/fvMotionSolver/motionDiffusivity/manipulators/quadratic/quadraticDiffusivity.H b/src/fvMotionSolver/motionDiffusivity/manipulators/quadratic/quadraticDiffusivity.H
index 9c545c30183bb6568b08a08377e86db4d7dcb310..05f0b3390cca86aa4a62cd82ef3bf17e5d8dd828 100644
--- a/src/fvMotionSolver/motionDiffusivity/manipulators/quadratic/quadraticDiffusivity.H
+++ b/src/fvMotionSolver/motionDiffusivity/manipulators/quadratic/quadraticDiffusivity.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -73,12 +73,8 @@ public:
 
     // Constructors
 
-        //- Construct for the given fvMotionSolver and data Istream
-        quadraticDiffusivity
-        (
-            const fvMotionSolver& mSolver,
-            Istream& mdData
-        );
+        //- Construct for the given fvMesh and data Istream
+        quadraticDiffusivity(const fvMesh& mesh, Istream& mdData);
 
 
     //- Destructor
diff --git a/src/fvMotionSolver/motionDiffusivity/motionDiffusivity/motionDiffusivity.C b/src/fvMotionSolver/motionDiffusivity/motionDiffusivity/motionDiffusivity.C
index 1073ce8c950f942734a0b2b322f04f5b2f905887..86c94a35b83a06dcb6a680434f8c69080fd60d76 100644
--- a/src/fvMotionSolver/motionDiffusivity/motionDiffusivity/motionDiffusivity.C
+++ b/src/fvMotionSolver/motionDiffusivity/motionDiffusivity/motionDiffusivity.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -36,9 +36,9 @@ namespace Foam
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::motionDiffusivity::motionDiffusivity(const fvMotionSolver& mSolver)
+Foam::motionDiffusivity::motionDiffusivity(const fvMesh& mesh)
 :
-    mSolver_(mSolver)
+    mesh_(mesh)
 {}
 
 
@@ -46,7 +46,7 @@ Foam::motionDiffusivity::motionDiffusivity(const fvMotionSolver& mSolver)
 
 Foam::autoPtr<Foam::motionDiffusivity> Foam::motionDiffusivity::New
 (
-    const fvMotionSolver& mSolver,
+    const fvMesh& mesh,
     Istream& mdData
 )
 {
@@ -61,7 +61,7 @@ Foam::autoPtr<Foam::motionDiffusivity> Foam::motionDiffusivity::New
     {
         FatalErrorIn
         (
-            "motionDiffusivity::New(const tetPolyMesh& tetMesh, "
+            "motionDiffusivity::New(const fvMesh&, "
             "const Istream& dict)"
         )   << "Unknown diffusion type "
             << motionType << nl << nl
@@ -70,7 +70,7 @@ Foam::autoPtr<Foam::motionDiffusivity> Foam::motionDiffusivity::New
             << exit(FatalError);
     }
 
-    return autoPtr<motionDiffusivity>(cstrIter()(mSolver, mdData));
+    return autoPtr<motionDiffusivity>(cstrIter()(mesh, mdData));
 }
 
 
diff --git a/src/fvMotionSolver/motionDiffusivity/motionDiffusivity/motionDiffusivity.H b/src/fvMotionSolver/motionDiffusivity/motionDiffusivity/motionDiffusivity.H
index f70524c3354f90b2663166b35434a0db0f92c3a2..b28ee1cfad8a897f2a1f6802afa86a035b8a810a 100644
--- a/src/fvMotionSolver/motionDiffusivity/motionDiffusivity/motionDiffusivity.H
+++ b/src/fvMotionSolver/motionDiffusivity/motionDiffusivity/motionDiffusivity.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -35,8 +35,8 @@ SourceFiles
 #ifndef motionDiffusivity_H
 #define motionDiffusivity_H
 
-#include "fvMotionSolver.H"
 #include "surfaceFieldsFwd.H"
+#include "fvMesh.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -51,8 +51,8 @@ class motionDiffusivity
 {
     // Private data
 
-        //- Motion solver reference
-        const fvMotionSolver& mSolver_;
+        //- mesh reference
+        const fvMesh& mesh_;
 
 public:
 
@@ -68,10 +68,10 @@ public:
             motionDiffusivity,
             Istream,
             (
-                const fvMotionSolver& mSolver,
+                const fvMesh& mesh,
                 Istream& mdData
             ),
-            (mSolver, mdData)
+            (mesh, mdData)
         );
 
 
@@ -80,15 +80,15 @@ public:
         //- Select null constructed
         static autoPtr<motionDiffusivity> New
         (
-            const fvMotionSolver& mSolver,
+            const fvMesh& mesh,
             Istream& mdData
         );
 
 
     // Constructors
 
-        //- Construct for the given fvMotionSolver
-        motionDiffusivity(const fvMotionSolver& mSolver);
+        //- Construct for the given fvMesh
+        motionDiffusivity(const fvMesh& mesh);
 
 
     //- Destructor
@@ -97,10 +97,10 @@ public:
 
     // Member Functions
 
-        //- Return reference to the motion solver
-        const fvMotionSolver& mSolver() const
+        //- Return reference to the mesh
+        const fvMesh& mesh() const
         {
-            return mSolver_;
+            return mesh_;
         }
 
         //- Return diffusivity field
diff --git a/src/fvMotionSolver/motionDiffusivity/motionDirectional/motionDirectionalDiffusivity.C b/src/fvMotionSolver/motionDiffusivity/motionDirectional/motionDirectionalDiffusivity.C
index f98469edd490d101f84a3b393725d6669513c397..1943c09a98444ef1ad1f6b2c70d65aa6763d4222 100644
--- a/src/fvMotionSolver/motionDiffusivity/motionDirectional/motionDirectionalDiffusivity.C
+++ b/src/fvMotionSolver/motionDiffusivity/motionDirectional/motionDirectionalDiffusivity.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -27,6 +27,7 @@ License
 #include "surfaceInterpolate.H"
 #include "zeroGradientFvPatchFields.H"
 #include "addToRunTimeSelectionTable.H"
+#include "velocityMotionSolver.H"
 
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
@@ -47,11 +48,11 @@ namespace Foam
 
 Foam::motionDirectionalDiffusivity::motionDirectionalDiffusivity
 (
-    const fvMotionSolver& mSolver,
+    const fvMesh& mesh,
     Istream& mdData
 )
 :
-    uniformDiffusivity(mSolver, mdData),
+    uniformDiffusivity(mesh, mdData),
     diffusivityVector_(mdData)
 {}
 
@@ -66,22 +67,20 @@ Foam::motionDirectionalDiffusivity::~motionDirectionalDiffusivity()
 
 void Foam::motionDirectionalDiffusivity::correct()
 {
-    const fvMesh& mesh = mSolver().mesh();
-
     static bool first = true;
 
     if (!first)
     {
         const volVectorField& cellMotionU =
-            mesh.lookupObject<volVectorField>("cellMotionU");
+            mesh().lookupObject<volVectorField>("cellMotionU");
 
         volVectorField D
         (
             IOobject
             (
                 "D",
-                mesh.time().timeName(),
-                mesh
+                mesh().time().timeName(),
+                mesh()
             ),
             diffusivityVector_.y()*vector::one
           + (diffusivityVector_.x() - diffusivityVector_.y())*cellMotionU
@@ -90,13 +89,17 @@ void Foam::motionDirectionalDiffusivity::correct()
         );
         D.correctBoundaryConditions();
 
-        const surfaceVectorField n(mesh.Sf()/mesh.magSf());
+        const surfaceVectorField n(mesh().Sf()/mesh().magSf());
         faceDiffusivity_ == (n & cmptMultiply(fvc::interpolate(D), n));
     }
     else
     {
         first = false;
-        const_cast<fvMotionSolver&>(mSolver()).solve();
+
+        const velocityMotionSolver& mSolver =
+            mesh().lookupObject<velocityMotionSolver>("dynamicMeshDict");
+
+        const_cast<velocityMotionSolver&>(mSolver).solve();
         correct();
     }
 }
diff --git a/src/fvMotionSolver/motionDiffusivity/motionDirectional/motionDirectionalDiffusivity.H b/src/fvMotionSolver/motionDiffusivity/motionDirectional/motionDirectionalDiffusivity.H
index 4396b1b1218b7f0874282b7cb4dcaaf4ef5f76a9..02925d9a069e3c0b00d453730871ac621204f850 100644
--- a/src/fvMotionSolver/motionDiffusivity/motionDirectional/motionDirectionalDiffusivity.H
+++ b/src/fvMotionSolver/motionDiffusivity/motionDirectional/motionDirectionalDiffusivity.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -72,12 +72,8 @@ public:
 
     // Constructors
 
-        //- Construct for the given fvMotionSolver and data Istream
-        motionDirectionalDiffusivity
-        (
-            const fvMotionSolver& mSolver,
-            Istream& mdData
-        );
+        //- Construct for the given fvMesh and data Istream
+        motionDirectionalDiffusivity(const fvMesh& mesh, Istream& mdData);
 
 
     //- Destructor
diff --git a/src/fvMotionSolver/motionDiffusivity/uniform/uniformDiffusivity.C b/src/fvMotionSolver/motionDiffusivity/uniform/uniformDiffusivity.C
index 87648dfae857519cf4d90e649dc1bd605942062a..8e7b470e3cc6e9e052729c9cf39d7bdb667010ff 100644
--- a/src/fvMotionSolver/motionDiffusivity/uniform/uniformDiffusivity.C
+++ b/src/fvMotionSolver/motionDiffusivity/uniform/uniformDiffusivity.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -45,22 +45,22 @@ namespace Foam
 
 Foam::uniformDiffusivity::uniformDiffusivity
 (
-    const fvMotionSolver& mSolver,
+    const fvMesh& mesh,
     Istream&
 )
 :
-    motionDiffusivity(mSolver),
+    motionDiffusivity(mesh),
     faceDiffusivity_
     (
         IOobject
         (
             "faceDiffusivity",
-            mSolver.mesh().time().timeName(),
-            mSolver.mesh(),
+            mesh.time().timeName(),
+            mesh,
             IOobject::NO_READ,
             IOobject::NO_WRITE
         ),
-        mSolver.mesh(),
+        mesh,
         dimensionedScalar("1.0", dimless, 1.0)
     )
 {}
diff --git a/src/fvMotionSolver/motionDiffusivity/uniform/uniformDiffusivity.H b/src/fvMotionSolver/motionDiffusivity/uniform/uniformDiffusivity.H
index f843a12bf454e741a46db150a79b3871c3736f26..e0da293f710f688227b954f2b773822db2b71fd4 100644
--- a/src/fvMotionSolver/motionDiffusivity/uniform/uniformDiffusivity.H
+++ b/src/fvMotionSolver/motionDiffusivity/uniform/uniformDiffusivity.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -78,12 +78,8 @@ public:
 
     // Constructors
 
-        //- Construct for the given fvMotionSolver and data Istream
-        uniformDiffusivity
-        (
-            const fvMotionSolver& mSolver,
-            Istream& mdData
-        );
+        //- Construct for the given fvMesh and data Istream
+        uniformDiffusivity(const fvMesh& mesh, Istream& mdData);
 
 
     //- Destructor
diff --git a/src/fvMotionSolver/pointPatchFields/derived/surfaceDisplacement/surfaceDisplacementPointPatchVectorField.C b/src/fvMotionSolver/pointPatchFields/derived/surfaceDisplacement/surfaceDisplacementPointPatchVectorField.C
index 2f9ce5528ca0f9486eabe404bf8953e62505a0fa..8a3cd26b68b5501a79d192de54e8f70983f1b171 100644
--- a/src/fvMotionSolver/pointPatchFields/derived/surfaceDisplacement/surfaceDisplacementPointPatchVectorField.C
+++ b/src/fvMotionSolver/pointPatchFields/derived/surfaceDisplacement/surfaceDisplacementPointPatchVectorField.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -28,7 +28,7 @@ License
 #include "Time.H"
 #include "transformField.H"
 #include "fvMesh.H"
-#include "displacementLaplacianFvMotionSolver.H"
+#include "displacementMotionSolver.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -95,7 +95,7 @@ void surfaceDisplacementPointPatchVectorField::calcProjection
     }
 
     // Get the starting locations from the motionSolver
-    const pointField& points0 = mesh.lookupObject<displacementFvMotionSolver>
+    const pointField& points0 = mesh.lookupObject<displacementMotionSolver>
     (
         "dynamicMeshDict"
     ).points0();
diff --git a/src/fvMotionSolver/pointPatchFields/derived/surfaceDisplacement/surfaceDisplacementPointPatchVectorField.H b/src/fvMotionSolver/pointPatchFields/derived/surfaceDisplacement/surfaceDisplacementPointPatchVectorField.H
index 9a743f170793625ed9cd1e294caee29358c10ac1..786e452a46fb4bee90205bced029f9a0e790d954 100644
--- a/src/fvMotionSolver/pointPatchFields/derived/surfaceDisplacement/surfaceDisplacementPointPatchVectorField.H
+++ b/src/fvMotionSolver/pointPatchFields/derived/surfaceDisplacement/surfaceDisplacementPointPatchVectorField.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -26,7 +26,7 @@ Class
 
 Description
     Displacement fixed by projection onto triSurface.
-    Use in a displacement fvMotionSolver
+    Use in a displacementMotionSolver
     as a bc on the pointDisplacement field.
 
     Calculates the projection onto the surface according
diff --git a/src/fvMotionSolver/pointPatchFields/derived/surfaceSlipDisplacement/surfaceSlipDisplacementPointPatchVectorField.C b/src/fvMotionSolver/pointPatchFields/derived/surfaceSlipDisplacement/surfaceSlipDisplacementPointPatchVectorField.C
index 2af01d6e47656160c45cbcb1651f5dec17a7d978..c56a28135139bd8b2782db62946f1130d7382103 100644
--- a/src/fvMotionSolver/pointPatchFields/derived/surfaceSlipDisplacement/surfaceSlipDisplacementPointPatchVectorField.C
+++ b/src/fvMotionSolver/pointPatchFields/derived/surfaceSlipDisplacement/surfaceSlipDisplacementPointPatchVectorField.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -28,7 +28,7 @@ License
 #include "Time.H"
 #include "transformField.H"
 #include "fvMesh.H"
-#include "displacementFvMotionSolver.H"
+#include "displacementMotionSolver.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -94,7 +94,7 @@ void surfaceSlipDisplacementPointPatchVectorField::calcProjection
     }
 
     // Get the starting locations from the motionSolver
-    const pointField& points0 = mesh.lookupObject<displacementFvMotionSolver>
+    const pointField& points0 = mesh.lookupObject<displacementMotionSolver>
     (
         "dynamicMeshDict"
     ).points0();
diff --git a/src/fvMotionSolver/pointPatchFields/derived/surfaceSlipDisplacement/surfaceSlipDisplacementPointPatchVectorField.H b/src/fvMotionSolver/pointPatchFields/derived/surfaceSlipDisplacement/surfaceSlipDisplacementPointPatchVectorField.H
index cb1a9cc50fd78e9898007381d3f621972d0e0b06..3115c3af3e33fc0a8db9c0c3b408e010c0fe5f32 100644
--- a/src/fvMotionSolver/pointPatchFields/derived/surfaceSlipDisplacement/surfaceSlipDisplacementPointPatchVectorField.H
+++ b/src/fvMotionSolver/pointPatchFields/derived/surfaceSlipDisplacement/surfaceSlipDisplacementPointPatchVectorField.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -25,7 +25,7 @@ Class
     Foam::surfaceSlipDisplacementPointPatchVectorField
 
 Description
-    Displacement follows a triSurface. Use in a displacement fvMotionSolver
+    Displacement follows a triSurface. Use in a displacementMotionSolver
     as a bc on the pointDisplacement field.
     Following is done by calculating the projection onto the surface according
     to the projectMode
diff --git a/src/lagrangian/coalCombustion/Make/options b/src/lagrangian/coalCombustion/Make/options
index 2b9ab5fb778b648c99968a8e4215d42232f0c1e0..34a2babd735d8e8a6b2e69c447755c3660058595 100644
--- a/src/lagrangian/coalCombustion/Make/options
+++ b/src/lagrangian/coalCombustion/Make/options
@@ -27,7 +27,7 @@ LIB_LIBS = \
     -llagrangianIntermediate \
     -ldistributionModels \
     -lspecie \
-    -lbasicThermophysicalModels \
+    -lfluidThermophysicalModels \
     -lliquidProperties \
     -lliquidMixtureProperties \
     -lsolidProperties \
diff --git a/src/lagrangian/intermediate/Make/files b/src/lagrangian/intermediate/Make/files
index 9165621d6c9826698e074934e1a5831f6055c35b..ae4c1f9d66075f32b3590f0feebcd52a15b09ef5 100644
--- a/src/lagrangian/intermediate/Make/files
+++ b/src/lagrangian/intermediate/Make/files
@@ -25,7 +25,7 @@ $(KINEMATICCOLLIDINGPARCEL)/makeBasicKinematicCollidingParcelSubmodels.C
 
 
 /* thermo parcel sub-models */
-THERMOPARCEL=$(DERIVEDPARCELS)/basicThermoParcel
+THERMOPARCEL=$(DERIVEDPARCELS)/fluidThermoParcel
 $(THERMOPARCEL)/defineBasicThermoParcel.C
 $(THERMOPARCEL)/makeBasicThermoParcelSubmodels.C
 
diff --git a/src/lagrangian/intermediate/Make/files.old b/src/lagrangian/intermediate/Make/files.old
index b5ccca4ed27866215b182f6806698db3c39222ea..63909004cd9e2e81357e93025552edfea8f9bacf 100644
--- a/src/lagrangian/intermediate/Make/files.old
+++ b/src/lagrangian/intermediate/Make/files.old
@@ -25,8 +25,8 @@ $(KINEMATICPARCEL)/defineBasicKinematicParcel.C
 $(KINEMATICPARCEL)/makeBasicKinematicParcelSubmodels.C
 
 /* thermo parcel sub-models */
-THERMOPARCEL=$(DERIVEDPARCELS)/basicThermoParcel
-$(THERMOPARCEL)/basicThermoParcel.C
+THERMOPARCEL=$(DERIVEDPARCELS)/fluidThermoParcel
+$(THERMOPARCEL)/fluidThermoParcel.C
 $(THERMOPARCEL)/defineBasicThermoParcel.C
 $(THERMOPARCEL)/makeBasicThermoParcelSubmodels.C
 
diff --git a/src/lagrangian/intermediate/Make/options b/src/lagrangian/intermediate/Make/options
index e775c173b752b36e491660199469c67b894d26f5..f4e774028ee458a334ce664a39deecb2ca0aff55 100644
--- a/src/lagrangian/intermediate/Make/options
+++ b/src/lagrangian/intermediate/Make/options
@@ -25,7 +25,7 @@ LIB_LIBS = \
     -llagrangian \
     -ldistributionModels \
     -lspecie \
-    -lbasicThermophysicalModels \
+    -lfluidThermophysicalModels \
     -lliquidProperties \
     -lliquidMixtureProperties \
     -lsolidProperties \
diff --git a/src/lagrangian/intermediate/clouds/derived/basicThermoCloud/basicThermoCloud.H b/src/lagrangian/intermediate/clouds/derived/fluidThermoCloud/fluidThermoCloud.H
similarity index 86%
rename from src/lagrangian/intermediate/clouds/derived/basicThermoCloud/basicThermoCloud.H
rename to src/lagrangian/intermediate/clouds/derived/fluidThermoCloud/fluidThermoCloud.H
index 7d05012b852a10584f038881722de9c40ad4a4a6..5f024b0ee0099523706cab737302f39d344bd82a 100644
--- a/src/lagrangian/intermediate/clouds/derived/basicThermoCloud/basicThermoCloud.H
+++ b/src/lagrangian/intermediate/clouds/derived/fluidThermoCloud/fluidThermoCloud.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -22,18 +22,18 @@ License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
 Class
-    Foam::basicThermoCloud
+    Foam::fluidThermoCloud
 
 Description
     Cloud class to introduce thermodynamic parcels
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef basicThermoCloud_H
-#define basicThermoCloud_H
+#ifndef fluidThermoCloud_H
+#define fluidThermoCloud_H
 
 #include "ThermoCloud.H"
-#include "basicThermoParcel.H"
+#include "fluidThermoParcel.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -45,10 +45,10 @@ namespace Foam
         <
             Cloud
             <
-                basicThermoParcel
+                fluidThermoParcel
             >
         >
-    > basicThermoCloud;
+    > fluidThermoCloud;
 }
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/lagrangian/intermediate/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcel.C b/src/lagrangian/intermediate/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcel.C
index 84942b034932601a40b18b1899c71203422c5fc6..461ec5b285c6e4eac516534ca1eb7180cdcf7f15 100644
--- a/src/lagrangian/intermediate/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcel.C
+++ b/src/lagrangian/intermediate/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcel.C
@@ -636,7 +636,7 @@ void Foam::ReactingMultiphaseParcel<ParcelType>::calcSurfaceReactions
        *(sum(dMassSRGas) + sum(dMassSRLiquid) + sum(dMassSRSolid))
     );
 
-    const scalar xsi = min(T/5000.0, 1.0);
+    const scalar xsi = min(T/td.cloud().constProps().TMax(), 1.0);
     const scalar coeff =
         (1.0 - xsi*xsi)*td.cloud().constProps().hRetentionCoeff();
 
diff --git a/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/defineBasicThermoParcel.C b/src/lagrangian/intermediate/parcels/derived/fluidThermoParcel/defineBasicThermoParcel.C
similarity index 84%
rename from src/lagrangian/intermediate/parcels/derived/basicThermoParcel/defineBasicThermoParcel.C
rename to src/lagrangian/intermediate/parcels/derived/fluidThermoParcel/defineBasicThermoParcel.C
index 2c2249da024b1aecb0272fe8d9341f29d7662c9d..45381d280d61d77d663070328da308794e0f1ea0 100644
--- a/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/defineBasicThermoParcel.C
+++ b/src/lagrangian/intermediate/parcels/derived/fluidThermoParcel/defineBasicThermoParcel.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -23,15 +23,15 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "basicThermoParcel.H"
+#include "fluidThermoParcel.H"
 #include "Cloud.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 namespace Foam
 {
-    defineTemplateTypeNameAndDebug(basicThermoParcel, 0);
-    defineTemplateTypeNameAndDebug(Cloud<basicThermoParcel>, 0);
+    defineTemplateTypeNameAndDebug(fluidThermoParcel, 0);
+    defineTemplateTypeNameAndDebug(Cloud<fluidThermoParcel>, 0);
 }
 
 // ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/basicThermoParcel.H b/src/lagrangian/intermediate/parcels/derived/fluidThermoParcel/fluidThermoParcel.H
similarity index 84%
rename from src/lagrangian/intermediate/parcels/derived/basicThermoParcel/basicThermoParcel.H
rename to src/lagrangian/intermediate/parcels/derived/fluidThermoParcel/fluidThermoParcel.H
index bff4d221e2b7fb22b3cd44c2c76ff600bf2f52f9..12e863b7b8b5e11d06d3e6b133ba4fc2f0ba6d03 100644
--- a/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/basicThermoParcel.H
+++ b/src/lagrangian/intermediate/parcels/derived/fluidThermoParcel/fluidThermoParcel.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -22,18 +22,18 @@ License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
 Class
-    Foam::basicThermoParcel
+    Foam::fluidThermoParcel
 
 Description
     Definition of basic thermo parcel
 
 SourceFiles
-    basicThermoParcel.C
+    fluidThermoParcel.C
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef basicThermoParcel_H
-#define basicThermoParcel_H
+#ifndef fluidThermoParcel_H
+#define fluidThermoParcel_H
 
 #include "contiguous.H"
 #include "particle.H"
@@ -44,10 +44,10 @@ SourceFiles
 
 namespace Foam
 {
-    typedef ThermoParcel<KinematicParcel<particle> > basicThermoParcel;
+    typedef ThermoParcel<KinematicParcel<particle> > fluidThermoParcel;
 
     template<>
-    inline bool contiguous<basicThermoParcel>()
+    inline bool contiguous<fluidThermoParcel>()
     {
         return true;
     }
diff --git a/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/makeBasicThermoParcelSubmodels.C b/src/lagrangian/intermediate/parcels/derived/fluidThermoParcel/makeBasicThermoParcelSubmodels.C
similarity index 78%
rename from src/lagrangian/intermediate/parcels/derived/basicThermoParcel/makeBasicThermoParcelSubmodels.C
rename to src/lagrangian/intermediate/parcels/derived/fluidThermoParcel/makeBasicThermoParcelSubmodels.C
index 59286ec15705d1cad8058a8fd8ca4ad215163875..1a685395aeb5769042fd7a53ecf7a7a62380f867 100644
--- a/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/makeBasicThermoParcelSubmodels.C
+++ b/src/lagrangian/intermediate/parcels/derived/fluidThermoParcel/makeBasicThermoParcelSubmodels.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -23,7 +23,7 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "basicThermoCloud.H"
+#include "fluidThermoCloud.H"
 
 #include "makeParcelCloudFunctionObjects.H"
 
@@ -41,17 +41,17 @@ License
 
 namespace Foam
 {
-    makeParcelCloudFunctionObjects(basicThermoCloud);
+    makeParcelCloudFunctionObjects(fluidThermoCloud);
 
     // Kinematic sub-models
-    makeThermoParcelForces(basicThermoCloud);
-    makeParcelDispersionModels(basicThermoCloud);
-    makeParcelInjectionModels(basicThermoCloud);
-    makeParcelPatchInteractionModels(basicThermoCloud);
+    makeThermoParcelForces(fluidThermoCloud);
+    makeParcelDispersionModels(fluidThermoCloud);
+    makeParcelInjectionModels(fluidThermoCloud);
+    makeParcelPatchInteractionModels(fluidThermoCloud);
 
     // Thermo sub-models
-    makeParcelHeatTransferModels(basicThermoCloud);
-    makeParcelSurfaceFilmModels(basicThermoCloud);
+    makeParcelHeatTransferModels(fluidThermoCloud);
+    makeParcelSurfaceFilmModels(fluidThermoCloud);
 }
 
 
diff --git a/src/lagrangian/spray/Make/options b/src/lagrangian/spray/Make/options
index 2b9ab5fb778b648c99968a8e4215d42232f0c1e0..34a2babd735d8e8a6b2e69c447755c3660058595 100644
--- a/src/lagrangian/spray/Make/options
+++ b/src/lagrangian/spray/Make/options
@@ -27,7 +27,7 @@ LIB_LIBS = \
     -llagrangianIntermediate \
     -ldistributionModels \
     -lspecie \
-    -lbasicThermophysicalModels \
+    -lfluidThermophysicalModels \
     -lliquidProperties \
     -lliquidMixtureProperties \
     -lsolidProperties \
diff --git a/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoLayerDriver.C b/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoLayerDriver.C
index abe3bc487c336d67a38b8b3c213efffb449e37d4..26b4fb0187a26eae754ec845156f3f32c863cb28 100644
--- a/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoLayerDriver.C
+++ b/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoLayerDriver.C
@@ -48,6 +48,10 @@ Description
 #include "globalIndex.H"
 #include "DynamicField.H"
 #include "PatchTools.H"
+#include "slipPointPatchFields.H"
+#include "fixedValuePointPatchFields.H"
+#include "calculatedPointPatchFields.H"
+#include "cyclicSlipPointPatchFields.H"
 
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
@@ -71,7 +75,7 @@ void Foam::autoLayerDriver::dumpDisplacement
 )
 {
     OFstream dispStr(prefix + "_disp.obj");
-    Info<< "Writing all displacements to " << dispStr.name() << nl << endl;
+    Info<< "Writing all displacements to " << dispStr.name() << endl;
 
     label vertI = 0;
 
@@ -87,7 +91,7 @@ void Foam::autoLayerDriver::dumpDisplacement
 
 
     OFstream illStr(prefix + "_illegal.obj");
-    Info<< "Writing invalid displacements to " << illStr.name() << nl << endl;
+    Info<< "Writing invalid displacements to " << illStr.name() << endl;
 
     vertI = 0;
 
@@ -801,6 +805,81 @@ void Foam::autoLayerDriver::setNumLayers
 }
 
 
+// Construct pointVectorField with correct boundary conditions for adding
+// layers
+Foam::tmp<Foam::pointVectorField>
+Foam::autoLayerDriver::makeLayerDisplacementField
+(
+    const pointMesh& pMesh,
+    const labelList& numLayers
+)
+{
+    // Construct displacement field.
+    const pointBoundaryMesh& pointPatches = pMesh.boundary();
+
+    wordList patchFieldTypes
+    (
+        pointPatches.size(),
+        slipPointPatchVectorField::typeName
+    );
+
+    forAll(numLayers, patchI)
+    {
+        //  0 layers: do not allow lslip so fixedValue 0
+        // >0 layers: fixedValue which gets adapted
+        if (numLayers[patchI] >= 0)
+        {
+            patchFieldTypes[patchI] = fixedValuePointPatchVectorField::typeName;
+        }
+    }
+
+    forAll(pointPatches, patchI)
+    {
+        if (isA<processorPointPatch>(pointPatches[patchI]))
+        {
+            patchFieldTypes[patchI] = calculatedPointPatchVectorField::typeName;
+        }
+        else if (isA<cyclicPointPatch>(pointPatches[patchI]))
+        {
+            patchFieldTypes[patchI] = cyclicSlipPointPatchVectorField::typeName;
+        }
+    }
+
+
+//Pout<< "*** makeLayerDisplacementField : boundary conditions:" << endl;
+//forAll(patchFieldTypes, patchI)
+//{
+//    Pout<< "\t" << patchI << " name:" << pointPatches[patchI].name()
+//        << " type:" << patchFieldTypes[patchI]
+//        << " nLayers:" << numLayers[patchI]
+//        << endl;
+//}
+
+    const polyMesh& mesh = pMesh();
+
+    // Note: time().timeName() instead of meshRefinement::timeName() since
+    // postprocessable field.
+    tmp<pointVectorField> tfld
+    (
+        new pointVectorField
+        (
+            IOobject
+            (
+                "pointDisplacement",
+                mesh.time().timeName(),
+                mesh,
+                IOobject::NO_READ,
+                IOobject::AUTO_WRITE
+            ),
+            pMesh,
+            dimensionedVector("displacement", dimLength, vector::zero),
+            patchFieldTypes
+        )
+    );
+    return tfld;
+}
+
+
 void Foam::autoLayerDriver::growNoExtrusion
 (
     const indirectPrimitivePatch& pp,
@@ -2392,10 +2471,10 @@ void Foam::autoLayerDriver::addLayers
             mesh,
             pp(),
             patchIDs,
-            meshRefinement::makeDisplacementField
+            makeLayerDisplacementField
             (
                 pointMesh::New(mesh),
-                patchIDs
+                layerParams.numLayers()
             ),
             motionDict
         )
@@ -3186,7 +3265,7 @@ void Foam::autoLayerDriver::doLayers
     // Merge coplanar boundary faces
     mergePatchFacesUndo(layerParams, motionDict);
 
-    // Per patch the number of layers (0 if no layer)
+    // Per patch the number of layers (-1 or 0 if no layer)
     const labelList& numLayers = layerParams.numLayers();
 
     // Patches that need to get a layer
diff --git a/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoLayerDriver.H b/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoLayerDriver.H
index cb720dc64fe2de82cd000036181d622dd4a86116..d36d15a4cb15fe0138f8e087ce0b31b91b28c1a5 100644
--- a/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoLayerDriver.H
+++ b/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoLayerDriver.H
@@ -195,6 +195,19 @@ class autoLayerDriver
                     List<extrudeMode>& extrudeStatus
                 ) const;
 
+                //- Helper function to make a pointVectorField with correct
+                //  bcs for layer addition:
+                //  - numLayers > 0         : fixedValue
+                //  - numLayers == 0        : fixedValue (always zero)
+                //  - processor             : calculated (so free to move)
+                //  - cyclic/wedge/symmetry : slip
+                //  - other                 : slip
+                static tmp<pointVectorField> makeLayerDisplacementField
+                (
+                    const pointMesh& pMesh,
+                    const labelList& numLayers
+                );
+
                 //- Grow no-extrusion layer.
                 void growNoExtrusion
                 (
@@ -444,7 +457,6 @@ class autoLayerDriver
                     const PackedBoolList& isMasterEdge,
                     const labelList& meshEdges,
                     const scalar minCosLayerTermination,
-                    scalarField& field,
                     List<extrudeMode>& extrudeStatus,
                     pointField& patchDisp,
                     labelList& patchNLayers
diff --git a/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoLayerDriverShrink.C b/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoLayerDriverShrink.C
index 35133f062d10f9ea37ef43f81c69058c334fa8be..58725470e1363a641c00da979c5b0c9f2c39887f 100644
--- a/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoLayerDriverShrink.C
+++ b/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoLayerDriverShrink.C
@@ -99,6 +99,76 @@ void Foam::autoLayerDriver::sumWeights
 
 
 // Smooth field on moving patch
+//void Foam::autoLayerDriver::smoothField
+//(
+//    const motionSmoother& meshMover,
+//    const PackedBoolList& isMasterEdge,
+//    const labelList& meshEdges,
+//    const scalarField& fieldMin,
+//    const label nSmoothDisp,
+//    scalarField& field
+//) const
+//{
+//    const indirectPrimitivePatch& pp = meshMover.patch();
+//    const edgeList& edges = pp.edges();
+//    const labelList& meshPoints = pp.meshPoints();
+//
+//    scalarField invSumWeight(pp.nPoints());
+//    sumWeights
+//    (
+//        isMasterEdge,
+//        meshEdges,
+//        meshPoints,
+//        edges,
+//        invSumWeight
+//    );
+//
+//    // Get smoothly varying patch field.
+//    Info<< "shrinkMeshDistance : Smoothing field ..." << endl;
+//
+//    for (label iter = 0; iter < nSmoothDisp; iter++)
+//    {
+//        scalarField average(pp.nPoints());
+//        averageNeighbours
+//        (
+//            meshMover.mesh(),
+//            isMasterEdge,
+//            meshEdges,
+//            meshPoints,
+//            pp.edges(),
+//            invSumWeight,
+//            field,
+//            average
+//        );
+//
+//        // Transfer to field
+//        forAll(field, pointI)
+//        {
+//            //full smoothing neighbours + point value
+//            average[pointI] = 0.5*(field[pointI]+average[pointI]);
+//
+//            // perform monotonic smoothing
+//            if
+//            (
+//                average[pointI] < field[pointI]
+//             && average[pointI] >= fieldMin[pointI]
+//            )
+//            {
+//                field[pointI] = average[pointI];
+//            }
+//        }
+//
+//        // Do residual calculation every so often.
+//        if ((iter % 10) == 0)
+//        {
+//            Info<< "    Iteration " << iter << "   residual "
+//                <<  gSum(mag(field-average))
+//                   /returnReduce(average.size(), sumOp<label>())
+//                << endl;
+//        }
+//    }
+//}
+//XXXXXXXXX
 void Foam::autoLayerDriver::smoothField
 (
     const motionSmoother& meshMover,
@@ -126,9 +196,15 @@ void Foam::autoLayerDriver::smoothField
     // Get smoothly varying patch field.
     Info<< "shrinkMeshDistance : Smoothing field ..." << endl;
 
-    for (label iter = 0; iter < nSmoothDisp; iter++)
+
+    const scalar lambda = 0.33;
+    const scalar mu = -0.34;
+
+    for (label iter = 0; iter < 90; iter++)
     {
         scalarField average(pp.nPoints());
+
+        // Calculate average of field
         averageNeighbours
         (
             meshMover.mesh(),
@@ -141,23 +217,37 @@ void Foam::autoLayerDriver::smoothField
             average
         );
 
-        // Transfer to field
-        forAll(field, pointI)
+        forAll(field, i)
         {
-            //full smoothing neighbours + point value
-            average[pointI] = 0.5*(field[pointI]+average[pointI]);
+            if (field[i] >= fieldMin[i])
+            {
+                field[i] = (1-lambda)*field[i]+lambda*average[i];
+            }
+        }
 
-            // perform monotonic smoothing
-            if
-            (
-                average[pointI] < field[pointI]
-             && average[pointI] >= fieldMin[pointI]
-            )
+
+        // Calculate average of field
+        averageNeighbours
+        (
+            meshMover.mesh(),
+            isMasterEdge,
+            meshEdges,
+            meshPoints,
+            pp.edges(),
+            invSumWeight,
+            field,
+            average
+        );
+
+        forAll(field, i)
+        {
+            if (field[i] >= fieldMin[i])
             {
-                field[pointI] = average[pointI];
+                field[i] = (1-mu)*field[i]+mu*average[i];
             }
         }
 
+
         // Do residual calculation every so often.
         if ((iter % 10) == 0)
         {
@@ -168,7 +258,7 @@ void Foam::autoLayerDriver::smoothField
         }
     }
 }
-
+//XXXXXXXXX
 
 // Smooth normals on moving patch.
 void Foam::autoLayerDriver::smoothPatchNormals
@@ -480,7 +570,6 @@ void Foam::autoLayerDriver::findIsolatedRegions
     const PackedBoolList& isMasterEdge,
     const labelList& meshEdges,
     const scalar minCosLayerTermination,
-    scalarField& field,
     List<extrudeMode>& extrudeStatus,
     pointField& patchDisp,
     labelList& patchNLayers
@@ -661,7 +750,6 @@ void Foam::autoLayerDriver::findIsolatedRegions
                         )
                     )
                     {
-                        field[f[fp]] = 0.0;
                         nPointCounter++;
                     }
                 }
@@ -670,7 +758,8 @@ void Foam::autoLayerDriver::findIsolatedRegions
     }
 
     reduce(nPointCounter, sumOp<label>());
-    Info<< "Number isolated points extrusion stopped : "<< nPointCounter<< endl;
+    Info<< "Number isolated points extrusion stopped : "<< nPointCounter
+        << endl;
 }
 
 
@@ -875,11 +964,14 @@ void Foam::autoLayerDriver::medialAxisSmoothingInfo
         forAll(patches, patchI)
         {
             const polyPatch& pp = patches[patchI];
+            //const pointPatchVectorField& pvf =
+            //    meshMover.displacement().boundaryField()[patchI];
 
             if
             (
                 !pp.coupled()
              && !isA<emptyPolyPatch>(pp)
+             //&&  pvf.constraintType() != word::null //exclude fixedValue
              && !adaptPatches.found(patchI)
             )
             {
@@ -1168,12 +1260,22 @@ void Foam::autoLayerDriver::shrinkMeshMedialDistance
         isMasterEdge,
         meshEdges,
         minCosLayerTermination,
-        thickness,
+
         extrudeStatus,
         patchDisp,
         patchNLayers
     );
 
+    // Update thickess for changed extrusion
+    forAll(thickness, patchPointI)
+    {
+        if (extrudeStatus[patchPointI] == NOEXTRUDE)
+        {
+            thickness[patchPointI] = 0.0;
+        }
+    }
+
+
     // smooth layer thickness on moving patch
     smoothField
     (
@@ -1182,6 +1284,7 @@ void Foam::autoLayerDriver::shrinkMeshMedialDistance
         meshEdges,
         minThickness,
         nSmoothThickness,
+
         thickness
     );
 
diff --git a/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoRefineDriver.C b/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoRefineDriver.C
index 1021e164322c848813cf96722168ecb05390cd76..d6002dc40f26b88755218702e8caca7609b4abd9 100644
--- a/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoRefineDriver.C
+++ b/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoRefineDriver.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -663,18 +663,11 @@ void Foam::autoRefineDriver::mergePatchFaces
     const dictionary& motionDict
 )
 {
-    const fvMesh& mesh = meshRefiner_.mesh();
-
     Info<< nl
         << "Merge refined boundary faces" << nl
         << "----------------------------" << nl
         << endl;
 
-    if (debug)
-    {
-        const_cast<Time&>(mesh.time())++;
-    }
-
     meshRefiner_.mergePatchFacesUndo
     (
         Foam::cos(degToRad(45.0)),
diff --git a/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoSnapDriver.C b/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoSnapDriver.C
index 41769eb9354c80712e0d67d4d23ca74a93523e2b..edbd6a04742889fd0930ebf80adaca5299355661 100644
--- a/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoSnapDriver.C
+++ b/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoSnapDriver.C
@@ -506,7 +506,7 @@ void Foam::autoSnapDriver::dumpMove
 )
 {
     // Dump direction of growth into file
-    Pout<< nl << "Dumping move direction to " << fName << endl;
+    Info<< "Dumping move direction to " << fName << endl;
 
     OFstream nearestStream(fName);
 
@@ -721,14 +721,14 @@ void Foam::autoSnapDriver::preSmoothPatch
     if (debug)
     {
         const_cast<Time&>(mesh.time())++;
-        Pout<< "Writing patch smoothed mesh to time "
+        Info<< "Writing patch smoothed mesh to time "
             << meshRefiner_.timeName() << '.' << endl;
         meshRefiner_.write
         (
             debug,
             mesh.time().path()/meshRefiner_.timeName()
         );
-        Pout<< "Dumped mesh in = "
+        Info<< "Dumped mesh in = "
             << mesh.time().cpuTimeIncrement() << " s\n" << nl << endl;
     }
 
@@ -998,7 +998,7 @@ void Foam::autoSnapDriver::smoothDisplacement
     if (debug)
     {
         const_cast<Time&>(mesh.time())++;
-        Pout<< "Writing smoothed mesh to time " << meshRefiner_.timeName()
+        Info<< "Writing smoothed mesh to time " << meshRefiner_.timeName()
             << endl;
 
         // Moving mesh creates meshPhi. Can be cleared out by a mesh.clearOut
@@ -1010,17 +1010,17 @@ void Foam::autoSnapDriver::smoothDisplacement
             debug,
             mesh.time().path()/meshRefiner_.timeName()
         );
-
-        Pout<< "Writing displacement field ..." << endl;
+        Info<< "Writing displacement field ..." << endl;
         disp.write();
         tmp<pointScalarField> magDisp(mag(disp));
         magDisp().write();
 
-        Pout<< "Writing actual patch displacement ..." << endl;
+        Info<< "Writing actual patch displacement ..." << endl;
         vectorField actualPatchDisp(disp, pp.meshPoints());
         dumpMove
         (
-            mesh.time().path()/"actualPatchDisplacement.obj",
+            mesh.time().path()
+          / "actualPatchDisplacement_" + meshRefiner_.timeName() + ".obj",
             pp.localPoints(),
             pp.localPoints() + actualPatchDisp
         );
@@ -1067,11 +1067,11 @@ bool Foam::autoSnapDriver::scaleMesh
         if (debug)
         {
             const_cast<Time&>(mesh.time())++;
-            Pout<< "Writing scaled mesh to time " << meshRefiner_.timeName()
+            Info<< "Writing scaled mesh to time " << meshRefiner_.timeName()
                 << endl;
             mesh.write();
 
-            Pout<< "Writing displacement field ..." << endl;
+            Info<< "Writing displacement field ..." << endl;
             meshMover.displacement().write();
             tmp<pointScalarField> magDisp(mag(meshMover.displacement()));
             magDisp().write();
@@ -1464,6 +1464,7 @@ void Foam::autoSnapDriver::doSnap
             {
                 disp = calcNearestSurfaceFeature
                 (
+                    snapParams,
                     iter,
                     featureCos,
                     scalar(iter+1)/nFeatIter,
@@ -1519,14 +1520,14 @@ void Foam::autoSnapDriver::doSnap
             if (debug)
             {
                 const_cast<Time&>(mesh.time())++;
-                Pout<< "Writing scaled mesh to time "
+                Info<< "Writing scaled mesh to time "
                     << meshRefiner_.timeName() << endl;
                 meshRefiner_.write
                 (
                     debug,
                     mesh.time().path()/meshRefiner_.timeName()
                 );
-                Pout<< "Writing displacement field ..." << endl;
+                Info<< "Writing displacement field ..." << endl;
                 meshMover.displacement().write();
                 tmp<pointScalarField> magDisp(mag(meshMover.displacement()));
                 magDisp().write();
@@ -1562,7 +1563,7 @@ void Foam::autoSnapDriver::doSnap
     if (nChanged > 0 && debug)
     {
         const_cast<Time&>(mesh.time())++;
-        Pout<< "Writing patchFace merged mesh to time "
+        Info<< "Writing patchFace merged mesh to time "
             << meshRefiner_.timeName() << endl;
         meshRefiner_.write
         (
diff --git a/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoSnapDriver.H b/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoSnapDriver.H
index 35d0822d2a8f7d9f8452162e761466f7dc33bf08..9431f9b7518df03eea49c22186c43adead0bba0d 100644
--- a/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoSnapDriver.H
+++ b/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoSnapDriver.H
@@ -111,17 +111,43 @@ class autoSnapDriver
 
             // Feature line snapping
 
+                //- Is point on two feature edges that make a largish angle?
+                bool isFeaturePoint
+                (
+                    const scalar featureCos,
+                    const indirectPrimitivePatch& pp,
+                    const PackedBoolList& isFeatureEdge,
+                    const label pointI
+                ) const;
+
                 void smoothAndConstrain
                 (
                     const indirectPrimitivePatch& pp,
                     const List<pointConstraint>& constraints,
                     vectorField& disp
                 ) const;
-                //void calcNearest
+                void smoothAndConstrain2
+                (
+                    const bool applyConstraints,
+                    const indirectPrimitivePatch& pp,
+                    const List<pointConstraint>& constraints,
+                    vectorField& disp
+                ) const;
+                void calcNearest
+                (
+                    const label iter,
+                    const indirectPrimitivePatch& pp,
+                    vectorField& pointDisp,
+                    vectorField& pointSurfaceNormal,
+                    vectorField& pointRotation
+                ) const;
+                //void calcNearestFace
                 //(
-                //    const pointField& points,
-                //    vectorField& disp,
-                //    vectorField& surfaceNormal
+                //    const label iter,
+                //    const indirectPrimitivePatch& pp,
+                //    vectorField& faceDisp,
+                //    vectorField& faceSurfaceNormal,
+                //    vectorField& faceRotation
                 //) const;
                 void calcNearestFace
                 (
@@ -129,19 +155,18 @@ class autoSnapDriver
                     const indirectPrimitivePatch& pp,
                     vectorField& faceDisp,
                     vectorField& faceSurfaceNormal,
+                    labelList& faceSurfaceRegion,
                     vectorField& faceRotation
                 ) const;
                 void interpolateFaceToPoint
                 (
                     const label iter,
                     const indirectPrimitivePatch& pp,
-                    const vectorField& faceSurfaceNormal,
-
-                    const vectorField& faceDisp,
-                    const vectorField& faceRotation,
-
-                    vectorField& patchDisp,
-                    vectorField& patchRotationDisp
+                    const List<List<point> >& pointFaceDisp,
+                    const List<List<point> >& pointFaceRotation,
+                    const List<List<point> >& pointFaceCentres,
+                    vectorField& patchDisp
+                    //vectorField& patchRotationDisp
                 ) const;
                 void correctAttraction
                 (
@@ -152,6 +177,14 @@ class autoSnapDriver
                     const point& pt,
                     vector& edgeOffset  // offset from pt to point on edge
                 ) const;
+
+                //- Return hit if on multiple points
+                pointIndexHit findMultiPatchPoint
+                (
+                    const point& pt,
+                    const labelList& patchIDs,
+                    const List<point>& faceCentres
+                ) const;
                 void binFeatureFace
                 (
                     const label iter,
@@ -186,6 +219,25 @@ class autoSnapDriver
                     DynamicList<label>& surfaceCount
                 ) const;
 
+
+                void featureAttractionUsingReconstruction
+                (
+                    const label iter,
+                    const scalar featureCos,
+
+                    const indirectPrimitivePatch& pp,
+                    const scalarField& snapDist,
+                    const label pointI,
+
+                    const List<List<point> >& pointFaceSurfNormals,
+                    const List<List<point> >& pointFaceDisp,
+                    const List<List<point> >& pointFaceCentres,
+                    const labelListList& pointFacePatchID,
+
+                    vector& patchAttraction,
+                    pointConstraint& patchConstraint
+                ) const;
+
                 void featureAttractionUsingReconstruction
                 (
                     const label iter,
@@ -196,12 +248,13 @@ class autoSnapDriver
                     const List<List<point> >& pointFaceNormals,
                     const List<List<point> >& pointFaceDisp,
                     const List<List<point> >& pointFaceCentres,
+                    const labelListList& pointFacePatchID,
 
                     vectorField& patchAttraction,
                     List<pointConstraint>& patchConstraints
                 ) const;
 
-                void determineAllFeatures
+                void determineFeatures
                 (
                     const label iter,
                     const scalar featureCos,
@@ -212,6 +265,7 @@ class autoSnapDriver
                     const List<List<point> >& pointFaceNormals,
                     const List<List<point> >& pointFaceDisp,
                     const List<List<point> >& pointFaceCentres,
+                    const labelListList& pointFacePatchID,
 
                     List<labelList>& pointAttractor,
                     List<List<pointConstraint> >& pointConstraints,
@@ -221,23 +275,44 @@ class autoSnapDriver
                     vectorField& patchAttraction,
                     List<pointConstraint>& patchConstraints
                 ) const;
-                void determineFeatures
+
+                //- Find point on nearest feature edge (within searchDist).
+                //  Return point and feature
+                //  and store feature-edge to mesh-point and vice versa
+                pointIndexHit findNearFeatureEdge
                 (
-                    const label iter,
-                    const scalar featureCos,
+                    const indirectPrimitivePatch& pp,
+                    const scalarField& snapDist,
+                    const label pointI,
+                    const point& estimatedPt,
 
-                    const indirectPrimitivePatch&,
-                    const scalarField&,
+                    label& featI,
+                    List<List<DynamicList<point> > >&,
+                    List<List<DynamicList<pointConstraint> > >&,
+                    vectorField&,
+                    List<pointConstraint>&
+                ) const;
 
-                    const List<List<point> >& pointFaceNormals,
-                    const List<List<point> >& pointFaceDisp,
-                    const List<List<point> >& pointFaceCentres,
+                //- Find nearest feature point (within searchDist).
+                //  Return feature point
+                //  and store feature-point to mesh-point and vice versa.
+                //  If another mesh point already referring to this feature
+                //  point and further away, reset that one to a near feature
+                //  edge (using findNearFeatureEdge above)
+                labelPair findNearFeaturePoint
+                (
+                    const indirectPrimitivePatch& pp,
+                    const scalarField& snapDist,
+                    const label pointI,
+                    const point& estimatedPt,
 
+                    // Feature-point to pp point
                     List<labelList>& pointAttractor,
                     List<List<pointConstraint> >& pointConstraints,
                     // Feature-edge to pp point
                     List<List<DynamicList<point> > >& edgeAttractors,
                     List<List<DynamicList<pointConstraint> > >& edgeConstraints,
+                    // pp point to nearest feature
                     vectorField& patchAttraction,
                     List<pointConstraint>& patchConstraints
                 ) const;
@@ -270,6 +345,7 @@ class autoSnapDriver
 
                 vectorField calcNearestSurfaceFeature
                 (
+                    const snapParameters& snapParams,
                     const label iter,
                     const scalar featureCos,
                     const scalar featureAttract,
@@ -342,7 +418,6 @@ public:
                 motionSmoother& meshMover
             ) const;
 
-
             //- Smooth the displacement field to the internal.
             void smoothDisplacement
             (
diff --git a/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoSnapDriverFeature.C b/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoSnapDriverFeature.C
index 950849e15ecf080e954f95aa5df36046c8d619af..88ec55b1c8b452ce9f2cb3cb25ac272f72101cf3 100644
--- a/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoSnapDriverFeature.C
+++ b/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoSnapDriverFeature.C
@@ -37,6 +37,7 @@ License
 #include "featureEdgeMesh.H"
 #include "treeDataPoint.H"
 #include "indexedOctree.H"
+#include "snapParameters.H"
 
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
@@ -95,6 +96,67 @@ namespace Foam
 
 // * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
 
+bool Foam::autoSnapDriver::isFeaturePoint
+(
+    const scalar featureCos,
+    const indirectPrimitivePatch& pp,
+    const PackedBoolList& isFeatureEdge,
+    const label pointI
+) const
+{
+    const pointField& points = pp.localPoints();
+    const edgeList& edges = pp.edges();
+    const labelList& pEdges = pp.pointEdges()[pointI];
+
+    label nFeatEdges = 0;
+
+    forAll(pEdges, i)
+    {
+        if (isFeatureEdge[pEdges[i]])
+        {
+            nFeatEdges++;
+
+            for (label j = i+1; j < pEdges.size(); j++)
+            {
+                if (isFeatureEdge[pEdges[j]])
+                {
+                    const edge& eI = edges[pEdges[i]];
+                    const edge& eJ = edges[pEdges[j]];
+
+                    const point& p = points[pointI];
+                    const point& pI = points[eI.otherVertex(pointI)];
+                    const point& pJ = points[eJ.otherVertex(pointI)];
+
+                    vector vI = p-pI;
+                    scalar vIMag = mag(vI);
+
+                    vector vJ = pJ-p;
+                    scalar vJMag = mag(vJ);
+
+                    if
+                    (
+                        vIMag > SMALL
+                     && vJMag > SMALL
+                     && ((vI/vIMag & vJ/vJMag) < featureCos)
+                    )
+                    {
+                        return true;
+                    }
+                }
+            }
+        }
+    }
+
+    if (nFeatEdges == 1)
+    {
+        // End of feature-edge string
+        return true;
+    }
+
+    return false;
+}
+
+
 void Foam::autoSnapDriver::smoothAndConstrain
 (
     const indirectPrimitivePatch& pp,
@@ -102,12 +164,100 @@ void Foam::autoSnapDriver::smoothAndConstrain
     vectorField& disp
 ) const
 {
+    const fvMesh& mesh = meshRefiner_.mesh();
+
     for (label avgIter = 0; avgIter < 20; avgIter++)
     {
         // Calculate average displacement of neighbours
-        vectorField dispAvg(pp.nPoints(), vector::zero);
+        // - unconstrained (i.e. surface) points use average of all
+        //   neighbouring points
+        // - from testing it has been observed that it is not beneficial
+        //   to have edge constrained points use average of all edge or point
+        //   constrained neighbours since they're already attracted to
+        //   the nearest point on the feature.
+        //   Having them attract to point-constrained neighbours does not
+        //   make sense either since there is usually just one of them so
+        //   it severely distorts it.
+        // - same for feature points. They are already attracted to the
+        //   nearest feature point.
+
+        vectorField dispSum(pp.nPoints(), vector::zero);
+        labelList dispCount(pp.nPoints(), 0);
+
+        const labelListList& pointEdges = pp.pointEdges();
+        const edgeList& edges = pp.edges();
+
+        forAll(pointEdges, pointI)
+        {
+            const labelList& pEdges = pointEdges[pointI];
+
+            label nConstraints = constraints[pointI].first();
+
+            if (nConstraints <= 1)
+            {
+                forAll(pEdges, i)
+                {
+                    label nbrPointI = edges[pEdges[i]].otherVertex(pointI);
+                    if (constraints[nbrPointI].first() >= nConstraints)
+                    {
+                        dispSum[pointI] += disp[nbrPointI];
+                        dispCount[pointI]++;
+                    }
+                }
+            }
+        }
+
+        syncTools::syncPointList
+        (
+            mesh,
+            pp.meshPoints(),
+            dispSum,
+            plusEqOp<point>(),
+            vector::zero,
+            mapDistribute::transform()
+        );
+        syncTools::syncPointList
+        (
+            mesh,
+            pp.meshPoints(),
+            dispCount,
+            plusEqOp<label>(),
+            0,
+            mapDistribute::transform()
+        );
+
+        // Constraints
+        forAll(constraints, pointI)
+        {
+            if (dispCount[pointI] > 0)
+            {
+                // Mix my displacement with neighbours' displacement
+                disp[pointI] =
+                    0.5
+                   *(disp[pointI] + dispSum[pointI]/dispCount[pointI]);
+            }
+        }
+    }
+}
+//XXXXXX
+//TODO: make proper parallel so coupled edges don't have double influence
+void Foam::autoSnapDriver::smoothAndConstrain2
+(
+    const bool applyConstraints,
+    const indirectPrimitivePatch& pp,
+    const List<pointConstraint>& constraints,
+    vectorField& disp
+) const
+{
+    const fvMesh& mesh = meshRefiner_.mesh();
+
+    for (label avgIter = 0; avgIter < 20; avgIter++)
+    {
+        vectorField dispSum(pp.nPoints(), vector::zero);
+        labelList dispCount(pp.nPoints(), 0);
 
         const labelListList& pointEdges = pp.pointEdges();
+        const edgeList& edges = pp.edges();
 
         forAll(pointEdges, pointI)
         {
@@ -115,24 +265,54 @@ void Foam::autoSnapDriver::smoothAndConstrain
 
             forAll(pEdges, i)
             {
-                const edge& e = pp.edges()[pEdges[i]];
-                label nbrPointI = e.otherVertex(pointI);
-                dispAvg[pointI] += disp[nbrPointI];
+                label nbrPointI = edges[pEdges[i]].otherVertex(pointI);
+                dispSum[pointI] += disp[nbrPointI];
+                dispCount[pointI]++;
             }
-            dispAvg[pointI] /= pEdges.size();
         }
 
+        syncTools::syncPointList
+        (
+            mesh,
+            pp.meshPoints(),
+            dispSum,
+            plusEqOp<point>(),
+            vector::zero,
+            mapDistribute::transform()
+        );
+        syncTools::syncPointList
+        (
+            mesh,
+            pp.meshPoints(),
+            dispCount,
+            plusEqOp<label>(),
+            0,
+            mapDistribute::transform()
+        );
+
         // Constraints
         forAll(constraints, pointI)
         {
-            if (constraints[pointI].first() == 0)
+            if (dispCount[pointI] > 0)// && constraints[pointI].first() <= 1)
             {
                 // Mix my displacement with neighbours' displacement
-                disp[pointI] = 0.5*disp[pointI] + 0.5*dispAvg[pointI];
+                disp[pointI] =
+                    0.5
+                   *(disp[pointI] + dispSum[pointI]/dispCount[pointI]);
+
+                if (applyConstraints)
+                {
+                    disp[pointI] = transform
+                    (
+                        constraints[pointI].constraintTransformation(),
+                        disp[pointI]
+                    );
+                }
             }
         }
     }
 }
+//XXXXXX
 
 
 void Foam::autoSnapDriver::calcNearestFace
@@ -141,6 +321,7 @@ void Foam::autoSnapDriver::calcNearestFace
     const indirectPrimitivePatch& pp,
     vectorField& faceDisp,
     vectorField& faceSurfaceNormal,
+    labelList& faceSurfaceRegion,
     vectorField& faceRotation
 ) const
 {
@@ -152,6 +333,8 @@ void Foam::autoSnapDriver::calcNearestFace
     faceDisp = vector::zero;
     faceSurfaceNormal.setSize(pp.size());
     faceSurfaceNormal = vector::zero;
+    faceSurfaceRegion.setSize(pp.size());
+    faceSurfaceRegion = -1;
 
     // Divide surfaces into zoned and unzoned
     labelList zonedSurfaces = surfaces.getNamedSurfaces();
@@ -236,6 +419,11 @@ void Foam::autoSnapDriver::calcNearestFace
                 label faceI = ppFaces[hitI];
                 faceDisp[faceI] = hitInfo[hitI].hitPoint() - fc[hitI];
                 faceSurfaceNormal[faceI] = hitNormal[hitI];
+                faceSurfaceRegion[faceI] = surfaces.globalRegion
+                (
+                    hitSurface[hitI],
+                    hitRegion[hitI]
+                );
             }
         }
     }
@@ -255,8 +443,8 @@ void Foam::autoSnapDriver::calcNearestFace
             meshFaces.append(pp.addressing()[i]);
         }
     }
-    //Pout<< "Found " << ppFaces.size() << " unzoned faces out of " << pp.size()
-    //    << endl;
+    //Pout<< "Found " << ppFaces.size() << " unzoned faces out of "
+    //   << pp.size() << endl;
 
     pointField fc
     (
@@ -289,6 +477,7 @@ void Foam::autoSnapDriver::calcNearestFace
             label faceI = ppFaces[hitI];
             faceDisp[faceI] = hitInfo[hitI].hitPoint() - fc[hitI];
             faceSurfaceNormal[faceI] = hitNormal[hitI];
+            faceSurfaceRegion[faceI] = hitRegion[hitI];
         }
     }
 
@@ -305,7 +494,7 @@ void Foam::autoSnapDriver::calcNearestFace
         // Note: extend to >180 degrees checking
         faceRotation[faceI] =
             pp.faceNormals()[faceI]
-          ^ -faceSurfaceNormal[faceI];
+          ^ faceSurfaceNormal[faceI];
     }
 
     if (debug&meshRefinement::OBJINTERSECTIONS)
@@ -369,6 +558,79 @@ void Foam::autoSnapDriver::correctAttraction
 }
 
 
+Foam::pointIndexHit Foam::autoSnapDriver::findMultiPatchPoint
+(
+    const point& pt,
+    const labelList& patchIDs,
+    const List<point>& faceCentres
+) const
+{
+    // Determine if multiple patchIDs
+    if (patchIDs.size())
+    {
+        label patch0 = patchIDs[0];
+
+        for (label i = 1; i < patchIDs.size(); i++)
+        {
+            if (patchIDs[i] != patch0)
+            {
+                return pointIndexHit(true, pt, labelMax);
+            }
+        }
+    }
+    return pointIndexHit(false, vector::zero, labelMax);
+}
+////XXXXXXXX
+//void Foam::autoSnapDriver::attractMultiPatchPoint
+//(
+//    const label iter,
+//    const scalar featureCos,
+//
+//    const indirectPrimitivePatch& pp,
+//    const scalarField& snapDist,
+//    const label pointI,
+//
+//    const List<List<point> >& pointFaceSurfNormals,
+//    const labelListList& pointFaceSurfaceRegion,
+//    const List<List<point> >& pointFaceDisp,
+//    const List<List<point> >& pointFaceCentres,
+//    const labelListList& pointFacePatchID,
+//
+//    vector& patchAttraction,
+//    pointConstraint& patchConstraint
+//) const
+//{
+//    // Collect
+//
+//        );
+//
+//        if
+//        (
+//            (constraint.first() > patchConstraints[pointI].first())
+//         || (magSqr(attraction) < magSqr(patchAttraction[pointI]))
+//        )
+//        {
+//            patchAttraction[pointI] = attraction;
+//            patchConstraints[pointI] = constraint;
+//
+//            // Check the number of directions
+//            if (patchConstraints[pointI].first() == 1)
+//            {
+//                // Flat surface. Check for different patchIDs
+//                pointIndexHit multiPatchPt
+//                (
+//                    findMultiPatchPoint
+//                    (
+//                        pt,
+//                        pointFacePatchID[pointI],
+//                        pointFaceCentres[pointI]
+//                    )
+//                );
+//                if (multiPatchPt.hit())
+//                {
+//                    // Behave like when having two surface normals so
+////XXXXXXXX
+
 void Foam::autoSnapDriver::binFeatureFace
 (
     const label iter,
@@ -452,10 +714,6 @@ void Foam::autoSnapDriver::binFeatureFace
                     if (mag(p012-p013) > 0.0001)    //TBD
                     {
                         // Different feature point
-                        //Pout<< "** differing feature point :" << p012
-                        //    << " and " << p013 << endl;
-                        // Mark point as illegal (for now by setting size
-                        // to 4)
                         surfacePoints.append(pt);
                         surfaceNormals.append(faceSurfaceNormal);
                         surfaceCount.append(1);
@@ -464,15 +722,6 @@ void Foam::autoSnapDriver::binFeatureFace
             }
         }
     }
-    //else
-    //{
-    //    Pout<< "binFeatureFace : for point:" << pp.localPoints()[pointI]
-    //        << " found face-nearest point:"
-    //        << fc + faceDisp
-    //        << " at distance:" << mag(faceDisp)
-    //        << " further away than:" << snapDist
-    //        << endl;
-    //}
 }
 
 
@@ -523,6 +772,131 @@ void Foam::autoSnapDriver::binFeatureFaces
 }
 
 
+void Foam::autoSnapDriver::featureAttractionUsingReconstruction
+(
+    const label iter,
+    const scalar featureCos,
+
+    const indirectPrimitivePatch& pp,
+    const scalarField& snapDist,
+    const label pointI,
+
+    const List<List<point> >& pointFaceSurfNormals,
+    const List<List<point> >& pointFaceDisp,
+    const List<List<point> >& pointFaceCentres,
+    const labelListList& pointFacePatchID,
+
+    vector& patchAttraction,
+    pointConstraint& patchConstraint
+) const
+{
+    patchAttraction = vector::zero;
+    patchConstraint = pointConstraint();
+
+    // Collect all different directions
+    DynamicList<point> surfacePoints(4);
+    DynamicList<vector> surfaceNormals(4);
+    DynamicList<label> surfaceCount(4);
+
+    binFeatureFaces
+    (
+        iter,
+        featureCos,
+
+        pp,
+        snapDist,
+        pointI,
+
+        pointFaceSurfNormals,
+        pointFaceDisp,
+        pointFaceCentres,
+
+        surfacePoints,
+        surfaceNormals,
+        surfaceCount
+    );
+
+    const point& pt = pp.localPoints()[pointI];
+
+    // Check the number of directions
+    if (surfaceNormals.size() == 1)
+    {
+        // Normal distance to plane
+        vector d =
+            ((surfacePoints[0]-pt) & surfaceNormals[0])
+           *surfaceNormals[0];
+
+        // Trim to snap distance
+        if (magSqr(d) > sqr(snapDist[pointI]))
+        {
+            d *= Foam::sqrt(sqr(snapDist[pointI])/magSqr(d));
+        }
+
+        patchAttraction = d;
+
+        // Store constraints
+        patchConstraint.applyConstraint(surfaceNormals[0]);
+    }
+    else if (surfaceNormals.size() == 2)
+    {
+        plane pl0(surfacePoints[0], surfaceNormals[0]);
+        plane pl1(surfacePoints[1], surfaceNormals[1]);
+        plane::ray r(pl0.planeIntersect(pl1));
+        vector n = r.dir() / mag(r.dir());
+
+        // Get nearest point on infinite ray
+        vector d = r.refPoint()-pt;
+        d -= (d&n)*n;
+
+        // Correct for attraction to non-dominant face
+        correctAttraction
+        (
+            surfacePoints,
+            surfaceCount,
+            r.refPoint(),
+            n,                  // normalised normal
+            pt,
+
+            d                   // perpendicular offset vector
+        );
+
+        // Trim to snap distance
+        if (magSqr(d) > sqr(snapDist[pointI]))
+        {
+            d *= Foam::sqrt(sqr(snapDist[pointI])/magSqr(d));
+        }
+
+        patchAttraction = d;
+
+        // Store constraints
+        patchConstraint.applyConstraint(surfaceNormals[0]);
+        patchConstraint.applyConstraint(surfaceNormals[1]);
+    }
+    else if (surfaceNormals.size() == 3)
+    {
+        // Calculate point from the faces.
+        plane pl0(surfacePoints[0], surfaceNormals[0]);
+        plane pl1(surfacePoints[1], surfaceNormals[1]);
+        plane pl2(surfacePoints[2], surfaceNormals[2]);
+        point cornerPt(pl0.planePlaneIntersect(pl1, pl2));
+        vector d = cornerPt - pt;
+
+        // Trim to snap distance
+        if (magSqr(d) > sqr(snapDist[pointI]))
+        {
+            d *= Foam::sqrt(sqr(snapDist[pointI])/magSqr(d));
+        }
+
+        patchAttraction = d;
+
+        // Store constraints
+        patchConstraint.applyConstraint(surfaceNormals[0]);
+        patchConstraint.applyConstraint(surfaceNormals[1]);
+        patchConstraint.applyConstraint(surfaceNormals[2]);
+    }
+}
+
+
 // Special version that calculates attraction in one go
 void Foam::autoSnapDriver::featureAttractionUsingReconstruction
 (
@@ -535,54 +909,49 @@ void Foam::autoSnapDriver::featureAttractionUsingReconstruction
     const List<List<point> >& pointFaceSurfNormals,
     const List<List<point> >& pointFaceDisp,
     const List<List<point> >& pointFaceCentres,
+    const labelListList& pointFacePatchID,
 
     vectorField& patchAttraction,
     List<pointConstraint>& patchConstraints
 ) const
 {
-    autoPtr<OFstream> featureEdgeStr;
-    label featureEdgeVertI = 0;
-    autoPtr<OFstream> featurePointStr;
-    label featurePointVertI = 0;
+    autoPtr<OFstream> feStr;
+    label feVertI = 0;
+    autoPtr<OFstream> fpStr;
+    label fpVertI = 0;
 
     if (debug&meshRefinement::OBJINTERSECTIONS)
     {
-        featureEdgeStr.reset
+        feStr.reset
         (
             new OFstream
             (
                 meshRefiner_.mesh().time().path()
-              / "featureEdge_" + name(iter) + ".obj"
+              / "implicitFeatureEdge_" + name(iter) + ".obj"
             )
         );
-        Pout<< nl << "Dumping feature-edge direction to "
-            << featureEdgeStr().name() << endl;
+        Pout<< "Dumping implicit feature-edge direction to "
+            << feStr().name() << endl;
 
-        featurePointStr.reset
+        fpStr.reset
         (
             new OFstream
             (
                 meshRefiner_.mesh().time().path()
-              / "featurePoint_" + name(iter) + ".obj"
+              / "implicitFeaturePoint_" + name(iter) + ".obj"
             )
         );
-        Pout<< nl << "Dumping feature-point direction to "
-            << featurePointStr().name() << endl;
+        Pout<< "Dumping implicit feature-point direction to "
+            << fpStr().name() << endl;
     }
 
 
-    // For points on multiple normals calculate intersection
-    patchAttraction.setSize(pp.nPoints());
-    patchAttraction = vector::zero;
-
     forAll(pp.localPoints(), pointI)
     {
-        // Collect all different directions
-        DynamicList<point> surfacePoints;
-        DynamicList<vector> surfaceNormals;
-        DynamicList<label> surfaceCount;
+        vector attraction = vector::zero;
+        pointConstraint constraint;
 
-        binFeatureFaces
+        featureAttractionUsingReconstruction
         (
             iter,
             featureCos,
@@ -594,137 +963,104 @@ void Foam::autoSnapDriver::featureAttractionUsingReconstruction
             pointFaceSurfNormals,
             pointFaceDisp,
             pointFaceCentres,
+            pointFacePatchID,
 
-            surfacePoints,
-            surfaceNormals,
-            surfaceCount
+            attraction,
+            constraint
         );
 
-        const point& pt = pp.localPoints()[pointI];
-
-        // Check the number of directions
-        if (surfaceNormals.size() == 2)
+        if
+        (
+            (constraint.first() > patchConstraints[pointI].first())
+         || (magSqr(attraction) < magSqr(patchAttraction[pointI]))
+        )
         {
-            plane pl0(surfacePoints[0], surfaceNormals[0]);
-            plane pl1(surfacePoints[1], surfaceNormals[1]);
-            plane::ray r(pl0.planeIntersect(pl1));
-            vector n = r.dir() / mag(r.dir());
-
-            // Get nearest point on infinite ray
-            vector d = r.refPoint()-pt;
-            d -= (d&n)*n;
-
-            // Correct for attraction to non-dominant face
-            correctAttraction
-            (
-                surfacePoints,
-                surfaceCount,
-                r.refPoint(),
-                n,                  // normalised normal
-                pt,
+            patchAttraction[pointI] = attraction;
+            patchConstraints[pointI] = constraint;
 
-                d                   // perpendicular offset vector
-            );
+            const point& pt = pp.localPoints()[pointI];
 
-            // Trim to snap distance
-            if (magSqr(d) > sqr(snapDist[pointI]))
+            if (patchConstraints[pointI].first() == 2 && feStr.valid())
             {
-                d *= Foam::sqrt(sqr(snapDist[pointI])/magSqr(d));
+                meshTools::writeOBJ(feStr(), pt);
+                feVertI++;
+                meshTools::writeOBJ(feStr(), pt+patchAttraction[pointI]);
+                feVertI++;
+                feStr() << "l " << feVertI-1 << ' ' << feVertI << nl;
             }
-
-            patchAttraction[pointI] = d;
-
-            // Store constraints
-            patchConstraints[pointI].applyConstraint(surfaceNormals[0]);
-            patchConstraints[pointI].applyConstraint(surfaceNormals[1]);
-
-
-            // Dump vector from point to points on faces
-            if (featureEdgeStr.valid())
+            else if (patchConstraints[pointI].first() == 3 && fpStr.valid())
             {
-                meshTools::writeOBJ(featureEdgeStr(), pt);
-                featureEdgeVertI++;
-                meshTools::writeOBJ(featureEdgeStr(), surfacePoints[0]);
-                featureEdgeVertI++;
-                meshTools::writeOBJ(featureEdgeStr(), surfacePoints[1]);
-                featureEdgeVertI++;
-                featureEdgeStr()
-                    << "l " << featureEdgeVertI-2 << ' '
-                    << featureEdgeVertI-1 << nl
-                    << "l " << featureEdgeVertI-2 << ' '
-                    << featureEdgeVertI << nl;
+                meshTools::writeOBJ(fpStr(), pt);
+                fpVertI++;
+                meshTools::writeOBJ(fpStr(), pt+patchAttraction[pointI]);
+                fpVertI++;
+                fpStr() << "l " << fpVertI-1 << ' ' << fpVertI << nl;
             }
         }
-        else if (surfaceNormals.size() == 3)
-        {
-            // Calculate point from the faces.
-            plane pl0(surfacePoints[0], surfaceNormals[0]);
-            plane pl1(surfacePoints[1], surfaceNormals[1]);
-            plane pl2(surfacePoints[2], surfaceNormals[2]);
-            point cornerPt(pl0.planePlaneIntersect(pl1, pl2));
+    }
+}
 
-            vector d = cornerPt - pt;
 
-            if (magSqr(d) > sqr(snapDist[pointI]))
-            {
-                d *= Foam::sqrt(sqr(snapDist[pointI])/magSqr(d));
-            }
+Foam::pointIndexHit Foam::autoSnapDriver::findNearFeatureEdge
+(
+    const indirectPrimitivePatch& pp,
+    const scalarField& snapDist,
+    const label pointI,
+    const point& estimatedPt,
 
-            patchAttraction[pointI] = d;
+    label& featI,
+    List<List<DynamicList<point> > >& edgeAttractors,
+    List<List<DynamicList<pointConstraint> > >& edgeConstraints,
+    vectorField& patchAttraction,
+    List<pointConstraint>& patchConstraints
+) const
+{
+    const refinementFeatures& features = meshRefiner_.features();
 
-            // Store constraints
-            patchConstraints[pointI].applyConstraint(surfaceNormals[0]);
-            patchConstraints[pointI].applyConstraint(surfaceNormals[1]);
-            patchConstraints[pointI].applyConstraint(surfaceNormals[2]);
+    labelList nearEdgeFeat;
+    List<pointIndexHit> nearEdgeInfo;
+    features.findNearestEdge
+    (
+        pointField(1, estimatedPt),
+        scalarField(1, sqr(snapDist[pointI])),
+        nearEdgeFeat,
+        nearEdgeInfo
+    );
 
-            // Dump vector from point to points on faces
-            if (featurePointStr.valid())
-            {
-                meshTools::writeOBJ(featurePointStr(), pt);
-                featurePointVertI++;
-                meshTools::writeOBJ(featurePointStr(), surfacePoints[0]);
-                featurePointVertI++;
-                meshTools::writeOBJ(featurePointStr(), surfacePoints[1]);
-                featurePointVertI++;
-                meshTools::writeOBJ(featurePointStr(), surfacePoints[2]);
-                featurePointVertI++;
-                featurePointStr()
-                    << "l " << featurePointVertI-3 << ' '
-                    << featurePointVertI-2 << nl
-                    << "l " << featurePointVertI-3 << ' '
-                    << featurePointVertI-1 << nl
-                    << "l " << featurePointVertI-3 << ' '
-                    << featurePointVertI << nl;
-            }
-        }
-    }
+    const pointIndexHit& nearInfo = nearEdgeInfo[0];
+    featI = nearEdgeFeat[0];
 
-    if (debug&meshRefinement::OBJINTERSECTIONS)
+    if (nearInfo.hit())
     {
-        dumpMove
+        // So we have a point on the feature edge. Use this
+        // instead of our estimate from planes.
+        edgeAttractors[featI][nearInfo.index()].append
         (
-            meshRefiner_.mesh().time().path()
-          / "patchAttraction_" + name(iter) + ".obj",
-            pp.localPoints(),
-            pp.localPoints() + patchAttraction
+            nearInfo.hitPoint()
         );
+        pointConstraint c;
+        const edge e = features[featI].edges()[nearInfo.index()];
+        vector eVec = e.vec(features[featI].points());
+        eVec /= mag(eVec)+VSMALL;
+        c.first() = 2;
+        c.second() = eVec;
+        edgeConstraints[featI][nearInfo.index()].append(c);
+
+        // Store for later use
+        patchAttraction[pointI] =
+            nearInfo.hitPoint()-pp.localPoints()[pointI];
+        patchConstraints[pointI] = c;
     }
+    return nearInfo;
 }
-
-
-// Finds nearest feature (within snapDist) for all points of pp.
-void Foam::autoSnapDriver::determineAllFeatures
+Foam::labelPair Foam::autoSnapDriver::findNearFeaturePoint
 (
-    const label iter,
-    const scalar featureCos,
-
     const indirectPrimitivePatch& pp,
     const scalarField& snapDist,
+    const label pointI,
+    const point& estimatedPt,
 
-    const List<List<point> >& pointFaceSurfNormals,
-    const List<List<point> >& pointFaceDisp,
-    const List<List<point> >& pointFaceCentres,
-
+    // Feature-point to pp point
     List<labelList>& pointAttractor,
     List<List<pointConstraint> >& pointConstraints,
     // Feature-edge to pp point
@@ -735,134 +1071,94 @@ void Foam::autoSnapDriver::determineAllFeatures
     List<pointConstraint>& patchConstraints
 ) const
 {
-    autoPtr<OFstream> featureEdgeStr;
-    label featureEdgeVertI = 0;
-    autoPtr<OFstream> featurePointStr;
-    label featurePointVertI = 0;
-
-    if (debug&meshRefinement::OBJINTERSECTIONS)
-    {
-        featureEdgeStr.reset
-        (
-            new OFstream
-            (
-                meshRefiner_.mesh().time().path()
-              / "featureEdge_" + name(iter) + ".obj"
-            )
-        );
-        Pout<< nl << "Dumping feature-edge direction to "
-            << featureEdgeStr().name() << endl;
-
-        featurePointStr.reset
-        (
-            new OFstream
-            (
-                meshRefiner_.mesh().time().path()
-              / "featurePoint_" + name(iter) + ".obj"
-            )
-        );
-        Pout<< nl << "Dumping feature-point direction to "
-            << featurePointStr().name() << endl;
-    }
-
     const refinementFeatures& features = meshRefiner_.features();
 
-    // Look at near feature edges
-    labelList nearEdgeFeat;
-    List<pointIndexHit> nearEdgeInfo;
-
-    labelList nearPointFeat;
-    labelList nearPointIndex;
-    {
-        scalarField snapDistSqr(sqr(snapDist));
-        features.findNearestEdge
-        (
-            pp.localPoints(),
-            snapDistSqr,
-            nearEdgeFeat,
-            nearEdgeInfo
-        );
+    labelList nearFeat;
+    labelList nearIndex;
+    features.findNearestPoint
+    (
+        pointField(1, estimatedPt),
+        scalarField(1, sqr(snapDist[pointI])),
+        nearFeat,
+        nearIndex
+    );
 
-        // Look at near feature points
-        features.findNearestPoint
-        (
-            pp.localPoints(),
-            snapDistSqr,
-            nearPointFeat,
-            nearPointIndex
-        );
-    }
+    label featI = nearFeat[0];
+    label featPointI = -1;
 
-    forAll(pp.localPoints(), pointI)
+    if (featI != -1)
     {
         const point& pt = pp.localPoints()[pointI];
-        const label featI = nearEdgeFeat[pointI];
-        const pointIndexHit& nearEdge = nearEdgeInfo[pointI];
 
-        // Mark point on the nearest feature edge.
-        if (nearEdge.hit())
-        {
-            // So we have a point on the feature edge. Use this instead
-            // of our estimate from planes.
-
-            label featEdgeI = nearEdge.index();
-            edgeAttractors[featI][featEdgeI].append(nearEdge.hitPoint());
-            const featureEdgeMesh& eMesh = features[nearEdgeFeat[pointI]];
-            const edge& e = eMesh.edges()[featEdgeI];
-            vector eVec = e.vec(eMesh.points());
-            eVec /= mag(eVec);
-            pointConstraint c;
-            c.first() = 2;
-            c.second() = eVec;
-            edgeConstraints[featI][featEdgeI].append(c);
+        const treeDataPoint& shapes =
+            features.pointTrees()[featI].shapes();
+        featPointI = shapes.pointLabels()[nearIndex[0]];
+        const point& featPt = shapes.points()[featPointI];
+        scalar distSqr = magSqr(featPt-pt);
 
-            // Store for later use
-            patchAttraction[pointI] = nearEdge.hitPoint()-pt;
-            patchConstraints[pointI] = c;
+        // Check if already attracted
+        label oldPointI = pointAttractor[featI][featPointI];
 
-            // Dump
-            if (featureEdgeStr.valid())
+        if (oldPointI != -1)
+        {
+            // Check distance
+            if (distSqr >= magSqr(featPt-pp.localPoints()[oldPointI]))
             {
-                meshTools::writeOBJ(featureEdgeStr(), pt);
-                featureEdgeVertI++;
-                meshTools::writeOBJ(featureEdgeStr(), nearEdge.hitPoint());
-                featureEdgeVertI++;
-                featureEdgeStr()
-                    << "l " << featureEdgeVertI-1 << ' '
-                    << featureEdgeVertI << nl;
+                // oldPointI nearest. Keep.
+                featI = -1;
+                featPointI = -1;
+            }
+            else
+            {
+                // Current pointI nearer.
+                pointAttractor[featI][featPointI] = pointI;
+                pointConstraints[featI][featPointI].first() = 3;
+                pointConstraints[featI][featPointI].second() = vector::zero;
+
+                // Store for later use
+                patchAttraction[pointI] = featPt-pt;
+                patchConstraints[pointI] =
+                    pointConstraints[featI][featPointI];
+
+                // Reset oldPointI to nearest on feature edge
+                patchAttraction[oldPointI] = vector::zero;
+                patchConstraints[oldPointI] = pointConstraint();
+
+                label edgeFeatI;
+                const pointIndexHit nearInfo = findNearFeatureEdge
+                (
+                    pp,
+                    snapDist,
+                    oldPointI,
+                    pp.localPoints()[oldPointI],
+
+                    edgeFeatI,
+                    edgeAttractors,
+                    edgeConstraints,
+                    patchAttraction,
+                    patchConstraints
+                );
             }
         }
-
-
-        // Mark point on the nearest feature point.
-        if (nearPointFeat[pointI] != -1)
+        else
         {
-            label featI = nearPointFeat[pointI];
-            label index = nearPointIndex[pointI];
-            const treeDataPoint& shapes = features.pointTrees()[featI].shapes();
-            label featPointI = shapes.pointLabels()[index];
-            const point& featPt = shapes.points()[featPointI];
-
+            // Current pointI nearer.
             pointAttractor[featI][featPointI] = pointI;
             pointConstraints[featI][featPointI].first() = 3;
             pointConstraints[featI][featPointI].second() = vector::zero;
 
-            // Dump
-            if (featurePointStr.valid())
-            {
-                meshTools::writeOBJ(featurePointStr(), pt);
-                featurePointVertI++;
-                meshTools::writeOBJ(featurePointStr(), featPt);
-                featurePointVertI++;
-                featurePointStr()
-                    << "l " << featurePointVertI-1 << ' '
-                    << featurePointVertI << nl;
-            }
+            // Store for later use
+            patchAttraction[pointI] = featPt-pt;
+            patchConstraints[pointI] = pointConstraints[featI][featPointI];
         }
     }
+
+    return labelPair(featI, featPointI);
 }
 
 
+// Determines for every pp point - that is on multiple faces that form
+// a feature - the nearest feature edge/point.
 void Foam::autoSnapDriver::determineFeatures
 (
     const label iter,
@@ -871,12 +1167,10 @@ void Foam::autoSnapDriver::determineFeatures
     const indirectPrimitivePatch& pp,
     const scalarField& snapDist,
 
-    //const vectorField& faceSurfaceNormal,
-    //const vectorField& faceDisp,
-    //const vectorField& faceRotation,
     const List<List<point> >& pointFaceSurfNormals,
     const List<List<point> >& pointFaceDisp,
     const List<List<point> >& pointFaceCentres,
+    const labelListList& pointFacePatchID,
 
     // Feature-point to pp point
     List<labelList>& pointAttractor,
@@ -906,7 +1200,7 @@ void Foam::autoSnapDriver::determineFeatures
               / "featureEdge_" + name(iter) + ".obj"
             )
         );
-        Pout<< nl << "Dumping feature-edge sampling to "
+        Pout<< "Dumping feature-edge sampling to "
             << featureEdgeStr().name() << endl;
 
         missedEdgeStr.reset
@@ -917,7 +1211,7 @@ void Foam::autoSnapDriver::determineFeatures
               / "missedFeatureEdge_" + name(iter) + ".obj"
             )
         );
-        Pout<< nl << "Dumping feature-edges that are too far away to "
+        Pout<< "Dumping feature-edges that are too far away to "
             << missedEdgeStr().name() << endl;
 
         featurePointStr.reset
@@ -928,7 +1222,7 @@ void Foam::autoSnapDriver::determineFeatures
               / "featurePoint_" + name(iter) + ".obj"
             )
         );
-        Pout<< nl << "Dumping feature-point sampling to "
+        Pout<< "Dumping feature-point sampling to "
             << featurePointStr().name() << endl;
     }
 
@@ -936,90 +1230,137 @@ void Foam::autoSnapDriver::determineFeatures
 
     forAll(pp.localPoints(), pointI)
     {
-        if (patchConstraints[pointI].first() == 0)
-        {
-            const point& pt = pp.localPoints()[pointI];
+        const point& pt = pp.localPoints()[pointI];
 
-            // Collect all different directions
-            DynamicList<point> surfacePoints;
-            DynamicList<vector> surfaceNormals;
-            DynamicList<label> surfaceCount;
+        vector attraction = vector::zero;
+        pointConstraint constraint;
 
-            binFeatureFaces
-            (
-                iter,
-                featureCos,
-
-                pp,
-                snapDist,
-                pointI,
-
-                //faceSurfaceNormal,
-                //faceDisp,
-                pointFaceSurfNormals,
-                pointFaceDisp,
-                pointFaceCentres,
-
-                surfacePoints,
-                surfaceNormals,
-                surfaceCount
-            );
+        featureAttractionUsingReconstruction
+        (
+            iter,
+            featureCos,
 
-            // Check the number of directions
-            if (surfaceNormals.size() == 2)
-            {
-                plane pl0(surfacePoints[0], surfaceNormals[0]);
-                plane pl1(surfacePoints[1], surfaceNormals[1]);
-                plane::ray r(pl0.planeIntersect(pl1));
-                const vector n = r.dir() / mag(r.dir());
+            pp,
+            snapDist,
+            pointI,
+
+            pointFaceSurfNormals,
+            pointFaceDisp,
+            pointFaceCentres,
+            pointFacePatchID,
+
+            attraction,
+            constraint
+        );
 
-                // Get nearest point on infinite ray
-                vector d = r.refPoint()-pt;
-                d -= (d&n)*n;
+        if
+        (
+            (constraint.first() > patchConstraints[pointI].first())
+         || (magSqr(attraction) < magSqr(patchAttraction[pointI]))
+        )
+        {
+            patchAttraction[pointI] = attraction;
+            patchConstraints[pointI] = constraint;
 
-                // Trim to snap distance
-                if (magSqr(d) > sqr(snapDist[pointI]))
+            // Check the number of directions
+            if (patchConstraints[pointI].first() == 1)
+            {
+                // Flat surface. Check for different patchIDs
+                pointIndexHit multiPatchPt
+                (
+                    findMultiPatchPoint
+                    (
+                        pt,
+                        pointFacePatchID[pointI],
+                        pointFaceCentres[pointI]
+                    )
+                );
+                if (multiPatchPt.hit())
                 {
-                    d *= Foam::sqrt(sqr(snapDist[pointI])/magSqr(d));
-                }
+                    // Behave like when having two surface normals so
+                    // attract to nearest feature edge (with a guess for
+                    // the multipatch point as starting point)
+                    label featI = -1;
+                    pointIndexHit nearInfo = findNearFeatureEdge
+                    (
+                        pp,
+                        snapDist,
+                        pointI,
+                        multiPatchPt.hitPoint(),        //estimatedPt
+
+                        featI,
+                        edgeAttractors,
+                        edgeConstraints,
 
+                        patchAttraction,
+                        patchConstraints
+                    );
 
+                    if (nearInfo.hit())
+                    {
+                        // Dump
+                        if (featureEdgeStr.valid())
+                        {
+                            meshTools::writeOBJ(featureEdgeStr(), pt);
+                            featureEdgeVertI++;
+                            meshTools::writeOBJ
+                            (
+                                featureEdgeStr(),
+                                nearInfo.hitPoint()
+                            );
+                            featureEdgeVertI++;
+                            featureEdgeStr()
+                                << "l " << featureEdgeVertI-1 << ' '
+                                << featureEdgeVertI << nl;
+                        }
+                    }
+                    else
+                    {
+                        if (missedEdgeStr.valid())
+                        {
+                            meshTools::writeOBJ(missedEdgeStr(), pt);
+                            missedVertI++;
+                            meshTools::writeOBJ
+                            (
+                                missedEdgeStr(),
+                                nearInfo.missPoint()
+                            );
+                            missedVertI++;
+                            missedEdgeStr()
+                                << "l " << missedVertI-1 << ' '
+                                << missedVertI << nl;
+                        }
+                    }
+                }
+            }
+            else if (patchConstraints[pointI].first() == 2)
+            {
                 // Mark point on the nearest feature edge. Note that we
                 // only search within the surrounding since the plane
                 // reconstruction might find a feature where there isn't one.
-                const point estimatedPt(pt + d);
+                const point estimatedPt(pt + patchAttraction[pointI]);
 
-                labelList nearEdgeFeat;
-                List<pointIndexHit> nearEdgeInfo;
-                features.findNearestEdge
+                // Determine nearest point on feature edge. Store constraint
+                // (calculated from feature edge, alternative would be to
+                //  use constraint calculated from both surfaceNormals)
+                label featI = -1;
+                pointIndexHit nearInfo = findNearFeatureEdge
                 (
-                    pointField(1, estimatedPt),
-                    scalarField(1, sqr(snapDist[pointI])),
-                    nearEdgeFeat,
-                    nearEdgeInfo
-                );
+                    pp,
+                    snapDist,
+                    pointI,
+                    estimatedPt,
 
-                const pointIndexHit& nearInfo = nearEdgeInfo[0];
-                label featI = nearEdgeFeat[0];
+                    featI,
+                    edgeAttractors,
+                    edgeConstraints,
+
+                    patchAttraction,
+                    patchConstraints
+                );
 
                 if (nearInfo.hit())
                 {
-                    // So we have a point on the feature edge. Use this instead
-                    // of our estimate from planes.
-
-                    edgeAttractors[featI][nearInfo.index()].append
-                    (
-                        nearInfo.hitPoint()
-                    );
-                    pointConstraint c;
-                    c.applyConstraint(surfaceNormals[0]);
-                    c.applyConstraint(surfaceNormals[1]);
-                    edgeConstraints[featI][nearInfo.index()].append(c);
-
-                    // Store for later use
-                    patchAttraction[pointI] = nearInfo.hitPoint()-pt;
-                    patchConstraints[pointI] = c;
-
                     // Dump
                     if (featureEdgeStr.valid())
                     {
@@ -1054,59 +1395,39 @@ void Foam::autoSnapDriver::determineFeatures
                     }
                 }
             }
-            else if (surfaceNormals.size() == 3)
+            else if (patchConstraints[pointI].first() == 3)
             {
-                // Calculate point from the faces.
-                plane pl0(surfacePoints[0], surfaceNormals[0]);
-                plane pl1(surfacePoints[1], surfaceNormals[1]);
-                plane pl2(surfacePoints[2], surfaceNormals[2]);
-                point cornerPt(pl0.planePlaneIntersect(pl1, pl2));
-                vector d = cornerPt - pt;
-
-                // Trim to snap distance
-                if (magSqr(d) > sqr(snapDist[pointI]))
-                {
-                    d *= Foam::sqrt(sqr(snapDist[pointI])/magSqr(d));
-                }
-
-
                 // Mark point on the nearest feature point.
-                const point estimatedPt(pt + d);
+                const point estimatedPt(pt + patchAttraction[pointI]);
 
-                labelList nearPointFeat;
-                labelList nearPointIndex;
-                features.findNearestPoint
+                labelPair nearInfo = findNearFeaturePoint
                 (
-                    pointField(1, estimatedPt),
-                    scalarField(1, sqr(snapDist[pointI])),
-                    nearPointFeat,
-                    nearPointIndex
+                    pp,
+                    snapDist,
+                    pointI,
+                    estimatedPt,
+
+                    // Feature-point to pp point
+                    pointAttractor,
+                    pointConstraints,
+                    // Feature-edge to pp point
+                    edgeAttractors,
+                    edgeConstraints,
+                    // pp point to nearest feature
+                    patchAttraction,
+                    patchConstraints
                 );
 
-
-                if (nearPointIndex[0] != -1)
+                if (nearInfo.first() != -1)
                 {
-                    label featI = nearPointFeat[0];
-                    label index = nearPointIndex[0];
-
-                    const treeDataPoint& shapes =
-                        features.pointTrees()[featI].shapes();
-                    label featPointI = shapes.pointLabels()[index];
-                    const point& featPt = shapes.points()[featPointI];
-
-                    pointAttractor[featI][featPointI] = pointI;
-                    pointConstraint& c = pointConstraints[featI][featPointI];
-                    c.applyConstraint(surfaceNormals[0]);
-                    c.applyConstraint(surfaceNormals[1]);
-                    c.applyConstraint(surfaceNormals[2]);
-
-                    // Store for later use
-                    patchAttraction[pointI] = featPt-pt;
-                    patchConstraints[pointI] = c;
-
                     // Dump
                     if (featurePointStr.valid())
                     {
+                        const treeDataPoint& shapes =
+                            features.pointTrees()[nearInfo.first()].shapes();
+                        const point& featPt =
+                            shapes.points()[nearInfo.second()];
+
                         meshTools::writeOBJ(featurePointStr(), pt);
                         featurePointVertI++;
                         meshTools::writeOBJ(featurePointStr(), featPt);
@@ -1130,9 +1451,6 @@ void Foam::autoSnapDriver::featureAttractionUsingFeatureEdges
     const indirectPrimitivePatch& pp,
     const scalarField& snapDist,
 
-    //const vectorField& faceSurfaceNormal,
-    //const vectorField& faceDisp,
-    //const vectorField& faceRotation,
     const List<List<point> >& pointFaceSurfNormals,
     const List<List<point> >& pointFaceDisp,
     const List<List<point> >& pointFaceCentres,
@@ -1145,12 +1463,15 @@ void Foam::autoSnapDriver::featureAttractionUsingFeatureEdges
     const refinementFeatures& features = meshRefiner_.features();
 
     // Collect ordered attractions on feature edges
-    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
     // Per feature, per feature-edge a list of attraction points and their
     // originating vertex.
     List<List<DynamicList<point> > > edgeAttractors(features.size());
-    List<List<DynamicList<pointConstraint> > > edgeConstraints(features.size());
+    List<List<DynamicList<pointConstraint> > > edgeConstraints
+    (
+        features.size()
+    );
     forAll(features, featI)
     {
         label nFeatEdges = features[featI].edges().size();
@@ -1175,7 +1496,6 @@ void Foam::autoSnapDriver::featureAttractionUsingFeatureEdges
     List<pointConstraint> allPatchConstraints(pp.nPoints());
 
     determineFeatures
-    //determineAllFeatures
     (
         iter,
         featureCos,
@@ -1186,6 +1506,7 @@ void Foam::autoSnapDriver::featureAttractionUsingFeatureEdges
         pointFaceSurfNormals,
         pointFaceDisp,
         pointFaceCentres,
+        pointFacePatchID,
 
         // Feature-point to pp point
         pointAttractor,
@@ -1199,6 +1520,263 @@ void Foam::autoSnapDriver::featureAttractionUsingFeatureEdges
     );
 
 
+
+    // Baffle handling
+    // ~~~~~~~~~~~~~~~
+    // Override pointAttractor, edgeAttractor, allPatchAttration etc. to
+    // implement 'baffle' handling.
+    // Baffle: the mesh pp point originates from a loose standing
+    // baffle.
+    // Sampling the surface with the surrounding face-centres only picks up
+    // a single triangle normal so above determineFeatures will not have
+    // detected anything. So explicitly pick up feature edges on the pp
+    // (after duplicating points & smoothing so will already have been
+    // expanded) and match these to the features.
+    {
+        const fvMesh& mesh = meshRefiner_.mesh();
+
+        // Calculate edge-faces
+        List<List<point> > edgeFaceNormals(pp.nEdges());
+
+        // Fill local data
+        forAll(pp.edgeFaces(), edgeI)
+        {
+            const labelList& eFaces = pp.edgeFaces()[edgeI];
+            List<point>& eFc = edgeFaceNormals[edgeI];
+            eFc.setSize(eFaces.size());
+            forAll(eFaces, i)
+            {
+                label faceI = eFaces[i];
+                eFc[i] = pp.faceNormals()[faceI];
+            }
+        }
+
+        {
+            // Precalculate mesh edges for pp.edges.
+            const labelList meshEdges
+            (
+                pp.meshEdges(mesh.edges(), mesh.pointEdges())
+            );
+            syncTools::syncEdgeList
+            (
+                mesh,
+                meshEdges,
+                edgeFaceNormals,
+                listPlusEqOp<point>(),
+                List<point>(),
+                listTransform()
+            );
+        }
+
+        // Detect baffle edges. Assume initial mesh will have 0,90 or 180
+        // (baffle) degree angles so smoothing should make 0,90
+        // to be less than 90.
+        const scalar baffleFeatureCos = Foam::cos(degToRad(91));
+
+
+        autoPtr<OFstream> baffleEdgeStr;
+        label baffleEdgeVertI = 0;
+        if (debug&meshRefinement::OBJINTERSECTIONS)
+        {
+            baffleEdgeStr.reset
+            (
+                new OFstream
+                (
+                    meshRefiner_.mesh().time().path()
+                  / "baffleEdge_" + name(iter) + ".obj"
+                )
+            );
+            Info<< nl << "Dumping baffle-edges to "
+                << baffleEdgeStr().name() << endl;
+        }
+
+
+        // Is edge on baffle
+        PackedBoolList isBaffleEdge(pp.nEdges());
+        // Is point on
+        //  0 : baffle-edge (0)
+        //  1 : baffle-feature-point (1)
+        // -1 : rest
+        labelList pointStatus(pp.nPoints(), -1);
+
+        forAll(edgeFaceNormals, edgeI)
+        {
+            const List<point>& efn = edgeFaceNormals[edgeI];
+
+            if (efn.size() == 2 && (efn[0]&efn[1]) < baffleFeatureCos)
+            {
+                isBaffleEdge[edgeI] = true;
+                const edge& e = pp.edges()[edgeI];
+                pointStatus[e[0]] = 0;
+                pointStatus[e[1]] = 0;
+
+                if (baffleEdgeStr.valid())
+                {
+                    const point& p0 = pp.localPoints()[e[0]];
+                    const point& p1 = pp.localPoints()[e[1]];
+                    meshTools::writeOBJ(baffleEdgeStr(), p0);
+                    baffleEdgeVertI++;
+                    meshTools::writeOBJ(baffleEdgeStr(), p1);
+                    baffleEdgeVertI++;
+                    baffleEdgeStr() << "l " << baffleEdgeVertI-1
+                        << ' ' << baffleEdgeVertI << nl;
+                }
+            }
+        }
+
+        forAll(pp.pointEdges(), pointI)
+        {
+            if
+            (
+                isFeaturePoint
+                (
+                    featureCos,
+                    pp,
+                    isBaffleEdge,
+                    pointI
+                )
+            )
+            {
+                //Pout<< "Detected feature point:" << pp.localPoints()[pointI]
+                //    << endl;
+                //-TEMPORARILY DISABLED:
+                //pointStatus[pointI] = 1;
+            }
+        }
+
+        forAll(pointStatus, pointI)
+        {
+            const point& pt = pp.localPoints()[pointI];
+
+            if (pointStatus[pointI] == 0)   // baffle edge
+            {
+                label featI;
+                const pointIndexHit nearInfo = findNearFeatureEdge
+                (
+                    pp,
+                    snapDist,
+                    pointI,
+                    pt,
+
+                    featI,
+                    edgeAttractors,
+                    edgeConstraints,
+                    allPatchAttraction,
+                    allPatchConstraints
+                );
+
+                if (!nearInfo.hit())
+                {
+                    //Pout<< "*** Failed to find close edge to point " << pt
+                    //    << endl;
+                }
+            }
+            else if (pointStatus[pointI] == 1)   // baffle point
+            {
+                labelList nearFeat;
+                labelList nearIndex;
+                features.findNearestPoint
+                (
+                    pointField(1, pt),
+                    scalarField(1, sqr(snapDist[pointI])),
+                    nearFeat,
+                    nearIndex
+                );
+
+                label featI = nearFeat[0];
+
+                if (featI != -1)
+                {
+                    const treeDataPoint& shapes =
+                        features.pointTrees()[featI].shapes();
+                    label featPointI = shapes.pointLabels()[nearIndex[0]];
+                    const point& featPt = shapes.points()[featPointI];
+                    scalar distSqr = magSqr(featPt-pt);
+
+                    // Check if already attracted
+                    label oldPointI = pointAttractor[featI][featPointI];
+
+                    if
+                    (
+                        oldPointI == -1
+                     || (
+                            distSqr
+                          < magSqr(featPt-pp.localPoints()[oldPointI])
+                        )
+                    )
+                    {
+                        pointAttractor[featI][featPointI] = pointI;
+                        pointConstraints[featI][featPointI].first() = 3;
+                        pointConstraints[featI][featPointI].second() =
+                            vector::zero;
+
+                        // Store for later use
+                        allPatchAttraction[pointI] = featPt-pt;
+                        allPatchConstraints[pointI] =
+                            pointConstraints[featI][featPointI];
+
+                        if (oldPointI != -1)
+                        {
+                            // The current point is closer so wins. Reset
+                            // the old point to attract to nearest edge
+                            // instead.
+                            label edgeFeatI;
+                            const pointIndexHit nearInfo = findNearFeatureEdge
+                            (
+                                pp,
+                                snapDist,
+                                oldPointI,
+                                pp.localPoints()[oldPointI],
+
+                                edgeFeatI,
+                                edgeAttractors,
+                                edgeConstraints,
+                                allPatchAttraction,
+                                allPatchConstraints
+                            );
+                        }
+                    }
+                    else
+                    {
+                        // Make it fall through to check below
+                        featI = -1;
+                    }
+                }
+
+                // Not found a feature point or another point is already
+                // closer to that feature
+                if (featI == -1)
+                {
+                    //Pout<< "*** Falling back to finding nearest feature edge"
+                    //    << " for baffle-feature-point " << pt
+                    //    << endl;
+
+                    label featI;
+                    const pointIndexHit nearInfo = findNearFeatureEdge
+                    (
+                        pp,
+                        snapDist,
+                        pointI,
+                        pt,                     // starting point
+
+                        featI,
+                        edgeAttractors,
+                        edgeConstraints,
+                        allPatchAttraction,
+                        allPatchConstraints
+                    );
+                }
+            }
+        }
+    }
+
+
+    //
+    // Reverse lookup
+    // ~~~~~~~~~~~~~~
+    //
+
+
     // Find nearest mesh point to feature edge
     // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     // Reverse lookup : go through all edgeAttractors and find the
@@ -1244,9 +1822,12 @@ void Foam::autoSnapDriver::featureAttractionUsingFeatureEdges
             forAll(attr, i)
             {
                 // Find nearest pp point
-
                 const point& featPt = attr[i];
-                pointIndexHit nearInfo = ppTree.findNearest(featPt, sqr(GREAT));
+                pointIndexHit nearInfo = ppTree.findNearest
+                (
+                    featPt,
+                    sqr(GREAT)
+                );
 
                 if (nearInfo.hit())
                 {
@@ -1257,7 +1838,7 @@ void Foam::autoSnapDriver::featureAttractionUsingFeatureEdges
                     // override it only if nearer.
                     if
                     (
-                        patchConstraints[pointI].first() == 0
+                        patchConstraints[pointI].first() <= 1
                      || magSqr(attraction) < magSqr(patchAttraction[pointI])
                     )
                     {
@@ -1269,7 +1850,8 @@ void Foam::autoSnapDriver::featureAttractionUsingFeatureEdges
                 {
                     WarningIn
                     (
-                        "autoSnapDriver::featureAttractionUsingFeatureEdges(..)"
+                        "autoSnapDriver::featureAttractionUsingFeatureEdges"
+                        "(..)"
                     )   << "Did not find pp point near " << featPt
                         << endl;
                 }
@@ -1302,7 +1884,11 @@ void Foam::autoSnapDriver::featureAttractionUsingFeatureEdges
                 ];
 
                 // Find nearest pp point
-                pointIndexHit nearInfo = ppTree.findNearest(featPt, sqr(GREAT));
+                pointIndexHit nearInfo = ppTree.findNearest
+                (
+                    featPt,
+                    sqr(GREAT)
+                );
 
                 if (nearInfo.hit())
                 {
@@ -1333,7 +1919,8 @@ void Foam::autoSnapDriver::featureAttractionUsingFeatureEdges
                         )
                         {
                             patchAttraction[pointI] = attraction;
-                            patchConstraints[pointI] = pointConstr[featPointI];
+                            patchConstraints[pointI] =
+                                pointConstr[featPointI];
                         }
                     }
                 }
@@ -1344,7 +1931,8 @@ void Foam::autoSnapDriver::featureAttractionUsingFeatureEdges
 
 
     //MEJ: any faces that have multi-patch points only keep the multi-patch
-    //     points.
+    //     points. The other points on the face will be dragged along
+    //     (hopefully)
     {
         autoPtr<OFstream> multiPatchStr;
         if (debug&meshRefinement::OBJINTERSECTIONS)
@@ -1357,7 +1945,7 @@ void Foam::autoSnapDriver::featureAttractionUsingFeatureEdges
                   / "multiPatch_" + name(iter) + ".obj"
                 )
             );
-            Pout<< nl << "Dumping removed constraints due to same-face"
+            Pout<< "Dumping removed constraints due to same-face"
                 << " multi-patch points to "
                 << multiPatchStr().name() << endl;
         }
@@ -1368,16 +1956,13 @@ void Foam::autoSnapDriver::featureAttractionUsingFeatureEdges
 
         forAll(pointFacePatchID, pointI)
         {
-            const labelList& patches = pointFacePatchID[pointI];
-            label patch0 = patches[0];
-            for (label i = 1; i < patches.size(); i++)
-            {
-                if (patch0 != patches[i])
-                {
-                    isMultiPatchPoint[pointI] = 1u;
-                    break;
-                }
-            }
+            pointIndexHit multiPatchPt = findMultiPatchPoint
+            (
+                pp.localPoints()[pointI],
+                pointFacePatchID[pointI],
+                pointFaceCentres[pointI]
+            );
+            isMultiPatchPoint[pointI] = multiPatchPt.hit();
         }
 
         // 2. Make sure multi-patch points are also attracted
@@ -1387,8 +1972,8 @@ void Foam::autoSnapDriver::featureAttractionUsingFeatureEdges
             {
                 if
                 (
-                    patchConstraints[pointI].first() == 0
-                 && allPatchConstraints[pointI].first() > 0
+                    patchConstraints[pointI].first() <= 1
+                 && allPatchConstraints[pointI].first() > 1
                 )
                 {
                     patchAttraction[pointI] = allPatchAttraction[pointI];
@@ -1422,7 +2007,7 @@ void Foam::autoSnapDriver::featureAttractionUsingFeatureEdges
                 if
                 (
                     isMultiPatchPoint[pointI]
-                 && patchConstraints[pointI].first() != 0
+                 && patchConstraints[pointI].first() > 1
                 )
                 {
                     nMultiPatchPoints++;
@@ -1437,7 +2022,7 @@ void Foam::autoSnapDriver::featureAttractionUsingFeatureEdges
                     if
                     (
                        !isMultiPatchPoint[pointI]
-                     && patchConstraints[pointI].first() != 0
+                     && patchConstraints[pointI].first() > 1
                     )
                     {
                         //Pout<< "Knocking out constraint"
@@ -1476,7 +2061,7 @@ void Foam::autoSnapDriver::featureAttractionUsingFeatureEdges
           / "edgeAttractors_" + name(iter) + ".obj"
         );
         label featureEdgeVertI = 0;
-        Pout<< nl << "Dumping feature-edge attraction to "
+        Pout<< "Dumping feature-edge attraction to "
             << featureEdgeStr.name() << endl;
 
         OFstream featurePointStr
@@ -1485,7 +2070,7 @@ void Foam::autoSnapDriver::featureAttractionUsingFeatureEdges
           / "pointAttractors_" + name(iter) + ".obj"
         );
         label featurePointVertI = 0;
-        Pout<< nl << "Dumping feature-point attraction to "
+        Pout<< "Dumping feature-point attraction to "
             << featurePointStr.name() << endl;
 
         forAll(patchConstraints, pointI)
@@ -1496,7 +2081,11 @@ void Foam::autoSnapDriver::featureAttractionUsingFeatureEdges
             {
                 meshTools::writeOBJ(featureEdgeStr, pt);
                 featureEdgeVertI++;
-                meshTools::writeOBJ(featureEdgeStr, pt+patchAttraction[pointI]);
+                meshTools::writeOBJ
+                (
+                    featureEdgeStr,
+                    pt+patchAttraction[pointI]
+                );
                 featureEdgeVertI++;
                 featureEdgeStr << "l " << featureEdgeVertI-1
                     << ' ' << featureEdgeVertI << nl;
@@ -1547,10 +2136,11 @@ void Foam::autoSnapDriver::featureAttractionUsingFeatureEdges
                     const edge& e = pp.edges()[pEdges[pEdgeI]];
                     label nbrPointI = e.otherVertex(pointI);
 
-                    if (patchConstraints[nbrPointI].first() != 0)
+                    if (patchConstraints[nbrPointI].first() > 1)
                     {
                         const point& nbrPt = pp.localPoints()[nbrPointI];
-                        const point featPt = nbrPt + patchAttraction[nbrPointI];
+                        const point featPt =
+                            nbrPt + patchAttraction[nbrPointI];
                         const scalar cosAngle = (featVec & (featPt-pt));
 
                         if (cosAngle > 0)
@@ -1582,8 +2172,8 @@ void Foam::autoSnapDriver::featureAttractionUsingFeatureEdges
 
                         if
                         (
-                            patchConstraints[nbrPointI].first() == 0
-                         && allPatchConstraints[nbrPointI].first() != 0
+                            patchConstraints[nbrPointI].first() <= 1
+                         && allPatchConstraints[nbrPointI].first() > 1
                         )
                         {
                             const vector& nbrFeatVec =
@@ -1602,7 +2192,8 @@ void Foam::autoSnapDriver::featureAttractionUsingFeatureEdges
                                 const point featPt =
                                     pp.localPoints()[nbrPointI]
                                   + allPatchAttraction[nbrPointI];
-                                const scalar cosAngle = (featVec & (featPt-pt));
+                                const scalar cosAngle =
+                                    (featVec & (featPt-pt));
 
                                 if (cosAngle > 0)
                                 {
@@ -1628,7 +2219,8 @@ void Foam::autoSnapDriver::featureAttractionUsingFeatureEdges
                     {
                         // Use reconstructed-feature attraction. Use only
                         // part of it since not sure...
-                        //const point& bestPt = pp.localPoints()[bestPosPointI];
+                        //const point& bestPt =
+                        //    pp.localPoints()[bestPosPointI];
                         //Pout<< "**Overriding point " << bestPt
                         //    << " on reconstructed feature edge at "
                         //    << allPatchAttraction[bestPosPointI]+bestPt
@@ -1644,7 +2236,8 @@ void Foam::autoSnapDriver::featureAttractionUsingFeatureEdges
                     {
                         // Use reconstructed-feature attraction. Use only
                         // part of it since not sure...
-                        //const point& bestPt = pp.localPoints()[bestNegPointI];
+                        //const point& bestPt =
+                        //    pp.localPoints()[bestNegPointI];
                         //Pout<< "**Overriding point " << bestPt
                         //    << " on reconstructed feature edge at "
                         //    << allPatchAttraction[bestNegPointI]+bestPt
@@ -1708,9 +2301,11 @@ void Foam::autoSnapDriver::featureAttractionUsingFeatureEdges
                     // Found two diagonal points that being attracted.
                     // For now just attract my one to the average of those.
                     const label i0 = f[firstAttract];
-                    const point pt0 = pp.localPoints()[i0]+patchAttraction[i0];
+                    const point pt0 =
+                        pp.localPoints()[i0]+patchAttraction[i0];
                     const label i1 = f[nextAttract];
-                    const point pt1 = pp.localPoints()[i1]+patchAttraction[i1];
+                    const point pt1 =
+                        pp.localPoints()[i1]+patchAttraction[i1];
                     const point mid = 0.5*(pt0+pt1);
 
 
@@ -1728,13 +2323,14 @@ void Foam::autoSnapDriver::featureAttractionUsingFeatureEdges
 
                     if (cosAngle > featureCos)
                     {
-                        // Add the nearest of the other two points as attractor
+                        // Add the nearest of the other two points as
+                        // attractor
                         label minFp = -1;
                         scalar minDistSqr = GREAT;
                         forAll(f, fp)
                         {
                             label pointI = f[fp];
-                            if (patchConstraints[pointI].first() == 0)
+                            if (patchConstraints[pointI].first() <= 1)
                             {
                                 const point& pt = pp.localPoints()[pointI];
                                 scalar distSqr = magSqr(mid-pt);
@@ -1822,14 +2418,16 @@ void Foam::autoSnapDriver::preventFaceSqueeze
         forAll(f, fp)
         {
             label pointI = f[fp];
-            if (patchConstraints[pointI].first() != 0)
+            const point& pt = pp.localPoints()[pointI];
+
+            if (patchConstraints[pointI].first() > 1)
             {
-                points[fp] = pp.localPoints()[pointI] + patchAttraction[pointI];
+                points[fp] = pt + patchAttraction[pointI];
                 nConstraints++;
             }
             else
             {
-                points[fp] = pp.localPoints()[pointI];
+                points[fp] = pt;
             }
         }
 
@@ -1865,6 +2463,7 @@ void Foam::autoSnapDriver::preventFaceSqueeze
 
 Foam::vectorField Foam::autoSnapDriver::calcNearestSurfaceFeature
 (
+    const snapParameters& snapParams,
     const label iter,
     const scalar featureCos,
     const scalar featureAttract,
@@ -1873,8 +2472,14 @@ Foam::vectorField Foam::autoSnapDriver::calcNearestSurfaceFeature
     motionSmoother& meshMover
 ) const
 {
-    Info<< "Calculating patchDisplacement as distance to nearest surface"
-        << " point ..." << endl;
+    const Switch implicitFeatureAttraction = snapParams.implicitFeatureSnap();
+    const Switch explicitFeatureAttraction = snapParams.explicitFeatureSnap();
+
+    Info<< "Overriding displacement on features :" << nl
+        << "   implicit features : " << implicitFeatureAttraction << nl
+        << "   explicit features : " << explicitFeatureAttraction << nl
+        << endl;
+
 
     const indirectPrimitivePatch& pp = meshMover.patch();
     const pointField& localPoints = pp.localPoints();
@@ -1887,6 +2492,7 @@ Foam::vectorField Foam::autoSnapDriver::calcNearestSurfaceFeature
     vectorField faceDisp(pp.size(), vector::zero);
     // normal of surface at point on surface
     vectorField faceSurfaceNormal(pp.size(), vector::zero);
+    labelList faceSurfaceRegion(pp.size(), -1);
     vectorField faceRotation(pp.size(), vector::zero);
 
     calcNearestFace
@@ -1895,11 +2501,24 @@ Foam::vectorField Foam::autoSnapDriver::calcNearestSurfaceFeature
         pp,
         faceDisp,
         faceSurfaceNormal,
+        faceSurfaceRegion,
         faceRotation
     );
 
-    // Start off with nearest point on surface.
-    vectorField patchDisp = nearestDisp;
+
+    //// Displacement and orientation per pp point
+    //// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    //vectorField pointDisp(pp.nPoints(), vector::zero);
+    //vectorField pointSurfaceNormal(pp.nPoints(), vector::zero);
+    //vectorField pointRotation(pp.nPoints(), vector::zero);
+    //calcNearest
+    //(
+    //    iter,
+    //    pp,
+    //    pointDisp,
+    //    pointSurfaceNormal,
+    //    pointRotation
+    //);
 
 
     // Collect (possibly remote) per point data of all surrounding faces
@@ -1910,10 +2529,12 @@ Foam::vectorField Foam::autoSnapDriver::calcNearestSurfaceFeature
     // - faceCentres&faceNormal
 
     // For now just get all surrounding face data. Expensive - should just
-    // store and sync data on coupled points only (see e.g PatchToolsNormals.C)
+    // store and sync data on coupled points only
+    // (see e.g PatchToolsNormals.C)
 
     List<List<point> > pointFaceSurfNormals(pp.nPoints());
     List<List<point> > pointFaceDisp(pp.nPoints());
+    //List<List<point> > pointFaceRotation(pp.nPoints());
     List<List<point> > pointFaceCentres(pp.nPoints());
     List<labelList>    pointFacePatchID(pp.nPoints());
 
@@ -1925,6 +2546,8 @@ Foam::vectorField Foam::autoSnapDriver::calcNearestSurfaceFeature
         pNormals.setSize(pFaces.size());
         List<point>& pDisp = pointFaceDisp[pointI];
         pDisp.setSize(pFaces.size());
+        //List<point>& pRot = pointFaceRotation[pointI];
+        //pRot.setSize(pFaces.size());
         List<point>& pFc = pointFaceCentres[pointI];
         pFc.setSize(pFaces.size());
         labelList& pFid = pointFacePatchID[pointI];
@@ -1935,12 +2558,83 @@ Foam::vectorField Foam::autoSnapDriver::calcNearestSurfaceFeature
             label faceI = pFaces[i];
             pNormals[i] = faceSurfaceNormal[faceI];
             pDisp[i] = faceDisp[faceI];
+            //pRot[i] = faceRotation[faceI];
             pFc[i] = pp.faceCentres()[faceI];
             label meshFaceI = pp.addressing()[faceI];
             pFid[i] = mesh.boundaryMesh().whichPatch(meshFaceI);
         }
     }
 
+
+    // Collect additionally 'normal' boundary faces for boundaryPoints of pp
+    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    // points on the boundary of pp should pick up non-pp normals
+    // as well for the feature-reconstruction to behave correctly.
+    // (the movement is already constrained outside correctly so it
+    //  is only that the unconstrained attraction vector is calculated
+    //  correctly)
+    {
+        const polyBoundaryMesh& pbm = mesh.boundaryMesh();
+        labelList patchID(pbm.patchID());
+
+        // Unmark all non-coupled boundary faces
+        forAll(pbm, patchI)
+        {
+            const polyPatch& pp = pbm[patchI];
+
+            if (pp.coupled() || isA<emptyPolyPatch>(pp))
+            {
+                forAll(pp, i)
+                {
+                    label meshFaceI = pp.start()+i;
+                    patchID[meshFaceI-mesh.nInternalFaces()] = -1;
+                }
+            }
+        }
+
+        // Remove any meshed faces
+        PackedBoolList ppFaces(mesh.nFaces());
+        forAll(pp.addressing(), i)
+        {
+            label meshFaceI = pp.addressing()[i];
+            patchID[meshFaceI-mesh.nInternalFaces()] = -1;
+        }
+
+        // See if pp point uses any non-meshed boundary faces
+
+        const labelList& boundaryPoints = pp.boundaryPoints();
+        forAll(boundaryPoints, i)
+        {
+            label pointI = boundaryPoints[i];
+            label meshPointI = pp.meshPoints()[pointI];
+            const point& pt = mesh.points()[meshPointI];
+            const labelList& pFaces = mesh.pointFaces()[meshPointI];
+
+            List<point>& pNormals = pointFaceSurfNormals[pointI];
+            List<point>& pDisp = pointFaceDisp[pointI];
+            List<point>& pFc = pointFaceCentres[pointI];
+            labelList& pFid = pointFacePatchID[pointI];
+
+            forAll(pFaces, i)
+            {
+                label meshFaceI = pFaces[i];
+                if (!mesh.isInternalFace(meshFaceI))
+                {
+                    label patchI = patchID[meshFaceI-mesh.nInternalFaces()];
+
+                    if (patchI != -1)
+                    {
+                        vector fn = mesh.faceAreas()[meshFaceI];
+                        pNormals.append(fn/mag(fn));
+                        pDisp.append(mesh.faceCentres()[meshFaceI]-pt);
+                        pFc.append(mesh.faceCentres()[meshFaceI]);
+                        pFid.append(patchI);
+                    }
+                }
+            }
+        }
+    }
+
     syncTools::syncPointList
     (
         mesh,
@@ -1959,6 +2653,15 @@ Foam::vectorField Foam::autoSnapDriver::calcNearestSurfaceFeature
         List<point>(),
         listTransform()
     );
+    //syncTools::syncPointList
+    //(
+    //    mesh,
+    //    pp.meshPoints(),
+    //    pointFaceRotation,
+    //    listPlusEqOp<point>(),
+    //    List<point>(),
+    //    listTransform()
+    //);
     syncTools::syncPointList
     (
         mesh,
@@ -1978,6 +2681,9 @@ Foam::vectorField Foam::autoSnapDriver::calcNearestSurfaceFeature
     );
 
 
+    // Start off with nearest point on surface
+    vectorField patchDisp = nearestDisp;
+
 
     // Main calculation
     // ~~~~~~~~~~~~~~~~
@@ -1989,23 +2695,56 @@ Foam::vectorField Foam::autoSnapDriver::calcNearestSurfaceFeature
     vectorField patchAttraction(localPoints.size(), vector::zero);
     // Constraints at feature
     List<pointConstraint> patchConstraints(localPoints.size());
-    //featureAttractionUsingReconstruction
-    featureAttractionUsingFeatureEdges
-    (
-        iter,
-        featureCos,
 
-        pp,
-        snapDist,
 
-        pointFaceSurfNormals,
-        pointFaceDisp,
-        pointFaceCentres,
-        pointFacePatchID,
+    if (implicitFeatureAttraction)
+    {
+        // Sample faces around each point and see if nearest surface normal
+        // differs. Reconstruct a feature edge/point if possible and snap to
+        // it.
+        featureAttractionUsingReconstruction
+        (
+            iter,
+            featureCos,
 
-        patchAttraction,
-        patchConstraints
-    );
+            pp,
+            snapDist,
+
+            pointFaceSurfNormals,
+            pointFaceDisp,
+            pointFaceCentres,
+            pointFacePatchID,
+
+            patchAttraction,
+            patchConstraints
+        );
+    }
+
+    if (explicitFeatureAttraction)
+    {
+        // Sample faces around each point and see if nearest surface normal
+        // differs. For those find the nearest real feature edge/point and
+        // store the correspondence. Then loop over feature edge/point
+        // and attract those nearest mesh point. (the first phase just is
+        // a subsetting of candidate points, the second makes sure that only
+        // one mesh point gets attracted per feature)
+        featureAttractionUsingFeatureEdges
+        (
+            iter,
+            featureCos,
+
+            pp,
+            snapDist,
+
+            pointFaceSurfNormals,
+            pointFaceDisp,
+            pointFaceCentres,
+            pointFacePatchID,
+
+            patchAttraction,
+            patchConstraints
+        );
+    }
 
     preventFaceSqueeze
     (
@@ -2036,14 +2775,13 @@ Foam::vectorField Foam::autoSnapDriver::calcNearestSurfaceFeature
     // - patchAttraction    : direct attraction to features
     // - patchConstraints   : type of features
 
-    // Use any combination of patchDisp and direct feature
-    // attraction.
+    // Use any combination of patchDisp and direct feature attraction.
 
 
     // Mix with direct feature attraction
     forAll(patchConstraints, pointI)
     {
-        if (patchConstraints[pointI].first() != 0)
+        if (patchConstraints[pointI].first() > 1)
         {
             patchDisp[pointI] =
                 (1.0-featureAttract)*patchDisp[pointI]
@@ -2051,14 +2789,6 @@ Foam::vectorField Foam::autoSnapDriver::calcNearestSurfaceFeature
         }
     }
 
-    //dumpMove
-    //(
-    //    mesh.time().path()
-    //  / "linearPatchDisp_" + name(iter) + ".obj",
-    //    pp.localPoints(),
-    //    pp.localPoints() + patchDisp
-    //);
-
 
 
     // Count
@@ -2092,13 +2822,13 @@ Foam::vectorField Foam::autoSnapDriver::calcNearestSurfaceFeature
             << " attraction to :" << nl
             << "    feature point   : " << nPoint << nl
             << "    feature edge    : " << nEdge << nl
-            << "    nearest surface : " << nTotPoints-nPoint-nEdge
-            << " (rest)" << nl
+            << "    nearest surface : " << nPlanar << nl
+            << "    rest            : " << nTotPoints-nPoint-nEdge-nPlanar
+            << nl
             << endl;
     }
 
 
-
     // Now we have the displacement per patch point to move onto the surface
     // Split into tangential and normal direction.
     // - start off with all non-constrained points following the constrained
@@ -2106,6 +2836,10 @@ Foam::vectorField Foam::autoSnapDriver::calcNearestSurfaceFeature
     // - finish with only tangential component smoothed.
     // Note: tangential is most
     // likely to come purely from face-centre snapping, not face rotation.
+    // Note: could use the constraints here (constraintTransformation())
+    //       but this is not necessarily accurate and we're smoothing to
+    //       get out of problems.
+
     if (featureAttract < 1-0.001)
     {
         // 1. Smoothed all displacement
@@ -2148,8 +2882,7 @@ Foam::vectorField Foam::autoSnapDriver::calcNearestSurfaceFeature
     }
 
 
-
-    const scalar relax = featureAttract; //1.0;
+    const scalar relax = featureAttract;
     patchDisp *= relax;
 
 
@@ -2161,7 +2894,7 @@ Foam::vectorField Foam::autoSnapDriver::calcNearestSurfaceFeature
         pp.meshPoints(),
         patchDisp,
         minMagSqrEqOp<point>(),         // combine op
-        vector(GREAT, GREAT, GREAT)     // null value (note: cannot use VGREAT)
+        vector(GREAT, GREAT, GREAT)     // null value (note: cant use VGREAT)
     );
 
     return patchDisp;
diff --git a/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/layerParameters/layerParameters.C b/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/layerParameters/layerParameters.C
index 95d9bf0dd467ba9269b4759605e5fb869cd087a0..cc466df4be1ac0385c8c6905b03d7829b9a6f409 100644
--- a/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/layerParameters/layerParameters.C
+++ b/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/layerParameters/layerParameters.C
@@ -43,7 +43,7 @@ Foam::layerParameters::layerParameters
     const polyBoundaryMesh& boundaryMesh
 )
 :
-    numLayers_(boundaryMesh.size(), 0),
+    numLayers_(boundaryMesh.size(), -1),
     expansionRatio_
     (
         boundaryMesh.size(),
diff --git a/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/layerParameters/layerParameters.H b/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/layerParameters/layerParameters.H
index 1a7913a8efd8fd6788a6b034e78f7d86c1a0f232..4a48784ee9821e9157cf9b3f197628e27f0f7a9a 100644
--- a/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/layerParameters/layerParameters.H
+++ b/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/layerParameters/layerParameters.H
@@ -131,6 +131,10 @@ public:
             // Per patch information
 
                 //- How many layers to add.
+                //  -1 : no specification. Assume 0 layers but allow sliding
+                //       to make layers
+                //   0 : specified to have 0 layers. No sliding allowed.
+                //  >0 : number of layers
                 const labelList& numLayers() const
                 {
                     return numLayers_;
diff --git a/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/snapParameters/snapParameters.C b/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/snapParameters/snapParameters.C
index 54231f8bd1a4922d6608943b07618375f635e0ab..b9d6f3b0c6bcb2771130e4c3c3fcd962c1fde4a0 100644
--- a/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/snapParameters/snapParameters.C
+++ b/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/snapParameters/snapParameters.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -34,7 +34,9 @@ Foam::snapParameters::snapParameters(const dictionary& dict)
     snapTol_(readScalar(dict.lookup("tolerance"))),
     nSmoothDispl_(readLabel(dict.lookup("nSolveIter"))),
     nSnap_(readLabel(dict.lookup("nRelaxIter"))),
-    nFeatureSnap_(dict.lookupOrDefault("nFeatureSnapIter", -1))
+    nFeatureSnap_(dict.lookupOrDefault("nFeatureSnapIter", -1)),
+    explicitFeatureSnap_(dict.lookupOrDefault("explicitFeatureSnap", true)),
+    implicitFeatureSnap_(dict.lookupOrDefault("implicitFeatureSnap", false))
 {}
 
 
diff --git a/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/snapParameters/snapParameters.H b/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/snapParameters/snapParameters.H
index 3895c58aad10e10c0581f052f89f0f8dbfc71d11..8103cd4082dac4c468603a86eff1d4c5d9a320f6 100644
--- a/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/snapParameters/snapParameters.H
+++ b/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/snapParameters/snapParameters.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -37,6 +37,7 @@ SourceFiles
 
 #include "dictionary.H"
 #include "scalar.H"
+#include "Switch.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -63,6 +64,10 @@ class snapParameters
 
         const label nFeatureSnap_;
 
+        const Switch explicitFeatureSnap_;
+
+        const Switch implicitFeatureSnap_;
+
 
     // Private Member Functions
 
@@ -119,6 +124,16 @@ public:
                 return nFeatureSnap_;
             }
 
+            Switch explicitFeatureSnap() const
+            {
+                return explicitFeatureSnap_;
+            }
+
+            Switch implicitFeatureSnap() const
+            {
+                return implicitFeatureSnap_;
+            }
+
 };
 
 
diff --git a/src/mesh/autoMesh/autoHexMesh/meshRefinement/meshRefinement.H b/src/mesh/autoMesh/autoHexMesh/meshRefinement/meshRefinement.H
index 4deb6f3eed5fd1fae95464e7b0ea494d9264f838..a3b521eb12ab505358f04b9fc98f9535a4a4fc3c 100644
--- a/src/mesh/autoMesh/autoHexMesh/meshRefinement/meshRefinement.H
+++ b/src/mesh/autoMesh/autoHexMesh/meshRefinement/meshRefinement.H
@@ -326,6 +326,16 @@ private:
                 const labelList& globalToPatch
             ) const;
 
+            //- Geometric test on see whether face needs to be baffled:
+            //  is face boundary face and perpendicular to surface normal?
+            bool validBaffleTopology
+            (
+                const label faceI,
+                const vector& n1,
+                const vector& n2,
+                const vector& testDir
+            ) const;
+
             //- Determine patches for baffles
             void getBafflePatches
             (
@@ -414,7 +424,7 @@ private:
 
             //- Extract those baffles (duplicate) faces that are on the edge
             //  of a baffle region. These are candidates for merging.
-            List<labelPair> filterDuplicateFaces(const List<labelPair>&) const;
+            List<labelPair> freeStandingBaffles(const List<labelPair>&) const;
 
 
         // Zone handling
diff --git a/src/mesh/autoMesh/autoHexMesh/meshRefinement/meshRefinementBaffles.C b/src/mesh/autoMesh/autoHexMesh/meshRefinement/meshRefinementBaffles.C
index 977f75dbd45b0551d2c43fa7f04ed3d9ea6d1002..291ae3cb0870e191d3f19a7cf8eb1cfe51079433 100644
--- a/src/mesh/autoMesh/autoHexMesh/meshRefinement/meshRefinementBaffles.C
+++ b/src/mesh/autoMesh/autoHexMesh/meshRefinement/meshRefinementBaffles.C
@@ -43,6 +43,7 @@ License
 #include "OFstream.H"
 #include "regionSplit.H"
 #include "removeCells.H"
+#include "unitConversion.H"
 
 // * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
 
@@ -216,6 +217,45 @@ Foam::label Foam::meshRefinement::getBafflePatch
 }
 
 
+// Check if we are a boundary face and normal of surface does
+// not align with test vector. In this case there'd probably be
+// a freestanding 'baffle' so we might as well not create it.
+// Note that since it is not a proper baffle we cannot detect it
+// afterwards so this code cannot be merged with the
+// filterDuplicateFaces code.
+bool Foam::meshRefinement::validBaffleTopology
+(
+    const label faceI,
+    const vector& n1,
+    const vector& n2,
+    const vector& testDir
+) const
+{
+
+    label patchI = mesh_.boundaryMesh().whichPatch(faceI);
+    if (patchI == -1 || mesh_.boundaryMesh()[patchI].coupled())
+    {
+        return true;
+    }
+    else if (mag(n1&n2) > cos(degToRad(30)))
+    {
+        // Both normals aligned. Check that test vector perpendicularish to
+        // surface normal
+        scalar magTestDir = mag(testDir);
+        if (magTestDir > VSMALL)
+        {
+            if (mag(n1&(testDir/magTestDir)) < cos(degToRad(45)))
+            {
+                //Pout<< "** disabling baffling face "
+                //    << mesh_.faceCentres()[faceI] << endl;
+                return false;
+            }
+        }
+    }
+    return true;
+}
+
+
 // Determine patches for baffles on all intersected unnamed faces
 void Foam::meshRefinement::getBafflePatches
 (
@@ -745,7 +785,7 @@ Foam::autoPtr<Foam::mapPolyMesh> Foam::meshRefinement::createZoneBaffles
 // Done by counting the number of baffles faces per mesh edge. If edge
 // has 2 boundary faces and both are baffle faces it is the edge of a baffle
 // region.
-Foam::List<Foam::labelPair> Foam::meshRefinement::filterDuplicateFaces
+Foam::List<Foam::labelPair> Foam::meshRefinement::freeStandingBaffles
 (
     const List<labelPair>& couples
 ) const
@@ -852,12 +892,112 @@ Foam::List<Foam::labelPair> Foam::meshRefinement::filterDuplicateFaces
     }
     filteredCouples.setSize(filterI);
 
-    //Info<< "filterDuplicateFaces : from "
+    //Info<< "freeStandingBaffles : from "
     //    << returnReduce(couples.size(), sumOp<label>())
     //    << " down to "
     //    << returnReduce(filteredCouples.size(), sumOp<label>())
     //    << " baffles." << nl << endl;
 
+
+
+//XXXXXX
+//    {
+//        // Collect segments
+//        // ~~~~~~~~~~~~~~~~
+//
+//        pointField start(filteredCouples.size());
+//        pointField end(filteredCouples.size());
+//
+//        const pointField& cellCentres = mesh_.cellCentres();
+//
+//        forAll(filteredCouples, i)
+//        {
+//            const labelPair& couple = couples[i];
+//            start[i] = cellCentres[mesh_.faceOwner()[couple.first()]];
+//            end[i] = cellCentres[mesh_.faceOwner()[couple.second()]];
+//        }
+//
+//        // Extend segments a bit
+//        {
+//            const vectorField smallVec(Foam::sqrt(SMALL)*(end-start));
+//            start -= smallVec;
+//            end += smallVec;
+//        }
+//
+//
+//        // Do test for intersections
+//        // ~~~~~~~~~~~~~~~~~~~~~~~~~
+//        labelList surface1;
+//        List<pointIndexHit> hit1;
+//        labelList region1;
+//        vectorField normal1;
+//
+//        labelList surface2;
+//        List<pointIndexHit> hit2;
+//        labelList region2;
+//        vectorField normal2;
+//
+//        surfaces_.findNearestIntersection
+//        (
+//            surfacesToBaffle,
+//            start,
+//            end,
+//
+//            surface1,
+//            hit1,
+//            region1,
+//            normal1,
+//
+//            surface2,
+//            hit2,
+//            region2,
+//            normal2
+//        );
+//
+//        forAll(testFaces, i)
+//        {
+//            if (hit1[i].hit() && hit2[i].hit())
+//            {
+//                bool createBaffle = true;
+//
+//                label faceI = couples[i].first();
+//                label patchI = mesh_.boundaryMesh().whichPatch(faceI);
+//                if (patchI != -1 && !mesh_.boundaryMesh()[patchI].coupled())
+//                {
+//                    // Check if we are a boundary face and normal of surface
+//                    // does
+//                    // not align with test vector. In this case there'd
+//                    // probably be
+//                    // a freestanding 'baffle' so we might as well not
+//                    // create it.
+//                    // Note that since it is not a proper baffle we cannot
+//                    // detect it
+//                    // afterwards so this code cannot be merged with the
+//                    // filterDuplicateFaces code.
+//                    if (mag(normal1[i]&normal2[i]) > cos(degToRad(30)))
+//                    {
+//                        // Both normals aligned
+//                        vector n = end[i]-start[i];
+//                        scalar magN = mag(n);
+//                        if (magN > VSMALL)
+//                        {
+//                            n /= magN;
+//
+//                            if (mag(normal1[i]&n) < cos(degToRad(45)))
+//                            {
+//                                Pout<< "** disabling baffling face "
+//                                    << mesh_.faceCentres()[faceI] << endl;
+//                                createBaffle = false;
+//                            }
+//                        }
+//                    }
+//                }
+//
+//
+//        }
+//XXXXXX
+
+
     return filteredCouples;
 }
 
@@ -1717,11 +1857,6 @@ void Foam::meshRefinement::baffleAndSplitMesh
         neiPatch
     );
 
-    if (debug)
-    {
-        runTime++;
-    }
-
     createBaffles(ownPatch, neiPatch);
 
     if (debug)
@@ -1874,15 +2009,11 @@ void Foam::meshRefinement::baffleAndSplitMesh
             << "---------------------------" << nl
             << endl;
 
-        if (debug)
-        {
-            runTime++;
-        }
 
         // List of pairs of freestanding baffle faces.
         List<labelPair> couples
         (
-            filterDuplicateFaces    // filter out freestanding baffles
+            freeStandingBaffles    // filter out freestanding baffles
             (
                 getDuplicateFaces   // get all baffles
                 (
@@ -2484,11 +2615,13 @@ Foam::autoPtr<Foam::mapPolyMesh> Foam::meshRefinement::zonify
         // the information already in surfaceIndex_.
 
         labelList surface1;
+        List<pointIndexHit> hit1;
+        vectorField normal1;
         labelList surface2;
+        List<pointIndexHit> hit2;
+        vectorField normal2;
         {
-            List<pointIndexHit> hit1;
             labelList region1;
-            List<pointIndexHit> hit2;
             labelList region2;
             surfaces_.findNearestIntersection
             (
@@ -2511,9 +2644,36 @@ Foam::autoPtr<Foam::mapPolyMesh> Foam::meshRefinement::zonify
 
             if (surface1[i] != -1)
             {
-                // If both hit should probably choose nearest. For later.
-                namedSurfaceIndex[faceI] = surface1[i];
-                nSurfFaces[surface1[i]]++;
+                //- Not allowed not to create baffle - is vital for regioning.
+                //  Have logic instead at erosion!
+                //bool createBaffle = validBaffleTopology
+                //(
+                //    faceI,
+                //    normal1[i],
+                //    normal2[i],
+                //    end[i]-start[i]
+                //);
+                //
+
+
+                // If both hit should probably choose 'nearest'
+                if
+                (
+                    surface2[i] != -1
+                 && (
+                        magSqr(hit2[i].hitPoint())
+                      < magSqr(hit1[i].hitPoint())
+                    )
+                )
+                {
+                    namedSurfaceIndex[faceI] = surface2[i];
+                    nSurfFaces[surface2[i]]++;
+                }
+                else
+                {
+                    namedSurfaceIndex[faceI] = surface1[i];
+                    nSurfFaces[surface1[i]]++;
+                }
             }
             else if (surface2[i] != -1)
             {
diff --git a/src/mesh/autoMesh/autoHexMesh/meshRefinement/meshRefinementProblemCells.C b/src/mesh/autoMesh/autoHexMesh/meshRefinement/meshRefinementProblemCells.C
index 48eff18670c454653c694945cdc828bc466c0501..5561b21829417d528a2d5762b4bbdc32e2506ad7 100644
--- a/src/mesh/autoMesh/autoHexMesh/meshRefinement/meshRefinementProblemCells.C
+++ b/src/mesh/autoMesh/autoHexMesh/meshRefinement/meshRefinementProblemCells.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -541,7 +541,7 @@ Foam::labelList Foam::meshRefinement::markFacesOnProblemCells
 
         Info<< "markFacesOnProblemCells :"
             << " Deleting all-anchor surface cells only if"
-            << "snapping them violates mesh quality constraints:" << nl
+            << " snapping them violates mesh quality constraints:" << nl
             << "    snapped/original cell volume < " << volFraction << nl
             << "    face area                    < " << minArea << nl
             << "    non-orthogonality            > " << maxNonOrtho << nl
@@ -571,7 +571,7 @@ Foam::labelList Foam::meshRefinement::markFacesOnProblemCells
             hitInfo
         );
 
-        // Start of from current points
+        // Start off from current points
         newPoints = mesh_.points();
 
         forAll(hitInfo, i)
@@ -581,6 +581,17 @@ Foam::labelList Foam::meshRefinement::markFacesOnProblemCells
                 newPoints[meshPoints[i]] = hitInfo[i].hitPoint();
             }
         }
+
+        if (debug)
+        {
+            const_cast<Time&>(mesh_.time())++;
+            pointField oldPoints(mesh_.points());
+            mesh_.movePoints(newPoints);
+            Pout<< "Writing newPoints mesh to time " << timeName()
+                << endl;
+            write(debug, mesh_.time().path()/"newPoints");
+            mesh_.movePoints(oldPoints);
+        }
     }
 
 
diff --git a/src/mesh/autoMesh/autoHexMesh/refinementFeatures/refinementFeatures.C b/src/mesh/autoMesh/autoHexMesh/refinementFeatures/refinementFeatures.C
index 56533c0b004eafbbb8ce3a7cc095fc8185446a89..0cdd440d1a1d8a0cf40cfdd9c6579a58f687f41b 100644
--- a/src/mesh/autoMesh/autoHexMesh/refinementFeatures/refinementFeatures.C
+++ b/src/mesh/autoMesh/autoHexMesh/refinementFeatures/refinementFeatures.C
@@ -26,21 +26,14 @@ License
 #include "refinementFeatures.H"
 #include "Time.H"
 
-// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
 
-Foam::refinementFeatures::refinementFeatures
+void Foam::refinementFeatures::read
 (
     const objectRegistry& io,
     const PtrList<dictionary>& featDicts
 )
-:
-    PtrList<featureEdgeMesh>(featDicts.size()),
-    levels_(featDicts.size()),
-    edgeTrees_(featDicts.size()),
-    pointTrees_(featDicts.size())
 {
-    // Read features
-
     forAll(featDicts, i)
     {
         const dictionary& dict = featDicts[i];
@@ -75,75 +68,170 @@ Foam::refinementFeatures::refinementFeatures
             << " (" << eMesh.points().size() << " points, "
             << eMesh.edges().size() << " edges)." << endl;
     }
+}
 
 
-    // Search engines
+void Foam::refinementFeatures::buildTrees
+(
+    const label featI,
+    const labelList& featurePoints
+)
+{
+    const featureEdgeMesh& eMesh = operator[](featI);
+    const pointField& points = eMesh.points();
+    const edgeList& edges = eMesh.edges();
+
+    // Calculate bb of all points
+    treeBoundBox bb(points);
+
+    // Random number generator. Bit dodgy since not exactly random ;-)
+    Random rndGen(65431);
+
+    // Slightly extended bb. Slightly off-centred just so on symmetric
+    // geometry there are less face/edge aligned items.
+    bb = bb.extend(rndGen, 1e-4);
+    bb.min() -= point(ROOTVSMALL, ROOTVSMALL, ROOTVSMALL);
+    bb.max() += point(ROOTVSMALL, ROOTVSMALL, ROOTVSMALL);
+
+    edgeTrees_.set
+    (
+        featI,
+        new indexedOctree<treeDataEdge>
+        (
+            treeDataEdge
+            (
+                false,                  // do not cache bb
+                edges,
+                points,
+                identity(edges.size())
+            ),
+            bb,     // overall search domain
+            8,      // maxLevel
+            10,     // leafsize
+            3.0     // duplicity
+        )
+    );
+
+    pointTrees_.set
+    (
+        featI,
+        new indexedOctree<treeDataPoint>
+        (
+            treeDataPoint(points, featurePoints),
+            bb,     // overall search domain
+            8,      // maxLevel
+            10,     // leafsize
+            3.0     // duplicity
+        )
+    );
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::refinementFeatures::refinementFeatures
+(
+    const objectRegistry& io,
+    const PtrList<dictionary>& featDicts
+)
+:
+    PtrList<featureEdgeMesh>(featDicts.size()),
+    levels_(featDicts.size()),
+    edgeTrees_(featDicts.size()),
+    pointTrees_(featDicts.size())
+{
+    // Read features
+    read(io, featDicts);
 
+    // Search engines
     forAll(*this, i)
     {
         const featureEdgeMesh& eMesh = operator[](i);
-        const pointField& points = eMesh.points();
-        const edgeList& edges = eMesh.edges();
+        const labelListList& pointEdges = eMesh.pointEdges();
 
-        // Calculate bb of all points
-        treeBoundBox bb(points);
+        DynamicList<label> featurePoints;
+        forAll(pointEdges, pointI)
+        {
+            if (pointEdges[pointI].size() > 2)
+            {
+                featurePoints.append(pointI);
+            }
+        }
 
-        // Random number generator. Bit dodgy since not exactly random ;-)
-        Random rndGen(65431);
+        Info<< "Detected " << featurePoints.size()
+            << " featurePoints out of " << pointEdges.size()
+            << " on feature " << eMesh.name() << endl;
 
-        // Slightly extended bb. Slightly off-centred just so on symmetric
-        // geometry there are less face/edge aligned items.
-        bb = bb.extend(rndGen, 1e-4);
-        bb.min() -= point(ROOTVSMALL, ROOTVSMALL, ROOTVSMALL);
-        bb.max() += point(ROOTVSMALL, ROOTVSMALL, ROOTVSMALL);
+        buildTrees(i, featurePoints);
+    }
+}
 
-        edgeTrees_.set
-        (
-            i,
-            new indexedOctree<treeDataEdge>
-            (
-                treeDataEdge
-                (
-                    false,                  // do not cache bb
-                    edges,
-                    points,
-                    identity(edges.size())
-                ),
-                bb,     // overall search domain
-                8,      // maxLevel
-                10,     // leafsize
-                3.0     // duplicity
-            )
-        );
 
+Foam::refinementFeatures::refinementFeatures
+(
+    const objectRegistry& io,
+    const PtrList<dictionary>& featDicts,
+    const scalar minCos
+)
+:
+    PtrList<featureEdgeMesh>(featDicts.size()),
+    levels_(featDicts.size()),
+    edgeTrees_(featDicts.size()),
+    pointTrees_(featDicts.size())
+{
+    // Read features
+    read(io, featDicts);
 
-        // Detect feature points from edges.
+    // Search engines
+    forAll(*this, i)
+    {
+        const featureEdgeMesh& eMesh = operator[](i);
+        const pointField& points = eMesh.points();
+        const edgeList& edges = eMesh.edges();
         const labelListList& pointEdges = eMesh.pointEdges();
+
         DynamicList<label> featurePoints;
         forAll(pointEdges, pointI)
         {
-            if (pointEdges[pointI].size() > 2)
+            const labelList& pEdges = pointEdges[pointI];
+            if (pEdges.size() > 2)
             {
                 featurePoints.append(pointI);
             }
+            else if (pEdges.size() == 2)
+            {
+                // Check the angle
+                const edge& e0 = edges[pEdges[0]];
+                const edge& e1 = edges[pEdges[1]];
+
+                const point& p = points[pointI];
+                const point& p0 = points[e0.otherVertex(pointI)];
+                const point& p1 = points[e1.otherVertex(pointI)];
+
+                vector v0 = p-p0;
+                scalar v0Mag = mag(v0);
+
+                vector v1 = p1-p;
+                scalar v1Mag = mag(v1);
+
+                if
+                (
+                    v0Mag > SMALL
+                 && v1Mag > SMALL
+                 && ((v0/v0Mag & v1/v1Mag) < minCos)
+                )
+                {
+                    featurePoints.append(pointI);
+                }
+            }
         }
 
         Info<< "Detected " << featurePoints.size()
             << " featurePoints out of " << points.size()
-            << " on feature " << eMesh.name() << endl;
+            << " on feature " << eMesh.name()
+            << " when using feature cos " << minCos << endl;
 
-        pointTrees_.set
-        (
-            i,
-            new indexedOctree<treeDataPoint>
-            (
-                treeDataPoint(points, featurePoints),
-                bb,     // overall search domain
-                8,      // maxLevel
-                10,     // leafsize
-                3.0     // duplicity
-            )
-        );
+        buildTrees(i, featurePoints);
     }
 }
 
diff --git a/src/mesh/autoMesh/autoHexMesh/refinementFeatures/refinementFeatures.H b/src/mesh/autoMesh/autoHexMesh/refinementFeatures/refinementFeatures.H
index 3e56be043c4ee08c35837972976e0cf425583230..5442e140ddfab7b4626bfad256239fe6e4749561 100644
--- a/src/mesh/autoMesh/autoHexMesh/refinementFeatures/refinementFeatures.H
+++ b/src/mesh/autoMesh/autoHexMesh/refinementFeatures/refinementFeatures.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -69,17 +69,33 @@ private:
 
     // Private Member Functions
 
+        //- Read set of feature edge meshes
+        void read(const objectRegistry&, const PtrList<dictionary>&);
+
+        //- Build edge tree and feature point tree
+        void buildTrees(const label, const labelList&);
+
+
 public:
 
     // Constructors
 
-        //- Construct from components
+        //- Construct from description
         refinementFeatures
         (
             const objectRegistry& io,
             const PtrList<dictionary>& featDicts
         );
 
+        //- Construct from description and do geometric analysis to determine
+        //  feature points
+        refinementFeatures
+        (
+            const objectRegistry& io,
+            const PtrList<dictionary>& featDicts,
+            const scalar minCos
+        );
+
 
     // Member Functions
 
diff --git a/src/mesh/autoMesh/autoHexMesh/refinementSurfaces/refinementSurfaces.C b/src/mesh/autoMesh/autoHexMesh/refinementSurfaces/refinementSurfaces.C
index 52b2cd1b5b07e58459c4f7aec2af9d6beebfcc76..38afad6fa2d70c30a5d4f644e952a8ba3ab84b0e 100644
--- a/src/mesh/autoMesh/autoHexMesh/refinementSurfaces/refinementSurfaces.C
+++ b/src/mesh/autoMesh/autoHexMesh/refinementSurfaces/refinementSurfaces.C
@@ -917,6 +917,127 @@ void Foam::refinementSurfaces::findNearestIntersection
 }
 
 
+void Foam::refinementSurfaces::findNearestIntersection
+(
+    const labelList& surfacesToTest,
+    const pointField& start,
+    const pointField& end,
+
+    labelList& surface1,
+    List<pointIndexHit>& hit1,
+    labelList& region1,
+    vectorField& normal1,
+
+    labelList& surface2,
+    List<pointIndexHit>& hit2,
+    labelList& region2,
+    vectorField& normal2
+) const
+{
+    // 1. intersection from start to end
+    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+    // Initialize arguments
+    surface1.setSize(start.size());
+    surface1 = -1;
+    hit1.setSize(start.size());
+    region1.setSize(start.size());
+    normal1.setSize(start.size());
+
+    // Current end of segment to test.
+    pointField nearest(end);
+    // Work array
+    List<pointIndexHit> nearestInfo(start.size());
+    labelList region;
+    vectorField normal;
+
+    forAll(surfacesToTest, testI)
+    {
+        label surfI = surfacesToTest[testI];
+        const searchableSurface& geom = allGeometry_[surfaces_[surfI]];
+
+        // See if any intersection between start and current nearest
+        geom.findLine(start, nearest, nearestInfo);
+        geom.getRegion(nearestInfo, region);
+        geom.getNormal(nearestInfo, normal);
+
+        forAll(nearestInfo, pointI)
+        {
+            if (nearestInfo[pointI].hit())
+            {
+                hit1[pointI] = nearestInfo[pointI];
+                surface1[pointI] = surfI;
+                region1[pointI] = region[pointI];
+                normal1[pointI] = normal[pointI];
+                nearest[pointI] = hit1[pointI].hitPoint();
+            }
+        }
+    }
+
+
+    // 2. intersection from end to last intersection
+    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+    // Find the nearest intersection from end to start. Note that we initialize
+    // to the first intersection (if any).
+    surface2 = surface1;
+    hit2 = hit1;
+    region2 = region1;
+    normal2 = normal1;
+
+    // Set current end of segment to test.
+    forAll(nearest, pointI)
+    {
+        if (hit1[pointI].hit())
+        {
+            nearest[pointI] = hit1[pointI].hitPoint();
+        }
+        else
+        {
+            // Disable testing by setting to end.
+            nearest[pointI] = end[pointI];
+        }
+    }
+
+    forAll(surfacesToTest, testI)
+    {
+        label surfI = surfacesToTest[testI];
+        const searchableSurface& geom = allGeometry_[surfaces_[surfI]];
+
+        // See if any intersection between end and current nearest
+        geom.findLine(end, nearest, nearestInfo);
+        geom.getRegion(nearestInfo, region);
+        geom.getNormal(nearestInfo, normal);
+
+        forAll(nearestInfo, pointI)
+        {
+            if (nearestInfo[pointI].hit())
+            {
+                hit2[pointI] = nearestInfo[pointI];
+                surface2[pointI] = surfI;
+                region2[pointI] = region[pointI];
+                normal2[pointI] = normal[pointI];
+                nearest[pointI] = hit2[pointI].hitPoint();
+            }
+        }
+    }
+
+
+    // Make sure that if hit1 has hit something, hit2 will have at least the
+    // same point (due to tolerances it might miss its end point)
+    forAll(hit1, pointI)
+    {
+        if (hit1[pointI].hit() && !hit2[pointI].hit())
+        {
+            hit2[pointI] = hit1[pointI];
+            surface2[pointI] = surface1[pointI];
+            region2[pointI] = region1[pointI];
+            normal2[pointI] = normal1[pointI];
+        }
+    }
+}
+
+
 void Foam::refinementSurfaces::findAnyIntersection
 (
     const pointField& start,
diff --git a/src/mesh/autoMesh/autoHexMesh/refinementSurfaces/refinementSurfaces.H b/src/mesh/autoMesh/autoHexMesh/refinementSurfaces/refinementSurfaces.H
index b0edaec614aec610f0801cb2ea58983ca413a282..2f685ed4ff3c569ee95059e1ba87716d06c0b7ef 100644
--- a/src/mesh/autoMesh/autoHexMesh/refinementSurfaces/refinementSurfaces.H
+++ b/src/mesh/autoMesh/autoHexMesh/refinementSurfaces/refinementSurfaces.H
@@ -317,6 +317,24 @@ public:
                 labelList& region2
             ) const;
 
+            //- findNearestIntersection but also get normals
+            void findNearestIntersection
+            (
+                const labelList& surfacesToTest,
+                const pointField& start,
+                const pointField& end,
+
+                labelList& surface1,
+                List<pointIndexHit>& hit1,
+                labelList& region1,
+                vectorField& normal1,
+
+                labelList& surface2,
+                List<pointIndexHit>& hit2,
+                labelList& region2,
+                vectorField& normal2
+            ) const;
+
             //- Used for debugging only: find intersection of edge.
             void findAnyIntersection
             (
diff --git a/src/mesh/autoMesh/autoHexMesh/shellSurfaces/shellSurfaces.C b/src/mesh/autoMesh/autoHexMesh/shellSurfaces/shellSurfaces.C
index 1d8ec76b84396979b407151d3a76ecfcd76020a1..bc3289f18e13055f6189ffa357300e970e6ad499 100644
--- a/src/mesh/autoMesh/autoHexMesh/shellSurfaces/shellSurfaces.C
+++ b/src/mesh/autoMesh/autoHexMesh/shellSurfaces/shellSurfaces.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -360,84 +360,48 @@ void Foam::shellSurfaces::findHigherLevel
 Foam::shellSurfaces::shellSurfaces
 (
     const searchableSurfaces& allGeometry,
-    const PtrList<dictionary>& shellDicts
+    const dictionary& shellsDict
 )
 :
     allGeometry_(allGeometry)
 {
-    shells_.setSize(shellDicts.size());
-    modes_.setSize(shellDicts.size());
-    distances_.setSize(shellDicts.size());
-    levels_.setSize(shellDicts.size());
+    // Wilcard specification : loop over all surfaces and try to find a match.
 
-    forAll(shellDicts, shellI)
+    // Count number of shells.
+    label shellI = 0;
+    forAll(allGeometry.names(), geomI)
     {
-        const dictionary& dict = shellDicts[shellI];
-        const word name = dict.lookup("name");
-        const word type = dict.lookup("type");
+        const word& geomName = allGeometry_.names()[geomI];
 
-        shells_[shellI] = allGeometry_.findSurfaceID(name);
-
-        if (shells_[shellI] == -1)
+        if (shellsDict.found(geomName))
         {
-            FatalErrorIn
-            (
-                "shellSurfaces::shellSurfaces"
-                "(const searchableSurfaces&, const PtrList<dictionary>&)"
-            )   << "No surface called " << name << endl
-                << "Valid surfaces are " << allGeometry_.names()
-                << exit(FatalError);
+            shellI++;
         }
-
-        modes_[shellI] = refineModeNames_.read(dict.lookup("refineMode"));
-
-        // Read pairs of distance+level
-        setAndCheckLevels(shellI, dict.lookup("levels"));
     }
 
-    // Orient shell surfaces before any searching is done. Note that this
-    // only needs to be done for inside or outside. Orienting surfaces
-    // constructs lots of addressing which we want to avoid.
-    orient();
-}
 
+    // Size lists
+    shells_.setSize(shellI);
+    modes_.setSize(shellI);
+    distances_.setSize(shellI);
+    levels_.setSize(shellI);
 
-Foam::shellSurfaces::shellSurfaces
-(
-    const searchableSurfaces& allGeometry,
-    const dictionary& shellsDict
-)
-:
-    allGeometry_(allGeometry)
-{
-    shells_.setSize(shellsDict.size());
-    modes_.setSize(shellsDict.size());
-    distances_.setSize(shellsDict.size());
-    levels_.setSize(shellsDict.size());
-
-    label shellI = 0;
-    forAllConstIter(dictionary, shellsDict, iter)
+    shellI = 0;
+    forAll(allGeometry.names(), geomI)
     {
-        shells_[shellI] = allGeometry_.findSurfaceID(iter().keyword());
+        const word& geomName = allGeometry_.names()[geomI];
 
-        if (shells_[shellI] == -1)
+        if (shellsDict.found(geomName))
         {
-            FatalErrorIn
-            (
-                "shellSurfaces::shellSurfaces"
-                "(const searchableSurfaces&, const dictionary>&"
-            )   << "No surface called " << iter().keyword() << endl
-                << "Valid surfaces are " << allGeometry_.names()
-                << exit(FatalError);
-        }
-        const dictionary& dict = shellsDict.subDict(iter().keyword());
-
-        modes_[shellI] = refineModeNames_.read(dict.lookup("mode"));
+            shells_[shellI] = geomI;
+            const dictionary& dict = shellsDict.subDict(geomName);
+            modes_[shellI] = refineModeNames_.read(dict.lookup("mode"));
 
-        // Read pairs of distance+level
-        setAndCheckLevels(shellI, dict.lookup("levels"));
+            // Read pairs of distance+level
+            setAndCheckLevels(shellI, dict.lookup("levels"));
 
-        shellI++;
+            shellI++;
+        }
     }
 
     // Orient shell surfaces before any searching is done. Note that this
diff --git a/src/mesh/autoMesh/autoHexMesh/shellSurfaces/shellSurfaces.H b/src/mesh/autoMesh/autoHexMesh/shellSurfaces/shellSurfaces.H
index 96a55b5500ab0b668e77560a4ef79fad7969936f..9b0e4c9e050be2dc3c43e9f84da3489ebb2f283e 100644
--- a/src/mesh/autoMesh/autoHexMesh/shellSurfaces/shellSurfaces.H
+++ b/src/mesh/autoMesh/autoHexMesh/shellSurfaces/shellSurfaces.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -113,23 +113,6 @@ public:
 
     // Constructors
 
-        //- Construct from components
-        shellSurfaces
-        (
-            const searchableSurfaces& allGeometry,
-            const labelList& shells,
-            const List<refineMode>& modes,
-            const List<scalarField>& distances,
-            const labelListList& levels
-        );
-
-        //- Construct from geometry and dictionaries
-        shellSurfaces
-        (
-            const searchableSurfaces& allGeometry,
-            const PtrList<dictionary>& shellDicts
-        );
-
         //- Construct from geometry and dictionary
         shellSurfaces
         (
diff --git a/src/meshTools/AMIInterpolation/patches/cyclic/cyclicAMIPolyPatch/cyclicAMIPolyPatch.C b/src/meshTools/AMIInterpolation/patches/cyclic/cyclicAMIPolyPatch/cyclicAMIPolyPatch.C
index 61125254b048429f31f3a0a79bcbadf95529fc60..cd8f992236e3a214761aebc3b77f613070dc8a22 100644
--- a/src/meshTools/AMIInterpolation/patches/cyclic/cyclicAMIPolyPatch/cyclicAMIPolyPatch.C
+++ b/src/meshTools/AMIInterpolation/patches/cyclic/cyclicAMIPolyPatch/cyclicAMIPolyPatch.C
@@ -370,10 +370,11 @@ Foam::cyclicAMIPolyPatch::cyclicAMIPolyPatch
     const label size,
     const label start,
     const label index,
-    const polyBoundaryMesh& bm
+    const polyBoundaryMesh& bm,
+    const word& patchType
 )
 :
-    coupledPolyPatch(name, size, start, index, bm),
+    coupledPolyPatch(name, size, start, index, bm, patchType),
     nbrPatchName_(word::null),
     nbrPatchID_(-1),
     transform_(UNKNOWN),
@@ -395,10 +396,11 @@ Foam::cyclicAMIPolyPatch::cyclicAMIPolyPatch
     const word& name,
     const dictionary& dict,
     const label index,
-    const polyBoundaryMesh& bm
+    const polyBoundaryMesh& bm,
+    const word& patchType
 )
 :
-    coupledPolyPatch(name, dict, index, bm),
+    coupledPolyPatch(name, dict, index, bm, patchType),
     nbrPatchName_(dict.lookup("neighbourPatch")),
     nbrPatchID_(-1),
     transform_(UNKNOWN),
diff --git a/src/meshTools/AMIInterpolation/patches/cyclic/cyclicAMIPolyPatch/cyclicAMIPolyPatch.H b/src/meshTools/AMIInterpolation/patches/cyclic/cyclicAMIPolyPatch/cyclicAMIPolyPatch.H
index f1418c6f04b36498c12062587503d42258f083f2..b1f420318eedfe839e23589bf7c40d653c2adff3 100644
--- a/src/meshTools/AMIInterpolation/patches/cyclic/cyclicAMIPolyPatch/cyclicAMIPolyPatch.H
+++ b/src/meshTools/AMIInterpolation/patches/cyclic/cyclicAMIPolyPatch/cyclicAMIPolyPatch.H
@@ -160,7 +160,8 @@ public:
             const label size,
             const label start,
             const label index,
-            const polyBoundaryMesh& bm
+            const polyBoundaryMesh& bm,
+            const word& patchType
         );
 
         //- Construct from dictionary
@@ -169,7 +170,8 @@ public:
             const word& name,
             const dictionary& dict,
             const label index,
-            const polyBoundaryMesh& bm
+            const polyBoundaryMesh& bm,
+            const word& patchType
         );
 
         //- Construct as copy, resetting the boundary mesh
diff --git a/src/meshTools/algorithms/MeshWave/FaceCellWave.C b/src/meshTools/algorithms/MeshWave/FaceCellWave.C
index 27218a474a448bb205d9f0cb63be14105da7999b..bcba11321ae50f5803ad05e2cb9f53a464ff0555 100644
--- a/src/meshTools/algorithms/MeshWave/FaceCellWave.C
+++ b/src/meshTools/algorithms/MeshWave/FaceCellWave.C
@@ -55,14 +55,14 @@ namespace Foam
     {
         FaceCellWave<Type, TrackingData>& solver_;
 
-        const polyPatch& patch_;
+        const cyclicAMIPolyPatch& patch_;
 
         public:
 
             combine
             (
                 FaceCellWave<Type, TrackingData>& solver,
-                const polyPatch& patch
+                const cyclicAMIPolyPatch& patch
             )
             :
                 solver_(solver),
@@ -80,10 +80,19 @@ namespace Foam
             {
                 if (y.valid(solver_.data()))
                 {
+                    label meshFaceI = -1;
+                    if (patch_.owner())
+                    {
+                        meshFaceI = patch_.start() + faceI;
+                    }
+                    else
+                    {
+                        meshFaceI = patch_.neighbPatch().start() + faceI;
+                    }
                     x.updateFace
                     (
                         solver_.mesh(),
-                        patch_.start() + faceI,
+                        meshFaceI,
                         y,
                         solver_.propagationTol(),
                         solver_.data()
@@ -725,17 +734,18 @@ void Foam::FaceCellWave<Type, TrackingData>::handleAMICyclicPatches()
                     )
                 );
 
-                // Adapt sendInfo for leaving domain
-                const vectorField::subField fc = nbrPatch.faceCentres();
-                forAll(sendInfo, i)
+                if (!nbrPatch.parallel() || nbrPatch.separated())
                 {
-                    sendInfo[i].leaveDomain(mesh_, nbrPatch, i, fc[i], td_);
+                    // Adapt sendInfo for leaving domain
+                    const vectorField::subField fc = nbrPatch.faceCentres();
+                    forAll(sendInfo, i)
+                    {
+                        sendInfo[i].leaveDomain(mesh_, nbrPatch, i, fc[i], td_);
+                    }
                 }
 
-
                 // Transfer sendInfo to cycPatch
                 combine<Type, TrackingData> cmb(*this, cycPatch);
-
                 cycPatch.interpolate(sendInfo, cmb, receiveInfo);
             }
 
@@ -750,11 +760,14 @@ void Foam::FaceCellWave<Type, TrackingData>::handleAMICyclicPatches()
                 );
             }
 
-            // Adapt receiveInfo for entering domain
-            const vectorField::subField fc = cycPatch.faceCentres();
-            forAll(receiveInfo, i)
+            if (!cycPatch.parallel() || cycPatch.separated())
             {
-                receiveInfo[i].enterDomain(mesh_, cycPatch, i, fc[i], td_);
+                // Adapt receiveInfo for entering domain
+                const vectorField::subField fc = cycPatch.faceCentres();
+                forAll(receiveInfo, i)
+                {
+                    receiveInfo[i].enterDomain(mesh_, cycPatch, i, fc[i], td_);
+                }
             }
 
             // Merge into global storage
diff --git a/src/meshTools/mappedPatches/mappedPolyPatch/mappedPolyPatch.C b/src/meshTools/mappedPatches/mappedPolyPatch/mappedPolyPatch.C
index c87303cb0e3319109f4feb9427a059a348cf416e..804b96affbc2bbab126ef28d3849e60e07d15f70 100644
--- a/src/meshTools/mappedPatches/mappedPolyPatch/mappedPolyPatch.C
+++ b/src/meshTools/mappedPatches/mappedPolyPatch/mappedPolyPatch.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -45,10 +45,11 @@ Foam::mappedPolyPatch::mappedPolyPatch
     const label size,
     const label start,
     const label index,
-    const polyBoundaryMesh& bm
+    const polyBoundaryMesh& bm,
+    const word& patchType
 )
 :
-    polyPatch(name, size, start, index, bm),
+    polyPatch(name, size, start, index, bm, patchType),
     mappedPatchBase(static_cast<const polyPatch&>(*this))
 {}
 
@@ -66,7 +67,7 @@ Foam::mappedPolyPatch::mappedPolyPatch
     const polyBoundaryMesh& bm
 )
 :
-    polyPatch(name, size, start, index, bm),
+    polyPatch(name, size, start, index, bm, typeName),
     mappedPatchBase
     (
         static_cast<const polyPatch&>(*this),
@@ -91,7 +92,7 @@ Foam::mappedPolyPatch::mappedPolyPatch
     const polyBoundaryMesh& bm
 )
 :
-    polyPatch(name, size, start, index, bm),
+    polyPatch(name, size, start, index, bm, typeName),
     mappedPatchBase
     (
         static_cast<const polyPatch&>(*this),
@@ -108,10 +109,11 @@ Foam::mappedPolyPatch::mappedPolyPatch
     const word& name,
     const dictionary& dict,
     const label index,
-    const polyBoundaryMesh& bm
+    const polyBoundaryMesh& bm,
+    const word& patchType
 )
 :
-    polyPatch(name, dict, index, bm),
+    polyPatch(name, dict, index, bm, patchType),
     mappedPatchBase(*this, dict)
 {}
 
diff --git a/src/meshTools/mappedPatches/mappedPolyPatch/mappedPolyPatch.H b/src/meshTools/mappedPatches/mappedPolyPatch/mappedPolyPatch.H
index 32cbd1a29ae3eaf38462f7cea0ac41da02551a84..3e63482d52c5ce63d9df76b86ee840d1bf31a0c2 100644
--- a/src/meshTools/mappedPatches/mappedPolyPatch/mappedPolyPatch.H
+++ b/src/meshTools/mappedPatches/mappedPolyPatch/mappedPolyPatch.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -97,7 +97,8 @@ public:
             const label size,
             const label start,
             const label index,
-            const polyBoundaryMesh& bm
+            const polyBoundaryMesh& bm,
+            const word& patchType
         );
 
         //- Construct from components
@@ -134,7 +135,8 @@ public:
             const word& name,
             const dictionary& dict,
             const label index,
-            const polyBoundaryMesh& bm
+            const polyBoundaryMesh& bm,
+            const word& patchType
         );
 
         //- Construct as copy, resetting the boundary mesh
diff --git a/src/meshTools/mappedPatches/mappedPolyPatch/mappedVariableThicknessWallPolyPatch.C b/src/meshTools/mappedPatches/mappedPolyPatch/mappedVariableThicknessWallPolyPatch.C
index fb286890b055fb3a998661229f1d550157da3df7..6248dce65062ca655ae9a61803446329a389117d 100644
--- a/src/meshTools/mappedPatches/mappedPolyPatch/mappedVariableThicknessWallPolyPatch.C
+++ b/src/meshTools/mappedPatches/mappedPolyPatch/mappedVariableThicknessWallPolyPatch.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -56,10 +56,11 @@ Foam::mappedVariableThicknessWallPolyPatch::mappedVariableThicknessWallPolyPatch
     const label size,
     const label start,
     const label index,
-    const polyBoundaryMesh& bm
+    const polyBoundaryMesh& bm,
+    const word& patchType
 )
 :
-    mappedWallPolyPatch(name, size, start, index, bm),
+    mappedWallPolyPatch(name, size, start, index, bm, patchType),
     thickness_(size)
 {}
 
@@ -77,7 +78,7 @@ Foam::mappedVariableThicknessWallPolyPatch::mappedVariableThicknessWallPolyPatch
     const polyBoundaryMesh& bm
 )
 :
-    mappedWallPolyPatch(name, size, start, index, bm),
+    mappedWallPolyPatch(name, size, start, index, bm, typeName),
     thickness_(size)
 {}
 
@@ -95,7 +96,7 @@ Foam::mappedVariableThicknessWallPolyPatch::mappedVariableThicknessWallPolyPatch
     const polyBoundaryMesh& bm
 )
 :
-    mappedWallPolyPatch(name, size, start, index, bm),
+    mappedWallPolyPatch(name, size, start, index, bm, typeName),
     thickness_(size)
 {}
 
@@ -105,10 +106,11 @@ Foam::mappedVariableThicknessWallPolyPatch::mappedVariableThicknessWallPolyPatch
     const word& name,
     const dictionary& dict,
     const label index,
-    const polyBoundaryMesh& bm
+    const polyBoundaryMesh& bm,
+    const word& patchType
 )
 :
-    mappedWallPolyPatch(name, dict, index, bm),
+    mappedWallPolyPatch(name, dict, index, bm, patchType),
     thickness_(scalarField("thickness", dict, this->size()))
 {}
 
diff --git a/src/meshTools/mappedPatches/mappedPolyPatch/mappedVariableThicknessWallPolyPatch.H b/src/meshTools/mappedPatches/mappedPolyPatch/mappedVariableThicknessWallPolyPatch.H
index 4a5912da5e2b110cad4cf26f55eca3d4bf9b7f80..7b7c326488eba909208d3578c1ee86e6e919efcc 100644
--- a/src/meshTools/mappedPatches/mappedPolyPatch/mappedVariableThicknessWallPolyPatch.H
+++ b/src/meshTools/mappedPatches/mappedPolyPatch/mappedVariableThicknessWallPolyPatch.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -76,7 +76,8 @@ public:
             const label size,
             const label start,
             const label index,
-            const polyBoundaryMesh& bm
+            const polyBoundaryMesh& bm,
+            const word& patchType
         );
 
         //- Construct from components
@@ -113,7 +114,8 @@ public:
             const word& name,
             const dictionary& dict,
             const label index,
-            const polyBoundaryMesh& bm
+            const polyBoundaryMesh& bm,
+            const word& patchType
         );
 
         //- Construct as copy, resetting the boundary mesh
diff --git a/src/meshTools/mappedPatches/mappedPolyPatch/mappedWallPolyPatch.C b/src/meshTools/mappedPatches/mappedPolyPatch/mappedWallPolyPatch.C
index 9894474e47e82cf773568ef37225448791b71d81..61bc54a3d0fc630d0ea2382460b604f4eeb4decb 100644
--- a/src/meshTools/mappedPatches/mappedPolyPatch/mappedWallPolyPatch.C
+++ b/src/meshTools/mappedPatches/mappedPolyPatch/mappedWallPolyPatch.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -50,10 +50,11 @@ Foam::mappedWallPolyPatch::mappedWallPolyPatch
     const label size,
     const label start,
     const label index,
-    const polyBoundaryMesh& bm
+    const polyBoundaryMesh& bm,
+    const word& patchType
 )
 :
-    wallPolyPatch(name, size, start, index, bm),
+    wallPolyPatch(name, size, start, index, bm, patchType),
     mappedPatchBase(static_cast<const polyPatch&>(*this))
 {}
 
@@ -71,7 +72,7 @@ Foam::mappedWallPolyPatch::mappedWallPolyPatch
     const polyBoundaryMesh& bm
 )
 :
-    wallPolyPatch(name, size, start, index, bm),
+    wallPolyPatch(name, size, start, index, bm, typeName),
     mappedPatchBase
     (
         static_cast<const polyPatch&>(*this),
@@ -96,7 +97,7 @@ Foam::mappedWallPolyPatch::mappedWallPolyPatch
     const polyBoundaryMesh& bm
 )
 :
-    wallPolyPatch(name, size, start, index, bm),
+    wallPolyPatch(name, size, start, index, bm, typeName),
     mappedPatchBase
     (
         static_cast<const polyPatch&>(*this),
@@ -113,10 +114,11 @@ Foam::mappedWallPolyPatch::mappedWallPolyPatch
     const word& name,
     const dictionary& dict,
     const label index,
-    const polyBoundaryMesh& bm
+    const polyBoundaryMesh& bm,
+    const word& patchType
 )
 :
-    wallPolyPatch(name, dict, index, bm),
+    wallPolyPatch(name, dict, index, bm, patchType),
     mappedPatchBase(*this, dict)
 {}
 
diff --git a/src/meshTools/mappedPatches/mappedPolyPatch/mappedWallPolyPatch.H b/src/meshTools/mappedPatches/mappedPolyPatch/mappedWallPolyPatch.H
index 8590eeb24618a2f067177ae66f8a1c75d2a7faaa..e4c7e6464736992058a549aad9fb84678f7979ac 100644
--- a/src/meshTools/mappedPatches/mappedPolyPatch/mappedWallPolyPatch.H
+++ b/src/meshTools/mappedPatches/mappedPolyPatch/mappedWallPolyPatch.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -97,7 +97,8 @@ public:
             const label size,
             const label start,
             const label index,
-            const polyBoundaryMesh& bm
+            const polyBoundaryMesh& bm,
+            const word& patchType
         );
 
         //- Construct from components
@@ -134,7 +135,8 @@ public:
             const word& name,
             const dictionary& dict,
             const label index,
-            const polyBoundaryMesh& bm
+            const polyBoundaryMesh& bm,
+            const word& patchType
         );
 
         //- Construct as copy, resetting the boundary mesh
diff --git a/src/postProcessing/functionObjects/forces/Make/options b/src/postProcessing/functionObjects/forces/Make/options
index 72bbb01e6b440f263d6e8fd5811ff805cf793fa6..afc10fb1aad15a165291f66c0861d7362061da13 100644
--- a/src/postProcessing/functionObjects/forces/Make/options
+++ b/src/postProcessing/functionObjects/forces/Make/options
@@ -11,7 +11,7 @@ LIB_LIBS = \
     -lincompressibleTransportModels \
     -lincompressibleRASModels \
     -lincompressibleLESModels \
-    -lbasicThermophysicalModels \
+    -lfluidThermophysicalModels \
     -lspecie \
     -lcompressibleRASModels \
     -lcompressibleLESModels \
diff --git a/src/postProcessing/functionObjects/forces/forces/forces.C b/src/postProcessing/functionObjects/forces/forces/forces.C
index ff9ba3a4e3e749c46189eb80334f68df95f95d53..cf835d66ef607f78889ed8e01a97783bd069e1a5 100644
--- a/src/postProcessing/functionObjects/forces/forces/forces.C
+++ b/src/postProcessing/functionObjects/forces/forces/forces.C
@@ -33,7 +33,7 @@ License
 #include "incompressible/RAS/RASModel/RASModel.H"
 #include "incompressible/LES/LESModel/LESModel.H"
 
-#include "basicThermo.H"
+#include "fluidThermo.H"
 #include "compressible/RAS/RASModel/RASModel.H"
 #include "compressible/LES/LESModel/LESModel.H"
 
@@ -75,10 +75,10 @@ Foam::tmp<Foam::volSymmTensorField> Foam::forces::devRhoReff() const
 
         return rho()*les.devReff();
     }
-    else if (obr_.foundObject<basicThermo>("thermophysicalProperties"))
+    else if (obr_.foundObject<fluidThermo>("thermophysicalProperties"))
     {
-        const basicThermo& thermo =
-             obr_.lookupObject<basicThermo>("thermophysicalProperties");
+        const fluidThermo& thermo =
+             obr_.lookupObject<fluidThermo>("thermophysicalProperties");
 
         const volVectorField& U = obr_.lookupObject<volVectorField>(UName_);
 
diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.C b/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.C
index 47b15f0681b7ca73e72fa471a849b0a225db670a..351e5120def54fb6a0e04e58fef5dc32a381657c 100644
--- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.C
+++ b/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -52,7 +52,8 @@ sixDoFRigidBodyDisplacementPointPatchVectorField
     rhoInf_(1.0),
     rhoName_("rho"),
     lookupGravity_(-1),
-    g_(vector::zero)
+    g_(vector::zero),
+    relaxationFactor_(1)
 {}
 
 
@@ -69,7 +70,8 @@ sixDoFRigidBodyDisplacementPointPatchVectorField
     rhoInf_(1.0),
     rhoName_(dict.lookupOrDefault<word>("rhoName", "rho")),
     lookupGravity_(-1),
-    g_(vector::zero)
+    g_(vector::zero),
+    relaxationFactor_(dict.lookupOrDefault<scalar>("relaxationFactor", 1))
 {
     if (rhoName_ == "rhoInf")
     {
@@ -112,7 +114,8 @@ sixDoFRigidBodyDisplacementPointPatchVectorField
     rhoInf_(ptf.rhoInf_),
     rhoName_(ptf.rhoName_),
     lookupGravity_(ptf.lookupGravity_),
-    g_(ptf.g_)
+    g_(ptf.g_),
+    relaxationFactor_(ptf.relaxationFactor_)
 {}
 
 
@@ -129,7 +132,8 @@ sixDoFRigidBodyDisplacementPointPatchVectorField
     rhoInf_(ptf.rhoInf_),
     rhoName_(ptf.rhoName_),
     lookupGravity_(ptf.lookupGravity_),
-    g_(ptf.g_)
+    g_(ptf.g_),
+    relaxationFactor_(ptf.relaxationFactor_)
 {}
 
 
@@ -235,7 +239,11 @@ void sixDoFRigidBodyDisplacementPointPatchVectorField::updateCoeffs()
 
     Field<vector>::operator=
     (
-        motion_.currentPosition(initialPoints_) - initialPoints_
+        relaxationFactor_
+       *(
+           motion_.currentPosition(initialPoints_)
+         - initialPoints_
+       )
     );
 
     fixedValuePointPatchField<vector>::updateCoeffs();
@@ -258,6 +266,9 @@ void sixDoFRigidBodyDisplacementPointPatchVectorField::write(Ostream& os) const
         os.writeKeyword("g") << g_ << token::END_STATEMENT << nl;
     }
 
+    os.writeKeyword("relaxationFactor")
+        << relaxationFactor_ << token::END_STATEMENT << nl;
+
     motion_.write(os);
 
     initialPoints_.writeEntry("initialPoints", os);
diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.H b/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.H
index 697c60c88beee50d33f4ee14a8b62e496b25a834..db17ef3fae7444467023b5d9a7f055de18e451b4 100644
--- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.H
+++ b/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -84,6 +84,9 @@ class sixDoFRigidBodyDisplacementPointPatchVectorField
         //- Gravity vector to store when not available from the db
         vector g_;
 
+        //- Optional under-relaxation factor for the motion
+        scalar relaxationFactor_;
+
 
 public:
 
diff --git a/src/postProcessing/functionObjects/utilities/Make/options b/src/postProcessing/functionObjects/utilities/Make/options
index 9acdda40ef3fdbd183628ef0ab4f6acc8a9754d8..61713e09134be2aac6a3f6db5eeb15df2d08953b 100644
--- a/src/postProcessing/functionObjects/utilities/Make/options
+++ b/src/postProcessing/functionObjects/utilities/Make/options
@@ -22,4 +22,4 @@ LIB_LIBS = \
     -lincompressibleRASModels \
     -lcompressibleLESModels \
     -lincompressibleLESModels \
-    -lbasicThermophysicalModels
+    -lfluidThermophysicalModels
diff --git a/src/regionModels/pyrolysisModels/Make/options b/src/regionModels/pyrolysisModels/Make/options
index 3cc3bc07d913972d44ebac22f85f85c509bb328d..6f12d7c8eee897ccab1b0367986930e6cc3e1b08 100644
--- a/src/regionModels/pyrolysisModels/Make/options
+++ b/src/regionModels/pyrolysisModels/Make/options
@@ -5,7 +5,7 @@ EXE_INC = \
     -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/solid/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
-    -I$(LIB_SRC)/thermophysicalModels/basicSolidThermo/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/solidThermo/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/solidChemistryModel/lnInclude \
     -I$(LIB_SRC)/turbulenceModels \
     -I$(LIB_SRC)/turbulenceModels/compressible/turbulenceModel/lnInclude \
@@ -21,7 +21,7 @@ LIB_LIBS = \
     -lspecie \
     -lspecie \
     -lsolid \
-    -lbasicThermophysicalModels \
+    -lfluidThermophysicalModels \
     -lsolidChemistryModel \
     -lcompressibleTurbulenceModel \
     -lcompressibleRASModels \
diff --git a/src/regionModels/pyrolysisModels/noPyrolysis/noPyrolysis.H b/src/regionModels/pyrolysisModels/noPyrolysis/noPyrolysis.H
index 952174f7b84c3d1be37220dc680753dd5f5b4a47..808b5d780049a4784b76d1edb6d15c9e5b5e014d 100644
--- a/src/regionModels/pyrolysisModels/noPyrolysis/noPyrolysis.H
+++ b/src/regionModels/pyrolysisModels/noPyrolysis/noPyrolysis.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -77,7 +77,7 @@ protected:
         //- Read control parameters from dictionary
         virtual bool read(const dictionary& dict);
 
-        //- Reset solidChemistryModel and basicSolidThermo pointers
+        //- Reset solidChemistryModel and solidThermo pointers
         void constructThermoChemistry();
 
         //- Reference to the solid chemistry model
diff --git a/src/regionModels/pyrolysisModels/pyrolysisModel/pyrolysisModel.C b/src/regionModels/pyrolysisModels/pyrolysisModel/pyrolysisModel.C
index a238f0f34eb8a49034894750aa285a78f874765d..b64afa0be661e17ce5bcc904be0229c95b683dc5 100644
--- a/src/regionModels/pyrolysisModels/pyrolysisModel/pyrolysisModel.C
+++ b/src/regionModels/pyrolysisModels/pyrolysisModel/pyrolysisModel.C
@@ -203,7 +203,7 @@ void pyrolysisModel::preEvolveRegion()
 
 scalar pyrolysisModel::solidRegionDiffNo() const
 {
-    return VSMALL;
+    return -GREAT;
 }
 
 
diff --git a/src/regionModels/pyrolysisModels/reactingOneDim/reactingOneDim.C b/src/regionModels/pyrolysisModels/reactingOneDim/reactingOneDim.C
index 05c6c7b9a24d3e06233226e47df81df5bf678e88..87294c60969cb45ca2385eebac784f69f5f8cc19 100644
--- a/src/regionModels/pyrolysisModels/reactingOneDim/reactingOneDim.C
+++ b/src/regionModels/pyrolysisModels/reactingOneDim/reactingOneDim.C
@@ -612,7 +612,7 @@ scalar reactingOneDim::addMassSources(const label patchI, const label faceI)
 
 scalar reactingOneDim::solidRegionDiffNo() const
 {
-    scalar DiNum = 0.0;
+    scalar DiNum = -GREAT;
 
     if (regionMesh().nInternalFaces() > 0)
     {
diff --git a/src/regionModels/regionCoupling/Make/options b/src/regionModels/regionCoupling/Make/options
index 9182aa4de1429072e303a2af1b22cec2931b5039..4eaef77e23fdb8a64cf01f11691b13a6f70283ad 100644
--- a/src/regionModels/regionCoupling/Make/options
+++ b/src/regionModels/regionCoupling/Make/options
@@ -7,7 +7,7 @@ EXE_INC = \
     -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/solid/lnInclude \
-    -I$(LIB_SRC)/thermophysicalModels/basicSolidThermo/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/solidThermo/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/solidChemistryModel/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/radiationModels/lnInclude \
     -I$(LIB_SRC)/turbulenceModels \
diff --git a/src/regionModels/surfaceFilmModels/Make/options b/src/regionModels/surfaceFilmModels/Make/options
index 6543081f228e78b4a467a3a30252bee3cb985cc7..fc580a43f8046c72a05843029279afc60bc7e6f3 100644
--- a/src/regionModels/surfaceFilmModels/Make/options
+++ b/src/regionModels/surfaceFilmModels/Make/options
@@ -19,7 +19,7 @@ EXE_INC = \
 LIB_LIBS = \
     -lfiniteVolume \
     -lmeshTools \
-    -lbasicThermophysicalModels \
+    -lfluidThermophysicalModels \
     -lspecie \
     -lliquidProperties \
     -lliquidMixtureProperties \
diff --git a/src/regionModels/thermoBaffleModels/Make/options b/src/regionModels/thermoBaffleModels/Make/options
index ab3ee6e0b88f3a80be8c0fb1ab0020cf988f955e..88c8955f9171fbf65f1b41046e9068de48e2da12 100644
--- a/src/regionModels/thermoBaffleModels/Make/options
+++ b/src/regionModels/thermoBaffleModels/Make/options
@@ -1,6 +1,6 @@
 EXE_INC = \
     -I$(LIB_SRC)/regionModels/regionModel/lnInclude \
-    -I$(LIB_SRC)/thermophysicalModels/basicSolidThermo/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/solidThermo/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/solid/lnInclude \
     -I$(LIB_SRC)/finiteVolume/lnInclude \
     -I$(LIB_SRC)/meshTools/lnInclude \
@@ -12,7 +12,7 @@ EXE_INC = \
 
 LIB_LIBS = \
     -lregionModels \
-    -lbasicSolidThermo \
+    -lsolidThermo \
     -lcompressibleTurbulenceModel \
     -lfiniteVolume \
     -lmeshTools \
diff --git a/src/regionModels/thermoBaffleModels/derivedFvPatchFields/temperatureThermoBaffle/temperatureThermoBaffleFvPatchScalarField.H b/src/regionModels/thermoBaffleModels/derivedFvPatchFields/temperatureThermoBaffle/temperatureThermoBaffleFvPatchScalarField.H
index cc1ee4bd9edb052bae5f4d94ede752553f823128..db06dce676d2125cbe924510d63681f008179627 100644
--- a/src/regionModels/thermoBaffleModels/derivedFvPatchFields/temperatureThermoBaffle/temperatureThermoBaffleFvPatchScalarField.H
+++ b/src/regionModels/thermoBaffleModels/derivedFvPatchFields/temperatureThermoBaffle/temperatureThermoBaffleFvPatchScalarField.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -41,7 +41,7 @@ Description
 
     // Coupled BC.
     neighbourFieldName  T;
-    kappa               basicThermo;
+    kappa               fluidThermo;
     KName               none;
 
 
@@ -62,7 +62,7 @@ Description
             <constIsoSolidTransport
                 <constSolidRad
                     <specieThermo
-                        <constSolidThermo<constRho>,sensibleEnthalpy>
+                        <hConstThermo<incompressible>,sensibleEnthalpy>
                     >
                  >
             >
diff --git a/src/regionModels/thermoBaffleModels/noThermo/noThermo.H b/src/regionModels/thermoBaffleModels/noThermo/noThermo.H
index e370f797a97fb22b60af695b4985774b34b83bd1..8144dad5863076d2b8b29fcc828ee11baab17c1e 100644
--- a/src/regionModels/thermoBaffleModels/noThermo/noThermo.H
+++ b/src/regionModels/thermoBaffleModels/noThermo/noThermo.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -104,7 +104,7 @@ public:
 
          // Thermo properties
 
-            //- Return const reference to the basicSolidThermo
+            //- Return const reference to the solidThermo
             virtual const solidThermo& thermo() const;
 
 
diff --git a/src/sampling/sampledSurface/sampledSurfaces/sampledSurfaces.C b/src/sampling/sampledSurface/sampledSurfaces/sampledSurfaces.C
index 778d33871ce6b38438605d4a7fb3aa6faff4ca7d..1d3172f2d8987d477c5d9cc6c04a649006d59fdd 100644
--- a/src/sampling/sampledSurface/sampledSurfaces/sampledSurfaces.C
+++ b/src/sampling/sampledSurface/sampledSurfaces/sampledSurfaces.C
@@ -164,19 +164,17 @@ void Foam::sampledSurfaces::write()
             writeGeometry();
         }
 
-        const IOobjectList objects(mesh_, mesh_.time().timeName());
-
-        sampleAndWrite<volScalarField>(objects);
-        sampleAndWrite<volVectorField>(objects);
-        sampleAndWrite<volSphericalTensorField>(objects);
-        sampleAndWrite<volSymmTensorField>(objects);
-        sampleAndWrite<volTensorField>(objects);
-
-        sampleAndWrite<surfaceScalarField>(objects);
-        sampleAndWrite<surfaceVectorField>(objects);
-        sampleAndWrite<surfaceSphericalTensorField>(objects);
-        sampleAndWrite<surfaceSymmTensorField>(objects);
-        sampleAndWrite<surfaceTensorField>(objects);
+        sampleAndWrite<volScalarField>(mesh_);
+        sampleAndWrite<volVectorField>(mesh_);
+        sampleAndWrite<volSphericalTensorField>(mesh_);
+        sampleAndWrite<volSymmTensorField>(mesh_);
+        sampleAndWrite<volTensorField>(mesh_);
+
+        sampleAndWrite<surfaceScalarField>(mesh_);
+        sampleAndWrite<surfaceVectorField>(mesh_);
+        sampleAndWrite<surfaceSphericalTensorField>(mesh_);
+        sampleAndWrite<surfaceSymmTensorField>(mesh_);
+        sampleAndWrite<surfaceTensorField>(mesh_);
     }
 }
 
diff --git a/src/sampling/sampledSurface/sampledSurfaces/sampledSurfaces.H b/src/sampling/sampledSurface/sampledSurfaces/sampledSurfaces.H
index ebff3bd94d8249db3fc4063dc4dc789953aea7e3..15e34a7983d6a2b9068855cf9cacd8face3e81c6 100644
--- a/src/sampling/sampledSurface/sampledSurfaces/sampledSurfaces.H
+++ b/src/sampling/sampledSurface/sampledSurfaces/sampledSurfaces.H
@@ -158,9 +158,9 @@ class sampledSurfaces
             const GeometricField<Type, fvsPatchField, surfaceMesh>&
         );
 
-        //- Sample and write all the fields of the given type
+        //- Sample and write all sampled fields
         template<class Type>
-        void sampleAndWrite(const IOobjectList& allObjects);
+        void sampleAndWrite(const fvMesh&);
 
         //- Disallow default bitwise copy construct and assignment
         sampledSurfaces(const sampledSurfaces&);
diff --git a/src/sampling/sampledSurface/sampledSurfaces/sampledSurfacesTemplates.C b/src/sampling/sampledSurface/sampledSurfaces/sampledSurfacesTemplates.C
index 46b39ccb61aed15f9c113089cc3941c6288b7209..f85f0e155d5726bc7c1779dd8d9f643d33792499 100644
--- a/src/sampling/sampledSurface/sampledSurfaces/sampledSurfacesTemplates.C
+++ b/src/sampling/sampledSurface/sampledSurfaces/sampledSurfacesTemplates.C
@@ -166,40 +166,33 @@ void Foam::sampledSurfaces::sampleAndWrite
 
 
 template<class GeoField>
-void Foam::sampledSurfaces::sampleAndWrite(const IOobjectList& allObjects)
+void Foam::sampledSurfaces::sampleAndWrite(const fvMesh& mesh)
 {
-    IOobjectList fields = allObjects.lookupClass(GeoField::typeName);
-    forAllConstIter(IOobjectList, fields, fieldIter)
+    forAll (fieldSelection_, fieldI)
     {
-        forAll (fieldSelection_, fieldI)
+        const wordRe field = fieldSelection_[fieldI];
+
+        if (mesh.thisDb().foundObject<GeoField>(field))
         {
-            const wordRe field = fieldSelection_[fieldI];
-            if (field.match(fieldIter()->name()))
+            if (Pstream::master() && verbose_)
             {
-                if (Pstream::master() && verbose_)
-                {
-                    Pout<< "sampleAndWrite: " << field << endl;
-                }
-
-                if (loadFromFiles_)
-                {
-                    fieldIter()->readOpt() = IOobject::MUST_READ;
-                    sampleAndWrite
-                    (
-                        GeoField
-                        (
-                            *fieldIter(),
-                            mesh_
-                        )
-                    );
-                }
-                else
-                {
-                    sampleAndWrite
-                    (
-                        mesh_.lookupObject<GeoField>(fieldIter()->name())
-                    );
-                }
+                Pout<< "sampleAndWrite: " << field << endl;
+            }
+
+            if (loadFromFiles_)
+            {
+                const GeoField& geoField =
+                    mesh.thisDb().lookupObject<GeoField>(field);
+
+                const_cast<GeoField&>(geoField).readOpt() = IOobject::MUST_READ;
+                sampleAndWrite(geoField);
+            }
+            else
+            {
+                sampleAndWrite
+                (
+                    mesh.thisDb().lookupObject<GeoField>(field)
+                );
             }
         }
     }
diff --git a/src/thermophysicalModels/Allwmake b/src/thermophysicalModels/Allwmake
index 7927a97e693260e8d39e0d29c45cfe5ee2f4d526..72255b94397fc4131b0f5d90339259fa08a2af6d 100755
--- a/src/thermophysicalModels/Allwmake
+++ b/src/thermophysicalModels/Allwmake
@@ -4,7 +4,6 @@ makeType=${1:-libso}
 set -x
 
 wmake $makeType specie
-wmake $makeType solid
 wmake $makeType thermophysicalFunctions
 ./properties/Allwmake $*
 
@@ -16,8 +15,8 @@ wmake $makeType barotropicCompressibilityModel
 wmake $makeType thermalPorousZone
 wmake $makeType SLGThermo
 
-# Should be combined with solids&solidMixture
-wmake $makeType basicSolidThermo
+wmake $makeType solidSpecie
+wmake $makeType solidThermo
 wmake $makeType solidChemistryModel
 
 wmake $makeType radiationModels
diff --git a/src/thermophysicalModels/SLGThermo/SLGThermo/SLGThermo.C b/src/thermophysicalModels/SLGThermo/SLGThermo/SLGThermo.C
index c6b9647ff776516893fb4c6c65676c706703575a..86cbb9f5093c675984bfcd25e629ba0812424e49 100644
--- a/src/thermophysicalModels/SLGThermo/SLGThermo/SLGThermo.C
+++ b/src/thermophysicalModels/SLGThermo/SLGThermo/SLGThermo.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -35,7 +35,7 @@ namespace Foam
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::SLGThermo::SLGThermo(const fvMesh& mesh, basicThermo& thermo)
+Foam::SLGThermo::SLGThermo(const fvMesh& mesh, fluidThermo& thermo)
 :
     MeshObject<fvMesh, SLGThermo>(mesh),
     thermo_(thermo),
@@ -91,7 +91,7 @@ Foam::SLGThermo::~SLGThermo()
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-const Foam::basicThermo& Foam::SLGThermo::thermo() const
+const Foam::fluidThermo& Foam::SLGThermo::thermo() const
 {
     return thermo_;
 }
diff --git a/src/thermophysicalModels/SLGThermo/SLGThermo/SLGThermo.H b/src/thermophysicalModels/SLGThermo/SLGThermo/SLGThermo.H
index 2460ee5821cec46f2d9dd38b209ec92b9ac33cd8..22508c38444c24b145c07f1b51a79adfdb891949 100644
--- a/src/thermophysicalModels/SLGThermo/SLGThermo/SLGThermo.H
+++ b/src/thermophysicalModels/SLGThermo/SLGThermo/SLGThermo.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -46,7 +46,7 @@ SourceFiles
 #define SLGThermo_H
 
 #include "MeshObject.H"
-#include "basicThermo.H"
+#include "fluidThermo.H"
 #include "basicMultiComponentMixture.H"
 #include "liquidMixtureProperties.H"
 #include "solidMixtureProperties.H"
@@ -67,7 +67,7 @@ class SLGThermo
     // Private data
 
         //- Thermo package
-        basicThermo& thermo_;
+        fluidThermo& thermo_;
 
         //- Reference to the multi-component carrier phase thermo
         basicMultiComponentMixture* carrier_;
@@ -87,7 +87,7 @@ public:
     // Constructors
 
         //- Construct from mesh
-        SLGThermo(const fvMesh& mesh, basicThermo& thermo);
+        SLGThermo(const fvMesh& mesh, fluidThermo& thermo);
 
 
     //- Destructor
@@ -99,7 +99,7 @@ public:
         // Access
 
             //- Return reference to the thermo database
-            const basicThermo& thermo() const;
+            const fluidThermo& thermo() const;
 
             //- Return reference to the gaseous components
             const basicMultiComponentMixture& carrier() const;
diff --git a/src/thermophysicalModels/basic/Make/files b/src/thermophysicalModels/basic/Make/files
index edeb0bf66c8cf9b30eeaa26a019bdb02d116ee0b..f49b474762a378a019eb3adf8d5190b43dd260a4 100644
--- a/src/thermophysicalModels/basic/Make/files
+++ b/src/thermophysicalModels/basic/Make/files
@@ -4,6 +4,9 @@ mixtures/basicMixture/basicMixtures.C
 basicThermo/basicThermo.C
 basicThermo/basicThermoNew.C
 
+fluidThermo/fluidThermo.C
+fluidThermo/fluidThermoNew.C
+
 psiThermo/psiThermo/psiThermo.C
 psiThermo/psiThermo/psiThermoNew.C
 psiThermo/hePsiThermo/hePsiThermos.C
@@ -19,4 +22,4 @@ derivedFvPatchFields/energyJump/energyJumpFvPatchScalarField.C
 
 derivedFvPatchFields/wallHeatTransfer/wallHeatTransferFvPatchScalarField.C
 
-LIB = $(FOAM_LIBBIN)/libbasicThermophysicalModels
+LIB = $(FOAM_LIBBIN)/libfluidThermophysicalModels
diff --git a/src/thermophysicalModels/basic/basicThermo/basicThermo.C b/src/thermophysicalModels/basic/basicThermo/basicThermo.C
index 1390c214a2b19da841e4b78d0ca1fdf79a992bc6..a2ad3c88f7d340257ddb0e1f0202ad19e1efbbce 100644
--- a/src/thermophysicalModels/basic/basicThermo/basicThermo.C
+++ b/src/thermophysicalModels/basic/basicThermo/basicThermo.C
@@ -24,14 +24,7 @@ License
 \*---------------------------------------------------------------------------*/
 
 #include "basicThermo.H"
-#include "fvMesh.H"
-#include "HashTable.H"
-#include "zeroGradientFvPatchFields.H"
-#include "fixedEnergyFvPatchScalarField.H"
-#include "gradientEnergyFvPatchScalarField.H"
-#include "mixedEnergyFvPatchScalarField.H"
-#include "temperatureJumpFvPatchScalarField.H"
-#include "energyJumpFvPatchScalarField.H"
+
 
 /* * * * * * * * * * * * * * * private static data * * * * * * * * * * * * * */
 
@@ -71,20 +64,6 @@ Foam::basicThermo::basicThermo(const fvMesh& mesh)
         mesh
     ),
 
-    psi_
-    (
-        IOobject
-        (
-            "psi",
-            mesh.time().timeName(),
-            mesh,
-            IOobject::NO_READ,
-            IOobject::NO_WRITE
-        ),
-        mesh,
-        dimensionSet(0, -2, 2, 0, 0)
-    ),
-
     T_
     (
         IOobject
@@ -98,20 +77,6 @@ Foam::basicThermo::basicThermo(const fvMesh& mesh)
         mesh
     ),
 
-    mu_
-    (
-        IOobject
-        (
-            "mu",
-            mesh.time().timeName(),
-            mesh,
-            IOobject::NO_READ,
-            IOobject::NO_WRITE
-        ),
-        mesh,
-        dimensionSet(1, -1, -1, 0, 0)
-    ),
-
     alpha_
     (
         IOobject
@@ -124,12 +89,17 @@ Foam::basicThermo::basicThermo(const fvMesh& mesh)
         ),
         mesh,
         dimensionSet(1, -1, -1, 0, 0)
-    )
-{}
+    ),
 
+    dpdt_(lookupOrDefault<Switch>("dpdt", true))
+{}
 
 
-Foam::basicThermo::basicThermo(const fvMesh& mesh, const dictionary& dict)
+Foam::basicThermo::basicThermo
+(
+    const fvMesh& mesh,
+    const dictionary& dict
+)
 :
     IOdictionary
     (
@@ -157,20 +127,6 @@ Foam::basicThermo::basicThermo(const fvMesh& mesh, const dictionary& dict)
         mesh
     ),
 
-    psi_
-    (
-        IOobject
-        (
-            "psi",
-            mesh.time().timeName(),
-            mesh,
-            IOobject::NO_READ,
-            IOobject::NO_WRITE
-        ),
-        mesh,
-        dimensionSet(0, -2, 2, 0, 0)
-    ),
-
     T_
     (
         IOobject
@@ -184,20 +140,6 @@ Foam::basicThermo::basicThermo(const fvMesh& mesh, const dictionary& dict)
         mesh
     ),
 
-    mu_
-    (
-        IOobject
-        (
-            "mu",
-            mesh.time().timeName(),
-            mesh,
-            IOobject::NO_READ,
-            IOobject::NO_WRITE
-        ),
-        mesh,
-        dimensionSet(1, -1, -1, 0, 0)
-    ),
-
     alpha_
     (
         IOobject
@@ -234,24 +176,12 @@ const Foam::volScalarField& Foam::basicThermo::p() const
 }
 
 
-const Foam::volScalarField& Foam::basicThermo::psi() const
-{
-    return psi_;
-}
-
-
 const Foam::volScalarField& Foam::basicThermo::T() const
 {
     return T_;
 }
 
 
-const Foam::volScalarField& Foam::basicThermo::mu() const
-{
-    return mu_;
-}
-
-
 const Foam::volScalarField& Foam::basicThermo::alpha() const
 {
     return alpha_;
diff --git a/src/thermophysicalModels/basic/basicThermo/basicThermo.H b/src/thermophysicalModels/basic/basicThermo/basicThermo.H
index e4a70aeef8dbff04121d23e9461152a3c2f1e978..c9559d4ef0a8feb996c5b8a77b5c8a664d1c4fcd 100644
--- a/src/thermophysicalModels/basic/basicThermo/basicThermo.H
+++ b/src/thermophysicalModels/basic/basicThermo/basicThermo.H
@@ -25,7 +25,7 @@ Class
     Foam::basicThermo
 
 Description
-    Basic thermodynamic properties
+    Abstract base-class for fluid and solid thermodynamic properties
 
 SourceFiles
     basicThermo.C
@@ -64,18 +64,14 @@ protected:
             //- Pressure [Pa]
             volScalarField p_;
 
-            //- Compressibility [s^2/m^2]
-            volScalarField psi_;
-
             //- Temperature [K]
             volScalarField T_;
 
-            //- Laminar dynamic viscosity [kg/m/s]
-            volScalarField mu_;
-
             //- Laminar thermal diffusuvity [kg/m/s]
             volScalarField alpha_;
 
+        //- Should the dpdt term be included in the enthalpy equation
+        Switch dpdt_;
 
         //- Construct as copy (not implemented)
         basicThermo(const basicThermo&);
@@ -118,6 +114,20 @@ public:
         //- Update properties
         virtual void correct() = 0;
 
+        //- Return true if the equation of state is incompressible
+        //  i.e. rho != f(p)
+        virtual bool incompressible() const = 0;
+
+        //- Return true if the equation of state is isochoric
+        //  i.e. rho = const
+        virtual bool isochoric() const = 0;
+
+        //- Should the dpdt term be included in the enthalpy equation
+        Switch dpdt() const
+        {
+            return dpdt_;
+        }
+
 
         // Access to thermodynamic state variables
 
@@ -131,9 +141,6 @@ public:
             //- Density [kg/m^3]
             virtual tmp<volScalarField> rho() const = 0;
 
-            //- Compressibility [s^2/m^2]
-            virtual const volScalarField& psi() const;
-
             //- Enthalpy/Internal energy [J/kg]
             //  Non-const access allowed for transport equations
             virtual volScalarField& he() = 0;
@@ -242,9 +249,6 @@ public:
 
         // Access to transport state variables
 
-            //- Dynamic viscosity of mixture [kg/m/s]
-            virtual const volScalarField& mu() const;
-
             //- Thermal diffusivity for enthalpy of mixture [kg/m/s]
             virtual const volScalarField& alpha() const;
 
diff --git a/src/thermophysicalModels/solid/thermo/const/constSolidThermo.C b/src/thermophysicalModels/basic/fluidThermo/fluidThermo.C
similarity index 63%
rename from src/thermophysicalModels/solid/thermo/const/constSolidThermo.C
rename to src/thermophysicalModels/basic/fluidThermo/fluidThermo.C
index ddcd3af3ef16bb7361a7478c094042defc97c505..e62ae73c6592af6ebb87ebd46e00416728298348 100644
--- a/src/thermophysicalModels/solid/thermo/const/constSolidThermo.C
+++ b/src/thermophysicalModels/basic/fluidThermo/fluidThermo.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -23,39 +23,36 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "constSolidThermo.H"
-#include "IOstreams.H"
+#include "fluidThermo.H"
+
+/* * * * * * * * * * * * * * * private static data * * * * * * * * * * * * * */
+
+namespace Foam
+{
+    defineTypeNameAndDebug(fluidThermo, 0);
+    defineRunTimeSelectionTable(fluidThermo, fvMesh);
+}
+
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-template<class rhoType>
-Foam::constSolidThermo<rhoType>::constSolidThermo
-(
-    const dictionary& dict
-)
+Foam::fluidThermo::fluidThermo(const fvMesh& mesh)
 :
-    rhoType(dict),
-    Cp_(readScalar(dict.subDict("thermodynamics").lookup("Cp"))),
-    Hf_(readScalar(dict.subDict("thermodynamics").lookup("Hf")))
+    basicThermo(mesh)
 {}
 
 
-// * * * * * * * * * * * * * * * Ostream Operator  * * * * * * * * * * * * * //
 
+Foam::fluidThermo::fluidThermo(const fvMesh& mesh, const dictionary& dict)
+:
+    basicThermo(mesh, dict)
+{}
 
-template<class rhoType>
-Foam::Ostream& Foam::operator<<
-(
-    Ostream& os,
-    const constSolidThermo<rhoType>& ct
-)
-{
-    os  << static_cast<const rhoType&>(ct) << tab
-        << ct.Cp_ << tab << ct.Hf_;
 
-    os.check("Ostream& operator<<(Ostream& os, const constSolidThermo& ct)");
-    return os;
-}
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::fluidThermo::~fluidThermo()
+{}
 
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/solid/rhoType/const/constRho.H b/src/thermophysicalModels/basic/fluidThermo/fluidThermo.H
similarity index 51%
rename from src/thermophysicalModels/solid/rhoType/const/constRho.H
rename to src/thermophysicalModels/basic/fluidThermo/fluidThermo.H
index d19255230e3f47201a88ac72f29f2e45f6cceb68..d1b7f23bdfb9f3431bd403089986596c87a42188 100644
--- a/src/thermophysicalModels/solid/rhoType/const/constRho.H
+++ b/src/thermophysicalModels/basic/fluidThermo/fluidThermo.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -22,102 +22,80 @@ License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
 Class
-    Foam::constRho
+    Foam::fluidThermo
 
 Description
-    rho constant
+    Fundamental fluid thermodynamic properties
 
 SourceFiles
-    constRhoI.H
-    constRho.C
+    fluidThermo.C
+    fluidThermoNew.C
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef constRho_H
-#define constRho_H
+#ifndef fluidThermo_H
+#define fluidThermo_H
 
-#include "dictionary.H"
-#include "specie.H"
-#include "autoPtr.H"
+#include "basicThermo.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 namespace Foam
 {
 
-
-class constRho;
-
-inline constRho operator*
-(
-    const scalar,
-    const constRho&
-);
-
-
 /*---------------------------------------------------------------------------*\
-                           Class constRho Declaration
+                        Class fluidThermo Declaration
 \*---------------------------------------------------------------------------*/
 
-class constRho
+class fluidThermo
 :
-    public specie
+    public basicThermo
 {
-    // Private data
-
-        //- Density [kg/m3]
-        scalar rho_;
-
 
 public:
 
-    // Constructors
-
+    //- Runtime type information
+    TypeName("fluidThermo");
 
-        //- Construct from dictionary
-        //constRho(Istream&);
-        constRho(const dictionary& dict);
 
-        //- Construct as named copy
-        inline constRho(const word&, const constRho&);
+    //- Declare run-time constructor selection table
+    declareRunTimeSelectionTable
+    (
+        autoPtr,
+        fluidThermo,
+        fvMesh,
+        (const fvMesh& mesh),
+        (mesh)
+    );
 
-        //- Construct from components
-        inline constRho
-        (
-            const specie& t,
-            const scalar rho
-        );
+    // Constructors
 
-        //- Construct and return a clone
-        inline autoPtr<constRho> clone() const;
+        //- Construct from mesh
+        fluidThermo(const fvMesh&);
 
-        // Selector from dictionary
-        inline static autoPtr<constRho> New(const dictionary& is);
+        //- Construct from mesh
+        fluidThermo(const fvMesh&, const dictionary&);
 
 
-    // Member functions
+    //- Selector
+    static autoPtr<fluidThermo> New(const fvMesh&);
 
-        //- Return density [kg/m3]
-        inline scalar rho(scalar p, scalar T) const;
+    //- Destructor
+    virtual ~fluidThermo();
 
 
-    // Member operators
+    // Member functions
 
-        inline constRho& operator=(const constRho&);
-        inline void operator+=(const constRho&);
-        inline void operator-=(const constRho&);
+        // Access to thermodynamic state variables
 
-    // Friend operators
+            //- Compressibility [s^2/m^2]
+            virtual const volScalarField& psi() const = 0;
 
-        friend constRho operator*
-        (
-            const scalar,
-            const constRho&
-        );
 
-    // Ostream Operator
+        // Access to transport state variables
 
-        friend Ostream& operator<<(Ostream&, const constRho&);
+            //- Dynamic viscosity of mixture [kg/m/s]
+            virtual const volScalarField& mu() const = 0;
 };
 
 
@@ -127,10 +105,6 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-#include "constRhoI.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
 #endif
 
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/basic/fluidThermo/fluidThermoNew.C b/src/thermophysicalModels/basic/fluidThermo/fluidThermoNew.C
new file mode 100644
index 0000000000000000000000000000000000000000..d6977a542a063e3401c51555ee1497e725ef2da8
--- /dev/null
+++ b/src/thermophysicalModels/basic/fluidThermo/fluidThermoNew.C
@@ -0,0 +1,71 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2012 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "fluidThermo.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+Foam::autoPtr<Foam::fluidThermo> Foam::fluidThermo::New
+(
+    const fvMesh& mesh
+)
+{
+    // get model name, but do not register the dictionary
+    // otherwise it is registered in the database twice
+    const word modelType
+    (
+        IOdictionary
+        (
+            IOobject
+            (
+                "thermophysicalProperties",
+                mesh.time().constant(),
+                mesh,
+                IOobject::MUST_READ_IF_MODIFIED,
+                IOobject::NO_WRITE,
+                false
+            )
+        ).lookup("thermoType")
+    );
+
+    Info<< "Selecting thermodynamics package " << modelType << endl;
+
+    fvMeshConstructorTable::iterator cstrIter =
+        fvMeshConstructorTablePtr_->find(modelType);
+
+    if (cstrIter == fvMeshConstructorTablePtr_->end())
+    {
+        FatalErrorIn("fluidThermo::New(const fvMesh&)")
+            << "Unknown fluidThermo type " << modelType << nl << nl
+            << "Valid fluidThermo types are:" << nl
+            << fvMeshConstructorTablePtr_->sortedToc() << nl
+            << exit(FatalError);
+    }
+
+    return autoPtr<fluidThermo>(cstrIter()(mesh));
+}
+
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/basic/basicThermo/makeThermo.H b/src/thermophysicalModels/basic/fluidThermo/makeThermo.H
similarity index 98%
rename from src/thermophysicalModels/basic/basicThermo/makeThermo.H
rename to src/thermophysicalModels/basic/fluidThermo/makeThermo.H
index 06a65304c25fed91d8344eadfed20637b16614ee..41ab0bdf667e6086c72db9eb01027554914e1b77 100644
--- a/src/thermophysicalModels/basic/basicThermo/makeThermo.H
+++ b/src/thermophysicalModels/basic/fluidThermo/makeThermo.H
@@ -22,7 +22,7 @@ License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
 InClass
-    Foam::basicThermo
+    Foam::fluidThermo
 
 Description
     Macros for creating 'basic' density-based thermo packages
@@ -83,7 +83,7 @@ addToRunTimeSelectionTable                                                    \
                                                                               \
 addToRunTimeSelectionTable                                                    \
 (                                                                             \
-    basicThermo,                                                              \
+    fluidThermo,                                                              \
     Cthermo##Mixture##Transport##Type##Thermo##EqnOfState,                    \
     fvMesh                                                                    \
 );
@@ -124,7 +124,7 @@ addToRunTimeSelectionTable                                                    \
                                                                               \
 addToRunTimeSelectionTable                                                    \
 (                                                                             \
-    basicThermo,                                                              \
+    fluidThermo,                                                              \
     Cthermo##Mixture##icoPoly##Order##Type##ThermoPhysics,                    \
     fvMesh                                                                    \
 );
diff --git a/src/thermophysicalModels/basic/heThermo/heThermo.H b/src/thermophysicalModels/basic/heThermo/heThermo.H
index 218329e418f6188be12f1fe7bda039846f0d76c9..c6416878e1bb62812392fd82057654e4c2e695d6 100644
--- a/src/thermophysicalModels/basic/heThermo/heThermo.H
+++ b/src/thermophysicalModels/basic/heThermo/heThermo.H
@@ -25,7 +25,7 @@ Class
     Foam::heThermo
 
 Description
-    Enthalpy/Internal energy for a mixture based on compressibility
+    Enthalpy/Internal energy for a mixture
 
 SourceFiles
     heThermo.C
@@ -115,6 +115,20 @@ public:
             return *this;
         }
 
+        //- Return true if the equation of state is incompressible
+        //  i.e. rho != f(p)
+        virtual bool incompressible() const
+        {
+            return MixtureType::thermoType::incompressible;
+        }
+
+        //- Return true if the equation of state is isochoric
+        //  i.e. rho = const
+        virtual bool isochoric() const
+        {
+            return MixtureType::thermoType::isochoric;
+        }
+
 
         // Access to thermodynamic state variables
 
diff --git a/src/thermophysicalModels/basic/mixtures/basicMixture/basicMixtures.C b/src/thermophysicalModels/basic/mixtures/basicMixture/basicMixtures.C
index 248bbed9fe36d8e1e832ddd28c5b19f9a13731fb..c439348fc045046f9d5e1032b45df61db6b11332 100644
--- a/src/thermophysicalModels/basic/mixtures/basicMixture/basicMixtures.C
+++ b/src/thermophysicalModels/basic/mixtures/basicMixture/basicMixtures.C
@@ -32,8 +32,8 @@ Description
 #include "makeBasicMixture.H"
 
 #include "perfectGas.H"
-#include "incompressible.H"
-#include "isobaricPerfectGas.H"
+#include "rhoConst.H"
+#include "incompressiblePerfectGas.H"
 
 #include "eConstThermo.H"
 
@@ -94,7 +94,7 @@ makeBasicMixture
     constTransport,
     sensibleEnthalpy,
     hConstThermo,
-    incompressible
+    rhoConst
 );
 
 makeBasicPolyMixture
@@ -118,7 +118,7 @@ makeBasicMixture
     constTransport,
     sensibleEnthalpy,
     hConstThermo,
-    isobaricPerfectGas
+    incompressiblePerfectGas
 );
 
 makeBasicMixture
@@ -127,7 +127,7 @@ makeBasicMixture
     sutherlandTransport,
     sensibleEnthalpy,
     hConstThermo,
-    isobaricPerfectGas
+    incompressiblePerfectGas
 );
 
 makeBasicMixture
@@ -136,7 +136,7 @@ makeBasicMixture
     sutherlandTransport,
     sensibleEnthalpy,
     janafThermo,
-    isobaricPerfectGas
+    incompressiblePerfectGas
 );
 
 
@@ -175,7 +175,7 @@ makeBasicMixture
     constTransport,
     sensibleInternalEnergy,
     hConstThermo,
-    incompressible
+    rhoConst
 );
 
 makeBasicPolyMixture
@@ -199,7 +199,7 @@ makeBasicMixture
     constTransport,
     sensibleInternalEnergy,
     hConstThermo,
-    isobaricPerfectGas
+    incompressiblePerfectGas
 );
 
 makeBasicMixture
@@ -208,7 +208,7 @@ makeBasicMixture
     sutherlandTransport,
     sensibleInternalEnergy,
     hConstThermo,
-    isobaricPerfectGas
+    incompressiblePerfectGas
 );
 
 makeBasicMixture
@@ -217,7 +217,7 @@ makeBasicMixture
     sutherlandTransport,
     sensibleInternalEnergy,
     janafThermo,
-    isobaricPerfectGas
+    incompressiblePerfectGas
 );
 
 
diff --git a/src/thermophysicalModels/basic/psiThermo/psiThermo/psiThermo.C b/src/thermophysicalModels/basic/psiThermo/psiThermo/psiThermo.C
index 3417a3d198f3b203e2000123ad96b7e5173029e8..134103106e6434e53e9f0d01db23183e1b401923 100644
--- a/src/thermophysicalModels/basic/psiThermo/psiThermo/psiThermo.C
+++ b/src/thermophysicalModels/basic/psiThermo/psiThermo/psiThermo.C
@@ -38,7 +38,35 @@ namespace Foam
 
 Foam::psiThermo::psiThermo(const fvMesh& mesh)
 :
-    basicThermo(mesh)
+    fluidThermo(mesh),
+
+    psi_
+    (
+        IOobject
+        (
+            "psi",
+            mesh.time().timeName(),
+            mesh,
+            IOobject::NO_READ,
+            IOobject::NO_WRITE
+        ),
+        mesh,
+        dimensionSet(0, -2, 2, 0, 0)
+    ),
+
+    mu_
+    (
+        IOobject
+        (
+            "mu",
+            mesh.time().timeName(),
+            mesh,
+            IOobject::NO_READ,
+            IOobject::NO_WRITE
+        ),
+        mesh,
+        dimensionSet(1, -1, -1, 0, 0)
+    )
 {}
 
 
@@ -48,4 +76,24 @@ Foam::psiThermo::~psiThermo()
 {}
 
 
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField> Foam::psiThermo::rho() const
+{
+    return p_*psi();
+}
+
+
+const Foam::volScalarField& Foam::psiThermo::psi() const
+{
+    return psi_;
+}
+
+
+const Foam::volScalarField& Foam::psiThermo::mu() const
+{
+    return mu_;
+}
+
+
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/basic/psiThermo/psiThermo/psiThermo.H b/src/thermophysicalModels/basic/psiThermo/psiThermo/psiThermo.H
index 63412afbdd99a18a2d826d05693a4b300966ae26..990341965d7df9766208de4c9b297589ca0ac9ac 100644
--- a/src/thermophysicalModels/basic/psiThermo/psiThermo/psiThermo.H
+++ b/src/thermophysicalModels/basic/psiThermo/psiThermo/psiThermo.H
@@ -36,7 +36,7 @@ SourceFiles
 #ifndef psiThermo_H
 #define psiThermo_H
 
-#include "basicThermo.H"
+#include "fluidThermo.H"
 #include "runTimeSelectionTables.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -50,11 +50,20 @@ namespace Foam
 
 class psiThermo
 :
-    public basicThermo
+    public fluidThermo
 {
 
 protected:
 
+    // Protected data
+
+        //- Compressibility [s^2/m^2]
+        volScalarField psi_;
+
+        //- Dynamic viscosity [kg/m/s]
+        volScalarField mu_;
+
+
     // Protected Member Functions
 
         //- Construct as copy (not implemented)
@@ -97,10 +106,16 @@ public:
         // Fields derived from thermodynamic state variables
 
             //- Density [kg/m^3] - uses current value of pressure
-            virtual tmp<volScalarField> rho() const
-            {
-                return p_*psi();
-            }
+            virtual tmp<volScalarField> rho() const;
+
+            //- Compressibility [s^2/m^2]
+            virtual const volScalarField& psi() const;
+
+
+        // Access to transport state variables
+
+            //- Dynamic viscosity of mixture [kg/m/s]
+            virtual const volScalarField& mu() const;
 };
 
 
diff --git a/src/thermophysicalModels/basic/rhoThermo/heRhoThermo/heRhoThermos.C b/src/thermophysicalModels/basic/rhoThermo/heRhoThermo/heRhoThermos.C
index e9272e97b84c679fb5d083409620530d2c4b0474..b39ad010d4478c0c6380eec98585fb46b7a0a352 100644
--- a/src/thermophysicalModels/basic/rhoThermo/heRhoThermo/heRhoThermos.C
+++ b/src/thermophysicalModels/basic/rhoThermo/heRhoThermo/heRhoThermos.C
@@ -27,8 +27,8 @@ License
 #include "makeThermo.H"
 
 #include "perfectGas.H"
-#include "isobaricPerfectGas.H"
-#include "incompressible.H"
+#include "incompressiblePerfectGas.H"
+#include "rhoConst.H"
 
 #include "hConstThermo.H"
 #include "janafThermo.H"
@@ -94,7 +94,7 @@ makeThermo
     constTransport,
     sensibleEnthalpy,
     hConstThermo,
-    incompressible
+    rhoConst
 );
 
 makePolyThermo
@@ -123,7 +123,7 @@ makeThermo
     constTransport,
     sensibleEnthalpy,
     hConstThermo,
-    isobaricPerfectGas
+    incompressiblePerfectGas
 );
 
 makeThermo
@@ -134,7 +134,7 @@ makeThermo
     sutherlandTransport,
     sensibleEnthalpy,
     hConstThermo,
-    isobaricPerfectGas
+    incompressiblePerfectGas
 );
 
 makeThermo
@@ -145,7 +145,7 @@ makeThermo
     sutherlandTransport,
     sensibleEnthalpy,
     janafThermo,
-    isobaricPerfectGas
+    incompressiblePerfectGas
 );
 
 
@@ -192,7 +192,7 @@ makeThermo
     constTransport,
     sensibleInternalEnergy,
     hConstThermo,
-    incompressible
+    rhoConst
 );
 
 makePolyThermo
@@ -221,7 +221,7 @@ makeThermo
     constTransport,
     sensibleInternalEnergy,
     hConstThermo,
-    isobaricPerfectGas
+    incompressiblePerfectGas
 );
 
 makeThermo
@@ -232,7 +232,7 @@ makeThermo
     sutherlandTransport,
     sensibleInternalEnergy,
     hConstThermo,
-    isobaricPerfectGas
+    incompressiblePerfectGas
 );
 
 makeThermo
@@ -243,7 +243,7 @@ makeThermo
     sutherlandTransport,
     sensibleInternalEnergy,
     janafThermo,
-    isobaricPerfectGas
+    incompressiblePerfectGas
 );
 
 
diff --git a/src/thermophysicalModels/basic/rhoThermo/rhoThermo/rhoThermo.C b/src/thermophysicalModels/basic/rhoThermo/rhoThermo/rhoThermo.C
index 75b6f1f3630af38c13b2d7f6d2de63da8d666b57..a43347cb9137afba6240c78df241ed458a830c5c 100644
--- a/src/thermophysicalModels/basic/rhoThermo/rhoThermo/rhoThermo.C
+++ b/src/thermophysicalModels/basic/rhoThermo/rhoThermo/rhoThermo.C
@@ -38,7 +38,7 @@ namespace Foam
 
 Foam::rhoThermo::rhoThermo(const fvMesh& mesh)
 :
-    basicThermo(mesh),
+    fluidThermo(mesh),
     rho_
     (
         IOobject
@@ -51,13 +51,41 @@ Foam::rhoThermo::rhoThermo(const fvMesh& mesh)
         ),
         mesh,
         dimDensity
+    ),
+
+    psi_
+    (
+        IOobject
+        (
+            "psi",
+            mesh.time().timeName(),
+            mesh,
+            IOobject::NO_READ,
+            IOobject::NO_WRITE
+        ),
+        mesh,
+        dimensionSet(0, -2, 2, 0, 0)
+    ),
+
+    mu_
+    (
+        IOobject
+        (
+            "mu",
+            mesh.time().timeName(),
+            mesh,
+            IOobject::NO_READ,
+            IOobject::NO_WRITE
+        ),
+        mesh,
+        dimensionSet(1, -1, -1, 0, 0)
     )
 {}
 
 
 Foam::rhoThermo::rhoThermo(const fvMesh& mesh, const dictionary& dict)
 :
-    basicThermo(mesh, dict),
+    fluidThermo(mesh, dict),
     rho_
     (
         IOobject
@@ -70,6 +98,34 @@ Foam::rhoThermo::rhoThermo(const fvMesh& mesh, const dictionary& dict)
         ),
         mesh,
         dimDensity
+    ),
+
+    psi_
+    (
+        IOobject
+        (
+            "psi",
+            mesh.time().timeName(),
+            mesh,
+            IOobject::NO_READ,
+            IOobject::NO_WRITE
+        ),
+        mesh,
+        dimensionSet(0, -2, 2, 0, 0)
+    ),
+
+    mu_
+    (
+        IOobject
+        (
+            "mu",
+            mesh.time().timeName(),
+            mesh,
+            IOobject::NO_READ,
+            IOobject::NO_WRITE
+        ),
+        mesh,
+        dimensionSet(1, -1, -1, 0, 0)
     )
 {}
 
@@ -94,4 +150,16 @@ Foam::volScalarField& Foam::rhoThermo::rho()
 }
 
 
+const Foam::volScalarField& Foam::rhoThermo::psi() const
+{
+    return psi_;
+}
+
+
+const Foam::volScalarField& Foam::rhoThermo::mu() const
+{
+    return mu_;
+}
+
+
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/basic/rhoThermo/rhoThermo/rhoThermo.H b/src/thermophysicalModels/basic/rhoThermo/rhoThermo/rhoThermo.H
index 77a4c4fd12a9e0e4e4931be807ef43f7ee90020f..9cb27bd4b8d4d3c84cf5a21326d73ba32268edef 100644
--- a/src/thermophysicalModels/basic/rhoThermo/rhoThermo/rhoThermo.H
+++ b/src/thermophysicalModels/basic/rhoThermo/rhoThermo/rhoThermo.H
@@ -36,7 +36,7 @@ SourceFiles
 #ifndef rhoThermo_H
 #define rhoThermo_H
 
-#include "basicThermo.H"
+#include "fluidThermo.H"
 #include "runTimeSelectionTables.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -50,7 +50,7 @@ namespace Foam
 
 class rhoThermo
 :
-    public basicThermo
+    public fluidThermo
 {
 
 protected:
@@ -61,6 +61,12 @@ protected:
         //  Named 'rhoThermo' to avoid (potential) conflict with solver density
         volScalarField rho_;
 
+        //- Compressibility [s^2/m^2]
+        volScalarField psi_;
+
+        //- Dynamic viscosity [kg/m/s]
+        volScalarField mu_;
+
 
     // Protected Member Functions
 
@@ -111,6 +117,15 @@ public:
 
             //- Return non-const access to the local density field [kg/m^3]
             virtual volScalarField& rho();
+
+            //- Compressibility [s^2/m^2]
+            virtual const volScalarField& psi() const;
+
+
+        // Access to transport state variables
+
+            //- Dynamic viscosity of mixture [kg/m/s]
+            virtual const volScalarField& mu() const;
 };
 
 
diff --git a/src/thermophysicalModels/chemistryModel/Make/options b/src/thermophysicalModels/chemistryModel/Make/options
index 3cdfbc22ac450a66d647c677a8730c6c1f8ff1f7..b8f70e8dfac58e4670341a222c7b4ddb072af871 100644
--- a/src/thermophysicalModels/chemistryModel/Make/options
+++ b/src/thermophysicalModels/chemistryModel/Make/options
@@ -9,7 +9,7 @@ EXE_INC = \
     -I$(LIB_SRC)/ODE/lnInclude
 
 LIB_LIBS = \
-    -lbasicThermophysicalModels \
+    -lfluidThermophysicalModels \
     -lreactionThermophysicalModels \
     -lspecie \
     -lthermophysicalFunctions \
diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/psiChemistryModel/psiChemistryModels.C b/src/thermophysicalModels/chemistryModel/chemistryModel/psiChemistryModel/psiChemistryModels.C
index c84c43531bf0f8c318c79abf2d3502ae815ad0c1..cc271358cc8b307b74aa7b8d85b59ec4d4065bd3 100644
--- a/src/thermophysicalModels/chemistryModel/chemistryModel/psiChemistryModel/psiChemistryModels.C
+++ b/src/thermophysicalModels/chemistryModel/chemistryModel/psiChemistryModel/psiChemistryModels.C
@@ -57,14 +57,14 @@ namespace Foam
     (
         ODEChemistryModel,
         psiChemistryModel,
-        constIsobaricGasThermoPhysics
+        constIncompressibleGasThermoPhysics
     );
 
     makeChemistryModel
     (
         ODEChemistryModel,
         psiChemistryModel,
-        isobaricGasThermoPhysics
+        incompressibleGasThermoPhysics
     );
 
     makeChemistryModel
diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/rhoChemistryModel/rhoChemistryModels.C b/src/thermophysicalModels/chemistryModel/chemistryModel/rhoChemistryModel/rhoChemistryModels.C
index a5516752fdd8a445c5b8bd0a273bfbc2077912e4..30488a6856732328e26f11086ac2b1ee12773723 100644
--- a/src/thermophysicalModels/chemistryModel/chemistryModel/rhoChemistryModel/rhoChemistryModels.C
+++ b/src/thermophysicalModels/chemistryModel/chemistryModel/rhoChemistryModel/rhoChemistryModels.C
@@ -57,14 +57,14 @@ namespace Foam
     (
         ODEChemistryModel,
         rhoChemistryModel,
-        constIsobaricGasThermoPhysics
+        constIncompressibleGasThermoPhysics
     );
 
     makeChemistryModel
     (
         ODEChemistryModel,
         rhoChemistryModel,
-        isobaricGasThermoPhysics
+        incompressibleGasThermoPhysics
     );
 
     makeChemistryModel
diff --git a/src/thermophysicalModels/chemistryModel/chemistrySolver/chemistrySolver/makeChemistrySolvers.C b/src/thermophysicalModels/chemistryModel/chemistrySolver/chemistrySolver/makeChemistrySolvers.C
index 54239f49578f8a93a0eed82a35b48330cbec6c44..189d43bdfa917426b6348fa5b4823c820e3574a9 100644
--- a/src/thermophysicalModels/chemistryModel/chemistrySolver/chemistrySolver/makeChemistrySolvers.C
+++ b/src/thermophysicalModels/chemistryModel/chemistrySolver/chemistrySolver/makeChemistrySolvers.C
@@ -35,13 +35,21 @@ namespace Foam
 {
     makeChemistrySolverTypes(psiChemistryModel, constGasThermoPhysics);
     makeChemistrySolverTypes(psiChemistryModel, gasThermoPhysics);
-    makeChemistrySolverTypes(psiChemistryModel, constIsobaricGasThermoPhysics);
-    makeChemistrySolverTypes(psiChemistryModel, isobaricGasThermoPhysics);
+    makeChemistrySolverTypes
+    (
+        psiChemistryModel,
+        constIncompressibleGasThermoPhysics
+    );
+    makeChemistrySolverTypes(psiChemistryModel, incompressibleGasThermoPhysics);
     makeChemistrySolverTypes(psiChemistryModel, icoPoly8ThermoPhysics);
     makeChemistrySolverTypes(rhoChemistryModel, constGasThermoPhysics);
     makeChemistrySolverTypes(rhoChemistryModel, gasThermoPhysics);
-    makeChemistrySolverTypes(rhoChemistryModel, constIsobaricGasThermoPhysics);
-    makeChemistrySolverTypes(rhoChemistryModel, isobaricGasThermoPhysics);
+    makeChemistrySolverTypes
+    (
+        rhoChemistryModel,
+        constIncompressibleGasThermoPhysics
+    );
+    makeChemistrySolverTypes(rhoChemistryModel, incompressibleGasThermoPhysics);
     makeChemistrySolverTypes(rhoChemistryModel, icoPoly8ThermoPhysics);
 }
 
diff --git a/src/thermophysicalModels/radiationModels/Make/options b/src/thermophysicalModels/radiationModels/Make/options
index 5b54f537f810ea3f5c1226ad17c9585f10deb0af..248131e32edcd1cbc21301008260ee47c0720e05 100644
--- a/src/thermophysicalModels/radiationModels/Make/options
+++ b/src/thermophysicalModels/radiationModels/Make/options
@@ -3,7 +3,7 @@ EXE_INC = \
     -I$(LIB_SRC)/meshTools/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \
-    -I$(LIB_SRC)/thermophysicalModels/basicSolidThermo/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/solidThermo/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/SLGThermo/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/properties/liquidProperties/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/properties/liquidMixtureProperties/lnInclude \
@@ -14,9 +14,9 @@ EXE_INC = \
 
 LIB_LIBS = \
     -lfiniteVolume \
-    -lbasicThermophysicalModels \
+    -lfluidThermophysicalModels \
     -lspecie \
-    -lbasicSolidThermo \
+    -lsolidThermo \
     -lmeshTools \
     -lSLGThermo \
     -lsolidMixtureProperties \
diff --git a/src/thermophysicalModels/radiationModels/derivedFvPatchFields/radiationCoupledBase/radiationCoupledBase.H b/src/thermophysicalModels/radiationModels/derivedFvPatchFields/radiationCoupledBase/radiationCoupledBase.H
index 548a83262cad474c9b54ff9aa98dd21ee989a097..01d8e8761c58ad996b9d1bea44338662a7f32bc9 100644
--- a/src/thermophysicalModels/radiationModels/derivedFvPatchFields/radiationCoupledBase/radiationCoupledBase.H
+++ b/src/thermophysicalModels/radiationModels/derivedFvPatchFields/radiationCoupledBase/radiationCoupledBase.H
@@ -29,7 +29,7 @@ Description
     dictionary or calculated by the solidThermo:
 
     - 'lookup' : lookup volScalarField with name
-    - 'solidThermo' : use basicSolidThermo emissivity()
+    - 'solidThermo' : use solidThermo emissivity()
 
 SourceFiles
     radiationCoupledBase.C
diff --git a/src/thermophysicalModels/radiationModels/radiationModel/radiationModel/radiationModel.C b/src/thermophysicalModels/radiationModels/radiationModel/radiationModel/radiationModel.C
index cba6035e8fd4c91cf1777edbbd3364897652a14f..1664d8edd17f80af106fd2c27850be2ca0fa0698 100644
--- a/src/thermophysicalModels/radiationModels/radiationModel/radiationModel/radiationModel.C
+++ b/src/thermophysicalModels/radiationModels/radiationModel/radiationModel/radiationModel.C
@@ -142,7 +142,7 @@ void Foam::radiation::radiationModel::correct()
 
 Foam::tmp<Foam::fvScalarMatrix> Foam::radiation::radiationModel::Sh
 (
-    basicThermo& thermo
+    fluidThermo& thermo
 ) const
 {
     volScalarField& he = thermo.he();
diff --git a/src/thermophysicalModels/radiationModels/radiationModel/radiationModel/radiationModel.H b/src/thermophysicalModels/radiationModels/radiationModel/radiationModel/radiationModel.H
index 9b02340acf0bea4df20a36868472f08840856e6a..b9963f0f70a88e6819ebdb824ec6fef6e5bba4f5 100644
--- a/src/thermophysicalModels/radiationModels/radiationModel/radiationModel/radiationModel.H
+++ b/src/thermophysicalModels/radiationModels/radiationModel/radiationModel/radiationModel.H
@@ -45,7 +45,7 @@ SourceFiles
 #include "autoPtr.H"
 #include "runTimeSelectionTables.H"
 #include "volFields.H"
-#include "basicThermo.H"
+#include "fluidThermo.H"
 #include "fvMatrices.H"
 #include "blackBodyEmission.H"
 
@@ -177,7 +177,7 @@ public:
             virtual tmp<DimensionedField<scalar, volMesh> > Ru() const = 0;
 
             //- Energy source term
-            virtual tmp<fvScalarMatrix> Sh(basicThermo& thermo) const;
+            virtual tmp<fvScalarMatrix> Sh(fluidThermo& thermo) const;
 };
 
 
diff --git a/src/thermophysicalModels/radiationModels/submodels/absorptionEmissionModel/greyMeanAbsorptionEmission/greyMeanAbsorptionEmission.C b/src/thermophysicalModels/radiationModels/submodels/absorptionEmissionModel/greyMeanAbsorptionEmission/greyMeanAbsorptionEmission.C
index d1a924ad11e0aea8585b03ad672f793fb4808b0c..3edfd4ce38415dcdcd4965987d83caaee292d324 100644
--- a/src/thermophysicalModels/radiationModels/submodels/absorptionEmissionModel/greyMeanAbsorptionEmission/greyMeanAbsorptionEmission.C
+++ b/src/thermophysicalModels/radiationModels/submodels/absorptionEmissionModel/greyMeanAbsorptionEmission/greyMeanAbsorptionEmission.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -60,7 +60,7 @@ Foam::radiation::greyMeanAbsorptionEmission::greyMeanAbsorptionEmission
     speciesNames_(0),
     specieIndex_(label(0)),
     lookUpTablePtr_(),
-    thermo_(mesh.lookupObject<basicThermo>("thermophysicalProperties")),
+    thermo_(mesh.lookupObject<fluidThermo>("thermophysicalProperties")),
     EhrrCoeff_(readScalar(coeffsDict_.lookup("EhrrCoeff"))),
     Yj_(nSpecies_)
 {
diff --git a/src/thermophysicalModels/radiationModels/submodels/absorptionEmissionModel/greyMeanAbsorptionEmission/greyMeanAbsorptionEmission.H b/src/thermophysicalModels/radiationModels/submodels/absorptionEmissionModel/greyMeanAbsorptionEmission/greyMeanAbsorptionEmission.H
index 32a20fe0a8f3d9b68469c7dcc531d583bb277538..cd897ed5aa7378b229f76d99efbc09d4c98c91d4 100644
--- a/src/thermophysicalModels/radiationModels/submodels/absorptionEmissionModel/greyMeanAbsorptionEmission/greyMeanAbsorptionEmission.H
+++ b/src/thermophysicalModels/radiationModels/submodels/absorptionEmissionModel/greyMeanAbsorptionEmission/greyMeanAbsorptionEmission.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -89,7 +89,7 @@ SourceFiles
 #include "absorptionEmissionModel.H"
 #include "HashTable.H"
 #include "absorptionCoeffs.H"
-#include "basicThermo.H"
+#include "fluidThermo.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -134,7 +134,7 @@ private:
         mutable autoPtr<interpolationLookUpTable<scalar> > lookUpTablePtr_;
 
         //- SLG thermo package
-        const basicThermo& thermo_;
+        const fluidThermo& thermo_;
 
         //- Emission constant coefficient
         const scalar EhrrCoeff_;
diff --git a/src/thermophysicalModels/radiationModels/submodels/absorptionEmissionModel/wideBandAbsorptionEmission/wideBandAbsorptionEmission.C b/src/thermophysicalModels/radiationModels/submodels/absorptionEmissionModel/wideBandAbsorptionEmission/wideBandAbsorptionEmission.C
index dcaf7f01f60953fc0cae13736c5ef8cd88870cc3..a3a37549090a8ea7c24149fdfabfa05b0cb4a139 100644
--- a/src/thermophysicalModels/radiationModels/submodels/absorptionEmissionModel/wideBandAbsorptionEmission/wideBandAbsorptionEmission.C
+++ b/src/thermophysicalModels/radiationModels/submodels/absorptionEmissionModel/wideBandAbsorptionEmission/wideBandAbsorptionEmission.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -62,7 +62,7 @@ Foam::radiation::wideBandAbsorptionEmission::wideBandAbsorptionEmission
         mesh.time().constant(),
         mesh
     ),
-    thermo_(mesh.lookupObject<basicThermo>("thermophysicalProperties")),
+    thermo_(mesh.lookupObject<fluidThermo>("thermophysicalProperties")),
     Yj_(nSpecies_),
     totalWaveLength_(0)
 {
diff --git a/src/thermophysicalModels/radiationModels/submodels/absorptionEmissionModel/wideBandAbsorptionEmission/wideBandAbsorptionEmission.H b/src/thermophysicalModels/radiationModels/submodels/absorptionEmissionModel/wideBandAbsorptionEmission/wideBandAbsorptionEmission.H
index ae32678cc7ce8b663b94cdf86329e716bbf433c6..8f9ca673648e062e3b857db6bd13d354b815bf7b 100644
--- a/src/thermophysicalModels/radiationModels/submodels/absorptionEmissionModel/wideBandAbsorptionEmission/wideBandAbsorptionEmission.H
+++ b/src/thermophysicalModels/radiationModels/submodels/absorptionEmissionModel/wideBandAbsorptionEmission/wideBandAbsorptionEmission.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -106,7 +106,7 @@ SourceFiles
 #include "absorptionEmissionModel.H"
 #include "HashTable.H"
 #include "absorptionCoeffs.H"
-#include "basicThermo.H"
+#include "fluidThermo.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -160,7 +160,7 @@ private:
         mutable interpolationLookUpTable<scalar> lookUpTable_;
 
         //- Thermo package
-        const basicThermo& thermo_;
+        const fluidThermo& thermo_;
 
         //- Bands
         label nBands_;
diff --git a/src/thermophysicalModels/reactionThermo/chemistryReaders/chemistryReader/makeChemistryReaders.C b/src/thermophysicalModels/reactionThermo/chemistryReaders/chemistryReader/makeChemistryReaders.C
index 195cc764ed0d80325c0890a6a157af31e622dae4..7ee6324527ef910bff3ab09fd39c0f0fca4cb990 100644
--- a/src/thermophysicalModels/reactionThermo/chemistryReaders/chemistryReader/makeChemistryReaders.C
+++ b/src/thermophysicalModels/reactionThermo/chemistryReaders/chemistryReader/makeChemistryReaders.C
@@ -38,14 +38,18 @@ namespace Foam
 
 makeChemistryReader(constGasThermoPhysics);
 makeChemistryReader(gasThermoPhysics);
-makeChemistryReader(constIsobaricGasThermoPhysics);
-makeChemistryReader(isobaricGasThermoPhysics);
+makeChemistryReader(constIncompressibleGasThermoPhysics);
+makeChemistryReader(incompressibleGasThermoPhysics);
 makeChemistryReader(icoPoly8ThermoPhysics);
 
 makeChemistryReaderType(foamChemistryReader, constGasThermoPhysics);
 makeChemistryReaderType(foamChemistryReader, gasThermoPhysics);
-makeChemistryReaderType(foamChemistryReader, constIsobaricGasThermoPhysics);
-makeChemistryReaderType(foamChemistryReader, isobaricGasThermoPhysics);
+makeChemistryReaderType
+(
+    foamChemistryReader,
+    constIncompressibleGasThermoPhysics
+);
+makeChemistryReaderType(foamChemistryReader, incompressibleGasThermoPhysics);
 makeChemistryReaderType(foamChemistryReader, icoPoly8ThermoPhysics);
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/thermophysicalModels/reactionThermo/rhoReactionThermo/heRhoReactionThermo/heRhoReactionThermos.C b/src/thermophysicalModels/reactionThermo/rhoReactionThermo/heRhoReactionThermo/heRhoReactionThermos.C
index 74fb78cb1665f65e1d005bbf7344868a34be2c4c..38e50afd57e1303ebc15057e21c2a9a96cd44088 100644
--- a/src/thermophysicalModels/reactionThermo/rhoReactionThermo/heRhoReactionThermo/heRhoReactionThermos.C
+++ b/src/thermophysicalModels/reactionThermo/rhoReactionThermo/heRhoReactionThermo/heRhoReactionThermos.C
@@ -29,7 +29,7 @@ License
 #include "heRhoReactionThermo.H"
 
 #include "perfectGas.H"
-#include "isobaricPerfectGas.H"
+#include "incompressiblePerfectGas.H"
 
 #include "hConstThermo.H"
 #include "janafThermo.H"
@@ -137,7 +137,7 @@ makeReactionThermo
     constTransport,
     sensibleEnthalpy,
     hConstThermo,
-    isobaricPerfectGas
+    incompressiblePerfectGas
 );
 
 makeReactionThermo
@@ -149,7 +149,7 @@ makeReactionThermo
     constTransport,
     sensibleEnthalpy,
     hConstThermo,
-    isobaricPerfectGas
+    incompressiblePerfectGas
 );
 
 makeReactionThermo
@@ -161,7 +161,7 @@ makeReactionThermo
     constTransport,
     sensibleEnthalpy,
     hConstThermo,
-    isobaricPerfectGas
+    incompressiblePerfectGas
 );
 
 makeReactionThermo
@@ -173,7 +173,7 @@ makeReactionThermo
     sutherlandTransport,
     sensibleEnthalpy,
     janafThermo,
-    isobaricPerfectGas
+    incompressiblePerfectGas
 );
 
 makeReactionThermo
@@ -185,7 +185,7 @@ makeReactionThermo
     sutherlandTransport,
     sensibleEnthalpy,
     janafThermo,
-    isobaricPerfectGas
+    incompressiblePerfectGas
 );
 
 makeReactionThermo
@@ -197,7 +197,7 @@ makeReactionThermo
     sutherlandTransport,
     sensibleEnthalpy,
     janafThermo,
-    isobaricPerfectGas
+    incompressiblePerfectGas
 );
 
 
@@ -227,7 +227,7 @@ makeReactionMixtureThermo
     rhoReactionThermo,
     heRhoReactionThermo,
     multiComponentMixture,
-    constIsobaricGasThermoPhysics
+    constIncompressibleGasThermoPhysics
 );
 
 makeReactionMixtureThermo
@@ -236,7 +236,7 @@ makeReactionMixtureThermo
     rhoReactionThermo,
     heRhoReactionThermo,
     multiComponentMixture,
-    isobaricGasThermoPhysics
+    incompressibleGasThermoPhysics
 );
 
 makeReactionMixtureThermo
@@ -275,7 +275,7 @@ makeReactionMixtureThermo
     rhoReactionThermo,
     heRhoReactionThermo,
     reactingMixture,
-    constIsobaricGasThermoPhysics
+    constIncompressibleGasThermoPhysics
 );
 
 makeReactionMixtureThermo
@@ -284,7 +284,7 @@ makeReactionMixtureThermo
     rhoReactionThermo,
     heRhoReactionThermo,
     reactingMixture,
-    isobaricGasThermoPhysics
+    incompressibleGasThermoPhysics
 );
 
 makeReactionMixtureThermo
diff --git a/src/thermophysicalModels/solid/rhoType/const/constRhoI.H b/src/thermophysicalModels/solid/rhoType/const/constRhoI.H
deleted file mode 100644
index 1c9aa0afb3fc8520468957b51235b9ae18eca1c4..0000000000000000000000000000000000000000
--- a/src/thermophysicalModels/solid/rhoType/const/constRhoI.H
+++ /dev/null
@@ -1,118 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software: you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
-
-\*---------------------------------------------------------------------------*/
-
-#include "constRho.H"
-
-
-// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
-
-inline Foam::constRho::constRho(const word& name, const constRho& pg)
-:
-    specie(name, pg),
-    rho_(pg.rho_)
-{}
-
-
-inline Foam::constRho::constRho(const specie& t, const scalar rho)
-:
-    specie(t),
-    rho_(rho)
-{}
-
-
-inline Foam::autoPtr<Foam::constRho> Foam::constRho::clone() const
-{
-    return autoPtr<constRho>(new constRho(*this));
-}
-
-
-inline Foam::autoPtr<Foam::constRho> Foam::constRho::New(const dictionary& is)
-{
-    return autoPtr<constRho>(new constRho(is));
-}
-
-
-// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
-
-inline Foam::scalar Foam::constRho::rho(scalar, scalar) const
-{
-    return rho_;
-}
-
-
-// * * * * * * * * * * * * * * * Member Operators  * * * * * * * * * * * * * //
-
-inline Foam::constRho& Foam::constRho::operator=(const constRho& ct)
-{
-    specie::operator=(ct);
-    rho_ = ct.rho_;
-
-    return *this;
-}
-
-
-inline void Foam::constRho::operator+=(const constRho& ct)
-{
-    scalar molr1 = this->nMoles();
-
-    specie::operator+=(ct);
-
-    molr1 /= this->nMoles();
-    scalar molr2 = ct.nMoles()/this->nMoles();
-
-    rho_ = molr1*rho_ + molr2*ct.rho_;
-}
-
-
-inline void Foam::constRho::operator-=(const constRho& ct)
-{
-    scalar molr1 = this->nMoles();
-
-    specie::operator-=(ct);
-
-    molr1 /= this->nMoles();
-    scalar molr2 = ct.nMoles()/this->nMoles();
-
-    rho_ = molr1*rho_ - molr2*ct.rho_;
-
-}
-
-// * * * * * * * * * * * * * * * Friend Operators  * * * * * * * * * * * * * //
-
-
-inline Foam::constRho Foam::operator*
-(
-    const scalar s,
-    const constRho& ct
-)
-{
-    return constRho
-    (
-        s*static_cast<const specie&>(ct),
-        ct.rho_
-    );
-}
-
-// ************************************************************************* //
diff --git a/src/thermophysicalModels/solid/thermo/const/constSolidThermo.H b/src/thermophysicalModels/solid/thermo/const/constSolidThermo.H
deleted file mode 100644
index 5d025da8e47265d20aea1eff6602fe3b2d3db583..0000000000000000000000000000000000000000
--- a/src/thermophysicalModels/solid/thermo/const/constSolidThermo.H
+++ /dev/null
@@ -1,194 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software: you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
-
-Class
-    Foam::constSolidThermo
-
-Description
-    Constant properties thermodynamics package for solids
-
-
-SourceFiles
-    constSolidThermoI.H
-    constSolidThermo.C
-
-\*---------------------------------------------------------------------------*/
-
-#ifndef constSolidThermo_H
-#define constSolidThermo_H
-
-#include "specie.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-
-template<class rhoType> class constSolidThermo;
-
-template<class rhoType>
-inline constSolidThermo<rhoType> operator*
-(
-    const scalar,
-    const constSolidThermo<rhoType>&
-);
-
-/*
-template<class rhoType>
-inline constSolidThermo<rhoType> operator+
-(
-    const constSolidThermo<rhoType>&,
-    const constSolidThermo<rhoType>&
-);
-
-template<class rhoType>
-inline constSolidThermo<rhoType> operator-
-(
-    const constSolidThermo<rhoType>&,
-    const constSolidThermo<rhoType>&
-);
-
-
-
-template<class rhoType>
-inline constSolidThermo<rhoType> operator==
-(
-    const constSolidThermo<rhoType>&,
-    const constSolidThermo<rhoType>&
-);
-*/
-template<class rhoType>
-Ostream& operator<<
-(
-    Ostream&,
-    const constSolidThermo<rhoType>&
-);
-
-
-/*---------------------------------------------------------------------------*\
-                      Class constSolidThermo Declaration
-\*---------------------------------------------------------------------------*/
-
-template<class rhoType>
-class constSolidThermo
-:
-    public rhoType
-{
-    // Private data
-
-        scalar Cp_;
-        scalar Hf_;
-
-
-    // Private Member Functions
-
-        //- Construct from components
-        inline constSolidThermo
-        (
-            const rhoType& st,
-            const scalar Cp,
-            const scalar hf
-        );
-
-
-public:
-
-    // Constructors
-
-        //- Construct from dictionary
-        constSolidThermo(const dictionary&);
-
-        //- Construct as named copy
-        inline constSolidThermo(const word&, const constSolidThermo&);
-
-        //- Construct and return a clone
-        inline autoPtr<constSolidThermo> clone() const;
-
-        //- Selector from Istream
-        inline static autoPtr<constSolidThermo> New(dictionary& is);
-
-
-    // Member Functions
-
-         //- Limit the temperature to be in the range Tlow_ to Thigh_
-        inline scalar limit(const scalar T) const;
-
-        // Fundamental properties
-
-            //- Heat capacity at constant pressure [J/(kmol K)]
-            inline scalar cp(const scalar p, const scalar T) const;
-
-            //- Absolute enthalpy [J/kmol]
-            inline scalar ha(const scalar p, const scalar T) const;
-
-            //- Sensible enthalpy [J/kmol]
-            inline scalar hs(const scalar p, const scalar T) const;
-
-            //- Chemical enthalpy [J/kmol]
-            inline scalar hc() const;
-
-            //- Entropy [J/(kmol K)]
-            inline scalar s(const scalar p, const scalar T) const;
-
-
-    // Member operators
-
-        inline constSolidThermo& operator=(const constSolidThermo&);
-        inline void operator+=(const constSolidThermo&);
-        inline void operator-=(const constSolidThermo&);
-
-    // Friend operators
-
-        friend constSolidThermo operator* <rhoType>
-        (
-            const scalar,
-            const constSolidThermo&
-        );
-
-
-    // IOstream Operators
-
-        friend Ostream& operator<< <rhoType>
-        (
-            Ostream&,
-            const constSolidThermo&
-        );
-};
-
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-} // End namespace Foam
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-#ifdef NoRepository
-#   include "constSolidThermoI.H"
-#   include "constSolidThermo.C"
-#endif
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-#endif
-
-// ************************************************************************* //
diff --git a/src/thermophysicalModels/solid/thermo/const/constSolidThermoI.H b/src/thermophysicalModels/solid/thermo/const/constSolidThermoI.H
deleted file mode 100644
index 3e6d2e487049298574711ebd2b65bd1366567a86..0000000000000000000000000000000000000000
--- a/src/thermophysicalModels/solid/thermo/const/constSolidThermoI.H
+++ /dev/null
@@ -1,214 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software: you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
-
-\*---------------------------------------------------------------------------*/
-
-
-// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
-
-template<class rhoType>
-inline Foam::constSolidThermo<rhoType>::constSolidThermo
-(
-    const word& name,
-    const constSolidThermo& ct
-)
-:
-    rhoType(name, ct),
-    Cp_(ct.Cp_),
-    Hf_(ct.Hf_)
-{}
-
-
-template<class rhoType>
-inline Foam::constSolidThermo<rhoType>::constSolidThermo
-(
-    const rhoType& st,
-    const scalar Cp,
-    const scalar hf
-)
-:
-    rhoType(st),
-    Cp_(Cp),
-    Hf_(hf)
-{}
-
-
-template<class rhoType>
-inline Foam::autoPtr<Foam::constSolidThermo<rhoType> >
-Foam::constSolidThermo<rhoType>::clone() const
-{
-    return autoPtr<constSolidThermo<rhoType> >
-    (
-        new constSolidThermo<rhoType>(*this)
-    );
-}
-
-
-template<class rhoType>
-inline Foam::autoPtr<Foam::constSolidThermo<rhoType> >
-Foam::constSolidThermo<rhoType>::New(dictionary& is)
-{
-    return autoPtr<constSolidThermo<rhoType> >
-    (
-        new constSolidThermo<rhoType>(is)
-    );
-}
-
-
-// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
-
-template<class rhoType>
-inline Foam::scalar Foam::constSolidThermo<rhoType>::limit
-(
-    const scalar T
-) const
-{
-    return T;
-}
-
-
-template<class rhoType>
-inline Foam::scalar Foam::constSolidThermo<rhoType>::cp
-(
-    const scalar, const scalar
-) const
-{
-    return Cp_*this->W();
-}
-
-
-template<class rhoType>
-inline Foam::scalar Foam::constSolidThermo<rhoType>::ha
-(
-    const scalar p, const scalar T
-) const
-{
-    scalar hOffset = Cp_*(specie::Tstd);
-    return (Cp_*T + Hf_ - hOffset)*this->W();
-}
-
-
-template<class rhoType>
-inline Foam::scalar Foam::constSolidThermo<rhoType>::hs
-(
-    const scalar p, const scalar T
-) const
-{
-    scalar hOffset = Cp_*(specie::Tstd);
-    return (Cp_*T - hOffset)*this->W();
-}
-
-
-template<class rhoType>
-inline Foam::scalar Foam::constSolidThermo<rhoType>::hc() const
-{
-    return Hf_*this->W();
-}
-
-
-template<class rhoType>
-inline Foam::scalar Foam::constSolidThermo<rhoType>::s
-(
-    const scalar p, const scalar T
-) const
-{
-    notImplemented
-    (
-        "scalar constSolidThermo<rhoType>::"
-        "s(const scalar p, const scalar T) const"
-    );
-    return T;
-}
-
-// * * * * * * * * * * * * * * * Member Operators  * * * * * * * * * * * * * //
-
-template<class rhoType>
-inline Foam::constSolidThermo<rhoType>&
-Foam::constSolidThermo<rhoType>::operator=
-(
-    const constSolidThermo<rhoType>& ct
-)
-{
-    rhoType::operator=(ct);
-
-    Hf_ = ct.Hf_;
-    Cp_ = ct.Cp_;
-
-    return *this;
-}
-
-
-template<class rhoType>
-inline void Foam::constSolidThermo<rhoType>::operator+=
-(
-    const constSolidThermo<rhoType>& ct
-)
-{
-    scalar molr1 = this->nMoles();
-
-    rhoType::operator+=(ct);
-
-    molr1 /= this->nMoles();
-    scalar molr2 = ct.nMoles()/this->nMoles();
-
-    Cp_ = molr1*Cp_ + molr2*ct.Cp_;
-    Hf_ = molr1*Hf_ + molr2*ct.Hf_;
-}
-
-
-template<class rhoType>
-inline void Foam::constSolidThermo<rhoType>::operator-=
-(
-    const constSolidThermo<rhoType>& ct
-)
-{
-    scalar molr1 = this->nMoles();
-
-    rhoType::operator-=(ct);
-
-    molr1 /= this->nMoles();
-    scalar molr2 = ct.nMoles()/this->nMoles();
-
-    Cp_ = molr1*Cp_ - molr2*ct.Cp_;
-    Hf_ = molr1*Hf_ - molr2*ct.Hf_;
-}
-
-
-// * * * * * * * * * * * * * * * Friend Operators  * * * * * * * * * * * * * //
-
-template<class rhoType>
-inline Foam::constSolidThermo<rhoType> Foam::operator*
-(
-    const scalar s,
-    const constSolidThermo<rhoType>& ct
-)
-{
-    return constSolidThermo<rhoType>
-    (
-        s*static_cast<const rhoType&>(ct),
-        ct.Cp_,
-        ct.Hf_
-    );
-}
-
-// ************************************************************************* //
diff --git a/src/thermophysicalModels/solidChemistryModel/Make/options b/src/thermophysicalModels/solidChemistryModel/Make/options
index 2a5d76bca79f99a7cd056bc0307aa6ea01921020..bf091e91f888a4f2ee2ae96e13cce1f37bb1b094 100644
--- a/src/thermophysicalModels/solidChemistryModel/Make/options
+++ b/src/thermophysicalModels/solidChemistryModel/Make/options
@@ -4,8 +4,8 @@ EXE_INC = \
     -I$(LIB_SRC)/ODE/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/chemistryModel/lnInclude  \
     -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
-    -I$(LIB_SRC)/thermophysicalModels/solid/lnInclude \
-    -I$(LIB_SRC)/thermophysicalModels/basicSolidThermo/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/solidSpecie/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/solidThermo/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude
 
 
diff --git a/src/thermophysicalModels/solidChemistryModel/solidChemistryModel/solidChemistryModels.C b/src/thermophysicalModels/solidChemistryModel/solidChemistryModel/solidChemistryModels.C
index 50968cbabc1a8d9fdcdc3c5196e0fe0ffa0fa68d..bad1a77bbe089ad58eecb22fea0376d253fee67e 100644
--- a/src/thermophysicalModels/solidChemistryModel/solidChemistryModel/solidChemistryModels.C
+++ b/src/thermophysicalModels/solidChemistryModel/solidChemistryModel/solidChemistryModels.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -45,7 +45,7 @@ namespace Foam
     (
         ODESolidChemistryModel,
         solidChemistryModel,
-        constSolidThermoPhysics,
+        hConstSolidThermoPhysics,
         gasThermoPhysics
     );
 
@@ -53,7 +53,7 @@ namespace Foam
     (
         ODESolidChemistryModel,
         solidChemistryModel,
-        expoSolidThermoPhysics,
+        hExponentialSolidThermoPhysics,
         gasThermoPhysics
     );
 }
diff --git a/src/thermophysicalModels/solidChemistryModel/solidChemistrySolver/makeSolidChemistrySolvers.C b/src/thermophysicalModels/solidChemistryModel/solidChemistrySolver/makeSolidChemistrySolvers.C
index 8cd34f14efdeaa5536d47e5bc5cfc177fafc90a9..cfdb9c2d534b378b6bd6e1c63907423e0f21233a 100644
--- a/src/thermophysicalModels/solidChemistryModel/solidChemistrySolver/makeSolidChemistrySolvers.C
+++ b/src/thermophysicalModels/solidChemistryModel/solidChemistrySolver/makeSolidChemistrySolvers.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -39,7 +39,7 @@ License
 namespace Foam
 {
     typedef ODESolidChemistryModel
-        <solidChemistryModel, constSolidThermoPhysics, gasThermoPhysics>
+        <solidChemistryModel, hConstSolidThermoPhysics, gasThermoPhysics>
             solidODEChemistryConstThermo;
 
     makeChemistrySolver(solidODEChemistryConstThermo)
@@ -49,12 +49,12 @@ namespace Foam
         ode,
         ODESolidChemistryModel,
         solidChemistryModel,
-        constSolidThermoPhysics,
+        hConstSolidThermoPhysics,
         gasThermoPhysics
     )
 
     typedef ODESolidChemistryModel
-        <solidChemistryModel, expoSolidThermoPhysics, gasThermoPhysics>
+        <solidChemistryModel, hExponentialSolidThermoPhysics, gasThermoPhysics>
             solidODEChemistryExpThermo;
 
     makeChemistrySolver(solidODEChemistryExpThermo)
@@ -64,7 +64,7 @@ namespace Foam
         ode,
         ODESolidChemistryModel,
         solidChemistryModel,
-        expoSolidThermoPhysics,
+        hExponentialSolidThermoPhysics,
         gasThermoPhysics
     )
 }
diff --git a/src/thermophysicalModels/solid/Make/files b/src/thermophysicalModels/solidSpecie/Make/files
similarity index 64%
rename from src/thermophysicalModels/solid/Make/files
rename to src/thermophysicalModels/solidSpecie/Make/files
index b9ccaf886fc4dee8bd8c20717fdd32a0c62335a1..a444269f115513d350c0f85021613d388b3f231a 100644
--- a/src/thermophysicalModels/solid/Make/files
+++ b/src/thermophysicalModels/solidSpecie/Make/files
@@ -1,8 +1,4 @@
-rhoType/const/constRho.C
-
 reaction/Reactions/solidReaction/solidReaction.C
-
 reaction/reactions/makeSolidReactionThermoReactions.C
 
-
-LIB = $(FOAM_LIBBIN)/libsolid
+LIB = $(FOAM_LIBBIN)/libsolidSpecie
diff --git a/src/thermophysicalModels/solid/Make/options b/src/thermophysicalModels/solidSpecie/Make/options
similarity index 100%
rename from src/thermophysicalModels/solid/Make/options
rename to src/thermophysicalModels/solidSpecie/Make/options
diff --git a/src/thermophysicalModels/solid/include/solidThermoPhysicsTypes.H b/src/thermophysicalModels/solidSpecie/include/solidThermoPhysicsTypes.H
similarity index 86%
rename from src/thermophysicalModels/solid/include/solidThermoPhysicsTypes.H
rename to src/thermophysicalModels/solidSpecie/include/solidThermoPhysicsTypes.H
index 053ee36ee53a8764e7bbc8ac0197708a60fc30ff..9f15c3fe0f7d9553275f25b5a61e0d56d4f31cfd 100644
--- a/src/thermophysicalModels/solid/include/solidThermoPhysicsTypes.H
+++ b/src/thermophysicalModels/solidSpecie/include/solidThermoPhysicsTypes.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -32,10 +32,10 @@ Description
 #ifndef solidThermoPhysicsTypes_H
 #define solidThermoPhysicsTypes_H
 
-#include "constRho.H"
+#include "rhoConst.H"
 
-#include "constSolidThermo.H"
-#include "exponentialSolidThermo.H"
+#include "hConstThermo.H"
+#include "hExponentialThermo.H"
 
 #include "constIsoSolidTransport.H"
 #include "constAnIsoSolidTransport.H"
@@ -57,15 +57,15 @@ namespace Foam
             <
                 specieThermo
                 <
-                    constSolidThermo
+                    hConstThermo
                     <
-                        constRho
+                        rhoConst
                     >,
                     sensibleEnthalpy
                 >
             >
         >
-        constSolidThermoPhysics;
+        hConstSolidThermoPhysics;
 
     typedef
         exponentialSolidTransport
@@ -74,15 +74,15 @@ namespace Foam
             <
                 specieThermo
                 <
-                    exponentialSolidThermo
+                    hExponentialThermo
                     <
-                        constRho
+                        rhoConst
                     >,
                     sensibleEnthalpy
                 >
             >
         >
-        expoSolidThermoPhysics;
+        hExponentialSolidThermoPhysics;
 }
 
 
diff --git a/src/thermophysicalModels/solid/radiation/const/constSolidRad.C b/src/thermophysicalModels/solidSpecie/radiation/const/constSolidRad.C
similarity index 96%
rename from src/thermophysicalModels/solid/radiation/const/constSolidRad.C
rename to src/thermophysicalModels/solidSpecie/radiation/const/constSolidRad.C
index 9a1ecdc89fc05cb5509f486e9edc53e2bcb8fd6c..8d6c67c53836c68e6f8e6dc0ae3964386eca3757 100644
--- a/src/thermophysicalModels/solid/radiation/const/constSolidRad.C
+++ b/src/thermophysicalModels/solidSpecie/radiation/const/constSolidRad.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/thermophysicalModels/solid/radiation/const/constSolidRad.H b/src/thermophysicalModels/solidSpecie/radiation/const/constSolidRad.H
similarity index 98%
rename from src/thermophysicalModels/solid/radiation/const/constSolidRad.H
rename to src/thermophysicalModels/solidSpecie/radiation/const/constSolidRad.H
index 3066050c4f3f4c915b6ea8f5fa4cddac1974995e..af239b91a7464bda2a29ad02e0c5a10ac233100f 100644
--- a/src/thermophysicalModels/solid/radiation/const/constSolidRad.H
+++ b/src/thermophysicalModels/solidSpecie/radiation/const/constSolidRad.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/thermophysicalModels/solid/radiation/const/constSolidRadI.H b/src/thermophysicalModels/solidSpecie/radiation/const/constSolidRadI.H
similarity index 98%
rename from src/thermophysicalModels/solid/radiation/const/constSolidRadI.H
rename to src/thermophysicalModels/solidSpecie/radiation/const/constSolidRadI.H
index 1e17fbf9607a6f69bfc692338b944ac0ce518cde..2e7ce65cc17ee70bd354ccd974e6dc0c8803a980 100644
--- a/src/thermophysicalModels/solid/radiation/const/constSolidRadI.H
+++ b/src/thermophysicalModels/solidSpecie/radiation/const/constSolidRadI.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/thermophysicalModels/solid/reaction/Reactions/IrreversibleSolidReaction/IrreversibleSolidReaction.C b/src/thermophysicalModels/solidSpecie/reaction/Reactions/IrreversibleSolidReaction/IrreversibleSolidReaction.C
similarity index 100%
rename from src/thermophysicalModels/solid/reaction/Reactions/IrreversibleSolidReaction/IrreversibleSolidReaction.C
rename to src/thermophysicalModels/solidSpecie/reaction/Reactions/IrreversibleSolidReaction/IrreversibleSolidReaction.C
diff --git a/src/thermophysicalModels/solid/reaction/Reactions/IrreversibleSolidReaction/IrreversibleSolidReaction.H b/src/thermophysicalModels/solidSpecie/reaction/Reactions/IrreversibleSolidReaction/IrreversibleSolidReaction.H
similarity index 100%
rename from src/thermophysicalModels/solid/reaction/Reactions/IrreversibleSolidReaction/IrreversibleSolidReaction.H
rename to src/thermophysicalModels/solidSpecie/reaction/Reactions/IrreversibleSolidReaction/IrreversibleSolidReaction.H
diff --git a/src/thermophysicalModels/solid/reaction/Reactions/solidReaction/solidReaction.C b/src/thermophysicalModels/solidSpecie/reaction/Reactions/solidReaction/solidReaction.C
similarity index 100%
rename from src/thermophysicalModels/solid/reaction/Reactions/solidReaction/solidReaction.C
rename to src/thermophysicalModels/solidSpecie/reaction/Reactions/solidReaction/solidReaction.C
diff --git a/src/thermophysicalModels/solid/reaction/Reactions/solidReaction/solidReaction.H b/src/thermophysicalModels/solidSpecie/reaction/Reactions/solidReaction/solidReaction.H
similarity index 100%
rename from src/thermophysicalModels/solid/reaction/Reactions/solidReaction/solidReaction.H
rename to src/thermophysicalModels/solidSpecie/reaction/Reactions/solidReaction/solidReaction.H
diff --git a/src/thermophysicalModels/solid/reaction/Reactions/solidReaction/solidReactionI.H b/src/thermophysicalModels/solidSpecie/reaction/Reactions/solidReaction/solidReactionI.H
similarity index 96%
rename from src/thermophysicalModels/solid/reaction/Reactions/solidReaction/solidReactionI.H
rename to src/thermophysicalModels/solidSpecie/reaction/Reactions/solidReaction/solidReactionI.H
index 22d15677bee399745f5a9147b7263be9811271bf..07b7727decfd3376f0722da2da7ba86184563478 100644
--- a/src/thermophysicalModels/solid/reaction/Reactions/solidReaction/solidReactionI.H
+++ b/src/thermophysicalModels/solidSpecie/reaction/Reactions/solidReaction/solidReactionI.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/thermophysicalModels/solid/reaction/reactionRate/solidArrheniusReactionRate/solidArrheniusReactionRate.H b/src/thermophysicalModels/solidSpecie/reaction/reactionRate/solidArrheniusReactionRate/solidArrheniusReactionRate.H
similarity index 100%
rename from src/thermophysicalModels/solid/reaction/reactionRate/solidArrheniusReactionRate/solidArrheniusReactionRate.H
rename to src/thermophysicalModels/solidSpecie/reaction/reactionRate/solidArrheniusReactionRate/solidArrheniusReactionRate.H
diff --git a/src/thermophysicalModels/solid/reaction/reactionRate/solidArrheniusReactionRate/solidArrheniusReactionRateI.H b/src/thermophysicalModels/solidSpecie/reaction/reactionRate/solidArrheniusReactionRate/solidArrheniusReactionRateI.H
similarity index 100%
rename from src/thermophysicalModels/solid/reaction/reactionRate/solidArrheniusReactionRate/solidArrheniusReactionRateI.H
rename to src/thermophysicalModels/solidSpecie/reaction/reactionRate/solidArrheniusReactionRate/solidArrheniusReactionRateI.H
diff --git a/src/thermophysicalModels/solid/reaction/reactions/makeSolidReactionThermo.H b/src/thermophysicalModels/solidSpecie/reaction/reactions/makeSolidReactionThermo.H
similarity index 100%
rename from src/thermophysicalModels/solid/reaction/reactions/makeSolidReactionThermo.H
rename to src/thermophysicalModels/solidSpecie/reaction/reactions/makeSolidReactionThermo.H
diff --git a/src/thermophysicalModels/solid/reaction/reactions/makeSolidReactionThermoReactions.C b/src/thermophysicalModels/solidSpecie/reaction/reactions/makeSolidReactionThermoReactions.C
similarity index 95%
rename from src/thermophysicalModels/solid/reaction/reactions/makeSolidReactionThermoReactions.C
rename to src/thermophysicalModels/solidSpecie/reaction/reactions/makeSolidReactionThermoReactions.C
index 963b86054499a6b5b04286e576a03ae80a4ca00e..d0e19b443ba6600641790a428c3289ab15cad8d4 100644
--- a/src/thermophysicalModels/solid/reaction/reactions/makeSolidReactionThermoReactions.C
+++ b/src/thermophysicalModels/solidSpecie/reaction/reactions/makeSolidReactionThermoReactions.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/thermophysicalModels/solid/transport/const/constAnIsoSolidTransport.C b/src/thermophysicalModels/solidSpecie/transport/const/constAnIsoSolidTransport.C
similarity index 96%
rename from src/thermophysicalModels/solid/transport/const/constAnIsoSolidTransport.C
rename to src/thermophysicalModels/solidSpecie/transport/const/constAnIsoSolidTransport.C
index a487c0665bb6a027e4457395fa9c1fbf5ee0527c..a1a38cc3d0016d7ac2617728e4dfd16315dbe29d 100644
--- a/src/thermophysicalModels/solid/transport/const/constAnIsoSolidTransport.C
+++ b/src/thermophysicalModels/solidSpecie/transport/const/constAnIsoSolidTransport.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/thermophysicalModels/solid/transport/const/constAnIsoSolidTransport.H b/src/thermophysicalModels/solidSpecie/transport/const/constAnIsoSolidTransport.H
similarity index 100%
rename from src/thermophysicalModels/solid/transport/const/constAnIsoSolidTransport.H
rename to src/thermophysicalModels/solidSpecie/transport/const/constAnIsoSolidTransport.H
diff --git a/src/thermophysicalModels/solid/transport/const/constAnIsoSolidTransportI.H b/src/thermophysicalModels/solidSpecie/transport/const/constAnIsoSolidTransportI.H
similarity index 100%
rename from src/thermophysicalModels/solid/transport/const/constAnIsoSolidTransportI.H
rename to src/thermophysicalModels/solidSpecie/transport/const/constAnIsoSolidTransportI.H
diff --git a/src/thermophysicalModels/solid/transport/const/constIsoSolidTransport.C b/src/thermophysicalModels/solidSpecie/transport/const/constIsoSolidTransport.C
similarity index 96%
rename from src/thermophysicalModels/solid/transport/const/constIsoSolidTransport.C
rename to src/thermophysicalModels/solidSpecie/transport/const/constIsoSolidTransport.C
index ed0e1fc0633deefb7b68706c2b8520ea99f4bfbd..5e7f34cf27a4708904b080ea4ae164a452623e1a 100644
--- a/src/thermophysicalModels/solid/transport/const/constIsoSolidTransport.C
+++ b/src/thermophysicalModels/solidSpecie/transport/const/constIsoSolidTransport.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/thermophysicalModels/solid/transport/const/constIsoSolidTransport.H b/src/thermophysicalModels/solidSpecie/transport/const/constIsoSolidTransport.H
similarity index 100%
rename from src/thermophysicalModels/solid/transport/const/constIsoSolidTransport.H
rename to src/thermophysicalModels/solidSpecie/transport/const/constIsoSolidTransport.H
diff --git a/src/thermophysicalModels/solid/transport/const/constIsoSolidTransportI.H b/src/thermophysicalModels/solidSpecie/transport/const/constIsoSolidTransportI.H
similarity index 100%
rename from src/thermophysicalModels/solid/transport/const/constIsoSolidTransportI.H
rename to src/thermophysicalModels/solidSpecie/transport/const/constIsoSolidTransportI.H
diff --git a/src/thermophysicalModels/solid/transport/exponential/exponentialSolidTransport.C b/src/thermophysicalModels/solidSpecie/transport/exponential/exponentialSolidTransport.C
similarity index 96%
rename from src/thermophysicalModels/solid/transport/exponential/exponentialSolidTransport.C
rename to src/thermophysicalModels/solidSpecie/transport/exponential/exponentialSolidTransport.C
index 8aea92bf06b3945a87f0601474fa089f637d84c4..b479bd4b66db99cd4801eb7bf0fd3e490fd794b1 100644
--- a/src/thermophysicalModels/solid/transport/exponential/exponentialSolidTransport.C
+++ b/src/thermophysicalModels/solidSpecie/transport/exponential/exponentialSolidTransport.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/thermophysicalModels/solid/transport/exponential/exponentialSolidTransport.H b/src/thermophysicalModels/solidSpecie/transport/exponential/exponentialSolidTransport.H
similarity index 100%
rename from src/thermophysicalModels/solid/transport/exponential/exponentialSolidTransport.H
rename to src/thermophysicalModels/solidSpecie/transport/exponential/exponentialSolidTransport.H
diff --git a/src/thermophysicalModels/solid/transport/exponential/exponentialSolidTransportI.H b/src/thermophysicalModels/solidSpecie/transport/exponential/exponentialSolidTransportI.H
similarity index 100%
rename from src/thermophysicalModels/solid/transport/exponential/exponentialSolidTransportI.H
rename to src/thermophysicalModels/solidSpecie/transport/exponential/exponentialSolidTransportI.H
diff --git a/src/thermophysicalModels/basicSolidThermo/Make/files b/src/thermophysicalModels/solidThermo/Make/files
similarity index 84%
rename from src/thermophysicalModels/basicSolidThermo/Make/files
rename to src/thermophysicalModels/solidThermo/Make/files
index af7fbb396737454ea5627ef9131d0216e753f21e..9a6e5dab610a24a7e4780bdb53bb4496a0668a74 100644
--- a/src/thermophysicalModels/basicSolidThermo/Make/files
+++ b/src/thermophysicalModels/solidThermo/Make/files
@@ -7,4 +7,4 @@ solidReactionThermo/solidReactionThermo.C
 solidReactionThermo/solidReactionThermoNew.C
 heSolidThermo/heSolidThermos.C
 
-LIB = $(FOAM_LIBBIN)/libbasicSolidThermo
+LIB = $(FOAM_LIBBIN)/libsolidThermo
diff --git a/src/thermophysicalModels/basicSolidThermo/Make/options b/src/thermophysicalModels/solidThermo/Make/options
similarity index 70%
rename from src/thermophysicalModels/basicSolidThermo/Make/options
rename to src/thermophysicalModels/solidThermo/Make/options
index 8c27a21b82d663243441ba07fb09930524360bef..356a2ba06edb905df31d80de6e20e2125c6d89c7 100644
--- a/src/thermophysicalModels/basicSolidThermo/Make/options
+++ b/src/thermophysicalModels/solidThermo/Make/options
@@ -3,11 +3,11 @@ EXE_INC = \
     -I$(LIB_SRC)/finiteVolume/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \
-    -I$(LIB_SRC)/thermophysicalModels/solid/lnInclude
+    -I$(LIB_SRC)/thermophysicalModels/solidSpecie/lnInclude
 
 LIB_LIBS = \
     -lmeshTools \
     -lfiniteVolume \
     -lspecie \
-    -lsolid \
-    -lbasicThermophysicalModels
+    -lsolidSpecie \
+    -lfluidThermophysicalModels
diff --git a/src/thermophysicalModels/basicSolidThermo/heSolidThermo/heSolidThermo.C b/src/thermophysicalModels/solidThermo/heSolidThermo/heSolidThermo.C
similarity index 100%
rename from src/thermophysicalModels/basicSolidThermo/heSolidThermo/heSolidThermo.C
rename to src/thermophysicalModels/solidThermo/heSolidThermo/heSolidThermo.C
diff --git a/src/thermophysicalModels/basicSolidThermo/heSolidThermo/heSolidThermo.H b/src/thermophysicalModels/solidThermo/heSolidThermo/heSolidThermo.H
similarity index 100%
rename from src/thermophysicalModels/basicSolidThermo/heSolidThermo/heSolidThermo.H
rename to src/thermophysicalModels/solidThermo/heSolidThermo/heSolidThermo.H
diff --git a/src/thermophysicalModels/basicSolidThermo/heSolidThermo/heSolidThermos.C b/src/thermophysicalModels/solidThermo/heSolidThermo/heSolidThermos.C
similarity index 87%
rename from src/thermophysicalModels/basicSolidThermo/heSolidThermo/heSolidThermos.C
rename to src/thermophysicalModels/solidThermo/heSolidThermo/heSolidThermos.C
index 114f16d5efefb9c2b5307b378d9086b905213183..6d7ffa538f15eb2ddf22083bc756b4da0e2fd47c 100644
--- a/src/thermophysicalModels/basicSolidThermo/heSolidThermo/heSolidThermos.C
+++ b/src/thermophysicalModels/solidThermo/heSolidThermo/heSolidThermos.C
@@ -26,10 +26,10 @@ License
 
 #include "makeSolidThermo.H"
 
-#include "constRho.H"
+#include "rhoConst.H"
 
-#include "constSolidThermo.H"
-#include "exponentialSolidThermo.H"
+#include "hConstThermo.H"
+#include "hExponentialThermo.H"
 
 #include "constIsoSolidTransport.H"
 #include "constAnIsoSolidTransport.H"
@@ -66,8 +66,8 @@ makeSolidThermo
     constIsoSolidTransport,
     constSolidRad,
     sensibleEnthalpy,
-    constSolidThermo,
-    constRho
+    hConstThermo,
+    rhoConst
 );
 
 makeSolidThermo
@@ -78,8 +78,8 @@ makeSolidThermo
     constAnIsoSolidTransport,
     constSolidRad,
     sensibleEnthalpy,
-    constSolidThermo,
-    constRho
+    hConstThermo,
+    rhoConst
 );
 
 makeSolidThermo
@@ -90,8 +90,8 @@ makeSolidThermo
     exponentialSolidTransport,
     constSolidRad,
     sensibleEnthalpy,
-    exponentialSolidThermo,
-    constRho
+    hExponentialThermo,
+    rhoConst
 );
 
 makeSolidThermo
@@ -102,11 +102,10 @@ makeSolidThermo
     constIsoSolidTransport,
     constSolidRad,
     sensibleEnthalpy,
-    constSolidThermo,
-    constRho
+    hConstThermo,
+    rhoConst
 );
 
-// Reacting solid thermo
 makeSolidThermo
 (
     solidReactionThermo,
@@ -115,14 +114,10 @@ makeSolidThermo
     constIsoSolidTransport,
     constSolidRad,
     sensibleEnthalpy,
-    constSolidThermo,
-    constRho
+    hConstThermo,
+    rhoConst
 );
 
-/* * * * * * * * * * * * * * Internal-energy-based * * * * * * * * * * * * * */
-/*
-
-*/
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
diff --git a/src/thermophysicalModels/basicSolidThermo/mixtures/basicSolidMixture/basicSolidMixture.C b/src/thermophysicalModels/solidThermo/mixtures/basicSolidMixture/basicSolidMixture.C
similarity index 97%
rename from src/thermophysicalModels/basicSolidThermo/mixtures/basicSolidMixture/basicSolidMixture.C
rename to src/thermophysicalModels/solidThermo/mixtures/basicSolidMixture/basicSolidMixture.C
index 0ba58807fe04b0fd10d795be7147ca7e1e21dbcb..d815f35c4fd1ecf7df653cc1f8a6c0d57f51075a 100644
--- a/src/thermophysicalModels/basicSolidThermo/mixtures/basicSolidMixture/basicSolidMixture.C
+++ b/src/thermophysicalModels/solidThermo/mixtures/basicSolidMixture/basicSolidMixture.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/thermophysicalModels/basicSolidThermo/mixtures/basicSolidMixture/basicSolidMixture.H b/src/thermophysicalModels/solidThermo/mixtures/basicSolidMixture/basicSolidMixture.H
similarity index 98%
rename from src/thermophysicalModels/basicSolidThermo/mixtures/basicSolidMixture/basicSolidMixture.H
rename to src/thermophysicalModels/solidThermo/mixtures/basicSolidMixture/basicSolidMixture.H
index f340d09113b2bc5d00a110b009e540cc3e08442b..d5cce4600aa20c7099604aa7bc0650672c0ce953 100644
--- a/src/thermophysicalModels/basicSolidThermo/mixtures/basicSolidMixture/basicSolidMixture.H
+++ b/src/thermophysicalModels/solidThermo/mixtures/basicSolidMixture/basicSolidMixture.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/thermophysicalModels/basicSolidThermo/mixtures/basicSolidMixture/basicSolidMixtureI.H b/src/thermophysicalModels/solidThermo/mixtures/basicSolidMixture/basicSolidMixtureI.H
similarity index 96%
rename from src/thermophysicalModels/basicSolidThermo/mixtures/basicSolidMixture/basicSolidMixtureI.H
rename to src/thermophysicalModels/solidThermo/mixtures/basicSolidMixture/basicSolidMixtureI.H
index 0ca9d18801bc08de36a2e99bf690187e2a5c3199..5145e6b26a43a31be78ce077c0a07dab791d6f78 100644
--- a/src/thermophysicalModels/basicSolidThermo/mixtures/basicSolidMixture/basicSolidMixtureI.H
+++ b/src/thermophysicalModels/solidThermo/mixtures/basicSolidMixture/basicSolidMixtureI.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/thermophysicalModels/basicSolidThermo/mixtures/basicSolidMixture/basicSolidMixtures.C b/src/thermophysicalModels/solidThermo/mixtures/basicSolidMixture/basicSolidMixtures.C
similarity index 60%
rename from src/thermophysicalModels/basicSolidThermo/mixtures/basicSolidMixture/basicSolidMixtures.C
rename to src/thermophysicalModels/solidThermo/mixtures/basicSolidMixture/basicSolidMixtures.C
index 35240732d40b2b746756b3df6e66b33b7ab84d1e..67c91ab806fff24c5cfd19f20c4f58e80d81fc3f 100644
--- a/src/thermophysicalModels/basicSolidThermo/mixtures/basicSolidMixture/basicSolidMixtures.C
+++ b/src/thermophysicalModels/solidThermo/mixtures/basicSolidMixture/basicSolidMixtures.C
@@ -26,15 +26,14 @@ Description
 
 \*---------------------------------------------------------------------------*/
 
-
 #include "basicMixture.H"
 #include "makeBasicMixture.H"
 
 
-#include "constRho.H"
+#include "rhoConst.H"
 
-#include "constSolidThermo.H"
-#include "exponentialSolidThermo.H"
+#include "hConstThermo.H"
+#include "hExponentialThermo.H"
 
 #include "constIsoSolidTransport.H"
 #include "constAnIsoSolidTransport.H"
@@ -64,8 +63,8 @@ makeBasicMixture
     pureSolidMixture,
     constIsoSolidTransport,
     sensibleEnthalpy,
-    constSolidThermo,
-    constRho
+    hConstThermo,
+    rhoConst
 );
 
 makeBasicMixture
@@ -73,8 +72,8 @@ makeBasicMixture
     pureSolidMixture,
     constAnIsoSolidTransport,
     sensibleEnthalpy,
-    constSolidThermo,
-    constRho
+    hConstThermo,
+    rhoConst
 );
 
 makeBasicMixture
@@ -82,8 +81,8 @@ makeBasicMixture
     pureSolidMixture,
     exponentialSolidTransport,
     sensibleEnthalpy,
-    exponentialSolidThermo,
-    constRho
+    hExponentialThermo,
+    rhoConst
 );
 
 makeBasicMixture
@@ -91,8 +90,8 @@ makeBasicMixture
     multiComponentSolidMixture,
     constIsoSolidTransport,
     sensibleEnthalpy,
-    constSolidThermo,
-    constRho
+    hConstThermo,
+    rhoConst
 );
 
 makeBasicMixture
@@ -100,126 +99,10 @@ makeBasicMixture
     reactingSolidMixture,
     constIsoSolidTransport,
     sensibleEnthalpy,
-    constSolidThermo,
-    constRho
-);
-
-
-/*
-makeBasicMixture
-(
-    pureMixture,
-    sutherlandTransport,
-    sensibleInternalEnergy,
-    eConstThermo,
-    perfectGas
-);
-
-makeBasicMixture
-(
-    pureMixture,
-    constTransport,
-    sensibleInternalEnergy,
-    hConstThermo,
-    perfectGas
-);
-
-makeBasicMixture
-(
-    pureMixture,
-    sutherlandTransport,
-    sensibleInternalEnergy,
-    hConstThermo,
-    perfectGas
-);
-
-makeBasicMixture
-(
-    pureMixture,
-    sutherlandTransport,
-    sensibleInternalEnergy,
-    janafThermo,
-    perfectGas
-);
-
-makeBasicMixture
-(
-    pureMixture,
-    constTransport,
-    sensibleEnthalpy,
-    hConstThermo,
-    perfectGas
-);
-
-makeBasicMixture
-(
-    pureMixture,
-    sutherlandTransport,
-    sensibleEnthalpy,
     hConstThermo,
-    perfectGas
+    rhoConst
 );
 
-makeBasicMixture
-(
-    pureMixture,
-    sutherlandTransport,
-    sensibleEnthalpy,
-    janafThermo,
-    perfectGas
-);
-
-makeBasicMixture
-(
-    pureMixture,
-    constTransport,
-    sensibleEnthalpy,
-    hConstThermo,
-    incompressible
-);
-
-makeBasicPolyMixture
-(
-    pureMixture,
-    3,
-    sensibleEnthalpy
-);
-
-makeBasicPolyMixture
-(
-    pureMixture,
-    8,
-    sensibleEnthalpy
-);
-
-
-makeBasicMixture
-(
-    pureMixture,
-    constTransport,
-    sensibleEnthalpy,
-    hConstThermo,
-    isobaricPerfectGas
-);
-
-makeBasicMixture
-(
-    pureMixture,
-    sutherlandTransport,
-    sensibleEnthalpy,
-    hConstThermo,
-    isobaricPerfectGas
-);
-
-makeBasicMixture
-(
-    pureMixture,
-    sutherlandTransport,
-    sensibleEnthalpy,
-    janafThermo,
-    isobaricPerfectGas
-);
-*/
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
diff --git a/src/thermophysicalModels/basicSolidThermo/mixtures/multiComponentSolidMixture/multiComponentSolidMixture.C b/src/thermophysicalModels/solidThermo/mixtures/multiComponentSolidMixture/multiComponentSolidMixture.C
similarity index 99%
rename from src/thermophysicalModels/basicSolidThermo/mixtures/multiComponentSolidMixture/multiComponentSolidMixture.C
rename to src/thermophysicalModels/solidThermo/mixtures/multiComponentSolidMixture/multiComponentSolidMixture.C
index a4f9a69db8e2d94ee36f68e9d813ae55c9fd19b4..261bc6612394b2a88c90a04079dc2841ca08bc9e 100644
--- a/src/thermophysicalModels/basicSolidThermo/mixtures/multiComponentSolidMixture/multiComponentSolidMixture.C
+++ b/src/thermophysicalModels/solidThermo/mixtures/multiComponentSolidMixture/multiComponentSolidMixture.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/thermophysicalModels/basicSolidThermo/mixtures/multiComponentSolidMixture/multiComponentSolidMixture.H b/src/thermophysicalModels/solidThermo/mixtures/multiComponentSolidMixture/multiComponentSolidMixture.H
similarity index 98%
rename from src/thermophysicalModels/basicSolidThermo/mixtures/multiComponentSolidMixture/multiComponentSolidMixture.H
rename to src/thermophysicalModels/solidThermo/mixtures/multiComponentSolidMixture/multiComponentSolidMixture.H
index ad6c55eae84c805a6415b164da997f9f58442b4e..494b839ce6e9e4ada085eac9e24b6c9665236a1c 100644
--- a/src/thermophysicalModels/basicSolidThermo/mixtures/multiComponentSolidMixture/multiComponentSolidMixture.H
+++ b/src/thermophysicalModels/solidThermo/mixtures/multiComponentSolidMixture/multiComponentSolidMixture.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/thermophysicalModels/basicSolidThermo/mixtures/pureSolidMixture/pureSolidMixture.C b/src/thermophysicalModels/solidThermo/mixtures/pureSolidMixture/pureSolidMixture.C
similarity index 96%
rename from src/thermophysicalModels/basicSolidThermo/mixtures/pureSolidMixture/pureSolidMixture.C
rename to src/thermophysicalModels/solidThermo/mixtures/pureSolidMixture/pureSolidMixture.C
index ee4be60464b2cf5f355425355e900f5dcd0f44fc..f9ea16c03bdd6986c8d99e89bb8403f3bd2d12fa 100644
--- a/src/thermophysicalModels/basicSolidThermo/mixtures/pureSolidMixture/pureSolidMixture.C
+++ b/src/thermophysicalModels/solidThermo/mixtures/pureSolidMixture/pureSolidMixture.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/thermophysicalModels/basicSolidThermo/mixtures/pureSolidMixture/pureSolidMixture.H b/src/thermophysicalModels/solidThermo/mixtures/pureSolidMixture/pureSolidMixture.H
similarity index 97%
rename from src/thermophysicalModels/basicSolidThermo/mixtures/pureSolidMixture/pureSolidMixture.H
rename to src/thermophysicalModels/solidThermo/mixtures/pureSolidMixture/pureSolidMixture.H
index a0fea3800b38dbba3cfdc550e61cda53c8d617c2..f2dae829cdb9f37853b5583b531d26783c26904b 100644
--- a/src/thermophysicalModels/basicSolidThermo/mixtures/pureSolidMixture/pureSolidMixture.H
+++ b/src/thermophysicalModels/solidThermo/mixtures/pureSolidMixture/pureSolidMixture.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/thermophysicalModels/basicSolidThermo/mixtures/reactingSolidMixture/reactingSolidMixture.C b/src/thermophysicalModels/solidThermo/mixtures/reactingSolidMixture/reactingSolidMixture.C
similarity index 96%
rename from src/thermophysicalModels/basicSolidThermo/mixtures/reactingSolidMixture/reactingSolidMixture.C
rename to src/thermophysicalModels/solidThermo/mixtures/reactingSolidMixture/reactingSolidMixture.C
index 411e55ec5d82f370aafdab9673f1b927631bc4c9..bc498e21dad8bdee8a5606b05b888d9206c2a3ad 100644
--- a/src/thermophysicalModels/basicSolidThermo/mixtures/reactingSolidMixture/reactingSolidMixture.C
+++ b/src/thermophysicalModels/solidThermo/mixtures/reactingSolidMixture/reactingSolidMixture.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/thermophysicalModels/basicSolidThermo/mixtures/reactingSolidMixture/reactingSolidMixture.H b/src/thermophysicalModels/solidThermo/mixtures/reactingSolidMixture/reactingSolidMixture.H
similarity index 97%
rename from src/thermophysicalModels/basicSolidThermo/mixtures/reactingSolidMixture/reactingSolidMixture.H
rename to src/thermophysicalModels/solidThermo/mixtures/reactingSolidMixture/reactingSolidMixture.H
index b15cbc26257eb2ca856874c63428883ad9acdce9..a2525175910d0f786f0bfff49a18d71f53516f50 100644
--- a/src/thermophysicalModels/basicSolidThermo/mixtures/reactingSolidMixture/reactingSolidMixture.H
+++ b/src/thermophysicalModels/solidThermo/mixtures/reactingSolidMixture/reactingSolidMixture.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/thermophysicalModels/basicSolidThermo/solidReactionThermo/solidReactionThermo.C b/src/thermophysicalModels/solidThermo/solidReactionThermo/solidReactionThermo.C
similarity index 100%
rename from src/thermophysicalModels/basicSolidThermo/solidReactionThermo/solidReactionThermo.C
rename to src/thermophysicalModels/solidThermo/solidReactionThermo/solidReactionThermo.C
diff --git a/src/thermophysicalModels/basicSolidThermo/solidReactionThermo/solidReactionThermo.H b/src/thermophysicalModels/solidThermo/solidReactionThermo/solidReactionThermo.H
similarity index 99%
rename from src/thermophysicalModels/basicSolidThermo/solidReactionThermo/solidReactionThermo.H
rename to src/thermophysicalModels/solidThermo/solidReactionThermo/solidReactionThermo.H
index 7459d2d63923b58db4b66398be5d1c68befaabcc..6aa8a760471b6580d0a1abc22e9408beaaa16a63 100644
--- a/src/thermophysicalModels/basicSolidThermo/solidReactionThermo/solidReactionThermo.H
+++ b/src/thermophysicalModels/solidThermo/solidReactionThermo/solidReactionThermo.H
@@ -35,7 +35,6 @@ SourceFiles
 #ifndef solidReactionThermo_H
 #define solidReactionThermo_H
 
-#include "rhoThermo.H"
 #include "basicSolidMixture.H"
 #include "solidThermo.H"
 #include "autoPtr.H"
diff --git a/src/thermophysicalModels/basicSolidThermo/solidReactionThermo/solidReactionThermoNew.C b/src/thermophysicalModels/solidThermo/solidReactionThermo/solidReactionThermoNew.C
similarity index 100%
rename from src/thermophysicalModels/basicSolidThermo/solidReactionThermo/solidReactionThermoNew.C
rename to src/thermophysicalModels/solidThermo/solidReactionThermo/solidReactionThermoNew.C
diff --git a/src/thermophysicalModels/basicSolidThermo/solidThermo/makeSolidThermo.H b/src/thermophysicalModels/solidThermo/solidThermo/makeSolidThermo.H
similarity index 99%
rename from src/thermophysicalModels/basicSolidThermo/solidThermo/makeSolidThermo.H
rename to src/thermophysicalModels/solidThermo/solidThermo/makeSolidThermo.H
index 4a911e8c0fd6185d49710be27781215bed08724b..6ff422db118ff538a9252bb0ed0cf014009a08a0 100644
--- a/src/thermophysicalModels/basicSolidThermo/solidThermo/makeSolidThermo.H
+++ b/src/thermophysicalModels/solidThermo/solidThermo/makeSolidThermo.H
@@ -131,7 +131,7 @@ addToRunTimeSelectionTable                                                    \
 );                                                                            \
 addToRunTimeSelectionTable                                                    \
 (                                                                             \
-    basicThermo,                                                              \
+    basicThermo,                                                          \
     Cthermo##Mixture##Transport##Radiation##Type##Thermo##Rho##BaseThermo,    \
     fvMesh                                                                    \
 );                                                                            \
diff --git a/src/thermophysicalModels/basicSolidThermo/solidThermo/solidThermo.C b/src/thermophysicalModels/solidThermo/solidThermo/solidThermo.C
similarity index 75%
rename from src/thermophysicalModels/basicSolidThermo/solidThermo/solidThermo.C
rename to src/thermophysicalModels/solidThermo/solidThermo/solidThermo.C
index d1e6af4e2b1b65041fcf85759c56d62d72e1648e..e5bb9fa2741cdbc284ee07a0ce65bb548e98417a 100644
--- a/src/thermophysicalModels/basicSolidThermo/solidThermo/solidThermo.C
+++ b/src/thermophysicalModels/solidThermo/solidThermo/solidThermo.C
@@ -25,8 +25,7 @@ License
 
 #include "solidThermo.H"
 #include "fvMesh.H"
-#include "volFields.H"
-#include "HashTable.H"
+
 
 /* * * * * * * * * * * * * * * private static data * * * * * * * * * * * * * */
 
@@ -42,7 +41,20 @@ namespace Foam
 
 Foam::solidThermo::solidThermo(const fvMesh& mesh)
 :
-    rhoThermo(mesh)
+    basicThermo(mesh),
+    rho_
+    (
+        IOobject
+        (
+            "rhoThermo",
+            mesh.time().timeName(),
+            mesh,
+            IOobject::NO_READ,
+            IOobject::NO_WRITE
+        ),
+        mesh,
+        dimDensity
+    )
 {}
 
 
@@ -52,7 +64,20 @@ Foam::solidThermo::solidThermo
     const dictionary& dict
 )
 :
-    rhoThermo(mesh, dict)
+    basicThermo(mesh, dict),
+    rho_
+    (
+        IOobject
+        (
+            "rhoThermo",
+            mesh.time().timeName(),
+            mesh,
+            IOobject::NO_READ,
+            IOobject::NO_WRITE
+        ),
+        mesh,
+        dimDensity
+    )
 {}
 
 
@@ -64,6 +89,18 @@ Foam::solidThermo::~solidThermo()
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
+Foam::tmp<Foam::volScalarField> Foam::solidThermo::rho() const
+{
+    return rho_;
+}
+
+
+Foam::volScalarField& Foam::solidThermo::rho()
+{
+    return rho_;
+}
+
+
 bool Foam::solidThermo::read()
 {
     return regIOobject::read();
diff --git a/src/thermophysicalModels/basicSolidThermo/solidThermo/solidThermo.H b/src/thermophysicalModels/solidThermo/solidThermo/solidThermo.H
similarity index 88%
rename from src/thermophysicalModels/basicSolidThermo/solidThermo/solidThermo.H
rename to src/thermophysicalModels/solidThermo/solidThermo/solidThermo.H
index 08b9f82ab431a48b76e194cd3e318c9ffd4e98f5..075907903abc414db88e04bd24c5a432270e5694 100644
--- a/src/thermophysicalModels/basicSolidThermo/solidThermo/solidThermo.H
+++ b/src/thermophysicalModels/solidThermo/solidThermo/solidThermo.H
@@ -25,7 +25,7 @@ Class
     Foam::solidThermo
 
 Description
-    Basic solid thermodynamic properties
+    Fundamental solid thermodynamic properties
 
 SourceFiles
     solidThermo.C
@@ -41,7 +41,8 @@ SourceFiles
 #include "IOdictionary.H"
 #include "autoPtr.H"
 #include "basicSolidMixture.H"
-#include "rhoThermo.H"
+#include "basicThermo.H"
+#include "autoPtr.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -54,9 +55,18 @@ namespace Foam
 
 class solidThermo
 :
-    public rhoThermo
+    public basicThermo
 {
 
+protected:
+
+    // Protected data
+
+        //- Density field [kg/m^3]
+        //  Named 'rhoThermo' to avoid (potential) conflict with solver density
+        volScalarField rho_;
+
+
 public:
 
     //- Runtime type information
@@ -107,8 +117,13 @@ public:
 
     // Member functions
 
+        // Fields derived from thermodynamic state variables
+
+            //- Density [kg/m^3]
+            virtual tmp<volScalarField> rho() const;
 
-        // Derived thermal properties
+            //- Return non-const access to the local density field [kg/m^3]
+            virtual volScalarField& rho();
 
             //- Thermal conductivity [W/m/K]
             virtual tmp<volVectorField> Kappa() const = 0;
diff --git a/src/thermophysicalModels/basicSolidThermo/solidThermo/solidThermoNew.C b/src/thermophysicalModels/solidThermo/solidThermo/solidThermoNew.C
similarity index 97%
rename from src/thermophysicalModels/basicSolidThermo/solidThermo/solidThermoNew.C
rename to src/thermophysicalModels/solidThermo/solidThermo/solidThermoNew.C
index a13616e3249ae422b578d081a2529eef17c27a3b..a378d6f2e5c7706a0856982949a19ce4eb5e3ca2 100644
--- a/src/thermophysicalModels/basicSolidThermo/solidThermo/solidThermoNew.C
+++ b/src/thermophysicalModels/solidThermo/solidThermo/solidThermoNew.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/thermophysicalModels/specie/Make/files b/src/thermophysicalModels/specie/Make/files
index 0d1d4f73da197edbb486410b190d73e894c9eadc..23a7bdf3a9e9482cb61403f2274b656da87dd660 100644
--- a/src/thermophysicalModels/specie/Make/files
+++ b/src/thermophysicalModels/specie/Make/files
@@ -6,8 +6,8 @@ reactions = reaction/reactions
 $(atomicWeights)/atomicWeights.C
 $(specie)/specie.C
 $(equationOfState)/perfectGas/perfectGas.C
-$(equationOfState)/incompressible/incompressible.C
-$(equationOfState)/isobaricPerfectGas/isobaricPerfectGas.C
+$(equationOfState)/rhoConst/rhoConst.C
+$(equationOfState)/incompressiblePerfectGas/incompressiblePerfectGas.C
 $(reactions)/makeReactionThermoReactions.C
 $(reactions)/makeLangmuirHinshelwoodReactions.C
 
diff --git a/src/thermophysicalModels/specie/equationOfState/icoPolynomial/icoPolynomial.H b/src/thermophysicalModels/specie/equationOfState/icoPolynomial/icoPolynomial.H
index d293abc8f91ba75f9dab2bbe77ec5290e2e6aa2c..3afc213e227f76894b6977051e9359eef5ff7e41 100644
--- a/src/thermophysicalModels/specie/equationOfState/icoPolynomial/icoPolynomial.H
+++ b/src/thermophysicalModels/specie/equationOfState/icoPolynomial/icoPolynomial.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -140,6 +140,12 @@ public:
 
         // Fundamental properties
 
+            //- Is the equation of state is incompressible i.e. rho != f(p)
+            static const bool incompressible = true;
+
+            //- Is the equation of state is isochoric i.e. rho = const
+            static const bool isochoric = false;
+
             //- Return density [kg/m^3]
             inline scalar rho(scalar p, scalar T) const;
 
@@ -149,8 +155,11 @@ public:
             //- Return compression factor []
             inline scalar Z(scalar p, scalar T) const;
 
+            //- Return (cp - cv) [J/(kmol K]
+            inline scalar cpMcv(scalar p, scalar T) const;
+
 
-        // I-O
+        // IO
 
             //- Write to Ostream
             void write(Ostream& os) const;
diff --git a/src/thermophysicalModels/specie/equationOfState/icoPolynomial/icoPolynomialI.H b/src/thermophysicalModels/specie/equationOfState/icoPolynomial/icoPolynomialI.H
index b21a9be240d19d6a75e466226f87bf9fadb5b0e7..cfa527bd0ea491638b394eb0c7a78af0c72af553 100644
--- a/src/thermophysicalModels/specie/equationOfState/icoPolynomial/icoPolynomialI.H
+++ b/src/thermophysicalModels/specie/equationOfState/icoPolynomial/icoPolynomialI.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -117,6 +117,17 @@ inline Foam::scalar Foam::icoPolynomial<PolySize>::Z(scalar, scalar) const
 }
 
 
+template<int PolySize>
+inline Foam::scalar Foam::icoPolynomial<PolySize>::cpMcv
+(
+    scalar p,
+    scalar T
+) const
+{
+    return -(p/sqr(rhoCoeffs_.value(T)))*rhoCoeffs_.derivative(T);
+}
+
+
 // * * * * * * * * * * * * * * * Member Operators  * * * * * * * * * * * * * //
 
 template<int PolySize>
diff --git a/src/thermophysicalModels/specie/equationOfState/isobaricPerfectGas/isobaricPerfectGas.C b/src/thermophysicalModels/specie/equationOfState/incompressiblePerfectGas/incompressiblePerfectGas.C
similarity index 78%
rename from src/thermophysicalModels/specie/equationOfState/isobaricPerfectGas/isobaricPerfectGas.C
rename to src/thermophysicalModels/specie/equationOfState/incompressiblePerfectGas/incompressiblePerfectGas.C
index 314dafd86c158ea7d49acc1c35a369e071fdaaf9..700980e44fd3a843132481262f0f46e720c7cbab 100644
--- a/src/thermophysicalModels/specie/equationOfState/isobaricPerfectGas/isobaricPerfectGas.C
+++ b/src/thermophysicalModels/specie/equationOfState/incompressiblePerfectGas/incompressiblePerfectGas.C
@@ -23,21 +23,21 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "isobaricPerfectGas.H"
+#include "incompressiblePerfectGas.H"
 #include "IOstreams.H"
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::isobaricPerfectGas::isobaricPerfectGas(Istream& is)
+Foam::incompressiblePerfectGas::incompressiblePerfectGas(Istream& is)
 :
     specie(is),
     pRef_(readScalar(is))
 {
-    is.check("isobaricPerfectGas::isobaricPerfectGas(Istream& is)");
+    is.check("incompressiblePerfectGas::incompressiblePerfectGas(Istream& is)");
 }
 
 
-Foam::isobaricPerfectGas::isobaricPerfectGas(const dictionary& dict)
+Foam::incompressiblePerfectGas::incompressiblePerfectGas(const dictionary& dict)
 :
     specie(dict),
     pRef_(readScalar(dict.subDict("equationOfState").lookup("pRef")))
@@ -46,7 +46,7 @@ Foam::isobaricPerfectGas::isobaricPerfectGas(const dictionary& dict)
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-void Foam::isobaricPerfectGas::write(Ostream& os) const
+void Foam::incompressiblePerfectGas::write(Ostream& os) const
 {
     specie::write(os);
     dictionary dict("equationOfState");
@@ -58,12 +58,15 @@ void Foam::isobaricPerfectGas::write(Ostream& os) const
 
 // * * * * * * * * * * * * * * * Ostream Operator  * * * * * * * * * * * * * //
 
-Foam::Ostream& Foam::operator<<(Ostream& os, const isobaricPerfectGas& pg)
+Foam::Ostream& Foam::operator<<(Ostream& os, const incompressiblePerfectGas& pg)
 {
     os  << static_cast<const specie&>(pg)
         << token::SPACE << pg.pRef_;
 
-    os.check("Ostream& operator<<(Ostream& os, const isobaricPerfectGas& st)");
+    os.check
+    (
+        "Ostream& operator<<(Ostream& os, const incompressiblePerfectGas& st)"
+    );
     return os;
 }
 
diff --git a/src/thermophysicalModels/specie/equationOfState/isobaricPerfectGas/isobaricPerfectGas.H b/src/thermophysicalModels/specie/equationOfState/incompressiblePerfectGas/incompressiblePerfectGas.H
similarity index 57%
rename from src/thermophysicalModels/specie/equationOfState/isobaricPerfectGas/isobaricPerfectGas.H
rename to src/thermophysicalModels/specie/equationOfState/incompressiblePerfectGas/incompressiblePerfectGas.H
index 310d72f0ab86f1d17f52b2d684dea2e39e0bce72..c755c2d8f212ce23621d261b9feb78b633ec46e5 100644
--- a/src/thermophysicalModels/specie/equationOfState/isobaricPerfectGas/isobaricPerfectGas.H
+++ b/src/thermophysicalModels/specie/equationOfState/incompressiblePerfectGas/incompressiblePerfectGas.H
@@ -22,20 +22,21 @@ License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
 Class
-    Foam::isobaricPerfectGas
+    Foam::incompressiblePerfectGas
 
 Description
-    Perfect gas equation of state using a reference pressure
-    rather than the local pressure.
+    Incompressible gas equation of state using a constant reference pressure in
+    the perfect gas equation of state rather than the local pressure so that the
+    density only varies with temperature and composition.
 
 SourceFiles
-    isobaricPerfectGasI.H
-    isobaricPerfectGas.C
+    incompressiblePerfectGasI.H
+    incompressiblePerfectGas.C
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef isobaricPerfectGas_H
-#define isobaricPerfectGas_H
+#ifndef incompressiblePerfectGas_H
+#define incompressiblePerfectGas_H
 
 #include "specie.H"
 #include "autoPtr.H"
@@ -46,10 +47,10 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                    Class isobaricPerfectGas Declaration
+                    Class incompressiblePerfectGas Declaration
 \*---------------------------------------------------------------------------*/
 
-class isobaricPerfectGas
+class incompressiblePerfectGas
 :
     public specie
 {
@@ -64,31 +65,44 @@ public:
     // Constructors
 
         //- Construct from components
-        inline isobaricPerfectGas(const specie& sp);
+        inline incompressiblePerfectGas(const specie& sp);
 
         //- Construct from Istream
-        isobaricPerfectGas(Istream&);
+        incompressiblePerfectGas(Istream&);
 
         //- Construct from dictionary
-        isobaricPerfectGas(const dictionary& dict);
+        incompressiblePerfectGas(const dictionary& dict);
 
         //- Construct as named copy
-        inline isobaricPerfectGas(const word& name, const isobaricPerfectGas&);
+        inline incompressiblePerfectGas
+        (
+            const word& name,
+            const incompressiblePerfectGas&
+        );
 
         //- Construct and return a clone
-        inline autoPtr<isobaricPerfectGas> clone() const;
+        inline autoPtr<incompressiblePerfectGas> clone() const;
 
         // Selector from Istream
-        inline static autoPtr<isobaricPerfectGas> New(Istream& is);
+        inline static autoPtr<incompressiblePerfectGas> New(Istream& is);
 
         // Selector from dictionary
-        inline static autoPtr<isobaricPerfectGas> New(const dictionary& dict);
+        inline static autoPtr<incompressiblePerfectGas> New
+        (
+            const dictionary& dict
+        );
 
 
     // Member functions
 
         // Fundamental properties
 
+            //- Is the equation of state is incompressible i.e. rho != f(p)
+            static const bool incompressible = true;
+
+            //- Is the equation of state is isochoric i.e. rho = const
+            static const bool isochoric = false;
+
             //- Return density [kg/m^3]
             inline scalar rho(scalar p, scalar T) const;
 
@@ -98,8 +112,11 @@ public:
             //- Return compression factor []
             inline scalar Z(scalar p, scalar T) const;
 
+            //- Return (cp - cv) [J/(kmol K]
+            inline scalar cpMcv(scalar p, scalar T) const;
+
 
-        // I-O
+        // IO
 
             //- Write to Ostream
             void write(Ostream& os) const;
@@ -107,42 +124,42 @@ public:
 
     // Member operators
 
-        inline void operator+=(const isobaricPerfectGas&);
-        inline void operator-=(const isobaricPerfectGas&);
+        inline void operator+=(const incompressiblePerfectGas&);
+        inline void operator-=(const incompressiblePerfectGas&);
 
         inline void operator*=(const scalar);
 
 
     // Friend operators
 
-        inline friend isobaricPerfectGas operator+
+        inline friend incompressiblePerfectGas operator+
         (
-            const isobaricPerfectGas&,
-            const isobaricPerfectGas&
+            const incompressiblePerfectGas&,
+            const incompressiblePerfectGas&
         );
 
-        inline friend isobaricPerfectGas operator-
+        inline friend incompressiblePerfectGas operator-
         (
-            const isobaricPerfectGas&,
-            const isobaricPerfectGas&
+            const incompressiblePerfectGas&,
+            const incompressiblePerfectGas&
         );
 
-        inline friend isobaricPerfectGas operator*
+        inline friend incompressiblePerfectGas operator*
         (
             const scalar s,
-            const isobaricPerfectGas&
+            const incompressiblePerfectGas&
         );
 
-        inline friend isobaricPerfectGas operator==
+        inline friend incompressiblePerfectGas operator==
         (
-            const isobaricPerfectGas&,
-            const isobaricPerfectGas&
+            const incompressiblePerfectGas&,
+            const incompressiblePerfectGas&
         );
 
 
     // Ostream Operator
 
-        friend Ostream& operator<<(Ostream&, const isobaricPerfectGas&);
+        friend Ostream& operator<<(Ostream&, const incompressiblePerfectGas&);
 };
 
 
@@ -152,7 +169,7 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-#include "isobaricPerfectGasI.H"
+#include "incompressiblePerfectGasI.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
diff --git a/src/thermophysicalModels/specie/equationOfState/isobaricPerfectGas/isobaricPerfectGasI.H b/src/thermophysicalModels/specie/equationOfState/incompressiblePerfectGas/incompressiblePerfectGasI.H
similarity index 52%
rename from src/thermophysicalModels/specie/equationOfState/isobaricPerfectGas/isobaricPerfectGasI.H
rename to src/thermophysicalModels/specie/equationOfState/incompressiblePerfectGas/incompressiblePerfectGasI.H
index 915ef8ab305f2fd1851e06bdc63cdb6aa2693fee..d179d5e2a181c10d78880e3426295ccbd67fd7c8 100644
--- a/src/thermophysicalModels/specie/equationOfState/isobaricPerfectGas/isobaricPerfectGasI.H
+++ b/src/thermophysicalModels/specie/equationOfState/incompressiblePerfectGas/incompressiblePerfectGasI.H
@@ -23,11 +23,14 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "isobaricPerfectGas.H"
+#include "incompressiblePerfectGas.H"
 
 // * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
 
-inline Foam::isobaricPerfectGas::isobaricPerfectGas(const specie& sp)
+inline Foam::incompressiblePerfectGas::incompressiblePerfectGas
+(
+    const specie& sp
+)
 :
     specie(sp)
 {}
@@ -35,76 +38,101 @@ inline Foam::isobaricPerfectGas::isobaricPerfectGas(const specie& sp)
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-inline Foam::isobaricPerfectGas::isobaricPerfectGas
+inline Foam::incompressiblePerfectGas::incompressiblePerfectGas
 (
     const word& name,
-    const isobaricPerfectGas& pg
+    const incompressiblePerfectGas& pg
 )
 :
     specie(name, pg)
 {}
 
 
-inline Foam::autoPtr<Foam::isobaricPerfectGas> Foam::isobaricPerfectGas::
-clone() const
+inline Foam::autoPtr<Foam::incompressiblePerfectGas>
+Foam::incompressiblePerfectGas::clone() const
 {
-    return autoPtr<isobaricPerfectGas>(new isobaricPerfectGas(*this));
+    return autoPtr<incompressiblePerfectGas>
+    (
+        new incompressiblePerfectGas(*this)
+    );
 }
 
 
-inline Foam::autoPtr<Foam::isobaricPerfectGas> Foam::isobaricPerfectGas::New
+inline Foam::autoPtr<Foam::incompressiblePerfectGas>
+Foam::incompressiblePerfectGas::New
 (
     Istream& is
 )
 {
-    return autoPtr<isobaricPerfectGas>(new isobaricPerfectGas(is));
+    return autoPtr<incompressiblePerfectGas>(new incompressiblePerfectGas(is));
 }
 
 
-inline Foam::autoPtr<Foam::isobaricPerfectGas> Foam::isobaricPerfectGas::New
+inline Foam::autoPtr<Foam::incompressiblePerfectGas>
+Foam::incompressiblePerfectGas::New
 (
     const dictionary& dict
 )
 {
-    return autoPtr<isobaricPerfectGas>(new isobaricPerfectGas(dict));
+    return autoPtr<incompressiblePerfectGas>
+    (
+        new incompressiblePerfectGas(dict)
+    );
 }
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-inline Foam::scalar Foam::isobaricPerfectGas::rho(scalar p, scalar T) const
+inline Foam::scalar Foam::incompressiblePerfectGas::rho
+(
+    scalar p,
+    scalar T
+) const
 {
     return pRef_/(R()*T);
 }
 
 
-inline Foam::scalar Foam::isobaricPerfectGas::psi(scalar, scalar T) const
+inline Foam::scalar Foam::incompressiblePerfectGas::psi(scalar, scalar T) const
 {
     return 0.0;
 }
 
 
-inline Foam::scalar Foam::isobaricPerfectGas::Z(scalar, scalar) const
+inline Foam::scalar Foam::incompressiblePerfectGas::Z(scalar, scalar) const
 {
     return 0.0;
 }
 
 
+inline Foam::scalar Foam::incompressiblePerfectGas::cpMcv(scalar, scalar) const
+{
+    return this->RR;
+}
+
+
+
 // * * * * * * * * * * * * * * * Member Operators  * * * * * * * * * * * * * //
 
-inline void Foam::isobaricPerfectGas::operator+=(const isobaricPerfectGas& pg)
+inline void Foam::incompressiblePerfectGas::operator+=
+(
+    const incompressiblePerfectGas& pg
+)
 {
     specie::operator+=(pg);
 }
 
 
-inline void Foam::isobaricPerfectGas::operator-=(const isobaricPerfectGas& pg)
+inline void Foam::incompressiblePerfectGas::operator-=
+(
+    const incompressiblePerfectGas& pg
+)
 {
     specie::operator-=(pg);
 }
 
 
-inline void Foam::isobaricPerfectGas::operator*=(const scalar s)
+inline void Foam::incompressiblePerfectGas::operator*=(const scalar s)
 {
     specie::operator*=(s);
 }
@@ -112,13 +140,13 @@ inline void Foam::isobaricPerfectGas::operator*=(const scalar s)
 
 // * * * * * * * * * * * * * * * Friend Operators  * * * * * * * * * * * * * //
 
-inline Foam::isobaricPerfectGas Foam::operator+
+inline Foam::incompressiblePerfectGas Foam::operator+
 (
-    const isobaricPerfectGas& pg1,
-    const isobaricPerfectGas& pg2
+    const incompressiblePerfectGas& pg1,
+    const incompressiblePerfectGas& pg2
 )
 {
-    return isobaricPerfectGas
+    return incompressiblePerfectGas
     (
         static_cast<const specie&>(pg1)
       + static_cast<const specie&>(pg2)
@@ -126,13 +154,13 @@ inline Foam::isobaricPerfectGas Foam::operator+
 }
 
 
-inline Foam::isobaricPerfectGas Foam::operator-
+inline Foam::incompressiblePerfectGas Foam::operator-
 (
-    const isobaricPerfectGas& pg1,
-    const isobaricPerfectGas& pg2
+    const incompressiblePerfectGas& pg1,
+    const incompressiblePerfectGas& pg2
 )
 {
-    return isobaricPerfectGas
+    return incompressiblePerfectGas
     (
         static_cast<const specie&>(pg1)
       - static_cast<const specie&>(pg2)
@@ -140,20 +168,20 @@ inline Foam::isobaricPerfectGas Foam::operator-
 }
 
 
-inline Foam::isobaricPerfectGas Foam::operator*
+inline Foam::incompressiblePerfectGas Foam::operator*
 (
     const scalar s,
-    const isobaricPerfectGas& pg
+    const incompressiblePerfectGas& pg
 )
 {
-    return isobaricPerfectGas(s*static_cast<const specie&>(pg));
+    return incompressiblePerfectGas(s*static_cast<const specie&>(pg));
 }
 
 
-inline Foam::isobaricPerfectGas Foam::operator==
+inline Foam::incompressiblePerfectGas Foam::operator==
 (
-    const isobaricPerfectGas& pg1,
-    const isobaricPerfectGas& pg2
+    const incompressiblePerfectGas& pg1,
+    const incompressiblePerfectGas& pg2
 )
 {
     return pg2 - pg1;
diff --git a/src/thermophysicalModels/specie/equationOfState/perfectGas/perfectGas.H b/src/thermophysicalModels/specie/equationOfState/perfectGas/perfectGas.H
index 6a66e5c79812a65cca054543370674e59e93d3fe..74853b3f5a63c82a902c1a03a9bd23142e07b80e 100644
--- a/src/thermophysicalModels/specie/equationOfState/perfectGas/perfectGas.H
+++ b/src/thermophysicalModels/specie/equationOfState/perfectGas/perfectGas.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -83,6 +83,12 @@ public:
 
         // Fundamental properties
 
+            //- Is the equation of state is incompressible i.e. rho != f(p)
+            static const bool incompressible = false;
+
+            //- Is the equation of state is isochoric i.e. rho = const
+            static const bool isochoric = false;
+
             //- Return density [kg/m^3]
             inline scalar rho(scalar p, scalar T) const;
 
@@ -92,8 +98,11 @@ public:
             //- Return compression factor []
             inline scalar Z(scalar p, scalar T) const;
 
+            //- Return (cp - cv) [J/(kmol K]
+            inline scalar cpMcv(scalar p, scalar T) const;
+
 
-        // I-O
+        // IO
 
             //- Write to Ostream
             void write(Ostream& os) const;
diff --git a/src/thermophysicalModels/specie/equationOfState/perfectGas/perfectGasI.H b/src/thermophysicalModels/specie/equationOfState/perfectGas/perfectGasI.H
index 0a9ea8f10dab1c586dd4cf9f586ec71ebd6b6622..b43bd6fe1a24e8b2b2ede56af1c8970fa095ca8a 100644
--- a/src/thermophysicalModels/specie/equationOfState/perfectGas/perfectGasI.H
+++ b/src/thermophysicalModels/specie/equationOfState/perfectGas/perfectGasI.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -82,6 +82,12 @@ inline Foam::scalar Foam::perfectGas::Z(scalar, scalar) const
 }
 
 
+inline Foam::scalar Foam::perfectGas::cpMcv(scalar, scalar) const
+{
+    return this->RR;
+}
+
+
 // * * * * * * * * * * * * * * * Member Operators  * * * * * * * * * * * * * //
 
 inline void Foam::perfectGas::operator+=(const perfectGas& pg)
diff --git a/src/thermophysicalModels/specie/equationOfState/incompressible/incompressible.C b/src/thermophysicalModels/specie/equationOfState/rhoConst/rhoConst.C
similarity index 79%
rename from src/thermophysicalModels/specie/equationOfState/incompressible/incompressible.C
rename to src/thermophysicalModels/specie/equationOfState/rhoConst/rhoConst.C
index eee1666d2eaf27a8ae5ecf350f48b54139c93a76..97e825ffb3e66ce1ba4940b46198eb217feed841 100644
--- a/src/thermophysicalModels/specie/equationOfState/incompressible/incompressible.C
+++ b/src/thermophysicalModels/specie/equationOfState/rhoConst/rhoConst.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -23,21 +23,21 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "incompressible.H"
+#include "rhoConst.H"
 #include "IOstreams.H"
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::incompressible::incompressible(Istream& is)
+Foam::rhoConst::rhoConst(Istream& is)
 :
     specie(is),
     rho_(readScalar(is))
 {
-    is.check("incompressible::incompressible(Istream& is)");
+    is.check("rhoConst::rhoConst(Istream& is)");
 }
 
 
-Foam::incompressible::incompressible(const dictionary& dict)
+Foam::rhoConst::rhoConst(const dictionary& dict)
 :
     specie(dict),
     rho_(readScalar(dict.subDict("equationOfState").lookup("rho")))
@@ -46,7 +46,7 @@ Foam::incompressible::incompressible(const dictionary& dict)
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-void Foam::incompressible::write(Ostream& os) const
+void Foam::rhoConst::write(Ostream& os) const
 {
     specie::write(os);
 
@@ -59,12 +59,12 @@ void Foam::incompressible::write(Ostream& os) const
 
 // * * * * * * * * * * * * * * * Ostream Operator  * * * * * * * * * * * * * //
 
-Foam::Ostream& Foam::operator<<(Ostream& os, const incompressible& ico)
+Foam::Ostream& Foam::operator<<(Ostream& os, const rhoConst& ico)
 {
     os  << static_cast<const specie&>(ico)
         << token::SPACE << ico.rho_;
 
-    os.check("Ostream& operator<<(Ostream& os, const incompressible& ico)");
+    os.check("Ostream& operator<<(Ostream& os, const rhoConst& ico)");
     return os;
 }
 
diff --git a/src/thermophysicalModels/specie/equationOfState/incompressible/incompressible.H b/src/thermophysicalModels/specie/equationOfState/rhoConst/rhoConst.H
similarity index 65%
rename from src/thermophysicalModels/specie/equationOfState/incompressible/incompressible.H
rename to src/thermophysicalModels/specie/equationOfState/rhoConst/rhoConst.H
index 367407cb7a74f2dc058c7e7c1fc114218b038de6..49a776c63ef0cd76d2ba74589619e9ffe4b4035b 100644
--- a/src/thermophysicalModels/specie/equationOfState/incompressible/incompressible.H
+++ b/src/thermophysicalModels/specie/equationOfState/rhoConst/rhoConst.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -22,19 +22,19 @@ License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
 Class
-    Foam::incompressible
+    Foam::rhoConst
 
 Description
-    Incompressible gas/liquid equation of state.
+    RhoConst (rho = const) of state.
 
 SourceFiles
-    incompressibleI.H
-    incompressible.C
+    rhoConstI.H
+    rhoConst.C
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef incompressible_H
-#define incompressible_H
+#ifndef rhoConst_H
+#define rhoConst_H
 
 #include "specie.H"
 #include "autoPtr.H"
@@ -45,10 +45,10 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                        Class incompressible Declaration
+                        Class rhoConst Declaration
 \*---------------------------------------------------------------------------*/
 
-class incompressible
+class rhoConst
 :
     public specie
 {
@@ -63,28 +63,34 @@ public:
     // Constructors
 
         //- Construct from components
-        inline incompressible(const specie& sp, const scalar rho);
+        inline rhoConst(const specie& sp, const scalar rho);
 
         //- Construct from Istream
-        incompressible(Istream&);
+        rhoConst(Istream&);
 
         //- Construct from dictionary
-        incompressible(const dictionary& dict);
+        rhoConst(const dictionary& dict);
 
         //- Construct as named copy
-        inline incompressible(const word& name, const incompressible&);
+        inline rhoConst(const word& name, const rhoConst&);
 
         //- Construct and return a clone
-        inline autoPtr<incompressible> clone() const;
+        inline autoPtr<rhoConst> clone() const;
 
         // Selector from Istream
-        inline static autoPtr<incompressible> New(Istream& is);
+        inline static autoPtr<rhoConst> New(Istream& is);
 
 
     // Member functions
 
         // Fundamental properties
 
+            //- Is the equation of state is incompressible i.e. rho != f(p)
+            static const bool incompressible = true;
+
+            //- Is the equation of state is isochoric i.e. rho = const
+            static const bool isochoric = true;
+
             //- Return density [kg/m^3]
             inline scalar rho(scalar p, scalar T) const;
 
@@ -94,8 +100,11 @@ public:
             //- Return compression factor []
             inline scalar Z(scalar p, scalar T) const;
 
+            //- Return (cp - cv) [J/(kmol K]
+            inline scalar cpMcv(scalar p, scalar T) const;
+
 
-        // I-O
+        // IO
 
             //- Write to Ostream
             void write(Ostream& os) const;
@@ -103,42 +112,42 @@ public:
 
     // Member operators
 
-        inline void operator+=(const incompressible&);
-        inline void operator-=(const incompressible&);
+        inline void operator+=(const rhoConst&);
+        inline void operator-=(const rhoConst&);
 
         inline void operator*=(const scalar);
 
 
     // Friend operators
 
-        inline friend incompressible operator+
+        inline friend rhoConst operator+
         (
-            const incompressible&,
-            const incompressible&
+            const rhoConst&,
+            const rhoConst&
         );
 
-        inline friend incompressible operator-
+        inline friend rhoConst operator-
         (
-            const incompressible&,
-            const incompressible&
+            const rhoConst&,
+            const rhoConst&
         );
 
-        inline friend incompressible operator*
+        inline friend rhoConst operator*
         (
             const scalar s,
-            const incompressible&
+            const rhoConst&
         );
 
-        inline friend incompressible operator==
+        inline friend rhoConst operator==
         (
-            const incompressible&,
-            const incompressible&
+            const rhoConst&,
+            const rhoConst&
         );
 
 
     // Ostream Operator
 
-        friend Ostream& operator<<(Ostream&, const incompressible&);
+        friend Ostream& operator<<(Ostream&, const rhoConst&);
 };
 
 
@@ -148,7 +157,7 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-#include "incompressibleI.H"
+#include "rhoConstI.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
diff --git a/src/thermophysicalModels/specie/equationOfState/incompressible/incompressibleI.H b/src/thermophysicalModels/specie/equationOfState/rhoConst/rhoConstI.H
similarity index 66%
rename from src/thermophysicalModels/specie/equationOfState/incompressible/incompressibleI.H
rename to src/thermophysicalModels/specie/equationOfState/rhoConst/rhoConstI.H
index 3c747548170ca9b985ca7da5c050cd0923793234..79faf014d4eec85ca4887a570bc18fb6ae68cac9 100644
--- a/src/thermophysicalModels/specie/equationOfState/incompressible/incompressibleI.H
+++ b/src/thermophysicalModels/specie/equationOfState/rhoConst/rhoConstI.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -23,11 +23,11 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "incompressible.H"
+#include "rhoConst.H"
 
 // * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
 
-inline Foam::incompressible::incompressible
+inline Foam::rhoConst::rhoConst
 (
     const specie& sp,
     const scalar rho
@@ -40,42 +40,52 @@ inline Foam::incompressible::incompressible
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-inline Foam::incompressible::incompressible
+inline Foam::rhoConst::rhoConst
 (
     const word& name,
-    const incompressible& ico
+    const rhoConst& ico
 )
 :
     specie(name, ico),
     rho_(ico.rho_)
 {}
 
-inline Foam::autoPtr<Foam::incompressible>
-Foam::incompressible::clone() const
+
+inline Foam::autoPtr<Foam::rhoConst>
+Foam::rhoConst::clone() const
 {
-    return autoPtr<incompressible>(new incompressible(*this));
+    return autoPtr<rhoConst>(new rhoConst(*this));
 }
 
-inline Foam::autoPtr<Foam::incompressible>
-Foam::incompressible::New(Istream& is)
+
+inline Foam::autoPtr<Foam::rhoConst>
+Foam::rhoConst::New(Istream& is)
 {
-    return autoPtr<incompressible>(new incompressible(is));
+    return autoPtr<rhoConst>(new rhoConst(is));
 }
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-inline Foam::scalar Foam::incompressible::rho(scalar p, scalar T) const
+inline Foam::scalar Foam::rhoConst::rho(scalar p, scalar T) const
 {
     return rho_;
 }
 
-inline Foam::scalar Foam::incompressible::psi(scalar, scalar T) const
+
+inline Foam::scalar Foam::rhoConst::psi(scalar, scalar T) const
+{
+    return 0.0;
+}
+
+
+inline Foam::scalar Foam::rhoConst::Z(scalar, scalar) const
 {
     return 0.0;
 }
 
-inline Foam::scalar Foam::incompressible::Z(scalar, scalar) const
+
+inline Foam::scalar Foam::rhoConst::cpMcv(scalar, scalar) const
 {
     return 0.0;
 }
@@ -83,7 +93,7 @@ inline Foam::scalar Foam::incompressible::Z(scalar, scalar) const
 
 // * * * * * * * * * * * * * * * Member Operators  * * * * * * * * * * * * * //
 
-inline void Foam::incompressible::operator+=(const incompressible& ico)
+inline void Foam::rhoConst::operator+=(const rhoConst& ico)
 {
     scalar molr1 = this->nMoles();
 
@@ -95,7 +105,8 @@ inline void Foam::incompressible::operator+=(const incompressible& ico)
     rho_ = molr1*rho_ + molr2*ico.rho_;
 }
 
-inline void Foam::incompressible::operator-=(const incompressible& ico)
+
+inline void Foam::rhoConst::operator-=(const rhoConst& ico)
 {
     scalar molr1 = this->nMoles();
 
@@ -107,7 +118,8 @@ inline void Foam::incompressible::operator-=(const incompressible& ico)
     rho_ = molr1*rho_ - molr2*ico.rho_;
 }
 
-inline void Foam::incompressible::operator*=(const scalar s)
+
+inline void Foam::rhoConst::operator*=(const scalar s)
 {
     specie::operator*=(s);
 }
@@ -115,17 +127,17 @@ inline void Foam::incompressible::operator*=(const scalar s)
 
 // * * * * * * * * * * * * * * * Friend Operators  * * * * * * * * * * * * * //
 
-inline Foam::incompressible Foam::operator+
+inline Foam::rhoConst Foam::operator+
 (
-    const incompressible& ico1,
-    const incompressible& ico2
+    const rhoConst& ico1,
+    const rhoConst& ico2
 )
 {
     scalar nMoles = ico1.nMoles() + ico2.nMoles();
     scalar molr1 = ico1.nMoles()/nMoles;
     scalar molr2 = ico2.nMoles()/nMoles;
 
-    return incompressible
+    return rhoConst
     (
         static_cast<const specie&>(ico1)
       + static_cast<const specie&>(ico2),
@@ -133,17 +145,18 @@ inline Foam::incompressible Foam::operator+
     );
 }
 
-inline Foam::incompressible Foam::operator-
+
+inline Foam::rhoConst Foam::operator-
 (
-    const incompressible& ico1,
-    const incompressible& ico2
+    const rhoConst& ico1,
+    const rhoConst& ico2
 )
 {
     scalar nMoles = ico1.nMoles() + ico2.nMoles();
     scalar molr1 = ico1.nMoles()/nMoles;
     scalar molr2 = ico2.nMoles()/nMoles;
 
-    return incompressible
+    return rhoConst
     (
         static_cast<const specie&>(ico1)
       - static_cast<const specie&>(ico2),
@@ -151,19 +164,21 @@ inline Foam::incompressible Foam::operator-
     );
 }
 
-inline Foam::incompressible Foam::operator*
+
+inline Foam::rhoConst Foam::operator*
 (
     const scalar s,
-    const incompressible& ico
+    const rhoConst& ico
 )
 {
-    return incompressible(s*static_cast<const specie&>(ico), ico.rho_);
+    return rhoConst(s*static_cast<const specie&>(ico), ico.rho_);
 }
 
-inline Foam::incompressible Foam::operator==
+
+inline Foam::rhoConst Foam::operator==
 (
-    const incompressible& ico1,
-    const incompressible& ico2
+    const rhoConst& ico1,
+    const rhoConst& ico2
 )
 {
     return ico2 - ico1;
diff --git a/src/thermophysicalModels/specie/include/reactionTypes.H b/src/thermophysicalModels/specie/include/reactionTypes.H
index 2d42804c68c16cda4df9edef22e9af29633d0bcb..8b0a5f20d559f128a46e7624d8a016da46562328 100644
--- a/src/thermophysicalModels/specie/include/reactionTypes.H
+++ b/src/thermophysicalModels/specie/include/reactionTypes.H
@@ -47,9 +47,10 @@ namespace Foam
 
     typedef Reaction<gasThermoPhysics> gasReaction;
 
-    typedef Reaction<constIsobaricGasThermoPhysics> constIsobaricGasReaction;
+    typedef Reaction<constIncompressibleGasThermoPhysics>
+        constIncompressibleGasReaction;
 
-    typedef Reaction<isobaricGasThermoPhysics> isobaricGasReaction;
+    typedef Reaction<incompressibleGasThermoPhysics> incompressibleGasReaction;
 
     typedef Reaction<icoPoly8ThermoPhysics> icoPoly8Reaction;
 }
diff --git a/src/thermophysicalModels/specie/include/thermoPhysicsTypes.H b/src/thermophysicalModels/specie/include/thermoPhysicsTypes.H
index e301be5614f29ee1088d9195f34316045cfaa87e..53224e8f6f57f63ccab1d93975349fb732ac06ab 100644
--- a/src/thermophysicalModels/specie/include/thermoPhysicsTypes.H
+++ b/src/thermophysicalModels/specie/include/thermoPhysicsTypes.H
@@ -33,7 +33,7 @@ Description
 #define thermoPhysicsTypes_H
 
 #include "perfectGas.H"
-#include "isobaricPerfectGas.H"
+#include "incompressiblePerfectGas.H"
 #include "hConstThermo.H"
 #include "janafThermo.H"
 #include "sensibleEnthalpy.H"
@@ -82,11 +82,11 @@ namespace Foam
         <
             hConstThermo
             <
-                isobaricPerfectGas
+                incompressiblePerfectGas
             >,
             sensibleEnthalpy
         >
-    > constIsobaricGasThermoPhysics;
+    > constIncompressibleGasThermoPhysics;
 
     typedef
     sutherlandTransport
@@ -95,11 +95,11 @@ namespace Foam
         <
             janafThermo
             <
-                isobaricPerfectGas
+                incompressiblePerfectGas
             >,
             sensibleEnthalpy
         >
-    > isobaricGasThermoPhysics;
+    > incompressibleGasThermoPhysics;
 
     typedef
     polynomialTransport
diff --git a/src/thermophysicalModels/specie/reaction/reactions/makeReactionThermoReactions.C b/src/thermophysicalModels/specie/reaction/reactions/makeReactionThermoReactions.C
index 5d7b3de1f23ae196b1756bd127313c38378fdf5c..ff13e68b69abdadc537f0f84799f620c7e0003d6 100644
--- a/src/thermophysicalModels/specie/reaction/reactions/makeReactionThermoReactions.C
+++ b/src/thermophysicalModels/specie/reaction/reactions/makeReactionThermoReactions.C
@@ -85,8 +85,12 @@ namespace Foam
 {
     makeReactions(constGasThermoPhysics, constGasReaction)
     makeReactions(gasThermoPhysics, gasReaction)
-    makeReactions(constIsobaricGasThermoPhysics, constIsobaricGasReaction)
-    makeReactions(isobaricGasThermoPhysics, isobaricGasReaction)
+    makeReactions
+    (
+        constIncompressibleGasThermoPhysics,
+        constIncompressibleGasReaction
+    )
+    makeReactions(incompressibleGasThermoPhysics, incompressibleGasReaction)
     makeReactions(icoPoly8ThermoPhysics, icoPoly8Reaction)
 }
 
diff --git a/src/thermophysicalModels/specie/thermo/eConst/eConstThermoI.H b/src/thermophysicalModels/specie/thermo/eConst/eConstThermoI.H
index 752c6d1c1fa91e794f31f622d0dfb6ae6cdcdade..b465f80497f71cd718c3384fbe898542cdeead66 100644
--- a/src/thermophysicalModels/specie/thermo/eConst/eConstThermoI.H
+++ b/src/thermophysicalModels/specie/thermo/eConst/eConstThermoI.H
@@ -106,7 +106,7 @@ inline Foam::scalar Foam::eConstThermo<EquationOfState>::cp
     const scalar T
 ) const
 {
-    return Cv_*this->W() + specie::RR;
+    return Cv_*this->W() + this->cpMcv(p, T);
 }
 
 
diff --git a/src/thermophysicalModels/solid/thermo/exponential/exponentialSolidThermo.C b/src/thermophysicalModels/specie/thermo/hExponential/hExponentialThermo.C
similarity index 81%
rename from src/thermophysicalModels/solid/thermo/exponential/exponentialSolidThermo.C
rename to src/thermophysicalModels/specie/thermo/hExponential/hExponentialThermo.C
index cc9560ef724286e62d73098f6c7a7952fa022bc4..552ac7bb01a2431223aa0084d9df7399e0d6a78d 100644
--- a/src/thermophysicalModels/solid/thermo/exponential/exponentialSolidThermo.C
+++ b/src/thermophysicalModels/specie/thermo/hExponential/hExponentialThermo.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -23,18 +23,18 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "exponentialSolidThermo.H"
+#include "hExponentialThermo.H"
 #include "IOstreams.H"
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-template<class rhoType>
-Foam::exponentialSolidThermo<rhoType>::exponentialSolidThermo
+template<class equationOfState>
+Foam::hExponentialThermo<equationOfState>::hExponentialThermo
 (
     const dictionary& dict
 )
 :
-    rhoType(dict),
+    equationOfState(dict),
     c0_(readScalar(dict.subDict("thermodynamics").lookup("C0"))),
     n0_(readScalar(dict.subDict("thermodynamics").lookup("n0"))),
     Tref_(readScalar(dict.subDict("thermodynamics").lookup("Tref"))),
@@ -44,14 +44,14 @@ Foam::exponentialSolidThermo<rhoType>::exponentialSolidThermo
 
 // * * * * * * * * * * * * * * * Ostream Operator  * * * * * * * * * * * * * //
 
-template<class rhoType>
+template<class equationOfState>
 Foam::Ostream& Foam::operator<<
 (
     Ostream& os,
-    const exponentialSolidThermo<rhoType>& et
+    const hExponentialThermo<equationOfState>& et
 )
 {
-    os  << static_cast<const rhoType&>(et) << nl
+    os  << static_cast<const equationOfState&>(et) << nl
         << "    " << et.c0_
         << tab << et.n0_
         << tab << et.Tref_
@@ -63,7 +63,7 @@ Foam::Ostream& Foam::operator<<
 
     os.check
     (
-        "operator<<(Ostream& os, const exponentialSolidThermo<rhoType>& et)"
+        "operator<<(Ostream& os, const hExponentialThermo<equationOfState>& et)"
     );
 
     return os;
diff --git a/src/thermophysicalModels/solid/thermo/exponential/exponentialSolidThermo.H b/src/thermophysicalModels/specie/thermo/hExponential/hExponentialThermo.H
similarity index 72%
rename from src/thermophysicalModels/solid/thermo/exponential/exponentialSolidThermo.H
rename to src/thermophysicalModels/specie/thermo/hExponential/hExponentialThermo.H
index 59181a7a83185b96fe660403c3bfaf0ee682115a..956f6d8846801c683bc8e3bd9001b473171ae5b1 100644
--- a/src/thermophysicalModels/solid/thermo/exponential/exponentialSolidThermo.H
+++ b/src/thermophysicalModels/specie/thermo/hExponential/hExponentialThermo.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -22,19 +22,20 @@ License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
 Class
-    Foam::exponentialSolidThermo
+    Foam::hExponentialThermo
 
 Description
-    Exponential thermodynamics package for solids templated into the rhoType.
+    Exponential properties thermodynamics package
+    templated into the equationOfState.
 
 SourceFiles
-    exponentialSolidThermoI.H
-    exponentialSolidThermo.C
+    hExponentialThermoI.H
+    hExponentialThermo.C
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef exponentialSolidThermo_H
-#define exponentialSolidThermo_H
+#ifndef hExponentialThermo_H
+#define hExponentialThermo_H
 
 #include "scalar.H"
 #include "dictionary.H"
@@ -45,32 +46,32 @@ SourceFiles
 namespace Foam
 {
 
-template<class rhoType> class exponentialSolidThermo;
+template<class equationOfState> class hExponentialThermo;
 
-template<class rhoType>
-inline exponentialSolidThermo<rhoType> operator*
+template<class equationOfState>
+inline hExponentialThermo<equationOfState> operator*
 (
     const scalar,
-    const exponentialSolidThermo<rhoType>&
+    const hExponentialThermo<equationOfState>&
 );
 
 
-template<class rhoType>
+template<class equationOfState>
 Ostream& operator<<
 (
     Ostream&,
-    const exponentialSolidThermo<rhoType>&
+    const hExponentialThermo<equationOfState>&
 );
 
 
 /*---------------------------------------------------------------------------*\
-                         Class exponentialSolidThermo Declaration
+                         Class hExponentialThermo Declaration
 \*---------------------------------------------------------------------------*/
 
-template<class rhoType>
-class exponentialSolidThermo
+template<class equationOfState>
+class hExponentialThermo
 :
-    public rhoType
+    public equationOfState
 {
 
     // Private data
@@ -95,9 +96,9 @@ public:
     // Constructors
 
         //- Construct from components
-        inline exponentialSolidThermo
+        inline hExponentialThermo
         (
-            const rhoType& st,
+            const equationOfState& st,
             const scalar c0,
             const scalar n0,
             const scalar Tref,
@@ -105,13 +106,13 @@ public:
         );
 
         //- Construct from dictionary
-        exponentialSolidThermo(const dictionary&);
+        hExponentialThermo(const dictionary&);
 
         //- Construct as a named copy
-        inline exponentialSolidThermo
+        inline hExponentialThermo
         (
             const word&,
-            const exponentialSolidThermo&
+            const hExponentialThermo&
         );
 
 
@@ -141,30 +142,30 @@ public:
 
     // Member operators
 
-        inline exponentialSolidThermo& operator=
+        inline hExponentialThermo& operator=
         (
-            const exponentialSolidThermo&
+            const hExponentialThermo&
         );
-        inline void operator+=(const exponentialSolidThermo&);
-        inline void operator-=(const exponentialSolidThermo&);
+        inline void operator+=(const hExponentialThermo&);
+        inline void operator-=(const hExponentialThermo&);
 
 
     // Friend operators
 
 
-        friend exponentialSolidThermo operator* <rhoType>
+        friend hExponentialThermo operator* <equationOfState>
         (
             const scalar,
-            const exponentialSolidThermo&
+            const hExponentialThermo&
         );
 
 
     // Ostream Operator
 
-        friend Ostream& operator<< <rhoType>
+        friend Ostream& operator<< <equationOfState>
         (
             Ostream&,
-            const exponentialSolidThermo&
+            const hExponentialThermo&
         );
 };
 
@@ -177,8 +178,8 @@ public:
 
 
 #ifdef NoRepository
-#   include "exponentialSolidThermoI.H"
-#   include "exponentialSolidThermo.C"
+#   include "hExponentialThermoI.H"
+#   include "hExponentialThermo.C"
 #endif
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/thermophysicalModels/solid/thermo/exponential/exponentialSolidThermoI.H b/src/thermophysicalModels/specie/thermo/hExponential/hExponentialThermoI.H
similarity index 61%
rename from src/thermophysicalModels/solid/thermo/exponential/exponentialSolidThermoI.H
rename to src/thermophysicalModels/specie/thermo/hExponential/hExponentialThermoI.H
index c1feea94f45539dbff4174e0985eb7bd80b2f9e3..ac4a671959ea35af234dbd8b756e0c6d4d97d177 100644
--- a/src/thermophysicalModels/solid/thermo/exponential/exponentialSolidThermoI.H
+++ b/src/thermophysicalModels/specie/thermo/hExponential/hExponentialThermoI.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -23,20 +23,23 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "exponentialSolidThermo.H"
+#include "hExponentialThermo.H"
 #include "specie.H"
 
 // * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
 
-template<class rhoType>
-inline void Foam::exponentialSolidThermo<rhoType>::checkT(const scalar T) const
+template<class equationOfState>
+inline void Foam::hExponentialThermo<equationOfState>::checkT
+(
+    const scalar T
+) const
 {
     if (T < 0.0)
     {
         FatalErrorIn
         (
-            "exponentialSolidThermo<rhoType>::checkT(const scalar T) const"
-        )   << "attempt to use exponentialSolidThermo<rhoType>"
+            "hExponentialThermo<equationOfState>::checkT(const scalar T) const"
+        )   << "attempt to use hExponentialThermo<equationOfState>"
                " out of temperature range "
             << T
             << abort(FatalError);
@@ -44,8 +47,8 @@ inline void Foam::exponentialSolidThermo<rhoType>::checkT(const scalar T) const
 }
 
 
-template<class rhoType>
-inline Foam::scalar Foam::exponentialSolidThermo<rhoType>::integrateCp
+template<class equationOfState>
+inline Foam::scalar Foam::hExponentialThermo<equationOfState>::integrateCp
 (
     const scalar T
 ) const
@@ -60,14 +63,14 @@ inline Foam::scalar Foam::exponentialSolidThermo<rhoType>::integrateCp
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-template<class rhoType>
-inline Foam::exponentialSolidThermo<rhoType>::exponentialSolidThermo
+template<class equationOfState>
+inline Foam::hExponentialThermo<equationOfState>::hExponentialThermo
 (
     const word& name,
-    const exponentialSolidThermo& jt
+    const hExponentialThermo& jt
 )
 :
-    rhoType(name, jt),
+    equationOfState(name, jt),
     c0_(jt.c0_),
     n0_(jt.n0_),
     Tref_(jt.Tref_),
@@ -75,17 +78,17 @@ inline Foam::exponentialSolidThermo<rhoType>::exponentialSolidThermo
 {}
 
 
-template<class rhoType>
-inline Foam::exponentialSolidThermo<rhoType>::exponentialSolidThermo
+template<class equationOfState>
+inline Foam::hExponentialThermo<equationOfState>::hExponentialThermo
 (
-    const rhoType& st,
+    const equationOfState& st,
     const scalar c0,
     const scalar n0,
     const scalar Tref,
     const scalar Hf
 )
 :
-    rhoType(st),
+    equationOfState(st),
     c0_(c0),
     n0_(n0),
     Tref_(Tref),
@@ -95,8 +98,8 @@ inline Foam::exponentialSolidThermo<rhoType>::exponentialSolidThermo
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-template<class rhoType>
-inline Foam::scalar Foam::exponentialSolidThermo<rhoType>::limit
+template<class equationOfState>
+inline Foam::scalar Foam::hExponentialThermo<equationOfState>::limit
 (
     const scalar T
 ) const
@@ -105,8 +108,8 @@ inline Foam::scalar Foam::exponentialSolidThermo<rhoType>::limit
 }
 
 
-template<class rhoType>
-inline Foam::scalar Foam::exponentialSolidThermo<rhoType>::cp
+template<class equationOfState>
+inline Foam::scalar Foam::hExponentialThermo<equationOfState>::cp
 (
     const scalar p, const scalar T
 ) const
@@ -115,8 +118,8 @@ inline Foam::scalar Foam::exponentialSolidThermo<rhoType>::cp
 }
 
 
-template<class rhoType>
-inline Foam::scalar Foam::exponentialSolidThermo<rhoType>::ha
+template<class equationOfState>
+inline Foam::scalar Foam::hExponentialThermo<equationOfState>::ha
 (
     const scalar p, const scalar T
 ) const
@@ -130,8 +133,8 @@ inline Foam::scalar Foam::exponentialSolidThermo<rhoType>::ha
 }
 
 
-template<class rhoType>
-inline Foam::scalar Foam::exponentialSolidThermo<rhoType>::hs
+template<class equationOfState>
+inline Foam::scalar Foam::hExponentialThermo<equationOfState>::hs
 (
     const scalar p, const scalar T
 ) const
@@ -141,22 +144,22 @@ inline Foam::scalar Foam::exponentialSolidThermo<rhoType>::hs
 }
 
 
-template<class rhoType>
-inline Foam::scalar Foam::exponentialSolidThermo<rhoType>::hc() const
+template<class equationOfState>
+inline Foam::scalar Foam::hExponentialThermo<equationOfState>::hc() const
 {
     return Hf_*this->W();
 }
 
 
-template<class rhoType>
-inline Foam::scalar Foam::exponentialSolidThermo<rhoType>::s
+template<class equationOfState>
+inline Foam::scalar Foam::hExponentialThermo<equationOfState>::s
 (
     const scalar p, const scalar T
 ) const
 {
     notImplemented
     (
-        "scalar exponentialSolidThermo<rhoType>::"
+        "scalar hExponentialThermo<equationOfState>::"
         "s(const scalar p, const scalar T) const"
     );
     return T;
@@ -165,14 +168,14 @@ inline Foam::scalar Foam::exponentialSolidThermo<rhoType>::s
 // * * * * * * * * * * * * * * * Member Operators  * * * * * * * * * * * * * //
 
 
-template<class rhoType>
-inline Foam::exponentialSolidThermo<rhoType>&
-Foam::exponentialSolidThermo<rhoType>::operator=
+template<class equationOfState>
+inline Foam::hExponentialThermo<equationOfState>&
+Foam::hExponentialThermo<equationOfState>::operator=
 (
-    const exponentialSolidThermo<rhoType>& ct
+    const hExponentialThermo<equationOfState>& ct
 )
 {
-    rhoType::operator=(ct);
+    equationOfState::operator=(ct);
 
     Hf_ = ct.Hf_;
     c0_ = ct.c0_;
@@ -183,15 +186,15 @@ Foam::exponentialSolidThermo<rhoType>::operator=
 }
 
 
-template<class rhoType>
-inline void Foam::exponentialSolidThermo<rhoType>::operator+=
+template<class equationOfState>
+inline void Foam::hExponentialThermo<equationOfState>::operator+=
 (
-    const exponentialSolidThermo<rhoType>& ct
+    const hExponentialThermo<equationOfState>& ct
 )
 {
     scalar molr1 = this->nMoles();
 
-    rhoType::operator+=(ct);
+    equationOfState::operator+=(ct);
 
     molr1 /= this->nMoles();
     scalar molr2 = ct.nMoles()/this->nMoles();
@@ -203,15 +206,15 @@ inline void Foam::exponentialSolidThermo<rhoType>::operator+=
 }
 
 
-template<class rhoType>
-inline void Foam::exponentialSolidThermo<rhoType>::operator-=
+template<class equationOfState>
+inline void Foam::hExponentialThermo<equationOfState>::operator-=
 (
-    const exponentialSolidThermo<rhoType>& ct
+    const hExponentialThermo<equationOfState>& ct
 )
 {
     scalar molr1 = this->nMoles();
 
-    rhoType::operator-=(ct);
+    equationOfState::operator-=(ct);
 
     molr1 /= this->nMoles();
     scalar molr2 = ct.nMoles()/this->nMoles();
@@ -225,16 +228,16 @@ inline void Foam::exponentialSolidThermo<rhoType>::operator-=
 
 // * * * * * * * * * * * * * * * Friend Operators  * * * * * * * * * * * * * //
 
-template<class rhoType>
-inline Foam::exponentialSolidThermo<rhoType> Foam::operator*
+template<class equationOfState>
+inline Foam::hExponentialThermo<equationOfState> Foam::operator*
 (
     const scalar s,
-    const exponentialSolidThermo<rhoType>& ct
+    const hExponentialThermo<equationOfState>& ct
 )
 {
-    return exponentialSolidThermo<rhoType>
+    return hExponentialThermo<equationOfState>
     (
-        s*static_cast<const rhoType&>(ct),
+        s*static_cast<const equationOfState&>(ct),
         ct.Hf_,
         ct.c0_,
         ct.n0_,
@@ -242,4 +245,5 @@ inline Foam::exponentialSolidThermo<rhoType> Foam::operator*
     );
 }
 
+
 // ************************************************************************* //
diff --git a/src/thermophysicalModels/specie/thermo/specieThermo/specieThermoI.H b/src/thermophysicalModels/specie/thermo/specieThermo/specieThermoI.H
index 6c3960562bc3b10d5e4fb3803c987446fc31a70e..c18ea8aa27dff3b4fbc5072eb863b5b748207a10 100644
--- a/src/thermophysicalModels/specie/thermo/specieThermo/specieThermoI.H
+++ b/src/thermophysicalModels/specie/thermo/specieThermo/specieThermoI.H
@@ -118,7 +118,7 @@ template<class Thermo, template<class> class Type>
 inline Foam::scalar
 Foam::specieThermo<Thermo, Type>::cv(const scalar p, const scalar T) const
 {
-    return this->cp(p, T) - this->RR;
+    return this->cp(p, T) - this->cpMcv(p, T);
 }
 
 
@@ -134,8 +134,8 @@ template<class Thermo, template<class> class Type>
 inline Foam::scalar
 Foam::specieThermo<Thermo, Type>::gamma(const scalar p, const scalar T) const
 {
-    scalar CP = this->cp(p, T);
-    return CP/(CP - this->RR);
+    scalar cp = this->cp(p, T);
+    return cp/(cp - this->cpMcv(p, T));
 }
 
 
@@ -151,7 +151,7 @@ template<class Thermo, template<class> class Type>
 inline Foam::scalar
 Foam::specieThermo<Thermo, Type>::es(const scalar p, const scalar T) const
 {
-    return this->hs(p, T) - this->RR*(T - this->Tstd);
+    return this->hs(p, T) - p*this->W()/this->rho(p, T);
 }
 
 
@@ -159,7 +159,7 @@ template<class Thermo, template<class> class Type>
 inline Foam::scalar
 Foam::specieThermo<Thermo, Type>::ea(const scalar p, const scalar T) const
 {
-    return this->ha(p, T) - this->RR*(T - this->Tstd);
+    return this->ha(p, T) - p*this->W()/this->rho(p, T);
 }
 
 
diff --git a/src/thermophysicalModels/thermalPorousZone/Make/options b/src/thermophysicalModels/thermalPorousZone/Make/options
index ca2d6183be35fd2d39863ff61a2c74c01666ee4c..d407126e2aaadef234647e652dbf55b369a7aab4 100644
--- a/src/thermophysicalModels/thermalPorousZone/Make/options
+++ b/src/thermophysicalModels/thermalPorousZone/Make/options
@@ -4,6 +4,6 @@ EXE_INC = \
     -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude
 
 LIB_LIBS = \
-    -lbasicThermophysicalModels \
+    -lfluidThermophysicalModels \
     -lmeshTools \
     -lfiniteVolume
diff --git a/src/thermophysicalModels/thermalPorousZone/thermalModel/fixedTemperature/fixedTemperature.C b/src/thermophysicalModels/thermalPorousZone/thermalModel/fixedTemperature/fixedTemperature.C
index 47cfe67dcd489b6e6dfe4177b3cd45b77ae840ed..b7fee8652025cc4cac109f79df3d00eab8b44311 100644
--- a/src/thermophysicalModels/thermalPorousZone/thermalModel/fixedTemperature/fixedTemperature.C
+++ b/src/thermophysicalModels/thermalPorousZone/thermalModel/fixedTemperature/fixedTemperature.C
@@ -25,7 +25,7 @@ License
 
 #include "fixedTemperature.H"
 #include "addToRunTimeSelectionTable.H"
-#include "basicThermo.H"
+#include "fluidThermo.H"
 #include "volFields.H"
 #include "fvMatrices.H"
 
@@ -66,7 +66,7 @@ Foam::porousMedia::fixedTemperature::~fixedTemperature()
 
 void Foam::porousMedia::fixedTemperature::addEnergySource
 (
-    const basicThermo& thermo,
+    const fluidThermo& thermo,
     const volScalarField& rho,
     fvScalarMatrix& hEqn
 ) const
diff --git a/src/thermophysicalModels/thermalPorousZone/thermalModel/fixedTemperature/fixedTemperature.H b/src/thermophysicalModels/thermalPorousZone/thermalModel/fixedTemperature/fixedTemperature.H
index b8932dd2e496ee08dab06d01b760edd915e390d8..f28317a9d452e45180d97d06b643c427ee2f268d 100644
--- a/src/thermophysicalModels/thermalPorousZone/thermalModel/fixedTemperature/fixedTemperature.H
+++ b/src/thermophysicalModels/thermalPorousZone/thermalModel/fixedTemperature/fixedTemperature.H
@@ -80,7 +80,7 @@ public:
         //- Add the thermal source to the enthalpy equation
         virtual void addEnergySource
         (
-            const basicThermo&,
+            const fluidThermo&,
             const volScalarField& rho,
             fvScalarMatrix& hEqn
         ) const;
diff --git a/src/thermophysicalModels/thermalPorousZone/thermalModel/noThermalModel/noThermalModel.C b/src/thermophysicalModels/thermalPorousZone/thermalModel/noThermalModel/noThermalModel.C
index 7a5a1be53e3594ddf7ad00e333a35f6dcc0833a0..4beef65f4fa410238ef9df44db0f27eeed6a4753 100644
--- a/src/thermophysicalModels/thermalPorousZone/thermalModel/noThermalModel/noThermalModel.C
+++ b/src/thermophysicalModels/thermalPorousZone/thermalModel/noThermalModel/noThermalModel.C
@@ -25,7 +25,7 @@ License
 
 #include "noThermalModel.H"
 #include "addToRunTimeSelectionTable.H"
-#include "basicThermo.H"
+#include "fluidThermo.H"
 #include "volFields.H"
 #include "fvMatrices.H"
 
@@ -65,7 +65,7 @@ Foam::porousMedia::noThermalModel::~noThermalModel()
 
 void Foam::porousMedia::noThermalModel::addEnergySource
 (
-    const basicThermo&,
+    const fluidThermo&,
     const volScalarField&,
     fvScalarMatrix&
 ) const
diff --git a/src/thermophysicalModels/thermalPorousZone/thermalModel/noThermalModel/noThermalModel.H b/src/thermophysicalModels/thermalPorousZone/thermalModel/noThermalModel/noThermalModel.H
index bad8b4dae011c969b7a4aa29c2d56f8344b0f709..1b9c1d8b83242a182b99fac406642d38c24f43fe 100644
--- a/src/thermophysicalModels/thermalPorousZone/thermalModel/noThermalModel/noThermalModel.H
+++ b/src/thermophysicalModels/thermalPorousZone/thermalModel/noThermalModel/noThermalModel.H
@@ -72,7 +72,7 @@ public:
         //- Add the thermal source to the enthalpy equation
         virtual void addEnergySource
         (
-            const basicThermo&,
+            const fluidThermo&,
             const volScalarField& rho,
             fvScalarMatrix& hEqn
         ) const;
diff --git a/src/thermophysicalModels/thermalPorousZone/thermalModel/thermalModel/thermalModel.H b/src/thermophysicalModels/thermalPorousZone/thermalModel/thermalModel/thermalModel.H
index 35d2965a7a3120a952645f2b816aabdfffc3922c..26991dc40ad1d09be827c0da80e6c5df295f7b6b 100644
--- a/src/thermophysicalModels/thermalPorousZone/thermalModel/thermalModel/thermalModel.H
+++ b/src/thermophysicalModels/thermalPorousZone/thermalModel/thermalModel/thermalModel.H
@@ -44,7 +44,7 @@ namespace Foam
 {
 
 // Forward declaration of classes
-class basicThermo;
+class fluidThermo;
 
 namespace porousMedia
 {
@@ -107,7 +107,7 @@ public:
         //- Add the thermal source to the enthalpy equation
         virtual void addEnergySource
         (
-            const basicThermo&,
+            const fluidThermo&,
             const volScalarField& rho,
             fvScalarMatrix& hEqn
         ) const = 0;
diff --git a/src/thermophysicalModels/thermalPorousZone/thermalPorousZone/thermalPorousZone.C b/src/thermophysicalModels/thermalPorousZone/thermalPorousZone/thermalPorousZone.C
index befa29b013c5daf7ef22884483ef0abcded23b5a..c636fc9e8760aa93f41d9bed946d59f4a7a090cd 100644
--- a/src/thermophysicalModels/thermalPorousZone/thermalPorousZone/thermalPorousZone.C
+++ b/src/thermophysicalModels/thermalPorousZone/thermalPorousZone/thermalPorousZone.C
@@ -24,7 +24,7 @@ License
 \*----------------------------------------------------------------------------*/
 
 #include "thermalPorousZone.H"
-#include "basicThermo.H"
+#include "fluidThermo.H"
 #include "volFields.H"
 #include "fvMatrices.H"
 
@@ -46,7 +46,7 @@ Foam::thermalPorousZone::thermalPorousZone
 
 void Foam::thermalPorousZone::addEnergySource
 (
-    const basicThermo& thermo,
+    const fluidThermo& thermo,
     const volScalarField& rho,
     fvScalarMatrix& hEqn
 ) const
diff --git a/src/thermophysicalModels/thermalPorousZone/thermalPorousZone/thermalPorousZone.H b/src/thermophysicalModels/thermalPorousZone/thermalPorousZone/thermalPorousZone.H
index 4356f87cdfc8bb29ab69261b950f278fe4c811a2..127d7fdf91cb4056b522fd2798bca836d7b1e472 100644
--- a/src/thermophysicalModels/thermalPorousZone/thermalPorousZone/thermalPorousZone.H
+++ b/src/thermophysicalModels/thermalPorousZone/thermalPorousZone/thermalPorousZone.H
@@ -49,7 +49,7 @@ namespace Foam
 {
 
 class fvMesh;
-class basicThermo;
+class fluidThermo;
 
 /*---------------------------------------------------------------------------*\
                        Class thermalPorousZone Declaration
@@ -127,7 +127,7 @@ public:
         //- Add the thermal source to the enthalpy equation
         void addEnergySource
         (
-            const basicThermo&,
+            const fluidThermo&,
             const volScalarField& rho,
             fvScalarMatrix& hEqn
         ) const;
diff --git a/src/thermophysicalModels/thermalPorousZone/thermalPorousZone/thermalPorousZones.C b/src/thermophysicalModels/thermalPorousZone/thermalPorousZone/thermalPorousZones.C
index 1e0da4b7a6f3b70418c2f4e5f4f6b74fc37000a5..8900a7350a2e1417b0eea6f9b7efffdfa1604709 100644
--- a/src/thermophysicalModels/thermalPorousZone/thermalPorousZone/thermalPorousZones.C
+++ b/src/thermophysicalModels/thermalPorousZone/thermalPorousZone/thermalPorousZones.C
@@ -48,7 +48,7 @@ Foam::thermalPorousZones::thermalPorousZones
 
 void Foam::thermalPorousZones::addEnergySource
 (
-    const basicThermo& thermo,
+    const fluidThermo& thermo,
     const volScalarField& rho,
     fvScalarMatrix& hEqn
 ) const
diff --git a/src/thermophysicalModels/thermalPorousZone/thermalPorousZone/thermalPorousZones.H b/src/thermophysicalModels/thermalPorousZone/thermalPorousZone/thermalPorousZones.H
index d30a38b29937ca5b6f6517cdf0aa3d56442ff74e..d239e0daf07c96d5fafe3ce420812d5269ee2aeb 100644
--- a/src/thermophysicalModels/thermalPorousZone/thermalPorousZone/thermalPorousZones.H
+++ b/src/thermophysicalModels/thermalPorousZone/thermalPorousZone/thermalPorousZones.H
@@ -95,7 +95,7 @@ public:
         //- Add the thermal source to the enthalpy equation
         void addEnergySource
         (
-            const basicThermo&,
+            const fluidThermo&,
             const volScalarField& rho,
             fvScalarMatrix& hEqn
         ) const;
diff --git a/src/turbulenceModels/compressible/LES/DeardorffDiffStress/DeardorffDiffStress.C b/src/turbulenceModels/compressible/LES/DeardorffDiffStress/DeardorffDiffStress.C
index 7d3c408e915be808f4acbbb3d1a72aa79c33c199..6d724be63a44c6f6484966f775e315a13991a16d 100644
--- a/src/turbulenceModels/compressible/LES/DeardorffDiffStress/DeardorffDiffStress.C
+++ b/src/turbulenceModels/compressible/LES/DeardorffDiffStress/DeardorffDiffStress.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -60,7 +60,7 @@ DeardorffDiffStress::DeardorffDiffStress
     const volScalarField& rho,
     const volVectorField& U,
     const surfaceScalarField& phi,
-    const basicThermo& thermoPhysicalModel,
+    const fluidThermo& thermoPhysicalModel,
     const word& turbulenceModelName,
     const word& modelName
 )
diff --git a/src/turbulenceModels/compressible/LES/DeardorffDiffStress/DeardorffDiffStress.H b/src/turbulenceModels/compressible/LES/DeardorffDiffStress/DeardorffDiffStress.H
index 3581ca5191efb3ea57b71304c9165e2005472637..f84c00f5d3ebd4d3abb4da65e0ac5eaad69f2aa2 100644
--- a/src/turbulenceModels/compressible/LES/DeardorffDiffStress/DeardorffDiffStress.H
+++ b/src/turbulenceModels/compressible/LES/DeardorffDiffStress/DeardorffDiffStress.H
@@ -107,7 +107,7 @@ public:
             const volScalarField& rho,
             const volVectorField& U,
             const surfaceScalarField& phi,
-            const basicThermo& thermoPhysicalModel,
+            const fluidThermo& thermoPhysicalModel,
             const word& turbulenceModelName = turbulenceModel::typeName,
             const word& modelName = typeName
         );
diff --git a/src/turbulenceModels/compressible/LES/GenEddyVisc/GenEddyVisc.C b/src/turbulenceModels/compressible/LES/GenEddyVisc/GenEddyVisc.C
index 0a3abf0fb3a546fcbf358fed0f8dd3ce21cec54c..d6ceef8489e2741f91ea97621f1d6e08b0afa9f9 100644
--- a/src/turbulenceModels/compressible/LES/GenEddyVisc/GenEddyVisc.C
+++ b/src/turbulenceModels/compressible/LES/GenEddyVisc/GenEddyVisc.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -46,7 +46,7 @@ GenEddyVisc::GenEddyVisc
     const volScalarField& rho,
     const volVectorField& U,
     const surfaceScalarField& phi,
-    const basicThermo& thermoPhysicalModel,
+    const fluidThermo& thermoPhysicalModel,
     const word& turbulenceModelName,
     const word& modelName
 )
diff --git a/src/turbulenceModels/compressible/LES/GenEddyVisc/GenEddyVisc.H b/src/turbulenceModels/compressible/LES/GenEddyVisc/GenEddyVisc.H
index 0c8aaea8c61f24918b5f536d1a29b315fb6e960e..d4af6e5e2a7149f6a36a8409bf824d2454c0b916 100644
--- a/src/turbulenceModels/compressible/LES/GenEddyVisc/GenEddyVisc.H
+++ b/src/turbulenceModels/compressible/LES/GenEddyVisc/GenEddyVisc.H
@@ -54,7 +54,7 @@ namespace LESModels
 {
 
 /*---------------------------------------------------------------------------*\
-                           Class GenEddyVisc Declaration
+                         Class GenEddyVisc Declaration
 \*---------------------------------------------------------------------------*/
 
 class GenEddyVisc
@@ -95,7 +95,7 @@ public:
             const volScalarField& rho,
             const volVectorField& U,
             const surfaceScalarField& phi,
-            const basicThermo& thermoPhysicalModel,
+            const fluidThermo& thermoPhysicalModel,
             const word& turbulenceModelName = turbulenceModel::typeName,
             const word& modelName = typeName
         );
@@ -111,7 +111,21 @@ public:
         //- Return sub-grid disipation rate
         virtual tmp<volScalarField> epsilon() const
         {
-            return ce_*k()*sqrt(k())/delta();
+            return tmp<volScalarField>
+            (
+                new volScalarField
+                (
+                    IOobject
+                    (   
+                        "epsilon",
+                        runTime_.timeName(),
+                        mesh_,
+                        IOobject::NO_READ,
+                        IOobject::NO_WRITE
+                    ),
+                    ce_*k()*sqrt(k())/delta()
+                )
+            );
         }
 
         //- Return viscosity
diff --git a/src/turbulenceModels/compressible/LES/GenSGSStress/GenSGSStress.C b/src/turbulenceModels/compressible/LES/GenSGSStress/GenSGSStress.C
index 6e76cd2bb0c1aa9c623956bc3c1e8180d21b911b..f643e2c4b0aecf83140948f696f00d634e7a52cc 100644
--- a/src/turbulenceModels/compressible/LES/GenSGSStress/GenSGSStress.C
+++ b/src/turbulenceModels/compressible/LES/GenSGSStress/GenSGSStress.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -46,7 +46,7 @@ GenSGSStress::GenSGSStress
     const volScalarField& rho,
     const volVectorField& U,
     const surfaceScalarField& phi,
-    const basicThermo& thermoPhysicalModel,
+    const fluidThermo& thermoPhysicalModel,
     const word& turbulenceModelName,
     const word& modelName
 )
diff --git a/src/turbulenceModels/compressible/LES/GenSGSStress/GenSGSStress.H b/src/turbulenceModels/compressible/LES/GenSGSStress/GenSGSStress.H
index 4fbb54be1b4f219a6626e52963e9597f222f44ad..44eef6da8f164f0ee14c566fbedb3bdf4445c412 100644
--- a/src/turbulenceModels/compressible/LES/GenSGSStress/GenSGSStress.H
+++ b/src/turbulenceModels/compressible/LES/GenSGSStress/GenSGSStress.H
@@ -96,7 +96,7 @@ public:
             const volScalarField& rho,
             const volVectorField& U,
             const surfaceScalarField& phi,
-            const basicThermo& thermoPhysicalModel,
+            const fluidThermo& thermoPhysicalModel,
             const word& turbulenceModelName = turbulenceModel::typeName,
             const word& modelName = typeName
         );
@@ -112,14 +112,43 @@ public:
         //- Return the SGS turbulent kinetic energy
         virtual tmp<volScalarField> k() const
         {
-            return 0.5*tr(B_);
+            return tmp<volScalarField>
+            (
+                new volScalarField
+                (
+                    IOobject
+                    (   
+                        "k",
+                        runTime_.timeName(),
+                        mesh_,
+                        IOobject::NO_READ,
+                        IOobject::NO_WRITE
+                    ),
+                    0.5*tr(B_)
+                )
+            );
         }
 
         //- Return the SGS turbulent dissipation
         virtual tmp<volScalarField> epsilon() const
         {
             const volScalarField K(k());
-            return ce_*K*sqrt(K)/delta();
+
+            return tmp<volScalarField>
+            (
+                new volScalarField
+                (
+                    IOobject
+                    (   
+                        "epsilon",
+                        runTime_.timeName(),
+                        mesh_,
+                        IOobject::NO_READ,
+                        IOobject::NO_WRITE
+                    ),
+                    ce_*K*sqrt(K)/delta()
+                )
+            );
         }
 
         //- Return the SGS viscosity
diff --git a/src/turbulenceModels/compressible/LES/LESModel/LESModel.C b/src/turbulenceModels/compressible/LES/LESModel/LESModel.C
index 7f7b86d1bb25b76a33313231d5841e38f7dfd28c..0a338e29068848fdbeb30263ed5f5dc7bdb536cb 100644
--- a/src/turbulenceModels/compressible/LES/LESModel/LESModel.C
+++ b/src/turbulenceModels/compressible/LES/LESModel/LESModel.C
@@ -58,7 +58,7 @@ LESModel::LESModel
     const volScalarField& rho,
     const volVectorField& U,
     const surfaceScalarField& phi,
-    const basicThermo& thermoPhysicalModel,
+    const fluidThermo& thermoPhysicalModel,
     const word& turbulenceModelName
 )
 :
@@ -98,7 +98,7 @@ autoPtr<LESModel> LESModel::New
     const volScalarField& rho,
     const volVectorField& U,
     const surfaceScalarField& phi,
-    const basicThermo& thermoPhysicalModel,
+    const fluidThermo& thermoPhysicalModel,
     const word& turbulenceModelName
 )
 {
@@ -134,7 +134,7 @@ autoPtr<LESModel> LESModel::New
                 "const volScalarField&, "
                 "const volVectorField&, "
                 "const surfaceScalarField&, "
-                "const basicThermo&, "
+                "const fluidThermo&, "
                 "const word&"
             ")"
         )   << "Unknown LESModel type "
diff --git a/src/turbulenceModels/compressible/LES/LESModel/LESModel.H b/src/turbulenceModels/compressible/LES/LESModel/LESModel.H
index 7e0f0aace2a4201ea7d615220f522579a5415e78..f33a1681dcf2eccf9c853f39ff560e2764c04e44 100644
--- a/src/turbulenceModels/compressible/LES/LESModel/LESModel.H
+++ b/src/turbulenceModels/compressible/LES/LESModel/LESModel.H
@@ -55,7 +55,7 @@ SourceFiles
 #include "fvm.H"
 #include "fvc.H"
 #include "fvMatrices.H"
-#include "basicThermo.H"
+#include "fluidThermo.H"
 #include "bound.H"
 #include "autoPtr.H"
 #include "runTimeSelectionTables.H"
@@ -123,7 +123,7 @@ public:
                 const volScalarField& rho,
                 const volVectorField& U,
                 const surfaceScalarField& phi,
-                const basicThermo& thermoPhysicalModel,
+                const fluidThermo& thermoPhysicalModel,
                 const word& turbulenceModelName
             ),
             (rho, U, phi, thermoPhysicalModel, turbulenceModelName)
@@ -139,7 +139,7 @@ public:
             const volScalarField& rho,
             const volVectorField& U,
             const surfaceScalarField& phi,
-            const basicThermo& thermoPhysicalModel,
+            const fluidThermo& thermoPhysicalModel,
             const word& turbulenceModelName = turbulenceModel::typeName
         );
 
@@ -152,7 +152,7 @@ public:
             const volScalarField& rho,
             const volVectorField& U,
             const surfaceScalarField& phi,
-            const basicThermo& thermoPhysicalModel,
+            const fluidThermo& thermoPhysicalModel,
             const word& turbulenceModelName = turbulenceModel::typeName
         );
 
diff --git a/src/turbulenceModels/compressible/LES/Smagorinsky/Smagorinsky.C b/src/turbulenceModels/compressible/LES/Smagorinsky/Smagorinsky.C
index b05630dedc5b02e640fb8205902fe04175b6ba7d..89719bb7e57099091b39629d8c108b184c694e37 100644
--- a/src/turbulenceModels/compressible/LES/Smagorinsky/Smagorinsky.C
+++ b/src/turbulenceModels/compressible/LES/Smagorinsky/Smagorinsky.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -68,7 +68,7 @@ Smagorinsky::Smagorinsky
     const volScalarField& rho,
     const volVectorField& U,
     const surfaceScalarField& phi,
-    const basicThermo& thermoPhysicalModel,
+    const fluidThermo& thermoPhysicalModel,
     const word& turbulenceModelName,
     const word& modelName
 )
diff --git a/src/turbulenceModels/compressible/LES/Smagorinsky/Smagorinsky.H b/src/turbulenceModels/compressible/LES/Smagorinsky/Smagorinsky.H
index 14f880450a27d5bad7670dc32e4a80fdb36cf6f5..56821ae60eb481f5b024ad5ed0bddbafce65a191 100644
--- a/src/turbulenceModels/compressible/LES/Smagorinsky/Smagorinsky.H
+++ b/src/turbulenceModels/compressible/LES/Smagorinsky/Smagorinsky.H
@@ -99,7 +99,7 @@ public:
             const volScalarField& rho,
             const volVectorField& U,
             const surfaceScalarField& phi,
-            const basicThermo& thermoPhysicalModel,
+            const fluidThermo& thermoPhysicalModel,
             const word& turbulenceModelName = turbulenceModel::typeName,
             const word& modelName = typeName
         );
diff --git a/src/turbulenceModels/compressible/LES/SpalartAllmaras/SpalartAllmaras.C b/src/turbulenceModels/compressible/LES/SpalartAllmaras/SpalartAllmaras.C
index 5819741e391e94c62dd936b3517c250d533837f4..bda2af653d3e466e2eb346a3626fe84bce3b5003 100644
--- a/src/turbulenceModels/compressible/LES/SpalartAllmaras/SpalartAllmaras.C
+++ b/src/turbulenceModels/compressible/LES/SpalartAllmaras/SpalartAllmaras.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -113,7 +113,7 @@ SpalartAllmaras::SpalartAllmaras
     const volScalarField& rho,
     const volVectorField& U,
     const surfaceScalarField& phi,
-    const basicThermo& thermoPhysicalModel,
+    const fluidThermo& thermoPhysicalModel,
     const word& turbulenceModelName,
     const word& modelName
 )
diff --git a/src/turbulenceModels/compressible/LES/SpalartAllmaras/SpalartAllmaras.H b/src/turbulenceModels/compressible/LES/SpalartAllmaras/SpalartAllmaras.H
index 9597eed61ba70c71d4cee1bbfffe21ec74274c54..1ef5941cf87506c19acfd885a6dd6700b0c6be82 100644
--- a/src/turbulenceModels/compressible/LES/SpalartAllmaras/SpalartAllmaras.H
+++ b/src/turbulenceModels/compressible/LES/SpalartAllmaras/SpalartAllmaras.H
@@ -114,7 +114,7 @@ public:
             const volScalarField& rho,
             const volVectorField& U,
             const surfaceScalarField& phi,
-            const basicThermo& thermoPhysicalModel,
+            const fluidThermo& thermoPhysicalModel,
             const word& turbulenceModelName = turbulenceModel::typeName,
             const word& modelName = typeName
         );
diff --git a/src/turbulenceModels/compressible/LES/homogeneousDynOneEqEddy/homogeneousDynOneEqEddy.C b/src/turbulenceModels/compressible/LES/homogeneousDynOneEqEddy/homogeneousDynOneEqEddy.C
index ab1584a29cd3ccbcadd0947a3d469107a4304f75..8a7bdb02917473968b41b55043ff4cc392f0e4b1 100644
--- a/src/turbulenceModels/compressible/LES/homogeneousDynOneEqEddy/homogeneousDynOneEqEddy.C
+++ b/src/turbulenceModels/compressible/LES/homogeneousDynOneEqEddy/homogeneousDynOneEqEddy.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -105,7 +105,7 @@ homogeneousDynOneEqEddy::homogeneousDynOneEqEddy
     const volScalarField& rho,
     const volVectorField& U,
     const surfaceScalarField& phi,
-    const basicThermo& thermoPhysicalModel,
+    const fluidThermo& thermoPhysicalModel,
     const word& turbulenceModelName,
     const word& modelName
 )
diff --git a/src/turbulenceModels/compressible/LES/homogeneousDynOneEqEddy/homogeneousDynOneEqEddy.H b/src/turbulenceModels/compressible/LES/homogeneousDynOneEqEddy/homogeneousDynOneEqEddy.H
index 3248bbabf0002da48560c332c1a61193d9c938ad..fca371f0d3904480ed43961f779433342b2b856d 100644
--- a/src/turbulenceModels/compressible/LES/homogeneousDynOneEqEddy/homogeneousDynOneEqEddy.H
+++ b/src/turbulenceModels/compressible/LES/homogeneousDynOneEqEddy/homogeneousDynOneEqEddy.H
@@ -112,7 +112,7 @@ public:
             const volScalarField& rho,
             const volVectorField& U,
             const surfaceScalarField& phi,
-            const basicThermo& thermoPhysicalModel,
+            const fluidThermo& thermoPhysicalModel,
             const word& turbulenceModelName = turbulenceModel::typeName,
             const word& modelName = typeName
         );
diff --git a/src/turbulenceModels/compressible/LES/lowReOneEqEddy/lowReOneEqEddy.C b/src/turbulenceModels/compressible/LES/lowReOneEqEddy/lowReOneEqEddy.C
index 0a2b7acf12760c880b456846de6964bc04ac72ae..aeaa8351d02af8d3903551c9421fa46701967c71 100644
--- a/src/turbulenceModels/compressible/LES/lowReOneEqEddy/lowReOneEqEddy.C
+++ b/src/turbulenceModels/compressible/LES/lowReOneEqEddy/lowReOneEqEddy.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -63,7 +63,7 @@ lowReOneEqEddy::lowReOneEqEddy
     const volScalarField& rho,
     const volVectorField& U,
     const surfaceScalarField& phi,
-    const basicThermo& thermoPhysicalModel,
+    const fluidThermo& thermoPhysicalModel,
     const word& turbulenceModelName,
     const word& modelName
 )
diff --git a/src/turbulenceModels/compressible/LES/lowReOneEqEddy/lowReOneEqEddy.H b/src/turbulenceModels/compressible/LES/lowReOneEqEddy/lowReOneEqEddy.H
index cdd38223c3576efd7ff5940168f812ecbb81603e..e3e836d3a58c5aa0332c237b2855eda6e7ec5940 100644
--- a/src/turbulenceModels/compressible/LES/lowReOneEqEddy/lowReOneEqEddy.H
+++ b/src/turbulenceModels/compressible/LES/lowReOneEqEddy/lowReOneEqEddy.H
@@ -103,7 +103,7 @@ public:
             const volScalarField& rho,
             const volVectorField& U,
             const surfaceScalarField& phi,
-            const basicThermo& thermoPhysicalModel,
+            const fluidThermo& thermoPhysicalModel,
             const word& turbulenceModelName = turbulenceModel::typeName,
             const word& modelName = typeName
         );
diff --git a/src/turbulenceModels/compressible/LES/oneEqEddy/oneEqEddy.C b/src/turbulenceModels/compressible/LES/oneEqEddy/oneEqEddy.C
index 10b069b449bd6cfc531abc263271b0b93ae2ba1e..d02b487de5478629f33964f8d15a9453c757e0c2 100644
--- a/src/turbulenceModels/compressible/LES/oneEqEddy/oneEqEddy.C
+++ b/src/turbulenceModels/compressible/LES/oneEqEddy/oneEqEddy.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -59,7 +59,7 @@ oneEqEddy::oneEqEddy
     const volScalarField& rho,
     const volVectorField& U,
     const surfaceScalarField& phi,
-    const basicThermo& thermoPhysicalModel,
+    const fluidThermo& thermoPhysicalModel,
     const word& turbulenceModelName,
     const word& modelName
 )
diff --git a/src/turbulenceModels/compressible/LES/oneEqEddy/oneEqEddy.H b/src/turbulenceModels/compressible/LES/oneEqEddy/oneEqEddy.H
index 1dcd9c519986da09c752d2280bcdf7f0f39634eb..7e0896935ca1e71d89b1a7d65653163783ee670b 100644
--- a/src/turbulenceModels/compressible/LES/oneEqEddy/oneEqEddy.H
+++ b/src/turbulenceModels/compressible/LES/oneEqEddy/oneEqEddy.H
@@ -107,7 +107,7 @@ public:
             const volScalarField& rho,
             const volVectorField& U,
             const surfaceScalarField& phi,
-            const basicThermo& thermoPhysicalModel,
+            const fluidThermo& thermoPhysicalModel,
             const word& turbulenceModelName = turbulenceModel::typeName,
             const word& modelName = typeName
         );
diff --git a/src/turbulenceModels/compressible/RAS/LRR/LRR.C b/src/turbulenceModels/compressible/RAS/LRR/LRR.C
index be15b76474057a28df10d241e05774a33cf253e4..154df3132f03d42b0fb63ea5356bdae86638ca4f 100644
--- a/src/turbulenceModels/compressible/RAS/LRR/LRR.C
+++ b/src/turbulenceModels/compressible/RAS/LRR/LRR.C
@@ -50,7 +50,7 @@ LRR::LRR
     const volScalarField& rho,
     const volVectorField& U,
     const surfaceScalarField& phi,
-    const basicThermo& thermophysicalModel,
+    const fluidThermo& thermophysicalModel,
     const word& turbulenceModelName,
     const word& modelName
 )
diff --git a/src/turbulenceModels/compressible/RAS/LRR/LRR.H b/src/turbulenceModels/compressible/RAS/LRR/LRR.H
index 6ff918abc7a52bf9c1568727ef8b75fe69caf830..a80bf4171be81cb7bc6c671ee55806d0f7303ff7 100644
--- a/src/turbulenceModels/compressible/RAS/LRR/LRR.H
+++ b/src/turbulenceModels/compressible/RAS/LRR/LRR.H
@@ -122,7 +122,7 @@ public:
             const volScalarField& rho,
             const volVectorField& U,
             const surfaceScalarField& phi,
-            const basicThermo& thermophysicalModel,
+            const fluidThermo& thermophysicalModel,
             const word& turbulenceModelName = turbulenceModel::typeName,
             const word& modelName = typeName
         );
diff --git a/src/turbulenceModels/compressible/RAS/LaunderGibsonRSTM/LaunderGibsonRSTM.C b/src/turbulenceModels/compressible/RAS/LaunderGibsonRSTM/LaunderGibsonRSTM.C
index fb9bee6570acf4836bc5af7b63afdedb6de55b6e..5f852ab59149da9f267325fe59eabccd33f879cd 100644
--- a/src/turbulenceModels/compressible/RAS/LaunderGibsonRSTM/LaunderGibsonRSTM.C
+++ b/src/turbulenceModels/compressible/RAS/LaunderGibsonRSTM/LaunderGibsonRSTM.C
@@ -50,7 +50,7 @@ LaunderGibsonRSTM::LaunderGibsonRSTM
     const volScalarField& rho,
     const volVectorField& U,
     const surfaceScalarField& phi,
-    const basicThermo& thermophysicalModel,
+    const fluidThermo& thermophysicalModel,
     const word& turbulenceModelName,
     const word& modelName
 )
@@ -253,7 +253,7 @@ LaunderGibsonRSTM::LaunderGibsonRSTM
         (
             "LaunderGibsonRSTM::LaunderGibsonRSTM"
             "(const volScalarField&, const volVectorField&"
-            ", const surfaceScalarField&, basicThermo&)"
+            ", const surfaceScalarField&, fluidThermo&)"
         )   << "couplingFactor = " << couplingFactor_
             << " is not in range 0 - 1" << nl
             << exit(FatalError);
diff --git a/src/turbulenceModels/compressible/RAS/LaunderGibsonRSTM/LaunderGibsonRSTM.H b/src/turbulenceModels/compressible/RAS/LaunderGibsonRSTM/LaunderGibsonRSTM.H
index 4d8208dd3c5ee4057b3d87eb6100a66d3f95f46f..d7f09205b08c8dc78bffddb3dfdf0f0e28d77f57 100644
--- a/src/turbulenceModels/compressible/RAS/LaunderGibsonRSTM/LaunderGibsonRSTM.H
+++ b/src/turbulenceModels/compressible/RAS/LaunderGibsonRSTM/LaunderGibsonRSTM.H
@@ -131,7 +131,7 @@ public:
             const volScalarField& rho,
             const volVectorField& U,
             const surfaceScalarField& phi,
-            const basicThermo& thermophysicalModel,
+            const fluidThermo& thermophysicalModel,
             const word& turbulenceModelName = turbulenceModel::typeName,
             const word& modelName = typeName
         );
diff --git a/src/turbulenceModels/compressible/RAS/LaunderSharmaKE/LaunderSharmaKE.C b/src/turbulenceModels/compressible/RAS/LaunderSharmaKE/LaunderSharmaKE.C
index 0d27e370505b0022588b729711b0f1c88062e76f..9a2c72b4c95b00dda89d88f3548af9c3d2b3cd5e 100644
--- a/src/turbulenceModels/compressible/RAS/LaunderSharmaKE/LaunderSharmaKE.C
+++ b/src/turbulenceModels/compressible/RAS/LaunderSharmaKE/LaunderSharmaKE.C
@@ -65,7 +65,7 @@ LaunderSharmaKE::LaunderSharmaKE
     const volScalarField& rho,
     const volVectorField& U,
     const surfaceScalarField& phi,
-    const basicThermo& thermophysicalModel,
+    const fluidThermo& thermophysicalModel,
     const word& turbulenceModelName,
     const word& modelName
 )
diff --git a/src/turbulenceModels/compressible/RAS/LaunderSharmaKE/LaunderSharmaKE.H b/src/turbulenceModels/compressible/RAS/LaunderSharmaKE/LaunderSharmaKE.H
index 149b4cc9c350d3760462339090a5f09132f94796..034b542ad99875c0291c44bd23de9bce53e4bf1a 100644
--- a/src/turbulenceModels/compressible/RAS/LaunderSharmaKE/LaunderSharmaKE.H
+++ b/src/turbulenceModels/compressible/RAS/LaunderSharmaKE/LaunderSharmaKE.H
@@ -115,7 +115,7 @@ public:
             const volScalarField& rho,
             const volVectorField& U,
             const surfaceScalarField& phi,
-            const basicThermo& thermophysicalModel,
+            const fluidThermo& thermophysicalModel,
             const word& turbulenceModelName = turbulenceModel::typeName,
             const word& modelName = typeName
         );
diff --git a/src/turbulenceModels/compressible/RAS/Make/options b/src/turbulenceModels/compressible/RAS/Make/options
index 0e3ec0f8fbef11be7d6a1875006fbb3b1d9fc8bb..8b8e57cd17927311b940a24407541a31a17eb6c0 100644
--- a/src/turbulenceModels/compressible/RAS/Make/options
+++ b/src/turbulenceModels/compressible/RAS/Make/options
@@ -1,13 +1,13 @@
 EXE_INC = \
     -I$(LIB_SRC)/turbulenceModels \
     -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
-    -I$(LIB_SRC)/thermophysicalModels/basicSolidThermo/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/solidThermo/lnInclude \
     -I$(LIB_SRC)/finiteVolume/lnInclude \
     -I$(LIB_SRC)/meshTools/lnInclude \
 
 LIB_LIBS = \
     -lcompressibleTurbulenceModel \
     -lfiniteVolume \
-    -lbasicThermophysicalModels \
+    -lfluidThermophysicalModels \
     -lspecie \
     -lmeshTools
diff --git a/src/turbulenceModels/compressible/RAS/RASModel/RASModel.C b/src/turbulenceModels/compressible/RAS/RASModel/RASModel.C
index 26878b8bc603ef32fba13d1b0f34a3fb0ea29357..7e09a4b1a864ee70f204ceb69b9b68b0002fdb4a 100644
--- a/src/turbulenceModels/compressible/RAS/RASModel/RASModel.C
+++ b/src/turbulenceModels/compressible/RAS/RASModel/RASModel.C
@@ -59,7 +59,7 @@ RASModel::RASModel
     const volScalarField& rho,
     const volVectorField& U,
     const surfaceScalarField& phi,
-    const basicThermo& thermophysicalModel,
+    const fluidThermo& thermophysicalModel,
     const word& turbulenceModelName
 )
 :
@@ -102,7 +102,7 @@ autoPtr<RASModel> RASModel::New
     const volScalarField& rho,
     const volVectorField& U,
     const surfaceScalarField& phi,
-    const basicThermo& thermophysicalModel,
+    const fluidThermo& thermophysicalModel,
     const word& turbulenceModelName
 )
 {
@@ -138,7 +138,7 @@ autoPtr<RASModel> RASModel::New
                 "const volScalarField&, "
                 "const volVectorField&, "
                 "const surfaceScalarField&, "
-                "basicThermo&, "
+                "fluidThermo&, "
                 "const word&"
             ")"
         )   << "Unknown RASModel type "
diff --git a/src/turbulenceModels/compressible/RAS/RASModel/RASModel.H b/src/turbulenceModels/compressible/RAS/RASModel/RASModel.H
index ba86355602e8fb55fd18183f9bf1cc0ef7dea07b..1efe2cd08dfdd64be7c8a4e1080120d76976479d 100644
--- a/src/turbulenceModels/compressible/RAS/RASModel/RASModel.H
+++ b/src/turbulenceModels/compressible/RAS/RASModel/RASModel.H
@@ -48,7 +48,7 @@ SourceFiles
 #include "fvm.H"
 #include "fvc.H"
 #include "fvMatrices.H"
-#include "basicThermo.H"
+#include "fluidThermo.H"
 #include "IOdictionary.H"
 #include "Switch.H"
 #include "bound.H"
@@ -129,7 +129,7 @@ public:
                 const volScalarField& rho,
                 const volVectorField& U,
                 const surfaceScalarField& phi,
-                const basicThermo& thermoPhysicalModel,
+                const fluidThermo& thermoPhysicalModel,
                 const word& turbulenceModelName
             ),
             (rho, U, phi, thermoPhysicalModel, turbulenceModelName)
@@ -145,7 +145,7 @@ public:
             const volScalarField& rho,
             const volVectorField& U,
             const surfaceScalarField& phi,
-            const basicThermo& thermoPhysicalModel,
+            const fluidThermo& thermoPhysicalModel,
             const word& turbulenceModelName = turbulenceModel::typeName
         );
 
@@ -158,7 +158,7 @@ public:
             const volScalarField& rho,
             const volVectorField& U,
             const surfaceScalarField& phi,
-            const basicThermo& thermoPhysicalModel,
+            const fluidThermo& thermoPhysicalModel,
             const word& turbulenceModelName = turbulenceModel::typeName
         );
 
diff --git a/src/turbulenceModels/compressible/RAS/RNGkEpsilon/RNGkEpsilon.C b/src/turbulenceModels/compressible/RAS/RNGkEpsilon/RNGkEpsilon.C
index 96155d40a43be6bec13e6fd6d03a2bda814bcb52..8302d28df1c27ef1c64f122e81da10b81a91fc32 100644
--- a/src/turbulenceModels/compressible/RAS/RNGkEpsilon/RNGkEpsilon.C
+++ b/src/turbulenceModels/compressible/RAS/RNGkEpsilon/RNGkEpsilon.C
@@ -49,7 +49,7 @@ RNGkEpsilon::RNGkEpsilon
     const volScalarField& rho,
     const volVectorField& U,
     const surfaceScalarField& phi,
-    const basicThermo& thermophysicalModel,
+    const fluidThermo& thermophysicalModel,
     const word& turbulenceModelName,
     const word& modelName
 )
diff --git a/src/turbulenceModels/compressible/RAS/RNGkEpsilon/RNGkEpsilon.H b/src/turbulenceModels/compressible/RAS/RNGkEpsilon/RNGkEpsilon.H
index 87c2918f1d86749b852ef303d59abe8c03421348..2c95acd766dad44a26dd0e1250e3ac7630737186 100644
--- a/src/turbulenceModels/compressible/RAS/RNGkEpsilon/RNGkEpsilon.H
+++ b/src/turbulenceModels/compressible/RAS/RNGkEpsilon/RNGkEpsilon.H
@@ -111,7 +111,7 @@ public:
             const volScalarField& rho,
             const volVectorField& U,
             const surfaceScalarField& phi,
-            const basicThermo& thermophysicalModel,
+            const fluidThermo& thermophysicalModel,
             const word& turbulenceModelName = turbulenceModel::typeName,
             const word& modelName = typeName
         );
diff --git a/src/turbulenceModels/compressible/RAS/SpalartAllmaras/SpalartAllmaras.C b/src/turbulenceModels/compressible/RAS/SpalartAllmaras/SpalartAllmaras.C
index b76872cfa1fa4e8fca8504ff1baf5bf3eee84bd9..5a6bf8e8b90ee168c7a30cc81df4c2a77cc85a30 100644
--- a/src/turbulenceModels/compressible/RAS/SpalartAllmaras/SpalartAllmaras.C
+++ b/src/turbulenceModels/compressible/RAS/SpalartAllmaras/SpalartAllmaras.C
@@ -116,7 +116,7 @@ SpalartAllmaras::SpalartAllmaras
     const volScalarField& rho,
     const volVectorField& U,
     const surfaceScalarField& phi,
-    const basicThermo& thermophysicalModel,
+    const fluidThermo& thermophysicalModel,
     const word& turbulenceModelName,
     const word& modelName
 )
diff --git a/src/turbulenceModels/compressible/RAS/SpalartAllmaras/SpalartAllmaras.H b/src/turbulenceModels/compressible/RAS/SpalartAllmaras/SpalartAllmaras.H
index a7fb64b73c055d424d4af85bfa7668e6a7c0bfc8..ea829fc88dfbe69502c2346ec6723a84df45a952 100644
--- a/src/turbulenceModels/compressible/RAS/SpalartAllmaras/SpalartAllmaras.H
+++ b/src/turbulenceModels/compressible/RAS/SpalartAllmaras/SpalartAllmaras.H
@@ -152,7 +152,7 @@ public:
             const volScalarField& rho,
             const volVectorField& U,
             const surfaceScalarField& phi,
-            const basicThermo& thermophysicalModel,
+            const fluidThermo& thermophysicalModel,
             const word& turbulenceModelName = turbulenceModel::typeName,
             const word& modelName = typeName
         );
diff --git a/src/turbulenceModels/compressible/RAS/kEpsilon/kEpsilon.C b/src/turbulenceModels/compressible/RAS/kEpsilon/kEpsilon.C
index aa63cf9f239b94c5e49c03fff93d849f103ec376..ee80730baa6c7092aa99dfaf538df270f3c8a837 100644
--- a/src/turbulenceModels/compressible/RAS/kEpsilon/kEpsilon.C
+++ b/src/turbulenceModels/compressible/RAS/kEpsilon/kEpsilon.C
@@ -49,7 +49,7 @@ kEpsilon::kEpsilon
     const volScalarField& rho,
     const volVectorField& U,
     const surfaceScalarField& phi,
-    const basicThermo& thermophysicalModel,
+    const fluidThermo& thermophysicalModel,
     const word& turbulenceModelName,
     const word& modelName
 )
diff --git a/src/turbulenceModels/compressible/RAS/kEpsilon/kEpsilon.H b/src/turbulenceModels/compressible/RAS/kEpsilon/kEpsilon.H
index 3cd23cf6a5396f281972b7aa61a6f6ef1e43aab7..4084d289f9aa17923374e33482fb633ae03957d1 100644
--- a/src/turbulenceModels/compressible/RAS/kEpsilon/kEpsilon.H
+++ b/src/turbulenceModels/compressible/RAS/kEpsilon/kEpsilon.H
@@ -107,7 +107,7 @@ public:
             const volScalarField& rho,
             const volVectorField& U,
             const surfaceScalarField& phi,
-            const basicThermo& thermophysicalModel,
+            const fluidThermo& thermophysicalModel,
             const word& turbulenceModelName = turbulenceModel::typeName,
             const word& modelName = typeName
         );
diff --git a/src/turbulenceModels/compressible/RAS/kOmegaSST/kOmegaSST.C b/src/turbulenceModels/compressible/RAS/kOmegaSST/kOmegaSST.C
index e1ffc23d8de99001a85a26025dcbbd982a7d5c17..e84be63ad6cd86e5ef1de6f37c36d77d4c778b37 100644
--- a/src/turbulenceModels/compressible/RAS/kOmegaSST/kOmegaSST.C
+++ b/src/turbulenceModels/compressible/RAS/kOmegaSST/kOmegaSST.C
@@ -92,7 +92,7 @@ kOmegaSST::kOmegaSST
     const volScalarField& rho,
     const volVectorField& U,
     const surfaceScalarField& phi,
-    const basicThermo& thermophysicalModel,
+    const fluidThermo& thermophysicalModel,
     const word& turbulenceModelName,
     const word& modelName
 )
diff --git a/src/turbulenceModels/compressible/RAS/kOmegaSST/kOmegaSST.H b/src/turbulenceModels/compressible/RAS/kOmegaSST/kOmegaSST.H
index fc28cdebb1296ff22f5adfe94267530251744c7a..d498a9a1f1031afdbeeb768dc1c9f3453720b170 100644
--- a/src/turbulenceModels/compressible/RAS/kOmegaSST/kOmegaSST.H
+++ b/src/turbulenceModels/compressible/RAS/kOmegaSST/kOmegaSST.H
@@ -190,7 +190,7 @@ public:
             const volScalarField& rho,
             const volVectorField& U,
             const surfaceScalarField& phi,
-            const basicThermo& thermophysicalModel,
+            const fluidThermo& thermophysicalModel,
             const word& turbulenceModelName = turbulenceModel::typeName,
             const word& modelName = typeName
         );
diff --git a/src/turbulenceModels/compressible/RAS/laminar/laminar.C b/src/turbulenceModels/compressible/RAS/laminar/laminar.C
index 39280c2e528675b8cf0e3610b6608949db36a51e..aa3200ee856377a963e176386d05b3a56e83e898 100644
--- a/src/turbulenceModels/compressible/RAS/laminar/laminar.C
+++ b/src/turbulenceModels/compressible/RAS/laminar/laminar.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -47,7 +47,7 @@ laminar::laminar
     const volScalarField& rho,
     const volVectorField& U,
     const surfaceScalarField& phi,
-    const basicThermo& thermophysicalModel,
+    const fluidThermo& thermophysicalModel,
     const word& turbulenceModelName,
     const word& modelName
 )
diff --git a/src/turbulenceModels/compressible/RAS/laminar/laminar.H b/src/turbulenceModels/compressible/RAS/laminar/laminar.H
index 953dbc5e9762e87974329bf8c58245a9fc807696..0b099d01aa77b94311987ad94d809a32537f4a21 100644
--- a/src/turbulenceModels/compressible/RAS/laminar/laminar.H
+++ b/src/turbulenceModels/compressible/RAS/laminar/laminar.H
@@ -71,7 +71,7 @@ public:
             const volScalarField& rho,
             const volVectorField& U,
             const surfaceScalarField& phi,
-            const basicThermo& thermophysicalModel,
+            const fluidThermo& thermophysicalModel,
             const word& turbulenceModelName = turbulenceModel::typeName,
             const word& modelName = typeName
         );
diff --git a/src/turbulenceModels/compressible/RAS/realizableKE/realizableKE.C b/src/turbulenceModels/compressible/RAS/realizableKE/realizableKE.C
index bb0f3041fad76fc7f01289a8a540a7c45e5a5b34..6206fda9399a8a458512ef9fff00b4eb621a7d44 100644
--- a/src/turbulenceModels/compressible/RAS/realizableKE/realizableKE.C
+++ b/src/turbulenceModels/compressible/RAS/realizableKE/realizableKE.C
@@ -94,7 +94,7 @@ realizableKE::realizableKE
     const volScalarField& rho,
     const volVectorField& U,
     const surfaceScalarField& phi,
-    const basicThermo& thermophysicalModel,
+    const fluidThermo& thermophysicalModel,
     const word& turbulenceModelName,
     const word& modelName
 )
diff --git a/src/turbulenceModels/compressible/RAS/realizableKE/realizableKE.H b/src/turbulenceModels/compressible/RAS/realizableKE/realizableKE.H
index b173013a5885aae2b3fdccf2fdf2bc6c4f900877..c417fa5c4347e2529a26b0d03ee66c1eeb989607 100644
--- a/src/turbulenceModels/compressible/RAS/realizableKE/realizableKE.H
+++ b/src/turbulenceModels/compressible/RAS/realizableKE/realizableKE.H
@@ -129,7 +129,7 @@ public:
             const volScalarField& rho,
             const volVectorField& U,
             const surfaceScalarField& phi,
-            const basicThermo& thermophysicalModel,
+            const fluidThermo& thermophysicalModel,
             const word& turbulenceModelName = turbulenceModel::typeName,
             const word& modelName = typeName
         );
diff --git a/src/turbulenceModels/compressible/turbulenceModel/Make/options b/src/turbulenceModels/compressible/turbulenceModel/Make/options
index c3d7e278f098e7074a2f46878d8737f2091d3029..a3d25da57a978ab8d50c77a8462c8997483d1b5e 100644
--- a/src/turbulenceModels/compressible/turbulenceModel/Make/options
+++ b/src/turbulenceModels/compressible/turbulenceModel/Make/options
@@ -4,15 +4,15 @@ EXE_INC = \
     -I$(LIB_SRC)/turbulenceModels \
     -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \
-    -I$(LIB_SRC)/thermophysicalModels/basicSolidThermo/lnInclude \
-    -I$(LIB_SRC)/thermophysicalModels/solid/lnInclude
+    -I$(LIB_SRC)/thermophysicalModels/solidThermo/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/solidSpecie/lnInclude
 
 LIB_LIBS = \
-    -lbasicSolidThermo \
-    -lbasicThermophysicalModels \
+    -lsolidThermo \
+    -lfluidThermophysicalModels \
     -lspecie \
     -lfiniteVolume \
     -lmeshTools \
-    -lsolid \
+    -lsolidSpecie \
     -lradiationModels
 
diff --git a/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/externalWallHeatFluxTemperature/externalWallHeatFluxTemperatureFvPatchScalarField.C b/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/externalWallHeatFluxTemperature/externalWallHeatFluxTemperatureFvPatchScalarField.C
index 45825124f70801fd324ec2f4b991e06aeff54dbe..ba9416b6ed4a958e8c7b4705965464e48f5df1f4 100644
--- a/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/externalWallHeatFluxTemperature/externalWallHeatFluxTemperatureFvPatchScalarField.C
+++ b/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/externalWallHeatFluxTemperature/externalWallHeatFluxTemperatureFvPatchScalarField.C
@@ -199,7 +199,8 @@ void Foam::externalWallHeatFluxTemperatureFvPatchScalarField::updateCoeffs()
     }
 
     scalarField q(size(), 0.0);
-    scalarField KDelta(kappa(*this)*patch().deltaCoeffs());
+    scalarField KWall(kappa(*this));
+    scalarField KDelta(KWall*patch().deltaCoeffs());
 
     if (oldMode_ == fixedHeatFlux)
     {
@@ -239,7 +240,7 @@ void Foam::externalWallHeatFluxTemperatureFvPatchScalarField::updateCoeffs()
 
     if (debug)
     {
-        scalar Q = gSum(kappa(*this)*patch().magSf()*snGrad());
+        scalar Q = gSum(KWall*patch().magSf()*snGrad());
 
         Info<< patch().boundaryMesh().mesh().name() << ':'
             << patch().name() << ':'
diff --git a/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/temperatureCoupledBase/temperatureCoupledBase.C b/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/temperatureCoupledBase/temperatureCoupledBase.C
index 3579d15b6b8281ec2f85ef53e76afe4dfc5bca30..034cd50e3edb04b7c4ee0c6f3d696a19a98ee24c 100644
--- a/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/temperatureCoupledBase/temperatureCoupledBase.C
+++ b/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/temperatureCoupledBase/temperatureCoupledBase.C
@@ -27,7 +27,7 @@ License
 #include "volFields.H"
 #include "solidThermo.H"
 #include "turbulenceModel.H"
-#include "basicThermo.H"
+#include "fluidThermo.H"
 
 // * * * * * * * * * * * * * Static Member Data  * * * * * * * * * * * * * * //
 
@@ -40,7 +40,7 @@ namespace Foam
         4
     >::names[] =
     {
-        "basicThermo",
+        "fluidThermo",
         "solidThermo",
         "directionalSolidThermo",
         "lookup"
diff --git a/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/temperatureCoupledBase/temperatureCoupledBase.H b/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/temperatureCoupledBase/temperatureCoupledBase.H
index 8c3ec69615c2e0b0bf82f1f977a4bf5ec9c16fae..c0abdb8ef9b1e1992292d9a8b09f5d97bbab3b64 100644
--- a/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/temperatureCoupledBase/temperatureCoupledBase.H
+++ b/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/temperatureCoupledBase/temperatureCoupledBase.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -31,9 +31,9 @@ Description
         kappa:
 
     - 'lookup' : lookup volScalarField (or volSymmTensorField) with name
-    - 'basicThermo' : use basicThermo and default compressible::turbulenceModel
+    - 'fluidThermo' : use fluidThermo and default compressible::turbulenceModel
        to calculate kappa
-    - 'solidThermo' : use basicSolidThermo kappa()
+    - 'solidThermo' : use solidThermo kappa()
     - 'directionalSolidThermo' directionalKappa()
 
 SourceFiles
diff --git a/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/temperatureThermoBaffle1D/temperatureThermoBaffle1DFvPatchScalarField.H b/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/temperatureThermoBaffle1D/temperatureThermoBaffle1DFvPatchScalarField.H
index ffe88be3876b4a0b4e1f4781d0214eed390aac17..51222848474bafd14cad7e23766c3e4d311f91c9 100644
--- a/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/temperatureThermoBaffle1D/temperatureThermoBaffle1DFvPatchScalarField.H
+++ b/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/temperatureThermoBaffle1D/temperatureThermoBaffle1DFvPatchScalarField.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -81,7 +81,7 @@ class temperatureThermoBaffle1DFvPatchScalarField
             transportDict_(dict.subDict("transport")),
             radiationDict_(dict.subDict("radiation")),
             thermoDict_(dict.subDict("thermodynamics")),
-            densityDict_(dict.subDict("density"))
+            densityDict_(dict.subDict("equationOfState"))
         {}
 
 
diff --git a/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/temperatureThermoBaffle1D/temperatureThermoBaffle1DFvPatchScalarFields.C b/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/temperatureThermoBaffle1D/temperatureThermoBaffle1DFvPatchScalarFields.C
index 9590e35d82e2dae86d9073b90b6f955f893217b7..cc4da7852c5ce7ea818b787d6c856f945cef3af2 100644
--- a/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/temperatureThermoBaffle1D/temperatureThermoBaffle1DFvPatchScalarFields.C
+++ b/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/temperatureThermoBaffle1D/temperatureThermoBaffle1DFvPatchScalarFields.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -39,7 +39,7 @@ namespace compressible
 defineTemplateTypeNameAndDebugWithName
 (
     constSolid_temperatureThermoBaffle1DFvPatchScalarField,
-    "compressible::temperatureThermoBaffle1D<constSolidThermoPhysics>",
+    "compressible::temperatureThermoBaffle1D<hConstSolidThermoPhysics>",
     0
 );
 
@@ -52,7 +52,7 @@ addToPatchFieldRunTimeSelection
 defineTemplateTypeNameAndDebugWithName
 (
     expoSolid_temperatureThermoBaffle1DFvPatchScalarField,
-    "compressible::temperatureThermoBaffle1D<expoSolidThermoPhysics>",
+    "compressible::temperatureThermoBaffle1D<hExponentialSolidThermoPhysics>",
     0
 );
 
diff --git a/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/temperatureThermoBaffle1D/temperatureThermoBaffle1DFvPatchScalarFields.H b/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/temperatureThermoBaffle1D/temperatureThermoBaffle1DFvPatchScalarFields.H
index a85d32c32ba4adf199fe3a5cdaf86b4b8e78708b..428d54b827b0f515eb3bf19cafb3611d85686d7c 100644
--- a/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/temperatureThermoBaffle1D/temperatureThermoBaffle1DFvPatchScalarFields.H
+++ b/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/temperatureThermoBaffle1D/temperatureThermoBaffle1DFvPatchScalarFields.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -40,12 +40,12 @@ namespace compressible
 
     typedef temperatureThermoBaffle1DFvPatchScalarField
     <
-        constSolidThermoPhysics
+        hConstSolidThermoPhysics
     >constSolid_temperatureThermoBaffle1DFvPatchScalarField;
 
     typedef temperatureThermoBaffle1DFvPatchScalarField
     <
-        expoSolidThermoPhysics
+        hExponentialSolidThermoPhysics
     >expoSolid_temperatureThermoBaffle1DFvPatchScalarField;
 
 
diff --git a/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/turbulentHeatFluxTemperature/turbulentHeatFluxTemperatureFvPatchScalarField.H b/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/turbulentHeatFluxTemperature/turbulentHeatFluxTemperatureFvPatchScalarField.H
index 78f40e5a9d33653d95b86de4e518a515a6e4fbf3..254ed52b756f1ed0521f1d50b33514a6af9b6c89 100644
--- a/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/turbulentHeatFluxTemperature/turbulentHeatFluxTemperatureFvPatchScalarField.H
+++ b/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/turbulentHeatFluxTemperature/turbulentHeatFluxTemperatureFvPatchScalarField.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -36,7 +36,7 @@ Description
             type            compressible::turbulentHeatFluxTemperature;
             heatSource      flux;        // power [W]; flux [W/m2]
             q               uniform 10;  // heat power or flux
-            kappa           basicThermo; // calculate kappa=alphaEff*thermo.Cp
+            kappa           fluidThermo; // calculate kappa=alphaEff*thermo.Cp
             value           uniform 300; // initial temperature value
         }
 
diff --git a/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/turbulentTemperatureCoupledBaffleMixed/turbulentTemperatureCoupledBaffleMixedFvPatchScalarField.H b/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/turbulentTemperatureCoupledBaffleMixed/turbulentTemperatureCoupledBaffleMixedFvPatchScalarField.H
index 2703274ed3de46390b202c264764e163ad7f6bda..e9fc1f84aedd597d9414bcd5d40cecd4a30c164c 100644
--- a/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/turbulentTemperatureCoupledBaffleMixed/turbulentTemperatureCoupledBaffleMixedFvPatchScalarField.H
+++ b/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/turbulentTemperatureCoupledBaffleMixed/turbulentTemperatureCoupledBaffleMixedFvPatchScalarField.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -51,9 +51,9 @@ Description
     Note: kappa : heat conduction at patch. Gets supplied how to lookup
         calculate kappa:
     - 'lookup' : lookup volScalarField (or volSymmTensorField) with name
-    - 'basicThermo' : use basicThermo and compressible::RASmodel to calculate
+    - 'fluidThermo' : use fluidThermo and compressible::RASmodel to calculate
         kappa
-    - 'solidThermo' : use basicSolidThermo kappa()
+    - 'solidThermo' : use solidThermo kappa()
     - 'directionalSolidThermo' directionalKappa()
 
     Note: runs in parallel with arbitrary decomposition. Uses mapped
diff --git a/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/turbulentTemperatureRadCoupledMixed/turbulentTemperatureRadCoupledMixedFvPatchScalarField.H b/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/turbulentTemperatureRadCoupledMixed/turbulentTemperatureRadCoupledMixedFvPatchScalarField.H
index 99f93ee8dd226f159d68fd9cb27c92878f4a4b7d..1c9bd5ebf3f1f5b032f8834605537261c5660eba 100644
--- a/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/turbulentTemperatureRadCoupledMixed/turbulentTemperatureRadCoupledMixedFvPatchScalarField.H
+++ b/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/turbulentTemperatureRadCoupledMixed/turbulentTemperatureRadCoupledMixedFvPatchScalarField.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -48,8 +48,8 @@ Description
             lookup/calculate
      kappa:
     - 'lookup' : lookup volScalarField (or volSymmTensorField) with name
-    - 'basicThermo' : use basicThermo and compressible::RASmodel to calculate K
-    - 'solidThermo' : use basicSolidThermo kappa()
+    - 'fluidThermo' : use fluidThermo and compressible::RASmodel to calculate K
+    - 'solidThermo' : use solidThermo kappa()
     - 'directionalSolidThermo' directionalKappa()
 
     Note: runs in parallel with arbitrary decomposition. Uses mapped
diff --git a/src/turbulenceModels/compressible/turbulenceModel/laminar/laminar.C b/src/turbulenceModels/compressible/turbulenceModel/laminar/laminar.C
index bb538f7b219fc602388eb5862f85931b2e9b55f4..4424aaa88f71ebe69112dd4e6fe2cacee4d9efe0 100644
--- a/src/turbulenceModels/compressible/turbulenceModel/laminar/laminar.C
+++ b/src/turbulenceModels/compressible/turbulenceModel/laminar/laminar.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -51,7 +51,7 @@ laminar::laminar
     const volScalarField& rho,
     const volVectorField& U,
     const surfaceScalarField& phi,
-    const basicThermo& thermophysicalModel,
+    const fluidThermo& thermophysicalModel,
     const word& turbulenceModelName
 )
 :
@@ -66,7 +66,7 @@ autoPtr<laminar> laminar::New
     const volScalarField& rho,
     const volVectorField& U,
     const surfaceScalarField& phi,
-    const basicThermo& thermophysicalModel,
+    const fluidThermo& thermophysicalModel,
     const word& turbulenceModelName
 )
 {
diff --git a/src/turbulenceModels/compressible/turbulenceModel/laminar/laminar.H b/src/turbulenceModels/compressible/turbulenceModel/laminar/laminar.H
index 776ab8bc772b7fe0728b23e8e037ff9e4da5b893..3b7802b6c522612754851b72d8a3daa9528f5e71 100644
--- a/src/turbulenceModels/compressible/turbulenceModel/laminar/laminar.H
+++ b/src/turbulenceModels/compressible/turbulenceModel/laminar/laminar.H
@@ -66,7 +66,7 @@ public:
             const volScalarField& rho,
             const volVectorField& U,
             const surfaceScalarField& phi,
-            const basicThermo& thermophysicalModel,
+            const fluidThermo& thermophysicalModel,
             const word& turbulenceModelName = turbulenceModel::typeName
         );
 
@@ -79,7 +79,7 @@ public:
             const volScalarField& rho,
             const volVectorField& U,
             const surfaceScalarField& phi,
-            const basicThermo& thermophysicalModel,
+            const fluidThermo& thermophysicalModel,
             const word& turbulenceModelName = turbulenceModel::typeName
         );
 
diff --git a/src/turbulenceModels/compressible/turbulenceModel/turbulenceModel.C b/src/turbulenceModels/compressible/turbulenceModel/turbulenceModel.C
index 111cd2a5369ecd549fc181da603926b2f02aeeb6..455ff9a72d1b7ac39f36c88fe7e1caa391040947 100644
--- a/src/turbulenceModels/compressible/turbulenceModel/turbulenceModel.C
+++ b/src/turbulenceModels/compressible/turbulenceModel/turbulenceModel.C
@@ -47,7 +47,7 @@ turbulenceModel::turbulenceModel
     const volScalarField& rho,
     const volVectorField& U,
     const surfaceScalarField& phi,
-    const basicThermo& thermophysicalModel,
+    const fluidThermo& thermophysicalModel,
     const word& turbulenceModelName
 )
 :
@@ -81,7 +81,7 @@ autoPtr<turbulenceModel> turbulenceModel::New
     const volScalarField& rho,
     const volVectorField& U,
     const surfaceScalarField& phi,
-    const basicThermo& thermophysicalModel,
+    const fluidThermo& thermophysicalModel,
     const word& turbulenceModelName
 )
 {
@@ -114,7 +114,7 @@ autoPtr<turbulenceModel> turbulenceModel::New
         (
             "turbulenceModel::New(const volScalarField&, "
             "const volVectorField&, const surfaceScalarField&, "
-            "basicThermo&, const word&)"
+            "fluidThermo&, const word&)"
         )   << "Unknown turbulenceModel type "
             << modelType << nl << nl
             << "Valid turbulenceModel types:" << endl
diff --git a/src/turbulenceModels/compressible/turbulenceModel/turbulenceModel.H b/src/turbulenceModels/compressible/turbulenceModel/turbulenceModel.H
index 790e6e99e44a02a7669c2a9050e2c89f1478b50d..e6d8bf290fdfbef40eccb24596df3f01596761ef 100644
--- a/src/turbulenceModels/compressible/turbulenceModel/turbulenceModel.H
+++ b/src/turbulenceModels/compressible/turbulenceModel/turbulenceModel.H
@@ -48,7 +48,7 @@ SourceFiles
 #include "volFieldsFwd.H"
 #include "surfaceFieldsFwd.H"
 #include "fvMatricesFwd.H"
-#include "basicThermo.H"
+#include "fluidThermo.H"
 #include "nearWallDist.H"
 #include "autoPtr.H"
 #include "runTimeSelectionTables.H"
@@ -84,7 +84,7 @@ protected:
         const volVectorField& U_;
         const surfaceScalarField& phi_;
 
-        const basicThermo& thermophysicalModel_;
+        const fluidThermo& thermophysicalModel_;
 
         //- Near wall distance boundary field
         nearWallDist y_;
@@ -118,7 +118,7 @@ public:
                 const volScalarField& rho,
                 const volVectorField& U,
                 const surfaceScalarField& phi,
-                const basicThermo& thermoPhysicalModel,
+                const fluidThermo& thermoPhysicalModel,
                 const word& turbulenceModelName
             ),
             (rho, U, phi, thermoPhysicalModel, turbulenceModelName)
@@ -133,7 +133,7 @@ public:
             const volScalarField& rho,
             const volVectorField& U,
             const surfaceScalarField& phi,
-            const basicThermo& thermoPhysicalModel,
+            const fluidThermo& thermoPhysicalModel,
             const word& turbulenceModelName = typeName
         );
 
@@ -146,7 +146,7 @@ public:
             const volScalarField& rho,
             const volVectorField& U,
             const surfaceScalarField& phi,
-            const basicThermo& thermoPhysicalModel,
+            const fluidThermo& thermoPhysicalModel,
             const word& turbulenceModelName = typeName
         );
 
@@ -177,7 +177,7 @@ public:
         }
 
         //- Access function to thermophysical model
-        const basicThermo& thermo() const
+        const fluidThermo& thermo() const
         {
              return thermophysicalModel_;
         }
diff --git a/src/turbulenceModels/derivedFvPatchFields/Make/options b/src/turbulenceModels/derivedFvPatchFields/Make/options
index 7e9faff242b4df03771305a74ebf50972a9c85d3..66712d18ee2e6e3ee8805877897696f2aa6e8f1f 100644
--- a/src/turbulenceModels/derivedFvPatchFields/Make/options
+++ b/src/turbulenceModels/derivedFvPatchFields/Make/options
@@ -9,7 +9,7 @@ EXE_INC = \
 
 LIB_LIBS = \
     -lfiniteVolume \
-    -lbasicThermophysicalModels \
+    -lfluidThermophysicalModels \
     -lspecie \
     -lmeshTools \
     -lcompressibleTurbulenceModel \
diff --git a/src/turbulenceModels/incompressible/LES/GenEddyVisc/GenEddyVisc.H b/src/turbulenceModels/incompressible/LES/GenEddyVisc/GenEddyVisc.H
index 2882257c8407848746a52442889ec92a80256293..e1dc9c2b373c13805daf2229796d3ec91457d1ff 100644
--- a/src/turbulenceModels/incompressible/LES/GenEddyVisc/GenEddyVisc.H
+++ b/src/turbulenceModels/incompressible/LES/GenEddyVisc/GenEddyVisc.H
@@ -54,7 +54,7 @@ namespace LESModels
 {
 
 /*---------------------------------------------------------------------------*\
-                           Class GenEddyVisc Declaration
+                         Class GenEddyVisc Declaration
 \*---------------------------------------------------------------------------*/
 
 class GenEddyVisc
@@ -107,7 +107,21 @@ public:
         //- Return sub-grid disipation rate
         virtual tmp<volScalarField> epsilon() const
         {
-            return ce_*k()*sqrt(k())/delta();
+            return tmp<volScalarField>
+            (
+                new volScalarField
+                (
+                    IOobject
+                    (   
+                        "epsilon",
+                        runTime_.timeName(),
+                        mesh_,
+                        IOobject::NO_READ,
+                        IOobject::NO_WRITE
+                    ),
+                    ce_*k()*sqrt(k())/delta()
+                )
+            );
         }
 
         //- Return the SGS viscosity.
diff --git a/src/turbulenceModels/incompressible/LES/GenSGSStress/GenSGSStress.H b/src/turbulenceModels/incompressible/LES/GenSGSStress/GenSGSStress.H
index 4967b482bb1896dce1fcbf43bf356c3a6ca8c960..4f24f7913586eb203764f87b70db333395408696 100644
--- a/src/turbulenceModels/incompressible/LES/GenSGSStress/GenSGSStress.H
+++ b/src/turbulenceModels/incompressible/LES/GenSGSStress/GenSGSStress.H
@@ -55,7 +55,7 @@ namespace LESModels
 {
 
 /*---------------------------------------------------------------------------*\
-                           Class GenSGSStress Declaration
+                        Class GenSGSStress Declaration
 \*---------------------------------------------------------------------------*/
 
 class GenSGSStress
@@ -107,14 +107,43 @@ public:
         //- Return the SGS turbulent kinetic energy.
         virtual tmp<volScalarField> k() const
         {
-            return 0.5*tr(B_);
+            return tmp<volScalarField>
+            (
+                new volScalarField
+                (
+                    IOobject
+                    (   
+                        "k",
+                        runTime_.timeName(),
+                        mesh_,
+                        IOobject::NO_READ,
+                        IOobject::NO_WRITE
+                    ),
+                    0.5*tr(B_)
+                )
+            );
         }
 
         //- Return the SGS turbulent dissipation.
         virtual tmp<volScalarField> epsilon() const
         {
             const volScalarField K(k());
-            return ce_*K*sqrt(K)/delta();
+            
+            return tmp<volScalarField>
+            (
+                new volScalarField
+                (
+                    IOobject
+                    (   
+                        "epsilon",
+                        runTime_.timeName(),
+                        mesh_,
+                        IOobject::NO_READ,
+                        IOobject::NO_WRITE
+                    ),
+                    ce_*K*sqrt(K)/delta()
+                )
+            );
         }
 
         //- Return the SGS viscosity.
diff --git a/tutorials/combustion/chemFoam/nc7h16/validation/createGraph b/tutorials/combustion/chemFoam/nc7h16/validation/createGraph
old mode 100644
new mode 100755
diff --git a/tutorials/combustion/fireFoam/les/oppositeBurningPanels/0/T b/tutorials/combustion/fireFoam/les/oppositeBurningPanels/0/T
index 5e07713cdcc87ef01fe2416f7c234fdcb28d80e7..02752e8e3dd247b3f4f09c732a5deb9db986820e 100644
--- a/tutorials/combustion/fireFoam/les/oppositeBurningPanels/0/T
+++ b/tutorials/combustion/fireFoam/les/oppositeBurningPanels/0/T
@@ -50,7 +50,7 @@ boundaryField
     {
         type            compressible::turbulentTemperatureRadCoupledMixed;
         Tnbr            T;
-        kappa           basicThermo;
+        kappa           fluidThermo;
         QrNbr           none;
         Qr              Qr;
         kappaName       none;
diff --git a/tutorials/combustion/fireFoam/les/oppositeBurningPanels/constant/panelRegion/chemistryProperties b/tutorials/combustion/fireFoam/les/oppositeBurningPanels/constant/panelRegion/chemistryProperties
index b50eb1151225afc2a28ab2997263bbd78dab80fe..18ee08d01e88e10a408553cb305580bc8ad126ff 100644
--- a/tutorials/combustion/fireFoam/les/oppositeBurningPanels/constant/panelRegion/chemistryProperties
+++ b/tutorials/combustion/fireFoam/les/oppositeBurningPanels/constant/panelRegion/chemistryProperties
@@ -15,7 +15,7 @@ FoamFile
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-solidChemistryModel  ODESolidChemistryModel<constSolidThermoPhysics>;
+solidChemistryModel  ODESolidChemistryModel<hConstSolidThermoPhysics>;
 
 gasThermoModel      gasThermoPhysics;
 
diff --git a/tutorials/combustion/fireFoam/les/oppositeBurningPanels/constant/panelRegion/thermophysicalProperties b/tutorials/combustion/fireFoam/les/oppositeBurningPanels/constant/panelRegion/thermophysicalProperties
index 3642adb8f033346c3f76c15e48b7a28726202b5a..a70c4ca65c1958c83afe164095a82df2810e2227 100644
--- a/tutorials/combustion/fireFoam/les/oppositeBurningPanels/constant/panelRegion/thermophysicalProperties
+++ b/tutorials/combustion/fireFoam/les/oppositeBurningPanels/constant/panelRegion/thermophysicalProperties
@@ -14,7 +14,7 @@ FoamFile
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-thermoType heSolidThermo<reactingSolidMixture<constIsoSolidTransport<constSolidRad<specieThermo<constSolidThermo<constRho>,sensibleEnthalpy>>>>>;
+thermoType heSolidThermo<reactingSolidMixture<constIsoSolidTransport<constSolidRad<specieThermo<hConstThermo<rhoConst>,sensibleEnthalpy>>>>>;
 
 solidComponents
 (
@@ -43,7 +43,7 @@ vCoeffs
         Cp          696;
         Hf          -1.41e6;
     }
-    density
+    equationOfState
     {
         rho         114.7;
     }
@@ -71,7 +71,7 @@ charCoeffs
         Cp          611;
         Hf          0;
     }
-    density
+    equationOfState
     {
         rho         11.5;
     }
diff --git a/tutorials/combustion/fireFoam/les/oppositeBurningPanels/constant/polyMesh/boundary b/tutorials/combustion/fireFoam/les/oppositeBurningPanels/constant/polyMesh/boundary
index ae18d627f7e32578e3b4fbdec4d8058c0193dbfc..c6cf295f75a4510b939dd192871414d8955287a5 100644
--- a/tutorials/combustion/fireFoam/les/oppositeBurningPanels/constant/polyMesh/boundary
+++ b/tutorials/combustion/fireFoam/les/oppositeBurningPanels/constant/polyMesh/boundary
@@ -47,3414 +47,3414 @@ FoamFile
         offsets         nonuniform List<vector> 
 3408
 (
-(-2.77556e-17 0 5.55112e-17)
-(-2.77556e-17 -6.93889e-18 0)
-(-5.55112e-17 0 0)
-(0 -1.38778e-17 0)
-(2.77556e-17 -2.77556e-17 0)
-(2.77556e-17 0 0)
-(2.77556e-17 -2.77556e-17 0)
-(0 0 0)
-(0 0 5.55112e-17)
-(-2.77556e-17 0 5.55112e-17)
-(-2.77556e-17 -5.55112e-17 5.55112e-17)
-(-2.77556e-17 0 5.55112e-17)
-(0 -5.55112e-17 5.55112e-17)
-(2.77556e-17 1.11022e-16 0)
-(2.77556e-17 0 0)
-(-2.77556e-17 -1.11022e-16 5.55112e-17)
-(-2.77556e-17 0 0)
-(0 -1.11022e-16 -5.55112e-17)
-(0 -1.11022e-16 -5.55112e-17)
-(0 -1.11022e-16 -5.55112e-17)
-(2.77556e-17 0 -5.55112e-17)
-(-2.77556e-17 -2.22045e-16 -5.55112e-17)
-(2.77556e-17 1.11022e-16 -5.55112e-17)
-(-2.77556e-17 0 -5.55112e-17)
-(0 0 -5.55112e-17)
-(-2.77556e-17 -1.11022e-16 0)
-(0 -1.11022e-16 -5.55112e-17)
-(-2.77556e-17 -1.11022e-16 0)
-(-2.77556e-17 -2.22045e-16 0)
-(-2.77556e-17 -2.22045e-16 0)
-(0 0 0)
-(0 -2.22045e-16 0)
-(0 0 5.55112e-17)
-(0 2.22045e-16 0)
-(0 -2.22045e-16 0)
-(0 0 0)
-(0 0 0)
-(0 -2.22045e-16 5.55112e-17)
-(-5.55112e-17 0 5.55112e-17)
-(0 0 0)
-(0 -4.44089e-16 5.55112e-17)
-(0 0 0)
-(0 0 0)
-(0 0 0)
-(0 -2.22045e-16 0)
-(2.77556e-17 2.22045e-16 5.55112e-17)
-(0 0 0)
-(0 -2.22045e-16 0)
-(0 4.44089e-16 0)
-(0 -2.22045e-16 5.55112e-17)
-(0 -4.44089e-16 5.55112e-17)
-(0 0 0)
-(0 -4.44089e-16 0)
-(0 -4.44089e-16 0)
-(0 2.22045e-16 5.55112e-17)
-(0 0 0)
-(0 0 0)
-(0 4.44089e-16 0)
-(0 -2.22045e-16 5.55112e-17)
-(-2.77556e-17 0 5.55112e-17)
-(0 0 1.11022e-16)
-(0 0 -5.55112e-17)
-(0 -4.44089e-16 0)
-(0 0 0)
-(2.77556e-17 0 -5.55112e-17)
-(0 0 0)
-(0 0 0)
-(0 0 0)
-(0 -4.44089e-16 1.11022e-16)
-(-2.77556e-17 0 5.55112e-17)
-(0 0 -5.55112e-17)
-(2.77556e-17 0 2.77556e-17)
-(0 -1.38778e-17 2.77556e-17)
-(0 1.38778e-17 -5.55112e-17)
-(-2.77556e-17 -1.38778e-17 5.55112e-17)
-(-2.77556e-17 -2.77556e-17 2.77556e-17)
-(-2.77556e-17 -2.77556e-17 2.77556e-17)
-(-2.77556e-17 -2.77556e-17 2.77556e-17)
-(0 0 0)
-(-2.77556e-17 0 -2.77556e-17)
-(-2.77556e-17 -1.11022e-16 2.77556e-17)
-(-2.77556e-17 0 2.77556e-17)
-(-2.77556e-17 -5.55112e-17 2.77556e-17)
-(-2.77556e-17 -1.66533e-16 -2.77556e-17)
-(-2.77556e-17 -5.55112e-17 2.77556e-17)
-(-2.77556e-17 -5.55112e-17 2.77556e-17)
-(0 2.22045e-16 2.77556e-17)
-(0 -1.11022e-16 2.77556e-17)
-(0 0 2.77556e-17)
-(0 0 2.77556e-17)
-(0 0 2.77556e-17)
-(0 0 2.77556e-17)
-(0 -2.22045e-16 5.55112e-17)
-(0 -2.22045e-16 2.77556e-17)
-(0 -4.44089e-16 5.55112e-17)
-(0 0 2.77556e-17)
-(0 0 2.77556e-17)
-(0 0 2.77556e-17)
-(0 0 2.77556e-17)
-(0 0 2.77556e-17)
-(0 2.22045e-16 2.77556e-17)
-(-2.77556e-17 -2.22045e-16 5.55112e-17)
-(-2.77556e-17 0 0)
-(-2.77556e-17 2.22045e-16 0)
-(-2.77556e-17 2.22045e-16 0)
-(-2.77556e-17 0 0)
-(-2.77556e-17 2.22045e-16 0)
-(-2.77556e-17 0 0)
-(-2.77556e-17 2.22045e-16 -2.77556e-17)
-(-2.77556e-17 0 2.77556e-17)
-(-2.77556e-17 0 5.55112e-17)
-(-2.77556e-17 -2.22045e-16 -2.77556e-17)
-(-2.77556e-17 0 0)
-(-2.77556e-17 -2.22045e-16 0)
-(-2.77556e-17 -2.22045e-16 0)
-(-2.77556e-17 -2.22045e-16 0)
-(-5.55112e-17 -2.22045e-16 5.55112e-17)
-(-2.77556e-17 -2.22045e-16 0)
-(-2.77556e-17 -2.22045e-16 5.55112e-17)
-(-2.77556e-17 2.22045e-16 5.55112e-17)
-(-2.77556e-17 0 -2.77556e-17)
-(-2.77556e-17 -2.22045e-16 -2.77556e-17)
-(-2.77556e-17 -4.44089e-16 5.55112e-17)
-(-2.77556e-17 0 0)
-(-2.77556e-17 0 0)
-(-5.55112e-17 2.22045e-16 2.77556e-17)
-(-2.77556e-17 2.22045e-16 0)
-(-2.77556e-17 0 0)
-(-2.77556e-17 0 5.55112e-17)
-(-2.77556e-17 2.22045e-16 -2.77556e-17)
-(2.77556e-17 0 -5.55112e-17)
-(-2.77556e-17 4.44089e-16 -2.77556e-17)
-(0 -4.44089e-16 2.77556e-17)
-(-2.77556e-17 0 0)
-(-2.77556e-17 -4.44089e-16 0)
-(0 0 -2.77556e-17)
-(-2.77556e-17 0 0)
-(-2.77556e-17 0 0)
-(-2.77556e-17 4.44089e-16 0)
-(-2.77556e-17 0 -2.77556e-17)
-(2.77556e-17 4.44089e-16 -5.55112e-17)
-(0 0 2.77556e-17)
-(0 -1.73472e-18 2.77556e-17)
-(-2.77556e-17 0 2.77556e-17)
-(0 1.38778e-17 0)
-(0 -1.38778e-17 0)
-(-2.77556e-17 0 2.77556e-17)
-(-2.77556e-17 -2.77556e-17 2.77556e-17)
-(-2.77556e-17 0 2.77556e-17)
-(-2.77556e-17 0 -2.77556e-17)
-(0 -5.55112e-17 0)
-(-2.77556e-17 -5.55112e-17 2.77556e-17)
-(-2.77556e-17 0 2.77556e-17)
-(-2.77556e-17 5.55112e-17 2.77556e-17)
-(0 -5.55112e-17 0)
-(-2.77556e-17 0 0)
-(-2.77556e-17 5.55112e-17 0)
-(0 -1.11022e-16 0)
-(0 0 2.77556e-17)
-(-2.77556e-17 0 0)
-(-2.77556e-17 1.11022e-16 0)
-(-2.77556e-17 0 0)
-(2.77556e-17 0 0)
-(0 -1.11022e-16 2.77556e-17)
-(2.77556e-17 0 0)
-(0 -1.11022e-16 2.77556e-17)
-(-2.77556e-17 0 0)
-(-2.77556e-17 0 0)
-(-2.77556e-17 0 0)
-(-2.77556e-17 0 0)
-(0 -1.11022e-16 2.77556e-17)
-(0 0 2.77556e-17)
-(2.77556e-17 0 -5.55112e-17)
-(2.77556e-17 2.22045e-16 2.77556e-17)
-(0 -2.22045e-16 0)
-(2.77556e-17 0 2.77556e-17)
-(2.77556e-17 0 2.77556e-17)
-(2.77556e-17 -2.22045e-16 2.77556e-17)
-(2.77556e-17 -2.22045e-16 2.77556e-17)
-(0 0 0)
-(2.77556e-17 -2.22045e-16 -2.77556e-17)
-(2.77556e-17 -2.22045e-16 2.77556e-17)
-(0 0 0)
-(2.77556e-17 0 2.77556e-17)
-(2.77556e-17 -2.22045e-16 2.77556e-17)
-(2.77556e-17 -2.22045e-16 2.77556e-17)
-(2.77556e-17 -2.22045e-16 2.77556e-17)
-(0 0 5.55112e-17)
-(2.77556e-17 0 2.77556e-17)
-(2.77556e-17 0 -5.55112e-17)
-(2.77556e-17 0 -5.55112e-17)
-(0 0 0)
-(0 0 0)
-(2.77556e-17 -2.22045e-16 -5.55112e-17)
-(2.77556e-17 0 2.77556e-17)
-(2.77556e-17 2.22045e-16 2.77556e-17)
-(0 0 5.55112e-17)
-(2.77556e-17 0 2.77556e-17)
-(2.77556e-17 0 2.77556e-17)
-(2.77556e-17 4.44089e-16 2.77556e-17)
-(0 0 0)
-(2.77556e-17 0 0)
-(0 -4.44089e-16 0)
-(0 -4.44089e-16 2.77556e-17)
-(2.77556e-17 0 2.77556e-17)
-(2.77556e-17 0 2.77556e-17)
-(2.77556e-17 4.44089e-16 -5.55112e-17)
-(2.77556e-17 0 2.77556e-17)
-(2.77556e-17 0 2.77556e-17)
-(2.77556e-17 0 2.77556e-17)
-(0 4.44089e-16 0)
-(2.77556e-17 0 0)
-(0 -4.44089e-16 2.77556e-17)
-(2.77556e-17 -1.73472e-18 0)
-(0 0 -2.77556e-17)
-(0 0 2.77556e-17)
-(-5.55112e-17 -1.38778e-17 2.77556e-17)
-(-2.77556e-17 0 0)
-(-2.77556e-17 0 0)
-(-2.77556e-17 -5.55112e-17 0)
-(2.77556e-17 2.77556e-17 0)
-(-5.55112e-17 0 2.77556e-17)
-(0 -5.55112e-17 -2.77556e-17)
-(0 5.55112e-17 -2.77556e-17)
-(0 0 -2.77556e-17)
-(-5.55112e-17 -2.22045e-16 2.77556e-17)
-(5.55112e-17 5.55112e-17 -5.55112e-17)
-(5.55112e-17 0 -5.55112e-17)
-(2.77556e-17 2.22045e-16 -2.77556e-17)
-(-2.77556e-17 -1.11022e-16 5.55112e-17)
-(-2.77556e-17 -1.11022e-16 0)
-(-2.77556e-17 -1.11022e-16 0)
-(-2.77556e-17 -1.11022e-16 0)
-(0 -1.11022e-16 5.55112e-17)
-(0 -1.11022e-16 0)
-(0 -1.11022e-16 5.55112e-17)
-(0 -1.11022e-16 0)
-(-2.77556e-17 -1.11022e-16 0)
-(0 0 -2.77556e-17)
-(-2.77556e-17 -1.11022e-16 0)
-(0 1.11022e-16 -2.77556e-17)
-(-2.77556e-17 -2.22045e-16 5.55112e-17)
-(-2.77556e-17 -4.44089e-16 5.55112e-17)
-(2.77556e-17 2.22045e-16 -2.77556e-17)
-(-2.77556e-17 -2.22045e-16 0)
-(0 0 0)
-(-2.77556e-17 0 0)
-(-2.77556e-17 0 0)
-(-2.77556e-17 0 0)
-(-2.77556e-17 -2.22045e-16 0)
-(-5.55112e-17 -2.22045e-16 2.77556e-17)
-(0 0 -2.77556e-17)
-(2.77556e-17 4.44089e-16 -2.77556e-17)
-(-5.55112e-17 -4.44089e-16 2.77556e-17)
-(-2.77556e-17 -2.22045e-16 0)
-(-2.77556e-17 -2.22045e-16 0)
-(-2.77556e-17 -2.22045e-16 0)
-(-2.77556e-17 0 0)
-(-2.77556e-17 -2.22045e-16 -2.77556e-17)
-(-2.77556e-17 -6.66134e-16 0)
-(2.77556e-17 6.66134e-16 -2.77556e-17)
-(2.77556e-17 6.66134e-16 -2.77556e-17)
-(-5.55112e-17 -4.44089e-16 2.77556e-17)
-(0 0 0)
-(2.77556e-17 2.22045e-16 -2.77556e-17)
-(-2.77556e-17 0 0)
-(-2.77556e-17 0 0)
-(-2.77556e-17 4.44089e-16 -2.77556e-17)
-(-2.77556e-17 -2.22045e-16 0)
-(-2.77556e-17 -2.22045e-16 0)
-(2.77556e-17 4.44089e-16 -2.77556e-17)
-(-5.55112e-17 -4.44089e-16 2.77556e-17)
-(5.55112e-17 4.44089e-16 -2.77556e-17)
-(0 0 0)
-(0 4.44089e-16 0)
-(-2.77556e-17 0 0)
-(-2.77556e-17 -4.44089e-16 0)
-(2.77556e-17 8.88178e-16 -2.77556e-17)
-(-2.77556e-17 -4.44089e-16 0)
-(-2.77556e-17 -4.44089e-16 0)
-(-2.77556e-17 0 0)
-(0 4.44089e-16 0)
-(5.55112e-17 8.88178e-16 -2.77556e-17)
-(0 0 0)
-(-2.77556e-17 1.73472e-18 2.77556e-17)
-(0 6.93889e-18 -1.38778e-17)
-(-2.77556e-17 1.38778e-17 1.38778e-17)
-(2.77556e-17 -1.38778e-17 1.38778e-17)
-(0 -2.77556e-17 1.38778e-17)
-(0 0 1.38778e-17)
-(0 0 1.38778e-17)
-(-2.77556e-17 -5.55112e-17 1.38778e-17)
-(2.77556e-17 5.55112e-17 1.38778e-17)
-(-2.77556e-17 -1.11022e-16 2.77556e-17)
-(-2.77556e-17 -5.55112e-17 2.77556e-17)
-(-2.77556e-17 -1.11022e-16 2.77556e-17)
-(2.77556e-17 0 1.38778e-17)
-(-2.77556e-17 -5.55112e-17 4.16334e-17)
-(-2.77556e-17 -1.66533e-16 4.16334e-17)
-(0 0 1.38778e-17)
-(-2.77556e-17 0 1.38778e-17)
-(0 -1.11022e-16 1.38778e-17)
-(0 -1.11022e-16 1.38778e-17)
-(0 0 1.38778e-17)
-(-2.77556e-17 -1.11022e-16 1.38778e-17)
-(-2.77556e-17 0 1.38778e-17)
-(-2.77556e-17 1.11022e-16 1.38778e-17)
-(-2.77556e-17 0 1.38778e-17)
-(0 0 1.38778e-17)
-(-2.77556e-17 2.22045e-16 1.38778e-17)
-(0 -2.22045e-16 1.38778e-17)
-(-2.77556e-17 -2.22045e-16 1.38778e-17)
-(-2.77556e-17 -1.11022e-16 1.38778e-17)
-(-2.77556e-17 0 1.38778e-17)
-(-5.55112e-17 -2.22045e-16 2.77556e-17)
-(-2.77556e-17 0 2.77556e-17)
-(2.77556e-17 2.22045e-16 1.38778e-17)
-(-2.77556e-17 -2.22045e-16 2.77556e-17)
-(-2.77556e-17 -2.22045e-16 2.77556e-17)
-(-2.77556e-17 0 2.77556e-17)
-(-2.77556e-17 0 2.77556e-17)
-(2.77556e-17 0 1.38778e-17)
-(-5.55112e-17 0 2.77556e-17)
-(-5.55112e-17 -2.22045e-16 2.77556e-17)
-(2.77556e-17 2.22045e-16 1.38778e-17)
-(-2.77556e-17 0 2.77556e-17)
-(-2.77556e-17 0 2.77556e-17)
-(-2.77556e-17 -2.22045e-16 2.77556e-17)
-(-2.77556e-17 0 2.77556e-17)
-(0 0 2.77556e-17)
-(-2.77556e-17 0 2.77556e-17)
-(-5.55112e-17 -2.22045e-16 2.77556e-17)
-(-5.55112e-17 0 2.77556e-17)
-(2.77556e-17 2.22045e-16 1.38778e-17)
-(0 0 1.38778e-17)
-(-5.55112e-17 -8.88178e-16 2.77556e-17)
-(-2.77556e-17 -2.22045e-16 2.77556e-17)
-(-2.77556e-17 0 2.77556e-17)
-(0 2.22045e-16 2.77556e-17)
-(-2.77556e-17 0 2.77556e-17)
-(-2.77556e-17 -4.44089e-16 2.77556e-17)
-(-5.55112e-17 -2.22045e-16 2.77556e-17)
-(2.77556e-17 -2.22045e-16 1.38778e-17)
-(2.77556e-17 0 0)
-(0 -4.44089e-16 1.38778e-17)
-(0 -4.44089e-16 2.77556e-17)
-(-2.77556e-17 0 2.77556e-17)
-(-2.77556e-17 0 2.77556e-17)
-(-2.77556e-17 0 4.16334e-17)
-(-2.77556e-17 0 2.77556e-17)
-(-2.77556e-17 0 2.77556e-17)
-(-2.77556e-17 0 2.77556e-17)
-(0 0 1.38778e-17)
-(2.77556e-17 4.44089e-16 0)
-(0 4.44089e-16 2.77556e-17)
-(-2.77556e-17 0 6.93889e-18)
-(0 0 6.93889e-18)
-(-2.77556e-17 1.38778e-17 -6.93889e-18)
-(0 -1.38778e-17 6.93889e-18)
-(0 2.77556e-17 0)
-(0 0 0)
-(0 0 0)
-(-2.77556e-17 -5.55112e-17 6.93889e-18)
-(0 0 6.93889e-18)
-(-5.55112e-17 -1.11022e-16 1.38778e-17)
-(-5.55112e-17 -1.11022e-16 1.38778e-17)
-(-5.55112e-17 -1.11022e-16 1.38778e-17)
-(0 5.55112e-17 6.93889e-18)
-(0 5.55112e-17 -6.93889e-18)
-(0 5.55112e-17 -6.93889e-18)
-(0 0 6.93889e-18)
-(0 0 0)
-(0 0 0)
-(0 0 0)
-(0 -1.11022e-16 0)
-(0 -1.11022e-16 0)
-(0 -1.11022e-16 0)
-(0 1.11022e-16 0)
-(0 -1.11022e-16 0)
-(0 0 0)
-(0 0 6.93889e-18)
-(0 0 0)
-(0 0 6.93889e-18)
-(0 0 0)
-(0 -2.22045e-16 0)
-(0 -2.22045e-16 6.93889e-18)
-(-2.77556e-17 -2.22045e-16 6.93889e-18)
-(-2.77556e-17 -2.22045e-16 6.93889e-18)
-(-2.77556e-17 0 6.93889e-18)
-(-2.77556e-17 -2.22045e-16 6.93889e-18)
-(-2.77556e-17 -4.44089e-16 6.93889e-18)
-(-2.77556e-17 -2.22045e-16 6.93889e-18)
-(0 -2.22045e-16 6.93889e-18)
-(-2.77556e-17 -4.44089e-16 6.93889e-18)
-(2.77556e-17 0 0)
-(0 2.22045e-16 6.93889e-18)
-(-2.77556e-17 0 6.93889e-18)
-(-2.77556e-17 -2.22045e-16 6.93889e-18)
-(-2.77556e-17 -2.22045e-16 6.93889e-18)
-(-2.77556e-17 -2.22045e-16 6.93889e-18)
-(0 0 0)
-(-2.77556e-17 -2.22045e-16 6.93889e-18)
-(0 0 6.93889e-18)
-(0 0 6.93889e-18)
-(0 -2.22045e-16 6.93889e-18)
-(0 0 0)
-(0 -4.44089e-16 6.93889e-18)
-(-2.77556e-17 0 6.93889e-18)
-(-2.77556e-17 -2.22045e-16 6.93889e-18)
-(-2.77556e-17 2.22045e-16 6.93889e-18)
-(-2.77556e-17 -2.22045e-16 6.93889e-18)
-(-2.77556e-17 -2.22045e-16 6.93889e-18)
-(2.77556e-17 6.66134e-16 0)
-(0 2.22045e-16 6.93889e-18)
-(0 4.44089e-16 6.93889e-18)
-(0 -4.44089e-16 6.93889e-18)
-(0 4.44089e-16 6.93889e-18)
-(-2.77556e-17 0 6.93889e-18)
-(-2.77556e-17 0 6.93889e-18)
-(2.77556e-17 4.44089e-16 0)
-(-2.77556e-17 -4.44089e-16 6.93889e-18)
-(-2.77556e-17 -4.44089e-16 6.93889e-18)
-(-2.77556e-17 0 6.93889e-18)
-(0 0 6.93889e-18)
-(0 0 6.93889e-18)
-(0 4.44089e-16 6.93889e-18)
-(-2.77556e-17 -3.46945e-18 -1.73472e-18)
-(-2.77556e-17 0 -1.73472e-18)
-(2.77556e-17 1.38778e-17 0)
-(0 -1.38778e-17 0)
-(0 0 0)
-(0 2.77556e-17 0)
-(0 5.55112e-17 0)
-(0 2.77556e-17 0)
-(0 0 -1.73472e-18)
-(0 -5.55112e-17 0)
-(0 -1.11022e-16 0)
-(0 -5.55112e-17 0)
-(0 0 -1.73472e-18)
-(-2.77556e-17 0 -1.73472e-18)
-(-2.77556e-17 0 -1.73472e-18)
-(0 0 0)
-(0 0 -1.73472e-18)
-(0 0 0)
-(0 0 0)
-(0 0 0)
-(-5.55112e-17 -1.11022e-16 -3.46945e-18)
-(2.77556e-17 1.11022e-16 0)
-(0 0 -1.73472e-18)
-(0 0 1.73472e-18)
-(-5.55112e-17 -1.11022e-16 -5.20417e-18)
-(2.77556e-17 1.11022e-16 1.73472e-18)
-(-5.55112e-17 -4.44089e-16 0)
-(-2.77556e-17 0 0)
-(0 2.22045e-16 -1.73472e-18)
-(0 -2.22045e-16 -1.73472e-18)
-(2.77556e-17 0 1.73472e-18)
-(2.77556e-17 0 3.46945e-18)
-(2.77556e-17 0 0)
-(-2.77556e-17 0 -1.73472e-18)
-(2.77556e-17 0 3.46945e-18)
-(2.77556e-17 0 0)
-(-2.77556e-17 0 -1.73472e-18)
-(0 -2.22045e-16 1.73472e-18)
-(-2.77556e-17 -2.22045e-16 0)
-(-2.77556e-17 -2.22045e-16 0)
-(0 0 -1.73472e-18)
-(-2.77556e-17 0 -1.73472e-18)
-(0 2.22045e-16 1.73472e-18)
-(-2.77556e-17 0 -1.73472e-18)
-(2.77556e-17 0 -3.46945e-18)
-(0 0 1.73472e-18)
-(-2.77556e-17 -2.22045e-16 0)
-(2.77556e-17 2.22045e-16 1.73472e-18)
-(2.77556e-17 0 1.73472e-18)
-(-2.77556e-17 -2.22045e-16 -1.73472e-18)
-(-2.77556e-17 0 0)
-(0 -4.44089e-16 -1.73472e-18)
-(0 2.22045e-16 1.73472e-18)
-(-2.77556e-17 -2.22045e-16 -1.73472e-18)
-(-5.55112e-17 2.22045e-16 0)
-(-2.77556e-17 -2.22045e-16 -1.73472e-18)
-(-2.77556e-17 -2.22045e-16 -1.73472e-18)
-(-8.32667e-17 -6.66134e-16 -1.73472e-18)
-(0 2.22045e-16 -1.73472e-18)
-(-2.77556e-17 4.44089e-16 -3.46945e-18)
-(-2.77556e-17 0 -1.73472e-18)
-(0 0 0)
-(-2.77556e-17 0 -1.73472e-18)
-(-2.77556e-17 0 -1.73472e-18)
-(0 0 0)
-(-2.77556e-17 0 -1.73472e-18)
-(-2.77556e-17 -4.44089e-16 -1.73472e-18)
-(-2.77556e-17 0 -1.73472e-18)
-(-2.77556e-17 0 -1.73472e-18)
-(-2.77556e-17 0 -3.46945e-18)
-(0 0 0)
-(2.77556e-17 0 0)
-(0 0 1.38778e-17)
-(0 0 0)
-(-2.77556e-17 -1.38778e-17 -6.93889e-18)
-(0 0 6.93889e-18)
-(0 0 6.93889e-18)
-(0 -2.77556e-17 6.93889e-18)
-(2.77556e-17 2.77556e-17 6.93889e-18)
-(-2.77556e-17 0 -6.93889e-18)
-(2.77556e-17 0 -6.93889e-18)
-(2.77556e-17 1.11022e-16 -6.93889e-18)
-(2.77556e-17 5.55112e-17 -6.93889e-18)
-(-2.77556e-17 0 -6.93889e-18)
-(2.77556e-17 5.55112e-17 1.38778e-17)
-(2.77556e-17 0 1.38778e-17)
-(0 1.11022e-16 6.93889e-18)
-(0 -1.11022e-16 -6.93889e-18)
-(0 0 0)
-(0 0 0)
-(0 -1.11022e-16 0)
-(0 -1.11022e-16 -6.93889e-18)
-(0 -2.22045e-16 -6.93889e-18)
-(0 -1.11022e-16 -6.93889e-18)
-(0 -2.22045e-16 -6.93889e-18)
-(0 0 0)
-(0 0 0)
-(0 0 0)
-(0 0 0)
-(0 -1.11022e-16 -6.93889e-18)
-(0 0 -6.93889e-18)
-(0 0 0)
-(0 -2.22045e-16 0)
-(-2.77556e-17 0 -6.93889e-18)
-(0 0 0)
-(0 0 0)
-(0 0 0)
-(0 0 0)
-(-2.77556e-17 0 -6.93889e-18)
-(0 -2.22045e-16 1.38778e-17)
-(0 0 0)
-(-2.77556e-17 -2.22045e-16 -6.93889e-18)
-(0 0 0)
-(0 0 0)
-(0 0 0)
-(0 0 0)
-(-2.77556e-17 -2.22045e-16 -6.93889e-18)
-(0 0 0)
-(0 2.22045e-16 0)
-(0 6.66134e-16 0)
-(-2.77556e-17 -4.44089e-16 -6.93889e-18)
-(-2.77556e-17 -2.22045e-16 -6.93889e-18)
-(0 0 0)
-(0 0 0)
-(0 0 0)
-(-2.77556e-17 2.22045e-16 -6.93889e-18)
-(0 0 0)
-(0 2.22045e-16 0)
-(0 4.44089e-16 0)
-(-2.77556e-17 -2.22045e-16 -6.93889e-18)
-(2.77556e-17 0 6.93889e-18)
-(-2.77556e-17 0 -6.93889e-18)
-(0 0 0)
-(0 0 0)
-(0 0 0)
-(0 0 0)
-(0 4.44089e-16 0)
-(0 -4.44089e-16 0)
-(0 0 0)
-(-2.77556e-17 0 -6.93889e-18)
-(2.77556e-17 4.44089e-16 6.93889e-18)
-(0 0 0)
-(-5.55112e-17 -4.44089e-16 -2.77556e-17)
-(2.77556e-17 -2.22045e-16 0)
-(-2.77556e-17 -2.22045e-16 -5.55112e-17)
-(2.77556e-17 0 -5.55112e-17)
-(-2.77556e-17 -2.22045e-16 -5.55112e-17)
-(0 -8.88178e-16 0)
-(-2.77556e-17 -2.22045e-16 -5.55112e-17)
-(0 0 0)
-(-2.77556e-17 0 -5.55112e-17)
-(-2.77556e-17 6.93889e-18 -5.55112e-17)
-(-2.77556e-17 0 0)
-(0 0 -5.55112e-17)
-(-2.77556e-17 -2.22045e-16 0)
-(0 -1.73472e-18 -5.55112e-17)
-(2.77556e-17 -4.44089e-16 0)
-(0 0 0)
-(-2.77556e-17 -6.66134e-16 -5.55112e-17)
-(0 0 0)
-(-2.77556e-17 0 0)
-(-2.77556e-17 -6.93889e-18 5.55112e-17)
-(2.77556e-17 6.66134e-16 5.55112e-17)
-(2.77556e-17 0 -5.55112e-17)
-(-2.77556e-17 -4.44089e-16 0)
-(-2.77556e-17 0 5.55112e-17)
-(2.77556e-17 6.66134e-16 5.55112e-17)
-(0 -1.38778e-17 0)
-(2.77556e-17 -4.44089e-16 0)
-(2.77556e-17 -1.73472e-18 0)
-(-5.55112e-17 -4.44089e-16 -2.77556e-17)
-(0 0 0)
-(0 -4.44089e-16 0)
-(0 0 -1.38778e-17)
-(0 0 2.77556e-17)
-(0 0 -5.55112e-17)
-(-2.77556e-17 -8.88178e-16 0)
-(0 0 0)
-(2.77556e-17 2.22045e-16 5.55112e-17)
-(0 -1.38778e-17 5.55112e-17)
-(2.77556e-17 4.44089e-16 0)
-(-2.77556e-17 -1.38778e-17 -1.38778e-17)
-(-2.77556e-17 0 -5.55112e-17)
-(0 -2.77556e-17 5.55112e-17)
-(0 -4.44089e-16 0)
-(0 0 1.38778e-17)
-(-2.77556e-17 0 -5.55112e-17)
-(2.77556e-17 0 0)
-(-2.77556e-17 0 5.55112e-17)
-(0 0 1.38778e-17)
-(-2.77556e-17 4.44089e-16 0)
-(-2.77556e-17 0 -5.55112e-17)
-(0 -4.44089e-16 0)
-(0 -5.55112e-17 1.38778e-17)
-(-2.77556e-17 -2.22045e-16 -5.55112e-17)
-(0 0 0)
-(2.77556e-17 0 0)
-(2.77556e-17 2.77556e-17 2.77556e-17)
-(-2.77556e-17 -2.22045e-16 -5.55112e-17)
-(0 0 0)
-(2.77556e-17 0 -5.55112e-17)
-(-5.55112e-17 0 -2.77556e-17)
-(2.77556e-17 4.44089e-16 5.55112e-17)
-(-2.77556e-17 -2.77556e-17 -5.55112e-17)
-(2.77556e-17 0 0)
-(2.77556e-17 0 2.77556e-17)
-(-5.55112e-17 -4.44089e-16 -2.77556e-17)
-(0 -2.77556e-17 5.55112e-17)
-(2.77556e-17 0 0)
-(2.77556e-17 1.11022e-16 2.77556e-17)
-(5.55112e-17 4.44089e-16 5.55112e-17)
-(2.77556e-17 0 0)
-(2.77556e-17 0 -5.55112e-17)
-(2.77556e-17 5.55112e-17 2.77556e-17)
-(0 0 2.77556e-17)
-(-2.77556e-17 -5.55112e-17 -5.55112e-17)
-(2.77556e-17 -4.44089e-16 0)
-(-5.55112e-17 -5.55112e-17 -2.77556e-17)
-(0 4.44089e-16 0)
-(0 -5.55112e-17 5.55112e-17)
-(2.77556e-17 0 0)
-(2.77556e-17 5.55112e-17 2.77556e-17)
-(-2.77556e-17 0 -5.55112e-17)
-(2.77556e-17 0 0)
-(0 0 -5.55112e-17)
-(2.77556e-17 0 2.77556e-17)
-(-2.77556e-17 -4.44089e-16 -5.55112e-17)
-(-2.77556e-17 0 0)
-(0 0 0)
-(2.77556e-17 2.22045e-16 2.77556e-17)
-(2.77556e-17 8.88178e-16 0)
-(0 -1.11022e-16 5.55112e-17)
-(2.77556e-17 0 0)
-(-2.77556e-17 -1.11022e-16 -2.77556e-17)
-(-2.77556e-17 -4.44089e-16 -5.55112e-17)
-(0 5.55112e-17 0)
-(-2.77556e-17 -4.44089e-16 5.55112e-17)
-(0 0 -1.38778e-17)
-(-2.77556e-17 -4.44089e-16 -5.55112e-17)
-(0 -5.55112e-17 0)
-(0 0 0)
-(0 0 -1.38778e-17)
-(-2.77556e-17 0 -5.55112e-17)
-(0 -5.55112e-17 5.55112e-17)
-(2.77556e-17 4.44089e-16 0)
-(0 0 -1.38778e-17)
-(0 4.44089e-16 2.77556e-17)
-(0 5.55112e-17 0)
-(-2.77556e-17 0 0)
-(0 -1.11022e-16 -1.38778e-17)
-(5.55112e-17 8.88178e-16 5.55112e-17)
-(-2.77556e-17 -5.55112e-17 0)
-(2.77556e-17 4.44089e-16 0)
-(0 -1.11022e-16 0)
-(0 0 0)
-(0 -5.55112e-17 5.55112e-17)
-(2.77556e-17 0 0)
-(0 0 -1.38778e-17)
-(-2.77556e-17 -8.88178e-16 0)
-(0 0 0)
-(2.77556e-17 0 0)
-(0 -1.11022e-16 0)
-(0 -4.44089e-16 0)
-(-2.77556e-17 -5.55112e-17 0)
-(-2.77556e-17 0 0)
-(0 1.11022e-16 -1.38778e-17)
-(2.77556e-17 0 0)
-(0 -1.66533e-16 5.55112e-17)
-(-2.77556e-17 -4.44089e-16 0)
-(0 0 0)
-(-2.77556e-17 0 0)
-(0 0 0)
-(2.77556e-17 4.44089e-16 0)
-(0 -1.11022e-16 -1.38778e-17)
-(0 -4.44089e-16 0)
-(-2.77556e-17 -1.11022e-16 0)
-(2.77556e-17 0 2.77556e-17)
-(0 0 0)
-(2.77556e-17 -6.93889e-18 2.77556e-17)
-(0 0 5.55112e-17)
-(2.77556e-17 1.73472e-18 0)
-(-2.77556e-17 -2.22045e-16 -2.77556e-17)
-(-2.77556e-17 -2.08167e-17 2.77556e-17)
-(2.77556e-17 0 0)
-(-2.77556e-17 -6.93889e-18 2.77556e-17)
-(-2.77556e-17 -4.44089e-16 -2.77556e-17)
-(2.77556e-17 6.93889e-18 2.77556e-17)
-(0 -5.55112e-17 0)
-(-2.77556e-17 -1.38778e-17 2.77556e-17)
-(0 2.22045e-16 2.77556e-17)
-(-2.77556e-17 -1.38778e-17 0)
-(0 -5.55112e-17 5.55112e-17)
-(0 0 -2.77556e-17)
-(-2.77556e-17 2.77556e-17 0)
-(-2.77556e-17 0 2.77556e-17)
-(-2.77556e-17 -1.38778e-17 2.77556e-17)
-(0 0 -5.55112e-17)
-(-2.77556e-17 0 2.77556e-17)
-(-2.77556e-17 -2.77556e-17 0)
-(2.77556e-17 -2.77556e-17 -2.77556e-17)
-(0 8.32667e-17 -2.77556e-17)
-(-2.77556e-17 -2.77556e-17 0)
-(0 8.32667e-17 0)
-(-2.77556e-17 2.77556e-17 2.77556e-17)
-(-2.77556e-17 -2.77556e-17 0)
-(-2.77556e-17 0 0)
-(-5.55112e-17 0 2.77556e-17)
-(2.77556e-17 5.55112e-17 -2.77556e-17)
-(2.77556e-17 0 -2.77556e-17)
-(-2.77556e-17 -5.55112e-17 -2.77556e-17)
-(-2.77556e-17 0 2.77556e-17)
-(2.77556e-17 5.55112e-17 -2.77556e-17)
-(-2.77556e-17 0 -2.77556e-17)
-(2.77556e-17 0 -2.77556e-17)
-(2.77556e-17 1.11022e-16 -2.77556e-17)
-(-2.77556e-17 5.55112e-17 -2.77556e-17)
-(2.77556e-17 1.11022e-16 -2.77556e-17)
-(2.77556e-17 5.55112e-17 -2.77556e-17)
-(-2.77556e-17 0 -2.77556e-17)
-(2.77556e-17 1.11022e-16 -2.77556e-17)
-(-2.77556e-17 1.11022e-16 0)
-(-5.55112e-17 -5.55112e-17 2.77556e-17)
-(-2.77556e-17 5.55112e-17 2.77556e-17)
-(-2.77556e-17 1.11022e-16 0)
-(-5.55112e-17 -5.55112e-17 2.77556e-17)
-(0 0 0)
-(-2.77556e-17 0 0)
-(-5.55112e-17 -5.55112e-17 2.77556e-17)
-(2.77556e-17 0 0)
-(0 5.55112e-17 0)
-(0 -1.38778e-17 -5.55112e-17)
-(0 0 5.55112e-17)
-(0 1.38778e-17 2.77556e-17)
-(0 0 0)
-(-2.77556e-17 -1.38778e-17 -2.77556e-17)
-(-5.55112e-17 -2.22045e-16 2.77556e-17)
-(-2.77556e-17 -2.77556e-17 0)
-(-5.55112e-17 -1.11022e-16 5.55112e-17)
-(-2.77556e-17 -2.77556e-17 0)
-(0 0 0)
-(-2.77556e-17 -5.55112e-17 0)
-(0 -1.11022e-16 2.77556e-17)
-(0 0 0)
-(-5.55112e-17 -2.22045e-16 5.55112e-17)
-(-2.77556e-17 0 -2.77556e-17)
-(0 0 0)
-(0 -2.22045e-16 0)
-(-2.77556e-17 -1.11022e-16 -2.77556e-17)
-(2.77556e-17 5.55112e-17 0)
-(0 0 2.77556e-17)
-(0 -2.22045e-16 2.77556e-17)
-(-2.77556e-17 0 -2.77556e-17)
-(-2.77556e-17 0 0)
-(-5.55112e-17 -2.22045e-16 5.55112e-17)
-(0 0 0)
-(-2.77556e-17 -5.55112e-17 -2.77556e-17)
-(0 -1.11022e-16 5.55112e-17)
-(0 0 0)
-(0 0 0)
-(-2.77556e-17 -1.66533e-16 -2.77556e-17)
-(2.77556e-17 0 0)
-(0 0 2.77556e-17)
-(0 0 0)
-(2.77556e-17 0 0)
-(-2.77556e-17 5.55112e-17 0)
-(-5.55112e-17 -2.22045e-16 5.55112e-17)
-(0 0 0)
-(2.77556e-17 5.55112e-17 0)
-(-2.77556e-17 0 0)
-(0 0 0)
-(-5.55112e-17 -2.22045e-16 -2.77556e-17)
-(0 2.22045e-16 0)
-(0 0 5.55112e-17)
-(0 -1.11022e-16 2.77556e-17)
-(0 0 2.77556e-17)
-(0 -1.11022e-16 -2.77556e-17)
-(0 -1.11022e-16 0)
-(0 0 5.55112e-17)
-(0 4.44089e-16 2.77556e-17)
-(-2.77556e-17 -1.11022e-16 -2.77556e-17)
-(5.55112e-17 1.11022e-16 5.55112e-17)
-(0 -1.11022e-16 -2.77556e-17)
-(-5.55112e-17 -4.44089e-16 -2.77556e-17)
-(-2.77556e-17 -1.11022e-16 -2.77556e-17)
-(0 0 0)
-(0 0 0)
-(0 0 0)
-(-2.77556e-17 -1.11022e-16 -2.77556e-17)
-(0 0 0)
-(0 -1.11022e-16 5.55112e-17)
-(0 0 0)
-(0 0 -5.55112e-17)
-(5.55112e-17 0 5.55112e-17)
-(-2.77556e-17 -1.11022e-16 2.77556e-17)
-(0 0 0)
-(0 -2.22045e-16 -2.77556e-17)
-(0 0 0)
-(0 0 2.77556e-17)
-(0 0 0)
-(0 -2.22045e-16 -5.55112e-17)
-(-2.77556e-17 1.11022e-16 -5.55112e-17)
-(0 -1.11022e-16 5.55112e-17)
-(0 -2.22045e-16 0)
-(0 -4.44089e-16 -2.77556e-17)
-(5.55112e-17 1.11022e-16 5.55112e-17)
-(0 0 -2.77556e-17)
-(0 -2.22045e-16 0)
-(-2.77556e-17 -2.22045e-16 -2.77556e-17)
-(0 -2.22045e-16 0)
-(0 0 0)
-(0 6.66134e-16 2.77556e-17)
-(0 0 -2.77556e-17)
-(-2.77556e-17 0 -5.55112e-17)
-(-5.55112e-17 -2.22045e-16 2.77556e-17)
-(0 8.88178e-16 2.77556e-17)
-(-2.77556e-17 -1.11022e-16 -2.77556e-17)
-(5.55112e-17 0 5.55112e-17)
-(0 -1.11022e-16 0)
-(-5.55112e-17 -4.44089e-16 -2.77556e-17)
-(0 1.11022e-16 -2.77556e-17)
-(0 -1.11022e-16 0)
-(0 1.11022e-16 2.77556e-17)
-(0 0 0)
-(0 0 -2.77556e-17)
-(-2.77556e-17 0 -5.55112e-17)
-(-2.77556e-17 -2.22045e-16 0)
-(0 2.22045e-16 2.77556e-17)
-(0 0 -2.77556e-17)
-(-5.55112e-17 -1.11022e-16 5.55112e-17)
-(-2.77556e-17 1.11022e-16 2.77556e-17)
-(0 0 0)
-(0 0 2.77556e-17)
-(2.77556e-17 0 0)
-(0 1.11022e-16 2.77556e-17)
-(0 0 0)
-(-2.77556e-17 2.22045e-16 -2.77556e-17)
-(-2.77556e-17 -2.22045e-16 5.55112e-17)
-(-5.55112e-17 -2.22045e-16 2.77556e-17)
-(0 4.44089e-16 0)
-(-2.77556e-17 2.22045e-16 -2.77556e-17)
-(-5.55112e-17 -1.11022e-16 5.55112e-17)
-(0 0 0)
-(0 2.22045e-16 0)
-(-2.77556e-17 2.22045e-16 -2.77556e-17)
-(-2.77556e-17 -1.11022e-16 5.55112e-17)
-(0 0 2.77556e-17)
-(0 2.22045e-16 0)
-(-2.77556e-17 0 -2.77556e-17)
-(0 0 0)
-(-2.77556e-17 -1.11022e-16 0)
-(0 2.22045e-16 2.77556e-17)
-(-2.77556e-17 2.22045e-16 -2.77556e-17)
-(-5.55112e-17 -1.11022e-16 5.55112e-17)
-(-2.77556e-17 -1.11022e-16 2.77556e-17)
-(-5.55112e-17 -8.88178e-16 -2.77556e-17)
-(-2.77556e-17 0 -2.77556e-17)
-(2.77556e-17 -1.11022e-16 0)
-(0 0 2.77556e-17)
-(5.55112e-17 4.44089e-16 2.77556e-17)
-(-2.77556e-17 2.22045e-16 -2.77556e-17)
-(-2.77556e-17 -2.22045e-16 5.55112e-17)
-(-5.55112e-17 -2.22045e-16 2.77556e-17)
-(0 4.44089e-16 0)
-(-2.77556e-17 0 2.77556e-17)
-(5.55112e-17 0 5.55112e-17)
-(0 0 0)
-(0 0 0)
-(0 0 2.77556e-17)
-(0 0 0)
-(0 1.11022e-16 2.77556e-17)
-(0 4.44089e-16 0)
-(-2.77556e-17 -2.22045e-16 -2.77556e-17)
-(0 -1.11022e-16 0)
-(0 0 5.55112e-17)
-(0 0 0)
-(-2.77556e-17 0 -2.77556e-17)
-(0 0 5.55112e-17)
-(0 0 0)
-(0 8.88178e-16 2.77556e-17)
-(-2.77556e-17 -2.22045e-16 -2.77556e-17)
-(0 -2.22045e-16 0)
-(0 -2.22045e-16 2.77556e-17)
-(0 -4.44089e-16 0)
-(-2.77556e-17 -2.22045e-16 -2.77556e-17)
-(-2.77556e-17 0 -5.55112e-17)
-(0 0 2.77556e-17)
-(0 -4.44089e-16 0)
-(-2.77556e-17 0 -2.77556e-17)
-(-2.77556e-17 -2.22045e-16 2.77556e-17)
-(-5.55112e-17 -2.22045e-16 -5.55112e-17)
-(0 0 2.77556e-17)
-(-2.77556e-17 -2.22045e-16 -2.77556e-17)
-(-2.77556e-17 0 2.77556e-17)
-(0 0 2.77556e-17)
-(-2.77556e-17 2.22045e-16 2.77556e-17)
-(0 2.22045e-16 2.77556e-17)
-(0 0 -2.77556e-17)
-(-2.77556e-17 -4.44089e-16 -2.77556e-17)
-(-2.77556e-17 0 8.32667e-17)
-(-2.77556e-17 -2.22045e-16 -2.77556e-17)
-(-2.77556e-17 0 2.77556e-17)
-(0 -2.22045e-16 2.77556e-17)
-(0 0 2.77556e-17)
-(-2.77556e-17 0 -2.77556e-17)
-(-2.77556e-17 2.22045e-16 8.32667e-17)
-(-2.77556e-17 0 -2.77556e-17)
-(-2.77556e-17 -4.44089e-16 2.77556e-17)
-(-5.55112e-17 2.22045e-16 -5.55112e-17)
-(-2.77556e-17 0 2.77556e-17)
-(-2.77556e-17 2.22045e-16 -2.77556e-17)
-(0 2.22045e-16 -2.77556e-17)
-(-2.77556e-17 0 -2.77556e-17)
-(-2.77556e-17 -2.22045e-16 -2.77556e-17)
-(0 2.22045e-16 2.77556e-17)
-(0 2.22045e-16 2.77556e-17)
-(-2.77556e-17 2.22045e-16 -2.77556e-17)
-(2.77556e-17 2.22045e-16 -8.32667e-17)
-(2.77556e-17 0 0)
-(0 0 -2.77556e-17)
-(-2.77556e-17 0 -5.55112e-17)
-(0 2.22045e-16 2.77556e-17)
-(0 0 -2.77556e-17)
-(-2.77556e-17 -2.22045e-16 8.32667e-17)
-(-2.77556e-17 0 -2.77556e-17)
-(-2.77556e-17 -2.22045e-16 2.77556e-17)
-(-2.77556e-17 -4.44089e-16 -2.77556e-17)
-(0 0 2.77556e-17)
-(0 0 2.77556e-17)
-(0 -2.22045e-16 5.55112e-17)
-(-2.77556e-17 0 -2.77556e-17)
-(-2.77556e-17 -2.22045e-16 2.77556e-17)
-(-2.77556e-17 0 -2.77556e-17)
-(0 0 2.77556e-17)
-(-2.77556e-17 4.44089e-16 -2.77556e-17)
-(-2.77556e-17 -2.22045e-16 2.77556e-17)
-(-2.77556e-17 0 -5.55112e-17)
-(-2.77556e-17 -2.22045e-16 2.77556e-17)
-(2.77556e-17 4.44089e-16 0)
-(-2.77556e-17 -2.22045e-16 2.77556e-17)
-(0 0 -2.77556e-17)
-(-2.77556e-17 0 2.77556e-17)
-(5.55112e-17 1.11022e-16 5.55112e-17)
-(-2.77556e-17 0 2.77556e-17)
-(0 0 0)
-(2.77556e-17 2.22045e-16 -5.55112e-17)
-(0 0 0)
-(-2.77556e-17 -2.22045e-16 2.77556e-17)
-(0 4.44089e-16 0)
-(-2.77556e-17 0 2.77556e-17)
-(-2.77556e-17 -1.11022e-16 0)
-(0 4.44089e-16 -2.77556e-17)
-(5.55112e-17 8.88178e-16 2.77556e-17)
-(-2.77556e-17 0 8.32667e-17)
-(0 -3.33067e-16 5.55112e-17)
-(-5.55112e-17 0 5.55112e-17)
-(0 0 0)
-(-2.77556e-17 -2.22045e-16 2.77556e-17)
-(0 -1.11022e-16 0)
-(-2.77556e-17 -2.22045e-16 8.32667e-17)
-(-2.77556e-17 0 -5.55112e-17)
-(-2.77556e-17 0 2.77556e-17)
-(5.55112e-17 0 5.55112e-17)
-(0 2.22045e-16 2.77556e-17)
-(0 0 0)
-(0 0 -2.77556e-17)
-(-2.77556e-17 1.11022e-16 0)
-(-2.77556e-17 -2.22045e-16 -2.77556e-17)
-(-2.77556e-17 -1.11022e-16 0)
-(0 0 2.77556e-17)
-(0 -1.11022e-16 5.55112e-17)
-(2.77556e-17 4.44089e-16 -8.32667e-17)
-(0 -1.11022e-16 0)
-(0 -2.22045e-16 -2.77556e-17)
-(0 -2.22045e-16 1.11022e-16)
-(0 -2.22045e-16 2.77556e-17)
-(-2.77556e-17 2.22045e-16 0)
-(-2.77556e-17 -4.44089e-16 8.32667e-17)
-(0 0 0)
-(-2.77556e-17 0 2.77556e-17)
-(-2.77556e-17 0 0)
-(0 0 2.77556e-17)
-(2.77556e-17 0 0)
-(-2.77556e-17 -2.22045e-16 8.32667e-17)
-(2.77556e-17 0 0)
-(-2.77556e-17 0 2.77556e-17)
-(2.77556e-17 0 -5.55112e-17)
-(-2.77556e-17 -2.22045e-16 2.77556e-17)
-(0 0 0)
-(-2.77556e-17 -2.22045e-16 2.77556e-17)
-(2.77556e-17 -2.22045e-16 0)
-(-2.77556e-17 0 2.77556e-17)
-(2.77556e-17 0 -5.55112e-17)
-(0 -2.22045e-16 2.77556e-17)
-(0 -2.22045e-16 0)
-(-2.77556e-17 -2.22045e-16 2.77556e-17)
-(0 0 0)
-(-2.77556e-17 0 2.77556e-17)
-(-5.55112e-17 0 0)
-(0 0 -2.77556e-17)
-(2.77556e-17 0 0)
-(-2.77556e-17 -4.44089e-16 2.77556e-17)
-(2.77556e-17 0 0)
-(-2.77556e-17 2.22045e-16 2.77556e-17)
-(-5.55112e-17 -4.44089e-16 0)
-(0 2.22045e-16 -2.77556e-17)
-(2.77556e-17 0 0)
-(-2.77556e-17 0 2.77556e-17)
-(2.77556e-17 0 0)
-(-5.55112e-17 0 5.55112e-17)
-(2.77556e-17 0 -5.55112e-17)
-(-2.77556e-17 2.22045e-16 2.77556e-17)
-(0 0 0)
-(-2.77556e-17 -2.22045e-16 2.77556e-17)
-(2.77556e-17 -2.22045e-16 0)
-(-2.77556e-17 0 2.77556e-17)
-(2.77556e-17 0 -5.55112e-17)
-(-2.77556e-17 -2.22045e-16 2.77556e-17)
-(0 0 0)
-(-2.77556e-17 0 2.77556e-17)
-(2.77556e-17 -2.22045e-16 0)
-(-2.77556e-17 2.22045e-16 2.77556e-17)
-(-2.77556e-17 0 0)
-(0 4.44089e-16 -2.77556e-17)
-(2.77556e-17 -2.22045e-16 0)
-(2.77556e-17 4.44089e-16 -8.32667e-17)
-(0 0 0)
-(0 -2.22045e-16 -2.77556e-17)
-(-2.77556e-17 0 0)
-(0 2.22045e-16 2.77556e-17)
-(2.77556e-17 -2.22045e-16 0)
-(-2.77556e-17 -2.22045e-16 8.32667e-17)
-(0 0 0)
-(-2.77556e-17 -2.22045e-16 5.55112e-17)
-(-2.77556e-17 -2.22045e-16 0)
-(0 2.22045e-16 2.77556e-17)
-(2.77556e-17 2.22045e-16 0)
-(-2.77556e-17 2.22045e-16 8.32667e-17)
-(2.77556e-17 4.44089e-16 0)
-(-2.77556e-17 -4.44089e-16 2.77556e-17)
-(2.77556e-17 2.22045e-16 -5.55112e-17)
-(-2.77556e-17 -4.44089e-16 2.77556e-17)
-(0 0 0)
-(2.77556e-17 2.22045e-16 -8.32667e-17)
-(0 0 0)
-(0 0 -2.77556e-17)
-(0 -2.22045e-16 5.55112e-17)
-(0 -2.22045e-16 2.77556e-17)
-(0 0 0)
-(0 -1.73472e-18 5.55112e-17)
-(2.77556e-17 0 0)
-(-2.77556e-17 2.22045e-16 2.77556e-17)
-(-5.55112e-17 -2.22045e-16 0)
-(-2.77556e-17 0 5.55112e-17)
-(2.77556e-17 0 0)
-(-2.77556e-17 -2.22045e-16 2.77556e-17)
-(2.77556e-17 -2.22045e-16 0)
-(0 1.38778e-17 0)
-(-5.55112e-17 -4.44089e-16 0)
-(0 0 2.77556e-17)
-(2.77556e-17 -2.22045e-16 0)
-(0 -1.38778e-17 -5.55112e-17)
-(2.77556e-17 -2.22045e-16 0)
-(-2.77556e-17 -2.22045e-16 2.77556e-17)
-(2.77556e-17 0 -5.55112e-17)
-(-2.77556e-17 0 -1.11022e-16)
-(2.77556e-17 -1.73472e-18 0)
-(-2.77556e-17 0 2.77556e-17)
-(0 -2.22045e-16 0)
-(-2.77556e-17 -2.77556e-17 -1.11022e-16)
-(0 0 2.77556e-17)
-(0 4.44089e-16 -2.77556e-17)
-(2.77556e-17 2.22045e-16 0)
-(-2.77556e-17 0 -1.11022e-16)
-(0 0 -2.77556e-17)
-(-2.77556e-17 -4.44089e-16 8.32667e-17)
-(2.77556e-17 0 -5.55112e-17)
-(-2.77556e-17 0 0)
-(-5.55112e-17 -1.38778e-17 -2.77556e-17)
-(-5.55112e-17 -4.44089e-16 5.55112e-17)
-(0 2.22045e-16 0)
-(0 -5.55112e-17 0)
-(-2.77556e-17 0 0)
-(-2.77556e-17 -6.66134e-16 2.77556e-17)
-(-2.77556e-17 -5.55112e-17 0)
-(-2.77556e-17 -4.44089e-16 2.77556e-17)
-(-2.77556e-17 0 0)
-(-2.77556e-17 0 2.77556e-17)
-(-2.77556e-17 5.55112e-17 0)
-(-5.55112e-17 0 2.77556e-17)
-(0 -5.55112e-17 0)
-(-2.77556e-17 0 2.77556e-17)
-(-2.77556e-17 0 0)
-(-2.77556e-17 4.44089e-16 2.77556e-17)
-(-2.77556e-17 5.55112e-17 0)
-(-2.77556e-17 -8.88178e-16 -2.77556e-17)
-(0 -1.11022e-16 0)
-(-2.77556e-17 0 2.77556e-17)
-(0 0 0)
-(-2.77556e-17 0 2.77556e-17)
-(-2.77556e-17 0 0)
-(0 0 2.77556e-17)
-(-2.77556e-17 1.11022e-16 0)
-(-2.77556e-17 -4.44089e-16 8.32667e-17)
-(-2.77556e-17 0 0)
-(-2.77556e-17 -4.44089e-16 5.55112e-17)
-(2.77556e-17 0 0)
-(0 0 2.77556e-17)
-(0 -1.11022e-16 0)
-(-5.55112e-17 0 1.11022e-16)
-(2.77556e-17 0 0)
-(2.77556e-17 0 0)
-(0 -1.11022e-16 0)
-(0 -4.44089e-16 2.77556e-17)
-(-2.77556e-17 0 5.55112e-17)
-(-5.55112e-17 -4.44089e-16 1.11022e-16)
-(-2.77556e-17 0 5.55112e-17)
-(2.77556e-17 4.44089e-16 0)
-(-2.77556e-17 0 5.55112e-17)
-(0 0 -2.77556e-17)
-(-2.77556e-17 0 5.55112e-17)
-(-2.77556e-17 -8.88178e-16 8.32667e-17)
-(0 -1.11022e-16 0)
-(-2.77556e-17 4.44089e-16 5.55112e-17)
-(0 0 0)
-(0 0 2.77556e-17)
-(2.77556e-17 0 0)
-(0 0 2.77556e-17)
-(2.77556e-17 2.22045e-16 0)
-(0 0 2.77556e-17)
-(0 -2.22045e-16 0)
-(0 4.44089e-16 2.77556e-17)
-(2.77556e-17 0 0)
-(-2.77556e-17 -4.44089e-16 2.77556e-17)
-(2.77556e-17 0 0)
-(-2.77556e-17 0 2.77556e-17)
-(2.77556e-17 -2.22045e-16 0)
-(-5.55112e-17 0 0)
-(0 4.44089e-16 2.77556e-17)
-(-2.77556e-17 0 0)
-(2.77556e-17 -2.22045e-16 0)
-(-2.77556e-17 -2.22045e-16 0)
-(-2.77556e-17 -4.44089e-16 2.77556e-17)
-(-2.77556e-17 -5.55112e-17 0)
-(0 0 0)
-(2.77556e-17 0 0)
-(-2.77556e-17 0 2.77556e-17)
-(2.77556e-17 2.77556e-17 0)
-(2.77556e-17 -2.22045e-16 0)
-(2.77556e-17 0 0)
-(-2.77556e-17 -4.44089e-16 -2.77556e-17)
-(-5.55112e-17 0 -2.77556e-17)
-(2.77556e-17 -2.22045e-16 0)
-(-2.77556e-17 -2.22045e-16 0)
-(-2.77556e-17 0 2.77556e-17)
-(0 -5.55112e-17 0)
-(0 0 0)
-(2.77556e-17 -2.22045e-16 0)
-(-2.77556e-17 0 2.77556e-17)
-(0 5.55112e-17 0)
-(2.77556e-17 0 0)
-(2.77556e-17 0 0)
-(-5.55112e-17 -8.88178e-16 2.77556e-17)
-(0 0 0)
-(2.77556e-17 -2.22045e-16 0)
-(-2.77556e-17 0 0)
-(-2.77556e-17 -4.44089e-16 2.77556e-17)
-(-5.55112e-17 -2.22045e-16 -2.77556e-17)
-(2.77556e-17 -2.22045e-16 0)
-(2.77556e-17 0 0)
-(-2.77556e-17 0 2.77556e-17)
-(5.55112e-17 5.55112e-17 0)
-(2.77556e-17 -2.22045e-16 0)
-(2.77556e-17 0 0)
-(0 0 2.77556e-17)
-(5.55112e-17 0 0)
-(0 0 0)
-(2.77556e-17 4.44089e-16 -5.55112e-17)
-(-2.77556e-17 0 0)
-(2.77556e-17 2.22045e-16 5.55112e-17)
-(2.77556e-17 0 0)
-(0 -2.22045e-16 0)
-(2.77556e-17 0 -2.77556e-17)
-(-2.77556e-17 -1.11022e-16 -2.77556e-17)
-(2.77556e-17 0 0)
-(0 0 0)
-(0 1.73472e-18 0)
-(-2.77556e-17 -1.11022e-16 -2.77556e-17)
-(2.77556e-17 0 0)
-(-2.77556e-17 2.22045e-16 0)
-(0 0 0)
-(-2.77556e-17 -1.11022e-16 -2.77556e-17)
-(0 0 0)
-(2.77556e-17 0 0)
-(0 -1.38778e-17 0)
-(-2.77556e-17 -1.11022e-16 -2.77556e-17)
-(0 0 0)
-(0 0 0)
-(2.77556e-17 6.93889e-18 0)
-(0 -1.11022e-16 0)
-(2.77556e-17 -2.22045e-16 0)
-(-2.77556e-17 0 0)
-(-2.77556e-17 0 2.77556e-17)
-(0 -1.11022e-16 0)
-(2.77556e-17 0 0)
-(2.77556e-17 0 0)
-(-2.77556e-17 -2.77556e-17 0)
-(0 -1.11022e-16 0)
-(2.77556e-17 2.22045e-16 0)
-(2.77556e-17 4.44089e-16 0)
-(-2.77556e-17 0 0)
-(0 -1.11022e-16 0)
-(0 0 0)
-(-5.55112e-17 -4.44089e-16 0)
-(-2.77556e-17 0 2.77556e-17)
-(-2.77556e-17 -1.11022e-16 -2.77556e-17)
-(2.77556e-17 0 0)
-(2.77556e-17 0 0)
-(0 2.77556e-17 0)
-(0 0 0)
-(2.77556e-17 0 0)
-(2.77556e-17 0 0)
-(0 -1.38778e-17 2.77556e-17)
-(-2.77556e-17 -1.11022e-16 -2.77556e-17)
-(2.77556e-17 4.44089e-16 0)
-(0 -2.22045e-16 -5.55112e-17)
-(2.77556e-17 0 2.77556e-17)
-(0 1.11022e-16 0)
-(0 0 0)
-(0 -2.22045e-16 0)
-(2.77556e-17 2.77556e-17 0)
-(-2.77556e-17 -2.22045e-16 -2.77556e-17)
-(2.77556e-17 0 0)
-(2.77556e-17 2.22045e-16 0)
-(-5.55112e-17 -2.77556e-17 2.77556e-17)
-(-2.77556e-17 -4.44089e-16 -2.77556e-17)
-(0 -4.44089e-16 0)
-(2.77556e-17 0 -5.55112e-17)
-(0 0 0)
-(2.77556e-17 2.22045e-16 5.55112e-17)
-(0 -4.44089e-16 0)
-(0 -2.22045e-16 0)
-(0 5.55112e-17 2.77556e-17)
-(-2.77556e-17 -2.22045e-16 -5.55112e-17)
-(2.77556e-17 0 0)
-(-2.77556e-17 -2.22045e-16 0)
-(-5.55112e-17 -8.32667e-17 2.77556e-17)
-(0 0 2.77556e-17)
-(2.77556e-17 0 0)
-(-5.55112e-17 -2.22045e-16 0)
-(2.77556e-17 0 2.77556e-17)
-(-2.77556e-17 0 -5.55112e-17)
-(2.77556e-17 4.44089e-16 0)
-(2.77556e-17 2.22045e-16 0)
-(0 5.55112e-17 0)
-(-2.77556e-17 0 -5.55112e-17)
-(2.77556e-17 0 0)
-(2.77556e-17 0 0)
-(-5.55112e-17 -1.11022e-16 2.77556e-17)
-(-2.77556e-17 0 -5.55112e-17)
-(2.77556e-17 0 0)
-(-2.77556e-17 -2.22045e-16 0)
-(0 5.55112e-17 0)
-(-2.77556e-17 -2.22045e-16 -5.55112e-17)
-(2.77556e-17 0 0)
-(2.77556e-17 0 0)
-(-2.77556e-17 5.55112e-17 0)
-(-5.55112e-17 -2.22045e-16 -2.77556e-17)
-(0 4.44089e-16 0)
-(2.77556e-17 0 0)
-(0 2.77556e-17 -2.77556e-17)
-(0 0 2.77556e-17)
-(2.77556e-17 0 0)
-(-2.77556e-17 -2.22045e-16 0)
-(2.77556e-17 5.55112e-17 2.77556e-17)
-(2.77556e-17 4.44089e-16 5.55112e-17)
-(0 -4.44089e-16 0)
-(2.77556e-17 0 0)
-(0 0 0)
-(0 0 -2.77556e-17)
-(2.77556e-17 5.55112e-17 2.77556e-17)
-(0 5.55112e-17 0)
-(0 -5.55112e-17 -2.77556e-17)
-(2.77556e-17 0 2.77556e-17)
-(0 1.11022e-16 0)
-(0 5.55112e-17 -2.77556e-17)
-(2.77556e-17 0 2.77556e-17)
-(0 5.55112e-17 0)
-(0 0 -2.77556e-17)
-(0 -5.55112e-17 0)
-(0 0 -5.55112e-17)
-(0 1.66533e-16 -2.77556e-17)
-(0 0 0)
-(0 0 -5.55112e-17)
-(-2.77556e-17 -5.55112e-17 0)
-(0 -5.55112e-17 0)
-(0 0 -5.55112e-17)
-(-2.77556e-17 5.55112e-17 0)
-(0 0 2.77556e-17)
-(0 0 0)
-(-5.55112e-17 -1.11022e-16 5.55112e-17)
-(0 0 2.77556e-17)
-(2.77556e-17 1.11022e-16 -5.55112e-17)
-(2.77556e-17 0 0)
-(0 0 2.77556e-17)
-(2.77556e-17 1.11022e-16 -5.55112e-17)
-(0 0 0)
-(0 0 2.77556e-17)
-(2.77556e-17 1.11022e-16 -5.55112e-17)
-(0 0 0)
-(0 1.11022e-16 2.77556e-17)
-(2.77556e-17 2.22045e-16 -5.55112e-17)
-(0 -1.11022e-16 0)
-(-2.77556e-17 -1.11022e-16 2.77556e-17)
-(0 -1.11022e-16 0)
-(0 0 2.77556e-17)
-(-2.77556e-17 -1.11022e-16 2.77556e-17)
-(-2.77556e-17 0 0)
-(0 -1.11022e-16 2.77556e-17)
-(-2.77556e-17 2.22045e-16 2.77556e-17)
-(0 -1.11022e-16 0)
-(0 -1.11022e-16 2.77556e-17)
-(0 0 2.77556e-17)
-(2.77556e-17 0 -5.55112e-17)
-(0 1.11022e-16 2.77556e-17)
-(0 0 0)
-(0 2.22045e-16 -2.77556e-17)
-(0 1.11022e-16 0)
-(0 0 2.77556e-17)
-(2.77556e-17 1.11022e-16 -5.55112e-17)
-(0 0 0)
-(0 -1.11022e-16 0)
-(0 0 -2.77556e-17)
-(0 0 0)
-(0 0 2.77556e-17)
-(2.77556e-17 0 -5.55112e-17)
-(0 0 0)
-(0 1.11022e-16 2.77556e-17)
-(0 0 0)
-(2.77556e-17 1.11022e-16 0)
-(-2.77556e-17 0 0)
-(-2.77556e-17 -2.22045e-16 2.77556e-17)
-(2.77556e-17 3.33067e-16 0)
-(2.77556e-17 0 -2.77556e-17)
-(-2.77556e-17 0 5.55112e-17)
-(-2.77556e-17 -2.22045e-16 5.55112e-17)
-(0 0 2.77556e-17)
-(-5.55112e-17 0 2.77556e-17)
-(0 0 -2.77556e-17)
-(0 0 2.77556e-17)
-(-5.55112e-17 -4.44089e-16 2.77556e-17)
-(-2.77556e-17 -2.22045e-16 2.77556e-17)
-(0 0 0)
-(0 -2.22045e-16 -2.77556e-17)
-(0 2.22045e-16 -2.77556e-17)
-(2.77556e-17 0 -2.77556e-17)
-(2.77556e-17 2.22045e-16 -5.55112e-17)
-(0 0 -2.77556e-17)
-(0 0 2.77556e-17)
-(-5.55112e-17 -4.44089e-16 2.77556e-17)
-(0 2.22045e-16 -2.77556e-17)
-(0 0 2.77556e-17)
-(0 2.22045e-16 -2.77556e-17)
-(0 0 -2.77556e-17)
-(2.77556e-17 -2.22045e-16 -2.77556e-17)
-(-2.77556e-17 -4.44089e-16 5.55112e-17)
-(0 2.22045e-16 -2.77556e-17)
-(2.77556e-17 2.22045e-16 -2.77556e-17)
-(-2.77556e-17 0 5.55112e-17)
-(0 0 2.77556e-17)
-(2.77556e-17 2.22045e-16 -2.77556e-17)
-(-2.77556e-17 -2.22045e-16 5.55112e-17)
-(-2.77556e-17 0 5.55112e-17)
-(-2.77556e-17 -2.22045e-16 -2.77556e-17)
-(-2.77556e-17 4.44089e-16 0)
-(0 0 -2.77556e-17)
-(0 0 2.77556e-17)
-(0 2.22045e-16 -2.77556e-17)
-(0 0 -2.77556e-17)
-(0 -2.22045e-16 0)
-(0 0 -2.77556e-17)
-(0 -2.22045e-16 -2.77556e-17)
-(2.77556e-17 0 2.77556e-17)
-(2.77556e-17 2.22045e-16 -5.55112e-17)
-(0 -2.22045e-16 -2.77556e-17)
-(0 -2.22045e-16 2.77556e-17)
-(0 2.22045e-16 -2.77556e-17)
-(0 -2.22045e-16 -2.77556e-17)
-(0 -4.44089e-16 2.77556e-17)
-(-5.55112e-17 -2.22045e-16 2.77556e-17)
-(-2.77556e-17 -2.22045e-16 0)
-(2.77556e-17 0 -2.77556e-17)
-(-2.77556e-17 0 5.55112e-17)
-(0 2.22045e-16 -2.77556e-17)
-(2.77556e-17 -2.22045e-16 -2.77556e-17)
-(-2.77556e-17 -6.66134e-16 5.55112e-17)
-(-2.77556e-17 -2.22045e-16 5.55112e-17)
-(2.77556e-17 0 -2.77556e-17)
-(-2.77556e-17 -4.44089e-16 5.55112e-17)
-(-2.77556e-17 0 5.55112e-17)
-(-5.55112e-17 -2.22045e-16 0)
-(-2.77556e-17 2.22045e-16 0)
-(0 2.22045e-16 -2.77556e-17)
-(2.77556e-17 0 -2.77556e-17)
-(-2.77556e-17 0 5.55112e-17)
-(-2.77556e-17 -2.22045e-16 0)
-(2.77556e-17 0 -2.77556e-17)
-(-2.77556e-17 0 5.55112e-17)
-(-2.77556e-17 -2.22045e-16 5.55112e-17)
-(2.77556e-17 0 -2.77556e-17)
-(2.77556e-17 2.22045e-16 -5.55112e-17)
-(0 2.22045e-16 -2.77556e-17)
-(0 -2.22045e-16 0)
-(-5.55112e-17 -4.44089e-16 2.77556e-17)
-(0 0 -2.77556e-17)
-(0 -2.22045e-16 2.77556e-17)
-(-5.55112e-17 -6.66134e-16 2.77556e-17)
-(-2.77556e-17 -4.44089e-16 2.77556e-17)
-(2.77556e-17 2.22045e-16 -2.77556e-17)
-(2.77556e-17 2.22045e-16 -5.55112e-17)
-(0 -2.22045e-16 -2.77556e-17)
-(2.77556e-17 0 -2.77556e-17)
-(-2.77556e-17 -4.44089e-16 5.55112e-17)
-(0 0 -2.77556e-17)
-(2.77556e-17 0 -2.77556e-17)
-(-2.77556e-17 -2.22045e-16 5.55112e-17)
-(-2.77556e-17 2.22045e-16 5.55112e-17)
-(-2.77556e-17 6.66134e-16 -2.77556e-17)
-(-2.77556e-17 0 0)
-(0 0 -2.77556e-17)
-(2.77556e-17 -4.44089e-16 -2.77556e-17)
-(-2.77556e-17 -4.44089e-16 5.55112e-17)
-(-5.55112e-17 0 2.77556e-17)
-(2.77556e-17 4.44089e-16 -2.77556e-17)
-(-2.77556e-17 -4.44089e-16 5.55112e-17)
-(-2.77556e-17 -4.44089e-16 0)
-(2.77556e-17 4.44089e-16 -2.77556e-17)
-(-2.77556e-17 0 5.55112e-17)
-(0 -4.44089e-16 0)
-(0 4.44089e-16 0)
-(0 0 -2.77556e-17)
-(0 -4.44089e-16 -2.77556e-17)
-(-2.77556e-17 -4.44089e-16 2.77556e-17)
-(5.55112e-17 0 -5.55112e-17)
-(0 0 -2.77556e-17)
-(-2.77556e-17 -4.44089e-16 2.77556e-17)
-(5.55112e-17 4.44089e-16 -5.55112e-17)
-(-2.77556e-17 -4.44089e-16 0)
-(0 0 0)
-(0 0 -2.77556e-17)
-(0 0 -2.77556e-17)
-(0 0 2.77556e-17)
-(0 -4.44089e-16 0)
-(0 4.44089e-16 -2.77556e-17)
-(2.77556e-17 0 -2.77556e-17)
-(-2.77556e-17 0 5.55112e-17)
-(0 4.44089e-16 -2.77556e-17)
-(2.77556e-17 0 -2.77556e-17)
-(-2.77556e-17 -4.44089e-16 5.55112e-17)
-(-2.77556e-17 -4.44089e-16 0)
-(2.77556e-17 0 -2.77556e-17)
-(-2.77556e-17 0 5.55112e-17)
-(-5.55112e-17 -8.88178e-16 2.77556e-17)
-(2.77556e-17 4.44089e-16 -2.77556e-17)
-(-2.77556e-17 -4.44089e-16 5.55112e-17)
-(0 0 0)
-(2.77556e-17 3.46945e-18 -2.77556e-17)
-(2.77556e-17 3.46945e-18 1.38778e-17)
-(0 1.73472e-18 0)
-(-2.77556e-17 6.93889e-18 2.77556e-17)
-(0 -1.38778e-17 0)
-(2.77556e-17 6.93889e-18 1.38778e-17)
-(0 0 -2.77556e-17)
-(-2.77556e-17 -2.77556e-17 2.77556e-17)
-(-2.77556e-17 -1.38778e-17 0)
-(-2.77556e-17 -2.77556e-17 -2.77556e-17)
-(0 2.77556e-17 -1.38778e-17)
-(-2.77556e-17 -1.38778e-17 1.38778e-17)
-(0 0 -2.77556e-17)
-(0 2.77556e-17 1.38778e-17)
-(-8.32667e-17 -2.77556e-17 2.77556e-17)
-(2.77556e-17 -2.77556e-17 2.77556e-17)
-(-2.77556e-17 0 0)
-(-8.32667e-17 -8.32667e-17 2.77556e-17)
-(-2.77556e-17 5.55112e-17 0)
-(-2.77556e-17 0 1.38778e-17)
-(-8.32667e-17 -8.32667e-17 2.77556e-17)
-(-2.77556e-17 5.55112e-17 0)
-(0 5.55112e-17 -1.38778e-17)
-(-2.77556e-17 2.77556e-17 -1.38778e-17)
-(0 -1.11022e-16 2.77556e-17)
-(0 0 1.38778e-17)
-(0 0 -1.38778e-17)
-(0 0 2.77556e-17)
-(0 5.55112e-17 1.38778e-17)
-(0 -5.55112e-17 -2.77556e-17)
-(0 0 2.77556e-17)
-(0 5.55112e-17 1.38778e-17)
-(0 -1.11022e-16 -2.77556e-17)
-(0 -5.55112e-17 2.77556e-17)
-(0 5.55112e-17 1.38778e-17)
-(0 0 -2.77556e-17)
-(-2.77556e-17 0 0)
-(2.77556e-17 0 -1.38778e-17)
-(0 -5.55112e-17 -1.38778e-17)
-(-2.77556e-17 1.11022e-16 0)
-(2.77556e-17 0 -1.38778e-17)
-(-2.77556e-17 0 1.38778e-17)
-(-2.77556e-17 0 0)
-(2.77556e-17 5.55112e-17 -1.38778e-17)
-(-2.77556e-17 1.11022e-16 1.38778e-17)
-(0 0 0)
-(0 0 0)
-(-5.55112e-17 -1.11022e-16 2.77556e-17)
-(-5.55112e-17 -1.11022e-16 2.77556e-17)
-(2.77556e-17 1.11022e-16 -2.77556e-17)
-(2.77556e-17 0 0)
-(-5.55112e-17 -2.22045e-16 2.77556e-17)
-(2.77556e-17 1.11022e-16 -2.77556e-17)
-(0 0 -1.38778e-17)
-(-5.55112e-17 -2.22045e-16 2.77556e-17)
-(2.77556e-17 1.11022e-16 -2.77556e-17)
-(0 0 -1.38778e-17)
-(-5.55112e-17 -1.11022e-16 2.77556e-17)
-(2.77556e-17 2.22045e-16 -2.77556e-17)
-(0 -1.11022e-16 -1.38778e-17)
-(2.77556e-17 -1.11022e-16 2.77556e-17)
-(0 -1.11022e-16 0)
-(0 0 -1.38778e-17)
-(2.77556e-17 -1.11022e-16 2.77556e-17)
-(-2.77556e-17 0 0)
-(0 -1.11022e-16 1.38778e-17)
-(2.77556e-17 -1.11022e-16 2.77556e-17)
-(0 -1.11022e-16 0)
-(0 -2.22045e-16 -1.38778e-17)
-(-5.55112e-17 -1.11022e-16 2.77556e-17)
-(2.77556e-17 2.22045e-16 -2.77556e-17)
-(0 1.11022e-16 1.38778e-17)
-(-2.77556e-17 -2.22045e-16 2.77556e-17)
-(0 2.22045e-16 0)
-(0 0 -1.38778e-17)
-(-5.55112e-17 -2.22045e-16 2.77556e-17)
-(2.77556e-17 1.11022e-16 -2.77556e-17)
-(0 0 0)
-(-2.77556e-17 -1.11022e-16 2.77556e-17)
-(0 1.11022e-16 0)
-(0 1.11022e-16 -1.38778e-17)
-(-5.55112e-17 -1.11022e-16 2.77556e-17)
-(2.77556e-17 0 -2.77556e-17)
-(0 0 0)
-(0 0 0)
-(0 0 0)
-(2.77556e-17 1.11022e-16 0)
-(0 0 0)
-(0 2.22045e-16 1.38778e-17)
-(2.77556e-17 3.33067e-16 0)
-(0 0 0)
-(0 0 0)
-(0 0 -1.38778e-17)
-(0 0 0)
-(-5.55112e-17 0 2.77556e-17)
-(-2.77556e-17 -2.22045e-16 1.38778e-17)
-(0 2.22045e-16 0)
-(-5.55112e-17 -4.44089e-16 2.77556e-17)
-(-2.77556e-17 0 1.38778e-17)
-(0 2.22045e-16 2.77556e-17)
-(0 -2.22045e-16 -2.77556e-17)
-(-2.77556e-17 0 1.38778e-17)
-(-2.77556e-17 -2.22045e-16 2.77556e-17)
-(0 2.22045e-16 -2.77556e-17)
-(-2.77556e-17 -2.22045e-16 1.38778e-17)
-(0 0 0)
-(-5.55112e-17 -4.44089e-16 2.77556e-17)
-(-2.77556e-17 0 1.38778e-17)
-(-2.77556e-17 -4.44089e-16 2.77556e-17)
-(0 2.22045e-16 -2.77556e-17)
-(-2.77556e-17 -2.22045e-16 1.38778e-17)
-(0 0 0)
-(0 -2.22045e-16 0)
-(0 2.22045e-16 -1.38778e-17)
-(0 0 0)
-(0 0 0)
-(0 0 -1.38778e-17)
-(0 0 0)
-(0 0 0)
-(0 2.22045e-16 -1.38778e-17)
-(-2.77556e-17 0 2.77556e-17)
-(0 4.44089e-16 0)
-(0 0 -1.38778e-17)
-(-2.77556e-17 -2.22045e-16 2.77556e-17)
-(0 2.22045e-16 0)
-(-2.77556e-17 -2.22045e-16 1.38778e-17)
-(0 0 2.77556e-17)
-(0 2.22045e-16 -2.77556e-17)
-(-2.77556e-17 -4.44089e-16 1.38778e-17)
-(-2.77556e-17 0 2.77556e-17)
-(0 2.22045e-16 -2.77556e-17)
-(-2.77556e-17 -4.44089e-16 1.38778e-17)
-(-2.77556e-17 -4.44089e-16 2.77556e-17)
-(0 2.22045e-16 0)
-(-2.77556e-17 -2.22045e-16 1.38778e-17)
-(0 -2.22045e-16 0)
-(-5.55112e-17 -2.22045e-16 2.77556e-17)
-(-2.77556e-17 -2.22045e-16 1.38778e-17)
-(0 0 0)
-(0 2.22045e-16 0)
-(-2.77556e-17 0 1.38778e-17)
-(0 4.44089e-16 0)
-(0 -4.44089e-16 0)
-(0 0 -1.38778e-17)
-(0 2.22045e-16 0)
-(0 -4.44089e-16 0)
-(0 -4.44089e-16 -1.38778e-17)
-(-2.77556e-17 0 2.77556e-17)
-(0 2.22045e-16 0)
-(0 2.22045e-16 -1.38778e-17)
-(0 0 0)
-(0 4.44089e-16 0)
-(-2.77556e-17 -2.22045e-16 1.38778e-17)
-(0 -4.44089e-16 0)
-(0 0 0)
-(0 0 -1.38778e-17)
-(-2.77556e-17 0 2.77556e-17)
-(0 2.22045e-16 -2.77556e-17)
-(-2.77556e-17 0 1.38778e-17)
-(0 0 0)
-(-5.55112e-17 -4.44089e-16 2.77556e-17)
-(-2.77556e-17 -2.22045e-16 1.38778e-17)
-(0 6.66134e-16 0)
-(-5.55112e-17 0 2.77556e-17)
-(-2.77556e-17 -4.44089e-16 -1.38778e-17)
-(-2.77556e-17 -4.44089e-16 2.77556e-17)
-(0 -2.22045e-16 -2.77556e-17)
-(-2.77556e-17 -4.44089e-16 1.38778e-17)
-(0 4.44089e-16 0)
-(0 -4.44089e-16 0)
-(-2.77556e-17 -2.22045e-16 1.38778e-17)
-(0 0 0)
-(0 0 0)
-(0 4.44089e-16 -1.38778e-17)
-(-2.77556e-17 0 2.77556e-17)
-(0 0 0)
-(0 4.44089e-16 -1.38778e-17)
-(0 0 0)
-(0 -4.44089e-16 0)
-(-5.55112e-17 0 2.77556e-17)
-(0 4.44089e-16 0)
-(0 -4.44089e-16 0)
-(-2.77556e-17 -4.44089e-16 1.38778e-17)
-(0 0 0)
-(0 0 0)
-(0 0 0)
-(-2.77556e-17 -4.44089e-16 2.77556e-17)
-(0 0 0)
-(-2.77556e-17 -8.88178e-16 1.38778e-17)
-(-5.55112e-17 0 2.77556e-17)
-(5.55112e-17 8.88178e-16 -2.77556e-17)
-(-2.77556e-17 0 1.38778e-17)
-(-5.55112e-17 0 2.77556e-17)
-(5.55112e-17 4.44089e-16 -2.77556e-17)
-(-2.77556e-17 -4.44089e-16 0)
-(-2.77556e-17 -4.44089e-16 2.77556e-17)
-(0 0 0)
-(-2.77556e-17 4.44089e-16 1.38778e-17)
-(0 4.44089e-16 0)
-(0 -4.44089e-16 0)
-(-2.77556e-17 0 1.38778e-17)
-(0 0 0)
-(0 0 0)
-(-2.77556e-17 0 1.38778e-17)
-(0 0 0)
-(0 0 0)
-(-2.77556e-17 -4.44089e-16 1.38778e-17)
-(0 0 0)
-(0 0 0)
-(-5.55112e-17 -8.88178e-16 2.77556e-17)
-(0 0 0)
-(0 -4.44089e-16 0)
-(0 0 0)
-(0 3.46945e-18 -2.77556e-17)
-(2.77556e-17 3.46945e-18 -1.38778e-17)
-(2.77556e-17 0 0)
-(0 0 0)
-(-2.77556e-17 -2.08167e-17 6.93889e-18)
-(2.77556e-17 6.93889e-18 -1.38778e-17)
-(0 -1.38778e-17 0)
-(-2.77556e-17 -1.38778e-17 6.93889e-18)
-(0 0 0)
-(-2.77556e-17 0 2.77556e-17)
-(-2.77556e-17 0 0)
-(-2.77556e-17 -1.38778e-17 6.93889e-18)
-(-2.77556e-17 0 0)
-(-2.77556e-17 2.77556e-17 6.93889e-18)
-(-5.55112e-17 -2.77556e-17 1.38778e-17)
-(0 2.77556e-17 -4.16334e-17)
-(-2.77556e-17 -5.55112e-17 1.38778e-17)
-(-5.55112e-17 -8.32667e-17 1.38778e-17)
-(-2.77556e-17 -2.77556e-17 1.38778e-17)
-(-2.77556e-17 0 6.93889e-18)
-(-5.55112e-17 -2.77556e-17 1.38778e-17)
-(-5.55112e-17 0 1.38778e-17)
-(0 5.55112e-17 -6.93889e-18)
-(0 2.77556e-17 -6.93889e-18)
-(0 0 1.38778e-17)
-(0 0 6.93889e-18)
-(-2.77556e-17 0 6.93889e-18)
-(0 0 1.38778e-17)
-(0 5.55112e-17 6.93889e-18)
-(2.77556e-17 0 -1.38778e-17)
-(0 -5.55112e-17 1.38778e-17)
-(0 5.55112e-17 6.93889e-18)
-(2.77556e-17 -5.55112e-17 -1.38778e-17)
-(0 -1.11022e-16 1.38778e-17)
-(0 5.55112e-17 6.93889e-18)
-(2.77556e-17 5.55112e-17 -1.38778e-17)
-(-5.55112e-17 -5.55112e-17 0)
-(0 5.55112e-17 -2.77556e-17)
-(-2.77556e-17 -1.66533e-16 6.93889e-18)
-(-5.55112e-17 -5.55112e-17 0)
-(0 1.11022e-16 -2.77556e-17)
-(0 5.55112e-17 -6.93889e-18)
-(-5.55112e-17 -1.66533e-16 0)
-(0 5.55112e-17 -2.77556e-17)
-(0 1.11022e-16 -6.93889e-18)
-(-2.77556e-17 0 -1.38778e-17)
-(0 0 0)
-(-5.55112e-17 -1.11022e-16 1.38778e-17)
-(-2.77556e-17 -1.11022e-16 0)
-(0 0 -6.93889e-18)
-(0 -1.11022e-16 6.93889e-18)
-(-2.77556e-17 0 0)
-(0 0 -6.93889e-18)
-(0 0 0)
-(-2.77556e-17 -1.11022e-16 0)
-(0 0 -6.93889e-18)
-(0 0 0)
-(-2.77556e-17 -1.11022e-16 0)
-(0 0 -6.93889e-18)
-(0 -1.11022e-16 0)
-(0 2.22045e-16 -2.77556e-17)
-(0 -1.11022e-16 0)
-(0 1.11022e-16 6.93889e-18)
-(-2.77556e-17 -1.11022e-16 -1.38778e-17)
-(-2.77556e-17 -1.11022e-16 0)
-(0 0 6.93889e-18)
-(0 2.22045e-16 -2.77556e-17)
-(0 -2.22045e-16 0)
-(0 -1.11022e-16 6.93889e-18)
-(-2.77556e-17 0 1.38778e-17)
-(0 1.11022e-16 -6.93889e-18)
-(0 1.11022e-16 6.93889e-18)
-(0 -3.33067e-16 0)
-(-2.77556e-17 1.11022e-16 6.93889e-18)
-(0 0 0)
-(-2.77556e-17 -2.22045e-16 1.38778e-17)
-(0 0 -6.93889e-18)
-(0 0 0)
-(0 -1.11022e-16 0)
-(-2.77556e-17 0 6.93889e-18)
-(0 0 0)
-(-2.77556e-17 -1.11022e-16 1.38778e-17)
-(0 0 -6.93889e-18)
-(0 0 0)
-(-2.77556e-17 0 -1.38778e-17)
-(0 0 0)
-(0 -1.11022e-16 6.93889e-18)
-(0 0 -1.38778e-17)
-(0 2.22045e-16 0)
-(0 0 6.93889e-18)
-(2.77556e-17 0 -2.77556e-17)
-(0 0 0)
-(0 2.22045e-16 -1.38778e-17)
-(-2.77556e-17 -2.22045e-16 1.38778e-17)
-(-2.77556e-17 0 6.93889e-18)
-(0 -2.22045e-16 0)
-(-2.77556e-17 0 1.38778e-17)
-(-2.77556e-17 -2.22045e-16 6.93889e-18)
-(-2.77556e-17 0 6.93889e-18)
-(-5.55112e-17 0 0)
-(0 -2.22045e-16 -1.38778e-17)
-(0 0 0)
-(-2.77556e-17 -2.22045e-16 -1.38778e-17)
-(0 2.22045e-16 0)
-(0 0 0)
-(-2.77556e-17 -4.44089e-16 1.38778e-17)
-(-2.77556e-17 -2.22045e-16 6.93889e-18)
-(0 0 0)
-(-2.77556e-17 -2.22045e-16 0)
-(-2.77556e-17 -2.22045e-16 6.93889e-18)
-(0 0 0)
-(2.77556e-17 0 -2.77556e-17)
-(0 2.22045e-16 0)
-(-2.77556e-17 0 6.93889e-18)
-(2.77556e-17 2.22045e-16 -2.77556e-17)
-(0 0 0)
-(0 2.22045e-16 -6.93889e-18)
-(2.77556e-17 0 -2.77556e-17)
-(0 0 0)
-(0 4.44089e-16 -1.38778e-17)
-(0 -2.22045e-16 0)
-(-2.77556e-17 0 6.93889e-18)
-(-2.77556e-17 -2.22045e-16 6.93889e-18)
-(-5.55112e-17 -6.66134e-16 1.38778e-17)
-(-2.77556e-17 0 6.93889e-18)
-(0 0 0)
-(-5.55112e-17 -2.22045e-16 0)
-(0 2.22045e-16 -1.38778e-17)
-(0 -2.22045e-16 0)
-(-2.77556e-17 0 -1.38778e-17)
-(0 0 0)
-(0 -2.22045e-16 0)
-(-5.55112e-17 -4.44089e-16 1.38778e-17)
-(-2.77556e-17 -2.22045e-16 6.93889e-18)
-(0 0 0)
-(-2.77556e-17 -2.22045e-16 1.38778e-17)
-(-2.77556e-17 -2.22045e-16 6.93889e-18)
-(-2.77556e-17 -2.22045e-16 6.93889e-18)
-(2.77556e-17 2.22045e-16 -2.77556e-17)
-(0 0 0)
-(0 0 0)
-(2.77556e-17 0 -2.77556e-17)
-(0 0 0)
-(0 2.22045e-16 -1.38778e-17)
-(2.77556e-17 0 -2.77556e-17)
-(0 0 0)
-(0 -2.22045e-16 -1.38778e-17)
-(0 -6.66134e-16 0)
-(-2.77556e-17 0 6.93889e-18)
-(-2.77556e-17 2.22045e-16 6.93889e-18)
-(2.77556e-17 -2.22045e-16 -2.77556e-17)
-(0 4.44089e-16 0)
-(-2.77556e-17 -2.22045e-16 6.93889e-18)
-(2.77556e-17 -2.22045e-16 -2.77556e-17)
-(0 0 0)
-(0 2.22045e-16 -1.38778e-17)
-(-2.77556e-17 0 -1.38778e-17)
-(0 0 0)
-(0 0 0)
-(2.77556e-17 2.22045e-16 -1.38778e-17)
-(-2.77556e-17 -2.22045e-16 6.93889e-18)
-(0 0 0)
-(-2.77556e-17 -4.44089e-16 1.38778e-17)
-(-2.77556e-17 2.22045e-16 6.93889e-18)
-(-2.77556e-17 -4.44089e-16 6.93889e-18)
-(-2.77556e-17 2.22045e-16 -1.38778e-17)
-(0 -2.22045e-16 0)
-(0 0 0)
-(2.77556e-17 -4.44089e-16 -2.77556e-17)
-(0 2.22045e-16 0)
-(0 2.22045e-16 0)
-(2.77556e-17 0 -2.77556e-17)
-(0 0 0)
-(0 4.44089e-16 -1.38778e-17)
-(0 0 0)
-(-2.77556e-17 -6.66134e-16 6.93889e-18)
-(-2.77556e-17 -2.22045e-16 6.93889e-18)
-(2.77556e-17 -4.44089e-16 -2.77556e-17)
-(0 -4.44089e-16 0)
-(-5.55112e-17 0 1.38778e-17)
-(2.77556e-17 -4.44089e-16 -2.77556e-17)
-(0 4.44089e-16 0)
-(-2.77556e-17 -4.44089e-16 6.93889e-18)
-(2.77556e-17 4.44089e-16 -2.77556e-17)
-(0 0 0)
-(0 0 0)
-(0 4.44089e-16 -1.38778e-17)
-(-2.77556e-17 -4.44089e-16 6.93889e-18)
-(0 0 0)
-(-2.77556e-17 -8.88178e-16 1.38778e-17)
-(2.77556e-17 8.88178e-16 -6.93889e-18)
-(0 0 0)
-(-2.77556e-17 -4.44089e-16 1.38778e-17)
-(2.77556e-17 4.44089e-16 -6.93889e-18)
-(-2.77556e-17 0 -6.93889e-18)
-(0 0 -1.38778e-17)
-(-2.77556e-17 -4.44089e-16 6.93889e-18)
-(0 4.44089e-16 0)
-(0 0 -1.38778e-17)
-(0 0 0)
-(0 4.44089e-16 0)
-(2.77556e-17 0 -2.77556e-17)
-(0 0 0)
-(0 0 0)
-(2.77556e-17 0 -2.77556e-17)
-(0 0 0)
-(-2.77556e-17 -4.44089e-16 6.93889e-18)
-(2.77556e-17 0 -2.77556e-17)
-(0 0 0)
-(-5.55112e-17 -8.88178e-16 1.38778e-17)
-(2.77556e-17 0 -2.77556e-17)
-(0 -4.44089e-16 0)
-(0 0 0)
-(0 -3.46945e-18 6.93889e-18)
-(-2.77556e-17 -3.46945e-18 1.73472e-18)
-(-2.77556e-17 1.73472e-18 1.73472e-18)
-(-5.55112e-17 -6.93889e-18 1.38778e-17)
-(0 -1.38778e-17 0)
-(-2.77556e-17 0 1.73472e-18)
-(-2.77556e-17 0 0)
-(-2.77556e-17 0 1.73472e-18)
-(2.77556e-17 1.38778e-17 0)
-(0 0 0)
-(0 -2.77556e-17 0)
-(0 -1.38778e-17 0)
-(0 -2.77556e-17 6.93889e-18)
-(-2.77556e-17 0 3.46945e-18)
-(0 0 0)
-(2.77556e-17 2.77556e-17 0)
-(-2.77556e-17 0 1.73472e-18)
-(0 -2.77556e-17 0)
-(-2.77556e-17 0 0)
-(-2.77556e-17 0 1.73472e-18)
-(0 -8.32667e-17 0)
-(0 0 0)
-(-5.55112e-17 0 3.46945e-18)
-(-5.55112e-17 -2.77556e-17 3.46945e-18)
-(-5.55112e-17 0 0)
-(0 0 1.73472e-18)
-(0 0 1.73472e-18)
-(-5.55112e-17 0 0)
-(0 0 1.73472e-18)
-(-2.77556e-17 -5.55112e-17 3.46945e-18)
-(-5.55112e-17 5.55112e-17 0)
-(0 0 1.73472e-18)
-(-2.77556e-17 0 3.46945e-18)
-(-5.55112e-17 -1.11022e-16 0)
-(0 0 1.73472e-18)
-(-2.77556e-17 -5.55112e-17 3.46945e-18)
-(2.77556e-17 5.55112e-17 6.93889e-18)
-(-2.77556e-17 0 1.73472e-18)
-(0 0 1.73472e-18)
-(2.77556e-17 0 6.93889e-18)
-(-2.77556e-17 -5.55112e-17 1.73472e-18)
-(-2.77556e-17 0 1.73472e-18)
-(2.77556e-17 -5.55112e-17 6.93889e-18)
-(-2.77556e-17 -5.55112e-17 1.73472e-18)
-(-2.77556e-17 0 1.73472e-18)
-(2.77556e-17 1.11022e-16 -6.93889e-18)
-(2.77556e-17 1.11022e-16 0)
-(0 0 0)
-(0 0 6.93889e-18)
-(0 1.11022e-16 0)
-(0 0 1.73472e-18)
-(0 0 6.93889e-18)
-(0 0 0)
-(0 0 0)
-(0 0 6.93889e-18)
-(0 1.11022e-16 0)
-(0 0 0)
-(0 -2.22045e-16 6.93889e-18)
-(0 -1.11022e-16 0)
-(0 0 0)
-(2.77556e-17 0 -6.93889e-18)
-(-2.77556e-17 -3.33067e-16 3.46945e-18)
-(-2.77556e-17 0 3.46945e-18)
-(2.77556e-17 -1.11022e-16 -6.93889e-18)
-(0 -2.22045e-16 3.46945e-18)
-(-2.77556e-17 -1.11022e-16 1.73472e-18)
-(2.77556e-17 2.22045e-16 -6.93889e-18)
-(2.77556e-17 -1.11022e-16 3.46945e-18)
-(0 0 1.73472e-18)
-(0 -1.11022e-16 6.93889e-18)
-(0 -1.11022e-16 -1.73472e-18)
-(0 1.11022e-16 1.73472e-18)
-(-2.77556e-17 -1.11022e-16 1.38778e-17)
-(0 0 0)
-(-5.55112e-17 -2.22045e-16 1.73472e-18)
-(0 -2.22045e-16 6.93889e-18)
-(0 -2.22045e-16 0)
-(0 -1.11022e-16 1.73472e-18)
-(-2.77556e-17 0 1.38778e-17)
-(2.77556e-17 -1.11022e-16 -1.73472e-18)
-(-2.77556e-17 0 0)
-(0 -1.11022e-16 6.93889e-18)
-(0 -1.11022e-16 0)
-(-2.77556e-17 -1.11022e-16 1.73472e-18)
-(2.77556e-17 -2.22045e-16 -6.93889e-18)
-(2.77556e-17 1.11022e-16 0)
-(0 -2.22045e-16 1.73472e-18)
-(0 0 0)
-(0 0 0)
-(0 2.22045e-16 1.73472e-18)
-(-2.77556e-17 -4.44089e-16 6.93889e-18)
-(-2.77556e-17 0 1.73472e-18)
-(-2.77556e-17 0 1.73472e-18)
-(0 0 6.93889e-18)
-(0 2.22045e-16 -1.73472e-18)
-(-2.77556e-17 0 -1.73472e-18)
-(0 0 6.93889e-18)
-(-2.77556e-17 -2.22045e-16 1.73472e-18)
-(2.77556e-17 2.22045e-16 -1.73472e-18)
-(2.77556e-17 2.22045e-16 -6.93889e-18)
-(0 0 0)
-(-2.77556e-17 0 -1.73472e-18)
-(0 0 6.93889e-18)
-(-8.32667e-17 -2.22045e-16 1.73472e-18)
-(-2.77556e-17 -2.22045e-16 -1.73472e-18)
-(0 0 6.93889e-18)
-(-2.77556e-17 0 1.73472e-18)
-(-2.77556e-17 -2.22045e-16 -1.73472e-18)
-(0 2.22045e-16 0)
-(-2.77556e-17 -2.22045e-16 3.46945e-18)
-(-2.77556e-17 -2.22045e-16 0)
-(-2.77556e-17 -2.22045e-16 6.93889e-18)
-(2.77556e-17 2.22045e-16 -3.46945e-18)
-(2.77556e-17 2.22045e-16 1.73472e-18)
-(-2.77556e-17 -2.22045e-16 6.93889e-18)
-(-2.77556e-17 -2.22045e-16 0)
-(0 0 1.73472e-18)
-(-2.77556e-17 0 6.93889e-18)
-(-2.77556e-17 0 0)
-(0 0 -1.73472e-18)
-(-2.77556e-17 0 6.93889e-18)
-(-2.77556e-17 0 0)
-(-2.77556e-17 -2.22045e-16 -1.73472e-18)
-(0 0 6.93889e-18)
-(0 2.22045e-16 3.46945e-18)
-(-2.77556e-17 -2.22045e-16 0)
-(2.77556e-17 0 -6.93889e-18)
-(2.77556e-17 0 -1.73472e-18)
-(-2.77556e-17 -2.22045e-16 0)
-(0 -2.22045e-16 0)
-(2.77556e-17 2.22045e-16 -1.73472e-18)
-(-2.77556e-17 -4.44089e-16 -1.73472e-18)
-(0 -2.22045e-16 6.93889e-18)
-(0 0 3.46945e-18)
-(-2.77556e-17 0 1.73472e-18)
-(0 -4.44089e-16 6.93889e-18)
-(2.77556e-17 -2.22045e-16 -1.73472e-18)
-(0 0 3.46945e-18)
-(-2.77556e-17 -2.22045e-16 6.93889e-18)
-(2.77556e-17 -2.22045e-16 3.46945e-18)
-(0 0 1.73472e-18)
-(-2.77556e-17 -4.44089e-16 6.93889e-18)
-(-2.77556e-17 -2.22045e-16 1.73472e-18)
-(-2.77556e-17 -2.22045e-16 1.73472e-18)
-(-2.77556e-17 0 6.93889e-18)
-(-2.77556e-17 0 1.73472e-18)
-(-2.77556e-17 -4.44089e-16 1.73472e-18)
-(-2.77556e-17 -2.22045e-16 6.93889e-18)
-(0 -2.22045e-16 1.73472e-18)
-(-2.77556e-17 0 1.73472e-18)
-(-2.77556e-17 -2.22045e-16 6.93889e-18)
-(2.77556e-17 4.44089e-16 0)
-(-5.55112e-17 0 1.73472e-18)
-(-2.77556e-17 -2.22045e-16 6.93889e-18)
-(2.77556e-17 0 0)
-(-2.77556e-17 4.44089e-16 -1.73472e-18)
-(0 -4.44089e-16 6.93889e-18)
-(0 -2.22045e-16 1.73472e-18)
-(-2.77556e-17 0 0)
-(-5.55112e-17 -2.22045e-16 1.38778e-17)
-(0 -6.66134e-16 0)
-(-2.77556e-17 -2.22045e-16 -1.73472e-18)
-(0 0 6.93889e-18)
-(0 0 1.73472e-18)
-(-2.77556e-17 -4.44089e-16 1.73472e-18)
-(0 -4.44089e-16 6.93889e-18)
-(-2.77556e-17 -2.22045e-16 -1.73472e-18)
-(-2.77556e-17 -2.22045e-16 0)
-(-2.77556e-17 -4.44089e-16 6.93889e-18)
-(2.77556e-17 -2.22045e-16 0)
-(-2.77556e-17 -4.44089e-16 0)
-(-2.77556e-17 0 6.93889e-18)
-(2.77556e-17 2.22045e-16 -3.46945e-18)
-(0 -2.22045e-16 0)
-(-2.77556e-17 -4.44089e-16 6.93889e-18)
-(-2.77556e-17 -6.66134e-16 3.46945e-18)
-(0 2.22045e-16 1.73472e-18)
-(-2.77556e-17 0 6.93889e-18)
-(-2.77556e-17 0 1.73472e-18)
-(2.77556e-17 0 -1.73472e-18)
-(-2.77556e-17 4.44089e-16 6.93889e-18)
-(-2.77556e-17 0 1.73472e-18)
-(2.77556e-17 -4.44089e-16 -1.73472e-18)
-(-2.77556e-17 0 6.93889e-18)
-(-2.77556e-17 -4.44089e-16 1.73472e-18)
-(0 0 0)
-(-5.55112e-17 -4.44089e-16 1.38778e-17)
-(0 -4.44089e-16 0)
-(-2.77556e-17 0 -1.73472e-18)
-(0 0 6.93889e-18)
-(-2.77556e-17 -4.44089e-16 3.46945e-18)
-(-2.77556e-17 0 -1.73472e-18)
-(0 0 6.93889e-18)
-(-2.77556e-17 0 3.46945e-18)
-(0 0 0)
-(-5.55112e-17 0 1.38778e-17)
-(-2.77556e-17 -8.88178e-16 1.73472e-18)
-(-2.77556e-17 0 -1.73472e-18)
-(0 4.44089e-16 -6.93889e-18)
-(0 0 0)
-(-2.77556e-17 -4.44089e-16 -1.73472e-18)
-(-2.77556e-17 -8.88178e-16 6.93889e-18)
-(-2.77556e-17 -4.44089e-16 1.73472e-18)
-(-2.77556e-17 0 -1.73472e-18)
-(-2.77556e-17 0 6.93889e-18)
-(-2.77556e-17 -4.44089e-16 1.73472e-18)
-(2.77556e-17 -4.44089e-16 -1.73472e-18)
-(-2.77556e-17 -8.88178e-16 6.93889e-18)
-(-2.77556e-17 -4.44089e-16 1.73472e-18)
-(2.77556e-17 0 -1.73472e-18)
-(-2.77556e-17 -4.44089e-16 6.93889e-18)
-(-2.77556e-17 -4.44089e-16 1.73472e-18)
-(0 0 0)
-(-2.77556e-17 -3.46945e-18 -1.73472e-18)
-(-2.77556e-17 -3.46945e-18 -6.93889e-18)
-(-2.77556e-17 0 -6.93889e-18)
-(0 6.93889e-18 -1.73472e-18)
-(2.77556e-17 0 -6.93889e-18)
-(0 0 -6.93889e-18)
-(-2.77556e-17 0 3.46945e-18)
-(-2.77556e-17 0 0)
-(-2.77556e-17 1.38778e-17 6.93889e-18)
-(0 0 -1.73472e-18)
-(-2.77556e-17 -2.77556e-17 -6.93889e-18)
-(0 -1.38778e-17 0)
-(-2.77556e-17 0 1.73472e-18)
-(-2.77556e-17 -2.77556e-17 -6.93889e-18)
-(-2.77556e-17 0 -1.38778e-17)
-(-2.77556e-17 0 1.73472e-18)
-(-5.55112e-17 -8.32667e-17 -1.38778e-17)
-(-2.77556e-17 -2.77556e-17 -1.38778e-17)
-(0 0 -1.73472e-18)
-(0 2.77556e-17 -6.93889e-18)
-(-2.77556e-17 -2.77556e-17 -1.38778e-17)
-(2.77556e-17 0 0)
-(-2.77556e-17 5.55112e-17 -6.93889e-18)
-(-2.77556e-17 5.55112e-17 6.93889e-18)
-(0 0 -1.73472e-18)
-(2.77556e-17 5.55112e-17 -6.93889e-18)
-(0 0 -6.93889e-18)
-(0 0 -1.73472e-18)
-(2.77556e-17 0 -6.93889e-18)
-(0 5.55112e-17 1.38778e-17)
-(0 0 -1.73472e-18)
-(2.77556e-17 -5.55112e-17 -6.93889e-18)
-(0 -5.55112e-17 1.38778e-17)
-(0 0 -1.73472e-18)
-(2.77556e-17 5.55112e-17 -6.93889e-18)
-(0 5.55112e-17 1.38778e-17)
-(0 0 -1.73472e-18)
-(-5.55112e-17 -5.55112e-17 -6.93889e-18)
-(0 5.55112e-17 -6.93889e-18)
-(0 -5.55112e-17 -1.73472e-18)
-(-5.55112e-17 -1.11022e-16 -6.93889e-18)
-(-2.77556e-17 0 0)
-(0 -5.55112e-17 -1.73472e-18)
-(-5.55112e-17 -1.11022e-16 -6.93889e-18)
-(-2.77556e-17 0 0)
-(2.77556e-17 1.11022e-16 0)
-(2.77556e-17 1.11022e-16 6.93889e-18)
-(0 0 -6.93889e-18)
-(0 -1.11022e-16 0)
-(0 0 -6.93889e-18)
-(0 0 0)
-(0 -1.11022e-16 0)
-(0 0 -6.93889e-18)
-(0 0 0)
-(0 1.11022e-16 0)
-(0 0 -6.93889e-18)
-(0 0 0)
-(0 -1.11022e-16 0)
-(0 0 -6.93889e-18)
-(0 1.11022e-16 0)
-(2.77556e-17 2.22045e-16 -1.73472e-18)
-(2.77556e-17 0 6.93889e-18)
-(0 -1.11022e-16 0)
-(-2.77556e-17 -1.11022e-16 0)
-(2.77556e-17 0 6.93889e-18)
-(0 -1.11022e-16 0)
-(-2.77556e-17 -1.11022e-16 -1.73472e-18)
-(2.77556e-17 -2.22045e-16 6.93889e-18)
-(0 -1.11022e-16 0)
-(-2.77556e-17 -1.11022e-16 0)
-(0 -1.11022e-16 -6.93889e-18)
-(0 0 0)
-(-5.55112e-17 -1.11022e-16 0)
-(0 0 -6.93889e-18)
-(0 0 0)
-(-2.77556e-17 0 0)
-(0 -3.33067e-16 -6.93889e-18)
-(0 0 6.93889e-18)
-(-2.77556e-17 -1.11022e-16 -1.73472e-18)
-(0 -1.11022e-16 -6.93889e-18)
-(0 0 0)
-(-2.77556e-17 -2.22045e-16 -3.46945e-18)
-(0 1.11022e-16 -6.93889e-18)
-(0 0 6.93889e-18)
-(2.77556e-17 1.11022e-16 0)
-(2.77556e-17 2.22045e-16 6.93889e-18)
-(0 0 0)
-(0 0 0)
-(0 0 0)
-(0 2.22045e-16 0)
-(-2.77556e-17 0 1.73472e-18)
-(-2.77556e-17 2.22045e-16 -6.93889e-18)
-(0 0 0)
-(2.77556e-17 0 -1.73472e-18)
-(0 0 -6.93889e-18)
-(-2.77556e-17 0 -6.93889e-18)
-(-2.77556e-17 0 -1.73472e-18)
-(0 0 -6.93889e-18)
-(0 -2.22045e-16 0)
-(0 -2.22045e-16 0)
-(-2.77556e-17 -2.22045e-16 -6.93889e-18)
-(-2.77556e-17 0 -6.93889e-18)
-(0 2.22045e-16 0)
-(2.77556e-17 2.22045e-16 0)
-(-2.77556e-17 -2.22045e-16 -6.93889e-18)
-(-2.77556e-17 0 1.73472e-18)
-(0 0 -6.93889e-18)
-(-2.77556e-17 0 -6.93889e-18)
-(2.77556e-17 0 3.46945e-18)
-(-2.77556e-17 -4.44089e-16 -6.93889e-18)
-(-2.77556e-17 -2.22045e-16 -6.93889e-18)
-(-2.77556e-17 0 1.73472e-18)
-(-2.77556e-17 -2.22045e-16 -6.93889e-18)
-(0 -2.22045e-16 -6.93889e-18)
-(0 0 -1.73472e-18)
-(-2.77556e-17 -2.22045e-16 -6.93889e-18)
-(2.77556e-17 0 6.93889e-18)
-(0 2.22045e-16 1.73472e-18)
-(-2.77556e-17 0 -6.93889e-18)
-(0 -2.22045e-16 -6.93889e-18)
-(-2.77556e-17 -6.66134e-16 -1.73472e-18)
-(-2.77556e-17 0 -6.93889e-18)
-(0 2.22045e-16 -6.93889e-18)
-(2.77556e-17 2.22045e-16 1.73472e-18)
-(0 2.22045e-16 0)
-(-2.77556e-17 0 -6.93889e-18)
-(-2.77556e-17 0 0)
-(-2.77556e-17 -2.22045e-16 -6.93889e-18)
-(-2.77556e-17 -2.22045e-16 -6.93889e-18)
-(-2.77556e-17 -2.22045e-16 -1.73472e-18)
-(0 0 -6.93889e-18)
-(-2.77556e-17 -2.22045e-16 -6.93889e-18)
-(0 0 -1.73472e-18)
-(0 2.22045e-16 -6.93889e-18)
-(-2.77556e-17 -2.22045e-16 -6.93889e-18)
-(-2.77556e-17 -4.44089e-16 0)
-(0 4.44089e-16 -6.93889e-18)
-(-2.77556e-17 -2.22045e-16 -6.93889e-18)
-(-2.77556e-17 2.22045e-16 -1.73472e-18)
-(-2.77556e-17 -2.22045e-16 -6.93889e-18)
-(-2.77556e-17 -2.22045e-16 -6.93889e-18)
-(-2.77556e-17 -2.22045e-16 1.73472e-18)
-(-2.77556e-17 0 -6.93889e-18)
-(0 0 0)
-(-2.77556e-17 0 1.73472e-18)
-(-2.77556e-17 0 -6.93889e-18)
-(0 0 0)
-(2.77556e-17 -2.22045e-16 1.73472e-18)
-(0 0 0)
-(0 -2.22045e-16 -6.93889e-18)
-(-2.77556e-17 2.22045e-16 1.73472e-18)
-(-2.77556e-17 -2.22045e-16 -6.93889e-18)
-(0 0 -6.93889e-18)
-(-2.77556e-17 4.44089e-16 1.73472e-18)
-(-2.77556e-17 -2.22045e-16 -6.93889e-18)
-(0 0 0)
-(-2.77556e-17 0 0)
-(2.77556e-17 2.22045e-16 0)
-(-2.77556e-17 0 -6.93889e-18)
-(0 4.44089e-16 -1.73472e-18)
-(0 0 -6.93889e-18)
-(-2.77556e-17 -2.22045e-16 -6.93889e-18)
-(0 -2.22045e-16 -1.73472e-18)
-(0 0 -6.93889e-18)
-(-2.77556e-17 -6.66134e-16 -6.93889e-18)
-(0 0 -1.73472e-18)
-(2.77556e-17 0 0)
-(-2.77556e-17 -2.22045e-16 -6.93889e-18)
-(-2.77556e-17 4.44089e-16 1.73472e-18)
-(-2.77556e-17 2.22045e-16 -6.93889e-18)
-(-2.77556e-17 -2.22045e-16 -6.93889e-18)
-(-2.77556e-17 0 1.73472e-18)
-(-2.77556e-17 0 -6.93889e-18)
-(0 -4.44089e-16 -6.93889e-18)
-(-2.77556e-17 0 -3.46945e-18)
-(-2.77556e-17 -6.66134e-16 -6.93889e-18)
-(0 2.22045e-16 -6.93889e-18)
-(-2.77556e-17 0 1.73472e-18)
-(-2.77556e-17 0 -6.93889e-18)
-(0 4.44089e-16 -6.93889e-18)
-(-2.77556e-17 0 1.73472e-18)
-(-2.77556e-17 -4.44089e-16 -6.93889e-18)
-(-5.55112e-17 -8.88178e-16 -1.38778e-17)
-(-2.77556e-17 -4.44089e-16 1.73472e-18)
-(-2.77556e-17 0 -6.93889e-18)
-(0 -4.44089e-16 6.93889e-18)
-(0 -4.44089e-16 -1.73472e-18)
-(0 0 0)
-(-2.77556e-17 0 -6.93889e-18)
-(2.77556e-17 4.44089e-16 1.73472e-18)
-(0 -4.44089e-16 -6.93889e-18)
-(-2.77556e-17 0 -6.93889e-18)
-(2.77556e-17 0 1.73472e-18)
-(0 0 -6.93889e-18)
-(2.77556e-17 4.44089e-16 0)
-(2.77556e-17 4.44089e-16 1.73472e-18)
-(0 -4.44089e-16 -6.93889e-18)
-(-2.77556e-17 0 -6.93889e-18)
-(0 0 0)
-(0 -4.44089e-16 -6.93889e-18)
-(-2.77556e-17 -4.44089e-16 -6.93889e-18)
-(-2.77556e-17 -4.44089e-16 1.73472e-18)
-(-2.77556e-17 0 -6.93889e-18)
-(-2.77556e-17 0 -6.93889e-18)
-(-2.77556e-17 -4.44089e-16 1.73472e-18)
-(-2.77556e-17 -4.44089e-16 -6.93889e-18)
-(-5.55112e-17 -4.44089e-16 -1.38778e-17)
-(-2.77556e-17 -4.44089e-16 1.73472e-18)
-(-2.77556e-17 0 -6.93889e-18)
-(0 0 -6.93889e-18)
-(-2.77556e-17 -4.44089e-16 1.73472e-18)
-(-2.77556e-17 -4.44089e-16 -6.93889e-18)
-(0 4.44089e-16 6.93889e-18)
-(2.77556e-17 0 0)
-(-2.77556e-17 6.93889e-18 -1.38778e-17)
-(-2.77556e-17 0 2.77556e-17)
-(-2.77556e-17 6.93889e-18 -6.93889e-18)
-(-2.77556e-17 -6.93889e-18 -2.77556e-17)
-(2.77556e-17 1.38778e-17 4.16334e-17)
-(-2.77556e-17 -1.38778e-17 -6.93889e-18)
-(0 0 -1.38778e-17)
-(-2.77556e-17 -2.77556e-17 1.38778e-17)
-(-2.77556e-17 0 0)
-(0 0 1.38778e-17)
-(2.77556e-17 0 1.38778e-17)
-(-2.77556e-17 -2.77556e-17 1.38778e-17)
-(-2.77556e-17 0 -2.77556e-17)
-(0 -2.77556e-17 -1.38778e-17)
-(-2.77556e-17 -5.55112e-17 -1.38778e-17)
-(-2.77556e-17 0 -2.77556e-17)
-(0 -2.77556e-17 -1.38778e-17)
-(0 5.55112e-17 0)
-(-2.77556e-17 -2.77556e-17 -2.77556e-17)
-(0 0 -1.38778e-17)
-(0 5.55112e-17 0)
-(-2.77556e-17 -1.11022e-16 -2.77556e-17)
-(0 -2.77556e-17 -1.38778e-17)
-(2.77556e-17 0 -6.93889e-18)
-(-2.77556e-17 -5.55112e-17 -2.77556e-17)
-(-2.77556e-17 -1.11022e-16 -1.38778e-17)
-(2.77556e-17 5.55112e-17 -6.93889e-18)
-(-2.77556e-17 -5.55112e-17 -2.77556e-17)
-(0 -5.55112e-17 1.38778e-17)
-(2.77556e-17 5.55112e-17 -6.93889e-18)
-(-2.77556e-17 0 -2.77556e-17)
-(0 -5.55112e-17 1.38778e-17)
-(2.77556e-17 5.55112e-17 -6.93889e-18)
-(-2.77556e-17 -1.66533e-16 -2.77556e-17)
-(0 0 1.38778e-17)
-(0 5.55112e-17 0)
-(-2.77556e-17 -5.55112e-17 -2.77556e-17)
-(-2.77556e-17 -5.55112e-17 -1.38778e-17)
-(0 1.11022e-16 0)
-(-2.77556e-17 -5.55112e-17 -2.77556e-17)
-(-2.77556e-17 -5.55112e-17 0)
-(0 5.55112e-17 0)
-(-2.77556e-17 -1.11022e-16 -2.77556e-17)
-(-2.77556e-17 1.11022e-16 0)
-(0 0 0)
-(-2.77556e-17 0 -1.38778e-17)
-(-2.77556e-17 -1.11022e-16 -1.38778e-17)
-(-5.55112e-17 0 -1.38778e-17)
-(2.77556e-17 0 0)
-(-5.55112e-17 -1.11022e-16 -1.38778e-17)
-(-5.55112e-17 -2.22045e-16 -1.38778e-17)
-(2.77556e-17 0 0)
-(0 -1.11022e-16 1.38778e-17)
-(-5.55112e-17 -2.22045e-16 -1.38778e-17)
-(2.77556e-17 2.22045e-16 0)
-(0 -1.11022e-16 1.38778e-17)
-(-5.55112e-17 0 -1.38778e-17)
-(2.77556e-17 0 0)
-(0 0 1.38778e-17)
-(0 0 0)
-(-2.77556e-17 -1.11022e-16 -1.38778e-17)
-(-5.55112e-17 -2.22045e-16 -2.77556e-17)
-(2.77556e-17 -1.11022e-16 0)
-(-2.77556e-17 -1.11022e-16 -1.38778e-17)
-(-5.55112e-17 -1.11022e-16 -2.77556e-17)
-(0 1.11022e-16 0)
-(-2.77556e-17 -2.22045e-16 -1.38778e-17)
-(-5.55112e-17 -2.22045e-16 -2.77556e-17)
-(-5.55112e-17 -2.22045e-16 -1.38778e-17)
-(0 0 -1.38778e-17)
-(-5.55112e-17 -1.11022e-16 -2.77556e-17)
-(-2.77556e-17 -2.22045e-16 -6.93889e-18)
-(-2.77556e-17 0 -2.77556e-17)
-(0 0 1.38778e-17)
-(-5.55112e-17 -2.22045e-16 -1.38778e-17)
-(0 0 -1.38778e-17)
-(0 -2.22045e-16 -1.38778e-17)
-(-2.77556e-17 -2.22045e-16 -6.93889e-18)
-(-2.77556e-17 -2.22045e-16 -2.77556e-17)
-(0 -1.11022e-16 1.38778e-17)
-(-5.55112e-17 -2.22045e-16 -1.38778e-17)
-(0 -1.11022e-16 -1.38778e-17)
-(0 -2.22045e-16 -1.38778e-17)
-(0 0 0)
-(-2.77556e-17 0 -1.38778e-17)
-(-5.55112e-17 -2.22045e-16 -1.38778e-17)
-(0 -2.22045e-16 0)
-(0 0 -1.38778e-17)
-(-5.55112e-17 -2.22045e-16 -1.38778e-17)
-(0 0 0)
-(-2.77556e-17 0 -2.77556e-17)
-(-2.77556e-17 0 1.38778e-17)
-(-2.77556e-17 0 -6.93889e-18)
-(2.77556e-17 0 -1.38778e-17)
-(2.77556e-17 0 2.77556e-17)
-(-2.77556e-17 0 -6.93889e-18)
-(2.77556e-17 0 -1.38778e-17)
-(-2.77556e-17 -2.22045e-16 0)
-(0 0 6.93889e-18)
-(-5.55112e-17 -2.22045e-16 -2.77556e-17)
-(2.77556e-17 2.22045e-16 2.77556e-17)
-(0 2.22045e-16 1.38778e-17)
-(-5.55112e-17 -2.22045e-16 -2.77556e-17)
-(2.77556e-17 2.22045e-16 2.77556e-17)
-(-2.77556e-17 -2.22045e-16 -6.93889e-18)
-(2.77556e-17 -2.22045e-16 -1.38778e-17)
-(2.77556e-17 0 2.77556e-17)
-(-2.77556e-17 0 -6.93889e-18)
-(2.77556e-17 0 -1.38778e-17)
-(2.77556e-17 0 2.77556e-17)
-(0 2.22045e-16 0)
-(-2.77556e-17 0 -2.77556e-17)
-(-2.77556e-17 -2.22045e-16 -1.38778e-17)
-(0 2.22045e-16 0)
-(-2.77556e-17 -2.22045e-16 -2.77556e-17)
-(-5.55112e-17 0 0)
-(0 0 0)
-(-2.77556e-17 0 -2.77556e-17)
-(-2.77556e-17 0 1.38778e-17)
-(-2.77556e-17 0 -6.93889e-18)
-(0 -2.22045e-16 -2.77556e-17)
-(-2.77556e-17 0 -1.38778e-17)
-(-2.77556e-17 -2.22045e-16 -6.93889e-18)
-(0 -2.22045e-16 -1.38778e-17)
-(2.77556e-17 0 2.77556e-17)
-(0 2.22045e-16 6.93889e-18)
-(-5.55112e-17 -2.22045e-16 -2.77556e-17)
-(2.77556e-17 0 2.77556e-17)
-(0 2.22045e-16 1.38778e-17)
-(-5.55112e-17 -2.22045e-16 -2.77556e-17)
-(2.77556e-17 -2.22045e-16 2.77556e-17)
-(-2.77556e-17 -2.22045e-16 -6.93889e-18)
-(2.77556e-17 0 0)
-(2.77556e-17 0 2.77556e-17)
-(-2.77556e-17 -2.22045e-16 -6.93889e-18)
-(2.77556e-17 0 -1.38778e-17)
-(0 -2.22045e-16 0)
-(0 0 0)
-(-2.77556e-17 2.22045e-16 -2.77556e-17)
-(2.77556e-17 0 2.77556e-17)
-(0 0 0)
-(-2.77556e-17 0 -2.77556e-17)
-(-2.77556e-17 0 1.38778e-17)
-(0 0 0)
-(-2.77556e-17 0 -2.77556e-17)
-(-2.77556e-17 0 1.38778e-17)
-(-2.77556e-17 0 -6.93889e-18)
-(0 2.22045e-16 -2.77556e-17)
-(-2.77556e-17 -4.44089e-16 -1.38778e-17)
-(0 -2.22045e-16 0)
-(-2.77556e-17 2.22045e-16 -2.77556e-17)
-(-5.55112e-17 0 -1.38778e-17)
-(0 0 0)
-(-2.77556e-17 -2.22045e-16 -2.77556e-17)
-(-2.77556e-17 -2.22045e-16 1.38778e-17)
-(0 2.22045e-16 1.38778e-17)
-(-5.55112e-17 -4.44089e-16 -2.77556e-17)
-(2.77556e-17 -2.22045e-16 2.77556e-17)
-(-2.77556e-17 -2.22045e-16 -6.93889e-18)
-(0 -2.22045e-16 -2.77556e-17)
-(2.77556e-17 0 2.77556e-17)
-(-2.77556e-17 -4.44089e-16 -6.93889e-18)
-(2.77556e-17 0 -1.38778e-17)
-(0 -4.44089e-16 0)
-(0 4.44089e-16 1.38778e-17)
-(-5.55112e-17 0 -2.77556e-17)
-(2.77556e-17 0 2.77556e-17)
-(0 2.22045e-16 0)
-(-2.77556e-17 4.44089e-16 -2.77556e-17)
-(2.77556e-17 4.44089e-16 2.77556e-17)
-(0 0 0)
-(-2.77556e-17 0 -2.77556e-17)
-(-2.77556e-17 0 1.38778e-17)
-(-2.77556e-17 0 -6.93889e-18)
-(0 -6.66134e-16 -2.77556e-17)
-(-2.77556e-17 -2.22045e-16 -1.38778e-17)
-(0 -4.44089e-16 0)
-(-2.77556e-17 -4.44089e-16 -2.77556e-17)
-(-2.77556e-17 0 -1.38778e-17)
-(0 4.44089e-16 0)
-(-2.77556e-17 -4.44089e-16 -2.77556e-17)
-(0 -4.44089e-16 1.38778e-17)
-(0 0 0)
-(-2.77556e-17 -4.44089e-16 -2.77556e-17)
-(0 0 1.38778e-17)
-(-2.77556e-17 -4.44089e-16 -6.93889e-18)
-(-2.77556e-17 -4.44089e-16 -2.77556e-17)
-(2.77556e-17 0 2.77556e-17)
-(-5.55112e-17 -8.88178e-16 -1.38778e-17)
-(2.77556e-17 4.44089e-16 0)
-(2.77556e-17 0 2.77556e-17)
-(-5.55112e-17 -4.44089e-16 -1.38778e-17)
-(2.77556e-17 4.44089e-16 0)
-(-5.55112e-17 0 1.38778e-17)
-(-2.77556e-17 -4.44089e-16 -6.93889e-18)
-(0 -4.44089e-16 -1.38778e-17)
-(2.77556e-17 0 2.77556e-17)
-(0 0 0)
-(0 0 -2.77556e-17)
-(2.77556e-17 0 2.77556e-17)
-(0 0 0)
-(-2.77556e-17 0 -2.77556e-17)
-(2.77556e-17 0 2.77556e-17)
-(0 0 0)
-(-2.77556e-17 0 -2.77556e-17)
-(0 0 1.38778e-17)
-(0 0 0)
-(-2.77556e-17 0 -2.77556e-17)
-(-2.77556e-17 -4.44089e-16 -1.38778e-17)
-(0 4.44089e-16 0)
-(-2.77556e-17 0 -2.77556e-17)
-(0 -8.88178e-16 1.38778e-17)
-(2.77556e-17 0 0)
-(2.77556e-17 0 2.77556e-17)
-(0 1.73472e-18 5.55112e-17)
-(-2.77556e-17 6.93889e-18 -1.38778e-17)
-(0 -1.38778e-17 0)
-(2.77556e-17 6.93889e-18 0)
-(0 0 0)
-(-2.77556e-17 -2.77556e-17 -2.77556e-17)
-(-2.77556e-17 0 0)
-(-2.77556e-17 -2.77556e-17 0)
-(0 2.77556e-17 2.77556e-17)
-(0 -1.38778e-17 -2.77556e-17)
-(0 0 1.38778e-17)
-(2.77556e-17 2.77556e-17 2.77556e-17)
-(-5.55112e-17 -2.77556e-17 -5.55112e-17)
-(0 -5.55112e-17 -2.77556e-17)
-(0 5.55112e-17 -2.77556e-17)
-(-5.55112e-17 -8.32667e-17 -5.55112e-17)
-(-2.77556e-17 5.55112e-17 -1.38778e-17)
-(0 5.55112e-17 2.77556e-17)
-(-5.55112e-17 -1.11022e-16 -5.55112e-17)
-(-2.77556e-17 5.55112e-17 -1.38778e-17)
-(-2.77556e-17 5.55112e-17 0)
-(0 2.77556e-17 -2.77556e-17)
-(0 -5.55112e-17 -1.38778e-17)
-(0 0 2.77556e-17)
-(0 0 0)
-(0 5.55112e-17 -1.38778e-17)
-(0 5.55112e-17 2.77556e-17)
-(0 -5.55112e-17 -2.77556e-17)
-(0 5.55112e-17 -1.38778e-17)
-(0 1.11022e-16 2.77556e-17)
-(0 5.55112e-17 -2.77556e-17)
-(0 0 -1.38778e-17)
-(0 5.55112e-17 2.77556e-17)
-(0 0 -2.77556e-17)
-(-2.77556e-17 5.55112e-17 -1.38778e-17)
-(0 0 0)
-(0 1.66533e-16 0)
-(-2.77556e-17 1.11022e-16 -1.38778e-17)
-(0 0 0)
-(-2.77556e-17 -5.55112e-17 -2.77556e-17)
-(-2.77556e-17 0 -1.38778e-17)
-(0 0 0)
-(-2.77556e-17 5.55112e-17 -2.77556e-17)
-(0 0 0)
-(0 0 0)
-(-5.55112e-17 -1.11022e-16 -2.77556e-17)
-(-5.55112e-17 0 -2.77556e-17)
-(2.77556e-17 1.11022e-16 2.77556e-17)
-(2.77556e-17 0 0)
-(-5.55112e-17 -2.22045e-16 -2.77556e-17)
-(2.77556e-17 1.11022e-16 2.77556e-17)
-(0 0 0)
-(-5.55112e-17 -2.22045e-16 -2.77556e-17)
-(2.77556e-17 1.11022e-16 2.77556e-17)
-(0 0 0)
-(-5.55112e-17 -1.11022e-16 -2.77556e-17)
-(2.77556e-17 2.22045e-16 2.77556e-17)
-(0 -1.11022e-16 0)
-(2.77556e-17 -1.11022e-16 0)
-(0 -1.11022e-16 0)
-(0 0 -2.77556e-17)
-(2.77556e-17 -1.11022e-16 0)
-(-2.77556e-17 0 0)
-(0 -1.11022e-16 -2.77556e-17)
-(2.77556e-17 -1.11022e-16 0)
-(0 -1.11022e-16 0)
-(0 -1.11022e-16 -2.77556e-17)
-(-5.55112e-17 -2.22045e-16 -2.77556e-17)
-(2.77556e-17 0 2.77556e-17)
-(0 1.11022e-16 -2.77556e-17)
-(-2.77556e-17 -2.22045e-16 -1.38778e-17)
-(0 2.22045e-16 0)
-(0 1.11022e-16 2.77556e-17)
-(-5.55112e-17 -2.22045e-16 -2.77556e-17)
-(2.77556e-17 1.11022e-16 2.77556e-17)
-(0 0 -2.77556e-17)
-(-2.77556e-17 -2.22045e-16 -1.38778e-17)
-(0 0 0)
-(0 0 2.77556e-17)
-(-5.55112e-17 -1.11022e-16 -2.77556e-17)
-(2.77556e-17 0 2.77556e-17)
-(0 0 -2.77556e-17)
-(0 0 0)
-(0 0 0)
-(2.77556e-17 1.11022e-16 0)
-(0 -2.22045e-16 1.38778e-17)
-(-2.77556e-17 -2.22045e-16 0)
-(2.77556e-17 3.33067e-16 0)
-(-2.77556e-17 -2.22045e-16 -1.38778e-17)
-(-2.77556e-17 0 0)
-(-2.77556e-17 -2.22045e-16 -2.77556e-17)
-(0 0 1.38778e-17)
-(-5.55112e-17 0 -2.77556e-17)
-(0 0 0)
-(0 2.22045e-16 1.38778e-17)
-(-5.55112e-17 -4.44089e-16 -2.77556e-17)
-(-2.77556e-17 -2.22045e-16 -2.77556e-17)
-(0 2.22045e-16 1.38778e-17)
-(0 -2.22045e-16 2.77556e-17)
-(0 2.22045e-16 0)
-(0 0 1.38778e-17)
-(2.77556e-17 2.22045e-16 2.77556e-17)
-(0 0 0)
-(0 0 1.38778e-17)
-(-5.55112e-17 -4.44089e-16 -2.77556e-17)
-(0 2.22045e-16 0)
-(-2.77556e-17 -4.44089e-16 -1.38778e-17)
-(0 2.22045e-16 0)
-(0 0 0)
-(-2.77556e-17 2.22045e-16 -1.38778e-17)
-(-2.77556e-17 -4.44089e-16 0)
-(0 2.22045e-16 0)
-(-2.77556e-17 0 -1.38778e-17)
-(-2.77556e-17 0 0)
-(0 0 -2.77556e-17)
-(-2.77556e-17 -2.22045e-16 -1.38778e-17)
-(-2.77556e-17 -2.22045e-16 0)
-(-2.77556e-17 0 -2.77556e-17)
-(-2.77556e-17 0 1.38778e-17)
-(-2.77556e-17 4.44089e-16 2.77556e-17)
-(0 0 0)
-(-2.77556e-17 -2.22045e-16 -1.38778e-17)
-(0 2.22045e-16 0)
-(0 0 0)
-(0 0 1.38778e-17)
-(0 0 2.77556e-17)
-(0 -2.22045e-16 0)
-(0 2.22045e-16 1.38778e-17)
-(2.77556e-17 2.22045e-16 2.77556e-17)
-(0 -2.22045e-16 0)
-(-2.77556e-17 -4.44089e-16 -1.38778e-17)
-(0 2.22045e-16 0)
-(0 -2.22045e-16 0)
-(0 -2.22045e-16 1.38778e-17)
-(-5.55112e-17 -2.22045e-16 -2.77556e-17)
-(-2.77556e-17 -2.22045e-16 -2.77556e-17)
-(-2.77556e-17 -2.22045e-16 -1.38778e-17)
-(-2.77556e-17 0 0)
-(0 2.22045e-16 0)
-(-2.77556e-17 2.22045e-16 -1.38778e-17)
-(-2.77556e-17 -6.66134e-16 0)
-(-2.77556e-17 -2.22045e-16 -2.77556e-17)
-(-2.77556e-17 0 -1.38778e-17)
-(-2.77556e-17 -4.44089e-16 0)
-(-2.77556e-17 0 -2.77556e-17)
-(-2.77556e-17 0 -1.38778e-17)
-(-2.77556e-17 2.22045e-16 2.77556e-17)
-(0 2.22045e-16 0)
-(-2.77556e-17 -2.22045e-16 -1.38778e-17)
-(-2.77556e-17 0 0)
-(-2.77556e-17 -2.22045e-16 -2.77556e-17)
-(-2.77556e-17 -2.22045e-16 -1.38778e-17)
-(-2.77556e-17 0 0)
-(-2.77556e-17 -2.22045e-16 -2.77556e-17)
-(0 2.22045e-16 1.38778e-17)
-(2.77556e-17 2.22045e-16 2.77556e-17)
-(0 2.22045e-16 0)
-(0 0 1.38778e-17)
-(-5.55112e-17 -4.44089e-16 -2.77556e-17)
-(0 0 0)
-(0 0 1.38778e-17)
-(-5.55112e-17 -6.66134e-16 -2.77556e-17)
-(-2.77556e-17 -4.44089e-16 -2.77556e-17)
-(0 4.44089e-16 1.38778e-17)
-(2.77556e-17 2.22045e-16 2.77556e-17)
-(0 -2.22045e-16 0)
-(-2.77556e-17 2.22045e-16 -1.38778e-17)
-(-2.77556e-17 -4.44089e-16 0)
-(0 0 0)
-(-2.77556e-17 -2.22045e-16 -1.38778e-17)
-(-2.77556e-17 -2.22045e-16 0)
-(-2.77556e-17 2.22045e-16 -2.77556e-17)
-(-2.77556e-17 0 1.38778e-17)
-(-2.77556e-17 0 2.77556e-17)
-(0 0 0)
-(-2.77556e-17 -4.44089e-16 -1.38778e-17)
-(-2.77556e-17 -4.44089e-16 0)
-(-5.55112e-17 0 -2.77556e-17)
-(-2.77556e-17 4.44089e-16 -1.38778e-17)
-(-2.77556e-17 -4.44089e-16 0)
-(-2.77556e-17 -4.44089e-16 -2.77556e-17)
-(-2.77556e-17 0 -1.38778e-17)
-(-2.77556e-17 0 0)
-(0 -4.44089e-16 0)
-(-2.77556e-17 -4.44089e-16 -1.38778e-17)
-(0 0 0)
-(0 -4.44089e-16 0)
-(-5.55112e-17 -8.88178e-16 -2.77556e-17)
-(5.55112e-17 0 2.77556e-17)
-(0 0 0)
-(-5.55112e-17 0 -2.77556e-17)
-(5.55112e-17 4.44089e-16 2.77556e-17)
-(-2.77556e-17 -4.44089e-16 2.77556e-17)
-(-2.77556e-17 -4.44089e-16 -1.38778e-17)
-(0 0 0)
-(0 0 0)
-(0 4.44089e-16 0)
-(0 -4.44089e-16 0)
-(0 4.44089e-16 0)
-(-2.77556e-17 -4.44089e-16 -1.38778e-17)
-(-2.77556e-17 0 0)
-(0 4.44089e-16 0)
-(-2.77556e-17 -4.44089e-16 -1.38778e-17)
-(-2.77556e-17 -4.44089e-16 0)
-(-2.77556e-17 -4.44089e-16 -2.77556e-17)
-(-2.77556e-17 0 -1.38778e-17)
-(-2.77556e-17 0 0)
-(-5.55112e-17 -8.88178e-16 -2.77556e-17)
-(-2.77556e-17 4.44089e-16 -1.38778e-17)
-(-2.77556e-17 -4.44089e-16 0)
-(0 0 0)
-(2.77556e-17 3.46945e-18 2.77556e-17)
-(0 0 -2.77556e-17)
-(0 -1.73472e-18 2.77556e-17)
-(-2.77556e-17 6.93889e-18 -2.77556e-17)
-(0 0 -2.77556e-17)
-(-2.77556e-17 -6.93889e-18 -2.77556e-17)
-(0 0 0)
-(-2.77556e-17 0 -2.77556e-17)
-(0 -1.38778e-17 0)
-(-2.77556e-17 -2.77556e-17 -2.77556e-17)
-(0 0 -2.77556e-17)
-(0 -1.38778e-17 0)
-(0 0 2.77556e-17)
-(2.77556e-17 0 5.55112e-17)
-(-2.77556e-17 0 0)
-(2.77556e-17 -2.77556e-17 -2.77556e-17)
-(0 0 -2.77556e-17)
-(-2.77556e-17 -2.77556e-17 0)
-(-2.77556e-17 5.55112e-17 5.55112e-17)
-(2.77556e-17 0 5.55112e-17)
-(-2.77556e-17 -5.55112e-17 0)
-(-2.77556e-17 5.55112e-17 5.55112e-17)
-(2.77556e-17 0 2.77556e-17)
-(-2.77556e-17 0 -2.77556e-17)
-(0 -1.11022e-16 2.77556e-17)
-(0 5.55112e-17 5.55112e-17)
-(0 -5.55112e-17 -2.77556e-17)
-(0 0 2.77556e-17)
-(0 5.55112e-17 5.55112e-17)
-(-2.77556e-17 -5.55112e-17 2.77556e-17)
-(0 0 2.77556e-17)
-(0 0 5.55112e-17)
-(-2.77556e-17 -5.55112e-17 2.77556e-17)
-(0 -5.55112e-17 2.77556e-17)
-(0 0 5.55112e-17)
-(-2.77556e-17 -1.11022e-16 2.77556e-17)
-(-2.77556e-17 0 2.77556e-17)
-(2.77556e-17 0 2.77556e-17)
-(0 -5.55112e-17 -2.77556e-17)
-(-2.77556e-17 1.11022e-16 2.77556e-17)
-(2.77556e-17 5.55112e-17 2.77556e-17)
-(-2.77556e-17 0 0)
-(-2.77556e-17 0 2.77556e-17)
-(2.77556e-17 0 2.77556e-17)
-(-2.77556e-17 5.55112e-17 0)
-(0 0 -2.77556e-17)
-(0 0 -2.77556e-17)
-(0 -1.11022e-16 -2.77556e-17)
-(-5.55112e-17 -1.11022e-16 -5.55112e-17)
-(0 0 0)
-(0 0 -2.77556e-17)
-(-5.55112e-17 -2.22045e-16 -5.55112e-17)
-(0 0 0)
-(-2.77556e-17 1.11022e-16 0)
-(-5.55112e-17 -2.22045e-16 -5.55112e-17)
-(0 -2.22045e-16 0)
-(-2.77556e-17 0 0)
-(-5.55112e-17 -1.11022e-16 -5.55112e-17)
-(0 -1.11022e-16 0)
-(-2.77556e-17 0 0)
-(2.77556e-17 -1.11022e-16 -2.77556e-17)
-(2.77556e-17 0 0)
-(-2.77556e-17 -2.22045e-16 -5.55112e-17)
-(2.77556e-17 -1.11022e-16 -5.55112e-17)
-(-2.77556e-17 -1.11022e-16 -2.77556e-17)
-(0 0 -2.77556e-17)
-(2.77556e-17 -1.11022e-16 -2.77556e-17)
-(2.77556e-17 -1.11022e-16 0)
-(-2.77556e-17 -2.22045e-16 -5.55112e-17)
-(-5.55112e-17 -1.11022e-16 -5.55112e-17)
-(0 0 0)
-(0 -1.11022e-16 -2.77556e-17)
-(-2.77556e-17 -2.22045e-16 -2.77556e-17)
-(0 -2.22045e-16 0)
-(-2.77556e-17 0 0)
-(-5.55112e-17 -2.22045e-16 -5.55112e-17)
-(0 0 0)
-(-2.77556e-17 -1.11022e-16 0)
-(-2.77556e-17 -1.11022e-16 -2.77556e-17)
-(0 -1.11022e-16 0)
-(-2.77556e-17 0 0)
-(-5.55112e-17 -1.11022e-16 -5.55112e-17)
-(0 0 0)
-(-2.77556e-17 1.11022e-16 0)
-(0 0 -2.77556e-17)
-(0 -1.11022e-16 -2.77556e-17)
-(0 -1.11022e-16 -2.77556e-17)
-(0 0 0)
-(-2.77556e-17 2.22045e-16 0)
-(0 0 -2.77556e-17)
-(0 0 2.77556e-17)
-(2.77556e-17 0 -2.77556e-17)
-(2.77556e-17 0 -2.77556e-17)
-(0 0 2.77556e-17)
-(0 0 0)
-(2.77556e-17 -2.22045e-16 2.77556e-17)
-(0 2.22045e-16 2.77556e-17)
-(0 -2.22045e-16 0)
-(0 0 -2.77556e-17)
-(0 2.22045e-16 -2.77556e-17)
-(2.77556e-17 0 2.77556e-17)
-(2.77556e-17 0 2.77556e-17)
-(-2.77556e-17 -2.22045e-16 -5.55112e-17)
-(2.77556e-17 0 -2.77556e-17)
-(2.77556e-17 0 2.77556e-17)
-(0 0 2.77556e-17)
-(0 0 0)
-(2.77556e-17 -2.22045e-16 2.77556e-17)
-(-2.77556e-17 -4.44089e-16 -2.77556e-17)
-(0 0 0)
-(2.77556e-17 -2.22045e-16 2.77556e-17)
-(0 0 2.77556e-17)
-(2.77556e-17 -2.22045e-16 -2.77556e-17)
-(0 0 -2.77556e-17)
-(0 0 2.77556e-17)
-(2.77556e-17 -2.22045e-16 -2.77556e-17)
-(0 0 0)
-(0 0 2.77556e-17)
-(2.77556e-17 2.22045e-16 -2.77556e-17)
-(2.77556e-17 4.44089e-16 2.77556e-17)
-(-2.77556e-17 0 -2.77556e-17)
-(0 0 -5.55112e-17)
-(0 0 -2.77556e-17)
-(-2.77556e-17 -2.22045e-16 0)
-(0 0 0)
-(2.77556e-17 0 2.77556e-17)
-(0 0 -2.77556e-17)
-(2.77556e-17 0 2.77556e-17)
-(2.77556e-17 -2.22045e-16 2.77556e-17)
-(-2.77556e-17 0 -5.55112e-17)
-(2.77556e-17 -2.22045e-16 5.55112e-17)
-(2.77556e-17 -2.22045e-16 2.77556e-17)
-(-2.77556e-17 -4.44089e-16 0)
-(0 -2.22045e-16 0)
-(2.77556e-17 2.22045e-16 2.77556e-17)
-(0 -2.22045e-16 2.77556e-17)
-(0 2.22045e-16 0)
-(-5.55112e-17 0 0)
-(0 0 2.77556e-17)
-(2.77556e-17 0 -2.77556e-17)
-(2.77556e-17 0 2.77556e-17)
-(0 4.44089e-16 2.77556e-17)
-(2.77556e-17 -2.22045e-16 -2.77556e-17)
-(2.77556e-17 0 -2.77556e-17)
-(0 2.22045e-16 2.77556e-17)
-(2.77556e-17 0 -2.77556e-17)
-(2.77556e-17 0 -2.77556e-17)
-(-2.77556e-17 0 0)
-(0 -2.22045e-16 -5.55112e-17)
-(0 0 -2.77556e-17)
-(0 0 2.77556e-17)
-(2.77556e-17 0 -2.77556e-17)
-(0 0 -2.77556e-17)
-(0 -4.44089e-16 2.77556e-17)
-(2.77556e-17 0 -2.77556e-17)
-(2.77556e-17 4.44089e-16 -2.77556e-17)
-(-2.77556e-17 0 -5.55112e-17)
-(2.77556e-17 0 -2.77556e-17)
-(2.77556e-17 0 2.77556e-17)
-(0 0 2.77556e-17)
-(0 -2.22045e-16 0)
-(2.77556e-17 2.22045e-16 2.77556e-17)
-(0 6.66134e-16 2.77556e-17)
-(0 -2.22045e-16 0)
-(-2.77556e-17 -2.22045e-16 2.77556e-17)
-(-2.77556e-17 -4.44089e-16 -5.55112e-17)
-(2.77556e-17 2.22045e-16 -2.77556e-17)
-(2.77556e-17 0 2.77556e-17)
-(0 4.44089e-16 2.77556e-17)
-(2.77556e-17 0 -2.77556e-17)
-(2.77556e-17 0 2.77556e-17)
-(0 0 2.77556e-17)
-(2.77556e-17 0 -2.77556e-17)
-(2.77556e-17 -2.22045e-16 2.77556e-17)
-(-2.77556e-17 0 -2.77556e-17)
-(0 -8.88178e-16 -5.55112e-17)
-(0 0 -2.77556e-17)
-(0 0 2.77556e-17)
-(2.77556e-17 -4.44089e-16 -2.77556e-17)
-(-2.77556e-17 0 -2.77556e-17)
-(0 4.44089e-16 2.77556e-17)
-(2.77556e-17 -4.44089e-16 -2.77556e-17)
-(0 -4.44089e-16 0)
-(0 0 2.77556e-17)
-(2.77556e-17 4.44089e-16 -2.77556e-17)
-(0 -4.44089e-16 -2.77556e-17)
-(-2.77556e-17 -4.44089e-16 0)
-(0 -4.44089e-16 0)
-(2.77556e-17 0 2.77556e-17)
-(-5.55112e-17 0 -2.77556e-17)
-(2.77556e-17 0 0)
-(2.77556e-17 0 2.77556e-17)
-(-5.55112e-17 0 -2.77556e-17)
-(2.77556e-17 -4.44089e-16 0)
-(2.77556e-17 0 -2.77556e-17)
-(-2.77556e-17 -4.44089e-16 0)
-(0 0 0)
-(2.77556e-17 0 2.77556e-17)
-(0 4.44089e-16 0)
-(0 0 -2.77556e-17)
-(2.77556e-17 4.44089e-16 2.77556e-17)
-(0 0 2.77556e-17)
-(2.77556e-17 4.44089e-16 -2.77556e-17)
-(2.77556e-17 0 2.77556e-17)
-(0 0 2.77556e-17)
-(2.77556e-17 0 -2.77556e-17)
-(0 -4.44089e-16 0)
-(0 0 2.77556e-17)
-(2.77556e-17 0 -2.77556e-17)
-(-2.77556e-17 -4.44089e-16 -2.77556e-17)
-(0 0 2.77556e-17)
-(2.77556e-17 4.44089e-16 -2.77556e-17)
-(0 -4.44089e-16 -2.77556e-17)
-(2.77556e-17 3.46945e-18 0)
-(2.77556e-17 -6.93889e-18 -2.77556e-17)
-(2.77556e-17 1.73472e-18 -5.55112e-17)
-(-2.77556e-17 -6.93889e-18 -2.77556e-17)
-(-2.77556e-17 6.93889e-18 -2.77556e-17)
-(2.77556e-17 6.93889e-18 0)
-(-2.77556e-17 -1.38778e-17 0)
-(-2.77556e-17 -1.38778e-17 -2.77556e-17)
-(0 -1.38778e-17 -2.77556e-17)
-(-2.77556e-17 0 -2.77556e-17)
-(-2.77556e-17 0 2.77556e-17)
-(-2.77556e-17 -1.38778e-17 -5.55112e-17)
-(0 0 5.55112e-17)
-(-2.77556e-17 0 0)
-(-5.55112e-17 -2.77556e-17 -2.77556e-17)
-(2.77556e-17 -2.77556e-17 2.77556e-17)
-(0 8.32667e-17 0)
-(-5.55112e-17 -5.55112e-17 -2.77556e-17)
-(0 8.32667e-17 5.55112e-17)
-(-2.77556e-17 2.77556e-17 5.55112e-17)
-(-5.55112e-17 -2.77556e-17 -2.77556e-17)
-(0 5.55112e-17 5.55112e-17)
-(-5.55112e-17 0 -2.77556e-17)
-(2.77556e-17 5.55112e-17 0)
-(2.77556e-17 -5.55112e-17 2.77556e-17)
-(-5.55112e-17 -1.11022e-16 -2.77556e-17)
-(-2.77556e-17 0 -8.32667e-17)
-(2.77556e-17 0 2.77556e-17)
-(-5.55112e-17 -5.55112e-17 -2.77556e-17)
-(0 -5.55112e-17 0)
-(2.77556e-17 5.55112e-17 2.77556e-17)
-(-5.55112e-17 0 -2.77556e-17)
-(0 5.55112e-17 0)
-(2.77556e-17 0 2.77556e-17)
-(-5.55112e-17 -5.55112e-17 -2.77556e-17)
-(0 5.55112e-17 0)
-(0 1.11022e-16 5.55112e-17)
-(-5.55112e-17 -1.11022e-16 -2.77556e-17)
-(-2.77556e-17 5.55112e-17 -8.32667e-17)
-(0 1.66533e-16 5.55112e-17)
-(-5.55112e-17 -1.66533e-16 -2.77556e-17)
-(2.77556e-17 5.55112e-17 2.77556e-17)
-(0 5.55112e-17 5.55112e-17)
-(-5.55112e-17 -5.55112e-17 -2.77556e-17)
-(2.77556e-17 1.11022e-16 2.77556e-17)
-(0 0 0)
-(0 0 0)
-(-5.55112e-17 -2.22045e-16 -2.77556e-17)
-(-5.55112e-17 -1.11022e-16 -2.77556e-17)
-(0 0 0)
-(0 -1.11022e-16 -2.77556e-17)
-(-5.55112e-17 -2.22045e-16 -2.77556e-17)
-(0 0 0)
-(0 0 -2.77556e-17)
-(-5.55112e-17 -2.22045e-16 -2.77556e-17)
-(0 0 0)
-(0 0 -2.77556e-17)
-(-5.55112e-17 0 -2.77556e-17)
-(0 1.11022e-16 0)
-(0 -1.11022e-16 -2.77556e-17)
-(0 0 0)
-(0 -1.11022e-16 5.55112e-17)
-(0 0 -2.77556e-17)
-(0 -1.11022e-16 0)
-(-2.77556e-17 -1.11022e-16 -2.77556e-17)
-(0 0 -2.77556e-17)
-(0 -1.11022e-16 0)
-(0 0 5.55112e-17)
-(0 0 -2.77556e-17)
-(-5.55112e-17 -1.11022e-16 -2.77556e-17)
-(0 1.11022e-16 -2.77556e-17)
-(0 1.11022e-16 -2.77556e-17)
-(-2.77556e-17 -2.22045e-16 -2.77556e-17)
-(-2.77556e-17 1.11022e-16 -5.55112e-17)
-(0 0 -2.77556e-17)
-(-5.55112e-17 -2.22045e-16 -2.77556e-17)
-(0 0 -2.77556e-17)
-(0 0 -2.77556e-17)
-(-2.77556e-17 -1.11022e-16 -2.77556e-17)
-(-2.77556e-17 -1.11022e-16 -5.55112e-17)
-(0 0 -2.77556e-17)
-(-5.55112e-17 -2.22045e-16 -2.77556e-17)
-(0 0 -2.77556e-17)
-(0 1.11022e-16 -2.77556e-17)
-(0 0 0)
-(0 0 0)
-(0 -2.22045e-16 -2.77556e-17)
-(0 0 -2.77556e-17)
-(0 0 -2.77556e-17)
-(0 -3.33067e-16 -2.77556e-17)
-(0 2.22045e-16 -2.77556e-17)
-(-2.77556e-17 2.22045e-16 0)
-(2.77556e-17 2.22045e-16 8.32667e-17)
-(-2.77556e-17 0 -2.77556e-17)
-(-2.77556e-17 0 2.77556e-17)
-(-2.77556e-17 2.22045e-16 -2.77556e-17)
-(-2.77556e-17 2.22045e-16 -2.77556e-17)
-(-2.77556e-17 -4.44089e-16 2.77556e-17)
-(0 4.44089e-16 -5.55112e-17)
-(2.77556e-17 4.44089e-16 5.55112e-17)
-(-2.77556e-17 -2.22045e-16 -2.77556e-17)
-(-2.77556e-17 0 -2.77556e-17)
-(0 0 2.77556e-17)
-(-2.77556e-17 -2.22045e-16 -5.55112e-17)
-(-2.77556e-17 0 -2.77556e-17)
-(-2.77556e-17 -2.22045e-16 -2.77556e-17)
-(-2.77556e-17 -2.22045e-16 2.77556e-17)
-(-2.77556e-17 -4.44089e-16 -2.77556e-17)
-(-2.77556e-17 -2.22045e-16 -2.77556e-17)
-(-2.77556e-17 -2.22045e-16 0)
-(-2.77556e-17 -2.22045e-16 -2.77556e-17)
-(0 0 -2.77556e-17)
-(-2.77556e-17 -2.22045e-16 0)
-(-2.77556e-17 -2.22045e-16 -8.32667e-17)
-(0 0 -2.77556e-17)
-(-2.77556e-17 0 0)
-(0 2.22045e-16 2.77556e-17)
-(0 0 -2.77556e-17)
-(-2.77556e-17 0 0)
-(2.77556e-17 6.66134e-16 8.32667e-17)
-(-2.77556e-17 0 -2.77556e-17)
-(-5.55112e-17 0 -2.77556e-17)
-(-2.77556e-17 -2.22045e-16 -8.32667e-17)
-(-2.77556e-17 0 -2.77556e-17)
-(-2.77556e-17 2.22045e-16 2.77556e-17)
-(-2.77556e-17 0 -2.77556e-17)
-(2.77556e-17 2.22045e-16 5.55112e-17)
-(-2.77556e-17 -2.22045e-16 -2.77556e-17)
-(-2.77556e-17 -2.22045e-16 -2.77556e-17)
-(0 2.22045e-16 2.77556e-17)
-(-2.77556e-17 -4.44089e-16 -5.55112e-17)
-(-2.77556e-17 -4.44089e-16 -2.77556e-17)
-(-2.77556e-17 -4.44089e-16 -2.77556e-17)
-(-2.77556e-17 0 2.77556e-17)
-(-2.77556e-17 0 -2.77556e-17)
-(-2.77556e-17 -4.44089e-16 -2.77556e-17)
-(-2.77556e-17 -2.22045e-16 2.77556e-17)
-(-2.77556e-17 -2.22045e-16 -2.77556e-17)
-(0 0 -2.77556e-17)
-(-2.77556e-17 0 0)
-(-2.77556e-17 -4.44089e-16 -2.77556e-17)
-(0 0 -2.77556e-17)
-(-2.77556e-17 4.44089e-16 0)
-(2.77556e-17 6.66134e-16 8.32667e-17)
-(0 2.22045e-16 -2.77556e-17)
-(-2.77556e-17 2.22045e-16 0)
-(2.77556e-17 4.44089e-16 8.32667e-17)
-(-2.77556e-17 0 -2.77556e-17)
-(-5.55112e-17 0 -5.55112e-17)
-(-2.77556e-17 0 -8.32667e-17)
-(0 0 -2.77556e-17)
-(-2.77556e-17 0 0)
-(-2.77556e-17 -2.22045e-16 -8.32667e-17)
-(0 -2.22045e-16 -2.77556e-17)
-(-2.77556e-17 2.22045e-16 0)
-(2.77556e-17 6.66134e-16 8.32667e-17)
-(0 2.22045e-16 2.77556e-17)
-(-2.77556e-17 -6.66134e-16 -5.55112e-17)
-(-2.77556e-17 0 -2.77556e-17)
-(-2.77556e-17 -2.22045e-16 2.77556e-17)
-(-2.77556e-17 -2.22045e-16 2.77556e-17)
-(-2.77556e-17 0 -2.77556e-17)
-(-2.77556e-17 2.22045e-16 -2.77556e-17)
-(-2.77556e-17 -4.44089e-16 2.77556e-17)
-(-2.77556e-17 -4.44089e-16 -8.32667e-17)
-(0 0 2.77556e-17)
-(-2.77556e-17 -4.44089e-16 -5.55112e-17)
-(-2.77556e-17 -4.44089e-16 -2.77556e-17)
-(0 4.44089e-16 -2.77556e-17)
-(-2.77556e-17 -2.22045e-16 0)
-(-2.77556e-17 -2.22045e-16 -2.77556e-17)
-(0 0 -2.77556e-17)
-(-2.77556e-17 0 0)
-(2.77556e-17 6.66134e-16 8.32667e-17)
-(-2.77556e-17 -4.44089e-16 -2.77556e-17)
-(-5.55112e-17 -4.44089e-16 -2.77556e-17)
-(-2.77556e-17 -6.66134e-16 -8.32667e-17)
-(0 0 -2.77556e-17)
-(-2.77556e-17 0 0)
-(-5.55112e-17 0 -1.11022e-16)
-(0 0 -2.77556e-17)
-(-2.77556e-17 4.44089e-16 0)
-(-2.77556e-17 -8.88178e-16 -8.32667e-17)
-(0 0 -2.77556e-17)
-(-2.77556e-17 0 0)
-(0 4.44089e-16 -2.77556e-17)
-(-2.77556e-17 -4.44089e-16 2.77556e-17)
-(-2.77556e-17 -4.44089e-16 2.77556e-17)
-(-2.77556e-17 -4.44089e-16 -2.77556e-17)
-(-5.55112e-17 0 -2.77556e-17)
-(2.77556e-17 0 5.55112e-17)
-(-2.77556e-17 -4.44089e-16 -2.77556e-17)
-(-5.55112e-17 -4.44089e-16 -2.77556e-17)
-(2.77556e-17 4.44089e-16 5.55112e-17)
-(0 0 2.77556e-17)
-(-2.77556e-17 -8.88178e-16 2.77556e-17)
-(-2.77556e-17 4.44089e-16 2.77556e-17)
-(-2.77556e-17 -4.44089e-16 -2.77556e-17)
-(0 0 -2.77556e-17)
-(0 0 -2.77556e-17)
-(-2.77556e-17 -4.44089e-16 -2.77556e-17)
-(0 4.44089e-16 -2.77556e-17)
-(-2.77556e-17 0 0)
-(-2.77556e-17 0 -2.77556e-17)
-(0 0 -2.77556e-17)
-(-2.77556e-17 0 0)
-(-2.77556e-17 -4.44089e-16 -8.32667e-17)
-(0 0 -2.77556e-17)
-(-2.77556e-17 0 0)
-(-5.55112e-17 -8.88178e-16 -1.11022e-16)
-(0 0 -2.77556e-17)
-(-2.77556e-17 0 0)
-(0 0 -2.77556e-17)
-(-2.77556e-17 0 5.55112e-17)
-(-2.77556e-17 -6.93889e-18 -5.55112e-17)
-(-2.77556e-17 0 5.55112e-17)
-(0 0 0)
-(0 0 -5.55112e-17)
-(-2.77556e-17 0 0)
-(-2.77556e-17 0 -5.55112e-17)
-(0 -1.38778e-17 0)
-(0 -1.38778e-17 0)
-(-2.77556e-17 0 -5.55112e-17)
-(2.77556e-17 0 -5.55112e-17)
-(0 -1.38778e-17 0)
-(2.77556e-17 0 0)
-(0 2.77556e-17 0)
-(0 -2.77556e-17 0)
-(0 0 0)
-(0 0 -5.55112e-17)
-(0 0 0)
-(2.77556e-17 0 0)
-(0 0 0)
-(0 0 0)
-(0 5.55112e-17 -5.55112e-17)
-(0 -5.55112e-17 0)
-(-2.77556e-17 -5.55112e-17 -5.55112e-17)
-(2.77556e-17 5.55112e-17 0)
-(0 0 5.55112e-17)
-(2.77556e-17 5.55112e-17 5.55112e-17)
-(2.77556e-17 5.55112e-17 0)
-(0 -5.55112e-17 5.55112e-17)
-(-2.77556e-17 0 -5.55112e-17)
-(2.77556e-17 0 0)
-(0 1.11022e-16 5.55112e-17)
-(-2.77556e-17 -5.55112e-17 -5.55112e-17)
-(2.77556e-17 0 0)
-(0 5.55112e-17 5.55112e-17)
-(-2.77556e-17 -5.55112e-17 -5.55112e-17)
-(0 -5.55112e-17 -5.55112e-17)
-(0 0 0)
-(2.77556e-17 0 5.55112e-17)
-(0 0 -5.55112e-17)
-(0 -5.55112e-17 0)
-(-2.77556e-17 -1.11022e-16 -5.55112e-17)
-(0 -5.55112e-17 -5.55112e-17)
-(0 0 0)
-(-2.77556e-17 -1.11022e-16 -5.55112e-17)
-(0 0 5.55112e-17)
-(-2.77556e-17 0 0)
-(5.55112e-17 1.11022e-16 -5.55112e-17)
-(0 0 0)
-(-2.77556e-17 0 -5.55112e-17)
-(0 1.11022e-16 5.55112e-17)
-(0 0 0)
-(-2.77556e-17 -1.11022e-16 -5.55112e-17)
-(0 0 -1.11022e-16)
-(0 0 0)
-(-2.77556e-17 -1.11022e-16 -5.55112e-17)
-(0 0 -1.11022e-16)
-(0 1.11022e-16 0)
-(-2.77556e-17 0 -5.55112e-17)
-(0 -1.11022e-16 -1.11022e-16)
-(-2.77556e-17 -1.11022e-16 5.55112e-17)
-(-2.77556e-17 0 0)
-(0 0 5.55112e-17)
-(-2.77556e-17 -1.11022e-16 5.55112e-17)
-(-5.55112e-17 -1.11022e-16 0)
-(0 -1.11022e-16 5.55112e-17)
-(-2.77556e-17 2.22045e-16 5.55112e-17)
-(-2.77556e-17 0 0)
-(0 1.11022e-16 5.55112e-17)
-(0 0 0)
-(-2.77556e-17 -1.11022e-16 -5.55112e-17)
-(0 1.11022e-16 5.55112e-17)
-(0 0 0)
-(-2.77556e-17 0 -5.55112e-17)
-(0 -2.22045e-16 -1.11022e-16)
-(0 0 0)
-(-2.77556e-17 -3.33067e-16 -5.55112e-17)
-(0 0 -5.55112e-17)
-(0 -1.11022e-16 0)
-(-2.77556e-17 0 -5.55112e-17)
-(0 1.11022e-16 -1.11022e-16)
-(0 0 0)
-(-2.77556e-17 -1.11022e-16 -5.55112e-17)
-(0 2.22045e-16 -5.55112e-17)
-(0 1.11022e-16 5.55112e-17)
-(-2.77556e-17 0 0)
-(0 2.22045e-16 5.55112e-17)
-(-2.77556e-17 0 5.55112e-17)
-(0 -2.22045e-16 5.55112e-17)
-(0 1.11022e-16 5.55112e-17)
-(2.77556e-17 0 0)
-(0 0 0)
-(-5.55112e-17 -4.44089e-16 0)
-(0 0 0)
-(0 0 -5.55112e-17)
-(-2.77556e-17 -2.22045e-16 0)
-(0 0 0)
-(0 0 -5.55112e-17)
-(2.77556e-17 0 5.55112e-17)
-(0 0 0)
-(-5.55112e-17 -2.22045e-16 -5.55112e-17)
-(-2.77556e-17 -2.22045e-16 0)
-(2.77556e-17 0 0)
-(0 0 0)
-(-2.77556e-17 0 0)
-(0 0 0)
-(0 -2.22045e-16 -5.55112e-17)
-(-2.77556e-17 0 0)
-(0 0 0)
-(0 0 -5.55112e-17)
-(-2.77556e-17 -2.22045e-16 0)
-(2.77556e-17 -2.22045e-16 0)
-(0 0 0)
-(2.77556e-17 0 5.55112e-17)
-(2.77556e-17 2.22045e-16 0)
-(0 0 0)
-(-5.55112e-17 -2.22045e-16 0)
-(2.77556e-17 2.22045e-16 0)
-(0 -2.22045e-16 0)
-(-5.55112e-17 -4.44089e-16 0)
-(-2.77556e-17 -2.22045e-16 0)
-(0 0 -5.55112e-17)
-(2.77556e-17 2.22045e-16 5.55112e-17)
-(0 0 0)
-(0 0 -5.55112e-17)
-(-2.77556e-17 0 0)
-(0 -2.22045e-16 0)
-(-5.55112e-17 -2.22045e-16 -5.55112e-17)
-(-2.77556e-17 0 0)
-(2.77556e-17 0 0)
-(0 -2.22045e-16 0)
-(-2.77556e-17 -2.22045e-16 0)
-(0 -2.22045e-16 0)
-(0 -2.22045e-16 -5.55112e-17)
-(-2.77556e-17 0 0)
-(0 -4.44089e-16 0)
-(0 -2.22045e-16 -5.55112e-17)
-(2.77556e-17 2.22045e-16 5.55112e-17)
-(2.77556e-17 0 0)
-(0 -2.22045e-16 0)
-(-2.77556e-17 0 0)
-(2.77556e-17 -2.22045e-16 0)
-(0 -2.22045e-16 0)
-(-5.55112e-17 -2.22045e-16 0)
-(2.77556e-17 0 0)
-(0 0 0)
-(-5.55112e-17 -4.44089e-16 0)
-(-5.55112e-17 -2.22045e-16 0)
-(2.77556e-17 4.44089e-16 -5.55112e-17)
-(2.77556e-17 0 5.55112e-17)
-(2.77556e-17 0 0)
-(0 -4.44089e-16 0)
-(0 4.44089e-16 -5.55112e-17)
-(2.77556e-17 0 0)
-(0 0 0)
-(-5.55112e-17 0 0)
-(2.77556e-17 0 0)
-(0 -2.22045e-16 0)
-(-2.77556e-17 2.22045e-16 0)
-(0 -2.22045e-16 0)
-(0 -2.22045e-16 -1.11022e-16)
-(-2.77556e-17 2.22045e-16 0)
-(0 -2.22045e-16 0)
-(0 -2.22045e-16 -5.55112e-17)
-(2.77556e-17 0 5.55112e-17)
-(2.77556e-17 2.22045e-16 0)
-(0 2.22045e-16 0)
-(-2.77556e-17 0 0)
-(2.77556e-17 0 0)
-(0 -2.22045e-16 0)
-(-2.77556e-17 0 0)
-(2.77556e-17 0 0)
-(0 -2.22045e-16 0)
-(-5.55112e-17 -6.66134e-16 0)
-(-2.77556e-17 6.66134e-16 0)
-(0 -4.44089e-16 -5.55112e-17)
-(2.77556e-17 0 5.55112e-17)
-(2.77556e-17 -4.44089e-16 0)
-(0 0 0)
-(2.77556e-17 4.44089e-16 5.55112e-17)
-(2.77556e-17 4.44089e-16 0)
-(0 4.44089e-16 0)
-(0 0 5.55112e-17)
-(2.77556e-17 4.44089e-16 0)
-(0 4.44089e-16 0)
-(-2.77556e-17 0 -5.55112e-17)
-(0 4.44089e-16 0)
-(0 0 -1.11022e-16)
-(-2.77556e-17 -4.44089e-16 0)
-(-2.77556e-17 -4.44089e-16 0)
-(-2.77556e-17 -4.44089e-16 -5.55112e-17)
-(-2.77556e-17 0 0)
-(-2.77556e-17 -4.44089e-16 0)
-(-2.77556e-17 -4.44089e-16 -5.55112e-17)
-(-5.55112e-17 -4.44089e-16 5.55112e-17)
-(0 0 0)
-(0 -8.88178e-16 -1.11022e-16)
-(-2.77556e-17 0 0)
-(0 0 0)
-(0 0 5.55112e-17)
-(-2.77556e-17 0 0)
-(2.77556e-17 0 0)
-(0 0 0)
-(-2.77556e-17 0 0)
-(2.77556e-17 0 0)
-(0 4.44089e-16 0)
-(0 -4.44089e-16 5.55112e-17)
-(2.77556e-17 0 0)
-(0 0 0)
-(2.77556e-17 4.44089e-16 5.55112e-17)
-(2.77556e-17 4.44089e-16 0)
-(0 0 0)
-(-2.77556e-17 0 -5.55112e-17)
+(0 -3.469446952e-18 0)
+(-5.551115123e-17 -1.387778781e-17 5.551115123e-17)
+(0 1.387778781e-17 0)
+(0 -1.387778781e-17 5.551115123e-17)
+(0 2.775557562e-17 0)
+(0 -2.775557562e-17 0)
+(-2.775557562e-17 2.775557562e-17 5.551115123e-17)
+(-2.775557562e-17 0 5.551115123e-17)
+(0 5.551115123e-17 0)
+(0 0 0)
+(0 0 0)
+(0 0 0)
+(2.775557562e-17 -5.551115123e-17 0)
+(0 -5.551115123e-17 0)
+(0 5.551115123e-17 0)
+(0 1.110223025e-16 0)
+(0 0 0)
+(0 -1.110223025e-16 0)
+(0 -1.110223025e-16 0)
+(-2.775557562e-17 0 5.551115123e-17)
+(0 0 5.551115123e-17)
+(0 0 0)
+(0 -1.110223025e-16 5.551115123e-17)
+(0 -1.110223025e-16 0)
+(-2.775557562e-17 0 0)
+(0 1.110223025e-16 0)
+(0 -1.110223025e-16 0)
+(0 1.110223025e-16 0)
+(0 0 0)
+(0 1.110223025e-16 0)
+(-2.775557562e-17 -2.220446049e-16 5.551115123e-17)
+(-2.775557562e-17 0 5.551115123e-17)
+(-2.775557562e-17 -4.440892099e-16 5.551115123e-17)
+(-2.775557562e-17 -2.220446049e-16 5.551115123e-17)
+(-2.775557562e-17 -4.440892099e-16 5.551115123e-17)
+(-2.775557562e-17 -2.220446049e-16 5.551115123e-17)
+(-2.775557562e-17 0 5.551115123e-17)
+(0 -2.220446049e-16 -5.551115123e-17)
+(0 2.220446049e-16 -1.110223025e-16)
+(-2.775557562e-17 0 5.551115123e-17)
+(0 -2.220446049e-16 5.551115123e-17)
+(0 2.220446049e-16 -5.551115123e-17)
+(0 4.440892099e-16 -1.110223025e-16)
+(0 0 -5.551115123e-17)
+(0 2.220446049e-16 -1.110223025e-16)
+(0 0 -5.551115123e-17)
+(0 2.220446049e-16 -1.110223025e-16)
+(0 -2.220446049e-16 -5.551115123e-17)
+(0 8.881784197e-16 -1.110223025e-16)
+(0 -2.220446049e-16 -5.551115123e-17)
+(-2.775557562e-17 2.220446049e-16 0)
+(-2.775557562e-17 0 5.551115123e-17)
+(-2.775557562e-17 -2.220446049e-16 5.551115123e-17)
+(0 2.220446049e-16 -5.551115123e-17)
+(-2.775557562e-17 2.220446049e-16 0)
+(-2.775557562e-17 -4.440892099e-16 5.551115123e-17)
+(-2.775557562e-17 -4.440892099e-16 5.551115123e-17)
+(0 2.220446049e-16 -5.551115123e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 5.551115123e-17)
+(5.551115123e-17 8.881784197e-16 -5.551115123e-17)
+(2.775557562e-17 0 5.551115123e-17)
+(5.551115123e-17 0 -5.551115123e-17)
+(2.775557562e-17 0 5.551115123e-17)
+(5.551115123e-17 8.881784197e-16 -5.551115123e-17)
+(2.775557562e-17 -4.440892099e-16 5.551115123e-17)
+(5.551115123e-17 0 -5.551115123e-17)
+(0 -4.440892099e-16 5.551115123e-17)
+(0 -8.881784197e-16 5.551115123e-17)
+(0 -8.881784197e-16 5.551115123e-17)
+(0 -4.440892099e-16 5.551115123e-17)
+(0 1.734723476e-18 0)
+(-2.775557562e-17 0 0)
+(0 1.387778781e-17 -2.775557562e-17)
+(-2.775557562e-17 -2.775557562e-17 1.110223025e-16)
+(0 0 2.775557562e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 -2.775557562e-17 -2.775557562e-17)
+(-2.775557562e-17 2.775557562e-17 -2.775557562e-17)
+(-2.775557562e-17 -5.551115123e-17 0)
+(0 0 2.775557562e-17)
+(-2.775557562e-17 0 0)
+(0 -5.551115123e-17 2.775557562e-17)
+(0 -5.551115123e-17 2.775557562e-17)
+(-2.775557562e-17 0 0)
+(0 -5.551115123e-17 2.775557562e-17)
+(-2.775557562e-17 -1.110223025e-16 0)
+(0 0 2.775557562e-17)
+(-2.775557562e-17 -1.110223025e-16 0)
+(0 0 2.775557562e-17)
+(0 -1.110223025e-16 0)
+(-2.775557562e-17 -1.110223025e-16 -5.551115123e-17)
+(0 1.110223025e-16 0)
+(-2.775557562e-17 -1.110223025e-16 -5.551115123e-17)
+(0 0 0)
+(0 0 2.775557562e-17)
+(-2.775557562e-17 0 0)
+(0 -1.110223025e-16 2.775557562e-17)
+(-2.775557562e-17 -2.220446049e-16 0)
+(0 2.220446049e-16 2.775557562e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 -4.440892099e-16 0)
+(0 2.220446049e-16 -2.775557562e-17)
+(-2.775557562e-17 0 0)
+(0 -2.220446049e-16 5.551115123e-17)
+(-2.775557562e-17 -2.220446049e-16 0)
+(0 2.220446049e-16 -2.775557562e-17)
+(-2.775557562e-17 -4.440892099e-16 0)
+(0 2.220446049e-16 -2.775557562e-17)
+(-2.775557562e-17 0 0)
+(0 4.440892099e-16 -2.775557562e-17)
+(-2.775557562e-17 -2.220446049e-16 0)
+(0 -2.220446049e-16 -2.775557562e-17)
+(-2.775557562e-17 0 0)
+(0 2.220446049e-16 -2.775557562e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 -4.440892099e-16 0)
+(-2.775557562e-17 -2.220446049e-16 0)
+(0 -2.220446049e-16 -2.775557562e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 -2.220446049e-16 0)
+(0 -2.220446049e-16 -2.775557562e-17)
+(-2.775557562e-17 0 0)
+(0 0 0)
+(-2.775557562e-17 -4.440892099e-16 2.775557562e-17)
+(0 0 0)
+(-2.775557562e-17 0 2.775557562e-17)
+(0 0 0)
+(-2.775557562e-17 0 2.775557562e-17)
+(0 0 0)
+(0 -4.440892099e-16 5.551115123e-17)
+(0 -4.440892099e-16 5.551115123e-17)
+(0 -8.881784197e-16 5.551115123e-17)
+(0 0 5.551115123e-17)
+(0 0 0)
+(0 0 0)
+(0 -1.387778781e-17 5.551115123e-17)
+(-2.775557562e-17 -1.387778781e-17 0)
+(-2.775557562e-17 0 2.775557562e-17)
+(0 0 2.775557562e-17)
+(-2.775557562e-17 0 2.775557562e-17)
+(-2.775557562e-17 0 2.775557562e-17)
+(0 0 2.775557562e-17)
+(-2.775557562e-17 0 2.775557562e-17)
+(0 0 2.775557562e-17)
+(-2.775557562e-17 -5.551115123e-17 2.775557562e-17)
+(0 0 -5.551115123e-17)
+(0 1.110223025e-16 2.775557562e-17)
+(-2.775557562e-17 -5.551115123e-17 2.775557562e-17)
+(0 -1.110223025e-16 2.775557562e-17)
+(-2.775557562e-17 0 2.775557562e-17)
+(0 -1.110223025e-16 2.775557562e-17)
+(-2.775557562e-17 0 2.775557562e-17)
+(0 0 2.775557562e-17)
+(-2.775557562e-17 1.110223025e-16 2.775557562e-17)
+(0 1.110223025e-16 0)
+(-2.775557562e-17 0 2.775557562e-17)
+(0 1.110223025e-16 0)
+(-2.775557562e-17 -1.110223025e-16 2.775557562e-17)
+(0 1.110223025e-16 2.775557562e-17)
+(-2.775557562e-17 -1.110223025e-16 2.775557562e-17)
+(0 1.110223025e-16 2.775557562e-17)
+(-2.775557562e-17 0 2.775557562e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 0 0)
+(0 -2.220446049e-16 0)
+(0 -2.220446049e-16 0)
+(0 -2.220446049e-16 0)
+(0 -2.220446049e-16 0)
+(0 -2.220446049e-16 0)
+(0 0 0)
+(0 -2.220446049e-16 0)
+(0 0 0)
+(0 0 0)
+(-2.775557562e-17 -2.220446049e-16 0)
+(0 -2.220446049e-16 0)
+(0 2.220446049e-16 0)
+(0 -4.440892099e-16 0)
+(0 2.220446049e-16 0)
+(0 0 0)
+(0 0 0)
+(0 0 0)
+(0 2.220446049e-16 0)
+(0 0 0)
+(0 2.220446049e-16 0)
+(0 -4.440892099e-16 0)
+(0 -2.220446049e-16 0)
+(0 -2.220446049e-16 0)
+(0 4.440892099e-16 0)
+(0 -2.220446049e-16 0)
+(0 0 0)
+(0 -4.440892099e-16 0)
+(0 2.220446049e-16 0)
+(0 0 0)
+(-2.775557562e-17 0 2.775557562e-17)
+(-5.551115123e-17 -4.440892099e-16 2.775557562e-17)
+(-2.775557562e-17 0 2.775557562e-17)
+(-5.551115123e-17 -4.440892099e-16 2.775557562e-17)
+(-2.775557562e-17 -4.440892099e-16 2.775557562e-17)
+(-5.551115123e-17 0 2.775557562e-17)
+(-2.775557562e-17 0 2.775557562e-17)
+(-2.775557562e-17 4.440892099e-16 0)
+(-2.775557562e-17 -4.440892099e-16 0)
+(-2.775557562e-17 -8.881784197e-16 0)
+(-2.775557562e-17 0 0)
+(2.775557562e-17 1.734723476e-18 2.775557562e-17)
+(-2.775557562e-17 0 0)
+(0 2.775557562e-17 -2.775557562e-17)
+(0 1.387778781e-17 0)
+(0 2.775557562e-17 2.775557562e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 2.775557562e-17 -2.775557562e-17)
+(-2.775557562e-17 2.775557562e-17 -2.775557562e-17)
+(-2.775557562e-17 0 0)
+(0 0 2.775557562e-17)
+(-2.775557562e-17 0 0)
+(0 0 2.775557562e-17)
+(5.551115123e-17 5.551115123e-17 -2.775557562e-17)
+(-2.775557562e-17 0 0)
+(0 0 2.775557562e-17)
+(-2.775557562e-17 0 0)
+(0 0 2.775557562e-17)
+(-2.775557562e-17 -1.110223025e-16 0)
+(0 -1.110223025e-16 2.775557562e-17)
+(2.775557562e-17 1.110223025e-16 0)
+(-2.775557562e-17 0 0)
+(0 0 2.775557562e-17)
+(-2.775557562e-17 -1.110223025e-16 0)
+(0 -1.110223025e-16 2.775557562e-17)
+(0 0 2.775557562e-17)
+(-2.775557562e-17 0 0)
+(0 -1.110223025e-16 2.775557562e-17)
+(-2.775557562e-17 -2.220446049e-16 0)
+(0 0 2.775557562e-17)
+(-2.775557562e-17 -2.220446049e-16 2.775557562e-17)
+(-2.775557562e-17 0 2.775557562e-17)
+(-2.775557562e-17 -2.220446049e-16 2.775557562e-17)
+(-2.775557562e-17 0 2.775557562e-17)
+(-2.775557562e-17 0 2.775557562e-17)
+(-2.775557562e-17 -2.220446049e-16 2.775557562e-17)
+(-2.775557562e-17 -2.220446049e-16 2.775557562e-17)
+(-2.775557562e-17 -2.220446049e-16 2.775557562e-17)
+(-2.775557562e-17 0 2.775557562e-17)
+(-2.775557562e-17 0 2.775557562e-17)
+(-2.775557562e-17 0 2.775557562e-17)
+(0 -4.440892099e-16 0)
+(-2.775557562e-17 0 2.775557562e-17)
+(-2.775557562e-17 0 2.775557562e-17)
+(-2.775557562e-17 0 2.775557562e-17)
+(-2.775557562e-17 -2.220446049e-16 2.775557562e-17)
+(-2.775557562e-17 0 2.775557562e-17)
+(-2.775557562e-17 0 2.775557562e-17)
+(-2.775557562e-17 -4.440892099e-16 2.775557562e-17)
+(-2.775557562e-17 -2.220446049e-16 2.775557562e-17)
+(-2.775557562e-17 2.220446049e-16 2.775557562e-17)
+(-2.775557562e-17 0 2.775557562e-17)
+(-2.775557562e-17 -2.220446049e-16 2.775557562e-17)
+(-2.775557562e-17 -4.440892099e-16 2.775557562e-17)
+(-2.775557562e-17 -2.220446049e-16 2.775557562e-17)
+(-2.775557562e-17 -6.661338148e-16 2.775557562e-17)
+(-2.775557562e-17 0 2.775557562e-17)
+(-2.775557562e-17 -2.220446049e-16 2.775557562e-17)
+(-2.775557562e-17 -4.440892099e-16 2.775557562e-17)
+(-2.775557562e-17 -4.440892099e-16 2.775557562e-17)
+(-2.775557562e-17 0 2.775557562e-17)
+(2.775557562e-17 4.440892099e-16 -5.551115123e-17)
+(0 0 0)
+(2.775557562e-17 4.440892099e-16 -5.551115123e-17)
+(-2.775557562e-17 0 2.775557562e-17)
+(2.775557562e-17 4.440892099e-16 -5.551115123e-17)
+(0 0 0)
+(2.775557562e-17 4.440892099e-16 -5.551115123e-17)
+(0 -8.881784197e-16 0)
+(0 -4.440892099e-16 0)
+(0 -8.881784197e-16 0)
+(0 0 0)
+(-5.551115123e-17 -1.734723476e-18 1.387778781e-17)
+(0 -6.938893904e-18 2.775557562e-17)
+(-2.775557562e-17 0 1.387778781e-17)
+(-2.775557562e-17 1.387778781e-17 2.775557562e-17)
+(2.775557562e-17 -2.775557562e-17 1.387778781e-17)
+(-2.775557562e-17 0 1.387778781e-17)
+(0 0 1.387778781e-17)
+(0 0 1.387778781e-17)
+(-2.775557562e-17 -5.551115123e-17 1.387778781e-17)
+(2.775557562e-17 -5.551115123e-17 1.387778781e-17)
+(-2.775557562e-17 -5.551115123e-17 1.387778781e-17)
+(2.775557562e-17 0 1.387778781e-17)
+(-5.551115123e-17 -1.110223025e-16 1.387778781e-17)
+(-2.775557562e-17 0 1.387778781e-17)
+(2.775557562e-17 -5.551115123e-17 1.387778781e-17)
+(-2.775557562e-17 0 1.387778781e-17)
+(2.775557562e-17 -1.110223025e-16 1.387778781e-17)
+(-2.775557562e-17 0 1.387778781e-17)
+(2.775557562e-17 0 1.387778781e-17)
+(-2.775557562e-17 -2.220446049e-16 1.387778781e-17)
+(0 0 1.387778781e-17)
+(2.775557562e-17 0 0)
+(0 0 1.387778781e-17)
+(2.775557562e-17 1.110223025e-16 0)
+(2.775557562e-17 2.220446049e-16 1.387778781e-17)
+(-2.775557562e-17 1.110223025e-16 1.387778781e-17)
+(2.775557562e-17 0 1.387778781e-17)
+(-2.775557562e-17 0 1.387778781e-17)
+(2.775557562e-17 0 1.387778781e-17)
+(0 -1.110223025e-16 2.775557562e-17)
+(0 0 1.387778781e-17)
+(0 -2.220446049e-16 1.387778781e-17)
+(0 -2.220446049e-16 1.387778781e-17)
+(0 0 1.387778781e-17)
+(0 -2.220446049e-16 1.387778781e-17)
+(0 -2.220446049e-16 1.387778781e-17)
+(0 0 1.387778781e-17)
+(0 0 1.387778781e-17)
+(0 -2.220446049e-16 1.387778781e-17)
+(0 0 1.387778781e-17)
+(-2.775557562e-17 2.220446049e-16 1.387778781e-17)
+(0 0 1.387778781e-17)
+(0 0 1.387778781e-17)
+(0 0 1.387778781e-17)
+(0 4.440892099e-16 1.387778781e-17)
+(0 0 1.387778781e-17)
+(0 2.220446049e-16 1.387778781e-17)
+(0 -2.220446049e-16 1.387778781e-17)
+(0 4.440892099e-16 1.387778781e-17)
+(0 4.440892099e-16 1.387778781e-17)
+(0 0 1.387778781e-17)
+(0 2.220446049e-16 1.387778781e-17)
+(0 0 1.387778781e-17)
+(0 -2.220446049e-16 1.387778781e-17)
+(0 0 1.387778781e-17)
+(0 2.220446049e-16 1.387778781e-17)
+(0 4.440892099e-16 1.387778781e-17)
+(0 2.220446049e-16 1.387778781e-17)
+(0 2.220446049e-16 1.387778781e-17)
+(0 0 1.387778781e-17)
+(0 -4.440892099e-16 2.775557562e-17)
+(0 0 1.387778781e-17)
+(0 -8.881784197e-16 2.775557562e-17)
+(-2.775557562e-17 -4.440892099e-16 1.387778781e-17)
+(0 -4.440892099e-16 2.775557562e-17)
+(0 0 1.387778781e-17)
+(0 0 2.775557562e-17)
+(-2.775557562e-17 0 1.387778781e-17)
+(-2.775557562e-17 0 1.387778781e-17)
+(-2.775557562e-17 0 1.387778781e-17)
+(-2.775557562e-17 -4.440892099e-16 1.387778781e-17)
+(0 0 6.938893904e-18)
+(2.775557562e-17 6.938893904e-18 6.938893904e-18)
+(-2.775557562e-17 -1.387778781e-17 6.938893904e-18)
+(0 -1.387778781e-17 0)
+(0 2.775557562e-17 6.938893904e-18)
+(0 -2.775557562e-17 6.938893904e-18)
+(-2.775557562e-17 0 6.938893904e-18)
+(-2.775557562e-17 2.775557562e-17 6.938893904e-18)
+(0 0 6.938893904e-18)
+(0 0 6.938893904e-18)
+(0 -5.551115123e-17 6.938893904e-18)
+(0 0 6.938893904e-18)
+(-2.775557562e-17 1.110223025e-16 6.938893904e-18)
+(0 1.110223025e-16 6.938893904e-18)
+(0 -1.110223025e-16 6.938893904e-18)
+(0 1.110223025e-16 6.938893904e-18)
+(0 1.110223025e-16 6.938893904e-18)
+(0 1.110223025e-16 6.938893904e-18)
+(0 0 6.938893904e-18)
+(0 -1.110223025e-16 6.938893904e-18)
+(2.775557562e-17 1.110223025e-16 6.938893904e-18)
+(0 1.110223025e-16 6.938893904e-18)
+(2.775557562e-17 1.110223025e-16 6.938893904e-18)
+(0 2.220446049e-16 6.938893904e-18)
+(0 1.110223025e-16 6.938893904e-18)
+(0 0 6.938893904e-18)
+(0 0 6.938893904e-18)
+(0 1.110223025e-16 6.938893904e-18)
+(0 -1.110223025e-16 6.938893904e-18)
+(2.775557562e-17 0 -6.938893904e-18)
+(2.775557562e-17 0 6.938893904e-18)
+(2.775557562e-17 0 6.938893904e-18)
+(2.775557562e-17 0 6.938893904e-18)
+(2.775557562e-17 2.220446049e-16 6.938893904e-18)
+(2.775557562e-17 2.220446049e-16 6.938893904e-18)
+(2.775557562e-17 0 6.938893904e-18)
+(2.775557562e-17 2.220446049e-16 6.938893904e-18)
+(2.775557562e-17 -2.220446049e-16 6.938893904e-18)
+(2.775557562e-17 -2.220446049e-16 6.938893904e-18)
+(2.775557562e-17 -2.220446049e-16 6.938893904e-18)
+(0 0 0)
+(2.775557562e-17 2.220446049e-16 6.938893904e-18)
+(2.775557562e-17 0 6.938893904e-18)
+(2.775557562e-17 0 6.938893904e-18)
+(2.775557562e-17 0 6.938893904e-18)
+(2.775557562e-17 0 6.938893904e-18)
+(2.775557562e-17 2.220446049e-16 6.938893904e-18)
+(2.775557562e-17 0 6.938893904e-18)
+(2.775557562e-17 2.220446049e-16 6.938893904e-18)
+(2.775557562e-17 2.220446049e-16 6.938893904e-18)
+(2.775557562e-17 4.440892099e-16 6.938893904e-18)
+(2.775557562e-17 0 6.938893904e-18)
+(2.775557562e-17 0 6.938893904e-18)
+(2.775557562e-17 2.220446049e-16 6.938893904e-18)
+(2.775557562e-17 2.220446049e-16 6.938893904e-18)
+(2.775557562e-17 2.220446049e-16 6.938893904e-18)
+(2.775557562e-17 4.440892099e-16 6.938893904e-18)
+(2.775557562e-17 0 6.938893904e-18)
+(2.775557562e-17 2.220446049e-16 6.938893904e-18)
+(2.775557562e-17 0 6.938893904e-18)
+(0 0 0)
+(0 0 0)
+(0 4.440892099e-16 0)
+(0 4.440892099e-16 0)
+(0 4.440892099e-16 0)
+(0 0 0)
+(0 4.440892099e-16 0)
+(0 0 0)
+(0 0 0)
+(0 0 0)
+(0 0 0)
+(0 -1.734723476e-18 0)
+(2.775557562e-17 -6.938893904e-18 0)
+(-2.775557562e-17 -2.775557562e-17 -3.469446952e-18)
+(0 -1.387778781e-17 0)
+(-2.775557562e-17 -2.775557562e-17 0)
+(0 -2.775557562e-17 -1.734723476e-18)
+(2.775557562e-17 8.326672685e-17 1.734723476e-18)
+(0 5.551115123e-17 0)
+(0 0 -1.734723476e-18)
+(-2.775557562e-17 -5.551115123e-17 0)
+(0 -5.551115123e-17 -1.734723476e-18)
+(-2.775557562e-17 0 0)
+(0 0 0)
+(0 1.110223025e-16 -1.734723476e-18)
+(-2.775557562e-17 0 0)
+(0 1.110223025e-16 -1.734723476e-18)
+(-2.775557562e-17 1.110223025e-16 0)
+(0 0 -1.734723476e-18)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-5.551115123e-17 -1.110223025e-16 0)
+(-8.326672685e-17 0 0)
+(0 -1.110223025e-16 -3.469446952e-18)
+(0 1.110223025e-16 -1.734723476e-18)
+(-2.775557562e-17 0 -3.469446952e-18)
+(-2.775557562e-17 -1.110223025e-16 0)
+(-8.326672685e-17 -1.110223025e-16 -1.734723476e-18)
+(0 1.110223025e-16 -1.734723476e-18)
+(-2.775557562e-17 -1.110223025e-16 0)
+(2.775557562e-17 0 1.734723476e-18)
+(2.775557562e-17 0 1.734723476e-18)
+(-8.326672685e-17 -2.220446049e-16 -6.938893904e-18)
+(-5.551115123e-17 0 -3.469446952e-18)
+(2.775557562e-17 0 1.734723476e-18)
+(-8.326672685e-17 -2.220446049e-16 -6.938893904e-18)
+(0 0 -3.469446952e-18)
+(0 -2.220446049e-16 -1.734723476e-18)
+(0 -2.220446049e-16 0)
+(0 -2.220446049e-16 -1.734723476e-18)
+(0 0 -1.734723476e-18)
+(-2.775557562e-17 -2.220446049e-16 -1.734723476e-18)
+(2.775557562e-17 0 0)
+(0 0 1.734723476e-18)
+(2.775557562e-17 0 5.204170428e-18)
+(0 0 -1.734723476e-18)
+(-5.551115123e-17 -6.661338148e-16 -5.204170428e-18)
+(-5.551115123e-17 -6.661338148e-16 0)
+(2.775557562e-17 0 5.204170428e-18)
+(2.775557562e-17 2.220446049e-16 5.204170428e-18)
+(0 0 -1.734723476e-18)
+(0 -4.440892099e-16 -1.734723476e-18)
+(0 -2.220446049e-16 -1.734723476e-18)
+(0 -2.220446049e-16 0)
+(2.775557562e-17 2.220446049e-16 5.204170428e-18)
+(0 6.661338148e-16 -1.734723476e-18)
+(0 -2.220446049e-16 -1.734723476e-18)
+(0 -6.661338148e-16 -1.734723476e-18)
+(0 2.220446049e-16 0)
+(2.775557562e-17 2.220446049e-16 1.734723476e-18)
+(2.775557562e-17 4.440892099e-16 1.734723476e-18)
+(-2.775557562e-17 4.440892099e-16 -1.734723476e-18)
+(-2.775557562e-17 -4.440892099e-16 1.734723476e-18)
+(-2.775557562e-17 0 -1.734723476e-18)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 -1.734723476e-18)
+(-2.775557562e-17 0 1.734723476e-18)
+(-2.775557562e-17 0 -1.734723476e-18)
+(0 -4.440892099e-16 0)
+(0 0 0)
+(0 0 0)
+(0 -4.440892099e-16 0)
+(0 1.734723476e-18 0)
+(-2.775557562e-17 -6.938893904e-18 0)
+(0 2.775557562e-17 6.938893904e-18)
+(0 -1.387778781e-17 0)
+(0 0 -1.387778781e-17)
+(-2.775557562e-17 0 0)
+(0 -2.775557562e-17 0)
+(0 2.775557562e-17 -6.938893904e-18)
+(-2.775557562e-17 0 0)
+(0 0 -1.387778781e-17)
+(-2.775557562e-17 0 0)
+(0 -5.551115123e-17 -1.387778781e-17)
+(5.551115123e-17 -5.551115123e-17 1.387778781e-17)
+(-2.775557562e-17 0 0)
+(0 -1.110223025e-16 -1.387778781e-17)
+(-2.775557562e-17 0 0)
+(0 0 -1.387778781e-17)
+(-2.775557562e-17 -1.110223025e-16 0)
+(0 0 -1.387778781e-17)
+(0 0 -6.938893904e-18)
+(-2.775557562e-17 0 0)
+(0 -1.110223025e-16 -1.387778781e-17)
+(-2.775557562e-17 -1.110223025e-16 0)
+(0 -1.110223025e-16 -1.387778781e-17)
+(0 0 -1.387778781e-17)
+(-2.775557562e-17 0 0)
+(0 -1.110223025e-16 -1.387778781e-17)
+(-2.775557562e-17 1.110223025e-16 0)
+(0 0 -1.387778781e-17)
+(-2.775557562e-17 -1.110223025e-16 1.387778781e-17)
+(-2.775557562e-17 0 1.387778781e-17)
+(-2.775557562e-17 0 1.387778781e-17)
+(-2.775557562e-17 0 1.387778781e-17)
+(-2.775557562e-17 -2.220446049e-16 1.387778781e-17)
+(-2.775557562e-17 0 1.387778781e-17)
+(-2.775557562e-17 -2.220446049e-16 1.387778781e-17)
+(-2.775557562e-17 0 1.387778781e-17)
+(-2.775557562e-17 -4.440892099e-16 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 1.387778781e-17)
+(0 -2.220446049e-16 -6.938893904e-18)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 2.220446049e-16 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 1.387778781e-17)
+(-2.775557562e-17 0 1.387778781e-17)
+(-2.775557562e-17 -4.440892099e-16 1.387778781e-17)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 4.440892099e-16 1.387778781e-17)
+(-2.775557562e-17 0 1.387778781e-17)
+(-2.775557562e-17 -2.220446049e-16 1.387778781e-17)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 -2.220446049e-16 1.387778781e-17)
+(-2.775557562e-17 0 1.387778781e-17)
+(2.775557562e-17 4.440892099e-16 1.387778781e-17)
+(0 0 -1.387778781e-17)
+(2.775557562e-17 0 1.387778781e-17)
+(0 0 -2.081668171e-17)
+(2.775557562e-17 4.440892099e-16 1.387778781e-17)
+(0 0 -1.387778781e-17)
+(2.775557562e-17 4.440892099e-16 1.387778781e-17)
+(0 -8.881784197e-16 -6.938893904e-18)
+(0 -4.440892099e-16 -6.938893904e-18)
+(0 -8.881784197e-16 -6.938893904e-18)
+(0 0 -6.938893904e-18)
+(0 -4.440892099e-16 -2.775557562e-17)
+(0 0 0)
+(-2.775557562e-17 0 -2.775557562e-17)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 0 -2.775557562e-17)
+(0 2.220446049e-16 0)
+(-2.775557562e-17 0 -2.775557562e-17)
+(0 -4.440892099e-16 0)
+(-2.775557562e-17 -2.220446049e-16 -2.775557562e-17)
+(-2.775557562e-17 -6.938893904e-18 0)
+(-5.551115123e-17 -4.440892099e-16 5.551115123e-17)
+(0 -3.469446952e-18 0)
+(-2.775557562e-17 0 -2.775557562e-17)
+(0 0 0)
+(-2.775557562e-17 -4.440892099e-16 5.551115123e-17)
+(2.775557562e-17 -6.938893904e-18 -5.551115123e-17)
+(-2.775557562e-17 0 -2.775557562e-17)
+(-2.775557562e-17 -6.938893904e-18 5.551115123e-17)
+(0 4.440892099e-16 0)
+(0 -6.938893904e-18 5.551115123e-17)
+(-2.775557562e-17 -4.440892099e-16 -2.775557562e-17)
+(0 -1.387778781e-17 5.551115123e-17)
+(-5.551115123e-17 -4.440892099e-16 5.551115123e-17)
+(0 -1.387778781e-17 1.110223025e-16)
+(-2.775557562e-17 -2.220446049e-16 -2.775557562e-17)
+(-2.775557562e-17 -1.387778781e-17 5.551115123e-17)
+(-2.775557562e-17 0 5.551115123e-17)
+(2.775557562e-17 1.734723476e-18 -1.387778781e-17)
+(-2.775557562e-17 2.220446049e-16 -2.775557562e-17)
+(-5.551115123e-17 -2.775557562e-17 5.551115123e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 -6.938893904e-18 0)
+(-2.775557562e-17 0 -2.775557562e-17)
+(-2.775557562e-17 0 0)
+(-5.551115123e-17 0 5.551115123e-17)
+(0 2.775557562e-17 1.387778781e-17)
+(-2.775557562e-17 -2.220446049e-16 -2.775557562e-17)
+(-2.775557562e-17 -1.387778781e-17 5.551115123e-17)
+(-2.775557562e-17 0 5.551115123e-17)
+(0 1.387778781e-17 -1.387778781e-17)
+(-2.775557562e-17 -4.440892099e-16 -2.775557562e-17)
+(0 0 5.551115123e-17)
+(0 8.881784197e-16 0)
+(0 2.775557562e-17 -1.387778781e-17)
+(-2.775557562e-17 -2.220446049e-16 -2.775557562e-17)
+(-2.775557562e-17 0 5.551115123e-17)
+(-5.551115123e-17 0 5.551115123e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 -6.661338148e-16 -2.775557562e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 -4.440892099e-16 5.551115123e-17)
+(0 -2.775557562e-17 0)
+(-2.775557562e-17 0 -2.775557562e-17)
+(-2.775557562e-17 0 5.551115123e-17)
+(-2.775557562e-17 0 0)
+(0 2.775557562e-17 0)
+(-2.775557562e-17 -2.220446049e-16 -2.775557562e-17)
+(0 0 5.551115123e-17)
+(-5.551115123e-17 -4.440892099e-16 5.551115123e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 -4.440892099e-16 -2.775557562e-17)
+(0 0 -5.551115123e-17)
+(-2.775557562e-17 0 5.551115123e-17)
+(0 0 -1.387778781e-17)
+(-2.775557562e-17 -4.440892099e-16 -2.775557562e-17)
+(0 -2.775557562e-17 5.551115123e-17)
+(0 0 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 -2.775557562e-17)
+(-2.775557562e-17 0 0)
+(-5.551115123e-17 0 5.551115123e-17)
+(0 0 -1.387778781e-17)
+(2.775557562e-17 4.440892099e-16 0)
+(-5.551115123e-17 -5.551115123e-17 5.551115123e-17)
+(-2.775557562e-17 0 5.551115123e-17)
+(5.551115123e-17 -5.551115123e-17 1.387778781e-17)
+(0 0 -2.775557562e-17)
+(0 -5.551115123e-17 5.551115123e-17)
+(-2.775557562e-17 4.440892099e-16 0)
+(-2.775557562e-17 0 0)
+(2.775557562e-17 4.440892099e-16 0)
+(-2.775557562e-17 -5.551115123e-17 0)
+(-5.551115123e-17 0 5.551115123e-17)
+(0 -1.110223025e-16 -1.387778781e-17)
+(-2.775557562e-17 0 -2.775557562e-17)
+(-5.551115123e-17 0 5.551115123e-17)
+(-2.775557562e-17 0 5.551115123e-17)
+(-2.775557562e-17 0 0)
+(2.775557562e-17 4.440892099e-16 0)
+(-2.775557562e-17 0 5.551115123e-17)
+(0 0 0)
+(0 0 -1.387778781e-17)
+(0 0 -2.775557562e-17)
+(0 0 5.551115123e-17)
+(-5.551115123e-17 0 5.551115123e-17)
+(-2.775557562e-17 -1.110223025e-16 0)
+(2.775557562e-17 4.440892099e-16 0)
+(0 0 -5.551115123e-17)
+(-2.775557562e-17 -4.440892099e-16 5.551115123e-17)
+(0 -1.110223025e-16 -1.387778781e-17)
+(0 -8.881784197e-16 -2.775557562e-17)
+(-5.551115123e-17 -5.551115123e-17 5.551115123e-17)
+(-2.775557562e-17 0 0)
+(2.775557562e-17 0 0)
+(0 -4.440892099e-16 -2.775557562e-17)
+(0 5.551115123e-17 5.551115123e-17)
+(-2.775557562e-17 0 5.551115123e-17)
+(-2.775557562e-17 0 -4.163336342e-17)
+(0 -8.881784197e-16 -2.775557562e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 0)
+(0 0 -1.387778781e-17)
+(0 0 -2.775557562e-17)
+(-2.775557562e-17 -5.551115123e-17 5.551115123e-17)
+(-2.775557562e-17 -4.440892099e-16 5.551115123e-17)
+(-2.775557562e-17 -1.110223025e-16 -4.163336342e-17)
+(-2.775557562e-17 -8.881784197e-16 0)
+(0 5.551115123e-17 5.551115123e-17)
+(-5.551115123e-17 0 0)
+(0 -1.110223025e-16 -1.387778781e-17)
+(-2.775557562e-17 -4.440892099e-16 5.551115123e-17)
+(0 0 -5.551115123e-17)
+(-2.775557562e-17 0 5.551115123e-17)
+(0 0 -1.387778781e-17)
+(-2.775557562e-17 0 0)
+(0 -5.551115123e-17 5.551115123e-17)
+(-2.775557562e-17 0 5.551115123e-17)
+(-2.775557562e-17 0 0)
+(0 0 0)
+(-2.775557562e-17 0 0)
+(-5.551115123e-17 0 0)
+(0 -1.110223025e-16 -1.387778781e-17)
+(-2.775557562e-17 -4.440892099e-16 5.551115123e-17)
+(-2.775557562e-17 5.551115123e-17 0)
+(0 0 0)
+(-2.775557562e-17 1.110223025e-16 0)
+(0 -3.469446952e-18 5.551115123e-17)
+(0 -1.110223025e-16 5.551115123e-17)
+(0 1.734723476e-18 2.775557562e-17)
+(0 2.220446049e-16 -1.387778781e-17)
+(-2.775557562e-17 -6.938893904e-18 -2.775557562e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 -6.938893904e-18 2.775557562e-17)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 0 0)
+(0 0 -1.110223025e-16)
+(-2.775557562e-17 -2.775557562e-17 5.551115123e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 2.775557562e-17)
+(-2.775557562e-17 -5.551115123e-17 5.551115123e-17)
+(-2.775557562e-17 -2.775557562e-17 2.775557562e-17)
+(0 0 0)
+(-2.775557562e-17 -2.775557562e-17 2.775557562e-17)
+(-2.775557562e-17 -2.775557562e-17 8.326672685e-17)
+(-2.775557562e-17 2.775557562e-17 0)
+(-2.775557562e-17 2.775557562e-17 0)
+(0 0 0)
+(-2.775557562e-17 -5.551115123e-17 0)
+(-2.775557562e-17 5.551115123e-17 0)
+(-2.775557562e-17 0 0)
+(0 -2.775557562e-17 2.775557562e-17)
+(0 -2.775557562e-17 0)
+(-2.775557562e-17 2.775557562e-17 0)
+(0 0 2.775557562e-17)
+(0 -5.551115123e-17 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 -5.551115123e-17 0)
+(5.551115123e-17 1.110223025e-16 -2.775557562e-17)
+(2.775557562e-17 -5.551115123e-17 0)
+(0 0 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 0)
+(0 0 2.775557562e-17)
+(0 0 0)
+(0 -5.551115123e-17 0)
+(0 -5.551115123e-17 2.775557562e-17)
+(0 -5.551115123e-17 0)
+(2.775557562e-17 0 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 -1.110223025e-16 0)
+(-2.775557562e-17 0 0)
+(5.551115123e-17 0 -2.775557562e-17)
+(2.775557562e-17 1.110223025e-16 0)
+(0 1.734723476e-18 -5.551115123e-17)
+(0 -1.110223025e-16 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 0)
+(0 1.387778781e-17 -2.775557562e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 -2.775557562e-17)
+(-2.775557562e-17 1.110223025e-16 0)
+(0 0 0)
+(0 -1.110223025e-16 2.775557562e-17)
+(-2.775557562e-17 0 0)
+(0 1.110223025e-16 0)
+(-2.775557562e-17 2.775557562e-17 0)
+(0 0 0)
+(-2.775557562e-17 2.775557562e-17 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 -5.551115123e-17 0)
+(-2.775557562e-17 -1.110223025e-16 0)
+(-2.775557562e-17 0 0)
+(0 0 0)
+(0 5.551115123e-17 5.551115123e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 2.220446049e-16 0)
+(-2.775557562e-17 0 0)
+(0 -1.110223025e-16 -5.551115123e-17)
+(0 0 2.775557562e-17)
+(-2.775557562e-17 -2.220446049e-16 0)
+(0 -5.551115123e-17 0)
+(-5.551115123e-17 -5.551115123e-17 1.665334537e-16)
+(0 0 0)
+(-2.775557562e-17 0 0)
+(2.775557562e-17 0 0)
+(0 0 5.551115123e-17)
+(0 -1.110223025e-16 0)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 -5.551115123e-17 0)
+(0 -1.110223025e-16 2.775557562e-17)
+(-2.775557562e-17 0 0)
+(0 5.551115123e-17 0)
+(-2.775557562e-17 -1.110223025e-16 5.551115123e-17)
+(0 0 0)
+(-2.775557562e-17 0 1.387778781e-17)
+(-2.775557562e-17 -1.110223025e-16 0)
+(0 0 5.551115123e-17)
+(0 -1.110223025e-16 2.775557562e-17)
+(-2.775557562e-17 0 0)
+(0 0 0)
+(0 1.110223025e-16 -5.551115123e-17)
+(0 -1.110223025e-16 5.551115123e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 -1.110223025e-16 0)
+(0 0 5.551115123e-17)
+(0 0 -2.775557562e-17)
+(0 -2.220446049e-16 -1.387778781e-17)
+(0 0 0)
+(-2.775557562e-17 0 0)
+(0 -1.110223025e-16 0)
+(-2.775557562e-17 2.220446049e-16 1.387778781e-17)
+(0 -1.110223025e-16 -2.775557562e-17)
+(-2.775557562e-17 0 0)
+(0 -1.110223025e-16 2.775557562e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 -8.326672685e-17)
+(-2.775557562e-17 0 5.551115123e-17)
+(0 -2.220446049e-16 0)
+(-2.775557562e-17 0 1.387778781e-17)
+(0 1.110223025e-16 2.775557562e-17)
+(0 -1.110223025e-16 5.551115123e-17)
+(0 0 0)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 -1.110223025e-16 -8.326672685e-17)
+(0 1.110223025e-16 -5.551115123e-17)
+(0 -1.110223025e-16 5.551115123e-17)
+(-2.775557562e-17 0 1.387778781e-17)
+(0 0 2.775557562e-17)
+(0 -1.110223025e-16 5.551115123e-17)
+(0 0 -2.775557562e-17)
+(-2.775557562e-17 0 0)
+(0 0 0)
+(-2.775557562e-17 0 0)
+(0 -1.110223025e-16 0)
+(-2.775557562e-17 -4.440892099e-16 1.387778781e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 -1.110223025e-16 0)
+(0 0 2.775557562e-17)
+(-2.775557562e-17 -2.220446049e-16 0)
+(0 -1.110223025e-16 0)
+(-2.775557562e-17 -1.110223025e-16 5.551115123e-17)
+(0 0 0)
+(-2.775557562e-17 2.220446049e-16 1.387778781e-17)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 -1.110223025e-16 0)
+(0 -1.110223025e-16 0)
+(-2.775557562e-17 0 -1.387778781e-17)
+(0 0 0)
+(0 0 0)
+(0 -2.220446049e-16 0)
+(-2.775557562e-17 2.220446049e-16 0)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-5.551115123e-17 -2.220446049e-16 1.110223025e-16)
+(0 1.110223025e-16 2.775557562e-17)
+(-2.775557562e-17 -4.440892099e-16 0)
+(-2.775557562e-17 0 -5.551115123e-17)
+(0 1.110223025e-16 0)
+(0 0 0)
+(-2.775557562e-17 -2.220446049e-16 1.387778781e-17)
+(-2.775557562e-17 -2.220446049e-16 -5.551115123e-17)
+(0 0 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 -2.220446049e-16 -1.387778781e-17)
+(-2.775557562e-17 -2.220446049e-16 -5.551115123e-17)
+(-2.775557562e-17 -1.110223025e-16 5.551115123e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 -5.551115123e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 -2.220446049e-16 -5.551115123e-17)
+(-2.775557562e-17 0 -5.551115123e-17)
+(0 -2.220446049e-16 2.775557562e-17)
+(-2.775557562e-17 -4.440892099e-16 1.387778781e-17)
+(-2.775557562e-17 -2.220446049e-16 -5.551115123e-17)
+(-5.551115123e-17 -2.220446049e-16 1.110223025e-16)
+(0 1.110223025e-16 0)
+(-2.775557562e-17 -2.220446049e-16 -1.387778781e-17)
+(-2.775557562e-17 -2.220446049e-16 -5.551115123e-17)
+(0 3.330669074e-16 0)
+(0 -1.110223025e-16 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 -4.440892099e-16 0)
+(0 -2.220446049e-16 0)
+(-2.775557562e-17 0 0)
+(2.775557562e-17 4.440892099e-16 2.775557562e-17)
+(0 2.220446049e-16 2.775557562e-17)
+(-2.775557562e-17 -2.220446049e-16 5.551115123e-17)
+(-2.775557562e-17 0 0)
+(0 0 0)
+(-2.775557562e-17 0 -5.551115123e-17)
+(-2.775557562e-17 -1.110223025e-16 0)
+(-2.775557562e-17 0 0)
+(2.775557562e-17 0 2.775557562e-17)
+(0 -2.220446049e-16 -2.775557562e-17)
+(-2.775557562e-17 -1.110223025e-16 -5.551115123e-17)
+(0 0 2.775557562e-17)
+(-2.775557562e-17 0 -1.387778781e-17)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 0 0)
+(0 0 0)
+(2.775557562e-17 4.440892099e-16 2.775557562e-17)
+(0 2.220446049e-16 2.775557562e-17)
+(0 -2.220446049e-16 0)
+(0 0 0)
+(0 -4.440892099e-16 0)
+(-2.775557562e-17 -4.440892099e-16 0)
+(-2.775557562e-17 -2.220446049e-16 5.551115123e-17)
+(-2.775557562e-17 -2.220446049e-16 5.551115123e-17)
+(2.775557562e-17 4.440892099e-16 2.775557562e-17)
+(0 2.220446049e-16 2.775557562e-17)
+(0 2.220446049e-16 -2.775557562e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 1.110223025e-16 0)
+(0 4.440892099e-16 2.775557562e-17)
+(-2.775557562e-17 2.220446049e-16 0)
+(-2.775557562e-17 -4.440892099e-16 0)
+(-2.775557562e-17 0 5.551115123e-17)
+(0 0 2.775557562e-17)
+(0 2.220446049e-16 -2.775557562e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 0)
+(0 2.220446049e-16 -2.775557562e-17)
+(-2.775557562e-17 -2.220446049e-16 5.551115123e-17)
+(-2.775557562e-17 -4.440892099e-16 -5.551115123e-17)
+(0 -2.220446049e-16 -2.775557562e-17)
+(-2.775557562e-17 -4.440892099e-16 -5.551115123e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 0 5.551115123e-17)
+(0 -2.220446049e-16 -2.775557562e-17)
+(0 2.220446049e-16 -2.775557562e-17)
+(-2.775557562e-17 0 -5.551115123e-17)
+(-2.775557562e-17 2.220446049e-16 0)
+(-2.775557562e-17 -2.220446049e-16 -5.551115123e-17)
+(-2.775557562e-17 0 5.551115123e-17)
+(-2.775557562e-17 -2.220446049e-16 0)
+(0 2.220446049e-16 -2.775557562e-17)
+(0 -2.220446049e-16 -2.775557562e-17)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 0 -5.551115123e-17)
+(-2.775557562e-17 0 5.551115123e-17)
+(0 0 0)
+(0 -2.220446049e-16 -2.775557562e-17)
+(-2.775557562e-17 -4.440892099e-16 -2.775557562e-17)
+(-2.775557562e-17 0 0)
+(0 0 0)
+(-2.775557562e-17 -4.440892099e-16 5.551115123e-17)
+(-2.775557562e-17 0 -2.775557562e-17)
+(0 2.220446049e-16 -2.775557562e-17)
+(0 0 0)
+(0 -2.220446049e-16 0)
+(-2.775557562e-17 0 -2.775557562e-17)
+(0 -2.220446049e-16 2.775557562e-17)
+(0 0 0)
+(0 0 -2.775557562e-17)
+(0 -4.440892099e-16 -2.775557562e-17)
+(-2.775557562e-17 -2.220446049e-16 0)
+(0 -4.440892099e-16 -2.775557562e-17)
+(0 0 -2.775557562e-17)
+(0 -8.881784197e-16 -2.775557562e-17)
+(-2.775557562e-17 0 0)
+(0 0 -2.775557562e-17)
+(2.775557562e-17 2.220446049e-16 2.775557562e-17)
+(-2.775557562e-17 0 5.551115123e-17)
+(0 0 0)
+(0 -8.881784197e-16 -1.387778781e-17)
+(-2.775557562e-17 0 0)
+(0 1.110223025e-16 5.551115123e-17)
+(-2.775557562e-17 0 0)
+(0 -4.440892099e-16 -1.387778781e-17)
+(-2.775557562e-17 0 5.551115123e-17)
+(0 -1.110223025e-16 -5.551115123e-17)
+(0 0 -2.775557562e-17)
+(0 -8.881784197e-16 -1.387778781e-17)
+(-2.775557562e-17 0 0)
+(0 -2.220446049e-16 5.551115123e-17)
+(-2.775557562e-17 -4.440892099e-16 0)
+(0 0 -1.387778781e-17)
+(0 -2.220446049e-16 2.775557562e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 -1.110223025e-16 0)
+(0 0 -2.775557562e-17)
+(-2.775557562e-17 0 5.551115123e-17)
+(-2.775557562e-17 -4.440892099e-16 0)
+(0 0 5.551115123e-17)
+(-2.775557562e-17 -2.220446049e-16 0)
+(0 -2.220446049e-16 -5.551115123e-17)
+(-2.775557562e-17 -2.220446049e-16 0)
+(0 -3.330669074e-16 5.551115123e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 -4.440892099e-16 0)
+(-2.775557562e-17 0 0)
+(0 0 -2.775557562e-17)
+(2.775557562e-17 2.220446049e-16 -5.551115123e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 5.551115123e-17)
+(-2.775557562e-17 -2.220446049e-16 0)
+(2.775557562e-17 1.110223025e-16 -5.551115123e-17)
+(-2.775557562e-17 -4.440892099e-16 0)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 2.220446049e-16 0)
+(0 2.220446049e-16 5.551115123e-17)
+(-2.775557562e-17 4.440892099e-16 0)
+(0 2.220446049e-16 0)
+(0 0 -2.775557562e-17)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 0 0)
+(0 -2.220446049e-16 5.551115123e-17)
+(-2.775557562e-17 0 0)
+(0 0 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 -4.440892099e-16 0)
+(0 -2.220446049e-16 5.551115123e-17)
+(-2.775557562e-17 0 0)
+(0 0 0)
+(0 0 -2.775557562e-17)
+(-2.775557562e-17 -4.440892099e-16 0)
+(-2.775557562e-17 -4.440892099e-16 0)
+(0 -2.220446049e-16 5.551115123e-17)
+(0 0 0)
+(0 0 0)
+(0 -4.440892099e-16 2.775557562e-17)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 -2.220446049e-16 0)
+(0 -2.220446049e-16 5.551115123e-17)
+(-2.775557562e-17 -6.661338148e-16 0)
+(0 -2.220446049e-16 0)
+(-2.775557562e-17 -6.661338148e-16 5.551115123e-17)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 -2.220446049e-16 0)
+(0 2.220446049e-16 5.551115123e-17)
+(-2.775557562e-17 0 0)
+(0 0 0)
+(0 0 2.775557562e-17)
+(-5.551115123e-17 0 5.551115123e-17)
+(0 4.440892099e-16 -2.775557562e-17)
+(-2.775557562e-17 -4.440892099e-16 5.551115123e-17)
+(-2.775557562e-17 -2.220446049e-16 0)
+(0 0 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 5.551115123e-17)
+(0 4.440892099e-16 -2.775557562e-17)
+(0 -2.220446049e-16 0)
+(-2.775557562e-17 -2.220446049e-16 0)
+(0 -2.220446049e-16 0)
+(-2.775557562e-17 -2.220446049e-16 5.551115123e-17)
+(0 -2.220446049e-16 5.551115123e-17)
+(0 -2.220446049e-16 -2.775557562e-17)
+(-2.775557562e-17 2.220446049e-16 5.551115123e-17)
+(-2.775557562e-17 -2.220446049e-16 0)
+(0 -2.220446049e-16 0)
+(-2.775557562e-17 -2.220446049e-16 5.551115123e-17)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 -2.220446049e-16 0)
+(0 0 5.551115123e-17)
+(-2.775557562e-17 -2.220446049e-16 0)
+(0 -4.440892099e-16 0)
+(0 0 2.775557562e-17)
+(-2.775557562e-17 -2.220446049e-16 5.551115123e-17)
+(0 2.220446049e-16 -2.775557562e-17)
+(0 -4.440892099e-16 5.551115123e-17)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 -2.220446049e-16 5.551115123e-17)
+(-2.775557562e-17 -6.661338148e-16 0)
+(-2.775557562e-17 0 5.551115123e-17)
+(0 2.220446049e-16 -2.775557562e-17)
+(0 0 0)
+(0 0 0)
+(0 -2.220446049e-16 0)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 -2.220446049e-16 5.551115123e-17)
+(0 0 0)
+(0 -2.220446049e-16 5.551115123e-17)
+(-2.775557562e-17 -2.220446049e-16 5.551115123e-17)
+(0 0 0)
+(0 -1.387778781e-17 -5.551115123e-17)
+(-2.775557562e-17 -4.440892099e-16 5.551115123e-17)
+(0 0 -2.775557562e-17)
+(0 -2.220446049e-16 0)
+(-2.775557562e-17 -1.387778781e-17 0)
+(0 0 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 -4.440892099e-16 5.551115123e-17)
+(-2.775557562e-17 0 0)
+(2.775557562e-17 1.734723476e-18 -2.775557562e-17)
+(-2.775557562e-17 -4.440892099e-16 5.551115123e-17)
+(0 -4.440892099e-16 5.551115123e-17)
+(0 0 -5.551115123e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 -2.220446049e-16 0)
+(0 -2.220446049e-16 0)
+(-2.775557562e-17 0 -5.551115123e-17)
+(0 2.775557562e-17 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 -2.220446049e-16 5.551115123e-17)
+(-2.775557562e-17 0 -5.551115123e-17)
+(0 1.387778781e-17 0)
+(0 -2.220446049e-16 2.775557562e-17)
+(0 -2.220446049e-16 0)
+(0 0 -5.551115123e-17)
+(0 2.775557562e-17 0)
+(0 -2.220446049e-16 -2.775557562e-17)
+(-2.775557562e-17 0 0)
+(0 -4.440892099e-16 0)
+(0 0 -5.551115123e-17)
+(0 0 2.775557562e-17)
+(-2.775557562e-17 -5.551115123e-17 0)
+(0 0 -2.775557562e-17)
+(0 0 -5.551115123e-17)
+(0 0 0)
+(0 1.110223025e-16 -5.551115123e-17)
+(0 0 2.775557562e-17)
+(-2.775557562e-17 -5.551115123e-17 0)
+(0 4.440892099e-16 0)
+(0 -1.110223025e-16 -5.551115123e-17)
+(0 -8.881784197e-16 0)
+(-2.775557562e-17 0 0)
+(0 0 2.775557562e-17)
+(0 -1.110223025e-16 -5.551115123e-17)
+(2.775557562e-17 4.440892099e-16 -2.775557562e-17)
+(-2.775557562e-17 0 0)
+(0 -4.440892099e-16 0)
+(0 0 0)
+(0 -4.440892099e-16 2.775557562e-17)
+(-2.775557562e-17 1.110223025e-16 -5.551115123e-17)
+(0 4.440892099e-16 0)
+(0 1.110223025e-16 0)
+(0 -4.440892099e-16 0)
+(-2.775557562e-17 0 -5.551115123e-17)
+(0 -4.440892099e-16 2.775557562e-17)
+(0 1.110223025e-16 0)
+(-2.775557562e-17 0 2.775557562e-17)
+(-2.775557562e-17 -1.110223025e-16 0)
+(0 0 0)
+(0 1.110223025e-16 -5.551115123e-17)
+(0 -8.881784197e-16 2.775557562e-17)
+(-2.775557562e-17 -1.110223025e-16 0)
+(0 0 0)
+(0 1.110223025e-16 -5.551115123e-17)
+(0 -4.440892099e-16 0)
+(-2.775557562e-17 0 0)
+(0 -4.440892099e-16 2.775557562e-17)
+(2.775557562e-17 -2.220446049e-16 -5.551115123e-17)
+(2.775557562e-17 4.440892099e-16 -2.775557562e-17)
+(0 0 -5.551115123e-17)
+(0 -4.440892099e-16 0)
+(0 -2.220446049e-16 -5.551115123e-17)
+(0 0 2.775557562e-17)
+(0 -2.220446049e-16 -5.551115123e-17)
+(0 0 0)
+(0 -2.220446049e-16 -5.551115123e-17)
+(0 -4.440892099e-16 0)
+(0 -2.220446049e-16 -5.551115123e-17)
+(0 0 0)
+(0 -2.220446049e-16 -5.551115123e-17)
+(0 -2.220446049e-16 0)
+(0 -4.440892099e-16 2.775557562e-17)
+(-2.775557562e-17 0 -2.775557562e-17)
+(0 0 -5.551115123e-17)
+(-2.775557562e-17 -2.220446049e-16 5.551115123e-17)
+(2.775557562e-17 4.440892099e-16 -2.775557562e-17)
+(-2.775557562e-17 2.775557562e-17 2.775557562e-17)
+(0 -2.220446049e-16 -5.551115123e-17)
+(0 -2.220446049e-16 5.551115123e-17)
+(-2.775557562e-17 -4.440892099e-16 2.775557562e-17)
+(-2.775557562e-17 2.775557562e-17 0)
+(0 0 0)
+(0 -2.220446049e-16 0)
+(0 0 2.775557562e-17)
+(-2.775557562e-17 0 -2.775557562e-17)
+(0 0 -5.551115123e-17)
+(-2.775557562e-17 -4.440892099e-16 5.551115123e-17)
+(0 4.440892099e-16 0)
+(0 0 0)
+(-2.775557562e-17 -2.220446049e-16 -5.551115123e-17)
+(0 0 0)
+(0 0 0)
+(-2.775557562e-17 0 -2.775557562e-17)
+(0 -2.220446049e-16 -5.551115123e-17)
+(0 0 0)
+(0 -4.440892099e-16 2.775557562e-17)
+(0 0 0)
+(0 2.220446049e-16 0)
+(-5.551115123e-17 -2.220446049e-16 5.551115123e-17)
+(-2.775557562e-17 -4.440892099e-16 5.551115123e-17)
+(5.551115123e-17 5.551115123e-17 2.775557562e-17)
+(0 -4.440892099e-16 -5.551115123e-17)
+(-2.775557562e-17 0 5.551115123e-17)
+(-2.775557562e-17 -4.440892099e-16 2.775557562e-17)
+(-2.775557562e-17 0 -2.775557562e-17)
+(0 2.220446049e-16 0)
+(0 0 0)
+(0 -8.881784197e-16 2.775557562e-17)
+(0 0 0)
+(0 0 -5.551115123e-17)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 3.469446952e-18 2.775557562e-17)
+(-2.775557562e-17 0 -2.775557562e-17)
+(0 0 0)
+(0 -4.440892099e-16 5.551115123e-17)
+(2.775557562e-17 0 0)
+(0 0 0)
+(0 0 -5.551115123e-17)
+(0 -4.440892099e-16 0)
+(0 1.734723476e-18 0)
+(-2.775557562e-17 -1.110223025e-16 -2.775557562e-17)
+(0 2.220446049e-16 0)
+(-2.775557562e-17 -2.220446049e-16 0)
+(0 6.938893904e-18 -2.775557562e-17)
+(0 -1.110223025e-16 0)
+(0 0 -5.551115123e-17)
+(0 0 0)
+(-5.551115123e-17 -1.387778781e-17 2.775557562e-17)
+(2.775557562e-17 1.110223025e-16 0)
+(0 2.220446049e-16 0)
+(0 2.220446049e-16 0)
+(-2.775557562e-17 0 -2.775557562e-17)
+(-2.775557562e-17 0 -2.775557562e-17)
+(0 -4.440892099e-16 -5.551115123e-17)
+(-2.775557562e-17 -2.220446049e-16 5.551115123e-17)
+(0 -1.387778781e-17 0)
+(0 0 0)
+(0 -2.220446049e-16 -5.551115123e-17)
+(0 -2.220446049e-16 5.551115123e-17)
+(-5.551115123e-17 -1.387778781e-17 2.775557562e-17)
+(-2.775557562e-17 -1.110223025e-16 -2.775557562e-17)
+(0 -2.220446049e-16 -5.551115123e-17)
+(0 -2.220446049e-16 0)
+(0 -2.775557562e-17 0)
+(0 -1.110223025e-16 0)
+(0 4.440892099e-16 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 2.775557562e-17)
+(0 0 0)
+(0 -2.220446049e-16 -5.551115123e-17)
+(0 0 5.551115123e-17)
+(0 0 0)
+(-2.775557562e-17 0 -2.775557562e-17)
+(0 0 -5.551115123e-17)
+(0 4.440892099e-16 0)
+(-2.775557562e-17 -5.551115123e-17 8.326672685e-17)
+(0 -1.110223025e-16 0)
+(0 -4.440892099e-16 -5.551115123e-17)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-5.551115123e-17 0 0)
+(-2.775557562e-17 -2.220446049e-16 -2.775557562e-17)
+(0 2.220446049e-16 0)
+(0 -6.661338148e-16 5.551115123e-17)
+(-2.775557562e-17 2.775557562e-17 -2.775557562e-17)
+(0 0 0)
+(0 0 -5.551115123e-17)
+(0 -6.661338148e-16 0)
+(0 -2.775557562e-17 0)
+(-2.775557562e-17 -2.220446049e-16 -2.775557562e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 0)
+(0 0 0)
+(-2.775557562e-17 0 -2.775557562e-17)
+(-5.551115123e-17 -4.440892099e-16 0)
+(0 -2.220446049e-16 0)
+(-2.775557562e-17 5.551115123e-17 2.775557562e-17)
+(-2.775557562e-17 -2.220446049e-16 -2.775557562e-17)
+(-2.775557562e-17 0 0)
+(0 -2.220446049e-16 0)
+(0 0 2.775557562e-17)
+(-2.775557562e-17 0 -2.775557562e-17)
+(-5.551115123e-17 -4.440892099e-16 0)
+(-2.775557562e-17 -4.440892099e-16 5.551115123e-17)
+(-2.775557562e-17 0 2.775557562e-17)
+(-2.775557562e-17 0 -2.775557562e-17)
+(-2.775557562e-17 -4.440892099e-16 0)
+(0 -4.440892099e-16 5.551115123e-17)
+(0 -2.775557562e-17 0)
+(-2.775557562e-17 -2.220446049e-16 -2.775557562e-17)
+(-5.551115123e-17 0 0)
+(0 0 0)
+(0 -2.775557562e-17 -2.775557562e-17)
+(-2.775557562e-17 -2.220446049e-16 -2.775557562e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 0 2.775557562e-17)
+(-2.775557562e-17 -2.220446049e-16 -2.775557562e-17)
+(-2.775557562e-17 4.440892099e-16 -5.551115123e-17)
+(0 -4.440892099e-16 5.551115123e-17)
+(0 -5.551115123e-17 0)
+(-2.775557562e-17 0 -2.775557562e-17)
+(-2.775557562e-17 -4.440892099e-16 -5.551115123e-17)
+(0 2.220446049e-16 0)
+(0 0 -2.775557562e-17)
+(-2.775557562e-17 0 -2.775557562e-17)
+(-2.775557562e-17 -8.881784197e-16 -5.551115123e-17)
+(-2.775557562e-17 -6.661338148e-16 0)
+(0 0 0)
+(-2.775557562e-17 0 -2.775557562e-17)
+(-2.775557562e-17 0 -5.551115123e-17)
+(0 0 5.551115123e-17)
+(-2.775557562e-17 0 2.775557562e-17)
+(0 -5.551115123e-17 2.775557562e-17)
+(0 -5.551115123e-17 2.775557562e-17)
+(5.551115123e-17 5.551115123e-17 -2.775557562e-17)
+(0 0 0)
+(0 -5.551115123e-17 0)
+(-2.775557562e-17 0 2.775557562e-17)
+(0 0 2.775557562e-17)
+(-2.775557562e-17 0 2.775557562e-17)
+(0 0 0)
+(0 -1.110223025e-16 0)
+(-2.775557562e-17 0 2.775557562e-17)
+(0 -5.551115123e-17 0)
+(0 -5.551115123e-17 2.775557562e-17)
+(0 -5.551115123e-17 0)
+(-2.775557562e-17 -1.110223025e-16 2.775557562e-17)
+(0 0 2.775557562e-17)
+(0 0 2.775557562e-17)
+(5.551115123e-17 1.665334537e-16 -5.551115123e-17)
+(0 0 0)
+(0 0 0)
+(-2.775557562e-17 0 2.775557562e-17)
+(0 0 2.775557562e-17)
+(-2.775557562e-17 0 2.775557562e-17)
+(0 0 0)
+(0 0 0)
+(0 1.110223025e-16 0)
+(-2.775557562e-17 -1.110223025e-16 2.775557562e-17)
+(0 0 2.775557562e-17)
+(-2.775557562e-17 0 2.775557562e-17)
+(0 -1.110223025e-16 0)
+(0 -1.110223025e-16 0)
+(-2.775557562e-17 0 2.775557562e-17)
+(0 -1.110223025e-16 0)
+(0 -2.220446049e-16 2.775557562e-17)
+(0 -1.110223025e-16 2.775557562e-17)
+(-2.775557562e-17 -1.110223025e-16 2.775557562e-17)
+(0 -1.110223025e-16 2.775557562e-17)
+(-2.775557562e-17 0 2.775557562e-17)
+(0 -2.220446049e-16 0)
+(-2.775557562e-17 0 0)
+(0 -2.220446049e-16 2.775557562e-17)
+(-2.775557562e-17 -1.110223025e-16 2.775557562e-17)
+(0 -1.110223025e-16 2.775557562e-17)
+(-2.775557562e-17 0 2.775557562e-17)
+(0 0 0)
+(-2.775557562e-17 -1.110223025e-16 0)
+(0 0 2.775557562e-17)
+(2.775557562e-17 2.220446049e-16 0)
+(-2.775557562e-17 0 0)
+(0 -2.220446049e-16 0)
+(-2.775557562e-17 0 2.775557562e-17)
+(0 0 2.775557562e-17)
+(-2.775557562e-17 0 2.775557562e-17)
+(0 0 0)
+(0 -1.110223025e-16 0)
+(0 0 0)
+(-2.775557562e-17 0 2.775557562e-17)
+(0 0 2.775557562e-17)
+(-2.775557562e-17 0 2.775557562e-17)
+(0 -2.220446049e-16 0)
+(0 0 0)
+(-2.775557562e-17 0 0)
+(2.775557562e-17 4.440892099e-16 -5.551115123e-17)
+(-2.775557562e-17 1.110223025e-16 2.775557562e-17)
+(0 -2.220446049e-16 0)
+(-2.775557562e-17 0 2.775557562e-17)
+(0 2.220446049e-16 0)
+(0 0 0)
+(-2.775557562e-17 -2.220446049e-16 2.775557562e-17)
+(0 -2.220446049e-16 0)
+(0 0 0)
+(-2.775557562e-17 -2.220446049e-16 2.775557562e-17)
+(0 0 0)
+(0 2.220446049e-16 0)
+(-2.775557562e-17 0 2.775557562e-17)
+(0 0 0)
+(0 0 0)
+(-2.775557562e-17 0 2.775557562e-17)
+(0 -2.220446049e-16 0)
+(0 2.220446049e-16 0)
+(-2.775557562e-17 0 2.775557562e-17)
+(0 2.220446049e-16 0)
+(-2.775557562e-17 2.220446049e-16 0)
+(0 -2.220446049e-16 2.775557562e-17)
+(0 0 0)
+(0 0 2.775557562e-17)
+(-2.775557562e-17 -4.440892099e-16 2.775557562e-17)
+(-2.775557562e-17 0 2.775557562e-17)
+(-2.775557562e-17 2.220446049e-16 2.775557562e-17)
+(2.775557562e-17 2.220446049e-16 0)
+(-2.775557562e-17 0 0)
+(0 0 0)
+(-2.775557562e-17 0 2.775557562e-17)
+(0 0 0)
+(0 -4.440892099e-16 2.775557562e-17)
+(-2.775557562e-17 -4.440892099e-16 2.775557562e-17)
+(0 0 2.775557562e-17)
+(0 -4.440892099e-16 2.775557562e-17)
+(-2.775557562e-17 -2.220446049e-16 2.775557562e-17)
+(-2.775557562e-17 -4.440892099e-16 2.775557562e-17)
+(0 -2.220446049e-16 2.775557562e-17)
+(-2.775557562e-17 -2.220446049e-16 2.775557562e-17)
+(-2.775557562e-17 0 0)
+(0 -4.440892099e-16 2.775557562e-17)
+(-2.775557562e-17 -2.220446049e-16 2.775557562e-17)
+(-2.775557562e-17 0 2.775557562e-17)
+(0 -2.220446049e-16 2.775557562e-17)
+(-2.775557562e-17 -4.440892099e-16 2.775557562e-17)
+(-2.775557562e-17 0 0)
+(0 -4.440892099e-16 2.775557562e-17)
+(-2.775557562e-17 4.440892099e-16 2.775557562e-17)
+(-2.775557562e-17 0 2.775557562e-17)
+(0 2.220446049e-16 2.775557562e-17)
+(-2.775557562e-17 2.220446049e-16 2.775557562e-17)
+(-2.775557562e-17 0 0)
+(0 0 2.775557562e-17)
+(-2.775557562e-17 0 2.775557562e-17)
+(-2.775557562e-17 -2.220446049e-16 2.775557562e-17)
+(-2.775557562e-17 0 0)
+(0 -4.440892099e-16 2.775557562e-17)
+(-2.775557562e-17 -2.220446049e-16 0)
+(0 -2.220446049e-16 0)
+(-2.775557562e-17 0 2.775557562e-17)
+(-2.775557562e-17 -2.220446049e-16 2.775557562e-17)
+(0 4.440892099e-16 0)
+(-2.775557562e-17 -2.220446049e-16 2.775557562e-17)
+(0 2.220446049e-16 -2.775557562e-17)
+(0 -2.220446049e-16 2.775557562e-17)
+(-2.775557562e-17 0 2.775557562e-17)
+(0 0 0)
+(0 2.220446049e-16 0)
+(-2.775557562e-17 -2.220446049e-16 2.775557562e-17)
+(0 -2.220446049e-16 0)
+(0 2.220446049e-16 0)
+(-2.775557562e-17 -2.220446049e-16 2.775557562e-17)
+(-2.775557562e-17 -2.220446049e-16 2.775557562e-17)
+(0 2.220446049e-16 0)
+(-2.775557562e-17 -2.220446049e-16 2.775557562e-17)
+(0 2.220446049e-16 -2.775557562e-17)
+(0 0 2.775557562e-17)
+(-2.775557562e-17 -6.661338148e-16 2.775557562e-17)
+(0 2.220446049e-16 0)
+(0 -2.220446049e-16 0)
+(-2.775557562e-17 -2.220446049e-16 2.775557562e-17)
+(0 0 0)
+(0 0 0)
+(-2.775557562e-17 0 2.775557562e-17)
+(-2.775557562e-17 -2.220446049e-16 2.775557562e-17)
+(0 2.220446049e-16 0)
+(-2.775557562e-17 -4.440892099e-16 2.775557562e-17)
+(0 -2.220446049e-16 -2.775557562e-17)
+(-2.775557562e-17 -4.440892099e-16 0)
+(0 -4.440892099e-16 2.775557562e-17)
+(0 0 0)
+(-2.775557562e-17 0 0)
+(0 0 2.775557562e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 0)
+(0 4.440892099e-16 2.775557562e-17)
+(0 0 -2.775557562e-17)
+(-2.775557562e-17 -4.440892099e-16 0)
+(0 -4.440892099e-16 2.775557562e-17)
+(-2.775557562e-17 -4.440892099e-16 0)
+(-2.775557562e-17 0 0)
+(0 -8.881784197e-16 2.775557562e-17)
+(0 0 -2.775557562e-17)
+(-2.775557562e-17 0 0)
+(0 -4.440892099e-16 2.775557562e-17)
+(-2.775557562e-17 -4.440892099e-16 0)
+(-2.775557562e-17 -4.440892099e-16 0)
+(0 -4.440892099e-16 2.775557562e-17)
+(0 4.440892099e-16 -2.775557562e-17)
+(-2.775557562e-17 -4.440892099e-16 0)
+(0 0 2.775557562e-17)
+(-2.775557562e-17 -4.440892099e-16 0)
+(-2.775557562e-17 0 -5.551115123e-17)
+(2.775557562e-17 0 0)
+(0 0 2.775557562e-17)
+(0 -4.440892099e-16 -2.775557562e-17)
+(0 0 2.775557562e-17)
+(0 0 2.775557562e-17)
+(-2.775557562e-17 0 -5.551115123e-17)
+(2.775557562e-17 0 0)
+(0 -4.440892099e-16 2.775557562e-17)
+(0 4.440892099e-16 -2.775557562e-17)
+(-2.775557562e-17 -4.440892099e-16 2.775557562e-17)
+(0 -8.881784197e-16 2.775557562e-17)
+(2.775557562e-17 0 2.775557562e-17)
+(2.775557562e-17 3.469446952e-18 -1.387778781e-17)
+(0 1.734723476e-18 -1.387778781e-17)
+(0 6.938893904e-18 0)
+(-5.551115123e-17 0 2.775557562e-17)
+(-2.775557562e-17 0 -1.387778781e-17)
+(0 -1.387778781e-17 2.775557562e-17)
+(-2.775557562e-17 -1.387778781e-17 1.387778781e-17)
+(0 -2.775557562e-17 1.387778781e-17)
+(-2.775557562e-17 -2.775557562e-17 2.775557562e-17)
+(0 0 1.387778781e-17)
+(0 -4.163336342e-17 1.387778781e-17)
+(0 2.775557562e-17 -2.775557562e-17)
+(0 2.775557562e-17 0)
+(0 -2.775557562e-17 1.387778781e-17)
+(0 -5.551115123e-17 0)
+(-2.775557562e-17 5.551115123e-17 0)
+(0 0 0)
+(0 -2.775557562e-17 -2.775557562e-17)
+(0 -2.775557562e-17 1.387778781e-17)
+(0 -5.551115123e-17 1.387778781e-17)
+(0 5.551115123e-17 -2.775557562e-17)
+(0 -5.551115123e-17 1.387778781e-17)
+(0 -2.775557562e-17 1.387778781e-17)
+(0 0 0)
+(-2.775557562e-17 0 0)
+(0 0 0)
+(0 -5.551115123e-17 2.775557562e-17)
+(5.551115123e-17 5.551115123e-17 -1.387778781e-17)
+(0 0 1.387778781e-17)
+(0 0 0)
+(-2.775557562e-17 0 0)
+(0 0 0)
+(0 0 -2.775557562e-17)
+(0 0 1.387778781e-17)
+(0 -1.110223025e-16 1.387778781e-17)
+(0 -5.551115123e-17 -2.775557562e-17)
+(0 -5.551115123e-17 1.387778781e-17)
+(2.775557562e-17 0 -1.387778781e-17)
+(0 5.551115123e-17 0)
+(-2.775557562e-17 0 0)
+(0 0 0)
+(0 -5.551115123e-17 2.775557562e-17)
+(5.551115123e-17 5.551115123e-17 -1.387778781e-17)
+(0 5.551115123e-17 1.387778781e-17)
+(0 0 0)
+(-2.775557562e-17 0 0)
+(0 0 0)
+(0 0 -2.775557562e-17)
+(0 0 1.387778781e-17)
+(0 0 1.387778781e-17)
+(0 0 0)
+(-2.775557562e-17 -1.110223025e-16 0)
+(0 0 0)
+(0 0 -2.775557562e-17)
+(0 -1.110223025e-16 1.387778781e-17)
+(0 -1.110223025e-16 1.387778781e-17)
+(-2.775557562e-17 0 -2.775557562e-17)
+(0 -1.110223025e-16 1.387778781e-17)
+(0 0 1.387778781e-17)
+(-2.775557562e-17 -1.110223025e-16 0)
+(-2.775557562e-17 -1.110223025e-16 0)
+(0 -1.110223025e-16 0)
+(-2.775557562e-17 -1.110223025e-16 -2.775557562e-17)
+(0 -2.220446049e-16 1.387778781e-17)
+(-2.775557562e-17 0 1.387778781e-17)
+(-2.775557562e-17 -1.110223025e-16 0)
+(-2.775557562e-17 -1.110223025e-16 0)
+(0 -1.110223025e-16 0)
+(-2.775557562e-17 0 -2.775557562e-17)
+(0 0 1.387778781e-17)
+(-2.775557562e-17 -1.110223025e-16 1.387778781e-17)
+(0 -2.220446049e-16 0)
+(2.775557562e-17 0 0)
+(-2.775557562e-17 0 1.387778781e-17)
+(0 0 0)
+(-2.775557562e-17 0 0)
+(0 0 0)
+(0 0 -2.775557562e-17)
+(0 0 1.387778781e-17)
+(0 -1.110223025e-16 1.387778781e-17)
+(0 0 0)
+(-2.775557562e-17 0 0)
+(0 -2.220446049e-16 0)
+(0 2.220446049e-16 -2.775557562e-17)
+(0 -2.220446049e-16 1.387778781e-17)
+(0 -2.220446049e-16 1.387778781e-17)
+(-2.775557562e-17 -2.220446049e-16 2.775557562e-17)
+(2.775557562e-17 4.440892099e-16 -1.387778781e-17)
+(-2.775557562e-17 1.110223025e-16 0)
+(0 2.220446049e-16 0)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 0 0)
+(0 0 0)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 -2.220446049e-16 0)
+(0 0 0)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 -2.220446049e-16 0)
+(0 2.220446049e-16 0)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 0 0)
+(0 -2.220446049e-16 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 -2.220446049e-16 0)
+(0 -2.220446049e-16 0)
+(-2.775557562e-17 2.220446049e-16 0)
+(-2.775557562e-17 0 0)
+(0 -2.220446049e-16 0)
+(0 -2.220446049e-16 1.387778781e-17)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 0 1.387778781e-17)
+(2.775557562e-17 2.220446049e-16 0)
+(2.775557562e-17 0 -2.775557562e-17)
+(-2.775557562e-17 0 1.387778781e-17)
+(0 2.220446049e-16 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 -4.440892099e-16 -1.387778781e-17)
+(0 -2.220446049e-16 1.387778781e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 -4.440892099e-16 1.387778781e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 -2.220446049e-16 -1.387778781e-17)
+(-2.775557562e-17 0 1.387778781e-17)
+(-2.775557562e-17 -4.440892099e-16 0)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 0 1.387778781e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 -4.440892099e-16 -1.387778781e-17)
+(-2.775557562e-17 0 1.387778781e-17)
+(-2.775557562e-17 -6.661338148e-16 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 1.387778781e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 2.220446049e-16 -1.387778781e-17)
+(-2.775557562e-17 0 1.387778781e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 2.220446049e-16 1.387778781e-17)
+(0 0 0)
+(0 2.220446049e-16 1.387778781e-17)
+(-2.775557562e-17 -2.220446049e-16 1.387778781e-17)
+(0 -4.440892099e-16 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 -2.220446049e-16 1.387778781e-17)
+(0 2.220446049e-16 0)
+(-2.775557562e-17 0 1.387778781e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 -1.387778781e-17)
+(-2.775557562e-17 -4.440892099e-16 0)
+(0 0 0)
+(-2.775557562e-17 2.220446049e-16 0)
+(-2.775557562e-17 0 0)
+(0 -2.220446049e-16 0)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 -2.220446049e-16 1.387778781e-17)
+(0 -2.220446049e-16 0)
+(-2.775557562e-17 -2.220446049e-16 1.387778781e-17)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 -2.220446049e-16 -1.387778781e-17)
+(-2.775557562e-17 0 0)
+(0 -2.220446049e-16 0)
+(-2.775557562e-17 2.220446049e-16 0)
+(-2.775557562e-17 -2.220446049e-16 0)
+(0 -2.220446049e-16 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 -2.220446049e-16 1.387778781e-17)
+(0 2.220446049e-16 0)
+(-2.775557562e-17 0 1.387778781e-17)
+(-2.775557562e-17 -4.440892099e-16 0)
+(0 -4.440892099e-16 0)
+(0 -4.440892099e-16 1.387778781e-17)
+(-2.775557562e-17 0 0)
+(0 0 0)
+(0 0 1.387778781e-17)
+(-2.775557562e-17 0 1.387778781e-17)
+(0 -8.881784197e-16 0)
+(0 4.440892099e-16 1.387778781e-17)
+(0 0 0)
+(0 -4.440892099e-16 0)
+(0 -4.440892099e-16 1.387778781e-17)
+(-2.775557562e-17 -4.440892099e-16 1.387778781e-17)
+(0 0 0)
+(0 -4.440892099e-16 1.387778781e-17)
+(0 -4.440892099e-16 0)
+(0 -4.440892099e-16 0)
+(0 0 1.387778781e-17)
+(-2.775557562e-17 -4.440892099e-16 1.387778781e-17)
+(0 -4.440892099e-16 0)
+(0 -4.440892099e-16 1.387778781e-17)
+(0 4.440892099e-16 0)
+(0 0 0)
+(0 0 1.387778781e-17)
+(-2.775557562e-17 -4.440892099e-16 1.387778781e-17)
+(-2.775557562e-17 0 5.551115123e-17)
+(2.775557562e-17 0 -2.775557562e-17)
+(0 0 1.387778781e-17)
+(0 0 0)
+(0 0 0)
+(0 -4.440892099e-16 1.387778781e-17)
+(-2.775557562e-17 -4.440892099e-16 5.551115123e-17)
+(2.775557562e-17 0 -2.775557562e-17)
+(0 -4.440892099e-16 1.387778781e-17)
+(0 0 0)
+(-2.775557562e-17 -4.440892099e-16 1.387778781e-17)
+(0 -8.881784197e-16 1.387778781e-17)
+(-5.551115123e-17 3.469446952e-18 1.387778781e-17)
+(0 -3.469446952e-18 -1.387778781e-17)
+(0 0 0)
+(2.775557562e-17 1.387778781e-17 0)
+(-2.775557562e-17 6.938893904e-18 6.938893904e-18)
+(-2.775557562e-17 -6.938893904e-18 0)
+(2.775557562e-17 -1.387778781e-17 -1.387778781e-17)
+(-2.775557562e-17 -1.387778781e-17 6.938893904e-18)
+(0 -1.387778781e-17 -1.387778781e-17)
+(-2.775557562e-17 0 -1.387778781e-17)
+(0 0 0)
+(-2.775557562e-17 -1.387778781e-17 2.081668171e-17)
+(0 0 -1.387778781e-17)
+(0 2.775557562e-17 0)
+(0 0 -1.387778781e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 0)
+(0 -2.775557562e-17 1.387778781e-17)
+(-2.775557562e-17 -5.551115123e-17 0)
+(-2.775557562e-17 0 0)
+(0 -5.551115123e-17 1.387778781e-17)
+(-2.775557562e-17 -2.775557562e-17 0)
+(-2.775557562e-17 5.551115123e-17 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 5.551115123e-17 0)
+(5.551115123e-17 0 -1.387778781e-17)
+(0 0 -1.387778781e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 -1.110223025e-16 0)
+(0 0 1.387778781e-17)
+(0 -5.551115123e-17 -1.387778781e-17)
+(-2.775557562e-17 -5.551115123e-17 0)
+(0 -5.551115123e-17 1.387778781e-17)
+(2.775557562e-17 -5.551115123e-17 -6.938893904e-18)
+(-2.775557562e-17 5.551115123e-17 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 0)
+(5.551115123e-17 5.551115123e-17 -1.387778781e-17)
+(0 5.551115123e-17 -1.387778781e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 0)
+(0 1.110223025e-16 1.387778781e-17)
+(0 0 -1.387778781e-17)
+(-2.775557562e-17 1.110223025e-16 0)
+(-2.775557562e-17 -1.110223025e-16 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 -1.110223025e-16 0)
+(0 -1.110223025e-16 1.387778781e-17)
+(0 -1.110223025e-16 -1.387778781e-17)
+(0 0 0)
+(0 0 1.387778781e-17)
+(0 0 6.938893904e-18)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 -1.110223025e-16 1.387778781e-17)
+(0 -1.110223025e-16 0)
+(0 -1.110223025e-16 0)
+(0 -1.110223025e-16 1.387778781e-17)
+(0 0 -1.387778781e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 -1.110223025e-16 1.387778781e-17)
+(0 -1.110223025e-16 0)
+(0 -1.110223025e-16 0)
+(0 0 1.387778781e-17)
+(0 -1.110223025e-16 -1.387778781e-17)
+(0 -2.220446049e-16 -1.387778781e-17)
+(0 -1.110223025e-16 6.938893904e-18)
+(0 0 -1.387778781e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 0)
+(0 0 1.387778781e-17)
+(0 -1.110223025e-16 -1.387778781e-17)
+(-2.775557562e-17 2.220446049e-16 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 1.110223025e-16 0)
+(0 0 1.387778781e-17)
+(0 0 -1.387778781e-17)
+(-2.775557562e-17 0 0)
+(0 2.220446049e-16 -6.938893904e-18)
+(-2.775557562e-17 -1.110223025e-16 1.387778781e-17)
+(0 0 1.387778781e-17)
+(-2.775557562e-17 0 -1.387778781e-17)
+(-2.775557562e-17 0 1.387778781e-17)
+(0 2.220446049e-16 1.387778781e-17)
+(-2.775557562e-17 -4.440892099e-16 -1.387778781e-17)
+(-2.775557562e-17 0 1.387778781e-17)
+(0 2.220446049e-16 1.387778781e-17)
+(-2.775557562e-17 -2.220446049e-16 -1.387778781e-17)
+(-2.775557562e-17 0 1.387778781e-17)
+(0 0 1.387778781e-17)
+(-2.775557562e-17 -2.220446049e-16 -1.387778781e-17)
+(-2.775557562e-17 2.220446049e-16 1.387778781e-17)
+(0 2.220446049e-16 1.387778781e-17)
+(-2.775557562e-17 0 -1.387778781e-17)
+(-2.775557562e-17 0 1.387778781e-17)
+(0 -2.220446049e-16 1.387778781e-17)
+(-2.775557562e-17 -2.220446049e-16 -1.387778781e-17)
+(-2.775557562e-17 0 1.387778781e-17)
+(-2.775557562e-17 -2.220446049e-16 1.387778781e-17)
+(0 -2.220446049e-16 6.938893904e-18)
+(-2.775557562e-17 -2.220446049e-16 1.387778781e-17)
+(-2.775557562e-17 0 1.387778781e-17)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 2.220446049e-16 0)
+(0 -4.440892099e-16 1.387778781e-17)
+(0 0 -1.387778781e-17)
+(-2.775557562e-17 0 0)
+(0 0 1.387778781e-17)
+(-2.775557562e-17 0 -1.387778781e-17)
+(-2.775557562e-17 0 1.387778781e-17)
+(-2.775557562e-17 0 2.775557562e-17)
+(-2.775557562e-17 -4.440892099e-16 0)
+(0 -2.220446049e-16 6.938893904e-18)
+(-2.775557562e-17 -4.440892099e-16 1.387778781e-17)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 -4.440892099e-16 0)
+(-2.775557562e-17 0 2.775557562e-17)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 -2.220446049e-16 1.387778781e-17)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 -2.220446049e-16 2.775557562e-17)
+(-2.775557562e-17 -4.440892099e-16 0)
+(-2.775557562e-17 2.220446049e-16 0)
+(-2.775557562e-17 -8.881784197e-16 1.387778781e-17)
+(-2.775557562e-17 -6.661338148e-16 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 -2.220446049e-16 2.775557562e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 -4.440892099e-16 0)
+(-2.775557562e-17 -2.220446049e-16 1.387778781e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 1.387778781e-17)
+(0 2.220446049e-16 6.938893904e-18)
+(-2.775557562e-17 -2.220446049e-16 0)
+(0 -2.220446049e-16 1.387778781e-17)
+(-2.775557562e-17 0 -1.387778781e-17)
+(-2.775557562e-17 0 0)
+(0 0 0)
+(-2.775557562e-17 0 -1.387778781e-17)
+(-2.775557562e-17 0 1.387778781e-17)
+(-2.775557562e-17 -2.220446049e-16 2.775557562e-17)
+(-2.775557562e-17 2.220446049e-16 0)
+(-2.775557562e-17 0 1.387778781e-17)
+(0 0 1.387778781e-17)
+(-2.775557562e-17 0 -1.387778781e-17)
+(-2.775557562e-17 4.440892099e-16 1.387778781e-17)
+(0 0 1.387778781e-17)
+(-2.775557562e-17 -2.220446049e-16 -1.387778781e-17)
+(-2.775557562e-17 -2.220446049e-16 0)
+(0 0 0)
+(-2.775557562e-17 -2.220446049e-16 -1.387778781e-17)
+(-2.775557562e-17 -6.661338148e-16 1.387778781e-17)
+(-2.775557562e-17 -2.220446049e-16 2.775557562e-17)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 0 1.387778781e-17)
+(0 2.220446049e-16 1.387778781e-17)
+(-2.775557562e-17 0 -1.387778781e-17)
+(-2.775557562e-17 -2.220446049e-16 1.387778781e-17)
+(0 0 1.387778781e-17)
+(-2.775557562e-17 0 -1.387778781e-17)
+(-2.775557562e-17 -2.220446049e-16 0)
+(0 2.220446049e-16 0)
+(-2.775557562e-17 0 -1.387778781e-17)
+(-2.775557562e-17 -2.220446049e-16 1.387778781e-17)
+(-2.775557562e-17 -4.440892099e-16 1.387778781e-17)
+(0 -4.440892099e-16 6.938893904e-18)
+(-2.775557562e-17 0 1.387778781e-17)
+(-2.775557562e-17 -4.440892099e-16 1.387778781e-17)
+(0 0 6.938893904e-18)
+(0 -4.440892099e-16 0)
+(-2.775557562e-17 -4.440892099e-16 1.387778781e-17)
+(0 0 6.938893904e-18)
+(2.775557562e-17 0 -1.387778781e-17)
+(-2.775557562e-17 0 1.387778781e-17)
+(0 -4.440892099e-16 6.938893904e-18)
+(0 -4.440892099e-16 0)
+(-2.775557562e-17 -4.440892099e-16 1.387778781e-17)
+(0 -4.440892099e-16 6.938893904e-18)
+(2.775557562e-17 4.440892099e-16 -1.387778781e-17)
+(-2.775557562e-17 0 1.387778781e-17)
+(0 -4.440892099e-16 6.938893904e-18)
+(0 0 0)
+(-2.775557562e-17 0 1.387778781e-17)
+(0 -4.440892099e-16 6.938893904e-18)
+(2.775557562e-17 4.440892099e-16 -1.387778781e-17)
+(-2.775557562e-17 -4.440892099e-16 1.387778781e-17)
+(0 0 6.938893904e-18)
+(0 -4.440892099e-16 0)
+(0 -8.881784197e-16 -1.387778781e-17)
+(2.775557562e-17 0 -1.387778781e-17)
+(0 0 6.938893904e-18)
+(0 -4.440892099e-16 1.387778781e-17)
+(0 0 1.387778781e-17)
+(0 -4.440892099e-16 6.938893904e-18)
+(0 -4.440892099e-16 -1.387778781e-17)
+(2.775557562e-17 -4.440892099e-16 -1.387778781e-17)
+(0 -4.440892099e-16 6.938893904e-18)
+(0 -4.440892099e-16 1.387778781e-17)
+(0 0 2.081668171e-17)
+(0 -8.881784197e-16 6.938893904e-18)
+(-2.775557562e-17 0 0)
+(0 -6.938893904e-18 1.734723476e-18)
+(0 1.734723476e-18 0)
+(-2.775557562e-17 0 1.387778781e-17)
+(-2.775557562e-17 -1.387778781e-17 1.734723476e-18)
+(0 6.938893904e-18 -1.734723476e-18)
+(0 0 0)
+(0 0 0)
+(0 -2.775557562e-17 0)
+(0 0 0)
+(0 -2.775557562e-17 0)
+(0 -1.387778781e-17 0)
+(0 0 0)
+(2.775557562e-17 2.775557562e-17 -1.734723476e-18)
+(-2.775557562e-17 2.775557562e-17 0)
+(0 5.551115123e-17 6.938893904e-18)
+(0 0 1.734723476e-18)
+(0 -2.775557562e-17 -3.469446952e-18)
+(-2.775557562e-17 2.775557562e-17 0)
+(-2.775557562e-17 2.775557562e-17 0)
+(-5.551115123e-17 -1.110223025e-16 3.469446952e-18)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 5.551115123e-17 0)
+(-2.775557562e-17 -5.551115123e-17 0)
+(0 0 6.938893904e-18)
+(0 0 1.734723476e-18)
+(0 0 -3.469446952e-18)
+(2.775557562e-17 -5.551115123e-17 6.938893904e-18)
+(0 -5.551115123e-17 0)
+(-2.775557562e-17 5.551115123e-17 0)
+(0 0 6.938893904e-18)
+(0 0 1.734723476e-18)
+(0 -5.551115123e-17 -3.469446952e-18)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 5.551115123e-17 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 0)
+(0 0 0)
+(0 -5.551115123e-17 6.938893904e-18)
+(0 -5.551115123e-17 1.734723476e-18)
+(0 -1.110223025e-16 -3.469446952e-18)
+(2.775557562e-17 0 6.938893904e-18)
+(0 -5.551115123e-17 3.469446952e-18)
+(-2.775557562e-17 0 0)
+(0 0 6.938893904e-18)
+(0 0 1.734723476e-18)
+(0 0 -3.469446952e-18)
+(-2.775557562e-17 1.110223025e-16 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 1.110223025e-16 0)
+(0 0 6.938893904e-18)
+(0 -1.110223025e-16 1.734723476e-18)
+(0 0 -3.469446952e-18)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 1.110223025e-16 0)
+(-2.775557562e-17 -1.110223025e-16 0)
+(-2.775557562e-17 0 0)
+(0 1.110223025e-16 -1.734723476e-18)
+(-2.775557562e-17 -1.110223025e-16 6.938893904e-18)
+(-2.775557562e-17 -2.220446049e-16 3.469446952e-18)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 0 0)
+(-8.326672685e-17 -2.220446049e-16 1.734723476e-18)
+(2.775557562e-17 -1.110223025e-16 -1.734723476e-18)
+(-2.775557562e-17 0 6.938893904e-18)
+(-5.551115123e-17 -2.220446049e-16 5.204170428e-18)
+(-2.775557562e-17 -1.110223025e-16 0)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-5.551115123e-17 -2.220446049e-16 1.734723476e-18)
+(-2.775557562e-17 0 -1.734723476e-18)
+(-5.551115123e-17 0 0)
+(-2.775557562e-17 0 0)
+(0 -2.220446049e-16 0)
+(0 -1.110223025e-16 6.938893904e-18)
+(0 0 1.734723476e-18)
+(0 -1.110223025e-16 1.734723476e-18)
+(-2.775557562e-17 0 0)
+(-8.326672685e-17 0 1.734723476e-18)
+(2.775557562e-17 0 1.734723476e-18)
+(0 -2.220446049e-16 6.938893904e-18)
+(-2.775557562e-17 -3.330669074e-16 0)
+(0 0 1.734723476e-18)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 -1.110223025e-16 0)
+(-2.775557562e-17 -2.220446049e-16 -6.938893904e-18)
+(-2.775557562e-17 -2.220446049e-16 1.734723476e-18)
+(2.775557562e-17 0 -1.734723476e-18)
+(2.775557562e-17 0 -6.938893904e-18)
+(2.775557562e-17 0 -1.734723476e-18)
+(2.775557562e-17 0 -1.734723476e-18)
+(2.775557562e-17 -2.220446049e-16 -6.938893904e-18)
+(0 2.220446049e-16 0)
+(-5.551115123e-17 -4.440892099e-16 3.469446952e-18)
+(2.775557562e-17 0 -6.938893904e-18)
+(0 0 1.734723476e-18)
+(-2.775557562e-17 -2.220446049e-16 1.734723476e-18)
+(2.775557562e-17 0 -6.938893904e-18)
+(2.775557562e-17 0 -1.734723476e-18)
+(2.775557562e-17 0 -1.734723476e-18)
+(2.775557562e-17 -2.220446049e-16 -6.938893904e-18)
+(0 0 0)
+(-5.551115123e-17 -4.440892099e-16 3.469446952e-18)
+(2.775557562e-17 0 -6.938893904e-18)
+(0 -2.220446049e-16 1.734723476e-18)
+(-2.775557562e-17 -2.220446049e-16 -1.734723476e-18)
+(0 -2.220446049e-16 0)
+(0 0 1.734723476e-18)
+(-2.775557562e-17 0 1.734723476e-18)
+(2.775557562e-17 2.220446049e-16 -6.938893904e-18)
+(-8.326672685e-17 -6.661338148e-16 3.469446952e-18)
+(0 0 1.734723476e-18)
+(-2.775557562e-17 0 0)
+(0 -2.220446049e-16 1.734723476e-18)
+(0 -2.220446049e-16 -1.734723476e-18)
+(2.775557562e-17 0 -6.938893904e-18)
+(0 0 1.734723476e-18)
+(0 -2.220446049e-16 0)
+(2.775557562e-17 0 -6.938893904e-18)
+(-2.775557562e-17 -4.440892099e-16 1.734723476e-18)
+(-2.775557562e-17 -2.220446049e-16 -1.734723476e-18)
+(2.775557562e-17 -2.220446049e-16 -6.938893904e-18)
+(-2.775557562e-17 -2.220446049e-16 1.734723476e-18)
+(0 0 0)
+(2.775557562e-17 4.440892099e-16 -6.938893904e-18)
+(-8.326672685e-17 -4.440892099e-16 3.469446952e-18)
+(-2.775557562e-17 -2.220446049e-16 1.734723476e-18)
+(2.775557562e-17 0 -6.938893904e-18)
+(2.775557562e-17 0 -5.204170428e-18)
+(2.775557562e-17 0 3.469446952e-18)
+(2.775557562e-17 2.220446049e-16 -6.938893904e-18)
+(-5.551115123e-17 -2.220446049e-16 1.734723476e-18)
+(0 -4.440892099e-16 -1.734723476e-18)
+(2.775557562e-17 0 -6.938893904e-18)
+(-5.551115123e-17 -6.661338148e-16 5.204170428e-18)
+(-5.551115123e-17 -2.220446049e-16 1.734723476e-18)
+(2.775557562e-17 0 -6.938893904e-18)
+(0 0 1.734723476e-18)
+(2.775557562e-17 4.440892099e-16 0)
+(2.775557562e-17 0 -6.938893904e-18)
+(2.775557562e-17 0 -5.204170428e-18)
+(2.775557562e-17 0 3.469446952e-18)
+(0 -2.220446049e-16 0)
+(0 -2.220446049e-16 0)
+(2.775557562e-17 2.220446049e-16 3.469446952e-18)
+(2.775557562e-17 0 -6.938893904e-18)
+(-5.551115123e-17 2.220446049e-16 3.469446952e-18)
+(0 0 1.734723476e-18)
+(2.775557562e-17 2.220446049e-16 -6.938893904e-18)
+(2.775557562e-17 -2.220446049e-16 -1.734723476e-18)
+(0 2.220446049e-16 -1.734723476e-18)
+(2.775557562e-17 0 -6.938893904e-18)
+(-2.775557562e-17 0 0)
+(0 0 -1.734723476e-18)
+(2.775557562e-17 0 -6.938893904e-18)
+(-8.326672685e-17 -4.440892099e-16 6.938893904e-18)
+(0 0 -1.734723476e-18)
+(2.775557562e-17 0 -6.938893904e-18)
+(2.775557562e-17 4.440892099e-16 -1.734723476e-18)
+(2.775557562e-17 2.220446049e-16 3.469446952e-18)
+(2.775557562e-17 0 -6.938893904e-18)
+(-5.551115123e-17 -6.661338148e-16 1.734723476e-18)
+(0 -8.881784197e-16 -1.734723476e-18)
+(2.775557562e-17 4.440892099e-16 -6.938893904e-18)
+(-2.775557562e-17 -2.220446049e-16 0)
+(0 4.440892099e-16 -1.734723476e-18)
+(2.775557562e-17 0 -6.938893904e-18)
+(0 -4.440892099e-16 3.469446952e-18)
+(0 0 -1.734723476e-18)
+(2.775557562e-17 2.220446049e-16 -6.938893904e-18)
+(-8.326672685e-17 -4.440892099e-16 6.938893904e-18)
+(0 -4.440892099e-16 1.734723476e-18)
+(2.775557562e-17 0 -6.938893904e-18)
+(2.775557562e-17 0 -1.734723476e-18)
+(2.775557562e-17 2.220446049e-16 -1.734723476e-18)
+(0 4.440892099e-16 0)
+(0 0 0)
+(2.775557562e-17 4.440892099e-16 -1.734723476e-18)
+(0 0 0)
+(0 0 0)
+(-2.775557562e-17 -4.440892099e-16 1.734723476e-18)
+(0 4.440892099e-16 0)
+(0 -8.881784197e-16 0)
+(-2.775557562e-17 -4.440892099e-16 3.469446952e-18)
+(0 -4.440892099e-16 0)
+(0 -4.440892099e-16 0)
+(-2.775557562e-17 0 1.734723476e-18)
+(0 0 0)
+(0 0 0)
+(-2.775557562e-17 0 0)
+(0 0 0)
+(0 0 0)
+(-2.775557562e-17 0 1.734723476e-18)
+(0 -4.440892099e-16 0)
+(0 4.440892099e-16 0)
+(-2.775557562e-17 0 3.469446952e-18)
+(0 4.440892099e-16 0)
+(0 0 0)
+(-2.775557562e-17 0 1.734723476e-18)
+(0 4.440892099e-16 -1.387778781e-17)
+(-2.775557562e-17 0 1.734723476e-18)
+(0 -4.440892099e-16 0)
+(-2.775557562e-17 0 -6.938893904e-18)
+(-2.775557562e-17 -4.440892099e-16 -1.734723476e-18)
+(0 0 0)
+(0 0 -1.387778781e-17)
+(-2.775557562e-17 0 1.734723476e-18)
+(0 -4.440892099e-16 0)
+(-2.775557562e-17 0 -6.938893904e-18)
+(-2.775557562e-17 0 0)
+(0 0 0)
+(-2.775557562e-17 0 1.734723476e-18)
+(-2.775557562e-17 -3.469446952e-18 -6.938893904e-18)
+(0 0 6.938893904e-18)
+(0 0 -1.734723476e-18)
+(0 -1.387778781e-17 -6.938893904e-18)
+(2.775557562e-17 -6.938893904e-18 6.938893904e-18)
+(0 0 0)
+(0 0 -6.938893904e-18)
+(0 -1.387778781e-17 -6.938893904e-18)
+(0 2.775557562e-17 0)
+(0 2.775557562e-17 0)
+(0 -1.387778781e-17 0)
+(-5.551115123e-17 -5.551115123e-17 -3.469446952e-18)
+(-2.775557562e-17 -2.775557562e-17 -6.938893904e-18)
+(-2.775557562e-17 0 0)
+(0 0 3.469446952e-18)
+(0 -2.775557562e-17 -6.938893904e-18)
+(0 -2.775557562e-17 -6.938893904e-18)
+(-2.775557562e-17 2.775557562e-17 0)
+(0 2.775557562e-17 -6.938893904e-18)
+(0 -5.551115123e-17 0)
+(-2.775557562e-17 0 0)
+(0 5.551115123e-17 -6.938893904e-18)
+(0 -2.775557562e-17 0)
+(0 0 3.469446952e-18)
+(0 0 -6.938893904e-18)
+(0 0 -6.938893904e-18)
+(0 -5.551115123e-17 0)
+(-2.775557562e-17 0 -6.938893904e-18)
+(-2.775557562e-17 0 0)
+(0 0 3.469446952e-18)
+(0 0 -6.938893904e-18)
+(0 -5.551115123e-17 -6.938893904e-18)
+(-2.775557562e-17 0 0)
+(0 0 -6.938893904e-18)
+(-2.775557562e-17 5.551115123e-17 0)
+(-2.775557562e-17 0 0)
+(0 0 -6.938893904e-18)
+(2.775557562e-17 -1.110223025e-16 -6.938893904e-18)
+(0 -5.551115123e-17 3.469446952e-18)
+(0 -5.551115123e-17 -6.938893904e-18)
+(0 -1.110223025e-16 -6.938893904e-18)
+(-2.775557562e-17 0 1.734723476e-18)
+(-2.775557562e-17 0 -6.938893904e-18)
+(-2.775557562e-17 1.110223025e-16 0)
+(0 0 3.469446952e-18)
+(0 0 -6.938893904e-18)
+(0 0 -6.938893904e-18)
+(-2.775557562e-17 1.110223025e-16 0)
+(0 1.110223025e-16 -6.938893904e-18)
+(-2.775557562e-17 1.110223025e-16 0)
+(0 1.110223025e-16 3.469446952e-18)
+(0 1.110223025e-16 -6.938893904e-18)
+(0 -1.110223025e-16 -6.938893904e-18)
+(-2.775557562e-17 0 0)
+(0 0 -6.938893904e-18)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 0)
+(0 1.110223025e-16 -6.938893904e-18)
+(-5.551115123e-17 -1.110223025e-16 0)
+(0 0 0)
+(2.775557562e-17 1.110223025e-16 -6.938893904e-18)
+(-2.775557562e-17 1.110223025e-16 -6.938893904e-18)
+(2.775557562e-17 1.110223025e-16 -1.734723476e-18)
+(0 0 -6.938893904e-18)
+(-2.775557562e-17 0 0)
+(-5.551115123e-17 -1.110223025e-16 -3.469446952e-18)
+(2.775557562e-17 0 -6.938893904e-18)
+(-2.775557562e-17 1.110223025e-16 -6.938893904e-18)
+(-2.775557562e-17 -2.220446049e-16 0)
+(0 2.220446049e-16 -6.938893904e-18)
+(-2.775557562e-17 -1.110223025e-16 0)
+(0 -1.110223025e-16 1.734723476e-18)
+(0 -1.110223025e-16 -6.938893904e-18)
+(-2.775557562e-17 -2.220446049e-16 0)
+(0 3.330669074e-16 -1.734723476e-18)
+(0 1.110223025e-16 -6.938893904e-18)
+(0 0 -6.938893904e-18)
+(2.775557562e-17 0 -1.734723476e-18)
+(0 0 -6.938893904e-18)
+(-2.775557562e-17 0 0)
+(0 -4.440892099e-16 -1.734723476e-18)
+(0 2.220446049e-16 -6.938893904e-18)
+(0 1.110223025e-16 -6.938893904e-18)
+(-2.775557562e-17 0 0)
+(0 0 -6.938893904e-18)
+(-2.775557562e-17 -1.110223025e-16 0)
+(-2.775557562e-17 2.220446049e-16 3.469446952e-18)
+(-2.775557562e-17 2.220446049e-16 -6.938893904e-18)
+(2.775557562e-17 0 -6.938893904e-18)
+(2.775557562e-17 0 1.734723476e-18)
+(2.775557562e-17 2.220446049e-16 -6.938893904e-18)
+(2.775557562e-17 0 6.938893904e-18)
+(0 2.220446049e-16 1.734723476e-18)
+(2.775557562e-17 4.440892099e-16 -6.938893904e-18)
+(2.775557562e-17 0 6.938893904e-18)
+(0 0 -1.734723476e-18)
+(2.775557562e-17 2.220446049e-16 -6.938893904e-18)
+(2.775557562e-17 0 6.938893904e-18)
+(2.775557562e-17 0 1.734723476e-18)
+(2.775557562e-17 0 -6.938893904e-18)
+(2.775557562e-17 -2.220446049e-16 6.938893904e-18)
+(0 0 1.734723476e-18)
+(2.775557562e-17 -2.220446049e-16 -6.938893904e-18)
+(2.775557562e-17 2.220446049e-16 6.938893904e-18)
+(0 0 1.734723476e-18)
+(2.775557562e-17 0 -6.938893904e-18)
+(2.775557562e-17 0 6.938893904e-18)
+(0 2.220446049e-16 3.469446952e-18)
+(0 2.220446049e-16 0)
+(2.775557562e-17 2.220446049e-16 6.938893904e-18)
+(-2.775557562e-17 -4.440892099e-16 -3.469446952e-18)
+(2.775557562e-17 2.220446049e-16 -6.938893904e-18)
+(2.775557562e-17 -2.220446049e-16 6.938893904e-18)
+(0 -2.220446049e-16 0)
+(-2.775557562e-17 0 0)
+(2.775557562e-17 -2.220446049e-16 6.938893904e-18)
+(0 0 0)
+(2.775557562e-17 0 -6.938893904e-18)
+(2.775557562e-17 -2.220446049e-16 6.938893904e-18)
+(-2.775557562e-17 0 -3.469446952e-18)
+(2.775557562e-17 0 -6.938893904e-18)
+(0 -2.220446049e-16 0)
+(0 4.440892099e-16 0)
+(2.775557562e-17 0 -6.938893904e-18)
+(2.775557562e-17 0 6.938893904e-18)
+(-2.775557562e-17 -2.220446049e-16 -1.734723476e-18)
+(2.775557562e-17 -2.220446049e-16 -6.938893904e-18)
+(2.775557562e-17 0 6.938893904e-18)
+(2.775557562e-17 2.220446049e-16 -3.469446952e-18)
+(2.775557562e-17 0 -6.938893904e-18)
+(2.775557562e-17 0 6.938893904e-18)
+(0 2.220446049e-16 -3.469446952e-18)
+(2.775557562e-17 0 -6.938893904e-18)
+(2.775557562e-17 0 6.938893904e-18)
+(-5.551115123e-17 0 -1.734723476e-18)
+(2.775557562e-17 0 -6.938893904e-18)
+(2.775557562e-17 0 6.938893904e-18)
+(0 0 -1.734723476e-18)
+(2.775557562e-17 0 -6.938893904e-18)
+(2.775557562e-17 2.220446049e-16 6.938893904e-18)
+(2.775557562e-17 0 -3.469446952e-18)
+(2.775557562e-17 0 -6.938893904e-18)
+(2.775557562e-17 0 6.938893904e-18)
+(0 -2.220446049e-16 0)
+(0 -2.220446049e-16 0)
+(2.775557562e-17 2.220446049e-16 6.938893904e-18)
+(-2.775557562e-17 -2.220446049e-16 -1.734723476e-18)
+(2.775557562e-17 0 -6.938893904e-18)
+(2.775557562e-17 -2.220446049e-16 6.938893904e-18)
+(0 2.220446049e-16 0)
+(2.775557562e-17 -2.220446049e-16 -6.938893904e-18)
+(2.775557562e-17 -4.440892099e-16 6.938893904e-18)
+(-2.775557562e-17 -4.440892099e-16 0)
+(2.775557562e-17 0 -6.938893904e-18)
+(2.775557562e-17 0 6.938893904e-18)
+(-5.551115123e-17 0 -3.469446952e-18)
+(2.775557562e-17 0 -6.938893904e-18)
+(2.775557562e-17 0 6.938893904e-18)
+(2.775557562e-17 -4.440892099e-16 1.734723476e-18)
+(2.775557562e-17 0 -6.938893904e-18)
+(2.775557562e-17 2.220446049e-16 6.938893904e-18)
+(0 2.220446049e-16 1.734723476e-18)
+(2.775557562e-17 0 -6.938893904e-18)
+(2.775557562e-17 -2.220446049e-16 6.938893904e-18)
+(-2.775557562e-17 -2.220446049e-16 0)
+(2.775557562e-17 -2.220446049e-16 -6.938893904e-18)
+(2.775557562e-17 -2.220446049e-16 6.938893904e-18)
+(-2.775557562e-17 2.220446049e-16 1.734723476e-18)
+(2.775557562e-17 0 -6.938893904e-18)
+(2.775557562e-17 -2.220446049e-16 6.938893904e-18)
+(-5.551115123e-17 -4.440892099e-16 -3.469446952e-18)
+(2.775557562e-17 2.220446049e-16 -6.938893904e-18)
+(2.775557562e-17 0 6.938893904e-18)
+(2.775557562e-17 0 1.734723476e-18)
+(2.775557562e-17 0 -6.938893904e-18)
+(2.775557562e-17 2.220446049e-16 6.938893904e-18)
+(0 -4.440892099e-16 0)
+(0 -8.881784197e-16 0)
+(2.775557562e-17 0 6.938893904e-18)
+(0 0 0)
+(0 -4.440892099e-16 0)
+(0 0 1.387778781e-17)
+(0 4.440892099e-16 0)
+(0 -8.881784197e-16 0)
+(-2.775557562e-17 -4.440892099e-16 6.938893904e-18)
+(0 0 0)
+(0 -4.440892099e-16 0)
+(0 4.440892099e-16 1.387778781e-17)
+(0 0 0)
+(0 -4.440892099e-16 0)
+(-2.775557562e-17 0 6.938893904e-18)
+(0 -4.440892099e-16 0)
+(0 0 0)
+(0 0 1.387778781e-17)
+(0 -4.440892099e-16 0)
+(0 -4.440892099e-16 0)
+(-2.775557562e-17 0 6.938893904e-18)
+(0 0 0)
+(0 -8.881784197e-16 0)
+(0 4.440892099e-16 1.387778781e-17)
+(-2.775557562e-17 0 -1.734723476e-18)
+(0 4.440892099e-16 0)
+(0 0 0)
+(-2.775557562e-17 -4.440892099e-16 -3.469446952e-18)
+(0 -4.440892099e-16 0)
+(0 0 0)
+(-2.775557562e-17 0 -1.734723476e-18)
+(0 0 0)
+(0 -4.440892099e-16 0)
+(-2.775557562e-17 0 0)
+(0 4.440892099e-16 0)
+(0 0 0)
+(0 3.469446952e-18 1.387778781e-17)
+(-8.326672685e-17 -1.040834086e-17 -1.387778781e-17)
+(-5.551115123e-17 -1.734723476e-18 -1.387778781e-17)
+(-2.775557562e-17 -2.081668171e-17 -6.938893904e-18)
+(0 0 -2.775557562e-17)
+(0 -6.938893904e-18 -1.387778781e-17)
+(-2.775557562e-17 -1.387778781e-17 -6.938893904e-18)
+(2.775557562e-17 0 -1.387778781e-17)
+(-2.775557562e-17 1.387778781e-17 1.387778781e-17)
+(-2.775557562e-17 0 -2.081668171e-17)
+(-2.775557562e-17 0 -2.775557562e-17)
+(-2.775557562e-17 -4.163336342e-17 1.387778781e-17)
+(-2.775557562e-17 0 0)
+(0 -2.775557562e-17 -1.387778781e-17)
+(-2.775557562e-17 2.775557562e-17 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 -1.387778781e-17)
+(-2.775557562e-17 0 0)
+(0 -2.775557562e-17 1.387778781e-17)
+(2.775557562e-17 -5.551115123e-17 -1.387778781e-17)
+(0 2.775557562e-17 1.387778781e-17)
+(0 5.551115123e-17 1.387778781e-17)
+(2.775557562e-17 0 -1.387778781e-17)
+(0 0 1.387778781e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 -5.551115123e-17 -1.387778781e-17)
+(-2.775557562e-17 5.551115123e-17 0)
+(2.775557562e-17 5.551115123e-17 6.938893904e-18)
+(-5.551115123e-17 -5.551115123e-17 -1.387778781e-17)
+(-2.775557562e-17 -5.551115123e-17 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 -5.551115123e-17 -1.387778781e-17)
+(-2.775557562e-17 0 0)
+(0 0 1.387778781e-17)
+(2.775557562e-17 1.110223025e-16 -1.387778781e-17)
+(-2.775557562e-17 0 0)
+(0 -5.551115123e-17 1.387778781e-17)
+(2.775557562e-17 -5.551115123e-17 -1.387778781e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 -5.551115123e-17 -1.387778781e-17)
+(-2.775557562e-17 0 0)
+(5.551115123e-17 5.551115123e-17 6.938893904e-18)
+(-5.551115123e-17 -5.551115123e-17 -1.387778781e-17)
+(-2.775557562e-17 -5.551115123e-17 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 -1.387778781e-17)
+(-2.775557562e-17 0 0)
+(0 -1.110223025e-16 1.387778781e-17)
+(2.775557562e-17 0 -1.387778781e-17)
+(-2.775557562e-17 1.110223025e-16 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 -2.220446049e-16 -1.387778781e-17)
+(-2.775557562e-17 0 0)
+(0 -1.110223025e-16 1.387778781e-17)
+(2.775557562e-17 0 -1.387778781e-17)
+(-2.775557562e-17 0 0)
+(0 0 1.387778781e-17)
+(2.775557562e-17 0 -1.387778781e-17)
+(0 -1.110223025e-16 1.387778781e-17)
+(0 0 1.387778781e-17)
+(0 1.110223025e-16 -1.387778781e-17)
+(-2.775557562e-17 -2.220446049e-16 0)
+(0 -1.110223025e-16 1.387778781e-17)
+(2.775557562e-17 -1.110223025e-16 -1.387778781e-17)
+(-2.775557562e-17 0 0)
+(0 -1.110223025e-16 1.387778781e-17)
+(0 0 -1.387778781e-17)
+(-2.775557562e-17 0 0)
+(0 0 1.387778781e-17)
+(2.775557562e-17 -1.110223025e-16 -1.387778781e-17)
+(-2.775557562e-17 -2.220446049e-16 0)
+(0 -1.110223025e-16 -6.938893904e-18)
+(-2.775557562e-17 0 -1.387778781e-17)
+(0 -2.220446049e-16 0)
+(-2.775557562e-17 1.110223025e-16 0)
+(-2.775557562e-17 0 -1.387778781e-17)
+(-2.775557562e-17 -1.110223025e-16 0)
+(0 0 1.387778781e-17)
+(2.775557562e-17 0 -1.387778781e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 -3.330669074e-16 -1.387778781e-17)
+(-2.775557562e-17 0 0)
+(0 0 1.387778781e-17)
+(2.775557562e-17 -2.220446049e-16 -1.387778781e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 -2.220446049e-16 -1.387778781e-17)
+(2.775557562e-17 2.220446049e-16 -1.387778781e-17)
+(0 -1.110223025e-16 0)
+(-2.775557562e-17 0 -1.387778781e-17)
+(0 0 -1.387778781e-17)
+(0 2.220446049e-16 -1.387778781e-17)
+(-2.775557562e-17 4.440892099e-16 -1.387778781e-17)
+(0 -2.220446049e-16 -1.387778781e-17)
+(0 -2.220446049e-16 -1.387778781e-17)
+(-2.775557562e-17 2.220446049e-16 -1.387778781e-17)
+(0 0 -1.387778781e-17)
+(0 -2.220446049e-16 -1.387778781e-17)
+(-2.775557562e-17 2.220446049e-16 -1.387778781e-17)
+(0 0 -1.387778781e-17)
+(0 0 -1.387778781e-17)
+(-2.775557562e-17 -4.440892099e-16 -1.387778781e-17)
+(0 2.220446049e-16 -1.387778781e-17)
+(0 -2.220446049e-16 -1.387778781e-17)
+(-2.775557562e-17 -2.220446049e-16 -1.387778781e-17)
+(0 2.220446049e-16 -1.387778781e-17)
+(0 2.220446049e-16 -1.387778781e-17)
+(0 -2.220446049e-16 -6.938893904e-18)
+(-2.775557562e-17 -2.220446049e-16 -1.387778781e-17)
+(0 -4.440892099e-16 -1.387778781e-17)
+(-2.775557562e-17 -2.220446049e-16 0)
+(0 2.220446049e-16 -1.387778781e-17)
+(-2.775557562e-17 -2.220446049e-16 -2.775557562e-17)
+(0 0 -6.938893904e-18)
+(0 -2.220446049e-16 -1.387778781e-17)
+(-2.775557562e-17 -4.440892099e-16 -1.387778781e-17)
+(-2.775557562e-17 0 -1.387778781e-17)
+(0 0 -1.387778781e-17)
+(0 0 -1.387778781e-17)
+(-2.775557562e-17 0 0)
+(0 0 -1.387778781e-17)
+(-2.775557562e-17 0 -1.387778781e-17)
+(-2.775557562e-17 2.220446049e-16 0)
+(0 -2.220446049e-16 -1.387778781e-17)
+(-2.775557562e-17 -2.220446049e-16 -2.775557562e-17)
+(-2.775557562e-17 0 0)
+(0 0 -1.387778781e-17)
+(-2.775557562e-17 0 -1.387778781e-17)
+(-2.775557562e-17 -2.220446049e-16 0)
+(0 0 -1.387778781e-17)
+(-2.775557562e-17 -2.220446049e-16 -2.775557562e-17)
+(-2.775557562e-17 0 0)
+(0 0 -1.387778781e-17)
+(-2.775557562e-17 0 -1.387778781e-17)
+(-2.775557562e-17 4.440892099e-16 0)
+(0 4.440892099e-16 -1.387778781e-17)
+(-2.775557562e-17 -4.440892099e-16 -2.775557562e-17)
+(-2.775557562e-17 0 0)
+(0 2.220446049e-16 -1.387778781e-17)
+(-2.775557562e-17 -2.220446049e-16 -1.387778781e-17)
+(-2.775557562e-17 0 0)
+(0 0 -1.387778781e-17)
+(-2.775557562e-17 0 -2.775557562e-17)
+(0 -6.661338148e-16 -6.938893904e-18)
+(-2.775557562e-17 0 -1.387778781e-17)
+(-2.775557562e-17 0 -1.387778781e-17)
+(-2.775557562e-17 0 -1.387778781e-17)
+(0 -2.220446049e-16 -1.387778781e-17)
+(-2.775557562e-17 -2.220446049e-16 -2.775557562e-17)
+(-2.775557562e-17 0 -1.387778781e-17)
+(0 0 -1.387778781e-17)
+(0 0 0)
+(-2.775557562e-17 -2.220446049e-16 0)
+(0 0 -1.387778781e-17)
+(0 2.220446049e-16 -1.387778781e-17)
+(-2.775557562e-17 0 -1.387778781e-17)
+(0 0 -1.387778781e-17)
+(0 0 -1.387778781e-17)
+(-2.775557562e-17 -2.220446049e-16 -1.387778781e-17)
+(0 0 -1.387778781e-17)
+(-2.775557562e-17 -4.440892099e-16 -2.775557562e-17)
+(-2.775557562e-17 -2.220446049e-16 -1.387778781e-17)
+(0 2.220446049e-16 -1.387778781e-17)
+(0 0 0)
+(-2.775557562e-17 -2.220446049e-16 0)
+(0 0 -1.387778781e-17)
+(0 -4.440892099e-16 -1.387778781e-17)
+(-2.775557562e-17 0 -1.387778781e-17)
+(0 -2.220446049e-16 -1.387778781e-17)
+(0 4.440892099e-16 -1.387778781e-17)
+(-2.775557562e-17 0 -1.387778781e-17)
+(0 0 -1.387778781e-17)
+(-2.775557562e-17 -4.440892099e-16 -2.775557562e-17)
+(-2.775557562e-17 0 -1.387778781e-17)
+(0 -4.440892099e-16 -1.387778781e-17)
+(0 -4.440892099e-16 0)
+(0 -4.440892099e-16 -6.938893904e-18)
+(-2.775557562e-17 -4.440892099e-16 -1.387778781e-17)
+(0 4.440892099e-16 -1.387778781e-17)
+(0 -4.440892099e-16 -6.938893904e-18)
+(-2.775557562e-17 0 -1.387778781e-17)
+(0 -4.440892099e-16 1.387778781e-17)
+(0 -8.881784197e-16 -6.938893904e-18)
+(-2.775557562e-17 0 -1.387778781e-17)
+(0 0 -1.387778781e-17)
+(0 -4.440892099e-16 -6.938893904e-18)
+(-2.775557562e-17 4.440892099e-16 -1.387778781e-17)
+(0 -4.440892099e-16 1.387778781e-17)
+(0 -4.440892099e-16 -6.938893904e-18)
+(-2.775557562e-17 -4.440892099e-16 -1.387778781e-17)
+(0 0 -1.387778781e-17)
+(0 -4.440892099e-16 -6.938893904e-18)
+(-2.775557562e-17 -4.440892099e-16 -1.387778781e-17)
+(0 -4.440892099e-16 1.387778781e-17)
+(0 -4.440892099e-16 -6.938893904e-18)
+(-2.775557562e-17 0 -1.387778781e-17)
+(0 0 -1.387778781e-17)
+(0 0 -6.938893904e-18)
+(-2.775557562e-17 -4.440892099e-16 -1.387778781e-17)
+(0 -4.440892099e-16 1.387778781e-17)
+(0 -4.440892099e-16 0)
+(0 4.440892099e-16 -2.775557562e-17)
+(-2.775557562e-17 0 -1.387778781e-17)
+(2.775557562e-17 0 1.387778781e-17)
+(0 -4.440892099e-16 -1.387778781e-17)
+(-2.775557562e-17 0 -1.387778781e-17)
+(0 0 0)
+(0 -8.881784197e-16 -2.775557562e-17)
+(-2.775557562e-17 4.440892099e-16 -1.387778781e-17)
+(2.775557562e-17 4.440892099e-16 1.387778781e-17)
+(-2.775557562e-17 -4.440892099e-16 -1.387778781e-17)
+(-2.775557562e-17 -4.440892099e-16 -1.387778781e-17)
+(0 0 -1.387778781e-17)
+(2.775557562e-17 0 2.775557562e-17)
+(0 1.734723476e-18 0)
+(0 -6.938893904e-18 1.387778781e-17)
+(-5.551115123e-17 -1.387778781e-17 -2.775557562e-17)
+(-2.775557562e-17 0 2.775557562e-17)
+(-2.775557562e-17 -1.387778781e-17 -1.387778781e-17)
+(-5.551115123e-17 -1.387778781e-17 -2.775557562e-17)
+(0 -2.775557562e-17 0)
+(0 0 -1.387778781e-17)
+(0 0 0)
+(-2.775557562e-17 -5.551115123e-17 -2.775557562e-17)
+(0 0 -1.387778781e-17)
+(-2.775557562e-17 2.775557562e-17 2.775557562e-17)
+(0 -2.775557562e-17 2.775557562e-17)
+(0 -5.551115123e-17 0)
+(-2.775557562e-17 5.551115123e-17 0)
+(0 0 0)
+(0 -2.775557562e-17 -1.387778781e-17)
+(0 -2.775557562e-17 -2.775557562e-17)
+(0 -2.775557562e-17 2.775557562e-17)
+(0 5.551115123e-17 -1.387778781e-17)
+(0 -5.551115123e-17 -2.775557562e-17)
+(0 0 2.775557562e-17)
+(0 0 0)
+(-2.775557562e-17 0 0)
+(0 -5.551115123e-17 0)
+(2.775557562e-17 0 1.387778781e-17)
+(5.551115123e-17 5.551115123e-17 2.775557562e-17)
+(0 0 2.775557562e-17)
+(0 0 0)
+(-2.775557562e-17 0 0)
+(0 0 0)
+(0 0 -1.387778781e-17)
+(0 0 -2.775557562e-17)
+(0 -1.110223025e-16 2.775557562e-17)
+(0 -5.551115123e-17 -1.387778781e-17)
+(0 -5.551115123e-17 -2.775557562e-17)
+(0 -5.551115123e-17 -2.775557562e-17)
+(0 0 0)
+(-2.775557562e-17 -1.110223025e-16 0)
+(0 0 0)
+(2.775557562e-17 5.551115123e-17 1.387778781e-17)
+(5.551115123e-17 1.665334537e-16 2.775557562e-17)
+(0 0 2.775557562e-17)
+(0 0 0)
+(-2.775557562e-17 0 0)
+(0 0 0)
+(0 0 -1.387778781e-17)
+(0 0 -2.775557562e-17)
+(0 0 2.775557562e-17)
+(0 0 0)
+(-2.775557562e-17 -1.110223025e-16 0)
+(0 0 0)
+(0 -1.110223025e-16 -1.387778781e-17)
+(0 -1.110223025e-16 -2.775557562e-17)
+(0 -1.110223025e-16 2.775557562e-17)
+(-2.775557562e-17 0 -1.387778781e-17)
+(0 -1.110223025e-16 -2.775557562e-17)
+(0 -2.220446049e-16 0)
+(-2.775557562e-17 -1.110223025e-16 0)
+(-2.775557562e-17 -1.110223025e-16 0)
+(0 -1.110223025e-16 0)
+(-2.775557562e-17 -1.110223025e-16 -1.387778781e-17)
+(0 -2.220446049e-16 -2.775557562e-17)
+(-2.775557562e-17 0 2.775557562e-17)
+(-2.775557562e-17 -1.110223025e-16 0)
+(-2.775557562e-17 -1.110223025e-16 0)
+(0 -1.110223025e-16 0)
+(-2.775557562e-17 0 -1.387778781e-17)
+(0 0 -2.775557562e-17)
+(-2.775557562e-17 -1.110223025e-16 2.775557562e-17)
+(0 -1.110223025e-16 -1.387778781e-17)
+(2.775557562e-17 2.220446049e-16 0)
+(-2.775557562e-17 0 2.775557562e-17)
+(0 0 0)
+(-2.775557562e-17 0 0)
+(0 0 0)
+(0 0 -1.387778781e-17)
+(0 0 -2.775557562e-17)
+(0 -1.110223025e-16 2.775557562e-17)
+(0 0 0)
+(-2.775557562e-17 0 0)
+(0 0 0)
+(0 2.220446049e-16 -1.387778781e-17)
+(0 -2.220446049e-16 -2.775557562e-17)
+(0 0 2.775557562e-17)
+(-2.775557562e-17 -2.220446049e-16 -2.775557562e-17)
+(2.775557562e-17 4.440892099e-16 5.551115123e-17)
+(-2.775557562e-17 1.110223025e-16 2.775557562e-17)
+(-2.775557562e-17 2.220446049e-16 0)
+(-2.775557562e-17 0 -2.775557562e-17)
+(0 2.220446049e-16 0)
+(-2.775557562e-17 2.220446049e-16 0)
+(-2.775557562e-17 -2.220446049e-16 -2.775557562e-17)
+(0 -2.220446049e-16 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 -2.220446049e-16 -2.775557562e-17)
+(0 0 0)
+(-2.775557562e-17 2.220446049e-16 0)
+(-2.775557562e-17 0 -2.775557562e-17)
+(0 0 0)
+(-2.775557562e-17 -4.440892099e-16 0)
+(-2.775557562e-17 0 -2.775557562e-17)
+(0 -2.220446049e-16 0)
+(-2.775557562e-17 -4.440892099e-16 0)
+(-2.775557562e-17 0 -2.775557562e-17)
+(0 2.220446049e-16 0)
+(0 -2.220446049e-16 -1.387778781e-17)
+(0 -2.220446049e-16 0)
+(0 0 0)
+(-2.775557562e-17 -2.220446049e-16 -1.387778781e-17)
+(-2.775557562e-17 -4.440892099e-16 -2.775557562e-17)
+(-2.775557562e-17 0 0)
+(0 2.220446049e-16 1.387778781e-17)
+(2.775557562e-17 2.220446049e-16 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 -2.775557562e-17)
+(0 0 0)
+(-2.775557562e-17 0 -1.387778781e-17)
+(-2.775557562e-17 -4.440892099e-16 -2.775557562e-17)
+(0 0 0)
+(-2.775557562e-17 2.220446049e-16 -1.387778781e-17)
+(-2.775557562e-17 -2.220446049e-16 -2.775557562e-17)
+(-2.775557562e-17 -4.440892099e-16 0)
+(-2.775557562e-17 0 -1.387778781e-17)
+(-2.775557562e-17 -2.220446049e-16 -2.775557562e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 -4.440892099e-16 -1.387778781e-17)
+(-2.775557562e-17 -2.220446049e-16 -2.775557562e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 -1.387778781e-17)
+(-2.775557562e-17 -4.440892099e-16 -2.775557562e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 -1.387778781e-17)
+(-2.775557562e-17 4.440892099e-16 -2.775557562e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 -1.387778781e-17)
+(-2.775557562e-17 2.220446049e-16 -2.775557562e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 -1.387778781e-17)
+(-2.775557562e-17 0 -2.775557562e-17)
+(-2.775557562e-17 -2.220446049e-16 0)
+(0 -6.661338148e-16 -1.387778781e-17)
+(0 -4.440892099e-16 0)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 -2.775557562e-17)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 -2.220446049e-16 -2.775557562e-17)
+(0 2.220446049e-16 0)
+(-2.775557562e-17 0 -1.387778781e-17)
+(-2.775557562e-17 0 -2.775557562e-17)
+(0 0 0)
+(-2.775557562e-17 -4.440892099e-16 0)
+(-2.775557562e-17 -2.220446049e-16 -2.775557562e-17)
+(0 -2.220446049e-16 0)
+(-2.775557562e-17 -4.440892099e-16 0)
+(-2.775557562e-17 -2.220446049e-16 -2.775557562e-17)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 -4.440892099e-16 0)
+(-2.775557562e-17 -2.220446049e-16 -2.775557562e-17)
+(0 2.220446049e-16 0)
+(-2.775557562e-17 -2.220446049e-16 -1.387778781e-17)
+(-2.775557562e-17 -6.661338148e-16 -2.775557562e-17)
+(0 2.220446049e-16 0)
+(-2.775557562e-17 -4.440892099e-16 0)
+(-2.775557562e-17 -2.220446049e-16 -2.775557562e-17)
+(0 0 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 -2.775557562e-17)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 -4.440892099e-16 -2.775557562e-17)
+(0 -2.220446049e-16 0)
+(0 -4.440892099e-16 -1.387778781e-17)
+(0 -4.440892099e-16 0)
+(0 0 0)
+(0 -4.440892099e-16 -1.387778781e-17)
+(0 0 0)
+(-2.775557562e-17 0 -5.551115123e-17)
+(0 -8.881784197e-16 -1.387778781e-17)
+(0 4.440892099e-16 0)
+(0 0 0)
+(0 -4.440892099e-16 -1.387778781e-17)
+(0 -4.440892099e-16 0)
+(-2.775557562e-17 -4.440892099e-16 -5.551115123e-17)
+(0 -4.440892099e-16 -1.387778781e-17)
+(0 -8.881784197e-16 0)
+(0 0 0)
+(0 -8.881784197e-16 -1.387778781e-17)
+(0 -4.440892099e-16 0)
+(-2.775557562e-17 -4.440892099e-16 -5.551115123e-17)
+(0 -4.440892099e-16 -1.387778781e-17)
+(0 -4.440892099e-16 0)
+(0 4.440892099e-16 0)
+(0 0 -1.387778781e-17)
+(0 0 0)
+(-2.775557562e-17 -4.440892099e-16 -5.551115123e-17)
+(-2.775557562e-17 -4.440892099e-16 -1.387778781e-17)
+(2.775557562e-17 0 5.551115123e-17)
+(0 0 0)
+(0 -4.440892099e-16 0)
+(0 0 0)
+(0 0 0)
+(-2.775557562e-17 -4.440892099e-16 -1.387778781e-17)
+(2.775557562e-17 0 5.551115123e-17)
+(0 -4.440892099e-16 0)
+(0 0 0)
+(-2.775557562e-17 -4.440892099e-16 -2.775557562e-17)
+(0 -8.881784197e-16 0)
+(2.775557562e-17 0 0)
+(0 -3.469446952e-18 5.551115123e-17)
+(0 0 0)
+(0 6.938893904e-18 2.775557562e-17)
+(-2.775557562e-17 -6.938893904e-18 -8.326672685e-17)
+(0 -6.938893904e-18 0)
+(0 -1.387778781e-17 -2.775557562e-17)
+(0 -1.387778781e-17 0)
+(-2.775557562e-17 -1.387778781e-17 -2.775557562e-17)
+(-2.775557562e-17 -2.775557562e-17 -8.326672685e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 -1.387778781e-17 -2.775557562e-17)
+(0 2.775557562e-17 2.775557562e-17)
+(-2.775557562e-17 0 -2.775557562e-17)
+(-2.775557562e-17 0 -2.775557562e-17)
+(0 -5.551115123e-17 -2.775557562e-17)
+(0 0 -2.775557562e-17)
+(0 0 0)
+(0 -2.775557562e-17 0)
+(-2.775557562e-17 0 -2.775557562e-17)
+(-5.551115123e-17 -5.551115123e-17 0)
+(0 5.551115123e-17 0)
+(-2.775557562e-17 -5.551115123e-17 -2.775557562e-17)
+(-5.551115123e-17 0 0)
+(0 0 -2.775557562e-17)
+(0 0 -2.775557562e-17)
+(0 0 0)
+(0 -5.551115123e-17 -2.775557562e-17)
+(0 5.551115123e-17 5.551115123e-17)
+(-2.775557562e-17 0 -2.775557562e-17)
+(0 0 -2.775557562e-17)
+(0 5.551115123e-17 -2.775557562e-17)
+(0 0 0)
+(0 0 0)
+(-2.775557562e-17 0 -2.775557562e-17)
+(-2.775557562e-17 5.551115123e-17 -2.775557562e-17)
+(0 -5.551115123e-17 0)
+(-2.775557562e-17 0 -2.775557562e-17)
+(0 0 -2.775557562e-17)
+(0 5.551115123e-17 -2.775557562e-17)
+(0 5.551115123e-17 -2.775557562e-17)
+(0 -1.110223025e-16 0)
+(0 -5.551115123e-17 -5.551115123e-17)
+(0 0 5.551115123e-17)
+(-2.775557562e-17 -5.551115123e-17 -2.775557562e-17)
+(0 0 -2.775557562e-17)
+(0 0 -2.775557562e-17)
+(0 1.110223025e-16 0)
+(0 0 0)
+(-2.775557562e-17 0 -2.775557562e-17)
+(-2.775557562e-17 0 -2.775557562e-17)
+(0 0 -2.775557562e-17)
+(0 -1.110223025e-16 -2.775557562e-17)
+(0 1.110223025e-16 0)
+(0 0 0)
+(-2.775557562e-17 0 -2.775557562e-17)
+(-2.775557562e-17 -1.110223025e-16 -2.775557562e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 -1.110223025e-16 -2.775557562e-17)
+(0 0 -2.775557562e-17)
+(-2.775557562e-17 -1.110223025e-16 -2.775557562e-17)
+(0 1.110223025e-16 0)
+(0 0 -2.775557562e-17)
+(-2.775557562e-17 -1.110223025e-16 0)
+(-2.775557562e-17 0 -2.775557562e-17)
+(-2.775557562e-17 0 -2.775557562e-17)
+(-2.775557562e-17 -1.110223025e-16 -2.775557562e-17)
+(0 3.330669074e-16 0)
+(0 -2.220446049e-16 -2.775557562e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 -1.110223025e-16 -2.775557562e-17)
+(-2.775557562e-17 -1.110223025e-16 -2.775557562e-17)
+(0 -2.220446049e-16 -2.775557562e-17)
+(0 -2.220446049e-16 -2.775557562e-17)
+(-2.775557562e-17 -2.220446049e-16 -2.775557562e-17)
+(0 0 -2.775557562e-17)
+(0 1.110223025e-16 -2.775557562e-17)
+(0 -1.110223025e-16 0)
+(0 0 0)
+(-2.775557562e-17 0 -2.775557562e-17)
+(-2.775557562e-17 -1.110223025e-16 -2.775557562e-17)
+(0 0 -2.775557562e-17)
+(0 0 -2.775557562e-17)
+(0 -2.220446049e-16 0)
+(0 2.220446049e-16 0)
+(-2.775557562e-17 0 -2.775557562e-17)
+(-2.775557562e-17 0 -2.775557562e-17)
+(-2.775557562e-17 -2.220446049e-16 -2.775557562e-17)
+(-2.775557562e-17 0 -2.775557562e-17)
+(2.775557562e-17 1.110223025e-16 -2.775557562e-17)
+(0 2.220446049e-16 0)
+(0 2.220446049e-16 0)
+(0 2.220446049e-16 0)
+(0 0 0)
+(0 -2.220446049e-16 0)
+(0 0 0)
+(0 0 0)
+(0 -2.220446049e-16 0)
+(0 0 0)
+(0 2.220446049e-16 0)
+(0 -2.220446049e-16 0)
+(0 0 0)
+(0 -2.220446049e-16 0)
+(0 -2.220446049e-16 0)
+(0 -2.220446049e-16 0)
+(0 -2.220446049e-16 0)
+(0 2.220446049e-16 0)
+(0 0 0)
+(0 -2.220446049e-16 -2.775557562e-17)
+(-2.775557562e-17 -4.440892099e-16 0)
+(0 0 0)
+(-2.775557562e-17 -2.220446049e-16 0)
+(0 -2.220446049e-16 0)
+(0 -2.220446049e-16 -2.775557562e-17)
+(2.775557562e-17 2.220446049e-16 2.775557562e-17)
+(-2.775557562e-17 2.220446049e-16 2.775557562e-17)
+(0 -2.220446049e-16 -2.775557562e-17)
+(0 2.220446049e-16 0)
+(0 0 0)
+(0 -4.440892099e-16 0)
+(-2.775557562e-17 -2.220446049e-16 -2.775557562e-17)
+(0 -4.440892099e-16 0)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 0 0)
+(0 0 0)
+(0 -2.220446049e-16 -2.775557562e-17)
+(-2.775557562e-17 0 -2.775557562e-17)
+(0 -2.220446049e-16 0)
+(0 0 -2.775557562e-17)
+(-2.775557562e-17 -4.440892099e-16 0)
+(0 -2.220446049e-16 0)
+(0 0 -2.775557562e-17)
+(-2.775557562e-17 0 -2.775557562e-17)
+(0 -4.440892099e-16 0)
+(0 -2.220446049e-16 -2.775557562e-17)
+(-2.775557562e-17 -6.661338148e-16 0)
+(0 -2.220446049e-16 0)
+(0 -2.220446049e-16 -2.775557562e-17)
+(-2.775557562e-17 0 -2.775557562e-17)
+(0 -2.220446049e-16 0)
+(0 -2.220446049e-16 -2.775557562e-17)
+(-2.775557562e-17 0 0)
+(0 0 0)
+(0 0 -2.775557562e-17)
+(0 0 -2.775557562e-17)
+(-2.775557562e-17 0 0)
+(0 0 -2.775557562e-17)
+(0 -4.440892099e-16 0)
+(0 -4.440892099e-16 0)
+(0 -4.440892099e-16 -2.775557562e-17)
+(0 2.220446049e-16 2.775557562e-17)
+(0 0 0)
+(0 2.220446049e-16 0)
+(-2.775557562e-17 0 -2.775557562e-17)
+(0 -2.220446049e-16 0)
+(0 -2.220446049e-16 0)
+(0 0 0)
+(0 0 0)
+(0 4.440892099e-16 0)
+(0 -2.220446049e-16 0)
+(0 -6.661338148e-16 0)
+(0 -6.661338148e-16 -2.775557562e-17)
+(0 -2.220446049e-16 2.775557562e-17)
+(0 -2.220446049e-16 0)
+(0 -2.220446049e-16 0)
+(-2.775557562e-17 -2.220446049e-16 -2.775557562e-17)
+(0 -4.440892099e-16 0)
+(0 0 0)
+(0 -2.220446049e-16 0)
+(0 -4.440892099e-16 0)
+(0 2.220446049e-16 0)
+(0 -2.220446049e-16 0)
+(0 0 0)
+(0 0 -2.775557562e-17)
+(0 2.220446049e-16 2.775557562e-17)
+(0 2.220446049e-16 0)
+(0 -4.440892099e-16 0)
+(0 -4.440892099e-16 -2.775557562e-17)
+(-2.775557562e-17 -4.440892099e-16 0)
+(0 4.440892099e-16 0)
+(0 0 -2.775557562e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 5.551115123e-17)
+(0 -8.881784197e-16 -2.775557562e-17)
+(-2.775557562e-17 0 0)
+(0 8.881784197e-16 2.775557562e-17)
+(0 -4.440892099e-16 -2.775557562e-17)
+(-2.775557562e-17 -4.440892099e-16 0)
+(-2.775557562e-17 0 5.551115123e-17)
+(0 0 -2.775557562e-17)
+(-2.775557562e-17 0 0)
+(0 0 2.775557562e-17)
+(0 -4.440892099e-16 -2.775557562e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 4.440892099e-16 5.551115123e-17)
+(0 -4.440892099e-16 -2.775557562e-17)
+(-2.775557562e-17 0 0)
+(0 0 2.775557562e-17)
+(0 0 -2.775557562e-17)
+(-2.775557562e-17 -4.440892099e-16 0)
+(-2.775557562e-17 0 5.551115123e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 -2.775557562e-17)
+(-2.775557562e-17 -4.440892099e-16 0)
+(0 0 2.775557562e-17)
+(-5.551115123e-17 0 -2.775557562e-17)
+(-2.775557562e-17 -4.440892099e-16 0)
+(-2.775557562e-17 -4.440892099e-16 0)
+(-2.775557562e-17 0 -2.775557562e-17)
+(-2.775557562e-17 0 0)
+(0 0 2.775557562e-17)
+(-5.551115123e-17 0 -2.775557562e-17)
+(-2.775557562e-17 -4.440892099e-16 0)
+(2.775557562e-17 3.469446952e-18 2.775557562e-17)
+(0 -3.469446952e-18 0)
+(0 1.734723476e-18 2.775557562e-17)
+(-2.775557562e-17 -6.938893904e-18 -2.775557562e-17)
+(-2.775557562e-17 -6.938893904e-18 -8.326672685e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 -2.775557562e-17 -2.775557562e-17)
+(-2.775557562e-17 0 -5.551115123e-17)
+(-2.775557562e-17 -2.775557562e-17 2.775557562e-17)
+(-2.775557562e-17 -2.775557562e-17 -8.326672685e-17)
+(-2.775557562e-17 -2.775557562e-17 -1.110223025e-16)
+(0 1.387778781e-17 0)
+(-2.775557562e-17 2.775557562e-17 0)
+(-2.775557562e-17 2.775557562e-17 2.775557562e-17)
+(0 0 -2.775557562e-17)
+(-2.775557562e-17 -5.551115123e-17 0)
+(-2.775557562e-17 5.551115123e-17 0)
+(-2.775557562e-17 0 0)
+(0 -2.775557562e-17 0)
+(0 -2.775557562e-17 -2.775557562e-17)
+(-2.775557562e-17 2.775557562e-17 0)
+(0 5.551115123e-17 0)
+(0 0 -2.775557562e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 0)
+(2.775557562e-17 5.551115123e-17 0)
+(0 -1.110223025e-16 -2.775557562e-17)
+(0 0 -2.775557562e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 0)
+(0 0 0)
+(0 0 -2.775557562e-17)
+(0 -5.551115123e-17 -2.775557562e-17)
+(0 -5.551115123e-17 0)
+(0 -5.551115123e-17 -2.775557562e-17)
+(5.551115123e-17 5.551115123e-17 2.775557562e-17)
+(-2.775557562e-17 5.551115123e-17 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 0)
+(2.775557562e-17 -5.551115123e-17 0)
+(0 0 -2.775557562e-17)
+(0 -5.551115123e-17 -2.775557562e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 1.110223025e-16 0)
+(0 -1.110223025e-16 0)
+(0 1.110223025e-16 -2.775557562e-17)
+(0 0 -2.775557562e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 -1.110223025e-16 0)
+(-2.775557562e-17 0 0)
+(0 0 0)
+(0 0 -2.775557562e-17)
+(0 -1.110223025e-16 -2.775557562e-17)
+(0 0 0)
+(0 0 -2.775557562e-17)
+(0 -1.110223025e-16 0)
+(0 -1.110223025e-16 0)
+(0 0 2.775557562e-17)
+(0 -1.110223025e-16 -5.551115123e-17)
+(0 -1.110223025e-16 0)
+(0 -2.220446049e-16 -2.775557562e-17)
+(0 0 -2.775557562e-17)
+(0 -1.110223025e-16 0)
+(0 0 2.775557562e-17)
+(0 -1.110223025e-16 -5.551115123e-17)
+(0 0 0)
+(0 0 -2.775557562e-17)
+(0 -1.110223025e-16 -2.775557562e-17)
+(0 -2.220446049e-16 -2.775557562e-17)
+(0 1.110223025e-16 0)
+(0 0 -2.775557562e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 0)
+(0 -2.220446049e-16 0)
+(0 1.110223025e-16 -2.775557562e-17)
+(0 -1.110223025e-16 -2.775557562e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 0)
+(0 0 0)
+(0 0 -2.775557562e-17)
+(0 -2.220446049e-16 -2.775557562e-17)
+(-2.775557562e-17 -2.220446049e-16 -2.775557562e-17)
+(0 2.220446049e-16 2.775557562e-17)
+(-2.775557562e-17 0 0)
+(0 2.220446049e-16 2.775557562e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 0)
+(0 -2.220446049e-16 2.775557562e-17)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 -2.220446049e-16 0)
+(0 0 2.775557562e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 0)
+(0 2.220446049e-16 2.775557562e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 2.220446049e-16 0)
+(0 0 2.775557562e-17)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 -2.220446049e-16 0)
+(0 -2.220446049e-16 2.775557562e-17)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 0 0)
+(0 -2.220446049e-16 -2.775557562e-17)
+(0 -2.220446049e-16 -5.551115123e-17)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 -2.220446049e-16 0)
+(0 2.220446049e-16 2.775557562e-17)
+(-2.775557562e-17 0 0)
+(2.775557562e-17 2.220446049e-16 2.775557562e-17)
+(0 -2.220446049e-16 0)
+(-2.775557562e-17 0 0)
+(0 2.220446049e-16 2.775557562e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 -4.440892099e-16 0)
+(0 -2.220446049e-16 0)
+(-2.775557562e-17 0 0)
+(0 0 2.775557562e-17)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 -4.440892099e-16 0)
+(0 -2.220446049e-16 2.775557562e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 -4.440892099e-16 0)
+(-2.775557562e-17 2.220446049e-16 0)
+(-2.775557562e-17 -2.220446049e-16 0)
+(0 -4.440892099e-16 2.775557562e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 -4.440892099e-16 0)
+(-2.775557562e-17 0 0)
+(0 0 2.775557562e-17)
+(-2.775557562e-17 -4.440892099e-16 0)
+(0 0 -2.775557562e-17)
+(0 -4.440892099e-16 -5.551115123e-17)
+(-2.775557562e-17 2.220446049e-16 0)
+(0 -4.440892099e-16 2.775557562e-17)
+(-2.775557562e-17 -6.661338148e-16 0)
+(-2.775557562e-17 -2.220446049e-16 0)
+(0 2.220446049e-16 2.775557562e-17)
+(0 0 2.775557562e-17)
+(-2.775557562e-17 2.220446049e-16 0)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 0 0)
+(0 0 2.775557562e-17)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 -4.440892099e-16 0)
+(0 0 2.775557562e-17)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 -2.220446049e-16 0)
+(0 0 2.775557562e-17)
+(0 0 2.775557562e-17)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 0 0)
+(0 -2.220446049e-16 2.775557562e-17)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 -2.220446049e-16 0)
+(0 -2.220446049e-16 2.775557562e-17)
+(-2.775557562e-17 -4.440892099e-16 0)
+(-2.775557562e-17 -4.440892099e-16 0)
+(0 2.220446049e-16 2.775557562e-17)
+(0 -2.220446049e-16 2.775557562e-17)
+(-2.775557562e-17 -4.440892099e-16 0)
+(0 -4.440892099e-16 -2.775557562e-17)
+(0 0 -5.551115123e-17)
+(-2.775557562e-17 0 0)
+(0 0 -2.775557562e-17)
+(0 0 -5.551115123e-17)
+(0 4.440892099e-16 0)
+(0 -8.881784197e-16 -2.775557562e-17)
+(0 0 -5.551115123e-17)
+(2.775557562e-17 4.440892099e-16 2.775557562e-17)
+(0 -4.440892099e-16 -2.775557562e-17)
+(0 -4.440892099e-16 -5.551115123e-17)
+(0 4.440892099e-16 0)
+(0 -4.440892099e-16 -2.775557562e-17)
+(0 -4.440892099e-16 -5.551115123e-17)
+(-2.775557562e-17 0 -5.551115123e-17)
+(0 0 -2.775557562e-17)
+(0 -8.881784197e-16 -5.551115123e-17)
+(0 0 0)
+(0 -4.440892099e-16 -2.775557562e-17)
+(0 -4.440892099e-16 -5.551115123e-17)
+(2.775557562e-17 4.440892099e-16 2.775557562e-17)
+(0 -4.440892099e-16 -2.775557562e-17)
+(0 0 -5.551115123e-17)
+(0 0 0)
+(0 0 0)
+(0 4.440892099e-16 0)
+(0 -4.440892099e-16 0)
+(2.775557562e-17 4.440892099e-16 2.775557562e-17)
+(-2.775557562e-17 -4.440892099e-16 -2.775557562e-17)
+(0 -4.440892099e-16 0)
+(0 4.440892099e-16 0)
+(0 0 0)
+(0 -4.440892099e-16 0)
+(-2.775557562e-17 -4.440892099e-16 -2.775557562e-17)
+(-2.775557562e-17 -4.440892099e-16 -2.775557562e-17)
+(0 -8.881784197e-16 0)
+(-2.775557562e-17 3.469446952e-18 -5.551115123e-17)
+(-2.775557562e-17 -6.938893904e-18 0)
+(-2.775557562e-17 0 -5.551115123e-17)
+(0 6.938893904e-18 5.551115123e-17)
+(0 6.938893904e-18 -5.551115123e-17)
+(0 -6.938893904e-18 5.551115123e-17)
+(0 -1.387778781e-17 5.551115123e-17)
+(0 -1.387778781e-17 0)
+(-2.775557562e-17 -1.387778781e-17 -5.551115123e-17)
+(-2.775557562e-17 0 -5.551115123e-17)
+(0 -2.775557562e-17 -5.551115123e-17)
+(-5.551115123e-17 -1.387778781e-17 -5.551115123e-17)
+(-5.551115123e-17 0 -5.551115123e-17)
+(-2.775557562e-17 0 -5.551115123e-17)
+(0 0 -5.551115123e-17)
+(0 0 5.551115123e-17)
+(0 0 0)
+(-2.775557562e-17 -2.775557562e-17 -5.551115123e-17)
+(-2.775557562e-17 0 0)
+(0 0 0)
+(0 2.775557562e-17 -5.551115123e-17)
+(-2.775557562e-17 0 0)
+(0 5.551115123e-17 0)
+(0 -2.775557562e-17 -5.551115123e-17)
+(0 0 5.551115123e-17)
+(0 0 0)
+(-2.775557562e-17 0 -5.551115123e-17)
+(0 -5.551115123e-17 1.110223025e-16)
+(2.775557562e-17 0 0)
+(0 0 -5.551115123e-17)
+(0 -5.551115123e-17 5.551115123e-17)
+(0 -1.110223025e-16 0)
+(-2.775557562e-17 -1.110223025e-16 -5.551115123e-17)
+(-2.775557562e-17 0 0)
+(0 0 0)
+(0 -5.551115123e-17 -5.551115123e-17)
+(-2.775557562e-17 0 0)
+(0 1.110223025e-16 0)
+(-5.551115123e-17 5.551115123e-17 -5.551115123e-17)
+(0 -5.551115123e-17 5.551115123e-17)
+(0 5.551115123e-17 0)
+(-2.775557562e-17 0 -5.551115123e-17)
+(0 0 1.110223025e-16)
+(0 5.551115123e-17 0)
+(0 -1.110223025e-16 -5.551115123e-17)
+(0 0 5.551115123e-17)
+(0 1.110223025e-16 0)
+(-2.775557562e-17 0 -5.551115123e-17)
+(-2.775557562e-17 0 0)
+(0 0 0)
+(0 0 -5.551115123e-17)
+(0 1.110223025e-16 5.551115123e-17)
+(0 0 0)
+(-2.775557562e-17 1.110223025e-16 -5.551115123e-17)
+(-2.775557562e-17 0 0)
+(0 0 0)
+(0 -1.110223025e-16 -5.551115123e-17)
+(-2.775557562e-17 0 -5.551115123e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 0)
+(0 -1.110223025e-16 0)
+(2.775557562e-17 0 0)
+(-5.551115123e-17 -1.110223025e-16 -1.110223025e-16)
+(-2.775557562e-17 0 -5.551115123e-17)
+(-2.775557562e-17 -1.110223025e-16 0)
+(0 -2.220446049e-16 -5.551115123e-17)
+(0 -2.220446049e-16 0)
+(2.775557562e-17 0 0)
+(-5.551115123e-17 -1.110223025e-16 -1.110223025e-16)
+(-2.775557562e-17 0 -5.551115123e-17)
+(-2.775557562e-17 -1.110223025e-16 0)
+(0 0 -5.551115123e-17)
+(0 0 0)
+(-2.775557562e-17 0 -5.551115123e-17)
+(-2.775557562e-17 -3.330669074e-16 -5.551115123e-17)
+(0 -2.220446049e-16 5.551115123e-17)
+(0 -1.110223025e-16 0)
+(-2.775557562e-17 -2.220446049e-16 -5.551115123e-17)
+(-2.775557562e-17 0 0)
+(0 -1.110223025e-16 0)
+(0 -2.220446049e-16 -5.551115123e-17)
+(0 0 5.551115123e-17)
+(0 1.110223025e-16 0)
+(-2.775557562e-17 -2.220446049e-16 -5.551115123e-17)
+(-2.775557562e-17 0 0)
+(0 1.110223025e-16 0)
+(0 -2.220446049e-16 -5.551115123e-17)
+(-2.775557562e-17 0 -5.551115123e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 0 0)
+(0 -2.220446049e-16 0)
+(-2.775557562e-17 -2.220446049e-16 -5.551115123e-17)
+(-2.775557562e-17 -2.220446049e-16 0)
+(0 0 0)
+(-2.775557562e-17 -2.220446049e-16 -5.551115123e-17)
+(-2.775557562e-17 -2.220446049e-16 0)
+(0 0 0)
+(-2.775557562e-17 -4.440892099e-16 -5.551115123e-17)
+(-2.775557562e-17 0 0)
+(0 2.220446049e-16 0)
+(-2.775557562e-17 0 -5.551115123e-17)
+(-2.775557562e-17 -2.220446049e-16 0)
+(0 0 0)
+(-2.775557562e-17 -2.220446049e-16 -5.551115123e-17)
+(-2.775557562e-17 -4.440892099e-16 0)
+(0 2.220446049e-16 0)
+(-2.775557562e-17 -2.220446049e-16 -5.551115123e-17)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 2.220446049e-16 -5.551115123e-17)
+(0 -4.440892099e-16 -5.551115123e-17)
+(-2.775557562e-17 -2.220446049e-16 0)
+(0 0 0)
+(0 4.440892099e-16 1.110223025e-16)
+(-2.775557562e-17 0 -5.551115123e-17)
+(-2.775557562e-17 2.220446049e-16 5.551115123e-17)
+(0 0 0)
+(-2.775557562e-17 -4.440892099e-16 -5.551115123e-17)
+(0 0 0)
+(-2.775557562e-17 -2.220446049e-16 -5.551115123e-17)
+(-2.775557562e-17 -2.220446049e-16 0)
+(0 -4.440892099e-16 0)
+(0 -2.220446049e-16 5.551115123e-17)
+(-5.551115123e-17 -2.220446049e-16 -5.551115123e-17)
+(0 -4.440892099e-16 0)
+(0 2.220446049e-16 1.110223025e-16)
+(-2.775557562e-17 0 -5.551115123e-17)
+(0 -2.220446049e-16 0)
+(0 0 5.551115123e-17)
+(-2.775557562e-17 0 -5.551115123e-17)
+(0 -4.440892099e-16 0)
+(0 0 1.110223025e-16)
+(-2.775557562e-17 -6.661338148e-16 -5.551115123e-17)
+(0 -2.220446049e-16 0)
+(0 0 5.551115123e-17)
+(-2.775557562e-17 -4.440892099e-16 -5.551115123e-17)
+(0 -4.440892099e-16 0)
+(0 2.220446049e-16 1.110223025e-16)
+(-2.775557562e-17 -4.440892099e-16 -5.551115123e-17)
+(0 2.220446049e-16 0)
+(0 2.220446049e-16 5.551115123e-17)
+(-2.775557562e-17 0 -5.551115123e-17)
+(0 0 0)
+(0 4.440892099e-16 1.110223025e-16)
+(-2.775557562e-17 0 -5.551115123e-17)
+(-2.775557562e-17 0 -5.551115123e-17)
+(0 -2.220446049e-16 -5.551115123e-17)
+(-2.775557562e-17 0 -5.551115123e-17)
+(0 -2.220446049e-16 0)
+(-2.775557562e-17 -2.220446049e-16 -5.551115123e-17)
+(-2.775557562e-17 -4.440892099e-16 -5.551115123e-17)
+(0 4.440892099e-16 0)
+(-2.775557562e-17 -4.440892099e-16 0)
+(-2.775557562e-17 0 0)
+(0 -2.220446049e-16 0)
+(0 0 5.551115123e-17)
+(-2.775557562e-17 -2.220446049e-16 0)
+(0 2.220446049e-16 0)
+(-2.775557562e-17 0 -5.551115123e-17)
+(-2.775557562e-17 -2.220446049e-16 0)
+(0 2.220446049e-16 0)
+(-2.775557562e-17 -4.440892099e-16 -5.551115123e-17)
+(-2.775557562e-17 -8.881784197e-16 -5.551115123e-17)
+(0 2.220446049e-16 0)
+(-2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 -4.440892099e-16 0)
+(0 0 0)
+(0 -2.220446049e-16 5.551115123e-17)
+(-2.775557562e-17 -4.440892099e-16 0)
+(0 -2.220446049e-16 0)
+(-2.775557562e-17 -2.220446049e-16 -5.551115123e-17)
+(-2.775557562e-17 -2.220446049e-16 0)
+(0 0 0)
+(-2.775557562e-17 -6.661338148e-16 -5.551115123e-17)
+(-2.775557562e-17 0 -5.551115123e-17)
+(0 2.220446049e-16 0)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 -4.440892099e-16 0)
+(-2.775557562e-17 -4.440892099e-16 -5.551115123e-17)
+(0 -4.440892099e-16 -5.551115123e-17)
+(-2.775557562e-17 -4.440892099e-16 0)
+(-2.775557562e-17 0 -5.551115123e-17)
+(0 -4.440892099e-16 -5.551115123e-17)
+(-2.775557562e-17 0 -5.551115123e-17)
+(-2.775557562e-17 0 -5.551115123e-17)
+(0 0 -5.551115123e-17)
+(-2.775557562e-17 -8.881784197e-16 0)
+(-2.775557562e-17 -4.440892099e-16 -5.551115123e-17)
+(0 -4.440892099e-16 -5.551115123e-17)
+(-2.775557562e-17 0 -5.551115123e-17)
+(-2.775557562e-17 0 -5.551115123e-17)
+(0 -4.440892099e-16 -5.551115123e-17)
+(0 0 0)
+(-2.775557562e-17 0 -5.551115123e-17)
+(0 0 -5.551115123e-17)
+(-2.775557562e-17 0 -5.551115123e-17)
+(-2.775557562e-17 -4.440892099e-16 -5.551115123e-17)
+(0 -4.440892099e-16 -5.551115123e-17)
+(-2.775557562e-17 -4.440892099e-16 0)
+(-2.775557562e-17 -4.440892099e-16 -5.551115123e-17)
+(0 -8.881784197e-16 -5.551115123e-17)
+(-2.775557562e-17 4.440892099e-16 -5.551115123e-17)
+(-2.775557562e-17 0 0)
+(5.551115123e-17 4.440892099e-16 5.551115123e-17)
+(-5.551115123e-17 -4.440892099e-16 -5.551115123e-17)
+(0 -4.440892099e-16 0)
+(2.775557562e-17 -4.440892099e-16 -5.551115123e-17)
+(-5.551115123e-17 -4.440892099e-16 -5.551115123e-17)
+(-2.775557562e-17 0 0)
+(5.551115123e-17 8.881784197e-16 5.551115123e-17)
+(-5.551115123e-17 0 -5.551115123e-17)
+(0 4.440892099e-16 0)
+(2.775557562e-17 -4.440892099e-16 -5.551115123e-17)
+(-5.551115123e-17 -4.440892099e-16 -5.551115123e-17)
 )
 ;
     }
@@ -3470,3414 +3470,3414 @@ FoamFile
         offsets         nonuniform List<vector> 
 3408
 (
-(-2.77556e-17 0 0)
-(-2.77556e-17 0 0)
-(2.77556e-17 6.93889e-18 1.38778e-17)
-(0 0 -1.38778e-17)
-(2.77556e-17 6.93889e-18 6.93889e-18)
-(2.77556e-17 -6.93889e-18 2.77556e-17)
-(0 0 0)
-(2.77556e-17 -1.38778e-17 6.93889e-18)
-(0 0 1.38778e-17)
-(2.77556e-17 -1.38778e-17 6.93889e-18)
-(2.77556e-17 0 0)
-(0 0 -1.38778e-17)
-(0 0 -6.93889e-18)
-(2.77556e-17 -2.77556e-17 -1.38778e-17)
-(2.77556e-17 0 2.77556e-17)
-(0 0 -6.93889e-18)
-(2.77556e-17 -5.55112e-17 1.38778e-17)
-(2.77556e-17 0 2.77556e-17)
-(0 -2.77556e-17 -6.93889e-18)
-(0 5.55112e-17 0)
-(2.77556e-17 -2.77556e-17 2.77556e-17)
-(-2.77556e-17 2.77556e-17 -6.93889e-18)
-(0 5.55112e-17 0)
-(2.77556e-17 -1.11022e-16 2.77556e-17)
-(2.77556e-17 0 6.93889e-18)
-(-2.77556e-17 0 6.93889e-18)
-(2.77556e-17 -5.55112e-17 2.77556e-17)
-(-2.77556e-17 0 6.93889e-18)
-(-2.77556e-17 5.55112e-17 6.93889e-18)
-(2.77556e-17 -5.55112e-17 2.77556e-17)
-(-2.77556e-17 1.11022e-16 6.93889e-18)
-(-2.77556e-17 5.55112e-17 6.93889e-18)
-(2.77556e-17 0 2.77556e-17)
-(-2.77556e-17 5.55112e-17 6.93889e-18)
-(-2.77556e-17 5.55112e-17 6.93889e-18)
-(2.77556e-17 -1.66533e-16 2.77556e-17)
-(2.77556e-17 0 6.93889e-18)
-(0 5.55112e-17 0)
-(2.77556e-17 -5.55112e-17 2.77556e-17)
-(-2.77556e-17 5.55112e-17 -1.38778e-17)
-(0 1.11022e-16 0)
-(2.77556e-17 -5.55112e-17 2.77556e-17)
-(-2.77556e-17 0 -1.38778e-17)
-(0 5.55112e-17 0)
-(2.77556e-17 -1.11022e-16 2.77556e-17)
-(0 1.11022e-16 -6.93889e-18)
-(0 0 0)
-(2.77556e-17 0 1.38778e-17)
-(0 -1.11022e-16 6.93889e-18)
-(5.55112e-17 0 1.38778e-17)
-(-2.77556e-17 0 0)
-(0 0 0)
-(5.55112e-17 -2.22045e-16 1.38778e-17)
-(-2.77556e-17 0 0)
-(0 0 0)
-(5.55112e-17 -2.22045e-16 1.38778e-17)
-(-2.77556e-17 2.22045e-16 0)
-(0 -1.11022e-16 0)
-(5.55112e-17 0 1.38778e-17)
-(-2.77556e-17 0 0)
-(0 -1.11022e-16 6.93889e-18)
-(0 0 0)
-(2.77556e-17 -1.11022e-16 1.38778e-17)
-(0 -2.22045e-16 6.93889e-18)
-(-2.77556e-17 -1.11022e-16 0)
-(2.77556e-17 -1.11022e-16 1.38778e-17)
-(0 -1.11022e-16 6.93889e-18)
-(0 1.11022e-16 0)
-(2.77556e-17 -2.22045e-16 1.38778e-17)
-(0 -2.22045e-16 6.93889e-18)
-(5.55112e-17 -2.22045e-16 1.38778e-17)
-(0 0 1.38778e-17)
-(0 0 0)
-(2.77556e-17 -2.22045e-16 6.93889e-18)
-(2.77556e-17 0 2.77556e-17)
-(0 0 0)
-(5.55112e-17 -2.22045e-16 1.38778e-17)
-(0 0 1.38778e-17)
-(0 0 0)
-(2.77556e-17 -2.22045e-16 6.93889e-18)
-(2.77556e-17 -2.22045e-16 2.77556e-17)
-(0 0 0)
-(5.55112e-17 -2.22045e-16 1.38778e-17)
-(0 -1.11022e-16 1.38778e-17)
-(0 -1.11022e-16 6.93889e-18)
-(0 0 0)
-(2.77556e-17 0 1.38778e-17)
-(0 0 6.93889e-18)
-(0 -2.22045e-16 0)
-(0 0 1.38778e-17)
-(0 0 0)
-(0 0 0)
-(2.77556e-17 0 2.77556e-17)
-(0 -2.22045e-16 0)
-(2.77556e-17 0 6.93889e-18)
-(-2.77556e-17 0 1.38778e-17)
-(2.77556e-17 0 6.93889e-18)
-(2.77556e-17 0 6.93889e-18)
-(-2.77556e-17 0 1.38778e-17)
-(0 0 0)
-(0 0 -6.93889e-18)
-(5.55112e-17 -2.22045e-16 2.77556e-17)
-(0 0 0)
-(0 2.22045e-16 -1.38778e-17)
-(5.55112e-17 -2.22045e-16 2.77556e-17)
-(0 0 0)
-(2.77556e-17 -2.22045e-16 6.93889e-18)
-(-2.77556e-17 -2.22045e-16 1.38778e-17)
-(0 0 0)
-(2.77556e-17 0 6.93889e-18)
-(-2.77556e-17 0 1.38778e-17)
-(2.77556e-17 0 6.93889e-18)
-(0 2.22045e-16 0)
-(2.77556e-17 0 2.77556e-17)
-(0 -2.22045e-16 -1.38778e-17)
-(0 2.22045e-16 0)
-(2.77556e-17 -2.22045e-16 2.77556e-17)
-(0 0 0)
-(0 0 0)
-(2.77556e-17 0 2.77556e-17)
-(2.77556e-17 -2.22045e-16 6.93889e-18)
-(2.77556e-17 0 6.93889e-18)
-(0 -2.22045e-16 2.77556e-17)
-(0 0 0)
-(2.77556e-17 -2.22045e-16 6.93889e-18)
-(0 -2.22045e-16 1.38778e-17)
-(0 0 0)
-(0 2.22045e-16 -6.93889e-18)
-(5.55112e-17 -2.22045e-16 2.77556e-17)
-(0 0 0)
-(0 2.22045e-16 -1.38778e-17)
-(5.55112e-17 -2.22045e-16 2.77556e-17)
-(0 0 0)
-(2.77556e-17 -2.22045e-16 6.93889e-18)
-(-2.77556e-17 0 0)
-(2.77556e-17 -2.22045e-16 6.93889e-18)
-(2.77556e-17 -2.22045e-16 6.93889e-18)
-(-2.77556e-17 0 1.38778e-17)
-(0 0 0)
-(0 0 0)
-(2.77556e-17 2.22045e-16 2.77556e-17)
-(0 2.22045e-16 0)
-(0 0 0)
-(2.77556e-17 0 2.77556e-17)
-(0 6.66134e-16 0)
-(0 0 0)
-(2.77556e-17 0 2.77556e-17)
-(2.77556e-17 -4.44089e-16 6.93889e-18)
-(2.77556e-17 0 6.93889e-18)
-(0 2.22045e-16 2.77556e-17)
-(2.77556e-17 -2.22045e-16 6.93889e-18)
-(0 -2.22045e-16 0)
-(2.77556e-17 2.22045e-16 2.77556e-17)
-(0 0 0)
-(0 0 0)
-(2.77556e-17 -2.22045e-16 2.77556e-17)
-(0 0 0)
-(0 2.22045e-16 -1.38778e-17)
-(5.55112e-17 -4.44089e-16 2.77556e-17)
-(0 0 0)
-(2.77556e-17 -2.22045e-16 6.93889e-18)
-(0 -2.22045e-16 2.77556e-17)
-(2.77556e-17 2.22045e-16 6.93889e-18)
-(2.77556e-17 -4.44089e-16 6.93889e-18)
-(-2.77556e-17 0 1.38778e-17)
-(0 0 0)
-(0 4.44089e-16 -1.38778e-17)
-(5.55112e-17 0 2.77556e-17)
-(0 2.22045e-16 0)
-(0 2.22045e-16 0)
-(2.77556e-17 4.44089e-16 2.77556e-17)
-(0 4.44089e-16 0)
-(0 0 0)
-(2.77556e-17 0 2.77556e-17)
-(2.77556e-17 -2.22045e-16 6.93889e-18)
-(2.77556e-17 0 6.93889e-18)
-(0 -6.66134e-16 2.77556e-17)
-(-2.77556e-17 0 -6.93889e-18)
-(0 -4.44089e-16 0)
-(2.77556e-17 -4.44089e-16 2.77556e-17)
-(2.77556e-17 0 6.93889e-18)
-(0 4.44089e-16 0)
-(2.77556e-17 -4.44089e-16 2.77556e-17)
-(0 0 0)
-(0 0 0)
-(2.77556e-17 -4.44089e-16 2.77556e-17)
-(0 0 0)
-(2.77556e-17 -4.44089e-16 6.93889e-18)
-(2.77556e-17 -4.44089e-16 2.77556e-17)
-(0 0 0)
-(5.55112e-17 -8.88178e-16 1.38778e-17)
-(-2.77556e-17 4.44089e-16 0)
-(0 0 0)
-(5.55112e-17 -4.44089e-16 1.38778e-17)
-(-2.77556e-17 4.44089e-16 0)
-(0 4.44089e-16 0)
-(2.77556e-17 -4.44089e-16 6.93889e-18)
-(0 -4.44089e-16 1.38778e-17)
-(0 -4.44089e-16 0)
-(0 0 0)
-(0 0 2.77556e-17)
-(0 0 0)
-(0 0 0)
-(2.77556e-17 0 2.77556e-17)
-(2.77556e-17 0 6.93889e-18)
-(0 0 0)
-(2.77556e-17 0 2.77556e-17)
-(-2.77556e-17 4.44089e-16 -6.93889e-18)
-(0 0 0)
-(2.77556e-17 0 2.77556e-17)
-(0 0 0)
-(0 4.44089e-16 0)
-(2.77556e-17 0 2.77556e-17)
-(2.77556e-17 -3.46945e-18 1.73472e-18)
-(2.77556e-17 -3.46945e-18 1.73472e-18)
-(2.77556e-17 -3.46945e-18 6.93889e-18)
-(2.77556e-17 0 1.73472e-18)
-(0 6.93889e-18 1.73472e-18)
-(-2.77556e-17 0 6.93889e-18)
-(-2.77556e-17 1.38778e-17 0)
-(2.77556e-17 0 -3.46945e-18)
-(2.77556e-17 0 0)
-(0 -1.38778e-17 0)
-(0 0 1.73472e-18)
-(2.77556e-17 -2.77556e-17 6.93889e-18)
-(0 0 0)
-(2.77556e-17 0 -1.73472e-18)
-(2.77556e-17 -2.77556e-17 6.93889e-18)
-(0 2.77556e-17 0)
-(2.77556e-17 0 -1.73472e-18)
-(5.55112e-17 -8.32667e-17 1.38778e-17)
-(0 5.55112e-17 0)
-(0 0 1.73472e-18)
-(0 2.77556e-17 6.93889e-18)
-(0 2.77556e-17 0)
-(-2.77556e-17 0 0)
-(2.77556e-17 5.55112e-17 6.93889e-18)
-(0 0 1.73472e-18)
-(0 0 1.73472e-18)
-(-2.77556e-17 5.55112e-17 6.93889e-18)
-(0 -5.55112e-17 0)
-(0 0 1.73472e-18)
-(-2.77556e-17 0 6.93889e-18)
-(0 -1.11022e-16 0)
-(0 0 1.73472e-18)
-(-2.77556e-17 -5.55112e-17 6.93889e-18)
-(0 -5.55112e-17 0)
-(0 0 1.73472e-18)
-(-2.77556e-17 5.55112e-17 6.93889e-18)
-(0 0 1.73472e-18)
-(0 0 1.73472e-18)
-(5.55112e-17 -5.55112e-17 6.93889e-18)
-(2.77556e-17 0 1.73472e-18)
-(0 -5.55112e-17 1.73472e-18)
-(5.55112e-17 -1.11022e-16 6.93889e-18)
-(2.77556e-17 0 1.73472e-18)
-(0 -5.55112e-17 1.73472e-18)
-(5.55112e-17 -1.11022e-16 6.93889e-18)
-(0 0 0)
-(-2.77556e-17 1.11022e-16 0)
-(-2.77556e-17 1.11022e-16 -6.93889e-18)
-(0 0 1.73472e-18)
-(0 -1.11022e-16 0)
-(0 0 6.93889e-18)
-(0 0 0)
-(0 -1.11022e-16 0)
-(0 0 6.93889e-18)
-(0 0 0)
-(0 1.11022e-16 0)
-(0 0 6.93889e-18)
-(0 0 0)
-(0 -1.11022e-16 0)
-(0 0 6.93889e-18)
-(5.55112e-17 -1.11022e-16 5.20417e-18)
-(2.77556e-17 -1.11022e-16 1.73472e-18)
-(-2.77556e-17 0 -6.93889e-18)
-(0 -1.11022e-16 1.73472e-18)
-(2.77556e-17 0 -3.46945e-18)
-(-2.77556e-17 0 -6.93889e-18)
-(2.77556e-17 0 1.73472e-18)
-(-2.77556e-17 0 0)
-(-2.77556e-17 -2.22045e-16 -6.93889e-18)
-(2.77556e-17 -2.22045e-16 1.73472e-18)
-(0 2.22045e-16 -1.73472e-18)
-(0 -1.11022e-16 6.93889e-18)
-(2.77556e-17 -3.33067e-16 1.73472e-18)
-(0 -2.22045e-16 0)
-(0 0 6.93889e-18)
-(5.55112e-17 -1.11022e-16 1.73472e-18)
-(-2.77556e-17 0 0)
-(0 -3.33067e-16 6.93889e-18)
-(5.55112e-17 -1.11022e-16 1.73472e-18)
-(-2.77556e-17 0 -3.46945e-18)
-(0 -1.11022e-16 6.93889e-18)
-(5.55112e-17 -1.11022e-16 1.73472e-18)
-(0 -1.11022e-16 0)
-(0 1.11022e-16 6.93889e-18)
-(0 2.22045e-16 1.73472e-18)
-(-2.77556e-17 1.11022e-16 0)
-(-2.77556e-17 2.22045e-16 -6.93889e-18)
-(0 -2.22045e-16 1.73472e-18)
-(0 0 0)
-(0 0 0)
-(-2.77556e-17 0 -1.73472e-18)
-(2.77556e-17 0 -1.73472e-18)
-(2.77556e-17 2.22045e-16 6.93889e-18)
-(-2.77556e-17 0 3.46945e-18)
-(0 -2.22045e-16 1.73472e-18)
-(0 0 6.93889e-18)
-(2.77556e-17 -2.22045e-16 1.73472e-18)
-(2.77556e-17 -2.22045e-16 1.73472e-18)
-(0 0 6.93889e-18)
-(2.77556e-17 0 1.73472e-18)
-(0 -2.22045e-16 0)
-(2.77556e-17 -2.22045e-16 6.93889e-18)
-(-2.77556e-17 0 3.46945e-18)
-(0 0 1.73472e-18)
-(-2.77556e-17 2.22045e-16 0)
-(2.77556e-17 -2.22045e-16 1.73472e-18)
-(2.77556e-17 0 -1.73472e-18)
-(0 0 6.93889e-18)
-(2.77556e-17 -2.22045e-16 0)
-(0 -6.66134e-16 1.73472e-18)
-(2.77556e-17 -4.44089e-16 6.93889e-18)
-(0 -2.22045e-16 1.73472e-18)
-(2.77556e-17 -2.22045e-16 1.73472e-18)
-(2.77556e-17 -2.22045e-16 6.93889e-18)
-(-2.77556e-17 0 -1.73472e-18)
-(2.77556e-17 -2.22045e-16 0)
-(2.77556e-17 -2.22045e-16 6.93889e-18)
-(5.55112e-17 -2.22045e-16 0)
-(2.77556e-17 0 0)
-(2.77556e-17 0 6.93889e-18)
-(2.77556e-17 0 1.73472e-18)
-(0 -2.22045e-16 -3.46945e-18)
-(2.77556e-17 0 6.93889e-18)
-(2.77556e-17 2.22045e-16 0)
-(5.55112e-17 -4.44089e-16 0)
-(0 2.22045e-16 0)
-(2.77556e-17 -2.22045e-16 0)
-(0 -2.22045e-16 1.73472e-18)
-(2.77556e-17 -2.22045e-16 6.93889e-18)
-(2.77556e-17 0 1.73472e-18)
-(2.77556e-17 -2.22045e-16 1.73472e-18)
-(0 0 6.93889e-18)
-(-2.77556e-17 0 -3.46945e-18)
-(0 -2.22045e-16 0)
-(0 2.22045e-16 6.93889e-18)
-(2.77556e-17 0 3.46945e-18)
-(-2.77556e-17 4.44089e-16 -1.73472e-18)
-(0 4.44089e-16 6.93889e-18)
-(0 4.44089e-16 -1.73472e-18)
-(2.77556e-17 0 -1.73472e-18)
-(2.77556e-17 -2.22045e-16 6.93889e-18)
-(-2.77556e-17 2.22045e-16 -1.73472e-18)
-(2.77556e-17 -2.22045e-16 -1.73472e-18)
-(2.77556e-17 0 6.93889e-18)
-(-2.77556e-17 0 -1.73472e-18)
-(2.77556e-17 0 -1.73472e-18)
-(2.77556e-17 0 6.93889e-18)
-(2.77556e-17 -4.44089e-16 1.73472e-18)
-(0 -2.22045e-16 1.73472e-18)
-(0 0 0)
-(0 2.22045e-16 1.73472e-18)
-(2.77556e-17 -4.44089e-16 0)
-(2.77556e-17 -2.22045e-16 6.93889e-18)
-(2.77556e-17 -2.22045e-16 -1.73472e-18)
-(2.77556e-17 0 0)
-(2.77556e-17 -2.22045e-16 6.93889e-18)
-(2.77556e-17 0 0)
-(-2.77556e-17 2.22045e-16 -3.46945e-18)
-(-2.77556e-17 2.22045e-16 0)
-(2.77556e-17 -2.22045e-16 1.73472e-18)
-(0 4.44089e-16 1.73472e-18)
-(0 0 6.93889e-18)
-(2.77556e-17 2.22045e-16 1.73472e-18)
-(-2.77556e-17 0 1.73472e-18)
-(0 0 6.93889e-18)
-(-2.77556e-17 2.22045e-16 0)
-(2.77556e-17 -2.22045e-16 -1.73472e-18)
-(-2.77556e-17 0 0)
-(-2.77556e-17 2.22045e-16 0)
-(2.77556e-17 -2.22045e-16 0)
-(2.77556e-17 2.22045e-16 6.93889e-18)
-(2.77556e-17 -4.44089e-16 0)
-(2.77556e-17 -2.22045e-16 1.73472e-18)
-(2.77556e-17 0 6.93889e-18)
-(0 2.22045e-16 1.73472e-18)
-(2.77556e-17 0 3.46945e-18)
-(2.77556e-17 -6.66134e-16 6.93889e-18)
-(2.77556e-17 4.44089e-16 3.46945e-18)
-(2.77556e-17 0 -1.73472e-18)
-(2.77556e-17 0 6.93889e-18)
-(2.77556e-17 0 1.73472e-18)
-(2.77556e-17 0 -1.73472e-18)
-(2.77556e-17 -4.44089e-16 6.93889e-18)
-(0 0 0)
-(2.77556e-17 -4.44089e-16 -1.73472e-18)
-(2.77556e-17 0 6.93889e-18)
-(2.77556e-17 0 1.73472e-18)
-(0 -4.44089e-16 1.73472e-18)
-(0 0 0)
-(2.77556e-17 0 1.73472e-18)
-(-2.77556e-17 4.44089e-16 -1.73472e-18)
-(0 -4.44089e-16 6.93889e-18)
-(0 0 0)
-(-2.77556e-17 0 -1.73472e-18)
-(0 0 6.93889e-18)
-(2.77556e-17 0 1.73472e-18)
-(-2.77556e-17 4.44089e-16 -1.73472e-18)
-(0 -4.44089e-16 6.93889e-18)
-(2.77556e-17 -4.44089e-16 1.73472e-18)
-(0 0 0)
-(0 -4.44089e-16 6.93889e-18)
-(2.77556e-17 0 1.73472e-18)
-(2.77556e-17 -4.44089e-16 -1.73472e-18)
-(2.77556e-17 0 6.93889e-18)
-(2.77556e-17 0 1.73472e-18)
-(2.77556e-17 -4.44089e-16 -1.73472e-18)
-(2.77556e-17 -4.44089e-16 6.93889e-18)
-(2.77556e-17 0 3.46945e-18)
-(2.77556e-17 -4.44089e-16 -1.73472e-18)
-(2.77556e-17 0 6.93889e-18)
-(0 0 0)
-(2.77556e-17 -4.44089e-16 -1.73472e-18)
-(2.77556e-17 -4.44089e-16 6.93889e-18)
-(2.77556e-17 0 -6.93889e-18)
-(0 -3.46945e-18 -6.93889e-18)
-(2.77556e-17 -3.46945e-18 -1.73472e-18)
-(0 0 -6.93889e-18)
-(5.55112e-17 -6.93889e-18 -1.38778e-17)
-(0 -1.38778e-17 0)
-(2.77556e-17 1.38778e-17 6.93889e-18)
-(2.77556e-17 0 0)
-(2.77556e-17 0 -1.73472e-18)
-(0 -1.38778e-17 -6.93889e-18)
-(0 0 0)
-(0 -2.77556e-17 0)
-(0 2.77556e-17 0)
-(0 -2.77556e-17 -6.93889e-18)
-(2.77556e-17 0 -3.46945e-18)
-(0 0 0)
-(-2.77556e-17 2.77556e-17 0)
-(2.77556e-17 0 -1.73472e-18)
-(0 0 0)
-(2.77556e-17 0 0)
-(2.77556e-17 0 -1.73472e-18)
-(2.77556e-17 -5.55112e-17 -6.93889e-18)
-(0 0 0)
-(5.55112e-17 0 -3.46945e-18)
-(0 0 -6.93889e-18)
-(5.55112e-17 0 0)
-(0 0 -1.73472e-18)
-(5.55112e-17 -1.11022e-16 -1.38778e-17)
-(5.55112e-17 0 0)
-(0 0 -1.73472e-18)
-(5.55112e-17 -1.11022e-16 -1.38778e-17)
-(5.55112e-17 5.55112e-17 0)
-(0 0 -1.73472e-18)
-(5.55112e-17 -1.11022e-16 -1.38778e-17)
-(5.55112e-17 -1.11022e-16 0)
-(0 0 -1.73472e-18)
-(0 5.55112e-17 -6.93889e-18)
-(-2.77556e-17 5.55112e-17 -6.93889e-18)
-(2.77556e-17 0 -1.73472e-18)
-(0 5.55112e-17 6.93889e-18)
-(-2.77556e-17 0 -6.93889e-18)
-(2.77556e-17 -5.55112e-17 -1.73472e-18)
-(0 5.55112e-17 6.93889e-18)
-(-2.77556e-17 -5.55112e-17 -6.93889e-18)
-(2.77556e-17 -5.55112e-17 -1.73472e-18)
-(0 0 -6.93889e-18)
-(-2.77556e-17 1.11022e-16 6.93889e-18)
-(-2.77556e-17 1.11022e-16 0)
-(0 0 0)
-(0 0 -6.93889e-18)
-(0 1.11022e-16 0)
-(0 0 0)
-(0 0 -6.93889e-18)
-(0 0 0)
-(0 0 0)
-(0 0 -6.93889e-18)
-(0 1.11022e-16 0)
-(0 -1.11022e-16 0)
-(0 -2.22045e-16 -6.93889e-18)
-(0 -1.11022e-16 0)
-(0 -1.11022e-16 0)
-(-2.77556e-17 0 6.93889e-18)
-(0 0 -1.73472e-18)
-(0 -1.11022e-16 0)
-(-2.77556e-17 -1.11022e-16 6.93889e-18)
-(-2.77556e-17 0 1.73472e-18)
-(0 1.11022e-16 0)
-(-2.77556e-17 2.22045e-16 6.93889e-18)
-(0 1.11022e-16 0)
-(0 -1.11022e-16 0)
-(0 -1.11022e-16 -6.93889e-18)
-(0 1.11022e-16 1.73472e-18)
-(0 0 0)
-(2.77556e-17 -1.11022e-16 -1.38778e-17)
-(5.55112e-17 0 -6.93889e-18)
-(0 0 -6.93889e-18)
-(0 -2.22045e-16 -6.93889e-18)
-(2.77556e-17 -1.11022e-16 -1.73472e-18)
-(0 0 0)
-(2.77556e-17 0 -1.38778e-17)
-(2.77556e-17 -2.22045e-16 -1.73472e-18)
-(0 0 -6.93889e-18)
-(0 -1.11022e-16 -6.93889e-18)
-(5.55112e-17 -2.22045e-16 -6.93889e-18)
-(0 0 0)
-(-2.77556e-17 -2.22045e-16 6.93889e-18)
-(-2.77556e-17 1.11022e-16 0)
-(0 -2.22045e-16 0)
-(0 0 0)
-(0 0 0)
-(0 -2.22045e-16 -6.93889e-18)
-(2.77556e-17 -4.44089e-16 -6.93889e-18)
-(2.77556e-17 0 -1.73472e-18)
-(2.77556e-17 -2.22045e-16 -6.93889e-18)
-(0 0 -6.93889e-18)
-(0 2.22045e-16 -1.73472e-18)
-(2.77556e-17 -2.22045e-16 -6.93889e-18)
-(0 0 -6.93889e-18)
-(2.77556e-17 -4.44089e-16 -1.73472e-18)
-(2.77556e-17 0 -6.93889e-18)
-(-2.77556e-17 2.22045e-16 6.93889e-18)
-(0 0 0)
-(2.77556e-17 -2.22045e-16 -6.93889e-18)
-(0 0 -6.93889e-18)
-(2.77556e-17 -2.22045e-16 0)
-(2.77556e-17 -4.44089e-16 -6.93889e-18)
-(0 0 -6.93889e-18)
-(0 0 -1.73472e-18)
-(2.77556e-17 -2.22045e-16 -6.93889e-18)
-(0 2.22045e-16 0)
-(0 0 -1.73472e-18)
-(0 -2.22045e-16 -6.93889e-18)
-(2.77556e-17 -2.22045e-16 -6.93889e-18)
-(-2.77556e-17 0 -3.46945e-18)
-(2.77556e-17 -4.44089e-16 -6.93889e-18)
-(2.77556e-17 -2.22045e-16 -6.93889e-18)
-(0 2.22045e-16 1.73472e-18)
-(-2.77556e-17 0 0)
-(2.77556e-17 0 -6.93889e-18)
-(2.77556e-17 2.22045e-16 -1.73472e-18)
-(0 2.22045e-16 -6.93889e-18)
-(2.77556e-17 0 -6.93889e-18)
-(2.77556e-17 2.22045e-16 -1.73472e-18)
-(2.77556e-17 0 -6.93889e-18)
-(0 0 -6.93889e-18)
-(-2.77556e-17 4.44089e-16 1.73472e-18)
-(2.77556e-17 -2.22045e-16 -6.93889e-18)
-(-2.77556e-17 0 6.93889e-18)
-(2.77556e-17 0 0)
-(2.77556e-17 -2.22045e-16 -6.93889e-18)
-(0 -2.22045e-16 0)
-(-2.77556e-17 2.22045e-16 1.73472e-18)
-(2.77556e-17 -2.22045e-16 -6.93889e-18)
-(0 -2.22045e-16 -6.93889e-18)
-(0 0 1.73472e-18)
-(0 0 0)
-(0 -4.44089e-16 -6.93889e-18)
-(0 0 -3.46945e-18)
-(2.77556e-17 -2.22045e-16 -6.93889e-18)
-(2.77556e-17 -2.22045e-16 -6.93889e-18)
-(-2.77556e-17 -2.22045e-16 3.46945e-18)
-(0 0 -6.93889e-18)
-(2.77556e-17 -4.44089e-16 -6.93889e-18)
-(2.77556e-17 0 -5.55112e-17)
-(2.77556e-17 -2.22045e-16 -1.73472e-18)
-(2.77556e-17 0 0)
-(0 0 -6.93889e-18)
-(0 -1.38778e-17 0)
-(2.77556e-17 0 -6.93889e-18)
-(0 -1.38778e-17 0)
-(2.77556e-17 0 -1.73472e-18)
-(0 -2.77556e-17 0)
-(0 -2.22045e-16 -6.93889e-18)
-(0 0 0)
-(2.77556e-17 -2.22045e-16 -6.93889e-18)
-(0 0 0)
-(5.55112e-17 0 0)
-(2.77556e-17 -5.55112e-17 5.55112e-17)
-(0 0 0)
-(-2.77556e-17 5.55112e-17 -5.55112e-17)
-(2.77556e-17 -2.22045e-16 -6.93889e-18)
-(2.77556e-17 0 5.55112e-17)
-(2.77556e-17 -4.44089e-16 -1.73472e-18)
-(2.77556e-17 -5.55112e-17 5.55112e-17)
-(0 -4.44089e-16 -6.93889e-18)
-(2.77556e-17 -5.55112e-17 5.55112e-17)
-(2.77556e-17 -2.22045e-16 -6.93889e-18)
-(-2.77556e-17 0 -5.55112e-17)
-(2.77556e-17 2.22045e-16 -1.73472e-18)
-(2.77556e-17 -1.11022e-16 5.55112e-17)
-(2.77556e-17 0 -6.93889e-18)
-(2.77556e-17 -1.11022e-16 5.55112e-17)
-(0 -4.44089e-16 -6.93889e-18)
-(-5.55112e-17 1.11022e-16 5.55112e-17)
-(0 0 0)
-(0 1.11022e-16 -5.55112e-17)
-(2.77556e-17 -2.22045e-16 -6.93889e-18)
-(0 0 1.11022e-16)
-(5.55112e-17 -2.22045e-16 -1.38778e-17)
-(0 0 1.11022e-16)
-(0 -6.66134e-16 0)
-(0 -1.11022e-16 1.11022e-16)
-(2.77556e-17 2.22045e-16 -6.93889e-18)
-(0 0 -5.55112e-17)
-(0 0 -6.93889e-18)
-(0 -1.11022e-16 -5.55112e-17)
-(0 4.44089e-16 1.73472e-18)
-(0 1.11022e-16 -5.55112e-17)
-(2.77556e-17 -2.22045e-16 -6.93889e-18)
-(0 1.11022e-16 -5.55112e-17)
-(0 -4.44089e-16 -6.93889e-18)
-(0 -2.22045e-16 1.11022e-16)
-(0 0 -1.73472e-18)
-(0 0 5.55112e-17)
-(2.77556e-17 -2.22045e-16 -6.93889e-18)
-(0 1.11022e-16 1.11022e-16)
-(2.77556e-17 -4.44089e-16 -6.93889e-18)
-(0 2.22045e-16 5.55112e-17)
-(2.77556e-17 -4.44089e-16 -1.73472e-18)
-(0 2.22045e-16 -5.55112e-17)
-(-2.77556e-17 6.66134e-16 0)
-(0 1.11022e-16 -5.55112e-17)
-(2.77556e-17 0 -6.93889e-18)
-(5.55112e-17 -4.44089e-16 0)
-(-2.77556e-17 -2.22045e-16 -3.46945e-18)
-(2.77556e-17 -2.22045e-16 0)
-(0 2.22045e-16 -6.93889e-18)
-(-2.77556e-17 0 -5.55112e-17)
-(2.77556e-17 -4.44089e-16 -6.93889e-18)
-(2.77556e-17 -2.22045e-16 0)
-(2.77556e-17 -6.66134e-16 -3.46945e-18)
-(2.77556e-17 0 0)
-(0 4.44089e-16 -6.93889e-18)
-(2.77556e-17 0 0)
-(2.77556e-17 0 -6.93889e-18)
-(2.77556e-17 -2.22045e-16 0)
-(2.77556e-17 0 -1.73472e-18)
-(-2.77556e-17 0 -5.55112e-17)
-(0 -4.44089e-16 -6.93889e-18)
-(5.55112e-17 -2.22045e-16 0)
-(2.77556e-17 4.44089e-16 -6.93889e-18)
-(5.55112e-17 -4.44089e-16 0)
-(2.77556e-17 0 -1.73472e-18)
-(-2.77556e-17 2.22045e-16 -5.55112e-17)
-(0 4.44089e-16 -6.93889e-18)
-(2.77556e-17 0 0)
-(2.77556e-17 0 -6.93889e-18)
-(2.77556e-17 0 0)
-(2.77556e-17 -4.44089e-16 -1.73472e-18)
-(2.77556e-17 -2.22045e-16 0)
-(2.77556e-17 0 -6.93889e-18)
-(2.77556e-17 0 0)
-(5.55112e-17 -4.44089e-16 -1.38778e-17)
-(-2.77556e-17 2.22045e-16 -5.55112e-17)
-(0 -4.44089e-16 0)
-(2.77556e-17 0 0)
-(2.77556e-17 0 -6.93889e-18)
-(5.55112e-17 -2.22045e-16 0)
-(0 0 -6.93889e-18)
-(5.55112e-17 -4.44089e-16 0)
-(2.77556e-17 -4.44089e-16 -3.46945e-18)
-(-2.77556e-17 0 -5.55112e-17)
-(-2.77556e-17 4.44089e-16 0)
-(0 4.44089e-16 5.55112e-17)
-(0 0 -6.93889e-18)
-(5.55112e-17 0 0)
-(2.77556e-17 0 -3.46945e-18)
-(2.77556e-17 2.22045e-16 0)
-(2.77556e-17 -4.44089e-16 -6.93889e-18)
-(2.77556e-17 2.22045e-16 0)
-(5.55112e-17 0 -1.38778e-17)
-(-2.77556e-17 0 -5.55112e-17)
-(2.77556e-17 -8.88178e-16 -1.73472e-18)
-(2.77556e-17 0 0)
-(2.77556e-17 -4.44089e-16 -6.93889e-18)
-(2.77556e-17 0 0)
-(0 4.44089e-16 6.93889e-18)
-(5.55112e-17 -6.66134e-16 0)
-(0 0 0)
-(-2.77556e-17 0 -5.55112e-17)
-(2.77556e-17 0 -6.93889e-18)
-(-2.77556e-17 4.44089e-16 -5.55112e-17)
-(2.77556e-17 -8.88178e-16 -6.93889e-18)
-(0 0 -5.55112e-17)
-(2.77556e-17 -4.44089e-16 -1.73472e-18)
-(2.77556e-17 0 5.55112e-17)
-(0 0 -6.93889e-18)
-(2.77556e-17 -4.44089e-16 0)
-(2.77556e-17 0 -6.93889e-18)
-(2.77556e-17 0 0)
-(2.77556e-17 -4.44089e-16 -1.73472e-18)
-(5.55112e-17 -4.44089e-16 -5.55112e-17)
-(0 0 -6.93889e-18)
-(2.77556e-17 0 0)
-(2.77556e-17 -8.88178e-16 -6.93889e-18)
-(2.77556e-17 0 0)
-(2.77556e-17 -4.44089e-16 -1.73472e-18)
-(2.77556e-17 0 0)
-(0 4.44089e-16 -6.93889e-18)
-(0 -4.44089e-16 -5.55112e-17)
-(2.77556e-17 -4.44089e-16 -6.93889e-18)
-(-2.77556e-17 4.44089e-16 -5.55112e-17)
-(2.77556e-17 -4.44089e-16 -1.73472e-18)
-(2.77556e-17 0 5.55112e-17)
-(2.77556e-17 1.73472e-18 -2.77556e-17)
-(0 3.46945e-18 2.77556e-17)
-(-2.77556e-17 3.46945e-18 1.38778e-17)
-(0 6.93889e-18 1.38778e-17)
-(0 0 0)
-(2.77556e-17 -2.08167e-17 -6.93889e-18)
-(2.77556e-17 1.38778e-17 -1.38778e-17)
-(0 -1.38778e-17 0)
-(2.77556e-17 -1.38778e-17 -6.93889e-18)
-(-2.77556e-17 -1.38778e-17 -1.38778e-17)
-(2.77556e-17 0 -2.77556e-17)
-(2.77556e-17 0 0)
-(0 -2.77556e-17 -1.38778e-17)
-(2.77556e-17 0 0)
-(2.77556e-17 2.77556e-17 -6.93889e-18)
-(0 0 -1.38778e-17)
-(0 2.77556e-17 4.16334e-17)
-(2.77556e-17 -5.55112e-17 -1.38778e-17)
-(0 0 -1.38778e-17)
-(2.77556e-17 -2.77556e-17 -1.38778e-17)
-(2.77556e-17 0 -6.93889e-18)
-(2.77556e-17 -5.55112e-17 -1.38778e-17)
-(5.55112e-17 0 -1.38778e-17)
-(0 5.55112e-17 6.93889e-18)
-(-2.77556e-17 5.55112e-17 -1.38778e-17)
-(0 0 -1.38778e-17)
-(0 0 -6.93889e-18)
-(2.77556e-17 -1.11022e-16 -2.77556e-17)
-(0 0 -1.38778e-17)
-(0 5.55112e-17 -6.93889e-18)
-(2.77556e-17 -5.55112e-17 -2.77556e-17)
-(0 -5.55112e-17 -1.38778e-17)
-(0 5.55112e-17 -6.93889e-18)
-(2.77556e-17 -1.11022e-16 -2.77556e-17)
-(0 -1.11022e-16 -1.38778e-17)
-(0 5.55112e-17 -6.93889e-18)
-(-2.77556e-17 0 -1.38778e-17)
-(5.55112e-17 -5.55112e-17 0)
-(0 5.55112e-17 2.77556e-17)
-(2.77556e-17 -5.55112e-17 -4.16334e-17)
-(5.55112e-17 -5.55112e-17 0)
-(0 1.11022e-16 2.77556e-17)
-(2.77556e-17 -1.66533e-16 -4.16334e-17)
-(5.55112e-17 -1.66533e-16 0)
-(0 5.55112e-17 2.77556e-17)
-(0 0 -1.38778e-17)
-(2.77556e-17 0 1.38778e-17)
-(0 0 0)
-(2.77556e-17 0 -1.38778e-17)
-(2.77556e-17 -1.11022e-16 0)
-(0 0 6.93889e-18)
-(0 -1.11022e-16 -1.38778e-17)
-(2.77556e-17 0 0)
-(0 0 6.93889e-18)
-(-2.77556e-17 1.73472e-18 5.55112e-17)
-(0 -1.11022e-16 -1.38778e-17)
-(-2.77556e-17 6.93889e-18 0)
-(2.77556e-17 -1.11022e-16 0)
-(0 -1.38778e-17 2.77556e-17)
-(0 0 6.93889e-18)
-(2.77556e-17 -1.38778e-17 5.55112e-17)
-(0 0 -1.38778e-17)
-(5.55112e-17 -2.77556e-17 2.77556e-17)
-(2.77556e-17 -1.11022e-16 0)
-(5.55112e-17 -5.55112e-17 2.77556e-17)
-(0 0 6.93889e-18)
-(5.55112e-17 -2.77556e-17 2.77556e-17)
-(2.77556e-17 -1.11022e-16 -1.38778e-17)
-(-2.77556e-17 5.55112e-17 0)
-(0 2.22045e-16 2.77556e-17)
-(2.77556e-17 0 8.32667e-17)
-(0 -1.11022e-16 0)
-(0 -5.55112e-17 0)
-(2.77556e-17 0 -1.38778e-17)
-(0 5.55112e-17 0)
-(2.77556e-17 -1.11022e-16 1.38778e-17)
-(0 5.55112e-17 0)
-(2.77556e-17 -1.11022e-16 0)
-(2.77556e-17 5.55112e-17 8.32667e-17)
-(2.77556e-17 1.11022e-16 -1.38778e-17)
-(-2.77556e-17 5.55112e-17 -2.77556e-17)
-(0 2.22045e-16 2.77556e-17)
-(-2.77556e-17 1.11022e-16 -2.77556e-17)
-(0 -2.22045e-16 0)
-(5.55112e-17 -2.22045e-16 2.77556e-17)
-(2.77556e-17 0 -1.38778e-17)
-(0 -1.11022e-16 2.77556e-17)
-(2.77556e-17 0 -1.38778e-17)
-(0 0 2.77556e-17)
-(0 1.11022e-16 6.93889e-18)
-(0 0 2.77556e-17)
-(0 0 -1.38778e-17)
-(0 -1.11022e-16 2.77556e-17)
-(0 -3.33067e-16 0)
-(0 0 2.77556e-17)
-(2.77556e-17 1.11022e-16 -6.93889e-18)
-(0 0 2.77556e-17)
-(2.77556e-17 2.22045e-16 -1.38778e-17)
-(0 0 2.77556e-17)
-(2.77556e-17 -2.22045e-16 -1.38778e-17)
-(0 1.11022e-16 2.77556e-17)
-(0 0 6.93889e-18)
-(0 0 2.77556e-17)
-(0 -2.22045e-16 -1.38778e-17)
-(0 0 2.77556e-17)
-(0 -1.11022e-16 0)
-(0 0 2.77556e-17)
-(2.77556e-17 0 -6.93889e-18)
-(0 1.11022e-16 2.77556e-17)
-(2.77556e-17 -2.22045e-16 -1.38778e-17)
-(0 -2.22045e-16 2.77556e-17)
-(2.77556e-17 -1.11022e-16 -1.38778e-17)
-(0 -3.33067e-16 2.77556e-17)
-(0 0 6.93889e-18)
-(-2.77556e-17 2.22045e-16 -8.32667e-17)
-(2.77556e-17 -1.11022e-16 -1.38778e-17)
-(2.77556e-17 2.22045e-16 2.77556e-17)
-(2.77556e-17 0 1.38778e-17)
-(0 4.44089e-16 5.55112e-17)
-(0 0 0)
-(2.77556e-17 0 2.77556e-17)
-(2.77556e-17 0 -1.38778e-17)
-(2.77556e-17 0 2.77556e-17)
-(0 0 1.38778e-17)
-(2.77556e-17 -4.44089e-16 2.77556e-17)
-(0 2.22045e-16 0)
-(2.77556e-17 -2.22045e-16 2.77556e-17)
-(5.55112e-17 -2.22045e-16 -2.77556e-17)
-(2.77556e-17 -2.22045e-16 8.32667e-17)
-(-2.77556e-17 0 2.77556e-17)
-(0 2.22045e-16 -2.77556e-17)
-(0 0 0)
-(-2.77556e-17 6.66134e-16 -8.32667e-17)
-(2.77556e-17 0 -2.77556e-17)
-(2.77556e-17 -2.22045e-16 8.32667e-17)
-(2.77556e-17 -2.22045e-16 -1.38778e-17)
-(2.77556e-17 0 2.77556e-17)
-(2.77556e-17 0 -6.93889e-18)
-(2.77556e-17 -2.22045e-16 2.77556e-17)
-(-2.77556e-17 2.22045e-16 -1.38778e-17)
-(2.77556e-17 -4.44089e-16 2.77556e-17)
-(2.77556e-17 0 -1.38778e-17)
-(2.77556e-17 0 2.77556e-17)
-(2.77556e-17 -2.22045e-16 -6.93889e-18)
-(2.77556e-17 -2.22045e-16 2.77556e-17)
-(2.77556e-17 -2.22045e-16 -2.77556e-17)
-(2.77556e-17 -4.44089e-16 2.77556e-17)
-(5.55112e-17 0 0)
-(-2.77556e-17 6.66134e-16 -8.32667e-17)
-(0 -2.22045e-16 1.38778e-17)
-(-2.77556e-17 4.44089e-16 -8.32667e-17)
-(2.77556e-17 -2.22045e-16 -2.77556e-17)
-(2.77556e-17 0 8.32667e-17)
-(2.77556e-17 -2.22045e-16 1.38778e-17)
-(2.77556e-17 -2.22045e-16 8.32667e-17)
-(0 2.22045e-16 0)
-(-2.77556e-17 6.66134e-16 -8.32667e-17)
-(2.77556e-17 0 -2.77556e-17)
-(2.77556e-17 0 2.77556e-17)
-(2.77556e-17 -4.44089e-16 -1.38778e-17)
-(2.77556e-17 0 2.77556e-17)
-(2.77556e-17 -2.22045e-16 -6.93889e-18)
-(2.77556e-17 -4.44089e-16 8.32667e-17)
-(2.77556e-17 0 -2.77556e-17)
-(2.77556e-17 -4.44089e-16 2.77556e-17)
-(2.77556e-17 -2.22045e-16 0)
-(2.77556e-17 -2.22045e-16 2.77556e-17)
-(2.77556e-17 -2.22045e-16 -6.93889e-18)
-(-2.77556e-17 6.66134e-16 -8.32667e-17)
-(-2.77556e-17 0 -1.38778e-17)
-(2.77556e-17 -6.66134e-16 8.32667e-17)
-(-2.77556e-17 0 2.77556e-17)
-(5.55112e-17 0 1.11022e-16)
-(0 2.22045e-16 0)
-(2.77556e-17 -8.88178e-16 8.32667e-17)
-(5.55112e-17 0 -2.77556e-17)
-(0 4.44089e-16 2.77556e-17)
-(-2.77556e-17 2.22045e-16 2.77556e-17)
-(2.77556e-17 -4.44089e-16 2.77556e-17)
-(0 0 0)
-(2.77556e-17 -4.44089e-16 2.77556e-17)
-(5.55112e-17 -2.22045e-16 -2.77556e-17)
-(0 0 -2.77556e-17)
-(-2.77556e-17 0 2.77556e-17)
-(2.77556e-17 -4.44089e-16 2.77556e-17)
-(0 0 0)
-(2.77556e-17 -4.44089e-16 2.77556e-17)
-(-2.77556e-17 2.22045e-16 -1.38778e-17)
-(2.77556e-17 0 2.77556e-17)
-(0 -2.22045e-16 0)
-(2.77556e-17 -4.44089e-16 8.32667e-17)
-(2.77556e-17 0 -6.93889e-18)
-(5.55112e-17 -8.88178e-16 1.11022e-16)
-(2.77556e-17 0 -2.77556e-17)
-(0 0 2.77556e-17)
-(5.55112e-17 -6.66134e-16 -1.38778e-17)
-(2.77556e-17 0 -6.93889e-18)
-(2.77556e-17 0 -2.77556e-17)
-(5.55112e-17 -2.22045e-16 0)
-(0 2.22045e-16 1.38778e-17)
-(2.77556e-17 -2.22045e-16 -2.77556e-17)
-(2.77556e-17 0 1.38778e-17)
-(0 0 0)
-(2.77556e-17 0 -2.77556e-17)
-(5.55112e-17 -4.44089e-16 -1.38778e-17)
-(2.77556e-17 -2.22045e-16 -6.93889e-18)
-(0 0 -2.77556e-17)
-(2.77556e-17 -2.22045e-16 -1.38778e-17)
-(2.77556e-17 -2.22045e-16 -6.93889e-18)
-(2.77556e-17 0 -2.77556e-17)
-(-2.77556e-17 2.22045e-16 2.77556e-17)
-(0 0 0)
-(5.55112e-17 -2.22045e-16 -2.77556e-17)
-(-2.77556e-17 0 2.77556e-17)
-(0 0 0)
-(5.55112e-17 0 -2.77556e-17)
-(-2.77556e-17 0 2.77556e-17)
-(0 0 0)
-(-2.77556e-17 2.22045e-16 -1.38778e-17)
-(0 -6.66134e-16 0)
-(2.77556e-17 0 -6.93889e-18)
-(0 0 -1.38778e-17)
-(-2.77556e-17 -2.22045e-16 2.77556e-17)
-(0 4.44089e-16 0)
-(5.55112e-17 -8.88178e-16 -2.77556e-17)
-(-2.77556e-17 -2.22045e-16 2.77556e-17)
-(0 0 0)
-(2.77556e-17 -2.22045e-16 -2.77556e-17)
-(2.77556e-17 0 1.38778e-17)
-(0 0 0)
-(2.77556e-17 0 -2.77556e-17)
-(-2.77556e-17 2.22045e-16 1.38778e-17)
-(2.77556e-17 -2.22045e-16 -6.93889e-18)
-(0 2.22045e-16 -2.77556e-17)
-(2.77556e-17 -4.44089e-16 -1.38778e-17)
-(2.77556e-17 2.22045e-16 -6.93889e-18)
-(2.77556e-17 0 -2.77556e-17)
-(2.77556e-17 2.22045e-16 1.38778e-17)
-(0 -2.22045e-16 0)
-(2.77556e-17 -4.44089e-16 -2.77556e-17)
-(-2.77556e-17 -4.44089e-16 2.77556e-17)
-(0 2.22045e-16 0)
-(5.55112e-17 -2.22045e-16 -2.77556e-17)
-(-2.77556e-17 0 2.77556e-17)
-(0 0 0)
-(-2.77556e-17 -2.22045e-16 -1.38778e-17)
-(0 0 0)
-(2.77556e-17 -6.66134e-16 -6.93889e-18)
-(-2.77556e-17 0 0)
-(0 -1.73472e-18 -2.77556e-17)
-(-2.77556e-17 -4.44089e-16 2.77556e-17)
-(2.77556e-17 -6.93889e-18 2.77556e-17)
-(0 -4.44089e-16 0)
-(0 -1.38778e-17 0)
-(0 -4.44089e-16 -1.38778e-17)
-(0 -1.38778e-17 0)
-(-2.77556e-17 -4.44089e-16 2.77556e-17)
-(2.77556e-17 0 0)
-(0 4.44089e-16 0)
-(2.77556e-17 -2.77556e-17 0)
-(0 -4.44089e-16 -2.77556e-17)
-(2.77556e-17 -5.55112e-17 0)
-(-2.77556e-17 4.44089e-16 2.77556e-17)
-(2.77556e-17 0 2.77556e-17)
-(0 0 0)
-(0 -5.55112e-17 2.77556e-17)
-(2.77556e-17 0 -2.77556e-17)
-(2.77556e-17 -5.55112e-17 -2.77556e-17)
-(0 4.44089e-16 1.38778e-17)
-(2.77556e-17 -5.55112e-17 -2.77556e-17)
-(2.77556e-17 -4.44089e-16 -6.93889e-18)
-(2.77556e-17 -1.11022e-16 -2.77556e-17)
-(2.77556e-17 0 -2.77556e-17)
-(0 -5.55112e-17 2.77556e-17)
-(2.77556e-17 -8.88178e-16 -1.38778e-17)
-(2.77556e-17 0 0)
-(-2.77556e-17 8.88178e-16 6.93889e-18)
-(2.77556e-17 5.55112e-17 0)
-(2.77556e-17 0 -4.16334e-17)
-(0 -1.11022e-16 2.77556e-17)
-(2.77556e-17 -4.44089e-16 -1.38778e-17)
-(0 0 2.77556e-17)
-(-2.77556e-17 4.44089e-16 6.93889e-18)
-(2.77556e-17 1.11022e-16 0)
-(2.77556e-17 0 -2.77556e-17)
-(2.77556e-17 0 0)
-(0 0 1.38778e-17)
-(2.77556e-17 0 0)
-(2.77556e-17 -4.44089e-16 -6.93889e-18)
-(2.77556e-17 -2.22045e-16 5.55112e-17)
-(2.77556e-17 0 -2.77556e-17)
-(0 0 2.77556e-17)
-(0 0 1.38778e-17)
-(2.77556e-17 -2.22045e-16 5.55112e-17)
-(0 0 0)
-(0 -1.11022e-16 2.77556e-17)
-(2.77556e-17 0 -2.77556e-17)
-(2.77556e-17 0 0)
-(-2.77556e-17 0 2.77556e-17)
-(2.77556e-17 -1.11022e-16 0)
-(0 0 0)
-(2.77556e-17 0 0)
-(0 0 -1.38778e-17)
-(2.77556e-17 1.11022e-16 0)
-(-2.77556e-17 0 2.77556e-17)
-(0 -1.11022e-16 2.77556e-17)
-(0 0 0)
-(0 0 2.77556e-17)
-(-2.77556e-17 4.44089e-16 0)
-(-2.77556e-17 0 2.77556e-17)
-(-2.77556e-17 0 2.77556e-17)
-(-2.77556e-17 -2.22045e-16 -2.77556e-17)
-(0 0 0)
-(0 0 2.77556e-17)
-(0 4.44089e-16 -2.77556e-17)
-(-2.77556e-17 0 -2.77556e-17)
-(-2.77556e-17 0 2.77556e-17)
-(-2.77556e-17 0 -2.77556e-17)
-(0 -4.44089e-16 0)
-(-2.77556e-17 -2.22045e-16 -2.77556e-17)
-(-2.77556e-17 -1.73472e-18 0)
-(-2.77556e-17 -2.22045e-16 -2.77556e-17)
-(-2.77556e-17 3.46945e-18 2.77556e-17)
-(0 0 2.77556e-17)
-(-2.77556e-17 3.46945e-18 -1.38778e-17)
-(0 0 0)
-(0 0 2.77556e-17)
-(-2.77556e-17 4.44089e-16 -2.77556e-17)
-(2.77556e-17 6.93889e-18 -2.77556e-17)
-(0 0 2.77556e-17)
-(0 -1.38778e-17 0)
-(-2.77556e-17 0 -2.77556e-17)
-(0 0 -2.77556e-17)
-(-2.77556e-17 -2.22045e-16 -2.77556e-17)
-(0 0 2.77556e-17)
-(-2.77556e-17 -2.22045e-16 -2.77556e-17)
-(2.77556e-17 -2.77556e-17 -2.77556e-17)
-(-2.77556e-17 2.22045e-16 -2.77556e-17)
-(5.55112e-17 -1.38778e-17 -2.77556e-17)
-(5.55112e-17 0 0)
-(2.77556e-17 -2.77556e-17 2.77556e-17)
-(-2.77556e-17 0 -2.77556e-17)
-(0 2.77556e-17 1.38778e-17)
-(-2.77556e-17 0 2.77556e-17)
-(2.77556e-17 0 0)
-(-2.77556e-17 0 2.77556e-17)
-(0 0 2.77556e-17)
-(0 0 2.77556e-17)
-(0 2.77556e-17 -1.38778e-17)
-(0 0 2.77556e-17)
-(2.77556e-17 0 0)
-(-2.77556e-17 4.44089e-16 2.77556e-17)
-(-2.77556e-17 -2.77556e-17 -2.77556e-17)
-(-2.77556e-17 0 -2.77556e-17)
-(2.77556e-17 0 0)
-(-2.77556e-17 2.22045e-16 -2.77556e-17)
-(2.77556e-17 -5.55112e-17 0)
-(2.77556e-17 -2.22045e-16 -2.77556e-17)
-(2.77556e-17 5.55112e-17 0)
-(-2.77556e-17 0 -2.77556e-17)
-(2.77556e-17 0 -1.38778e-17)
-(-2.77556e-17 0 -2.77556e-17)
-(-2.77556e-17 2.77556e-17 0)
-(-2.77556e-17 -2.22045e-16 -2.77556e-17)
-(2.77556e-17 5.55112e-17 0)
-(0 0 2.77556e-17)
-(0 5.55112e-17 1.38778e-17)
-(2.77556e-17 0 2.77556e-17)
-(5.55112e-17 0 -2.77556e-17)
-(0 -4.44089e-16 0)
-(0 -1.11022e-16 -2.77556e-17)
-(0 -4.44089e-16 2.77556e-17)
-(0 0 -1.38778e-17)
-(-2.77556e-17 0 -2.77556e-17)
-(0 -5.55112e-17 2.77556e-17)
-(-2.77556e-17 0 -2.77556e-17)
-(0 0 -2.77556e-17)
-(-2.77556e-17 0 2.77556e-17)
-(0 5.55112e-17 -1.38778e-17)
-(-2.77556e-17 0 -2.77556e-17)
-(0 5.55112e-17 2.77556e-17)
-(-2.77556e-17 4.44089e-16 -2.77556e-17)
-(0 0 -2.77556e-17)
-(-2.77556e-17 0 -2.77556e-17)
-(0 5.55112e-17 -1.38778e-17)
-(0 -4.44089e-16 0)
-(0 0 2.77556e-17)
-(2.77556e-17 -4.44089e-16 2.77556e-17)
-(0 -5.55112e-17 -2.77556e-17)
-(0 -4.44089e-16 2.77556e-17)
-(0 5.55112e-17 -1.38778e-17)
-(5.55112e-17 -2.22045e-16 -2.77556e-17)
-(2.77556e-17 0 0)
-(-2.77556e-17 0 1.38778e-17)
-(-5.55112e-17 5.55112e-17 5.55112e-17)
-(2.77556e-17 1.11022e-16 0)
-(-2.77556e-17 0 1.38778e-17)
-(-5.55112e-17 0 5.55112e-17)
-(2.77556e-17 0 0)
-(-2.77556e-17 5.55112e-17 1.38778e-17)
-(-2.77556e-17 2.22045e-16 2.77556e-17)
-(0 0 0)
-(0 0 0)
-(2.77556e-17 -1.11022e-16 -5.55112e-17)
-(5.55112e-17 -1.11022e-16 -2.77556e-17)
-(-2.77556e-17 1.11022e-16 2.77556e-17)
-(2.77556e-17 -1.11022e-16 0)
-(5.55112e-17 -2.22045e-16 -2.77556e-17)
-(-2.77556e-17 1.11022e-16 2.77556e-17)
-(2.77556e-17 -1.11022e-16 0)
-(5.55112e-17 -2.22045e-16 -2.77556e-17)
-(-2.77556e-17 1.11022e-16 2.77556e-17)
-(2.77556e-17 -1.11022e-16 0)
-(5.55112e-17 -1.11022e-16 -2.77556e-17)
-(-2.77556e-17 2.22045e-16 2.77556e-17)
-(0 -1.11022e-16 -5.55112e-17)
-(-2.77556e-17 -1.11022e-16 -2.77556e-17)
-(0 -1.11022e-16 0)
-(0 -1.11022e-16 0)
-(-2.77556e-17 -1.11022e-16 -2.77556e-17)
-(2.77556e-17 0 0)
-(0 -1.11022e-16 -5.55112e-17)
-(-2.77556e-17 -1.11022e-16 -2.77556e-17)
-(0 -1.11022e-16 0)
-(0 -1.11022e-16 0)
-(5.55112e-17 -1.11022e-16 -2.77556e-17)
-(-2.77556e-17 2.22045e-16 2.77556e-17)
-(2.77556e-17 -1.11022e-16 0)
-(2.77556e-17 -2.22045e-16 -2.77556e-17)
-(0 2.22045e-16 0)
-(0 0 2.77556e-17)
-(5.55112e-17 -2.22045e-16 -2.77556e-17)
-(-2.77556e-17 1.11022e-16 2.77556e-17)
-(2.77556e-17 -1.11022e-16 0)
-(2.77556e-17 -1.11022e-16 -2.77556e-17)
-(0 1.11022e-16 0)
-(0 1.11022e-16 2.77556e-17)
-(5.55112e-17 -1.11022e-16 -2.77556e-17)
-(-2.77556e-17 0 2.77556e-17)
-(2.77556e-17 -2.22045e-16 -5.55112e-17)
-(0 0 0)
-(0 0 0)
-(2.77556e-17 -4.44089e-16 -5.55112e-17)
-(0 0 0)
-(0 1.73472e-18 -5.55112e-17)
-(0 2.22045e-16 -1.38778e-17)
-(-2.77556e-17 6.93889e-18 0)
-(-2.77556e-17 2.22045e-16 2.77556e-17)
-(2.77556e-17 0 0)
-(0 0 0)
-(0 -1.38778e-17 2.77556e-17)
-(0 0 0)
-(5.55112e-17 -2.77556e-17 5.55112e-17)
-(2.77556e-17 -2.22045e-16 0)
-(5.55112e-17 -8.32667e-17 5.55112e-17)
-(0 0 0)
-(5.55112e-17 -1.11022e-16 5.55112e-17)
-(5.55112e-17 0 -2.77556e-17)
-(0 2.77556e-17 2.77556e-17)
-(0 0 0)
-(0 0 0)
-(0 2.22045e-16 0)
-(0 -5.55112e-17 2.77556e-17)
-(5.55112e-17 -4.44089e-16 -2.77556e-17)
-(0 5.55112e-17 2.77556e-17)
-(2.77556e-17 0 0)
-(0 0 2.77556e-17)
-(0 2.22045e-16 -2.77556e-17)
-(0 1.66533e-16 0)
-(0 -2.22045e-16 2.77556e-17)
-(2.77556e-17 -5.55112e-17 2.77556e-17)
-(2.77556e-17 0 0)
-(2.77556e-17 5.55112e-17 2.77556e-17)
-(2.77556e-17 -2.22045e-16 -2.77556e-17)
-(5.55112e-17 -1.11022e-16 2.77556e-17)
-(0 2.22045e-16 2.77556e-17)
-(-2.77556e-17 0 0)
-(2.77556e-17 0 0)
-(0 0 0)
-(0 0 0)
-(0 0 0)
-(5.55112e-17 -4.44089e-16 -2.77556e-17)
-(0 -1.11022e-16 0)
-(2.77556e-17 -2.22045e-16 0)
-(0 0 2.77556e-17)
-(2.77556e-17 -4.44089e-16 -2.77556e-17)
-(0 -1.11022e-16 2.77556e-17)
-(0 2.22045e-16 2.77556e-17)
-(0 -1.11022e-16 2.77556e-17)
-(5.55112e-17 -2.22045e-16 -2.77556e-17)
-(0 1.11022e-16 2.77556e-17)
-(0 0 0)
-(0 1.11022e-16 -2.77556e-17)
-(0 -2.22045e-16 0)
-(0 0 2.77556e-17)
-(0 0 2.77556e-17)
-(0 0 -2.77556e-17)
-(0 0 0)
-(0 0 2.77556e-17)
-(0 0 0)
-(-2.77556e-17 1.11022e-16 0)
-(-2.77556e-17 4.44089e-16 2.77556e-17)
-(-2.77556e-17 3.33067e-16 0)
-(0 0 0)
-(2.77556e-17 -2.22045e-16 2.77556e-17)
-(0 0 0)
-(0 0 0)
-(5.55112e-17 -4.44089e-16 -2.77556e-17)
-(2.77556e-17 -2.22045e-16 2.77556e-17)
-(2.77556e-17 0 -2.77556e-17)
-(0 2.22045e-16 0)
-(0 4.44089e-16 0)
-(0 0 0)
-(2.77556e-17 -2.22045e-16 0)
-(0 2.22045e-16 0)
-(2.77556e-17 -2.22045e-16 -2.77556e-17)
-(0 0 0)
-(0 2.22045e-16 0)
-(0 2.22045e-16 0)
-(2.77556e-17 -2.22045e-16 0)
-(0 0 2.77556e-17)
-(0 0 -2.77556e-17)
-(2.77556e-17 0 2.77556e-17)
-(0 2.22045e-16 2.77556e-17)
-(0 0 0)
-(2.77556e-17 -2.22045e-16 0)
-(0 0 0)
-(2.77556e-17 0 -2.77556e-17)
-(0 -2.22045e-16 0)
-(0 2.22045e-16 2.77556e-17)
-(0 -2.22045e-16 0)
-(2.77556e-17 0 0)
-(0 -2.22045e-16 0)
-(2.77556e-17 -4.44089e-16 -2.77556e-17)
-(2.77556e-17 -2.22045e-16 2.77556e-17)
-(0 2.22045e-16 0)
-(0 2.22045e-16 0)
-(2.77556e-17 -2.22045e-16 2.77556e-17)
-(2.77556e-17 -2.22045e-16 2.77556e-17)
-(0 -2.22045e-16 0)
-(2.77556e-17 0 2.77556e-17)
-(5.55112e-17 -2.22045e-16 -2.77556e-17)
-(0 2.22045e-16 0)
-(2.77556e-17 -6.66134e-16 0)
-(2.77556e-17 -2.22045e-16 2.77556e-17)
-(0 0 0)
-(2.77556e-17 -2.22045e-16 2.77556e-17)
-(0 2.22045e-16 0)
-(0 2.22045e-16 0)
-(-2.77556e-17 6.66134e-16 2.77556e-17)
-(0 0 0)
-(0 4.44089e-16 0)
-(2.77556e-17 -4.44089e-16 2.77556e-17)
-(0 -4.44089e-16 0)
-(0 -2.22045e-16 0)
-(-2.77556e-17 6.66134e-16 2.77556e-17)
-(0 0 0)
-(0 2.22045e-16 0)
-(2.77556e-17 2.22045e-16 2.77556e-17)
-(0 -4.44089e-16 0)
-(0 0 0)
-(5.55112e-17 -4.44089e-16 -2.77556e-17)
-(5.55112e-17 0 2.77556e-17)
-(2.77556e-17 0 -2.77556e-17)
-(2.77556e-17 -4.44089e-16 2.77556e-17)
-(0 2.22045e-16 0)
-(0 -4.44089e-16 0)
-(0 0 0)
-(0 -4.44089e-16 0)
-(0 0 0)
-(0 0 0)
-(0 4.44089e-16 0)
-(2.77556e-17 -4.44089e-16 -2.77556e-17)
-(-2.77556e-17 2.22045e-16 2.77556e-17)
-(0 0 0)
-(0 -4.44089e-16 0)
-(0 4.44089e-16 0)
-(0 0 0)
-(0 4.44089e-16 0)
-(2.77556e-17 0 0)
-(2.77556e-17 -4.44089e-16 2.77556e-17)
-(2.77556e-17 0 -2.77556e-17)
-(5.55112e-17 -8.88178e-16 2.77556e-17)
-(0 2.22045e-16 2.77556e-17)
-(0 0 0)
-(2.77556e-17 0 0)
-(0 0 0)
-(5.55112e-17 -4.44089e-16 -2.77556e-17)
-(2.77556e-17 4.44089e-16 2.77556e-17)
-(0 6.66134e-16 0)
-(5.55112e-17 0 -2.77556e-17)
-(2.77556e-17 -2.22045e-16 0)
-(2.77556e-17 -4.44089e-16 -2.77556e-17)
-(0 -2.22045e-16 2.77556e-17)
-(2.77556e-17 -2.22045e-16 0)
-(0 4.44089e-16 0)
-(0 -4.44089e-16 0)
-(-2.77556e-17 4.44089e-16 2.77556e-17)
-(0 0 0)
-(0 0 0)
-(5.55112e-17 -4.44089e-16 -2.77556e-17)
-(2.77556e-17 0 -2.77556e-17)
-(0 0 0)
-(-5.55112e-17 4.44089e-16 2.77556e-17)
-(0 0 0)
-(0 -4.44089e-16 0)
-(0 0 0)
-(0 4.44089e-16 0)
-(0 -4.44089e-16 0)
-(0 4.44089e-16 0)
-(0 0 0)
-(0 0 0)
-(2.77556e-17 0 0)
-(2.77556e-17 -4.44089e-16 -2.77556e-17)
-(0 0 0)
-(2.77556e-17 -4.44089e-16 0)
-(5.55112e-17 0 -2.77556e-17)
-(-5.55112e-17 8.88178e-16 2.77556e-17)
-(-2.77556e-17 8.88178e-16 2.77556e-17)
-(5.55112e-17 0 -2.77556e-17)
-(-5.55112e-17 4.44089e-16 2.77556e-17)
-(2.77556e-17 -4.44089e-16 0)
-(2.77556e-17 -4.44089e-16 -2.77556e-17)
-(0 0 0)
-(2.77556e-17 -4.44089e-16 0)
-(0 4.44089e-16 0)
-(0 -4.44089e-16 0)
-(2.77556e-17 0 0)
-(0 0 0)
-(0 0 0)
-(0 4.44089e-16 0)
-(0 0 0)
-(0 0 0)
-(-5.55112e-17 8.88178e-16 2.77556e-17)
-(0 0 0)
-(0 0 0)
-(0 0 0)
-(0 0 0)
-(0 -4.44089e-16 0)
-(2.77556e-17 0 -2.77556e-17)
-(0 -1.73472e-18 -2.77556e-17)
-(-2.77556e-17 1.38778e-17 -4.16334e-17)
-(2.77556e-17 0 0)
-(2.77556e-17 -2.77556e-17 -1.38778e-17)
-(-2.77556e-17 0 2.77556e-17)
-(-2.77556e-17 0 -1.38778e-17)
-(2.77556e-17 0 -2.77556e-17)
-(0 -2.77556e-17 1.38778e-17)
-(0 0 0)
-(0 -2.77556e-17 1.38778e-17)
-(0 -1.38778e-17 0)
-(0 0 1.38778e-17)
-(0 1.38778e-17 0)
-(0 -2.77556e-17 1.38778e-17)
-(2.77556e-17 0 -2.77556e-17)
-(2.77556e-17 -1.11022e-16 1.38778e-17)
-(2.77556e-17 -2.77556e-17 0)
-(0 -5.55112e-17 -1.38778e-17)
-(0 -1.38778e-17 0)
-(0 -5.55112e-17 -1.38778e-17)
-(2.77556e-17 0 -2.77556e-17)
-(0 0 -1.38778e-17)
-(0 2.77556e-17 0)
-(2.77556e-17 -5.55112e-17 1.38778e-17)
-(2.77556e-17 0 -2.77556e-17)
-(2.77556e-17 -5.55112e-17 0)
-(-2.77556e-17 0 -2.77556e-17)
-(2.77556e-17 1.11022e-16 0)
-(-2.77556e-17 2.77556e-17 0)
-(2.77556e-17 -1.11022e-16 1.38778e-17)
-(2.77556e-17 -2.77556e-17 -2.77556e-17)
-(5.55112e-17 -1.11022e-16 1.38778e-17)
-(0 0 0)
-(0 -1.11022e-16 -1.38778e-17)
-(0 5.55112e-17 -2.77556e-17)
-(0 -1.11022e-16 -1.38778e-17)
-(2.77556e-17 0 -2.77556e-17)
-(0 0 -1.38778e-17)
-(-2.77556e-17 0 -2.77556e-17)
-(5.55112e-17 -2.22045e-16 2.77556e-17)
-(0 5.55112e-17 0)
-(5.55112e-17 -1.11022e-16 2.77556e-17)
-(2.77556e-17 0 2.77556e-17)
-(5.55112e-17 -2.22045e-16 2.77556e-17)
-(0 5.55112e-17 0)
-(5.55112e-17 -1.11022e-16 2.77556e-17)
-(2.77556e-17 5.55112e-17 0)
-(0 0 -1.38778e-17)
-(0 -5.55112e-17 0)
-(0 -2.22045e-16 1.38778e-17)
-(-2.77556e-17 5.55112e-17 -2.77556e-17)
-(0 -1.11022e-16 -1.38778e-17)
-(0 0 0)
-(0 -2.22045e-16 1.38778e-17)
-(2.77556e-17 -5.55112e-17 -2.77556e-17)
-(5.55112e-17 -2.22045e-16 1.38778e-17)
-(-2.77556e-17 5.55112e-17 -2.77556e-17)
-(5.55112e-17 -2.22045e-16 1.38778e-17)
-(0 5.55112e-17 0)
-(2.77556e-17 0 -1.38778e-17)
-(2.77556e-17 0 -2.77556e-17)
-(-2.77556e-17 0 -2.77556e-17)
-(-2.77556e-17 0 -2.77556e-17)
-(2.77556e-17 -2.22045e-16 0)
-(0 1.11022e-16 0)
-(-2.77556e-17 2.22045e-16 -2.77556e-17)
-(2.77556e-17 5.55112e-17 -2.77556e-17)
-(-2.77556e-17 2.22045e-16 -2.77556e-17)
-(-2.77556e-17 0 -2.77556e-17)
-(-2.77556e-17 0 -2.77556e-17)
-(0 5.55112e-17 0)
-(0 -1.73472e-18 -5.55112e-17)
-(-2.77556e-17 0 -2.77556e-17)
-(2.77556e-17 0 -5.55112e-17)
-(0 -5.55112e-17 0)
-(2.77556e-17 -6.93889e-18 5.55112e-17)
-(2.77556e-17 -2.22045e-16 1.38778e-17)
-(2.77556e-17 0 -5.55112e-17)
-(0 -5.55112e-17 0)
-(0 0 0)
-(5.55112e-17 0 0)
-(0 0 5.55112e-17)
-(0 0 5.55112e-17)
-(0 1.38778e-17 0)
-(2.77556e-17 0 -1.38778e-17)
-(2.77556e-17 0 5.55112e-17)
-(2.77556e-17 0 0)
-(0 -1.38778e-17 0)
-(2.77556e-17 0 1.38778e-17)
-(0 -1.38778e-17 5.55112e-17)
-(0 0 0)
-(2.77556e-17 0 5.55112e-17)
-(-2.77556e-17 0 -2.77556e-17)
-(-2.77556e-17 0 5.55112e-17)
-(0 0 5.55112e-17)
-(2.77556e-17 0 1.11022e-16)
-(-2.77556e-17 0 -2.77556e-17)
-(-2.77556e-17 0 0)
-(2.77556e-17 5.55112e-17 0)
-(0 2.77556e-17 0)
-(-2.77556e-17 -2.22045e-16 -2.77556e-17)
-(2.77556e-17 -2.77556e-17 1.11022e-16)
-(0 -5.55112e-17 0)
-(0 0 0)
-(-2.77556e-17 0 -2.77556e-17)
-(0 0 5.55112e-17)
-(0 0 5.55112e-17)
-(2.77556e-17 0 1.11022e-16)
-(0 -2.22045e-16 0)
-(-2.77556e-17 0 0)
-(0 -1.11022e-16 0)
-(0 0 0)
-(-2.77556e-17 0 -2.77556e-17)
-(2.77556e-17 0 0)
-(0 0 -2.77556e-17)
-(0 5.55112e-17 5.55112e-17)
-(2.77556e-17 0 -1.38778e-17)
-(0 -5.55112e-17 0)
-(0 0 0)
-(0 -5.55112e-17 0)
-(2.77556e-17 0 -1.38778e-17)
-(-2.77556e-17 5.55112e-17 0)
-(0 0 -2.77556e-17)
-(0 0 -5.55112e-17)
-(2.77556e-17 -4.44089e-16 1.38778e-17)
-(2.77556e-17 -5.55112e-17 0)
-(0 0 -2.77556e-17)
-(-2.77556e-17 5.55112e-17 0)
-(5.55112e-17 0 1.38778e-17)
-(0 -5.55112e-17 -5.55112e-17)
-(-2.77556e-17 1.11022e-16 5.55112e-17)
-(2.77556e-17 0 0)
-(2.77556e-17 -2.22045e-16 -1.38778e-17)
-(-2.77556e-17 0 0)
-(2.77556e-17 0 0)
-(0 1.11022e-16 -5.55112e-17)
-(-2.77556e-17 -2.22045e-16 -2.77556e-17)
-(2.77556e-17 5.55112e-17 0)
-(0 0 -2.77556e-17)
-(-2.77556e-17 0 0)
-(-2.77556e-17 0 -2.77556e-17)
-(0 5.55112e-17 -5.55112e-17)
-(-2.77556e-17 1.11022e-16 5.55112e-17)
-(0 -5.55112e-17 0)
-(0 -4.44089e-16 0)
-(0 -5.55112e-17 5.55112e-17)
-(2.77556e-17 1.11022e-16 0)
-(0 0 0)
-(-2.77556e-17 0 -2.77556e-17)
-(2.77556e-17 0 0)
-(0 0 -2.77556e-17)
-(0 0 5.55112e-17)
-(-2.77556e-17 4.44089e-16 -2.77556e-17)
-(0 -5.55112e-17 0)
-(-2.77556e-17 1.11022e-16 5.55112e-17)
-(2.77556e-17 5.55112e-17 0)
-(2.77556e-17 0 -1.38778e-17)
-(0 -5.55112e-17 5.55112e-17)
-(2.77556e-17 0 0)
-(0 0 0)
-(2.77556e-17 -2.22045e-16 1.38778e-17)
-(0 -1.11022e-16 0)
-(0 1.11022e-16 -2.77556e-17)
-(0 0 -5.55112e-17)
-(2.77556e-17 0 1.38778e-17)
-(2.77556e-17 0 0)
-(-2.77556e-17 2.22045e-16 5.55112e-17)
-(0 0 0)
-(0 -4.44089e-16 -1.38778e-17)
-(0 0 0)
-(-2.77556e-17 0 0)
-(2.77556e-17 0 5.55112e-17)
-(0 0 -1.38778e-17)
-(2.77556e-17 0 0)
-(2.77556e-17 -1.11022e-16 -2.77556e-17)
-(0 0 0)
-(-2.77556e-17 0 -2.77556e-17)
-(2.77556e-17 -1.11022e-16 5.55112e-17)
-(0 -1.11022e-16 0)
-(2.77556e-17 1.11022e-16 0)
-(-2.77556e-17 0 -2.77556e-17)
-(0 0 0)
-(0 -1.11022e-16 -2.77556e-17)
-(2.77556e-17 -1.11022e-16 5.55112e-17)
-(5.55112e-17 0 -1.38778e-17)
-(2.77556e-17 0 0)
-(2.77556e-17 -1.11022e-16 -2.77556e-17)
-(0 1.11022e-16 0)
-(-2.77556e-17 0 -2.77556e-17)
-(2.77556e-17 0 5.55112e-17)
-(2.77556e-17 0 0)
-(-2.77556e-17 0 0)
-(-2.77556e-17 0 -2.77556e-17)
-(2.77556e-17 -1.11022e-16 -5.55112e-17)
-(-2.77556e-17 0 0)
-(2.77556e-17 0 0)
-(-2.77556e-17 0 -2.77556e-17)
-(0 -1.11022e-16 0)
-(2.77556e-17 2.22045e-16 -2.77556e-17)
-(2.77556e-17 -1.11022e-16 -5.55112e-17)
-(0 0 -1.38778e-17)
-(5.55112e-17 -1.11022e-16 0)
-(0 -1.11022e-16 0)
-(-2.77556e-17 0 0)
-(2.77556e-17 -4.44089e-16 1.38778e-17)
-(2.77556e-17 2.22045e-16 -5.55112e-17)
-(0 -1.11022e-16 -2.77556e-17)
-(2.77556e-17 0 0)
-(0 -8.88178e-16 -1.38778e-17)
-(0 -1.11022e-16 0)
-(0 0 -2.77556e-17)
-(0 0 0)
-(-2.77556e-17 0 5.55112e-17)
-(2.77556e-17 0 0)
-(0 0 0)
-(0 2.22045e-16 2.77556e-17)
-(2.77556e-17 0 0)
-(0 0 -2.77556e-17)
-(-2.77556e-17 1.11022e-16 5.55112e-17)
-(2.77556e-17 0 0)
-(0 -1.11022e-16 0)
-(0 0 2.77556e-17)
-(2.77556e-17 0 0)
-(0 0 -2.77556e-17)
-(-2.77556e-17 0 5.55112e-17)
-(0 -1.11022e-16 -2.77556e-17)
-(0 1.11022e-16 -2.77556e-17)
-(0 0 0)
-(0 0 -2.77556e-17)
-(2.77556e-17 0 0)
-(2.77556e-17 -2.22045e-16 -2.77556e-17)
-(-2.77556e-17 0 5.55112e-17)
-(-2.77556e-17 0 2.77556e-17)
-(2.77556e-17 0 -5.55112e-17)
-(-2.77556e-17 2.22045e-16 -2.77556e-17)
-(0 0 -2.77556e-17)
-(5.55112e-17 0 -2.77556e-17)
-(0 -2.22045e-16 0)
-(0 0 -2.77556e-17)
-(5.55112e-17 -4.44089e-16 -2.77556e-17)
-(-2.77556e-17 0 -2.77556e-17)
-(0 0 0)
-(0 -2.22045e-16 2.77556e-17)
-(-2.77556e-17 0 -2.77556e-17)
-(-2.77556e-17 0 2.77556e-17)
-(-2.77556e-17 2.22045e-16 5.55112e-17)
-(-2.77556e-17 -2.22045e-16 -2.77556e-17)
-(0 0 -2.77556e-17)
-(5.55112e-17 -4.44089e-16 -2.77556e-17)
-(-2.77556e-17 -2.22045e-16 -2.77556e-17)
-(0 0 -2.77556e-17)
-(0 2.22045e-16 2.77556e-17)
-(0 0 0)
-(-2.77556e-17 -2.22045e-16 2.77556e-17)
-(2.77556e-17 -4.44089e-16 -5.55112e-17)
-(-2.77556e-17 -2.22045e-16 2.77556e-17)
-(-2.77556e-17 2.22045e-16 2.77556e-17)
-(2.77556e-17 0 -5.55112e-17)
-(-2.77556e-17 -2.22045e-16 -2.77556e-17)
-(-2.77556e-17 2.22045e-16 2.77556e-17)
-(2.77556e-17 -2.22045e-16 -5.55112e-17)
-(0 0 0)
-(2.77556e-17 -2.22045e-16 2.77556e-17)
-(2.77556e-17 4.44089e-16 0)
-(-2.77556e-17 0 -2.77556e-17)
-(2.77556e-17 0 6.93889e-18)
-(2.77556e-17 -1.11022e-16 5.55112e-17)
-(0 0 -2.77556e-17)
-(2.77556e-17 0 -5.55112e-17)
-(0 0 6.93889e-18)
-(0 0 0)
-(0 2.22045e-16 2.77556e-17)
-(2.77556e-17 0 5.55112e-17)
-(2.77556e-17 1.38778e-17 -6.93889e-18)
-(2.77556e-17 0 -5.55112e-17)
-(-2.77556e-17 -2.22045e-16 -2.77556e-17)
-(0 0 0)
-(0 -1.38778e-17 0)
-(2.77556e-17 -3.33067e-16 5.55112e-17)
-(0 -2.22045e-16 0)
-(2.77556e-17 0 -5.55112e-17)
-(2.77556e-17 0 1.38778e-17)
-(0 -1.11022e-16 0)
-(0 0 2.77556e-17)
-(2.77556e-17 0 5.55112e-17)
-(2.77556e-17 -2.77556e-17 1.38778e-17)
-(2.77556e-17 0 -5.55112e-17)
-(-2.77556e-17 -2.22045e-16 -2.77556e-17)
-(0 0 0)
-(2.77556e-17 -2.77556e-17 1.38778e-17)
-(2.77556e-17 -1.11022e-16 5.55112e-17)
-(-2.77556e-17 0 -2.77556e-17)
-(0 -1.11022e-16 0)
-(2.77556e-17 5.55112e-17 -6.93889e-18)
-(0 1.11022e-16 -5.55112e-17)
-(-2.77556e-17 2.22045e-16 5.55112e-17)
-(2.77556e-17 0 0)
-(0 0 6.93889e-18)
-(0 0 0)
-(-2.77556e-17 -2.22045e-16 -2.77556e-17)
-(2.77556e-17 0 -5.55112e-17)
-(0 5.55112e-17 -1.38778e-17)
-(0 -2.22045e-16 -5.55112e-17)
-(0 -2.22045e-16 -2.77556e-17)
-(-2.77556e-17 0 0)
-(0 -5.55112e-17 -1.38778e-17)
-(-2.77556e-17 0 0)
-(0 2.22045e-16 2.77556e-17)
-(0 0 0)
-(0 5.55112e-17 -1.38778e-17)
-(-2.77556e-17 2.22045e-16 0)
-(0 0 -5.55112e-17)
-(0 0 0)
-(0 5.55112e-17 6.93889e-18)
-(0 0 5.55112e-17)
-(0 -4.44089e-16 -2.77556e-17)
-(0 -2.22045e-16 0)
-(2.77556e-17 0 0)
-(0 0 0)
-(5.55112e-17 -2.22045e-16 -2.77556e-17)
-(0 0 5.55112e-17)
-(2.77556e-17 0 0)
-(-2.77556e-17 0 0)
-(-2.77556e-17 0 -2.77556e-17)
-(0 0 0)
-(0 0 6.93889e-18)
-(5.55112e-17 -2.22045e-16 5.55112e-17)
-(-2.77556e-17 0 2.77556e-17)
-(-2.77556e-17 0 0)
-(0 0 0)
-(-2.77556e-17 0 0)
-(2.77556e-17 0 -5.55112e-17)
-(0 0 0)
-(0 0 0)
-(-2.77556e-17 -2.22045e-16 0)
-(-2.77556e-17 0 5.55112e-17)
-(0 0 0)
-(0 0 0)
-(0 -2.22045e-16 5.55112e-17)
-(-2.77556e-17 -2.22045e-16 2.77556e-17)
-(-2.77556e-17 -2.22045e-16 0)
-(0 1.11022e-16 0)
-(0 0 0)
-(2.77556e-17 -6.66134e-16 -5.55112e-17)
-(0 0 5.55112e-17)
-(0 -1.11022e-16 0)
-(0 0 0)
-(-2.77556e-17 0 5.55112e-17)
-(-2.77556e-17 -2.22045e-16 0)
-(0 -1.11022e-16 0)
-(0 0 0)
-(-2.77556e-17 0 2.77556e-17)
-(-2.77556e-17 -2.22045e-16 0)
-(0 -1.11022e-16 0)
-(-2.77556e-17 2.22045e-16 0)
-(2.77556e-17 -4.44089e-16 -5.55112e-17)
-(0 0 0)
-(0 0 0)
-(-2.77556e-17 -2.22045e-16 0)
-(0 0 0)
-(-2.77556e-17 2.22045e-16 0)
-(0 0 0)
-(0 -2.22045e-16 0)
-(5.55112e-17 -2.22045e-16 0)
-(0 0 0)
-(0 0 -6.93889e-18)
-(2.77556e-17 -2.22045e-16 0)
-(2.77556e-17 2.22045e-16 0)
-(0 0 5.55112e-17)
-(0 0 0)
-(-2.77556e-17 0 0)
-(0 0 0)
-(0 0 0)
-(0 0 -6.93889e-18)
-(0 0 5.55112e-17)
-(-2.77556e-17 0 2.77556e-17)
-(-2.77556e-17 -2.22045e-16 0)
-(0 0 0)
-(0 -2.22045e-16 0)
-(2.77556e-17 0 -5.55112e-17)
-(5.55112e-17 -2.22045e-16 5.55112e-17)
-(0 2.22045e-16 0)
-(-2.77556e-17 -2.22045e-16 0)
-(-2.77556e-17 -2.22045e-16 5.55112e-17)
-(-2.77556e-17 0 0)
-(0 0 0)
-(0 -2.22045e-16 0)
-(-2.77556e-17 0 2.77556e-17)
-(-2.77556e-17 -2.22045e-16 0)
-(2.77556e-17 0 6.93889e-18)
-(0 -2.22045e-16 0)
-(2.77556e-17 0 -5.55112e-17)
-(0 -2.22045e-16 5.55112e-17)
-(0 -2.22045e-16 0)
-(0 0 0)
-(-2.77556e-17 0 -2.77556e-17)
-(0 -4.44089e-16 0)
-(2.77556e-17 0 6.93889e-18)
-(0 -2.22045e-16 5.55112e-17)
-(-2.77556e-17 0 2.77556e-17)
-(-2.77556e-17 0 0)
-(2.77556e-17 -2.22045e-16 6.93889e-18)
-(-2.77556e-17 0 0)
-(-2.77556e-17 2.22045e-16 5.55112e-17)
-(0 -2.22045e-16 0)
-(2.77556e-17 0 6.93889e-18)
-(-2.77556e-17 0 0)
-(-2.77556e-17 2.22045e-16 -2.77556e-17)
-(2.77556e-17 -2.22045e-16 6.93889e-18)
-(0 -2.22045e-16 0)
-(0 -2.22045e-16 6.93889e-18)
-(5.55112e-17 -4.44089e-16 -2.77556e-17)
-(-2.77556e-17 0 -6.93889e-18)
-(0 0 -5.55112e-17)
-(0 -2.22045e-16 6.93889e-18)
-(0 -2.22045e-16 -2.77556e-17)
-(0 2.22045e-16 6.93889e-18)
-(5.55112e-17 -6.66134e-16 -2.77556e-17)
-(2.77556e-17 0 6.93889e-18)
-(-2.77556e-17 0 -2.77556e-17)
-(2.77556e-17 -2.22045e-16 6.93889e-18)
-(-2.77556e-17 2.22045e-16 2.77556e-17)
-(2.77556e-17 -2.22045e-16 6.93889e-18)
-(-2.77556e-17 2.22045e-16 5.55112e-17)
-(2.77556e-17 -2.22045e-16 6.93889e-18)
-(-2.77556e-17 0 -2.77556e-17)
-(2.77556e-17 -2.22045e-16 6.93889e-18)
-(-2.77556e-17 0 2.77556e-17)
-(2.77556e-17 -2.22045e-16 6.93889e-18)
-(2.77556e-17 -4.44089e-16 -5.55112e-17)
-(0 0 0)
-(-2.77556e-17 4.44089e-16 -2.77556e-17)
-(0 0 0)
-(-2.77556e-17 0 2.77556e-17)
-(0 -2.22045e-16 6.93889e-18)
-(2.77556e-17 -2.22045e-16 -5.55112e-17)
-(0 0 6.93889e-18)
-(0 0 0)
-(0 0 0)
-(2.77556e-17 6.66134e-16 2.77556e-17)
-(2.77556e-17 0 6.93889e-18)
-(2.77556e-17 0 0)
-(2.77556e-17 -2.22045e-16 6.93889e-18)
-(-2.77556e-17 0 0)
-(2.77556e-17 -6.66134e-16 6.93889e-18)
-(-2.77556e-17 -4.44089e-16 2.77556e-17)
-(2.77556e-17 -2.22045e-16 6.93889e-18)
-(2.77556e-17 -4.44089e-16 -5.55112e-17)
-(2.77556e-17 -2.22045e-16 6.93889e-18)
-(0 -4.44089e-16 0)
-(0 -4.44089e-16 6.93889e-18)
-(-2.77556e-17 4.44089e-16 2.77556e-17)
-(0 2.22045e-16 6.93889e-18)
-(2.77556e-17 -4.44089e-16 -5.55112e-17)
-(0 4.44089e-16 6.93889e-18)
-(0 -4.44089e-16 -2.77556e-17)
-(5.55112e-17 -8.88178e-16 1.38778e-17)
-(-2.77556e-17 4.44089e-16 2.77556e-17)
-(0 -4.44089e-16 -6.93889e-18)
-(2.77556e-17 0 -5.55112e-17)
-(2.77556e-17 0 6.93889e-18)
-(-2.77556e-17 -2.22045e-16 0)
-(-2.77556e-17 0 -2.77556e-17)
-(0 -2.22045e-16 0)
-(2.77556e-17 0 6.93889e-18)
-(-2.77556e-17 0 0)
-(0 4.44089e-16 0)
-(-2.77556e-17 0 0)
-(-2.77556e-17 4.44089e-16 0)
-(0 0 0)
-(0 0 2.77556e-17)
-(0 0 0)
-(2.77556e-17 0 6.93889e-18)
-(5.55112e-17 -2.22045e-16 0)
-(-2.77556e-17 0 -2.77556e-17)
-(-2.77556e-17 4.44089e-16 5.55112e-17)
-(2.77556e-17 -4.44089e-16 6.93889e-18)
-(0 0 0)
-(2.77556e-17 -4.44089e-16 -2.77556e-17)
-(-2.77556e-17 0 0)
-(2.77556e-17 0 6.93889e-18)
-(0 -4.44089e-16 0)
-(-5.55112e-17 0 5.55112e-17)
-(-2.77556e-17 -2.22045e-16 0)
-(5.55112e-17 -4.44089e-16 1.38778e-17)
-(-2.77556e-17 0 0)
-(-2.77556e-17 4.44089e-16 5.55112e-17)
-(0 0 0)
-(0 0 6.93889e-18)
-(-2.77556e-17 0 0)
-(2.77556e-17 -4.44089e-16 -2.77556e-17)
-(-2.77556e-17 0 0)
-(0 4.44089e-16 -6.93889e-18)
-(0 -2.22045e-16 0)
-(-5.55112e-17 4.44089e-16 5.55112e-17)
-(-2.77556e-17 2.22045e-16 0)
-(-2.77556e-17 0 -2.77556e-17)
-(0 -2.22045e-16 0)
-(0 0 0)
-(0 -2.22045e-16 1.11022e-16)
-(0 0 2.77556e-17)
-(0 0 0)
-(-2.77556e-17 0 -2.77556e-17)
-(0 -2.22045e-16 0)
-(0 0 -2.77556e-17)
-(0 -2.22045e-16 5.55112e-17)
-(0 -4.44089e-16 0)
-(-2.77556e-17 0 0)
-(-2.77556e-17 0 -2.77556e-17)
-(-2.77556e-17 2.22045e-16 0)
-(-2.77556e-17 0 2.77556e-17)
-(0 2.22045e-16 0)
-(2.77556e-17 0 -5.55112e-17)
-(-2.77556e-17 0 0)
-(0 4.44089e-16 0)
-(-2.77556e-17 0 0)
-(-2.77556e-17 0 2.77556e-17)
-(0 -2.22045e-16 0)
-(2.77556e-17 -4.44089e-16 -5.55112e-17)
-(-2.77556e-17 4.44089e-16 0)
-(-2.77556e-17 0 0)
-(-2.77556e-17 0 0)
-(-2.77556e-17 0 2.77556e-17)
-(0 -2.22045e-16 0)
-(2.77556e-17 0 -5.55112e-17)
-(0 0 0)
-(0 -4.44089e-16 -2.77556e-17)
-(2.77556e-17 6.66134e-16 0)
-(-2.77556e-17 4.44089e-16 2.77556e-17)
-(0 -4.44089e-16 5.55112e-17)
-(2.77556e-17 -4.44089e-16 -5.55112e-17)
-(-2.77556e-17 0 0)
-(-2.77556e-17 0 -2.77556e-17)
-(-2.77556e-17 -4.44089e-16 0)
-(-2.77556e-17 0 -2.77556e-17)
-(0 0 0)
-(-2.77556e-17 -6.93889e-18 -2.77556e-17)
-(0 -4.44089e-16 0)
-(0 -1.38778e-17 -2.77556e-17)
-(-2.77556e-17 4.44089e-16 0)
-(2.77556e-17 -2.08167e-17 -2.77556e-17)
-(0 4.44089e-16 0)
-(2.77556e-17 -6.93889e-18 -2.77556e-17)
-(0 -4.44089e-16 0)
-(0 1.38778e-17 5.55112e-17)
-(-2.77556e-17 4.44089e-16 0)
-(2.77556e-17 -1.38778e-17 -2.77556e-17)
-(0 4.44089e-16 0)
-(2.77556e-17 -1.38778e-17 0)
-(-2.77556e-17 0 0)
-(2.77556e-17 -1.38778e-17 -5.55112e-17)
-(0 4.44089e-16 0)
-(2.77556e-17 2.77556e-17 0)
-(0 0 1.11022e-16)
-(2.77556e-17 0 -2.77556e-17)
-(-2.77556e-17 0 0)
-(2.77556e-17 -2.77556e-17 -2.77556e-17)
-(2.77556e-17 -4.44089e-16 0)
-(0 0 5.55112e-17)
-(2.77556e-17 -4.44089e-16 5.55112e-17)
-(2.77556e-17 0 -2.77556e-17)
-(-2.77556e-17 4.44089e-16 0)
-(2.77556e-17 -2.77556e-17 -2.77556e-17)
-(2.77556e-17 -4.44089e-16 0)
-(-2.77556e-17 -2.77556e-17 2.77556e-17)
-(2.77556e-17 -4.44089e-16 5.55112e-17)
-(0 8.32667e-17 2.77556e-17)
-(-2.77556e-17 0 0)
-(2.77556e-17 -2.77556e-17 -2.77556e-17)
-(0 0 0)
-(0 8.32667e-17 0)
-(0 -8.88178e-16 1.11022e-16)
-(2.77556e-17 2.77556e-17 -2.77556e-17)
-(-2.77556e-17 0 0)
-(0 0 0)
-(0 0 0)
-(2.77556e-17 0 0)
-(0 0 -5.55112e-17)
-(5.55112e-17 0 -2.77556e-17)
-(-2.77556e-17 0 0)
-(2.77556e-17 0 2.77556e-17)
-(-2.77556e-17 0 0)
-(-2.77556e-17 0 2.77556e-17)
-(0 0 0)
-(2.77556e-17 -5.55112e-17 2.77556e-17)
-(0 4.44089e-16 0)
-(2.77556e-17 -1.11022e-16 -2.77556e-17)
-(-2.77556e-17 0 0)
-(-2.77556e-17 5.55112e-17 2.77556e-17)
-(0 4.44089e-16 0)
-(2.77556e-17 0 2.77556e-17)
-(-2.77556e-17 0 0)
-(2.77556e-17 0 -2.77556e-17)
-(-2.77556e-17 0 0)
-(-2.77556e-17 1.11022e-16 2.77556e-17)
-(0 0 0)
-(2.77556e-17 5.55112e-17 2.77556e-17)
-(0 -4.44089e-16 0)
-(2.77556e-17 -5.55112e-17 -2.77556e-17)
-(-2.77556e-17 4.44089e-16 0)
-(-2.77556e-17 5.55112e-17 2.77556e-17)
-(0 0 0)
-(2.77556e-17 1.73472e-18 -1.73472e-18)
-(2.77556e-17 0 2.77556e-17)
-(2.77556e-17 0 -1.73472e-18)
-(2.77556e-17 -1.66533e-16 2.77556e-17)
-(-2.77556e-17 1.38778e-17 0)
-(2.77556e-17 1.11022e-16 0)
-(0 -1.38778e-17 0)
-(5.55112e-17 -5.55112e-17 -2.77556e-17)
-(0 0 0)
-(2.77556e-17 -5.55112e-17 -2.77556e-17)
-(0 -2.77556e-17 0)
-(2.77556e-17 1.11022e-16 0)
-(0 -8.32667e-17 0)
-(5.55112e-17 -5.55112e-17 -2.77556e-17)
-(5.55112e-17 -2.77556e-17 -3.46945e-18)
-(2.77556e-17 -5.55112e-17 -2.77556e-17)
-(0 0 -1.73472e-18)
-(2.77556e-17 0 0)
-(2.77556e-17 -5.55112e-17 -3.46945e-18)
-(5.55112e-17 -5.55112e-17 -2.77556e-17)
-(2.77556e-17 0 -3.46945e-18)
-(0 2.22045e-16 -2.77556e-17)
-(2.77556e-17 -5.55112e-17 -3.46945e-18)
-(0 0 -5.55112e-17)
-(0 0 -1.73472e-18)
-(0 0 0)
-(2.77556e-17 0 -1.73472e-18)
-(0 -1.11022e-16 -2.77556e-17)
-(2.77556e-17 0 -1.73472e-18)
-(5.55112e-17 -1.11022e-16 -5.55112e-17)
-(0 0 0)
-(0 0 0)
-(0 0 -1.73472e-18)
-(0 0 -2.77556e-17)
-(0 0 0)
-(5.55112e-17 -2.22045e-16 -5.55112e-17)
-(0 0 0)
-(0 0 0)
-(0 0 0)
-(0 0 -2.77556e-17)
-(0 1.11022e-16 0)
-(5.55112e-17 -2.22045e-16 -5.55112e-17)
-(0 1.11022e-16 0)
-(0 0 0)
-(2.77556e-17 0 1.73472e-18)
-(0 0 -2.77556e-17)
-(2.77556e-17 -1.11022e-16 0)
-(5.55112e-17 -2.22045e-16 -5.55112e-17)
-(2.77556e-17 -2.22045e-16 -1.73472e-18)
-(0 0 0)
-(0 0 0)
-(0 0 -2.77556e-17)
-(0 3.33067e-16 -1.73472e-18)
-(0 0 -5.55112e-17)
-(-2.77556e-17 0 0)
-(2.77556e-17 -3.33067e-16 -3.46945e-18)
-(-2.77556e-17 3.46945e-18 0)
-(0 -1.11022e-16 2.77556e-17)
-(-2.77556e-17 -6.93889e-18 2.77556e-17)
-(0 -2.22045e-16 -1.73472e-18)
-(0 -1.38778e-17 5.55112e-17)
-(0 -2.22045e-16 -5.55112e-17)
-(2.77556e-17 -6.93889e-18 2.77556e-17)
-(0 2.22045e-16 -1.73472e-18)
-(2.77556e-17 6.93889e-18 2.77556e-17)
-(0 -1.11022e-16 -5.55112e-17)
-(0 1.38778e-17 -2.77556e-17)
-(2.77556e-17 0 -1.73472e-18)
-(2.77556e-17 -1.38778e-17 0)
-(2.77556e-17 -1.11022e-16 -2.77556e-17)
-(2.77556e-17 -1.38778e-17 2.77556e-17)
-(2.77556e-17 0 -1.73472e-18)
-(2.77556e-17 -1.38778e-17 2.77556e-17)
-(0 -2.22045e-16 -2.77556e-17)
-(2.77556e-17 0 2.77556e-17)
-(-2.77556e-17 2.22045e-16 1.73472e-18)
-(2.77556e-17 0 -2.77556e-17)
-(0 -1.11022e-16 -5.55112e-17)
-(2.77556e-17 -2.77556e-17 0)
-(2.77556e-17 0 1.73472e-18)
-(0 0 -5.55112e-17)
-(0 0 2.77556e-17)
-(2.77556e-17 0 0)
-(2.77556e-17 -2.22045e-16 -1.73472e-18)
-(2.77556e-17 -2.77556e-17 0)
-(0 -4.44089e-16 -5.55112e-17)
-(-2.77556e-17 -2.77556e-17 -2.77556e-17)
-(2.77556e-17 0 0)
-(0 8.32667e-17 0)
-(5.55112e-17 -2.22045e-16 -2.77556e-17)
-(2.77556e-17 -5.55112e-17 0)
-(0 0 1.73472e-18)
-(0 8.32667e-17 -5.55112e-17)
-(0 -1.11022e-16 0)
-(2.77556e-17 2.77556e-17 -5.55112e-17)
-(0 2.22045e-16 -1.73472e-18)
-(0 0 0)
-(0 0 -2.77556e-17)
-(0 5.55112e-17 -5.55112e-17)
-(2.77556e-17 2.22045e-16 0)
-(5.55112e-17 0 2.77556e-17)
-(2.77556e-17 -2.22045e-16 0)
-(2.77556e-17 0 2.77556e-17)
-(-5.55112e-17 2.22045e-16 1.73472e-18)
-(-2.77556e-17 -5.55112e-17 -2.77556e-17)
-(2.77556e-17 1.11022e-16 -2.77556e-17)
-(5.55112e-17 -1.11022e-16 2.77556e-17)
-(2.77556e-17 0 1.73472e-18)
-(2.77556e-17 -1.11022e-16 2.77556e-17)
-(0 0 -2.77556e-17)
-(-2.77556e-17 0 -2.77556e-17)
-(0 2.22045e-16 1.73472e-18)
-(5.55112e-17 -5.55112e-17 2.77556e-17)
-(5.55112e-17 -2.22045e-16 -2.77556e-17)
-(2.77556e-17 0 2.77556e-17)
-(0 -2.22045e-16 -1.73472e-18)
-(-2.77556e-17 5.55112e-17 -2.77556e-17)
-(0 0 0)
-(5.55112e-17 0 2.77556e-17)
-(2.77556e-17 -4.44089e-16 1.73472e-18)
-(2.77556e-17 -5.55112e-17 2.77556e-17)
-(0 0 -2.77556e-17)
-(-2.77556e-17 0 -2.77556e-17)
-(2.77556e-17 -2.22045e-16 1.73472e-18)
-(5.55112e-17 -5.55112e-17 2.77556e-17)
-(2.77556e-17 -1.11022e-16 0)
-(2.77556e-17 -1.66533e-16 2.77556e-17)
-(-2.77556e-17 -2.22045e-16 1.73472e-18)
-(0 1.11022e-16 -5.55112e-17)
-(2.77556e-17 -1.11022e-16 -2.77556e-17)
-(5.55112e-17 -1.11022e-16 2.77556e-17)
-(2.77556e-17 -2.22045e-16 0)
-(-2.77556e-17 0 0)
-(0 0 -2.77556e-17)
-(0 1.66533e-16 -5.55112e-17)
-(2.77556e-17 -2.22045e-16 -1.73472e-18)
-(5.55112e-17 -1.66533e-16 2.77556e-17)
-(5.55112e-17 -2.22045e-16 -2.77556e-17)
-(-2.77556e-17 5.55112e-17 0)
-(2.77556e-17 -4.44089e-16 -1.73472e-18)
-(0 5.55112e-17 -5.55112e-17)
-(0 0 0)
-(5.55112e-17 -5.55112e-17 2.77556e-17)
-(2.77556e-17 -2.22045e-16 -1.73472e-18)
-(0 2.22045e-16 0)
-(0 0 -2.77556e-17)
-(0 0 0)
-(2.77556e-17 0 0)
-(0 0 0)
-(0 0 -5.55112e-17)
-(0 -1.11022e-16 2.77556e-17)
-(0 -4.44089e-16 -1.73472e-18)
-(5.55112e-17 -1.11022e-16 2.77556e-17)
-(0 0 0)
-(0 0 0)
-(0 2.22045e-16 -1.73472e-18)
-(2.77556e-17 -1.11022e-16 2.77556e-17)
-(0 2.22045e-16 -2.77556e-17)
-(5.55112e-17 -2.22045e-16 2.77556e-17)
-(2.77556e-17 -2.22045e-16 1.73472e-18)
-(0 0 0)
-(0 0 -2.77556e-17)
-(2.77556e-17 -1.11022e-16 2.77556e-17)
-(2.77556e-17 -4.44089e-16 0)
-(5.55112e-17 -2.22045e-16 2.77556e-17)
-(2.77556e-17 -2.22045e-16 -2.77556e-17)
-(0 0 0)
-(2.77556e-17 2.22045e-16 1.73472e-18)
-(2.77556e-17 -1.11022e-16 2.77556e-17)
-(2.77556e-17 -2.22045e-16 -5.55112e-17)
-(5.55112e-17 0 2.77556e-17)
-(2.77556e-17 0 1.73472e-18)
-(0 1.11022e-16 0)
-(2.77556e-17 0 -2.77556e-17)
-(0 0 5.55112e-17)
-(0 6.66134e-16 -1.73472e-18)
-(0 0 0)
-(2.77556e-17 2.22045e-16 -2.77556e-17)
-(0 -1.11022e-16 -5.55112e-17)
-(0 2.22045e-16 -1.73472e-18)
-(0 -2.22045e-16 2.77556e-17)
-(2.77556e-17 0 0)
-(0 -1.11022e-16 0)
-(-2.77556e-17 0 1.73472e-18)
-(2.77556e-17 -1.11022e-16 2.77556e-17)
-(2.77556e-17 0 -8.32667e-17)
-(0 -2.22045e-16 5.55112e-17)
-(-2.77556e-17 -4.44089e-16 1.73472e-18)
-(0 -1.11022e-16 0)
-(2.77556e-17 0 -2.77556e-17)
-(0 0 -5.55112e-17)
-(0 0 0)
-(0 -4.44089e-16 2.77556e-17)
-(2.77556e-17 2.22045e-16 0)
-(5.55112e-17 -1.11022e-16 2.77556e-17)
-(2.77556e-17 0 1.73472e-18)
-(2.77556e-17 2.22045e-16 -8.32667e-17)
-(2.77556e-17 0 1.73472e-18)
-(2.77556e-17 -4.44089e-16 -2.77556e-17)
-(0 0 0)
-(2.77556e-17 2.22045e-16 0)
-(2.77556e-17 0 1.73472e-18)
-(0 2.22045e-16 2.77556e-17)
-(2.77556e-17 -4.44089e-16 1.73472e-18)
-(2.77556e-17 -2.22045e-16 2.77556e-17)
-(2.77556e-17 0 1.73472e-18)
-(2.77556e-17 0 0)
-(-2.77556e-17 -4.44089e-16 1.73472e-18)
-(-2.77556e-17 2.22045e-16 8.32667e-17)
-(-2.77556e-17 0 1.73472e-18)
-(0 0 2.77556e-17)
-(0 0 0)
-(2.77556e-17 2.22045e-16 0)
-(2.77556e-17 -2.22045e-16 -8.32667e-17)
-(2.77556e-17 -2.22045e-16 -2.77556e-17)
-(2.77556e-17 0 0)
-(0 -2.22045e-16 -5.55112e-17)
-(2.77556e-17 -2.22045e-16 -2.77556e-17)
-(2.77556e-17 2.22045e-16 2.77556e-17)
-(2.77556e-17 -2.22045e-16 -2.77556e-17)
-(2.77556e-17 -2.22045e-16 -2.77556e-17)
-(2.77556e-17 0 -2.77556e-17)
-(2.77556e-17 0 -2.77556e-17)
-(2.77556e-17 0 -2.77556e-17)
-(2.77556e-17 0 -5.55112e-17)
-(2.77556e-17 -2.22045e-16 -2.77556e-17)
-(2.77556e-17 0 -2.77556e-17)
-(2.77556e-17 -2.22045e-16 2.77556e-17)
-(2.77556e-17 0 -8.32667e-17)
-(5.55112e-17 0 -5.55112e-17)
-(2.77556e-17 0 0)
-(2.77556e-17 -2.22045e-16 -8.32667e-17)
-(2.77556e-17 0 -2.77556e-17)
-(2.77556e-17 -2.22045e-16 0)
-(0 0 2.77556e-17)
-(2.77556e-17 -2.22045e-16 2.77556e-17)
-(2.77556e-17 -2.22045e-16 0)
-(-2.77556e-17 4.44089e-16 8.32667e-17)
-(0 -2.22045e-16 2.77556e-17)
-(2.77556e-17 -2.22045e-16 0)
-(2.77556e-17 -4.44089e-16 -8.32667e-17)
-(2.77556e-17 0 -2.77556e-17)
-(5.55112e-17 -2.22045e-16 -5.55112e-17)
-(2.77556e-17 -2.22045e-16 -8.32667e-17)
-(2.77556e-17 0 -2.77556e-17)
-(2.77556e-17 -2.22045e-16 0)
-(2.77556e-17 -2.22045e-16 -2.77556e-17)
-(2.77556e-17 0 -2.77556e-17)
-(2.77556e-17 -2.22045e-16 -5.55112e-17)
-(0 1.11022e-16 2.77556e-17)
-(2.77556e-17 -2.22045e-16 -2.77556e-17)
-(2.77556e-17 -2.22045e-16 2.77556e-17)
-(2.77556e-17 0 -2.77556e-17)
-(2.77556e-17 -2.22045e-16 2.77556e-17)
-(2.77556e-17 2.22045e-16 -5.55112e-17)
-(2.77556e-17 1.11022e-16 5.55112e-17)
-(2.77556e-17 -4.44089e-16 -2.77556e-17)
-(0 0 2.77556e-17)
-(2.77556e-17 2.22045e-16 -2.77556e-17)
-(5.55112e-17 -2.22045e-16 2.77556e-17)
-(2.77556e-17 0 2.77556e-17)
-(0 0 2.77556e-17)
-(2.77556e-17 0 -2.77556e-17)
-(2.77556e-17 -1.11022e-16 2.77556e-17)
-(5.55112e-17 0 -5.55112e-17)
-(2.77556e-17 -1.11022e-16 2.77556e-17)
-(2.77556e-17 -2.22045e-16 2.77556e-17)
-(2.77556e-17 -1.11022e-16 5.55112e-17)
-(2.77556e-17 -2.22045e-16 -2.77556e-17)
-(0 1.11022e-16 2.77556e-17)
-(2.77556e-17 0 -2.77556e-17)
-(5.55112e-17 -2.22045e-16 2.77556e-17)
-(2.77556e-17 -4.44089e-16 -5.55112e-17)
-(0 0 2.77556e-17)
-(2.77556e-17 0 -2.77556e-17)
-(0 0 2.77556e-17)
-(2.77556e-17 2.22045e-16 -2.77556e-17)
-(0 0 0)
-(2.77556e-17 0 0)
-(0 0 0)
-(-2.77556e-17 4.44089e-16 8.32667e-17)
-(0 0 2.77556e-17)
-(0 -2.22045e-16 2.77556e-17)
-(0 0 2.77556e-17)
-(-2.77556e-17 0 0)
-(0 0 2.77556e-17)
-(2.77556e-17 0 0)
-(0 0 -2.77556e-17)
-(-2.77556e-17 6.93889e-18 1.38778e-17)
-(0 2.22045e-16 2.77556e-17)
-(2.77556e-17 -2.22045e-16 -8.32667e-17)
-(2.77556e-17 2.22045e-16 0)
-(0 0 0)
-(2.77556e-17 2.22045e-16 2.77556e-17)
-(2.77556e-17 -2.22045e-16 -5.55112e-17)
-(2.77556e-17 0 2.77556e-17)
-(2.77556e-17 -1.38778e-17 -6.93889e-18)
-(2.77556e-17 0 -2.77556e-17)
-(5.55112e-17 2.22045e-16 -2.77556e-17)
-(2.77556e-17 2.22045e-16 2.77556e-17)
-(5.55112e-17 -2.77556e-17 -1.38778e-17)
-(2.77556e-17 2.22045e-16 2.77556e-17)
-(2.77556e-17 2.22045e-16 -8.32667e-17)
-(2.77556e-17 -4.44089e-16 -2.77556e-17)
-(5.55112e-17 -8.32667e-17 -1.38778e-17)
-(2.77556e-17 2.22045e-16 2.77556e-17)
-(2.77556e-17 -4.44089e-16 -2.77556e-17)
-(-2.77556e-17 4.44089e-16 -5.55112e-17)
-(5.55112e-17 -2.77556e-17 -1.38778e-17)
-(2.77556e-17 -2.22045e-16 2.77556e-17)
-(2.77556e-17 2.22045e-16 0)
-(2.77556e-17 0 2.77556e-17)
-(0 2.77556e-17 6.93889e-18)
-(0 0 -2.77556e-17)
-(-2.77556e-17 2.22045e-16 8.32667e-17)
-(2.77556e-17 -2.22045e-16 5.55112e-17)
-(2.77556e-17 0 -6.93889e-18)
-(2.77556e-17 2.22045e-16 2.77556e-17)
-(0 0 2.77556e-17)
-(2.77556e-17 -2.22045e-16 2.77556e-17)
-(-2.77556e-17 0 1.38778e-17)
-(2.77556e-17 -2.22045e-16 -2.77556e-17)
-(2.77556e-17 0 0)
-(2.77556e-17 0 2.77556e-17)
-(-2.77556e-17 -5.55112e-17 1.38778e-17)
-(2.77556e-17 -2.22045e-16 2.77556e-17)
-(2.77556e-17 2.22045e-16 -2.77556e-17)
-(2.77556e-17 -2.22045e-16 0)
-(-2.77556e-17 5.55112e-17 1.38778e-17)
-(2.77556e-17 2.22045e-16 2.77556e-17)
-(2.77556e-17 -2.22045e-16 -2.77556e-17)
-(0 0 2.77556e-17)
-(2.77556e-17 -1.66533e-16 -6.93889e-18)
-(2.77556e-17 -2.22045e-16 0)
-(2.77556e-17 0 -5.55112e-17)
-(2.77556e-17 0 -2.77556e-17)
-(0 5.55112e-17 6.93889e-18)
-(0 0 2.77556e-17)
-(2.77556e-17 -2.22045e-16 -2.77556e-17)
-(2.77556e-17 0 0)
-(0 1.11022e-16 6.93889e-18)
-(0 0 -2.77556e-17)
-(2.77556e-17 0 -2.77556e-17)
-(0 0 2.77556e-17)
-(5.55112e-17 -1.11022e-16 -1.38778e-17)
-(2.77556e-17 0 0)
-(2.77556e-17 2.22045e-16 2.77556e-17)
-(2.77556e-17 -2.22045e-16 2.77556e-17)
-(0 -1.11022e-16 -6.93889e-18)
-(2.77556e-17 0 2.77556e-17)
-(2.77556e-17 -4.44089e-16 -8.32667e-17)
-(5.55112e-17 0 2.77556e-17)
-(0 0 0)
-(2.77556e-17 0 2.77556e-17)
-(5.55112e-17 -4.44089e-16 -5.55112e-17)
-(2.77556e-17 0 2.77556e-17)
-(0 0 0)
-(2.77556e-17 2.22045e-16 -2.77556e-17)
-(-2.77556e-17 0 5.55112e-17)
-(2.77556e-17 -2.22045e-16 2.77556e-17)
-(0 -1.11022e-16 0)
-(-2.77556e-17 2.22045e-16 -5.55112e-17)
-(2.77556e-17 -4.44089e-16 -2.77556e-17)
-(2.77556e-17 -2.22045e-16 2.77556e-17)
-(0 1.11022e-16 -6.93889e-18)
-(2.77556e-17 -2.22045e-16 2.77556e-17)
-(2.77556e-17 0 -2.77556e-17)
-(0 2.22045e-16 -2.77556e-17)
-(0 0 -6.93889e-18)
-(2.77556e-17 -4.44089e-16 5.55112e-17)
-(2.77556e-17 4.44089e-16 2.77556e-17)
-(2.77556e-17 0 2.77556e-17)
-(0 -1.11022e-16 -6.93889e-18)
-(2.77556e-17 -4.44089e-16 2.77556e-17)
-(2.77556e-17 0 -2.77556e-17)
-(2.77556e-17 0 -2.77556e-17)
-(0 1.11022e-16 -6.93889e-18)
-(5.55112e-17 -2.22045e-16 5.55112e-17)
-(2.77556e-17 4.44089e-16 -2.77556e-17)
-(2.77556e-17 -4.44089e-16 2.77556e-17)
-(0 0 0)
-(2.77556e-17 -2.22045e-16 -2.77556e-17)
-(0 -4.44089e-16 -2.77556e-17)
-(2.77556e-17 -2.22045e-16 2.77556e-17)
-(0 0 0)
-(0 0 2.77556e-17)
-(2.77556e-17 0 -2.77556e-17)
-(2.77556e-17 0 0)
-(0 0 0)
-(0 0 -2.77556e-17)
-(2.77556e-17 0 -2.77556e-17)
-(0 0 0)
-(2.77556e-17 0 0)
-(0 -1.11022e-16 -6.93889e-18)
-(2.77556e-17 -4.44089e-16 -8.32667e-17)
-(0 0 -6.93889e-18)
-(2.77556e-17 -4.44089e-16 -5.55112e-17)
-(0 2.22045e-16 1.38778e-17)
-(2.77556e-17 -4.44089e-16 0)
-(0 -2.22045e-16 0)
-(5.55112e-17 0 -1.11022e-16)
-(2.77556e-17 0 -6.93889e-18)
-(-2.77556e-17 0 0)
-(0 0 0)
-(0 0 2.77556e-17)
-(0 0 0)
-(5.55112e-17 -4.44089e-16 -1.11022e-16)
-(0 0 0)
-(-2.77556e-17 4.44089e-16 0)
-(0 0 0)
-(2.77556e-17 0 0)
-(2.77556e-17 0 -6.93889e-18)
-(2.77556e-17 -8.88178e-16 -8.32667e-17)
-(0 2.22045e-16 6.93889e-18)
-(2.77556e-17 4.44089e-16 -5.55112e-17)
-(0 4.44089e-16 1.38778e-17)
-(2.77556e-17 0 0)
-(2.77556e-17 -2.22045e-16 -6.93889e-18)
-(0 0 -2.77556e-17)
-(0 0 0)
-(0 0 -2.77556e-17)
-(0 -2.22045e-16 0)
-(2.77556e-17 4.44089e-16 0)
-(0 -2.22045e-16 0)
-(2.77556e-17 -4.44089e-16 -2.77556e-17)
-(0 0 0)
-(2.77556e-17 0 -2.77556e-17)
-(2.77556e-17 -2.22045e-16 -6.93889e-18)
-(2.77556e-17 0 2.77556e-17)
-(0 0 0)
-(2.77556e-17 -4.44089e-16 -2.77556e-17)
-(0 2.22045e-16 1.38778e-17)
-(2.77556e-17 0 -2.77556e-17)
-(0 -2.22045e-16 1.38778e-17)
-(-2.77556e-17 4.44089e-16 5.55112e-17)
-(2.77556e-17 2.22045e-16 -6.93889e-18)
-(2.77556e-17 0 -2.77556e-17)
-(2.77556e-17 -2.22045e-16 -6.93889e-18)
-(2.77556e-17 0 -2.77556e-17)
-(0 2.22045e-16 1.38778e-17)
-(0 0 -2.77556e-17)
-(0 0 0)
-(2.77556e-17 -4.44089e-16 -2.77556e-17)
-(0 0 0)
-(0 0 2.77556e-17)
-(2.77556e-17 0 -2.77556e-17)
-(2.77556e-17 4.44089e-16 0)
-(2.77556e-17 -4.44089e-16 -6.93889e-18)
-(0 2.22045e-16 -2.77556e-17)
-(2.77556e-17 0 -5.55112e-17)
-(0 2.22045e-16 2.77556e-17)
-(0 0 0)
-(2.77556e-17 2.22045e-16 0)
-(2.77556e-17 6.93889e-18 5.55112e-17)
-(2.77556e-17 -4.44089e-16 2.77556e-17)
-(0 2.22045e-16 0)
-(2.77556e-17 0 2.77556e-17)
-(0 0 5.55112e-17)
-(5.55112e-17 0 5.55112e-17)
-(0 4.44089e-16 1.38778e-17)
-(2.77556e-17 -2.22045e-16 2.77556e-17)
-(2.77556e-17 -6.93889e-18 0)
-(0 0 2.77556e-17)
-(2.77556e-17 -2.22045e-16 -6.93889e-18)
-(2.77556e-17 0 0)
-(0 0 0)
-(0 -2.22045e-16 -2.77556e-17)
-(5.55112e-17 0 -1.38778e-17)
-(0 -2.22045e-16 2.77556e-17)
-(0 0 0)
-(2.77556e-17 2.22045e-16 0)
-(2.77556e-17 -4.44089e-16 -6.93889e-18)
-(2.77556e-17 0 2.77556e-17)
-(5.55112e-17 0 0)
-(0 2.22045e-16 -2.77556e-17)
-(0 0 0)
-(2.77556e-17 -6.66134e-16 5.55112e-17)
-(-2.77556e-17 0 5.55112e-17)
-(2.77556e-17 0 2.77556e-17)
-(0 0 0)
-(2.77556e-17 -2.22045e-16 -2.77556e-17)
-(2.77556e-17 0 -5.55112e-17)
-(2.77556e-17 -2.22045e-16 -2.77556e-17)
-(0 0 0)
-(5.55112e-17 2.22045e-16 5.55112e-17)
-(0 -1.38778e-17 0)
-(2.77556e-17 2.22045e-16 2.77556e-17)
-(2.77556e-17 0 6.93889e-18)
-(2.77556e-17 -4.44089e-16 -2.77556e-17)
-(0 0 0)
-(2.77556e-17 2.22045e-16 2.77556e-17)
-(0 4.44089e-16 0)
-(0 0 -2.77556e-17)
-(0 0 5.55112e-17)
-(2.77556e-17 -4.44089e-16 5.55112e-17)
-(0 4.44089e-16 0)
-(2.77556e-17 0 2.77556e-17)
-(-2.77556e-17 -2.77556e-17 0)
-(0 4.44089e-16 2.77556e-17)
-(0 0 0)
-(2.77556e-17 -2.22045e-16 0)
-(0 -2.77556e-17 -5.55112e-17)
-(0 2.22045e-16 -2.77556e-17)
-(2.77556e-17 -4.44089e-16 -6.93889e-18)
-(0 0 2.77556e-17)
-(-2.77556e-17 0 0)
-(2.77556e-17 0 0)
-(5.55112e-17 -8.88178e-16 -1.38778e-17)
-(2.77556e-17 2.22045e-16 2.77556e-17)
-(-2.77556e-17 0 0)
-(2.77556e-17 -4.44089e-16 2.77556e-17)
-(0 0 0)
-(5.55112e-17 -4.44089e-16 2.77556e-17)
-(0 0 0)
-(-2.77556e-17 0 0)
-(0 0 0)
-(0 0 2.77556e-17)
-(-2.77556e-17 -2.77556e-17 0)
-(2.77556e-17 0 0)
-(0 -2.77556e-17 -5.55112e-17)
-(2.77556e-17 0 5.55112e-17)
-(-2.77556e-17 0 0)
-(0 0 2.77556e-17)
-(0 0 0)
-(2.77556e-17 4.44089e-16 0)
-(0 -5.55112e-17 -5.55112e-17)
-(0 0 2.77556e-17)
-(-2.77556e-17 0 0)
-(0 0 2.77556e-17)
-(0 0 -5.55112e-17)
-(2.77556e-17 0 0)
-(0 -1.11022e-16 -5.55112e-17)
-(2.77556e-17 0 2.77556e-17)
-(0 5.55112e-17 0)
-(2.77556e-17 -4.44089e-16 -2.77556e-17)
-(2.77556e-17 0 -5.55112e-17)
-(2.77556e-17 -4.44089e-16 -2.77556e-17)
-(0 -5.55112e-17 -5.55112e-17)
-(2.77556e-17 -4.44089e-16 2.77556e-17)
-(0 5.55112e-17 0)
-(5.55112e-17 0 2.77556e-17)
-(2.77556e-17 -5.55112e-17 -5.55112e-17)
-(-2.77556e-17 0 -5.55112e-17)
-(0 -5.55112e-17 -5.55112e-17)
-(0 0 -2.77556e-17)
-(0 0 0)
-(5.55112e-17 -4.44089e-16 2.77556e-17)
-(2.77556e-17 0 -5.55112e-17)
-(-2.77556e-17 4.44089e-16 -5.55112e-17)
-(0 -1.66533e-16 -5.55112e-17)
-(2.77556e-17 0 2.77556e-17)
-(0 0 0)
-(2.77556e-17 -8.88178e-16 -2.77556e-17)
-(0 -5.55112e-17 -5.55112e-17)
-(2.77556e-17 4.44089e-16 -2.77556e-17)
-(0 0 -5.55112e-17)
-(2.77556e-17 0 2.77556e-17)
-(-2.77556e-17 0 0)
-(0 0 2.77556e-17)
-(-2.77556e-17 1.11022e-16 0)
-(0 0 2.77556e-17)
-(0 -5.55112e-17 -5.55112e-17)
-(2.77556e-17 4.44089e-16 2.77556e-17)
-(-2.77556e-17 5.55112e-17 0)
-(0 4.44089e-16 2.77556e-17)
-(-2.77556e-17 0 0)
-(2.77556e-17 0 0)
-(0 -1.11022e-16 -5.55112e-17)
-(2.77556e-17 0 5.55112e-17)
-(-2.77556e-17 0 0)
-(0 0 2.77556e-17)
-(2.77556e-17 -1.11022e-16 -5.55112e-17)
-(2.77556e-17 0 0)
-(2.77556e-17 0 0)
-(-2.77556e-17 4.44089e-16 0)
-(0 0 -5.55112e-17)
-(0 0 2.77556e-17)
-(2.77556e-17 0 0)
-(2.77556e-17 0 0)
-(-5.55112e-17 1.11022e-16 -5.55112e-17)
-(0 0 2.77556e-17)
-(0 0 0)
-(0 0 2.77556e-17)
-(0 -1.11022e-16 5.55112e-17)
-(2.77556e-17 0 0)
-(-5.55112e-17 0 -5.55112e-17)
-(0 0 0)
-(0 -1.11022e-16 5.55112e-17)
-(-5.55112e-17 1.11022e-16 -5.55112e-17)
-(0 -2.22045e-16 0)
-(0 -1.11022e-16 5.55112e-17)
-(-5.55112e-17 0 -5.55112e-17)
-(0 -1.11022e-16 0)
-(-2.77556e-17 0 5.55112e-17)
-(5.55112e-17 -1.11022e-16 -5.55112e-17)
-(-2.77556e-17 0 0)
-(2.77556e-17 -2.22045e-16 5.55112e-17)
-(5.55112e-17 -1.11022e-16 -5.55112e-17)
-(2.77556e-17 -1.11022e-16 -5.55112e-17)
-(-2.77556e-17 1.11022e-16 5.55112e-17)
-(5.55112e-17 -1.11022e-16 -5.55112e-17)
-(-2.77556e-17 -1.11022e-16 0)
-(2.77556e-17 0 5.55112e-17)
-(0 1.73472e-18 0)
-(-5.55112e-17 0 -5.55112e-17)
-(-2.77556e-17 6.93889e-18 -1.38778e-17)
-(0 0 0)
-(2.77556e-17 -1.38778e-17 0)
-(0 0 5.55112e-17)
-(2.77556e-17 -1.38778e-17 -1.38778e-17)
-(0 0 -5.55112e-17)
-(8.32667e-17 -2.77556e-17 -2.77556e-17)
-(0 -2.22045e-16 0)
-(8.32667e-17 -8.32667e-17 -2.77556e-17)
-(2.77556e-17 -1.11022e-16 0)
-(8.32667e-17 -8.32667e-17 -2.77556e-17)
-(-5.55112e-17 1.11022e-16 -5.55112e-17)
-(2.77556e-17 2.77556e-17 1.38778e-17)
-(0 0 0)
-(0 0 1.38778e-17)
-(0 -1.11022e-16 5.55112e-17)
-(0 -5.55112e-17 2.77556e-17)
-(0 -3.33067e-16 -5.55112e-17)
-(0 -1.11022e-16 2.77556e-17)
-(0 -1.11022e-16 0)
-(0 0 2.77556e-17)
-(2.77556e-17 -1.11022e-16 0)
-(0 -5.55112e-17 1.38778e-17)
-(-5.55112e-17 0 -5.55112e-17)
-(2.77556e-17 0 -1.38778e-17)
-(0 0 0)
-(2.77556e-17 1.11022e-16 -1.38778e-17)
-(2.77556e-17 -2.22045e-16 0)
-(5.55112e-17 -1.11022e-16 -2.77556e-17)
-(2.77556e-17 -1.11022e-16 0)
-(-2.77556e-17 0 0)
-(0 -1.11022e-16 -5.55112e-17)
-(0 0 1.38778e-17)
-(2.77556e-17 -2.22045e-16 0)
-(-2.77556e-17 -1.73472e-18 0)
-(0 0 1.38778e-17)
-(-2.77556e-17 3.46945e-18 -2.77556e-17)
-(0 -2.22045e-16 -1.11022e-16)
-(0 0 2.77556e-17)
-(0 -1.11022e-16 1.38778e-17)
-(0 0 -2.77556e-17)
-(2.77556e-17 2.22045e-16 0)
-(2.77556e-17 6.93889e-18 2.77556e-17)
-(0 0 1.38778e-17)
-(0 0 2.77556e-17)
-(0 0 0)
-(0 0 2.77556e-17)
-(0 -1.11022e-16 -1.38778e-17)
-(0 0 0)
-(2.77556e-17 0 0)
-(2.77556e-17 0 2.77556e-17)
-(0 -2.22045e-16 1.38778e-17)
-(5.55112e-17 -1.38778e-17 2.77556e-17)
-(-2.77556e-17 0 0)
-(2.77556e-17 -2.77556e-17 2.77556e-17)
-(0 1.11022e-16 -1.38778e-17)
-(0 0 2.77556e-17)
-(0 -2.22045e-16 0)
-(2.77556e-17 0 0)
-(0 0 1.38778e-17)
-(0 0 -2.77556e-17)
-(-2.77556e-17 0 5.55112e-17)
-(-2.77556e-17 0 -5.55112e-17)
-(0 0 0)
-(2.77556e-17 0 0)
-(0 0 0)
-(-2.77556e-17 -2.77556e-17 2.77556e-17)
-(0 1.11022e-16 1.38778e-17)
-(0 0 2.77556e-17)
-(0 0 -5.55112e-17)
-(2.77556e-17 -5.55112e-17 0)
-(0 0 0)
-(2.77556e-17 5.55112e-17 -5.55112e-17)
-(-2.77556e-17 0 5.55112e-17)
-(-2.77556e-17 0 -5.55112e-17)
-(-2.77556e-17 1.11022e-16 0)
-(-2.77556e-17 2.77556e-17 0)
-(0 -2.22045e-16 0)
-(2.77556e-17 5.55112e-17 -5.55112e-17)
-(-2.77556e-17 3.33067e-16 0)
-(-2.77556e-17 0 -2.77556e-17)
-(0 2.22045e-16 0)
-(5.55112e-17 0 2.77556e-17)
-(0 0 1.38778e-17)
-(0 -1.11022e-16 -2.77556e-17)
-(5.55112e-17 0 0)
-(0 5.55112e-17 -5.55112e-17)
-(2.77556e-17 -2.22045e-16 -1.38778e-17)
-(0 -5.55112e-17 0)
-(-2.77556e-17 0 0)
-(0 0 -2.77556e-17)
-(2.77556e-17 0 -1.38778e-17)
-(0 5.55112e-17 -5.55112e-17)
-(0 -2.22045e-16 0)
-(0 5.55112e-17 0)
-(2.77556e-17 0 -1.38778e-17)
-(0 0 -2.77556e-17)
-(5.55112e-17 -4.44089e-16 0)
-(0 0 -5.55112e-17)
-(2.77556e-17 -2.22045e-16 -1.38778e-17)
-(0 0 0)
-(-2.77556e-17 0 0)
-(0 -5.55112e-17 -2.77556e-17)
-(2.77556e-17 0 -1.38778e-17)
-(0 0 -5.55112e-17)
-(0 0 0)
-(5.55112e-17 -2.22045e-16 2.77556e-17)
-(2.77556e-17 -2.22045e-16 -1.38778e-17)
-(2.77556e-17 0 -2.77556e-17)
-(-2.77556e-17 0 5.55112e-17)
-(-2.77556e-17 0 -2.77556e-17)
-(0 2.22045e-16 1.38778e-17)
-(-5.55112e-17 5.55112e-17 0)
-(0 0 0)
-(2.77556e-17 1.11022e-16 -2.77556e-17)
-(0 0 1.38778e-17)
-(-2.77556e-17 5.55112e-17 -2.77556e-17)
-(0 0 0)
-(-5.55112e-17 0 0)
-(0 2.22045e-16 1.38778e-17)
-(2.77556e-17 0 -2.77556e-17)
-(-2.77556e-17 0 5.55112e-17)
-(-2.77556e-17 0 -2.77556e-17)
-(0 0 1.38778e-17)
-(-2.77556e-17 2.22045e-16 -5.55112e-17)
-(0 0 0)
-(0 0 2.77556e-17)
-(2.77556e-17 -2.22045e-16 -1.38778e-17)
-(0 0 2.77556e-17)
-(0 -2.22045e-16 -5.55112e-17)
-(2.77556e-17 -1.11022e-16 2.77556e-17)
-(2.77556e-17 -4.44089e-16 -1.38778e-17)
-(5.55112e-17 -1.11022e-16 5.55112e-17)
-(2.77556e-17 0 0)
-(0 0 0)
-(2.77556e-17 -4.44089e-16 -1.38778e-17)
-(2.77556e-17 -1.11022e-16 2.77556e-17)
-(-2.77556e-17 -2.22045e-16 0)
-(5.55112e-17 -2.22045e-16 5.55112e-17)
-(2.77556e-17 -2.22045e-16 -1.38778e-17)
-(0 0 0)
-(5.55112e-17 0 -5.55112e-17)
-(2.77556e-17 -1.11022e-16 2.77556e-17)
-(2.77556e-17 -2.22045e-16 -1.38778e-17)
-(5.55112e-17 -2.22045e-16 5.55112e-17)
-(2.77556e-17 0 0)
-(0 -2.22045e-16 0)
-(2.77556e-17 0 -1.38778e-17)
-(2.77556e-17 -1.11022e-16 2.77556e-17)
-(-2.77556e-17 -2.22045e-16 0)
-(5.55112e-17 -1.11022e-16 5.55112e-17)
-(0 0 1.38778e-17)
-(0 -1.11022e-16 0)
-(0 0 0)
-(0 -1.11022e-16 0)
-(0 -4.44089e-16 1.38778e-17)
-(-2.77556e-17 -1.11022e-16 2.77556e-17)
-(2.77556e-17 -2.22045e-16 0)
-(-2.77556e-17 0 0)
-(0 2.22045e-16 1.38778e-17)
-(0 -1.11022e-16 0)
-(-2.77556e-17 2.22045e-16 0)
-(-2.77556e-17 -1.11022e-16 5.55112e-17)
-(2.77556e-17 -2.22045e-16 -1.38778e-17)
-(2.77556e-17 -1.11022e-16 2.77556e-17)
-(0 -4.44089e-16 -5.55112e-17)
-(0 -1.11022e-16 0)
-(0 0 1.38778e-17)
-(-2.77556e-17 -1.11022e-16 2.77556e-17)
-(-2.77556e-17 2.22045e-16 5.55112e-17)
-(-2.77556e-17 -1.11022e-16 0)
-(2.77556e-17 0 -1.38778e-17)
-(0 -1.11022e-16 0)
-(0 0 0)
-(5.55112e-17 -1.11022e-16 5.55112e-17)
-(2.77556e-17 -2.22045e-16 -1.38778e-17)
-(0 0 0)
-(2.77556e-17 -4.44089e-16 1.38778e-17)
-(0 -2.22045e-16 -5.55112e-17)
-(2.77556e-17 -4.44089e-16 -1.38778e-17)
-(0 0 0)
-(2.77556e-17 -2.22045e-16 -1.38778e-17)
-(0 0 0)
-(0 4.44089e-16 1.38778e-17)
-(5.55112e-17 -2.22045e-16 0)
-(0 4.44089e-16 1.38778e-17)
-(-2.77556e-17 0 0)
-(5.55112e-17 0 -2.77556e-17)
-(0 0 0)
-(2.77556e-17 -4.44089e-16 -1.38778e-17)
-(5.55112e-17 -4.44089e-16 0)
-(0 0 0)
-(-2.77556e-17 -2.22045e-16 0)
-(2.77556e-17 -8.88178e-16 -1.38778e-17)
-(0 -2.22045e-16 0)
-(2.77556e-17 0 -1.38778e-17)
-(-2.77556e-17 0 5.55112e-17)
-(2.77556e-17 -4.44089e-16 0)
-(0 -2.22045e-16 0)
-(2.77556e-17 4.44089e-16 -1.38778e-17)
-(-2.77556e-17 2.22045e-16 -5.55112e-17)
-(2.77556e-17 0 -1.38778e-17)
-(-2.77556e-17 0 5.55112e-17)
-(2.77556e-17 0 -1.38778e-17)
-(0 2.22045e-16 0)
-(2.77556e-17 -4.44089e-16 -1.38778e-17)
-(0 0 0)
-(5.55112e-17 -8.88178e-16 -2.77556e-17)
-(2.77556e-17 -2.22045e-16 0)
-(0 0 0)
-(-2.77556e-17 0 0)
-(0 -2.22045e-16 0)
-(2.77556e-17 -2.22045e-16 0)
-(-2.77556e-17 -2.22045e-16 0)
-(0 4.44089e-16 0)
-(2.77556e-17 0 0)
-(-2.77556e-17 0 0)
-(0 -2.22045e-16 -5.55112e-17)
-(-2.77556e-17 4.44089e-16 5.55112e-17)
-(0 -2.22045e-16 0)
-(0 -4.44089e-16 -5.55112e-17)
-(2.77556e-17 2.22045e-16 0)
-(-2.77556e-17 0 0)
-(0 0 0)
-(2.77556e-17 0 0)
-(-2.77556e-17 0 0)
-(0 -4.44089e-16 0)
-(5.55112e-17 -4.44089e-16 0)
-(-2.77556e-17 0 0)
-(0 0 0)
-(0 -4.44089e-16 0)
-(2.77556e-17 -1.11022e-16 2.77556e-17)
-(0 -2.22045e-16 5.55112e-17)
-(2.77556e-17 -2.22045e-16 2.77556e-17)
-(0 -2.22045e-16 0)
-(0 -2.22045e-16 0)
-(0 2.22045e-16 -5.55112e-17)
-(0 0 0)
-(-2.77556e-17 0 5.55112e-17)
-(5.55112e-17 -2.22045e-16 5.55112e-17)
-(0 -2.22045e-16 0)
-(0 0 0)
-(0 0 0)
-(2.77556e-17 -1.11022e-16 2.77556e-17)
-(5.55112e-17 -2.22045e-16 0)
-(2.77556e-17 -1.11022e-16 2.77556e-17)
-(-2.77556e-17 2.22045e-16 0)
-(0 -1.11022e-16 0)
-(0 0 0)
-(0 1.11022e-16 0)
-(2.77556e-17 -2.22045e-16 0)
-(5.55112e-17 -1.11022e-16 5.55112e-17)
-(-2.77556e-17 0 0)
-(0 0 0)
-(0 4.44089e-16 0)
-(2.77556e-17 -2.22045e-16 2.77556e-17)
-(2.77556e-17 -2.22045e-16 0)
-(0 0 2.77556e-17)
-(-2.77556e-17 0 0)
-(0 -1.11022e-16 2.77556e-17)
-(0 -2.22045e-16 -5.55112e-17)
-(2.77556e-17 -4.44089e-16 2.77556e-17)
-(-2.77556e-17 0 5.55112e-17)
-(0 0 0)
-(0 -8.88178e-16 0)
-(2.77556e-17 2.22045e-16 0)
-(2.77556e-17 0 -5.55112e-17)
-(-2.77556e-17 2.22045e-16 -5.55112e-17)
-(2.77556e-17 0 0)
-(0 0 -2.77556e-17)
-(-2.77556e-17 -4.44089e-16 0)
-(-2.77556e-17 0 2.77556e-17)
-(0 0 -1.11022e-16)
-(2.77556e-17 -2.22045e-16 5.55112e-17)
-(2.77556e-17 -4.44089e-16 0)
-(0 0 -2.77556e-17)
-(-2.77556e-17 -4.44089e-16 0)
-(0 0 0)
-(0 0 5.55112e-17)
-(0 0 -2.77556e-17)
-(2.77556e-17 -8.88178e-16 0)
-(0 2.22045e-16 -2.77556e-17)
-(-2.77556e-17 4.44089e-16 0)
-(0 -2.22045e-16 0)
-(0 -4.44089e-16 0)
-(2.77556e-17 0 5.55112e-17)
-(2.77556e-17 0 -5.55112e-17)
-(0 2.22045e-16 2.77556e-17)
-(0 -4.44089e-16 0)
-(-2.77556e-17 0 -2.77556e-17)
-(0 0 0)
-(2.77556e-17 0 5.55112e-17)
-(-2.77556e-17 0 5.55112e-17)
-(2.77556e-17 -2.22045e-16 5.55112e-17)
-(-2.77556e-17 0 0)
-(-2.77556e-17 0 2.77556e-17)
-(-2.77556e-17 0 5.55112e-17)
-(2.77556e-17 0 5.55112e-17)
-(-2.77556e-17 0 5.55112e-17)
-(0 0 -2.77556e-17)
-(0 1.73472e-18 0)
-(0 0 0)
-(-2.77556e-17 -4.44089e-16 0)
-(2.77556e-17 -2.22045e-16 5.55112e-17)
-(-2.77556e-17 6.93889e-18 0)
-(2.77556e-17 -4.44089e-16 2.77556e-17)
-(0 0 0)
-(0 0 0)
-(2.77556e-17 0 0)
-(5.55112e-17 -2.22045e-16 2.77556e-17)
-(0 0 5.55112e-17)
-(0 0 -2.77556e-17)
-(0 -1.38778e-17 -2.77556e-17)
-(-2.77556e-17 -2.22045e-16 2.77556e-17)
-(0 0 0)
-(0 0 -2.77556e-17)
-(5.55112e-17 -2.77556e-17 -2.77556e-17)
-(0 0 -2.77556e-17)
-(0 0 0)
-(-2.77556e-17 -2.22045e-16 2.77556e-17)
-(5.55112e-17 -8.32667e-17 -2.77556e-17)
-(-2.77556e-17 4.44089e-16 -5.55112e-17)
-(2.77556e-17 -4.44089e-16 -5.55112e-17)
-(0 0 -2.77556e-17)
-(5.55112e-17 -1.11022e-16 -2.77556e-17)
-(-2.77556e-17 2.22045e-16 2.77556e-17)
-(0 0 0)
-(5.55112e-17 -4.44089e-16 2.77556e-17)
-(0 2.77556e-17 2.77556e-17)
-(2.77556e-17 0 2.77556e-17)
-(0 0 0)
-(0 0 5.55112e-17)
-(0 0 2.77556e-17)
-(2.77556e-17 -2.22045e-16 5.55112e-17)
-(2.77556e-17 0 0)
-(2.77556e-17 -2.22045e-16 0)
-(0 -5.55112e-17 2.77556e-17)
-(0 0 0)
-(-2.77556e-17 4.44089e-16 0)
-(2.77556e-17 -2.22045e-16 5.55112e-17)
-(0 5.55112e-17 2.77556e-17)
-(0 0 2.77556e-17)
-(0 -4.44089e-16 -1.11022e-16)
-(-2.77556e-17 0 -2.77556e-17)
-(0 0 2.77556e-17)
-(2.77556e-17 -2.22045e-16 5.55112e-17)
-(2.77556e-17 -8.88178e-16 0)
-(2.77556e-17 0 5.55112e-17)
-(0 1.66533e-16 2.77556e-17)
-(-2.77556e-17 -2.22045e-16 -5.55112e-17)
-(-2.77556e-17 0 0)
-(2.77556e-17 0 5.55112e-17)
-(2.77556e-17 -5.55112e-17 0)
-(2.77556e-17 -4.44089e-16 0)
-(2.77556e-17 0 -5.55112e-17)
-(0 -2.22045e-16 0)
-(2.77556e-17 5.55112e-17 0)
-(2.77556e-17 -2.22045e-16 0)
-(2.77556e-17 0 0)
-(0 -2.22045e-16 -2.77556e-17)
-(5.55112e-17 -1.11022e-16 -5.55112e-17)
-(0 2.22045e-16 0)
-(-2.77556e-17 0 0)
-(2.77556e-17 -6.66134e-16 5.55112e-17)
-(-2.77556e-17 0 0)
-(0 0 -2.77556e-17)
-(0 0 5.55112e-17)
-(-2.77556e-17 0 2.77556e-17)
-(0 0 0)
-(-2.77556e-17 6.66134e-16 -5.55112e-17)
-(2.77556e-17 0 0)
-(0 0 0)
-(-2.77556e-17 4.44089e-16 0)
-(0 -1.11022e-16 0)
-(0 0 -2.77556e-17)
-(0 -1.11022e-16 -2.77556e-17)
-(0 -1.11022e-16 -2.77556e-17)
-(0 1.11022e-16 -2.77556e-17)
-(0 1.11022e-16 0)
-(0 0 0)
-(0 0 0)
-(0 0 0)
-(-2.77556e-17 1.11022e-16 0)
-(-2.77556e-17 3.33067e-16 0)
-(2.77556e-17 -2.22045e-16 -5.55112e-17)
-(0 0 2.77556e-17)
-(2.77556e-17 -2.22045e-16 -2.77556e-17)
-(0 2.22045e-16 2.77556e-17)
-(0 0 2.77556e-17)
-(0 2.22045e-16 2.77556e-17)
-(0 0 2.77556e-17)
-(0 2.22045e-16 2.77556e-17)
-(0 0 -2.77556e-17)
-(2.77556e-17 0 -5.55112e-17)
-(0 0 2.77556e-17)
-(0 0 2.77556e-17)
-(0 -2.22045e-16 2.77556e-17)
-(0 -2.22045e-16 2.77556e-17)
-(0 -2.22045e-16 2.77556e-17)
-(2.77556e-17 -2.22045e-16 0)
-(0 2.22045e-16 2.77556e-17)
-(2.77556e-17 -2.22045e-16 -5.55112e-17)
-(2.77556e-17 0 -5.55112e-17)
-(0 2.22045e-16 2.77556e-17)
-(2.77556e-17 -2.22045e-16 0)
-(2.77556e-17 -2.22045e-16 -5.55112e-17)
-(0 2.22045e-16 2.77556e-17)
-(0 0 2.77556e-17)
-(2.77556e-17 -4.44089e-16 -2.77556e-17)
-(0 -2.22045e-16 2.77556e-17)
-(0 0 2.77556e-17)
-(2.77556e-17 2.22045e-16 -5.55112e-17)
-(0 0 2.77556e-17)
-(5.55112e-17 0 -2.77556e-17)
-(2.77556e-17 -4.44089e-16 0)
-(0 -4.44089e-16 0)
-(0 -4.44089e-16 2.77556e-17)
-(0 0 2.77556e-17)
-(2.77556e-17 -4.44089e-16 0)
-(0 0 2.77556e-17)
-(0 4.44089e-16 2.77556e-17)
-(0 4.44089e-16 2.77556e-17)
-(2.77556e-17 -4.44089e-16 0)
-(5.55112e-17 -8.88178e-16 -2.77556e-17)
-(0 4.44089e-16 -2.77556e-17)
-(0 0 0)
-(-2.77556e-17 -2.22045e-16 2.77556e-17)
-(-2.77556e-17 1.73472e-18 0)
-(-2.77556e-17 6.66134e-16 -5.55112e-17)
-(-2.77556e-17 6.93889e-18 -2.77556e-17)
-(0 2.22045e-16 -2.77556e-17)
-(0 0 2.77556e-17)
-(-2.77556e-17 0 2.77556e-17)
-(2.77556e-17 -1.38778e-17 -2.77556e-17)
-(5.55112e-17 -4.44089e-16 2.77556e-17)
-(2.77556e-17 -2.77556e-17 0)
-(2.77556e-17 0 0)
-(2.77556e-17 -2.77556e-17 0)
-(0 -2.22045e-16 5.55112e-17)
-(2.77556e-17 -2.77556e-17 0)
-(0 0 -2.77556e-17)
-(-2.77556e-17 5.55112e-17 2.77556e-17)
-(0 0 -2.77556e-17)
-(2.77556e-17 0 -2.77556e-17)
-(-2.77556e-17 0 2.77556e-17)
-(-2.77556e-17 0 2.77556e-17)
-(-2.77556e-17 2.22045e-16 -5.55112e-17)
-(-2.77556e-17 1.11022e-16 2.77556e-17)
-(0 -4.44089e-16 -2.77556e-17)
-(-2.77556e-17 1.11022e-16 2.77556e-17)
-(-2.77556e-17 0 2.77556e-17)
-(2.77556e-17 5.55112e-17 -2.77556e-17)
-(2.77556e-17 0 5.55112e-17)
-(0 0 0)
-(2.77556e-17 0 5.55112e-17)
-(0 5.55112e-17 0)
-(-2.77556e-17 0 2.77556e-17)
-(5.55112e-17 -2.22045e-16 -2.77556e-17)
-(2.77556e-17 0 5.55112e-17)
-(0 -1.11022e-16 -2.77556e-17)
-(0 0 -2.77556e-17)
-(0 0 -2.77556e-17)
-(0 -2.22045e-16 0)
-(0 0 -2.77556e-17)
-(2.77556e-17 4.44089e-16 0)
-(0 -1.11022e-16 -2.77556e-17)
-(0 6.66134e-16 -2.77556e-17)
-(0 0 0)
-(0 -2.22045e-16 0)
-(0 0 -2.77556e-17)
-(2.77556e-17 -2.22045e-16 5.55112e-17)
-(0 0 0)
-(2.77556e-17 -4.44089e-16 5.55112e-17)
-(0 1.11022e-16 -2.77556e-17)
-(-2.77556e-17 2.22045e-16 2.77556e-17)
-(0 1.11022e-16 -2.77556e-17)
-(2.77556e-17 -2.22045e-16 5.55112e-17)
-(0 0 -2.77556e-17)
-(0 4.44089e-16 -2.77556e-17)
-(0 0 -2.77556e-17)
-(-2.77556e-17 0 2.77556e-17)
-(0 1.11022e-16 -2.77556e-17)
-(-2.77556e-17 4.44089e-16 -5.55112e-17)
-(0 -2.22045e-16 -2.77556e-17)
-(0 0 -2.77556e-17)
-(0 0 -2.77556e-17)
-(-2.77556e-17 0 2.77556e-17)
-(0 0 2.77556e-17)
-(5.55112e-17 -4.44089e-16 2.77556e-17)
-(0 0 -2.77556e-17)
-(2.77556e-17 0 2.77556e-17)
-(2.77556e-17 0 -2.77556e-17)
-(0 -8.88178e-16 5.55112e-17)
-(0 2.22045e-16 -2.77556e-17)
-(-5.55112e-17 4.44089e-16 -5.55112e-17)
-(0 2.22045e-16 -2.77556e-17)
-(0 0 -2.77556e-17)
-(0 0 -2.77556e-17)
-(-2.77556e-17 -4.44089e-16 2.77556e-17)
-(0 0 -2.77556e-17)
-(0 0 -2.77556e-17)
-(2.77556e-17 -2.22045e-16 -2.77556e-17)
-(0 4.44089e-16 -2.77556e-17)
-(-2.77556e-17 2.22045e-16 5.55112e-17)
-(-2.77556e-17 -4.44089e-16 2.77556e-17)
-(0 4.44089e-16 2.77556e-17)
-(0 4.44089e-16 0)
-(2.77556e-17 -2.22045e-16 -2.77556e-17)
-(0 0 -2.77556e-17)
-(0 2.22045e-16 -2.77556e-17)
-(-2.77556e-17 4.44089e-16 2.77556e-17)
-(0 0 -2.77556e-17)
-(2.77556e-17 0 5.55112e-17)
-(0 -2.22045e-16 -2.77556e-17)
-(2.77556e-17 -4.44089e-16 0)
-(0 0 -2.77556e-17)
-(0 -4.44089e-16 0)
-(2.77556e-17 -2.22045e-16 -2.77556e-17)
-(2.77556e-17 -4.44089e-16 5.55112e-17)
-(0 -2.22045e-16 -2.77556e-17)
-(5.55112e-17 0 2.77556e-17)
-(0 0 2.77556e-17)
-(-2.77556e-17 0 0)
-(0 2.22045e-16 2.77556e-17)
-(-2.77556e-17 8.88178e-16 0)
-(2.77556e-17 2.22045e-16 -2.77556e-17)
-(5.55112e-17 0 2.77556e-17)
-(2.77556e-17 -2.22045e-16 -2.77556e-17)
-(-2.77556e-17 -4.44089e-16 0)
-(0 4.44089e-16 2.77556e-17)
-(2.77556e-17 -4.44089e-16 5.55112e-17)
-(0 2.22045e-16 -2.77556e-17)
-(2.77556e-17 -4.44089e-16 0)
-(0 2.22045e-16 -2.77556e-17)
-(0 0 0)
-(2.77556e-17 -4.44089e-16 -2.77556e-17)
-(2.77556e-17 -4.44089e-16 5.55112e-17)
-(0 -2.22045e-16 -2.77556e-17)
-(0 4.44089e-16 0)
-(0 0 -2.77556e-17)
-(0 0 2.77556e-17)
-(0 4.44089e-16 2.77556e-17)
-(2.77556e-17 0 5.55112e-17)
-(2.77556e-17 -6.66134e-16 -2.77556e-17)
-(0 0 -2.77556e-17)
-(5.55112e-17 0 -2.77556e-17)
-(-2.77556e-17 4.44089e-16 2.77556e-17)
-(2.77556e-17 -8.88178e-16 2.77556e-17)
-(0 4.44089e-16 -2.77556e-17)
-(0 0 -2.77556e-17)
-(0 0 -2.77556e-17)
-(0 0 -2.77556e-17)
-(-2.77556e-17 0 2.77556e-17)
-(0 -4.44089e-16 -2.77556e-17)
-(-5.55112e-17 8.88178e-16 -5.55112e-17)
-(0 0 2.77556e-17)
-(0 0 -2.77556e-17)
-(0 0 -2.77556e-17)
-(-2.77556e-17 0 2.77556e-17)
-(0 4.44089e-16 -2.77556e-17)
-(0 0 0)
-(0 4.44089e-16 -2.77556e-17)
-(0 0 -2.77556e-17)
-(2.77556e-17 -4.44089e-16 2.77556e-17)
-(-2.77556e-17 4.44089e-16 2.77556e-17)
-(5.55112e-17 -8.88178e-16 -2.77556e-17)
-(0 0 -2.77556e-17)
-(0 -1.73472e-18 5.55112e-17)
-(2.77556e-17 -6.93889e-18 -5.55112e-17)
-(0 -1.38778e-17 0)
-(0 -1.38778e-17 -5.55112e-17)
-(2.77556e-17 0 5.55112e-17)
-(2.77556e-17 -2.77556e-17 5.55112e-17)
-(2.77556e-17 -5.55112e-17 5.55112e-17)
-(2.77556e-17 0 0)
-(0 -5.55112e-17 0)
-(2.77556e-17 -5.55112e-17 0)
-(2.77556e-17 -5.55112e-17 0)
-(2.77556e-17 -1.11022e-16 0)
-(0 -5.55112e-17 0)
-(2.77556e-17 0 0)
-(2.77556e-17 5.55112e-17 0)
-(0 -1.11022e-16 0)
-(0 0 0)
-(2.77556e-17 1.11022e-16 5.55112e-17)
-(2.77556e-17 0 5.55112e-17)
-(2.77556e-17 0 5.55112e-17)
-(2.77556e-17 -2.22045e-16 -5.55112e-17)
-(0 0 0)
-(2.77556e-17 -2.22045e-16 -5.55112e-17)
-(0 -1.11022e-16 0)
-(2.77556e-17 0 5.55112e-17)
-(2.77556e-17 -1.11022e-16 0)
-(2.77556e-17 0 5.55112e-17)
-(2.77556e-17 1.11022e-16 0)
-(0 -1.11022e-16 0)
-(0 0 0)
-(-2.77556e-17 0 0)
-(-2.77556e-17 -2.22045e-16 0)
-(0 0 0)
-(-2.77556e-17 0 0)
-(-2.77556e-17 0 0)
-(-2.77556e-17 -2.22045e-16 0)
-(-2.77556e-17 -2.22045e-16 0)
-(0 0 0)
-(0 0 0)
-(-2.77556e-17 4.44089e-16 0)
-(0 0 0)
-(-2.77556e-17 0 0)
-(-2.77556e-17 -2.22045e-16 0)
-(-2.77556e-17 -2.22045e-16 0)
-(-2.77556e-17 2.22045e-16 0)
-(5.55112e-17 0 0)
-(-2.77556e-17 0 0)
-(-2.77556e-17 0 0)
-(-2.77556e-17 0 0)
-(0 0 0)
-(0 0 0)
-(-2.77556e-17 4.44089e-16 0)
-(-2.77556e-17 -1.73472e-18 0)
-(-2.77556e-17 0 0)
-(-2.77556e-17 0 0)
-(-2.77556e-17 2.22045e-16 0)
-(-2.77556e-17 0 -2.77556e-17)
-(2.77556e-17 -2.22045e-16 0)
-(0 0 1.38778e-17)
-(-2.77556e-17 0 0)
-(2.77556e-17 6.93889e-18 1.38778e-17)
-(-2.77556e-17 0 0)
-(0 -1.38778e-17 0)
-(-2.77556e-17 -2.22045e-16 0)
-(0 0 0)
-(0 0 0)
-(0 0 0)
-(2.77556e-17 0 0)
-(2.77556e-17 -2.77556e-17 2.77556e-17)
-(0 -4.44089e-16 0)
-(2.77556e-17 -1.38778e-17 1.38778e-17)
-(0 -4.44089e-16 0)
-(2.77556e-17 -2.77556e-17 0)
-(-2.77556e-17 0 0)
-(0 2.77556e-17 -2.77556e-17)
-(-2.77556e-17 0 0)
-(0 0 -1.38778e-17)
-(-2.77556e-17 0 0)
-(0 0 -1.38778e-17)
-(-2.77556e-17 0 0)
-(-2.77556e-17 2.77556e-17 -2.77556e-17)
-(-2.77556e-17 4.44089e-16 0)
-(0 0 -1.38778e-17)
-(-2.77556e-17 0 0)
-(0 -5.55112e-17 2.77556e-17)
-(0 -4.44089e-16 0)
-(0 5.55112e-17 2.77556e-17)
-(2.77556e-17 -4.44089e-16 0)
-(0 -5.55112e-17 -1.38778e-17)
-(0 -4.44089e-16 0)
-(2.77556e-17 5.55112e-17 1.38778e-17)
-(0 5.55112e-17 -2.77556e-17)
-(-2.77556e-17 2.77556e-17 -2.77556e-17)
-(2.77556e-17 5.55112e-17 1.38778e-17)
-(2.77556e-17 5.55112e-17 0)
-(5.55112e-17 0 2.77556e-17)
-(0 -5.55112e-17 1.38778e-17)
-(0 0 -2.77556e-17)
-(-2.77556e-17 0 -2.77556e-17)
-(0 5.55112e-17 1.38778e-17)
-(0 5.55112e-17 -2.77556e-17)
-(-2.77556e-17 1.11022e-16 -2.77556e-17)
-(0 5.55112e-17 1.38778e-17)
-(0 1.11022e-16 -2.77556e-17)
-(-2.77556e-17 5.55112e-17 -2.77556e-17)
-(0 0 1.38778e-17)
-(0 5.55112e-17 -2.77556e-17)
-(5.55112e-17 -5.55112e-17 2.77556e-17)
-(2.77556e-17 5.55112e-17 1.38778e-17)
-(0 0 0)
-(-2.77556e-17 5.55112e-17 -2.77556e-17)
-(2.77556e-17 1.11022e-16 1.38778e-17)
-(0 0 0)
-(-2.77556e-17 0 -2.77556e-17)
-(2.77556e-17 0 1.38778e-17)
-(0 0 0)
-(-2.77556e-17 2.22045e-16 -2.77556e-17)
-(0 0 0)
-(0 0 0)
-(2.77556e-17 -1.11022e-16 2.77556e-17)
-(5.55112e-17 0 2.77556e-17)
-(-2.77556e-17 1.11022e-16 -2.77556e-17)
-(0 0 1.38778e-17)
-(5.55112e-17 -2.22045e-16 2.77556e-17)
-(-2.77556e-17 1.11022e-16 -2.77556e-17)
-(0 0 1.38778e-17)
-(5.55112e-17 -2.22045e-16 2.77556e-17)
-(-2.77556e-17 1.11022e-16 -2.77556e-17)
-(0 0 1.38778e-17)
-(5.55112e-17 -1.11022e-16 2.77556e-17)
-(-2.77556e-17 2.22045e-16 -2.77556e-17)
-(0 -1.11022e-16 1.38778e-17)
-(-2.77556e-17 -1.11022e-16 0)
-(0 -1.11022e-16 0)
-(0 -1.11022e-16 0)
-(-2.77556e-17 -1.11022e-16 0)
-(2.77556e-17 0 0)
-(0 0 1.38778e-17)
-(-2.77556e-17 -1.11022e-16 0)
-(0 -1.11022e-16 0)
-(0 -1.11022e-16 0)
-(5.55112e-17 -2.22045e-16 2.77556e-17)
-(-2.77556e-17 0 -2.77556e-17)
-(0 1.11022e-16 1.38778e-17)
-(2.77556e-17 -2.22045e-16 1.38778e-17)
-(0 2.22045e-16 0)
-(0 0 0)
-(5.55112e-17 -2.22045e-16 2.77556e-17)
-(-2.77556e-17 1.11022e-16 -2.77556e-17)
-(0 -1.11022e-16 1.38778e-17)
-(2.77556e-17 -2.22045e-16 1.38778e-17)
-(0 0 0)
-(0 0 0)
-(5.55112e-17 -1.11022e-16 2.77556e-17)
-(-2.77556e-17 0 -2.77556e-17)
-(2.77556e-17 -2.22045e-16 2.77556e-17)
-(0 0 0)
-(0 0 0)
-(2.77556e-17 -4.44089e-16 2.77556e-17)
-(0 -2.22045e-16 -1.38778e-17)
-(2.77556e-17 -2.22045e-16 0)
-(0 2.22045e-16 -2.77556e-17)
-(2.77556e-17 -2.22045e-16 1.38778e-17)
-(2.77556e-17 0 0)
-(0 -2.22045e-16 0)
-(0 0 -1.38778e-17)
-(5.55112e-17 0 2.77556e-17)
-(0 -2.22045e-16 -2.77556e-17)
-(0 2.22045e-16 -1.38778e-17)
-(5.55112e-17 -4.44089e-16 2.77556e-17)
-(0 0 0)
-(0 2.22045e-16 -1.38778e-17)
-(0 -2.22045e-16 -2.77556e-17)
-(0 0 0)
-(0 0 -1.38778e-17)
-(-2.77556e-17 2.22045e-16 -2.77556e-17)
-(0 0 0)
-(0 0 -1.38778e-17)
-(5.55112e-17 -4.44089e-16 2.77556e-17)
-(0 0 0)
-(2.77556e-17 -4.44089e-16 1.38778e-17)
-(0 2.22045e-16 0)
-(5.55112e-17 -2.22045e-16 2.77556e-17)
-(2.77556e-17 2.22045e-16 1.38778e-17)
-(2.77556e-17 -4.44089e-16 0)
-(0 0 -2.77556e-17)
-(2.77556e-17 0 1.38778e-17)
-(2.77556e-17 0 0)
-(0 4.44089e-16 -2.77556e-17)
-(2.77556e-17 -2.22045e-16 1.38778e-17)
-(2.77556e-17 -2.22045e-16 0)
-(5.55112e-17 -4.44089e-16 2.77556e-17)
-(2.77556e-17 0 -1.38778e-17)
-(2.77556e-17 4.44089e-16 -2.77556e-17)
-(0 0 0)
-(2.77556e-17 -2.22045e-16 1.38778e-17)
-(0 2.22045e-16 0)
-(0 0 0)
-(0 0 -1.38778e-17)
-(0 0 -2.77556e-17)
-(0 0 0)
-(0 2.22045e-16 -1.38778e-17)
-(-2.77556e-17 2.22045e-16 -2.77556e-17)
-(0 0 0)
-(2.77556e-17 -4.44089e-16 1.38778e-17)
-(0 2.22045e-16 0)
-(0 -2.22045e-16 0)
-(0 -2.22045e-16 -1.38778e-17)
-(5.55112e-17 -2.22045e-16 2.77556e-17)
-(0 -2.22045e-16 0)
-(2.77556e-17 -2.22045e-16 1.38778e-17)
-(2.77556e-17 0 0)
-(0 6.66134e-16 -2.77556e-17)
-(2.77556e-17 2.22045e-16 1.38778e-17)
-(2.77556e-17 -6.66134e-16 0)
-(0 8.88178e-16 -2.77556e-17)
-(2.77556e-17 0 1.38778e-17)
-(2.77556e-17 -4.44089e-16 0)
-(5.55112e-17 -4.44089e-16 2.77556e-17)
-(2.77556e-17 0 1.38778e-17)
-(2.77556e-17 2.22045e-16 -2.77556e-17)
-(0 0 0)
-(2.77556e-17 -2.22045e-16 1.38778e-17)
-(2.77556e-17 0 0)
-(0 2.22045e-16 -2.77556e-17)
-(2.77556e-17 -2.22045e-16 1.38778e-17)
-(2.77556e-17 0 0)
-(0 0 0)
-(0 2.22045e-16 -1.38778e-17)
-(-2.77556e-17 2.22045e-16 -2.77556e-17)
-(0 0 0)
-(0 0 -1.38778e-17)
-(5.55112e-17 -4.44089e-16 2.77556e-17)
-(0 4.44089e-16 0)
-(0 0 -1.38778e-17)
-(5.55112e-17 -6.66134e-16 2.77556e-17)
-(0 2.22045e-16 0)
-(0 4.44089e-16 -1.38778e-17)
-(-2.77556e-17 2.22045e-16 -2.77556e-17)
-(0 2.22045e-16 0)
-(2.77556e-17 2.22045e-16 1.38778e-17)
-(2.77556e-17 -4.44089e-16 0)
-(0 2.22045e-16 -2.77556e-17)
-(2.77556e-17 -2.22045e-16 1.38778e-17)
-(2.77556e-17 -2.22045e-16 0)
-(5.55112e-17 -8.88178e-16 2.77556e-17)
-(2.77556e-17 0 -1.38778e-17)
-(2.77556e-17 0 -2.77556e-17)
-(-5.55112e-17 4.44089e-16 -2.77556e-17)
-(2.77556e-17 -4.44089e-16 1.38778e-17)
-(2.77556e-17 -4.44089e-16 0)
-(0 4.44089e-16 0)
-(2.77556e-17 4.44089e-16 1.38778e-17)
-(2.77556e-17 -4.44089e-16 0)
-(0 0 0)
-(2.77556e-17 0 1.38778e-17)
-(2.77556e-17 0 0)
-(0 4.44089e-16 0)
-(2.77556e-17 -4.44089e-16 1.38778e-17)
-(0 0 0)
-(0 0 0)
-(5.55112e-17 -8.88178e-16 2.77556e-17)
-(-5.55112e-17 0 -2.77556e-17)
-(0 8.88178e-16 -2.77556e-17)
-(5.55112e-17 0 2.77556e-17)
-(-5.55112e-17 4.44089e-16 -2.77556e-17)
-(0 -4.44089e-16 0)
-(2.77556e-17 -4.44089e-16 1.38778e-17)
-(0 0 0)
-(0 -4.44089e-16 0)
-(0 4.44089e-16 0)
-(0 -4.44089e-16 0)
-(0 0 0)
-(2.77556e-17 -4.44089e-16 1.38778e-17)
-(2.77556e-17 0 0)
-(0 4.44089e-16 0)
-(2.77556e-17 -4.44089e-16 1.38778e-17)
-(2.77556e-17 -4.44089e-16 0)
-(-5.55112e-17 8.88178e-16 -2.77556e-17)
-(2.77556e-17 0 1.38778e-17)
-(2.77556e-17 0 0)
-(0 0 0)
-(2.77556e-17 4.44089e-16 1.38778e-17)
-(2.77556e-17 -4.44089e-16 0)
+(0 1.734723476e-18 0)
+(0 3.469446952e-18 -1.387778781e-17)
+(8.326672685e-17 -1.040834086e-17 1.387778781e-17)
+(2.775557562e-17 -6.938893904e-18 0)
+(2.775557562e-17 -2.081668171e-17 6.938893904e-18)
+(0 0 2.775557562e-17)
+(0 2.775557562e-17 -6.938893904e-18)
+(2.775557562e-17 -1.387778781e-17 6.938893904e-18)
+(-2.775557562e-17 0 1.387778781e-17)
+(0 -1.387778781e-17 0)
+(2.775557562e-17 0 2.081668171e-17)
+(2.775557562e-17 0 2.775557562e-17)
+(0 0 1.387778781e-17)
+(2.775557562e-17 0 0)
+(0 -2.775557562e-17 1.387778781e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 1.387778781e-17)
+(0 -2.775557562e-17 0)
+(0 -2.775557562e-17 -1.387778781e-17)
+(-2.775557562e-17 -5.551115123e-17 1.387778781e-17)
+(0 2.775557562e-17 6.938893904e-18)
+(0 5.551115123e-17 -1.387778781e-17)
+(-2.775557562e-17 0 1.387778781e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 -5.551115123e-17 1.387778781e-17)
+(0 0 1.387778781e-17)
+(-2.775557562e-17 5.551115123e-17 -6.938893904e-18)
+(5.551115123e-17 -5.551115123e-17 1.387778781e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 -5.551115123e-17 1.387778781e-17)
+(0 -5.551115123e-17 1.387778781e-17)
+(0 0 -1.387778781e-17)
+(-2.775557562e-17 1.110223025e-16 1.387778781e-17)
+(-5.551115123e-17 -5.551115123e-17 -1.387778781e-17)
+(0 -5.551115123e-17 -1.387778781e-17)
+(-2.775557562e-17 -5.551115123e-17 1.387778781e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 -5.551115123e-17 1.387778781e-17)
+(0 -1.110223025e-16 1.387778781e-17)
+(-5.551115123e-17 5.551115123e-17 -6.938893904e-18)
+(5.551115123e-17 -5.551115123e-17 1.387778781e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 1.387778781e-17)
+(0 0 1.387778781e-17)
+(0 -1.110223025e-16 -1.387778781e-17)
+(-2.775557562e-17 0 1.387778781e-17)
+(2.775557562e-17 -1.110223025e-16 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 -2.220446049e-16 1.387778781e-17)
+(0 0 1.387778781e-17)
+(0 -1.110223025e-16 -1.387778781e-17)
+(-2.775557562e-17 0 1.387778781e-17)
+(0 0 6.938893904e-18)
+(0 0 -1.387778781e-17)
+(-2.775557562e-17 0 1.387778781e-17)
+(2.775557562e-17 0 0)
+(0 0 -1.387778781e-17)
+(0 1.110223025e-16 1.387778781e-17)
+(0 -1.110223025e-16 1.387778781e-17)
+(0 -1.110223025e-16 -1.387778781e-17)
+(-2.775557562e-17 -1.110223025e-16 1.387778781e-17)
+(2.775557562e-17 -1.110223025e-16 0)
+(0 -1.110223025e-16 -1.387778781e-17)
+(0 0 1.387778781e-17)
+(0 -1.110223025e-16 1.387778781e-17)
+(0 0 -1.387778781e-17)
+(-2.775557562e-17 -1.110223025e-16 1.387778781e-17)
+(0 0 1.387778781e-17)
+(0 -1.110223025e-16 6.938893904e-18)
+(2.775557562e-17 0 1.387778781e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 1.110223025e-16 0)
+(2.775557562e-17 0 1.387778781e-17)
+(0 -1.110223025e-16 1.387778781e-17)
+(0 0 -1.387778781e-17)
+(-2.775557562e-17 0 1.387778781e-17)
+(2.775557562e-17 1.110223025e-16 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 -3.330669074e-16 1.387778781e-17)
+(0 0 1.387778781e-17)
+(0 0 -1.387778781e-17)
+(-2.775557562e-17 -2.220446049e-16 1.387778781e-17)
+(2.775557562e-17 -1.110223025e-16 -1.387778781e-17)
+(2.775557562e-17 -2.220446049e-16 1.387778781e-17)
+(-2.775557562e-17 2.220446049e-16 1.387778781e-17)
+(2.775557562e-17 0 -1.387778781e-17)
+(2.775557562e-17 0 1.387778781e-17)
+(0 0 1.387778781e-17)
+(2.775557562e-17 0 -1.387778781e-17)
+(2.775557562e-17 4.440892099e-16 1.387778781e-17)
+(0 -2.220446049e-16 1.387778781e-17)
+(2.775557562e-17 0 -1.387778781e-17)
+(2.775557562e-17 2.220446049e-16 1.387778781e-17)
+(0 0 1.387778781e-17)
+(2.775557562e-17 -2.220446049e-16 -1.387778781e-17)
+(2.775557562e-17 2.220446049e-16 1.387778781e-17)
+(0 0 1.387778781e-17)
+(2.775557562e-17 0 -1.387778781e-17)
+(2.775557562e-17 -4.440892099e-16 1.387778781e-17)
+(0 2.220446049e-16 1.387778781e-17)
+(2.775557562e-17 -2.220446049e-16 -1.387778781e-17)
+(2.775557562e-17 -2.220446049e-16 1.387778781e-17)
+(0 2.220446049e-16 1.387778781e-17)
+(2.775557562e-17 0 -1.387778781e-17)
+(0 -2.220446049e-16 6.938893904e-18)
+(2.775557562e-17 -2.220446049e-16 1.387778781e-17)
+(2.775557562e-17 -4.440892099e-16 0)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 2.220446049e-16 1.387778781e-17)
+(2.775557562e-17 0 0)
+(0 0 6.938893904e-18)
+(0 -2.220446049e-16 1.387778781e-17)
+(2.775557562e-17 0 -1.387778781e-17)
+(2.775557562e-17 0 1.387778781e-17)
+(0 0 1.387778781e-17)
+(0 -2.220446049e-16 6.938893904e-18)
+(2.775557562e-17 0 0)
+(0 0 1.387778781e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 2.220446049e-16 0)
+(0 -2.220446049e-16 1.387778781e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 0)
+(0 0 1.387778781e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 0 1.387778781e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(2.775557562e-17 0 0)
+(0 0 1.387778781e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 4.440892099e-16 0)
+(0 4.440892099e-16 1.387778781e-17)
+(2.775557562e-17 2.220446049e-16 0)
+(2.775557562e-17 0 0)
+(0 2.220446049e-16 1.387778781e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 0)
+(0 0 1.387778781e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 -6.661338148e-16 6.938893904e-18)
+(2.775557562e-17 0 1.387778781e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 1.387778781e-17)
+(0 -2.220446049e-16 1.387778781e-17)
+(2.775557562e-17 0 -1.387778781e-17)
+(2.775557562e-17 0 1.387778781e-17)
+(0 0 1.387778781e-17)
+(2.775557562e-17 0 -1.387778781e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 0 1.387778781e-17)
+(2.775557562e-17 -4.440892099e-16 -1.387778781e-17)
+(2.775557562e-17 0 1.387778781e-17)
+(0 0 1.387778781e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(2.775557562e-17 -2.220446049e-16 1.387778781e-17)
+(0 0 1.387778781e-17)
+(2.775557562e-17 4.440892099e-16 -1.387778781e-17)
+(2.775557562e-17 -2.220446049e-16 1.387778781e-17)
+(0 2.220446049e-16 1.387778781e-17)
+(2.775557562e-17 0 -1.387778781e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 0 1.387778781e-17)
+(2.775557562e-17 -2.220446049e-16 -1.387778781e-17)
+(2.775557562e-17 0 1.387778781e-17)
+(0 -2.220446049e-16 1.387778781e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(2.775557562e-17 0 1.387778781e-17)
+(0 0 1.387778781e-17)
+(2.775557562e-17 -2.220446049e-16 -1.387778781e-17)
+(2.775557562e-17 0 1.387778781e-17)
+(0 -4.440892099e-16 1.387778781e-17)
+(2.775557562e-17 0 -1.387778781e-17)
+(0 -4.440892099e-16 6.938893904e-18)
+(2.775557562e-17 -4.440892099e-16 1.387778781e-17)
+(-2.775557562e-17 4.440892099e-16 -1.387778781e-17)
+(0 -4.440892099e-16 6.938893904e-18)
+(2.775557562e-17 0 1.387778781e-17)
+(0 0 1.387778781e-17)
+(0 -8.881784197e-16 6.938893904e-18)
+(2.775557562e-17 0 1.387778781e-17)
+(-2.775557562e-17 0 -1.387778781e-17)
+(0 -4.440892099e-16 6.938893904e-18)
+(2.775557562e-17 4.440892099e-16 1.387778781e-17)
+(0 0 2.081668171e-17)
+(0 -4.440892099e-16 6.938893904e-18)
+(2.775557562e-17 -4.440892099e-16 1.387778781e-17)
+(-2.775557562e-17 4.440892099e-16 -1.387778781e-17)
+(0 -4.440892099e-16 6.938893904e-18)
+(2.775557562e-17 -4.440892099e-16 1.387778781e-17)
+(0 0 1.387778781e-17)
+(0 -4.440892099e-16 6.938893904e-18)
+(2.775557562e-17 0 1.387778781e-17)
+(-2.775557562e-17 4.440892099e-16 -1.387778781e-17)
+(0 0 6.938893904e-18)
+(2.775557562e-17 -4.440892099e-16 1.387778781e-17)
+(0 -8.881784197e-16 6.938893904e-18)
+(0 -4.440892099e-16 0)
+(0 4.440892099e-16 2.775557562e-17)
+(0 -4.440892099e-16 6.938893904e-18)
+(-2.775557562e-17 0 -1.387778781e-17)
+(0 -4.440892099e-16 1.387778781e-17)
+(0 -8.881784197e-16 6.938893904e-18)
+(0 0 0)
+(0 -8.881784197e-16 2.775557562e-17)
+(0 0 6.938893904e-18)
+(-2.775557562e-17 4.440892099e-16 -1.387778781e-17)
+(2.775557562e-17 -4.440892099e-16 1.387778781e-17)
+(0 -1.734723476e-18 0)
+(2.775557562e-17 0 -1.734723476e-18)
+(2.775557562e-17 -3.469446952e-18 6.938893904e-18)
+(-2.775557562e-17 -6.938893904e-18 0)
+(0 0 1.734723476e-18)
+(0 -1.387778781e-17 6.938893904e-18)
+(2.775557562e-17 -2.775557562e-17 3.469446952e-18)
+(0 0 0)
+(0 0 6.938893904e-18)
+(0 -1.387778781e-17 0)
+(0 2.775557562e-17 0)
+(0 2.775557562e-17 0)
+(2.775557562e-17 -2.775557562e-17 0)
+(5.551115123e-17 -5.551115123e-17 3.469446952e-18)
+(2.775557562e-17 -2.775557562e-17 6.938893904e-18)
+(0 -2.775557562e-17 1.734723476e-18)
+(0 0 -3.469446952e-18)
+(0 -2.775557562e-17 6.938893904e-18)
+(-2.775557562e-17 8.326672685e-17 -1.734723476e-18)
+(2.775557562e-17 2.775557562e-17 0)
+(0 2.775557562e-17 6.938893904e-18)
+(0 5.551115123e-17 0)
+(2.775557562e-17 0 0)
+(0 5.551115123e-17 6.938893904e-18)
+(0 0 1.734723476e-18)
+(0 0 -3.469446952e-18)
+(0 0 6.938893904e-18)
+(2.775557562e-17 -5.551115123e-17 0)
+(0 -5.551115123e-17 0)
+(2.775557562e-17 0 6.938893904e-18)
+(0 -5.551115123e-17 1.734723476e-18)
+(0 0 -3.469446952e-18)
+(0 0 6.938893904e-18)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 0)
+(0 0 6.938893904e-18)
+(0 0 0)
+(2.775557562e-17 0 0)
+(0 0 6.938893904e-18)
+(0 1.110223025e-16 1.734723476e-18)
+(0 -5.551115123e-17 -3.469446952e-18)
+(0 -5.551115123e-17 6.938893904e-18)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 -1.734723476e-18)
+(2.775557562e-17 0 6.938893904e-18)
+(0 1.110223025e-16 1.734723476e-18)
+(0 0 -3.469446952e-18)
+(0 0 6.938893904e-18)
+(2.775557562e-17 1.110223025e-16 0)
+(2.775557562e-17 1.110223025e-16 0)
+(0 1.110223025e-16 6.938893904e-18)
+(0 0 1.734723476e-18)
+(0 1.110223025e-16 -3.469446952e-18)
+(0 1.110223025e-16 6.938893904e-18)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 0)
+(0 0 6.938893904e-18)
+(2.775557562e-17 -2.220446049e-16 0)
+(2.775557562e-17 0 0)
+(0 1.110223025e-16 6.938893904e-18)
+(2.775557562e-17 -2.220446049e-16 1.734723476e-18)
+(0 -1.110223025e-16 1.734723476e-18)
+(-2.775557562e-17 1.110223025e-16 6.938893904e-18)
+(0 -1.110223025e-16 5.204170428e-18)
+(-2.775557562e-17 0 -1.734723476e-18)
+(0 0 6.938893904e-18)
+(5.551115123e-17 -1.110223025e-16 3.469446952e-18)
+(2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 0 6.938893904e-18)
+(5.551115123e-17 0 1.734723476e-18)
+(2.775557562e-17 -2.220446049e-16 -1.734723476e-18)
+(0 2.220446049e-16 6.938893904e-18)
+(0 0 0)
+(0 0 0)
+(0 -1.110223025e-16 6.938893904e-18)
+(0 0 0)
+(0 0 1.734723476e-18)
+(0 1.110223025e-16 6.938893904e-18)
+(0 -1.110223025e-16 3.469446952e-18)
+(-2.775557562e-17 2.220446049e-16 -1.734723476e-18)
+(0 0 6.938893904e-18)
+(0 -1.110223025e-16 0)
+(2.775557562e-17 1.110223025e-16 -1.734723476e-18)
+(0 2.220446049e-16 6.938893904e-18)
+(2.775557562e-17 -1.110223025e-16 0)
+(2.775557562e-17 0 0)
+(0 0 6.938893904e-18)
+(-2.775557562e-17 0 -1.734723476e-18)
+(2.775557562e-17 2.220446049e-16 -3.469446952e-18)
+(2.775557562e-17 2.220446049e-16 6.938893904e-18)
+(-2.775557562e-17 0 -1.734723476e-18)
+(-2.775557562e-17 0 -1.734723476e-18)
+(-2.775557562e-17 2.220446049e-16 6.938893904e-18)
+(0 0 1.734723476e-18)
+(2.775557562e-17 -2.220446049e-16 1.734723476e-18)
+(-2.775557562e-17 4.440892099e-16 6.938893904e-18)
+(0 -2.220446049e-16 0)
+(5.551115123e-17 0 3.469446952e-18)
+(-2.775557562e-17 2.220446049e-16 6.938893904e-18)
+(-2.775557562e-17 0 -1.734723476e-18)
+(-2.775557562e-17 0 -1.734723476e-18)
+(-2.775557562e-17 0 6.938893904e-18)
+(0 0 1.734723476e-18)
+(2.775557562e-17 0 1.734723476e-18)
+(-2.775557562e-17 -2.220446049e-16 6.938893904e-18)
+(0 0 1.734723476e-18)
+(2.775557562e-17 0 -1.734723476e-18)
+(-2.775557562e-17 0 6.938893904e-18)
+(0 0 1.734723476e-18)
+(2.775557562e-17 -4.440892099e-16 0)
+(0 2.220446049e-16 0)
+(5.551115123e-17 -2.220446049e-16 1.734723476e-18)
+(0 -4.440892099e-16 -1.734723476e-18)
+(-2.775557562e-17 2.220446049e-16 6.938893904e-18)
+(8.326672685e-17 -2.220446049e-16 3.469446952e-18)
+(-2.775557562e-17 -2.220446049e-16 1.734723476e-18)
+(2.775557562e-17 0 0)
+(0 -4.440892099e-16 1.734723476e-18)
+(2.775557562e-17 0 1.734723476e-18)
+(-2.775557562e-17 0 6.938893904e-18)
+(-2.775557562e-17 0 0)
+(2.775557562e-17 -4.440892099e-16 0)
+(-2.775557562e-17 0 6.938893904e-18)
+(5.551115123e-17 -6.661338148e-16 5.204170428e-18)
+(5.551115123e-17 -2.220446049e-16 1.734723476e-18)
+(-2.775557562e-17 0 6.938893904e-18)
+(5.551115123e-17 -4.440892099e-16 0)
+(0 -2.220446049e-16 1.734723476e-18)
+(-2.775557562e-17 -2.220446049e-16 6.938893904e-18)
+(-2.775557562e-17 0 -5.204170428e-18)
+(-2.775557562e-17 2.220446049e-16 3.469446952e-18)
+(-2.775557562e-17 0 6.938893904e-18)
+(8.326672685e-17 -2.220446049e-16 3.469446952e-18)
+(0 0 1.734723476e-18)
+(-2.775557562e-17 0 6.938893904e-18)
+(-2.775557562e-17 2.220446049e-16 0)
+(0 6.661338148e-16 0)
+(-2.775557562e-17 0 6.938893904e-18)
+(0 4.440892099e-16 -1.734723476e-18)
+(2.775557562e-17 0 1.734723476e-18)
+(-2.775557562e-17 0 6.938893904e-18)
+(-2.775557562e-17 0 -5.204170428e-18)
+(-2.775557562e-17 0 3.469446952e-18)
+(-2.775557562e-17 0 6.938893904e-18)
+(-2.775557562e-17 2.220446049e-16 -5.204170428e-18)
+(0 -2.220446049e-16 0)
+(0 -2.220446049e-16 0)
+(8.326672685e-17 2.220446049e-16 3.469446952e-18)
+(0 2.220446049e-16 -1.734723476e-18)
+(-2.775557562e-17 0 6.938893904e-18)
+(-2.775557562e-17 4.440892099e-16 -1.734723476e-18)
+(0 2.220446049e-16 -1.734723476e-18)
+(-2.775557562e-17 -2.220446049e-16 6.938893904e-18)
+(0 -2.220446049e-16 3.469446952e-18)
+(2.775557562e-17 0 3.469446952e-18)
+(-2.775557562e-17 0 6.938893904e-18)
+(5.551115123e-17 -4.440892099e-16 3.469446952e-18)
+(0 0 1.734723476e-18)
+(-2.775557562e-17 0 6.938893904e-18)
+(-2.775557562e-17 2.220446049e-16 -5.204170428e-18)
+(-2.775557562e-17 -4.440892099e-16 -1.734723476e-18)
+(-2.775557562e-17 0 6.938893904e-18)
+(8.326672685e-17 -2.220446049e-16 6.938893904e-18)
+(2.775557562e-17 -4.440892099e-16 -1.734723476e-18)
+(-2.775557562e-17 0 6.938893904e-18)
+(0 0 3.469446952e-18)
+(2.775557562e-17 2.220446049e-16 3.469446952e-18)
+(-2.775557562e-17 -2.220446049e-16 6.938893904e-18)
+(0 -2.220446049e-16 3.469446952e-18)
+(0 2.220446049e-16 -1.734723476e-18)
+(-2.775557562e-17 0 6.938893904e-18)
+(5.551115123e-17 2.220446049e-16 1.734723476e-18)
+(0 0 1.734723476e-18)
+(-2.775557562e-17 2.220446049e-16 6.938893904e-18)
+(-2.775557562e-17 2.220446049e-16 -1.734723476e-18)
+(-2.775557562e-17 0 -1.734723476e-18)
+(-2.775557562e-17 0 6.938893904e-18)
+(-2.775557562e-17 4.440892099e-16 -1.734723476e-18)
+(0 -4.440892099e-16 0)
+(0 -8.881784197e-16 0)
+(2.775557562e-17 4.440892099e-16 1.734723476e-18)
+(0 0 0)
+(0 -4.440892099e-16 0)
+(2.775557562e-17 -4.440892099e-16 -1.734723476e-18)
+(0 4.440892099e-16 0)
+(0 -8.881784197e-16 0)
+(2.775557562e-17 0 1.734723476e-18)
+(0 0 0)
+(0 -4.440892099e-16 0)
+(2.775557562e-17 0 0)
+(0 0 0)
+(0 -4.440892099e-16 0)
+(2.775557562e-17 0 1.734723476e-18)
+(0 -4.440892099e-16 0)
+(0 0 0)
+(2.775557562e-17 0 -1.734723476e-18)
+(0 -4.440892099e-16 0)
+(0 -4.440892099e-16 0)
+(2.775557562e-17 0 1.734723476e-18)
+(0 0 0)
+(0 -8.881784197e-16 0)
+(0 -4.440892099e-16 0)
+(2.775557562e-17 0 1.734723476e-18)
+(0 4.440892099e-16 0)
+(0 0 0)
+(2.775557562e-17 -4.440892099e-16 3.469446952e-18)
+(0 -4.440892099e-16 0)
+(0 0 0)
+(2.775557562e-17 0 1.734723476e-18)
+(0 0 0)
+(0 -4.440892099e-16 0)
+(2.775557562e-17 0 0)
+(0 4.440892099e-16 0)
+(0 0 -6.938893904e-18)
+(2.775557562e-17 0 0)
+(0 -6.938893904e-18 -1.734723476e-18)
+(-2.775557562e-17 6.938893904e-18 -6.938893904e-18)
+(2.775557562e-17 0 -1.387778781e-17)
+(2.775557562e-17 -1.387778781e-17 -1.734723476e-18)
+(2.775557562e-17 -1.387778781e-17 -6.938893904e-18)
+(0 0 0)
+(0 0 0)
+(0 -1.387778781e-17 0)
+(0 0 0)
+(0 -2.775557562e-17 0)
+(0 2.775557562e-17 -6.938893904e-18)
+(0 0 0)
+(-2.775557562e-17 2.775557562e-17 1.734723476e-18)
+(0 -2.775557562e-17 -6.938893904e-18)
+(0 5.551115123e-17 -6.938893904e-18)
+(0 0 -1.734723476e-18)
+(2.775557562e-17 0 -6.938893904e-18)
+(2.775557562e-17 2.775557562e-17 0)
+(2.775557562e-17 2.775557562e-17 0)
+(2.775557562e-17 2.775557562e-17 -6.938893904e-18)
+(2.775557562e-17 0 0)
+(2.775557562e-17 5.551115123e-17 0)
+(0 0 -6.938893904e-18)
+(0 0 -6.938893904e-18)
+(0 0 -1.734723476e-18)
+(0 0 -6.938893904e-18)
+(-2.775557562e-17 -5.551115123e-17 -6.938893904e-18)
+(0 -5.551115123e-17 0)
+(0 -5.551115123e-17 -6.938893904e-18)
+(0 0 -6.938893904e-18)
+(0 0 -1.734723476e-18)
+(0 0 -6.938893904e-18)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 1.110223025e-16 -6.938893904e-18)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 0)
+(0 1.110223025e-16 -6.938893904e-18)
+(0 -5.551115123e-17 -6.938893904e-18)
+(0 -5.551115123e-17 -1.734723476e-18)
+(0 -1.110223025e-16 -6.938893904e-18)
+(-2.775557562e-17 0 -6.938893904e-18)
+(0 -5.551115123e-17 -3.469446952e-18)
+(0 1.110223025e-16 -6.938893904e-18)
+(0 0 -6.938893904e-18)
+(0 0 -1.734723476e-18)
+(0 1.110223025e-16 -6.938893904e-18)
+(2.775557562e-17 1.110223025e-16 0)
+(2.775557562e-17 0 0)
+(0 1.110223025e-16 -6.938893904e-18)
+(0 0 -6.938893904e-18)
+(0 -1.110223025e-16 -1.734723476e-18)
+(0 0 -6.938893904e-18)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 0)
+(0 -1.110223025e-16 -6.938893904e-18)
+(2.775557562e-17 -1.110223025e-16 0)
+(2.775557562e-17 0 0)
+(-2.775557562e-17 1.110223025e-16 -6.938893904e-18)
+(2.775557562e-17 -1.110223025e-16 -6.938893904e-18)
+(0 -1.110223025e-16 0)
+(0 1.110223025e-16 -6.938893904e-18)
+(2.775557562e-17 0 0)
+(-2.775557562e-17 -1.110223025e-16 0)
+(-2.775557562e-17 1.110223025e-16 -6.938893904e-18)
+(2.775557562e-17 0 -6.938893904e-18)
+(0 2.220446049e-16 -1.734723476e-18)
+(0 2.220446049e-16 -6.938893904e-18)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 0 -3.469446952e-18)
+(0 1.110223025e-16 -6.938893904e-18)
+(5.551115123e-17 0 0)
+(2.775557562e-17 -1.110223025e-16 -6.938893904e-18)
+(0 0 -6.938893904e-18)
+(0 -1.110223025e-16 -6.938893904e-18)
+(0 -1.110223025e-16 0)
+(0 0 -6.938893904e-18)
+(2.775557562e-17 0 0)
+(0 -1.110223025e-16 -3.469446952e-18)
+(0 1.110223025e-16 -6.938893904e-18)
+(0 -2.220446049e-16 -6.938893904e-18)
+(0 -1.110223025e-16 0)
+(0 -1.110223025e-16 -6.938893904e-18)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 0)
+(-2.775557562e-17 0 6.938893904e-18)
+(2.775557562e-17 -2.220446049e-16 6.938893904e-18)
+(2.775557562e-17 -2.220446049e-16 -1.734723476e-18)
+(-2.775557562e-17 0 -6.938893904e-18)
+(-2.775557562e-17 0 6.938893904e-18)
+(-2.775557562e-17 0 1.734723476e-18)
+(-2.775557562e-17 0 -6.938893904e-18)
+(-2.775557562e-17 -2.220446049e-16 6.938893904e-18)
+(5.551115123e-17 0 -3.469446952e-18)
+(-2.775557562e-17 0 -6.938893904e-18)
+(-2.775557562e-17 0 6.938893904e-18)
+(8.326672685e-17 -2.220446049e-16 -6.938893904e-18)
+(-2.775557562e-17 2.220446049e-16 -6.938893904e-18)
+(-2.775557562e-17 0 6.938893904e-18)
+(-2.775557562e-17 0 1.734723476e-18)
+(-2.775557562e-17 2.220446049e-16 -6.938893904e-18)
+(-2.775557562e-17 -2.220446049e-16 6.938893904e-18)
+(5.551115123e-17 -4.440892099e-16 -3.469446952e-18)
+(-2.775557562e-17 0 -6.938893904e-18)
+(-2.775557562e-17 0 6.938893904e-18)
+(0 0 -3.469446952e-18)
+(-2.775557562e-17 2.220446049e-16 -6.938893904e-18)
+(0 -2.220446049e-16 0)
+(2.775557562e-17 -2.220446049e-16 -1.734723476e-18)
+(-2.775557562e-17 -2.220446049e-16 -6.938893904e-18)
+(-2.775557562e-17 2.220446049e-16 6.938893904e-18)
+(0 0 -1.734723476e-18)
+(-2.775557562e-17 -2.220446049e-16 -6.938893904e-18)
+(2.775557562e-17 0 0)
+(0 -2.220446049e-16 -3.469446952e-18)
+(-2.775557562e-17 -2.220446049e-16 -6.938893904e-18)
+(-2.775557562e-17 0 6.938893904e-18)
+(0 -4.440892099e-16 -1.734723476e-18)
+(0 0 0)
+(-2.775557562e-17 0 6.938893904e-18)
+(2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 2.220446049e-16 -6.938893904e-18)
+(-2.775557562e-17 -2.220446049e-16 6.938893904e-18)
+(5.551115123e-17 -4.440892099e-16 -5.204170428e-18)
+(-2.775557562e-17 0 -6.938893904e-18)
+(-2.775557562e-17 4.440892099e-16 6.938893904e-18)
+(0 -2.220446049e-16 -1.734723476e-18)
+(-2.775557562e-17 0 -6.938893904e-18)
+(-2.775557562e-17 0 6.938893904e-18)
+(-2.775557562e-17 0 5.204170428e-18)
+(-2.775557562e-17 0 -6.938893904e-18)
+(-2.775557562e-17 2.220446049e-16 6.938893904e-18)
+(0 -4.440892099e-16 0)
+(-2.775557562e-17 0 -6.938893904e-18)
+(-2.775557562e-17 0 6.938893904e-18)
+(2.775557562e-17 0 -1.734723476e-18)
+(-2.775557562e-17 2.220446049e-16 -6.938893904e-18)
+(-2.775557562e-17 0 6.938893904e-18)
+(8.326672685e-17 -8.881784197e-16 -3.469446952e-18)
+(-2.775557562e-17 0 -6.938893904e-18)
+(-2.775557562e-17 0 6.938893904e-18)
+(2.775557562e-17 0 5.551115123e-17)
+(-2.775557562e-17 0 5.204170428e-18)
+(0 -6.938893904e-18 -5.551115123e-17)
+(-2.775557562e-17 2.220446049e-16 -6.938893904e-18)
+(2.775557562e-17 -1.387778781e-17 5.551115123e-17)
+(0 -2.220446049e-16 0)
+(5.551115123e-17 -1.387778781e-17 5.551115123e-17)
+(0 -2.220446049e-16 0)
+(0 0 5.551115123e-17)
+(-2.775557562e-17 2.220446049e-16 -6.938893904e-18)
+(2.775557562e-17 -2.775557562e-17 5.551115123e-17)
+(-2.775557562e-17 0 6.938893904e-18)
+(0 2.775557562e-17 5.551115123e-17)
+(0 0 0)
+(0 -2.775557562e-17 5.551115123e-17)
+(-2.775557562e-17 4.440892099e-16 -6.938893904e-18)
+(2.775557562e-17 0 5.551115123e-17)
+(-2.775557562e-17 2.220446049e-16 6.938893904e-18)
+(0 0 5.551115123e-17)
+(0 -6.661338148e-16 -1.734723476e-18)
+(2.775557562e-17 -1.110223025e-16 5.551115123e-17)
+(-2.775557562e-17 0 -6.938893904e-18)
+(0 -5.551115123e-17 5.551115123e-17)
+(-2.775557562e-17 0 6.938893904e-18)
+(5.551115123e-17 5.551115123e-17 5.551115123e-17)
+(2.775557562e-17 -4.440892099e-16 -1.734723476e-18)
+(2.775557562e-17 0 5.551115123e-17)
+(-2.775557562e-17 0 -6.938893904e-18)
+(0 -1.110223025e-16 5.551115123e-17)
+(-2.775557562e-17 0 6.938893904e-18)
+(2.775557562e-17 0 5.551115123e-17)
+(0 2.220446049e-16 -1.734723476e-18)
+(0 0 5.551115123e-17)
+(-2.775557562e-17 2.220446049e-16 -6.938893904e-18)
+(2.775557562e-17 1.110223025e-16 5.551115123e-17)
+(-2.775557562e-17 0 6.938893904e-18)
+(0 -1.110223025e-16 5.551115123e-17)
+(-2.775557562e-17 4.440892099e-16 1.734723476e-18)
+(2.775557562e-17 0 0)
+(-2.775557562e-17 2.220446049e-16 -6.938893904e-18)
+(5.551115123e-17 -1.110223025e-16 1.110223025e-16)
+(-2.775557562e-17 0 6.938893904e-18)
+(0 -2.220446049e-16 5.551115123e-17)
+(0 0 1.734723476e-18)
+(5.551115123e-17 -1.110223025e-16 1.110223025e-16)
+(-2.775557562e-17 2.220446049e-16 -6.938893904e-18)
+(0 0 5.551115123e-17)
+(-2.775557562e-17 4.440892099e-16 6.938893904e-18)
+(2.775557562e-17 -3.330669074e-16 5.551115123e-17)
+(2.775557562e-17 -2.220446049e-16 -1.734723476e-18)
+(2.775557562e-17 -2.220446049e-16 5.551115123e-17)
+(-2.775557562e-17 4.440892099e-16 -6.938893904e-18)
+(0 -2.220446049e-16 5.551115123e-17)
+(-2.775557562e-17 0 6.938893904e-18)
+(2.775557562e-17 -2.220446049e-16 5.551115123e-17)
+(0 -2.220446049e-16 -1.734723476e-18)
+(0 -2.220446049e-16 5.551115123e-17)
+(-2.775557562e-17 0 -6.938893904e-18)
+(2.775557562e-17 0 0)
+(-2.775557562e-17 2.220446049e-16 6.938893904e-18)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 2.220446049e-16 -1.734723476e-18)
+(2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 2.220446049e-16 -6.938893904e-18)
+(2.775557562e-17 0 0)
+(-2.775557562e-17 0 6.938893904e-18)
+(2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 0 1.734723476e-18)
+(2.775557562e-17 -4.440892099e-16 0)
+(-2.775557562e-17 0 -6.938893904e-18)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 4.440892099e-16 0)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 0 0)
+(2.775557562e-17 0 5.551115123e-17)
+(0 0 0)
+(2.775557562e-17 -4.440892099e-16 5.551115123e-17)
+(0 0 0)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 0 0)
+(5.551115123e-17 -2.220446049e-16 5.551115123e-17)
+(0 0 0)
+(2.775557562e-17 0 5.551115123e-17)
+(0 4.440892099e-16 0)
+(2.775557562e-17 0 5.551115123e-17)
+(0 -8.881784197e-16 0)
+(2.775557562e-17 -6.661338148e-16 5.551115123e-17)
+(0 4.440892099e-16 0)
+(2.775557562e-17 -4.440892099e-16 5.551115123e-17)
+(0 -4.440892099e-16 0)
+(2.775557562e-17 -4.440892099e-16 5.551115123e-17)
+(0 -4.440892099e-16 0)
+(2.775557562e-17 0 5.551115123e-17)
+(0 4.440892099e-16 0)
+(2.775557562e-17 0 5.551115123e-17)
+(0 0 0)
+(2.775557562e-17 0 5.551115123e-17)
+(0 0 0)
+(2.775557562e-17 -4.440892099e-16 5.551115123e-17)
+(0 4.440892099e-16 0)
+(2.775557562e-17 0 0)
+(0 0 0)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 0 0)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 0 0)
+(2.775557562e-17 -8.881784197e-16 5.551115123e-17)
+(0 -4.440892099e-16 0)
+(2.775557562e-17 -4.440892099e-16 0)
+(0 4.440892099e-16 0)
+(2.775557562e-17 -4.440892099e-16 0)
+(0 4.440892099e-16 0)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 4.440892099e-16 0)
+(2.775557562e-17 0 5.551115123e-17)
+(0 0 0)
+(2.775557562e-17 -4.440892099e-16 0)
+(0 0 0)
+(2.775557562e-17 -4.440892099e-16 0)
+(0 4.440892099e-16 1.387778781e-17)
+(2.775557562e-17 0 5.551115123e-17)
+(2.775557562e-17 0 -1.734723476e-18)
+(2.775557562e-17 -8.881784197e-16 0)
+(0 0 0)
+(2.775557562e-17 0 5.551115123e-17)
+(2.775557562e-17 0 6.938893904e-18)
+(0 0 0)
+(2.775557562e-17 -4.440892099e-16 1.734723476e-18)
+(2.775557562e-17 0 5.551115123e-17)
+(0 0 0)
+(2.775557562e-17 -4.440892099e-16 0)
+(0 0 1.387778781e-17)
+(2.775557562e-17 4.440892099e-16 5.551115123e-17)
+(2.775557562e-17 0 -1.734723476e-18)
+(5.551115123e-17 -4.440892099e-16 5.551115123e-17)
+(0 0 0)
+(5.551115123e-17 -4.440892099e-16 5.551115123e-17)
+(2.775557562e-17 0 6.938893904e-18)
+(5.551115123e-17 0 5.551115123e-17)
+(2.775557562e-17 0 0)
+(5.551115123e-17 -4.440892099e-16 5.551115123e-17)
+(5.551115123e-17 -1.734723476e-18 -1.387778781e-17)
+(5.551115123e-17 3.469446952e-18 -1.387778781e-17)
+(0 -3.469446952e-18 1.387778781e-17)
+(0 -6.938893904e-18 -2.775557562e-17)
+(-2.775557562e-17 1.387778781e-17 0)
+(2.775557562e-17 6.938893904e-18 -6.938893904e-18)
+(2.775557562e-17 0 -1.387778781e-17)
+(-2.775557562e-17 -1.387778781e-17 1.387778781e-17)
+(2.775557562e-17 -1.387778781e-17 -6.938893904e-18)
+(2.775557562e-17 1.387778781e-17 -2.775557562e-17)
+(2.775557562e-17 0 1.387778781e-17)
+(0 0 0)
+(-2.775557562e-17 -2.775557562e-17 -1.387778781e-17)
+(0 0 1.387778781e-17)
+(0 2.775557562e-17 0)
+(2.775557562e-17 0 -1.387778781e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 0)
+(0 0 -1.387778781e-17)
+(2.775557562e-17 0 0)
+(0 -2.775557562e-17 -1.387778781e-17)
+(0 0 -1.387778781e-17)
+(2.775557562e-17 0 0)
+(0 -5.551115123e-17 -1.387778781e-17)
+(2.775557562e-17 -5.551115123e-17 -1.387778781e-17)
+(2.775557562e-17 5.551115123e-17 0)
+(2.775557562e-17 0 0)
+(-2.775557562e-17 -5.551115123e-17 -1.387778781e-17)
+(2.775557562e-17 5.551115123e-17 0)
+(-5.551115123e-17 0 1.387778781e-17)
+(2.775557562e-17 -5.551115123e-17 -1.387778781e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 0)
+(-2.775557562e-17 0 -1.387778781e-17)
+(2.775557562e-17 -1.110223025e-16 0)
+(0 0 -1.387778781e-17)
+(5.551115123e-17 -1.110223025e-16 -1.387778781e-17)
+(2.775557562e-17 -5.551115123e-17 0)
+(0 -5.551115123e-17 -1.387778781e-17)
+(2.775557562e-17 0 -1.387778781e-17)
+(2.775557562e-17 5.551115123e-17 0)
+(2.775557562e-17 0 0)
+(-2.775557562e-17 -5.551115123e-17 -1.387778781e-17)
+(2.775557562e-17 0 0)
+(-5.551115123e-17 5.551115123e-17 1.387778781e-17)
+(2.775557562e-17 0 -1.387778781e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 0)
+(-2.775557562e-17 -1.110223025e-16 -1.387778781e-17)
+(2.775557562e-17 0 0)
+(0 1.110223025e-16 -1.387778781e-17)
+(2.775557562e-17 0 -1.387778781e-17)
+(2.775557562e-17 1.110223025e-16 0)
+(2.775557562e-17 -1.110223025e-16 0)
+(0 1.734723476e-18 -2.775557562e-17)
+(-2.775557562e-17 0 -1.387778781e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 -1.110223025e-16 0)
+(2.775557562e-17 -2.775557562e-17 -2.775557562e-17)
+(0 -1.110223025e-16 -1.387778781e-17)
+(0 1.387778781e-17 0)
+(2.775557562e-17 -2.220446049e-16 -1.387778781e-17)
+(0 0 2.775557562e-17)
+(0 0 0)
+(2.775557562e-17 0 0)
+(0 0 -1.387778781e-17)
+(2.775557562e-17 2.775557562e-17 0)
+(0 0 -1.387778781e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 -1.110223025e-16 -1.387778781e-17)
+(0 0 2.775557562e-17)
+(-2.775557562e-17 0 0)
+(2.775557562e-17 0 0)
+(0 -1.110223025e-16 0)
+(0 -5.551115123e-17 2.775557562e-17)
+(0 -1.110223025e-16 -1.387778781e-17)
+(-5.551115123e-17 5.551115123e-17 -2.775557562e-17)
+(0 0 -1.387778781e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 0)
+(0 -5.551115123e-17 2.775557562e-17)
+(2.775557562e-17 -1.110223025e-16 -1.387778781e-17)
+(2.775557562e-17 1.110223025e-16 0)
+(-2.775557562e-17 1.110223025e-16 0)
+(0 0 2.775557562e-17)
+(0 -1.110223025e-16 0)
+(2.775557562e-17 0 0)
+(0 0 -1.387778781e-17)
+(0 -1.110223025e-16 2.775557562e-17)
+(-2.775557562e-17 2.220446049e-16 -1.387778781e-17)
+(0 -1.110223025e-16 0)
+(0 -2.220446049e-16 1.387778781e-17)
+(0 -1.110223025e-16 5.551115123e-17)
+(0 -1.110223025e-16 -6.938893904e-18)
+(0 0 2.775557562e-17)
+(2.775557562e-17 1.110223025e-16 -1.387778781e-17)
+(0 -1.110223025e-16 5.551115123e-17)
+(2.775557562e-17 0 0)
+(0 -1.110223025e-16 2.775557562e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 0 2.775557562e-17)
+(-2.775557562e-17 0 -1.387778781e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 0)
+(0 -1.110223025e-16 2.775557562e-17)
+(0 0 -1.387778781e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 -1.387778781e-17)
+(0 -2.220446049e-16 2.775557562e-17)
+(2.775557562e-17 2.220446049e-16 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 0)
+(-2.775557562e-17 0 -1.387778781e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(2.775557562e-17 1.110223025e-16 0)
+(2.775557562e-17 0 0)
+(0 0 -1.387778781e-17)
+(2.775557562e-17 2.220446049e-16 0)
+(0 -1.110223025e-16 -2.775557562e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 0)
+(0 2.220446049e-16 6.938893904e-18)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 0 -1.387778781e-17)
+(2.775557562e-17 0 0)
+(0 0 -1.387778781e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 1.387778781e-17)
+(2.775557562e-17 0 0)
+(0 -2.220446049e-16 -1.387778781e-17)
+(0 -2.220446049e-16 0)
+(0 2.220446049e-16 -1.387778781e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(2.775557562e-17 -4.440892099e-16 1.387778781e-17)
+(2.775557562e-17 0 0)
+(0 -2.220446049e-16 -1.387778781e-17)
+(2.775557562e-17 0 0)
+(0 2.220446049e-16 -1.387778781e-17)
+(2.775557562e-17 2.220446049e-16 0)
+(2.775557562e-17 -2.220446049e-16 1.387778781e-17)
+(2.775557562e-17 0 0)
+(0 0 -1.387778781e-17)
+(2.775557562e-17 -4.440892099e-16 0)
+(0 0 -1.387778781e-17)
+(2.775557562e-17 -4.440892099e-16 0)
+(2.775557562e-17 -2.220446049e-16 1.387778781e-17)
+(2.775557562e-17 2.220446049e-16 0)
+(0 -2.220446049e-16 -1.387778781e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 2.220446049e-16 -1.387778781e-17)
+(2.775557562e-17 2.220446049e-16 0)
+(2.775557562e-17 0 1.387778781e-17)
+(2.775557562e-17 0 0)
+(0 -2.220446049e-16 -1.387778781e-17)
+(2.775557562e-17 -4.440892099e-16 0)
+(0 -2.220446049e-16 -1.387778781e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(2.775557562e-17 -2.220446049e-16 1.387778781e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 0 -1.387778781e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 -2.220446049e-16 -1.387778781e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 -2.220446049e-16 -6.938893904e-18)
+(2.775557562e-17 -4.440892099e-16 0)
+(0 0 -1.387778781e-17)
+(2.775557562e-17 -4.440892099e-16 0)
+(2.775557562e-17 0 -1.387778781e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 4.440892099e-16 0)
+(0 -2.220446049e-16 -1.387778781e-17)
+(-2.775557562e-17 4.440892099e-16 -2.775557562e-17)
+(0 -4.440892099e-16 -1.387778781e-17)
+(0 4.440892099e-16 0)
+(0 0 1.387778781e-17)
+(2.775557562e-17 0 5.551115123e-17)
+(0 0 -1.387778781e-17)
+(0 0 0)
+(0 0 -1.387778781e-17)
+(-2.775557562e-17 4.440892099e-16 -2.775557562e-17)
+(2.775557562e-17 0 1.387778781e-17)
+(0 0 0)
+(2.775557562e-17 2.220446049e-16 -1.387778781e-17)
+(0 -4.440892099e-16 0)
+(2.775557562e-17 0 -2.775557562e-17)
+(0 -4.440892099e-16 0)
+(2.775557562e-17 -4.440892099e-16 0)
+(0 -4.440892099e-16 0)
+(0 0 -1.387778781e-17)
+(0 -8.881784197e-16 0)
+(2.775557562e-17 -4.440892099e-16 -1.387778781e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 0 -1.387778781e-17)
+(2.775557562e-17 0 -2.775557562e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 0 -1.387778781e-17)
+(2.775557562e-17 -2.220446049e-16 -1.387778781e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 4.440892099e-16 -1.387778781e-17)
+(2.775557562e-17 -2.220446049e-16 -2.775557562e-17)
+(2.775557562e-17 -4.440892099e-16 0)
+(0 0 -1.387778781e-17)
+(2.775557562e-17 -8.881784197e-16 -1.387778781e-17)
+(2.775557562e-17 -6.661338148e-16 0)
+(0 2.220446049e-16 -1.387778781e-17)
+(2.775557562e-17 -2.220446049e-16 -2.775557562e-17)
+(2.775557562e-17 0 0)
+(0 -2.220446049e-16 -1.387778781e-17)
+(2.775557562e-17 -2.220446049e-16 -1.387778781e-17)
+(2.775557562e-17 0 0)
+(0 4.440892099e-16 -1.387778781e-17)
+(2.775557562e-17 0 -1.387778781e-17)
+(0 2.220446049e-16 -6.938893904e-18)
+(0 4.440892099e-16 -1.387778781e-17)
+(0 -2.220446049e-16 -1.387778781e-17)
+(2.775557562e-17 0 1.387778781e-17)
+(0 0 -1.387778781e-17)
+(0 0 0)
+(2.775557562e-17 0 1.387778781e-17)
+(0 2.220446049e-16 -1.387778781e-17)
+(2.775557562e-17 -2.220446049e-16 -2.775557562e-17)
+(2.775557562e-17 2.220446049e-16 0)
+(0 0 -1.387778781e-17)
+(0 0 -1.387778781e-17)
+(2.775557562e-17 0 1.387778781e-17)
+(0 -2.220446049e-16 -1.387778781e-17)
+(0 0 -1.387778781e-17)
+(2.775557562e-17 -2.220446049e-16 1.387778781e-17)
+(0 0 -1.387778781e-17)
+(0 0 0)
+(2.775557562e-17 -2.220446049e-16 1.387778781e-17)
+(0 2.220446049e-16 -1.387778781e-17)
+(2.775557562e-17 -2.220446049e-16 -2.775557562e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 4.440892099e-16 -1.387778781e-17)
+(0 2.220446049e-16 -1.387778781e-17)
+(2.775557562e-17 0 1.387778781e-17)
+(0 2.220446049e-16 -1.387778781e-17)
+(0 0 -1.387778781e-17)
+(2.775557562e-17 0 1.387778781e-17)
+(0 2.220446049e-16 -1.387778781e-17)
+(0 2.220446049e-16 0)
+(2.775557562e-17 0 1.387778781e-17)
+(0 0 -1.387778781e-17)
+(0 0 0)
+(2.775557562e-17 -4.440892099e-16 -1.387778781e-17)
+(0 -6.938893904e-18 0)
+(0 -4.440892099e-16 -6.938893904e-18)
+(2.775557562e-17 -1.387778781e-17 2.775557562e-17)
+(0 -4.440892099e-16 -2.775557562e-17)
+(2.775557562e-17 -1.387778781e-17 2.775557562e-17)
+(2.775557562e-17 -4.440892099e-16 -1.387778781e-17)
+(2.775557562e-17 0 2.775557562e-17)
+(0 0 -6.938893904e-18)
+(0 0 0)
+(0 0 -1.387778781e-17)
+(5.551115123e-17 -5.551115123e-17 0)
+(2.775557562e-17 -4.440892099e-16 -1.387778781e-17)
+(5.551115123e-17 0 0)
+(0 0 -6.938893904e-18)
+(0 0 0)
+(0 -8.881784197e-16 -2.775557562e-17)
+(2.775557562e-17 0 2.775557562e-17)
+(2.775557562e-17 0 -1.387778781e-17)
+(0 0 0)
+(0 -4.440892099e-16 -6.938893904e-18)
+(2.775557562e-17 5.551115123e-17 2.775557562e-17)
+(2.775557562e-17 -4.440892099e-16 -1.387778781e-17)
+(0 0 2.775557562e-17)
+(2.775557562e-17 -4.440892099e-16 -1.387778781e-17)
+(0 -1.110223025e-16 0)
+(0 -4.440892099e-16 -6.938893904e-18)
+(2.775557562e-17 -5.551115123e-17 2.775557562e-17)
+(0 -4.440892099e-16 -2.775557562e-17)
+(0 1.110223025e-16 0)
+(2.775557562e-17 0 -1.387778781e-17)
+(2.775557562e-17 0 2.775557562e-17)
+(0 -4.440892099e-16 -6.938893904e-18)
+(0 1.110223025e-16 0)
+(0 0 -1.387778781e-17)
+(2.775557562e-17 -1.110223025e-16 2.775557562e-17)
+(2.775557562e-17 0 -1.387778781e-17)
+(0 0 2.775557562e-17)
+(0 -4.440892099e-16 -6.938893904e-18)
+(0 0 2.775557562e-17)
+(0 0 -2.775557562e-17)
+(2.775557562e-17 0 2.775557562e-17)
+(2.775557562e-17 -4.440892099e-16 -1.387778781e-17)
+(0 -2.220446049e-16 2.775557562e-17)
+(0 0 -6.938893904e-18)
+(2.775557562e-17 -1.110223025e-16 2.775557562e-17)
+(2.775557562e-17 0 -1.387778781e-17)
+(2.775557562e-17 -2.220446049e-16 2.775557562e-17)
+(0 -8.881784197e-16 1.387778781e-17)
+(0 -1.110223025e-16 0)
+(-2.775557562e-17 0 1.387778781e-17)
+(2.775557562e-17 -1.110223025e-16 2.775557562e-17)
+(2.775557562e-17 0 -1.387778781e-17)
+(0 -2.220446049e-16 0)
+(0 -4.440892099e-16 -1.387778781e-17)
+(2.775557562e-17 0 2.775557562e-17)
+(0 0 -1.387778781e-17)
+(-2.775557562e-17 1.110223025e-16 2.775557562e-17)
+(2.775557562e-17 0 -1.387778781e-17)
+(0 2.220446049e-16 0)
+(0 -4.440892099e-16 1.387778781e-17)
+(0 0 0)
+(-2.775557562e-17 -4.440892099e-16 1.387778781e-17)
+(0 0 0)
+(2.775557562e-17 -4.440892099e-16 -1.387778781e-17)
+(0 0 0)
+(0 -4.440892099e-16 -1.387778781e-17)
+(0 -2.220446049e-16 0)
+(0 0 -2.081668171e-17)
+(0 0 0)
+(-2.775557562e-17 1.734723476e-18 -2.775557562e-17)
+(0 0 0)
+(-2.775557562e-17 0 -2.775557562e-17)
+(0 -2.220446049e-16 2.775557562e-17)
+(-2.775557562e-17 3.469446952e-18 1.387778781e-17)
+(0 -2.220446049e-16 2.775557562e-17)
+(2.775557562e-17 0 0)
+(0 -4.440892099e-16 0)
+(0 6.938893904e-18 0)
+(2.775557562e-17 -2.220446049e-16 0)
+(5.551115123e-17 0 -2.775557562e-17)
+(0 -2.220446049e-16 2.775557562e-17)
+(0 2.775557562e-17 2.775557562e-17)
+(0 0 2.775557562e-17)
+(0 -1.387778781e-17 -2.775557562e-17)
+(0 0 2.775557562e-17)
+(2.775557562e-17 -1.387778781e-17 -1.387778781e-17)
+(0 -2.220446049e-16 2.775557562e-17)
+(0 1.387778781e-17 0)
+(0 -2.220446049e-16 2.775557562e-17)
+(2.775557562e-17 -2.775557562e-17 -2.775557562e-17)
+(0 -2.220446049e-16 2.775557562e-17)
+(0 0 -1.387778781e-17)
+(0 0 2.775557562e-17)
+(0 2.775557562e-17 -2.775557562e-17)
+(0 0 2.775557562e-17)
+(0 2.775557562e-17 2.775557562e-17)
+(0 -4.440892099e-16 2.775557562e-17)
+(0 2.775557562e-17 0)
+(0 2.220446049e-16 0)
+(2.775557562e-17 0 0)
+(0 -2.220446049e-16 0)
+(0 -5.551115123e-17 0)
+(0 4.440892099e-16 0)
+(2.775557562e-17 5.551115123e-17 0)
+(0 -6.661338148e-16 2.775557562e-17)
+(2.775557562e-17 2.775557562e-17 2.775557562e-17)
+(0 -2.220446049e-16 0)
+(0 -2.775557562e-17 2.775557562e-17)
+(0 0 0)
+(0 -2.775557562e-17 -1.387778781e-17)
+(0 2.220446049e-16 0)
+(2.775557562e-17 2.775557562e-17 2.775557562e-17)
+(0 0 2.775557562e-17)
+(0 5.551115123e-17 2.775557562e-17)
+(0 -4.440892099e-16 0)
+(0 -5.551115123e-17 -1.387778781e-17)
+(0 4.440892099e-16 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 -5.551115123e-17)
+(0 0 0)
+(0 8.881784197e-16 -2.775557562e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 -5.551115123e-17)
+(0 0 -2.775557562e-17)
+(0 0 -2.775557562e-17)
+(0 -5.551115123e-17 -2.775557562e-17)
+(2.775557562e-17 4.440892099e-16 -5.551115123e-17)
+(-5.551115123e-17 5.551115123e-17 1.387778781e-17)
+(0 0 -2.775557562e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 -5.551115123e-17)
+(0 0 0)
+(2.775557562e-17 -4.440892099e-16 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 -4.440892099e-16 0)
+(0 0 -2.775557562e-17)
+(2.775557562e-17 0 0)
+(0 0 2.775557562e-17)
+(2.775557562e-17 -4.440892099e-16 0)
+(0 0 -1.387778781e-17)
+(-5.551115123e-17 5.551115123e-17 2.775557562e-17)
+(0 -5.551115123e-17 2.775557562e-17)
+(0 -5.551115123e-17 -1.387778781e-17)
+(2.775557562e-17 0 0)
+(0 5.551115123e-17 0)
+(2.775557562e-17 0 0)
+(0 0 -2.775557562e-17)
+(0 -5.551115123e-17 -2.775557562e-17)
+(-5.551115123e-17 5.551115123e-17 1.387778781e-17)
+(2.775557562e-17 0 0)
+(0 0 0)
+(2.775557562e-17 0 0)
+(0 0 -2.775557562e-17)
+(0 0 2.775557562e-17)
+(0 0 -1.387778781e-17)
+(2.775557562e-17 -1.110223025e-16 0)
+(0 0 0)
+(2.775557562e-17 -1.110223025e-16 0)
+(0 -1.110223025e-16 -2.775557562e-17)
+(0 0 2.775557562e-17)
+(0 -1.110223025e-16 -1.387778781e-17)
+(-2.775557562e-17 1.110223025e-16 0)
+(2.775557562e-17 0 2.775557562e-17)
+(0 -1.110223025e-16 -1.387778781e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 -1.110223025e-16 0)
+(2.775557562e-17 -1.110223025e-16 0)
+(0 0 -2.775557562e-17)
+(2.775557562e-17 -1.110223025e-16 2.775557562e-17)
+(0 -2.220446049e-16 -1.387778781e-17)
+(2.775557562e-17 -1.110223025e-16 0)
+(2.775557562e-17 -1.110223025e-16 0)
+(2.775557562e-17 -1.110223025e-16 0)
+(0 -1.110223025e-16 -2.775557562e-17)
+(2.775557562e-17 0 2.775557562e-17)
+(0 0 -1.387778781e-17)
+(0 0 -2.775557562e-17)
+(0 -2.220446049e-16 0)
+(-2.775557562e-17 0 0)
+(2.775557562e-17 0 0)
+(0 0 0)
+(2.775557562e-17 0 0)
+(0 -1.110223025e-16 -2.775557562e-17)
+(0 0 2.775557562e-17)
+(0 0 -1.387778781e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 0 0)
+(2.775557562e-17 0 0)
+(0 0 -2.775557562e-17)
+(0 2.220446049e-16 2.775557562e-17)
+(0 -2.220446049e-16 -1.387778781e-17)
+(2.775557562e-17 -2.220446049e-16 -2.775557562e-17)
+(2.775557562e-17 -2.220446049e-16 -2.775557562e-17)
+(0 1.734723476e-18 0)
+(-2.775557562e-17 4.440892099e-16 1.387778781e-17)
+(2.775557562e-17 0 -2.775557562e-17)
+(2.775557562e-17 0 -2.775557562e-17)
+(0 -2.775557562e-17 0)
+(0 2.220446049e-16 0)
+(2.775557562e-17 -5.551115123e-17 2.775557562e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 -2.775557562e-17 -2.775557562e-17)
+(2.775557562e-17 -2.220446049e-16 -2.775557562e-17)
+(0 0 0)
+(0 0 0)
+(0 -2.775557562e-17 -2.775557562e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 0 -2.775557562e-17)
+(2.775557562e-17 0 -2.775557562e-17)
+(0 -5.551115123e-17 0)
+(0 0 0)
+(0 0 -2.775557562e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 0 0)
+(2.775557562e-17 0 -2.775557562e-17)
+(0 -1.110223025e-16 -2.775557562e-17)
+(0 2.220446049e-16 0)
+(0 -5.551115123e-17 2.775557562e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 0 0)
+(2.775557562e-17 -2.220446049e-16 -2.775557562e-17)
+(0 0 -2.775557562e-17)
+(0 -2.220446049e-16 0)
+(0 0 0)
+(2.775557562e-17 0 0)
+(0 0 -2.775557562e-17)
+(2.775557562e-17 -2.220446049e-16 -2.775557562e-17)
+(0 0 0)
+(0 -2.220446049e-16 0)
+(0 -1.110223025e-16 -2.775557562e-17)
+(2.775557562e-17 2.220446049e-16 0)
+(0 -2.220446049e-16 0)
+(2.775557562e-17 -2.220446049e-16 -2.775557562e-17)
+(0 -1.110223025e-16 0)
+(0 -2.220446049e-16 0)
+(2.775557562e-17 0 -2.775557562e-17)
+(0 -2.220446049e-16 -1.387778781e-17)
+(0 -1.110223025e-16 0)
+(2.775557562e-17 0 -2.775557562e-17)
+(2.775557562e-17 -1.110223025e-16 -2.775557562e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(2.775557562e-17 0 -2.775557562e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 0 0)
+(2.775557562e-17 0 -2.775557562e-17)
+(0 -1.110223025e-16 -2.775557562e-17)
+(-2.775557562e-17 2.220446049e-16 0)
+(0 0 0)
+(-2.775557562e-17 0 2.775557562e-17)
+(0 0 -2.775557562e-17)
+(2.775557562e-17 0 -2.775557562e-17)
+(2.775557562e-17 1.110223025e-16 -2.775557562e-17)
+(0 2.220446049e-16 0)
+(0 2.220446049e-16 0)
+(2.775557562e-17 0 0)
+(0 -2.220446049e-16 0)
+(0 -4.440892099e-16 0)
+(0 0 0)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 0 0)
+(2.775557562e-17 -4.440892099e-16 1.387778781e-17)
+(0 -2.220446049e-16 0)
+(2.775557562e-17 0 -2.775557562e-17)
+(0 2.220446049e-16 0)
+(2.775557562e-17 0 0)
+(0 0 0)
+(2.775557562e-17 -2.220446049e-16 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 -2.775557562e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 0)
+(0 0 0)
+(2.775557562e-17 -2.220446049e-16 1.387778781e-17)
+(0 0 0)
+(2.775557562e-17 0 -2.775557562e-17)
+(2.775557562e-17 -4.440892099e-16 0)
+(2.775557562e-17 -4.440892099e-16 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 -2.220446049e-16 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 -2.220446049e-16 -2.775557562e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 -4.440892099e-16 1.387778781e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 -2.775557562e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(2.775557562e-17 -6.661338148e-16 0)
+(2.775557562e-17 -2.220446049e-16 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 -2.220446049e-16 0)
+(2.775557562e-17 0 -2.775557562e-17)
+(0 2.220446049e-16 0)
+(2.775557562e-17 0 0)
+(0 0 0)
+(2.775557562e-17 2.220446049e-16 1.387778781e-17)
+(0 -2.220446049e-16 0)
+(2.775557562e-17 -4.440892099e-16 -2.775557562e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(2.775557562e-17 0 0)
+(0 2.220446049e-16 0)
+(2.775557562e-17 0 0)
+(0 2.220446049e-16 0)
+(2.775557562e-17 -2.220446049e-16 -2.775557562e-17)
+(0 0 0)
+(0 0 0)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 2.220446049e-16 -1.387778781e-17)
+(0 -2.220446049e-16 0)
+(2.775557562e-17 2.220446049e-16 -2.775557562e-17)
+(0 0 0)
+(0 -4.440892099e-16 0)
+(2.775557562e-17 0 5.551115123e-17)
+(2.775557562e-17 0 0)
+(0 0 0)
+(2.775557562e-17 0 -2.775557562e-17)
+(2.775557562e-17 -4.440892099e-16 5.551115123e-17)
+(0 2.220446049e-16 0)
+(0 0 0)
+(2.775557562e-17 0 -1.387778781e-17)
+(2.775557562e-17 -4.440892099e-16 5.551115123e-17)
+(2.775557562e-17 -2.220446049e-16 -2.775557562e-17)
+(0 4.440892099e-16 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 -4.440892099e-16 5.551115123e-17)
+(2.775557562e-17 0 1.387778781e-17)
+(0 0 0)
+(2.775557562e-17 -4.440892099e-16 -2.775557562e-17)
+(0 0 0)
+(0 0 0)
+(0 -4.440892099e-16 0)
+(2.775557562e-17 2.220446049e-16 0)
+(0 -8.881784197e-16 0)
+(2.775557562e-17 -2.220446049e-16 -2.775557562e-17)
+(0 -2.220446049e-16 0)
+(2.775557562e-17 -2.220446049e-16 0)
+(2.775557562e-17 -6.661338148e-16 -2.775557562e-17)
+(0 -2.220446049e-16 0)
+(2.775557562e-17 -2.220446049e-16 -1.387778781e-17)
+(2.775557562e-17 0 -2.775557562e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(2.775557562e-17 -2.220446049e-16 1.387778781e-17)
+(2.775557562e-17 -2.220446049e-16 -2.775557562e-17)
+(0 -2.220446049e-16 0)
+(2.775557562e-17 2.220446049e-16 0)
+(2.775557562e-17 -4.440892099e-16 -2.775557562e-17)
+(0 -2.220446049e-16 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 -4.440892099e-16 -2.775557562e-17)
+(0 2.220446049e-16 0)
+(2.775557562e-17 0 -1.387778781e-17)
+(2.775557562e-17 0 -2.775557562e-17)
+(0 -4.440892099e-16 0)
+(0 -4.440892099e-16 -1.387778781e-17)
+(-2.775557562e-17 4.440892099e-16 5.551115123e-17)
+(0 0 0)
+(0 0 -1.387778781e-17)
+(0 0 0)
+(0 -8.881784197e-16 0)
+(0 4.440892099e-16 -1.387778781e-17)
+(-2.775557562e-17 4.440892099e-16 5.551115123e-17)
+(0 -4.440892099e-16 0)
+(0 -4.440892099e-16 -1.387778781e-17)
+(2.775557562e-17 0 -2.775557562e-17)
+(0 0 0)
+(0 -4.440892099e-16 -1.387778781e-17)
+(-2.775557562e-17 4.440892099e-16 5.551115123e-17)
+(0 -4.440892099e-16 0)
+(0 0 -1.387778781e-17)
+(0 0 0)
+(0 -4.440892099e-16 0)
+(0 -4.440892099e-16 -1.387778781e-17)
+(-2.775557562e-17 4.440892099e-16 5.551115123e-17)
+(0 0 0)
+(0 0 -1.387778781e-17)
+(0 -8.881784197e-16 0)
+(2.775557562e-17 0 -5.551115123e-17)
+(-2.775557562e-17 0 2.775557562e-17)
+(0 -4.440892099e-16 0)
+(0 0 0)
+(0 0 0)
+(0 -8.881784197e-16 0)
+(2.775557562e-17 -4.440892099e-16 -5.551115123e-17)
+(-2.775557562e-17 0 2.775557562e-17)
+(0 0 0)
+(0 0 0)
+(2.775557562e-17 -4.440892099e-16 -1.387778781e-17)
+(5.551115123e-17 -1.734723476e-18 1.387778781e-17)
+(0 0 0)
+(0 -6.938893904e-18 1.387778781e-17)
+(2.775557562e-17 3.469446952e-18 -2.775557562e-17)
+(2.775557562e-17 1.387778781e-17 -1.387778781e-17)
+(-2.775557562e-17 0 0)
+(2.775557562e-17 -4.163336342e-17 -1.387778781e-17)
+(0 0 0)
+(2.775557562e-17 2.775557562e-17 0)
+(0 6.938893904e-18 2.775557562e-17)
+(2.775557562e-17 0 0)
+(5.551115123e-17 -1.387778781e-17 -2.775557562e-17)
+(0 2.775557562e-17 -1.387778781e-17)
+(0 -1.387778781e-17 -5.551115123e-17)
+(0 0 -1.387778781e-17)
+(0 -1.387778781e-17 0)
+(2.775557562e-17 5.551115123e-17 0)
+(5.551115123e-17 -1.387778781e-17 -2.775557562e-17)
+(2.775557562e-17 -5.551115123e-17 0)
+(2.775557562e-17 -1.387778781e-17 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 -2.775557562e-17)
+(2.775557562e-17 0 0)
+(0 0 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 -2.775557562e-17)
+(2.775557562e-17 0 0)
+(5.551115123e-17 0 0)
+(2.775557562e-17 -5.551115123e-17 0)
+(2.775557562e-17 2.775557562e-17 2.775557562e-17)
+(2.775557562e-17 0 0)
+(0 0 -2.775557562e-17)
+(2.775557562e-17 1.110223025e-16 0)
+(0 0 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 5.551115123e-17 -2.775557562e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 -2.775557562e-17)
+(0 -1.110223025e-16 -1.387778781e-17)
+(2.775557562e-17 0 -2.775557562e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 -2.775557562e-17 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 -2.775557562e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 -2.775557562e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 -5.551115123e-17 0)
+(0 -2.220446049e-16 0)
+(0 0 -2.775557562e-17)
+(2.775557562e-17 -1.110223025e-16 0)
+(0 0 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 -2.775557562e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 -2.775557562e-17)
+(2.775557562e-17 0 0)
+(0 -5.551115123e-17 -2.775557562e-17)
+(0 -1.110223025e-16 0)
+(-5.551115123e-17 5.551115123e-17 2.775557562e-17)
+(0 2.220446049e-16 1.387778781e-17)
+(0 0 -2.775557562e-17)
+(0 -2.220446049e-16 1.387778781e-17)
+(0 -5.551115123e-17 0)
+(0 -2.220446049e-16 1.387778781e-17)
+(2.775557562e-17 0 -2.775557562e-17)
+(0 0 1.387778781e-17)
+(2.775557562e-17 -5.551115123e-17 -2.775557562e-17)
+(0 -2.220446049e-16 1.387778781e-17)
+(2.775557562e-17 0 -2.775557562e-17)
+(0 2.220446049e-16 1.387778781e-17)
+(0 0 0)
+(0 0 0)
+(0 -4.440892099e-16 1.387778781e-17)
+(2.775557562e-17 3.469446952e-18 5.551115123e-17)
+(0 0 5.551115123e-17)
+(2.775557562e-17 -6.938893904e-18 0)
+(2.775557562e-17 -2.220446049e-16 2.775557562e-17)
+(0 0 0)
+(2.775557562e-17 0 -2.775557562e-17)
+(0 6.938893904e-18 -5.551115123e-17)
+(2.775557562e-17 -4.440892099e-16 1.387778781e-17)
+(0 6.938893904e-18 5.551115123e-17)
+(0 -5.551115123e-17 0)
+(0 -1.387778781e-17 5.551115123e-17)
+(0 0 1.387778781e-17)
+(0 -1.387778781e-17 -5.551115123e-17)
+(0 1.110223025e-16 -2.775557562e-17)
+(0 -1.387778781e-17 0)
+(2.775557562e-17 0 1.387778781e-17)
+(2.775557562e-17 -1.387778781e-17 0)
+(0 -5.551115123e-17 0)
+(2.775557562e-17 0 5.551115123e-17)
+(2.775557562e-17 -2.220446049e-16 2.775557562e-17)
+(0 -2.775557562e-17 5.551115123e-17)
+(2.775557562e-17 -1.110223025e-16 -2.775557562e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 1.387778781e-17)
+(5.551115123e-17 0 5.551115123e-17)
+(2.775557562e-17 -5.551115123e-17 -2.775557562e-17)
+(2.775557562e-17 0 5.551115123e-17)
+(2.775557562e-17 -2.220446049e-16 2.775557562e-17)
+(0 0 5.551115123e-17)
+(0 0 -2.775557562e-17)
+(0 0 -5.551115123e-17)
+(2.775557562e-17 0 1.387778781e-17)
+(0 0 0)
+(-5.551115123e-17 1.665334537e-16 5.551115123e-17)
+(2.775557562e-17 0 5.551115123e-17)
+(2.775557562e-17 -4.440892099e-16 2.775557562e-17)
+(2.775557562e-17 0 0)
+(0 -1.110223025e-16 -2.775557562e-17)
+(0 0 0)
+(2.775557562e-17 -2.220446049e-16 1.387778781e-17)
+(2.775557562e-17 0 5.551115123e-17)
+(0 0 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 2.775557562e-17)
+(0 5.551115123e-17 0)
+(2.775557562e-17 0 -2.775557562e-17)
+(0 0 5.551115123e-17)
+(2.775557562e-17 0 1.387778781e-17)
+(0 0 -5.551115123e-17)
+(2.775557562e-17 0 -2.775557562e-17)
+(0 0 0)
+(2.775557562e-17 -2.220446049e-16 2.775557562e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 -2.775557562e-17)
+(0 -5.551115123e-17 -1.110223025e-16)
+(0 0 0)
+(-2.775557562e-17 0 0)
+(0 0 0)
+(0 0 5.551115123e-17)
+(0 2.220446049e-16 1.387778781e-17)
+(0 -5.551115123e-17 -5.551115123e-17)
+(0 -1.110223025e-16 -2.775557562e-17)
+(0 -1.110223025e-16 0)
+(0 0 1.387778781e-17)
+(2.775557562e-17 -5.551115123e-17 0)
+(0 1.110223025e-16 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 -4.440892099e-16 2.775557562e-17)
+(0 0 0)
+(2.775557562e-17 -1.110223025e-16 -2.775557562e-17)
+(0 0 5.551115123e-17)
+(0 0 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 -2.775557562e-17)
+(0 1.110223025e-16 0)
+(0 -4.440892099e-16 1.387778781e-17)
+(0 1.110223025e-16 5.551115123e-17)
+(2.775557562e-17 0 -2.775557562e-17)
+(0 -5.551115123e-17 -5.551115123e-17)
+(0 4.440892099e-16 1.387778781e-17)
+(0 5.551115123e-17 0)
+(0 -1.110223025e-16 0)
+(2.775557562e-17 -5.551115123e-17 0)
+(2.775557562e-17 -4.440892099e-16 2.775557562e-17)
+(0 0 -1.110223025e-16)
+(0 0 -2.775557562e-17)
+(0 5.551115123e-17 0)
+(0 -4.440892099e-16 0)
+(0 -1.110223025e-16 5.551115123e-17)
+(2.775557562e-17 0 -2.775557562e-17)
+(0 0 -5.551115123e-17)
+(0 4.440892099e-16 1.387778781e-17)
+(0 1.110223025e-16 0)
+(0 -1.110223025e-16 0)
+(2.775557562e-17 0 0)
+(0 -4.440892099e-16 -1.387778781e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 1.110223025e-16 -2.775557562e-17)
+(0 0 0)
+(0 0 1.387778781e-17)
+(0 -1.110223025e-16 5.551115123e-17)
+(0 -1.110223025e-16 -2.775557562e-17)
+(0 1.110223025e-16 -5.551115123e-17)
+(0 -4.440892099e-16 -1.387778781e-17)
+(0 0 0)
+(2.775557562e-17 -1.110223025e-16 -2.775557562e-17)
+(2.775557562e-17 0 0)
+(0 0 1.387778781e-17)
+(2.775557562e-17 0 0)
+(0 1.110223025e-16 0)
+(0 0 0)
+(0 -4.440892099e-16 -1.387778781e-17)
+(0 0 0)
+(2.775557562e-17 0 -2.775557562e-17)
+(2.775557562e-17 0 5.551115123e-17)
+(0 0 1.387778781e-17)
+(2.775557562e-17 0 0)
+(0 -2.220446049e-16 0)
+(2.775557562e-17 1.110223025e-16 5.551115123e-17)
+(0 -4.440892099e-16 -1.387778781e-17)
+(0 -1.110223025e-16 0)
+(2.775557562e-17 0 -2.775557562e-17)
+(-2.775557562e-17 0 0)
+(2.775557562e-17 0 1.387778781e-17)
+(0 1.110223025e-16 0)
+(0 -2.220446049e-16 -2.775557562e-17)
+(2.775557562e-17 0 5.551115123e-17)
+(2.775557562e-17 0 1.387778781e-17)
+(2.775557562e-17 -1.110223025e-16 0)
+(2.775557562e-17 -1.110223025e-16 -2.775557562e-17)
+(2.775557562e-17 0 5.551115123e-17)
+(2.775557562e-17 4.440892099e-16 1.387778781e-17)
+(0 -2.220446049e-16 0)
+(0 1.110223025e-16 0)
+(-2.775557562e-17 0 0)
+(2.775557562e-17 -4.440892099e-16 1.387778781e-17)
+(0 1.110223025e-16 0)
+(2.775557562e-17 0 -2.775557562e-17)
+(2.775557562e-17 0 5.551115123e-17)
+(0 0 0)
+(2.775557562e-17 -1.110223025e-16 -2.775557562e-17)
+(0 0 -2.775557562e-17)
+(-2.775557562e-17 2.220446049e-16 0)
+(0 1.110223025e-16 -2.775557562e-17)
+(0 -2.220446049e-16 0)
+(2.775557562e-17 0 -2.775557562e-17)
+(2.775557562e-17 -1.110223025e-16 -2.775557562e-17)
+(2.775557562e-17 0 -2.775557562e-17)
+(0 0 0)
+(0 1.110223025e-16 -2.775557562e-17)
+(0 0 0)
+(2.775557562e-17 0 -2.775557562e-17)
+(2.775557562e-17 0 -2.775557562e-17)
+(2.775557562e-17 0 -2.775557562e-17)
+(0 -2.220446049e-16 0)
+(-2.775557562e-17 -2.220446049e-16 0)
+(2.775557562e-17 0 0)
+(-2.775557562e-17 4.440892099e-16 5.551115123e-17)
+(0 0 0)
+(0 -2.220446049e-16 0)
+(2.775557562e-17 0 -2.775557562e-17)
+(0 -2.220446049e-16 0)
+(0 0 0)
+(2.775557562e-17 -2.220446049e-16 -2.775557562e-17)
+(0 -2.220446049e-16 0)
+(0 0 0)
+(2.775557562e-17 -2.220446049e-16 -2.775557562e-17)
+(0 -2.220446049e-16 0)
+(0 2.220446049e-16 0)
+(2.775557562e-17 0 -2.775557562e-17)
+(0 -2.220446049e-16 0)
+(0 0 0)
+(2.775557562e-17 0 -2.775557562e-17)
+(0 -2.220446049e-16 0)
+(0 2.220446049e-16 0)
+(2.775557562e-17 0 -2.775557562e-17)
+(0 0 0)
+(2.775557562e-17 2.220446049e-16 0)
+(0 -2.220446049e-16 -2.775557562e-17)
+(0 -2.220446049e-16 0)
+(0 0 -2.775557562e-17)
+(2.775557562e-17 -4.440892099e-16 -2.775557562e-17)
+(0 0 0)
+(2.775557562e-17 2.220446049e-16 -2.775557562e-17)
+(-2.775557562e-17 2.220446049e-16 0)
+(0 0 0)
+(0 0 0)
+(2.775557562e-17 0 -2.775557562e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 -4.440892099e-16 -2.775557562e-17)
+(2.775557562e-17 -4.440892099e-16 -2.775557562e-17)
+(0 -2.220446049e-16 0)
+(0 0 -6.938893904e-18)
+(2.775557562e-17 -1.110223025e-16 0)
+(0 -4.440892099e-16 -2.775557562e-17)
+(2.775557562e-17 -1.110223025e-16 0)
+(-2.775557562e-17 -6.938893904e-18 -6.938893904e-18)
+(0 0 0)
+(2.775557562e-17 -2.220446049e-16 -2.775557562e-17)
+(2.775557562e-17 0 5.551115123e-17)
+(0 -1.387778781e-17 6.938893904e-18)
+(0 1.110223025e-16 5.551115123e-17)
+(0 2.220446049e-16 0)
+(0 -2.220446049e-16 -5.551115123e-17)
+(0 -1.387778781e-17 0)
+(0 -1.110223025e-16 0)
+(0 -2.220446049e-16 -2.775557562e-17)
+(2.775557562e-17 -1.110223025e-16 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 -2.220446049e-16 -2.775557562e-17)
+(0 -1.110223025e-16 0)
+(0 -2.775557562e-17 6.938893904e-18)
+(0 1.110223025e-16 5.551115123e-17)
+(0 -4.440892099e-16 0)
+(0 0 -5.551115123e-17)
+(0 -5.551115123e-17 0)
+(0 1.110223025e-16 0)
+(0 -4.440892099e-16 -2.775557562e-17)
+(2.775557562e-17 0 0)
+(0 -2.775557562e-17 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 -2.220446049e-16 -2.775557562e-17)
+(0 1.110223025e-16 0)
+(0 0 6.938893904e-18)
+(-2.775557562e-17 -2.220446049e-16 5.551115123e-17)
+(0 2.220446049e-16 0)
+(2.775557562e-17 0 5.551115123e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 0)
+(0 -2.220446049e-16 -2.775557562e-17)
+(0 0 5.551115123e-17)
+(0 -5.551115123e-17 6.938893904e-18)
+(0 -2.220446049e-16 0)
+(2.775557562e-17 -4.440892099e-16 -2.775557562e-17)
+(2.775557562e-17 -2.220446049e-16 5.551115123e-17)
+(2.775557562e-17 5.551115123e-17 0)
+(0 -2.220446049e-16 5.551115123e-17)
+(0 0 0)
+(0 0 0)
+(-2.775557562e-17 -1.110223025e-16 6.938893904e-18)
+(2.775557562e-17 -2.220446049e-16 5.551115123e-17)
+(0 -4.440892099e-16 -2.775557562e-17)
+(0 -2.220446049e-16 5.551115123e-17)
+(0 -1.110223025e-16 6.938893904e-18)
+(0 0 0)
+(2.775557562e-17 4.440892099e-16 -2.775557562e-17)
+(2.775557562e-17 -4.440892099e-16 5.551115123e-17)
+(2.775557562e-17 1.110223025e-16 0)
+(0 -2.220446049e-16 5.551115123e-17)
+(0 0 0)
+(0 2.220446049e-16 0)
+(0 0 6.938893904e-18)
+(2.775557562e-17 0 5.551115123e-17)
+(0 2.220446049e-16 -2.775557562e-17)
+(0 -2.220446049e-16 5.551115123e-17)
+(2.775557562e-17 1.110223025e-16 0)
+(0 0 0)
+(2.775557562e-17 2.220446049e-16 -2.775557562e-17)
+(2.775557562e-17 -2.220446049e-16 5.551115123e-17)
+(0 -1.110223025e-16 6.938893904e-18)
+(0 -2.220446049e-16 5.551115123e-17)
+(0 0 0)
+(0 2.220446049e-16 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 -2.220446049e-16 5.551115123e-17)
+(0 0 -2.775557562e-17)
+(0 0 5.551115123e-17)
+(5.551115123e-17 -1.110223025e-16 0)
+(2.775557562e-17 2.220446049e-16 5.551115123e-17)
+(2.775557562e-17 0 -2.775557562e-17)
+(0 -4.440892099e-16 5.551115123e-17)
+(2.775557562e-17 1.110223025e-16 6.938893904e-18)
+(0 -2.220446049e-16 5.551115123e-17)
+(0 2.220446049e-16 0)
+(0 0 0)
+(2.775557562e-17 0 0)
+(0 4.440892099e-16 -1.110223025e-16)
+(2.775557562e-17 0 0)
+(0 0 0)
+(2.775557562e-17 1.110223025e-16 6.938893904e-18)
+(2.775557562e-17 2.220446049e-16 -5.551115123e-17)
+(0 -4.440892099e-16 -2.775557562e-17)
+(0 0 0)
+(2.775557562e-17 -1.110223025e-16 0)
+(0 0 5.551115123e-17)
+(0 0 0)
+(0 0 0)
+(2.775557562e-17 -2.220446049e-16 0)
+(2.775557562e-17 -2.220446049e-16 5.551115123e-17)
+(0 -2.220446049e-16 0)
+(2.775557562e-17 -2.220446049e-16 5.551115123e-17)
+(0 0 6.938893904e-18)
+(0 -4.440892099e-16 0)
+(2.775557562e-17 0 -2.775557562e-17)
+(0 -2.220446049e-16 -5.551115123e-17)
+(2.775557562e-17 0 0)
+(0 -2.220446049e-16 5.551115123e-17)
+(0 2.220446049e-16 0)
+(0 -4.440892099e-16 0)
+(0 1.110223025e-16 6.938893904e-18)
+(0 2.220446049e-16 -1.110223025e-16)
+(0 4.440892099e-16 0)
+(0 2.220446049e-16 0)
+(2.775557562e-17 -1.110223025e-16 0)
+(0 -2.220446049e-16 0)
+(2.775557562e-17 -2.220446049e-16 -2.775557562e-17)
+(0 0 -5.551115123e-17)
+(-2.775557562e-17 0 6.938893904e-18)
+(0 -4.440892099e-16 5.551115123e-17)
+(0 -4.440892099e-16 0)
+(0 -4.440892099e-16 0)
+(-2.775557562e-17 0 -6.938893904e-18)
+(0 0 -1.110223025e-16)
+(0 -2.220446049e-16 -2.775557562e-17)
+(0 2.220446049e-16 0)
+(-2.775557562e-17 0 -6.938893904e-18)
+(0 -2.220446049e-16 0)
+(2.775557562e-17 0 -2.775557562e-17)
+(0 0 -5.551115123e-17)
+(-2.775557562e-17 0 -6.938893904e-18)
+(0 0 5.551115123e-17)
+(0 -2.220446049e-16 0)
+(0 -4.440892099e-16 0)
+(-2.775557562e-17 -2.220446049e-16 -6.938893904e-18)
+(0 2.220446049e-16 -1.110223025e-16)
+(0 2.220446049e-16 0)
+(0 0 0)
+(-2.775557562e-17 2.220446049e-16 -6.938893904e-18)
+(0 2.220446049e-16 0)
+(2.775557562e-17 -2.220446049e-16 -2.775557562e-17)
+(0 2.220446049e-16 -5.551115123e-17)
+(-2.775557562e-17 0 -6.938893904e-18)
+(0 0 5.551115123e-17)
+(0 -2.220446049e-16 0)
+(-2.775557562e-17 2.220446049e-16 -6.938893904e-18)
+(0 2.220446049e-16 0)
+(-2.775557562e-17 -2.220446049e-16 -6.938893904e-18)
+(2.775557562e-17 -2.220446049e-16 -2.775557562e-17)
+(-2.775557562e-17 -2.220446049e-16 -6.938893904e-18)
+(0 4.440892099e-16 0)
+(-2.775557562e-17 -2.220446049e-16 -6.938893904e-18)
+(0 2.220446049e-16 0)
+(0 -2.220446049e-16 0)
+(2.775557562e-17 -2.220446049e-16 -2.775557562e-17)
+(-2.775557562e-17 0 -6.938893904e-18)
+(0 -2.220446049e-16 0)
+(-2.775557562e-17 0 -6.938893904e-18)
+(0 0 -2.775557562e-17)
+(-2.775557562e-17 0 -6.938893904e-18)
+(2.775557562e-17 -6.661338148e-16 -2.775557562e-17)
+(-2.775557562e-17 0 -6.938893904e-18)
+(0 0 0)
+(-2.775557562e-17 0 -6.938893904e-18)
+(0 -2.220446049e-16 0)
+(-2.775557562e-17 2.220446049e-16 -6.938893904e-18)
+(2.775557562e-17 -2.220446049e-16 -2.775557562e-17)
+(-2.775557562e-17 0 -6.938893904e-18)
+(0 -4.440892099e-16 0)
+(-2.775557562e-17 2.220446049e-16 -6.938893904e-18)
+(0 0 0)
+(-2.775557562e-17 -2.220446049e-16 -6.938893904e-18)
+(2.775557562e-17 0 -2.775557562e-17)
+(-2.775557562e-17 -4.440892099e-16 -6.938893904e-18)
+(0 2.220446049e-16 0)
+(-2.775557562e-17 0 -6.938893904e-18)
+(0 2.220446049e-16 0)
+(-2.775557562e-17 0 -6.938893904e-18)
+(2.775557562e-17 -4.440892099e-16 -2.775557562e-17)
+(-2.775557562e-17 2.220446049e-16 -6.938893904e-18)
+(0 0 0)
+(-2.775557562e-17 -2.220446049e-16 -6.938893904e-18)
+(2.775557562e-17 -4.440892099e-16 0)
+(-2.775557562e-17 -2.220446049e-16 -6.938893904e-18)
+(0 -4.440892099e-16 -2.775557562e-17)
+(-2.775557562e-17 -2.220446049e-16 -6.938893904e-18)
+(2.775557562e-17 0 -2.775557562e-17)
+(-2.775557562e-17 0 -6.938893904e-18)
+(2.775557562e-17 0 0)
+(-2.775557562e-17 2.220446049e-16 -6.938893904e-18)
+(0 0 -2.775557562e-17)
+(-2.775557562e-17 0 -6.938893904e-18)
+(5.551115123e-17 -4.440892099e-16 -2.775557562e-17)
+(0 0 -1.387778781e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 -4.440892099e-16 -6.938893904e-18)
+(0 4.440892099e-16 -2.775557562e-17)
+(0 4.440892099e-16 -1.387778781e-17)
+(0 0 0)
+(2.775557562e-17 0 -2.775557562e-17)
+(0 4.440892099e-16 -1.110223025e-16)
+(2.775557562e-17 0 -6.938893904e-18)
+(0 2.220446049e-16 0)
+(2.775557562e-17 -4.440892099e-16 0)
+(2.775557562e-17 0 5.551115123e-17)
+(0 0 -1.387778781e-17)
+(0 -2.220446049e-16 5.551115123e-17)
+(0 -4.440892099e-16 -2.775557562e-17)
+(0 0 5.551115123e-17)
+(2.775557562e-17 0 -6.938893904e-18)
+(0 -2.220446049e-16 0)
+(5.551115123e-17 -4.440892099e-16 -2.775557562e-17)
+(2.775557562e-17 -2.220446049e-16 5.551115123e-17)
+(0 4.440892099e-16 -1.387778781e-17)
+(0 2.220446049e-16 0)
+(2.775557562e-17 0 0)
+(0 4.440892099e-16 0)
+(0 0 0)
+(2.775557562e-17 -4.440892099e-16 0)
+(0 -8.881784197e-16 -2.775557562e-17)
+(0 -4.440892099e-16 5.551115123e-17)
+(0 0 0)
+(0 -2.220446049e-16 0)
+(2.775557562e-17 -4.440892099e-16 -2.775557562e-17)
+(0 0 -5.551115123e-17)
+(0 -4.440892099e-16 0)
+(0 -2.220446049e-16 5.551115123e-17)
+(2.775557562e-17 0 0)
+(0 2.220446049e-16 0)
+(0 0 0)
+(2.775557562e-17 0 5.551115123e-17)
+(0 -4.440892099e-16 -2.775557562e-17)
+(0 -2.220446049e-16 5.551115123e-17)
+(5.551115123e-17 0 -2.775557562e-17)
+(0 2.220446049e-16 0)
+(2.775557562e-17 -4.440892099e-16 0)
+(2.775557562e-17 -4.440892099e-16 5.551115123e-17)
+(0 -4.440892099e-16 -2.775557562e-17)
+(0 4.440892099e-16 0)
+(2.775557562e-17 0 -2.775557562e-17)
+(0 2.220446049e-16 0)
+(2.775557562e-17 -4.440892099e-16 0)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 0 -2.775557562e-17)
+(0 -2.220446049e-16 5.551115123e-17)
+(2.775557562e-17 4.440892099e-16 0)
+(0 0 0)
+(2.775557562e-17 0 5.551115123e-17)
+(0 -2.220446049e-16 -5.551115123e-17)
+(-2.775557562e-17 0 0)
+(0 0 5.551115123e-17)
+(2.775557562e-17 -4.440892099e-16 0)
+(0 -2.220446049e-16 0)
+(0 -4.440892099e-16 2.775557562e-17)
+(2.775557562e-17 -2.220446049e-16 5.551115123e-17)
+(0 0 -2.775557562e-17)
+(0 -4.440892099e-16 5.551115123e-17)
+(2.775557562e-17 -8.881784197e-16 0)
+(0 0 0)
+(2.775557562e-17 0 5.551115123e-17)
+(2.775557562e-17 -6.661338148e-16 5.551115123e-17)
+(-2.775557562e-17 0 0)
+(0 2.220446049e-16 0)
+(2.775557562e-17 0 0)
+(0 2.220446049e-16 0)
+(0 4.440892099e-16 2.775557562e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 -4.440892099e-16 -2.775557562e-17)
+(0 0 5.551115123e-17)
+(0 1.734723476e-18 0)
+(2.775557562e-17 -4.440892099e-16 5.551115123e-17)
+(0 0 0)
+(0 -4.440892099e-16 5.551115123e-17)
+(0 -3.469446952e-18 -5.551115123e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 5.551115123e-17)
+(2.775557562e-17 -6.938893904e-18 2.775557562e-17)
+(0 -4.440892099e-16 5.551115123e-17)
+(2.775557562e-17 -6.938893904e-18 -2.775557562e-17)
+(5.551115123e-17 -4.440892099e-16 0)
+(0 1.387778781e-17 2.775557562e-17)
+(2.775557562e-17 0 5.551115123e-17)
+(2.775557562e-17 -2.775557562e-17 -5.551115123e-17)
+(0 0 5.551115123e-17)
+(2.775557562e-17 0 -2.775557562e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 -2.775557562e-17 -1.110223025e-16)
+(2.775557562e-17 -4.440892099e-16 5.551115123e-17)
+(0 0 0)
+(0 -4.440892099e-16 5.551115123e-17)
+(2.775557562e-17 -2.775557562e-17 -2.775557562e-17)
+(5.551115123e-17 -4.440892099e-16 0)
+(0 0 -2.775557562e-17)
+(2.775557562e-17 0 5.551115123e-17)
+(2.775557562e-17 2.775557562e-17 0)
+(0 -4.440892099e-16 5.551115123e-17)
+(2.775557562e-17 2.775557562e-17 0)
+(2.775557562e-17 -4.440892099e-16 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 5.551115123e-17)
+(2.775557562e-17 -5.551115123e-17 0)
+(0 0 5.551115123e-17)
+(2.775557562e-17 5.551115123e-17 0)
+(5.551115123e-17 0 0)
+(2.775557562e-17 -2.775557562e-17 2.775557562e-17)
+(2.775557562e-17 -4.440892099e-16 5.551115123e-17)
+(0 -2.775557562e-17 -2.775557562e-17)
+(0 -4.440892099e-16 5.551115123e-17)
+(0 -2.775557562e-17 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 2.775557562e-17 2.775557562e-17)
+(2.775557562e-17 -4.440892099e-16 5.551115123e-17)
+(0 0 -2.775557562e-17)
+(0 -8.881784197e-16 5.551115123e-17)
+(0 -5.551115123e-17 0)
+(2.775557562e-17 4.440892099e-16 5.551115123e-17)
+(2.775557562e-17 -5.551115123e-17 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 0)
+(-5.551115123e-17 4.440892099e-16 -5.551115123e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 -4.440892099e-16 5.551115123e-17)
+(0 0 -2.775557562e-17)
+(0 -4.440892099e-16 0)
+(-5.551115123e-17 1.110223025e-16 2.775557562e-17)
+(-2.775557562e-17 -4.440892099e-16 5.551115123e-17)
+(-2.775557562e-17 -5.551115123e-17 0)
+(2.775557562e-17 -8.881784197e-16 5.551115123e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 0)
+(-5.551115123e-17 8.881784197e-16 -5.551115123e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 5.551115123e-17)
+(0 -5.551115123e-17 -2.775557562e-17)
+(0 4.440892099e-16 0)
+(0 0 -2.775557562e-17)
+(-2.775557562e-17 -4.440892099e-16 5.551115123e-17)
+(0 1.734723476e-18 0)
+(0 0 0)
+(0 6.938893904e-18 1.734723476e-18)
+(0 -5.551115123e-17 -2.775557562e-17)
+(0 -2.775557562e-17 0)
+(0 -5.551115123e-17 -2.775557562e-17)
+(0 -1.387778781e-17 0)
+(0 -5.551115123e-17 0)
+(2.775557562e-17 2.775557562e-17 0)
+(2.775557562e-17 0 0)
+(0 -2.775557562e-17 3.469446952e-18)
+(2.775557562e-17 0 0)
+(5.551115123e-17 -1.110223025e-16 -3.469446952e-18)
+(2.775557562e-17 -1.110223025e-16 0)
+(2.775557562e-17 -5.551115123e-17 0)
+(0 -5.551115123e-17 -2.775557562e-17)
+(0 0 3.469446952e-18)
+(-5.551115123e-17 0 2.775557562e-17)
+(2.775557562e-17 5.551115123e-17 0)
+(-2.775557562e-17 1.110223025e-16 0)
+(0 -5.551115123e-17 3.469446952e-18)
+(2.775557562e-17 -1.110223025e-16 0)
+(2.775557562e-17 5.551115123e-17 0)
+(2.775557562e-17 0 0)
+(0 0 0)
+(2.775557562e-17 0 0)
+(0 -1.110223025e-16 3.469446952e-18)
+(0 0 -2.775557562e-17)
+(2.775557562e-17 0 0)
+(0 -1.110223025e-16 -2.775557562e-17)
+(0 0 3.469446952e-18)
+(0 1.110223025e-16 0)
+(2.775557562e-17 1.110223025e-16 0)
+(2.775557562e-17 -1.110223025e-16 0)
+(0 0 3.469446952e-18)
+(2.775557562e-17 0 0)
+(2.775557562e-17 1.110223025e-16 0)
+(2.775557562e-17 -1.110223025e-16 0)
+(0 1.110223025e-16 1.734723476e-18)
+(0 0 -2.775557562e-17)
+(5.551115123e-17 -1.110223025e-16 0)
+(0 0 -2.775557562e-17)
+(-2.775557562e-17 0 -1.734723476e-18)
+(0 0 0)
+(5.551115123e-17 -1.110223025e-16 0)
+(0 -1.110223025e-16 0)
+(2.775557562e-17 0 0)
+(0 -1.110223025e-16 -2.775557562e-17)
+(2.775557562e-17 0 -1.734723476e-18)
+(0 0 0)
+(2.775557562e-17 1.110223025e-16 1.734723476e-18)
+(2.775557562e-17 -1.110223025e-16 5.551115123e-17)
+(-2.775557562e-17 1.110223025e-16 1.734723476e-18)
+(0 -1.110223025e-16 -5.551115123e-17)
+(0 1.734723476e-18 5.551115123e-17)
+(0 -1.110223025e-16 -1.734723476e-18)
+(-2.775557562e-17 3.469446952e-18 -2.775557562e-17)
+(0 0 2.775557562e-17)
+(0 -3.469446952e-18 0)
+(2.775557562e-17 -1.110223025e-16 0)
+(2.775557562e-17 0 0)
+(0 1.110223025e-16 0)
+(2.775557562e-17 -6.938893904e-18 2.775557562e-17)
+(-2.775557562e-17 0 1.734723476e-18)
+(2.775557562e-17 -6.938893904e-18 8.326672685e-17)
+(0 -1.110223025e-16 -2.775557562e-17)
+(0 1.387778781e-17 2.775557562e-17)
+(-2.775557562e-17 0 1.734723476e-18)
+(2.775557562e-17 -2.775557562e-17 2.775557562e-17)
+(0 -2.220446049e-16 0)
+(2.775557562e-17 0 5.551115123e-17)
+(0 0 -1.734723476e-18)
+(2.775557562e-17 0 2.775557562e-17)
+(2.775557562e-17 -1.110223025e-16 5.551115123e-17)
+(2.775557562e-17 -2.775557562e-17 8.326672685e-17)
+(0 2.220446049e-16 1.734723476e-18)
+(2.775557562e-17 -2.775557562e-17 1.110223025e-16)
+(0 -1.110223025e-16 -5.551115123e-17)
+(0 0 0)
+(-2.775557562e-17 0 1.734723476e-18)
+(2.775557562e-17 2.775557562e-17 0)
+(0 0 2.775557562e-17)
+(2.775557562e-17 2.775557562e-17 -2.775557562e-17)
+(0 -2.220446049e-16 -1.734723476e-18)
+(2.775557562e-17 0 0)
+(0 0 0)
+(2.775557562e-17 -5.551115123e-17 0)
+(0 2.220446049e-16 1.734723476e-18)
+(2.775557562e-17 5.551115123e-17 0)
+(0 0 -2.775557562e-17)
+(2.775557562e-17 2.775557562e-17 0)
+(0 0 0)
+(0 -2.775557562e-17 0)
+(0 0 0)
+(0 -2.775557562e-17 2.775557562e-17)
+(0 -2.220446049e-16 -3.469446952e-18)
+(2.775557562e-17 2.775557562e-17 0)
+(0 0 -2.775557562e-17)
+(0 5.551115123e-17 0)
+(2.775557562e-17 -2.220446049e-16 -3.469446952e-18)
+(0 0 2.775557562e-17)
+(0 -2.220446049e-16 0)
+(2.775557562e-17 -5.551115123e-17 0)
+(2.775557562e-17 0 -1.734723476e-18)
+(2.775557562e-17 0 0)
+(0 1.110223025e-16 -2.775557562e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 -2.220446049e-16 -1.734723476e-18)
+(0 0 0)
+(2.775557562e-17 0 0)
+(-2.775557562e-17 5.551115123e-17 0)
+(5.551115123e-17 -2.220446049e-16 -1.734723476e-18)
+(0 -1.110223025e-16 2.775557562e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 0)
+(-2.775557562e-17 0 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 0)
+(-2.775557562e-17 0 -3.469446952e-18)
+(0 -5.551115123e-17 0)
+(0 -1.110223025e-16 -2.775557562e-17)
+(0 0 0)
+(2.775557562e-17 0 -3.469446952e-18)
+(0 0 2.775557562e-17)
+(0 -2.220446049e-16 -2.775557562e-17)
+(-2.775557562e-17 0 0)
+(0 2.220446049e-16 0)
+(0 -5.551115123e-17 0)
+(0 1.110223025e-16 0)
+(0 -5.551115123e-17 2.775557562e-17)
+(2.775557562e-17 -4.440892099e-16 -1.734723476e-18)
+(2.775557562e-17 0 0)
+(2.775557562e-17 -2.220446049e-16 0)
+(2.775557562e-17 5.551115123e-17 0)
+(-2.775557562e-17 0 -3.469446952e-18)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 0)
+(0 5.551115123e-17 0)
+(-2.775557562e-17 2.220446049e-16 -3.469446952e-18)
+(-2.775557562e-17 -5.551115123e-17 0)
+(2.775557562e-17 0 0)
+(0 0 2.775557562e-17)
+(2.775557562e-17 0 -1.734723476e-18)
+(2.775557562e-17 -1.110223025e-16 0)
+(0 2.220446049e-16 -2.775557562e-17)
+(2.775557562e-17 0 0)
+(0 -2.220446049e-16 0)
+(2.775557562e-17 0 0)
+(0 0 -2.775557562e-17)
+(0 0 0)
+(2.775557562e-17 0 1.734723476e-18)
+(0 -1.110223025e-16 0)
+(0 0 0)
+(0 1.110223025e-16 2.775557562e-17)
+(2.775557562e-17 -4.440892099e-16 -1.734723476e-18)
+(2.775557562e-17 -1.110223025e-16 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 0)
+(-2.775557562e-17 2.220446049e-16 -3.469446952e-18)
+(2.775557562e-17 -1.110223025e-16 0)
+(2.775557562e-17 -2.220446049e-16 -5.551115123e-17)
+(0 0 0)
+(5.551115123e-17 -4.440892099e-16 -5.204170428e-18)
+(0 0 0)
+(0 2.220446049e-16 2.775557562e-17)
+(0 0 2.775557562e-17)
+(2.775557562e-17 2.220446049e-16 1.734723476e-18)
+(0 -1.110223025e-16 2.775557562e-17)
+(2.775557562e-17 0 0)
+(0 0 0)
+(2.775557562e-17 2.220446049e-16 1.734723476e-18)
+(0 0 2.775557562e-17)
+(2.775557562e-17 2.220446049e-16 0)
+(2.775557562e-17 0 8.326672685e-17)
+(0 -4.440892099e-16 -3.469446952e-18)
+(0 -1.110223025e-16 0)
+(2.775557562e-17 0 -5.551115123e-17)
+(0 0 -2.775557562e-17)
+(-2.775557562e-17 2.220446049e-16 1.734723476e-18)
+(0 1.110223025e-16 -2.775557562e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 -1.110223025e-16 0)
+(-2.775557562e-17 4.440892099e-16 1.734723476e-18)
+(0 -2.220446049e-16 2.775557562e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 -1.110223025e-16 8.326672685e-17)
+(2.775557562e-17 -4.440892099e-16 -1.734723476e-18)
+(0 -1.110223025e-16 0)
+(2.775557562e-17 -2.220446049e-16 -5.551115123e-17)
+(0 0 -2.775557562e-17)
+(2.775557562e-17 -4.440892099e-16 -3.469446952e-18)
+(0 0 -2.775557562e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 0 0)
+(2.775557562e-17 0 -1.734723476e-18)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 -5.551115123e-17)
+(2.775557562e-17 0 -1.734723476e-18)
+(2.775557562e-17 -2.220446049e-16 0)
+(2.775557562e-17 0 -3.469446952e-18)
+(2.775557562e-17 2.220446049e-16 0)
+(2.775557562e-17 0 -1.734723476e-18)
+(2.775557562e-17 0 -5.551115123e-17)
+(0 -4.440892099e-16 0)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 0 0)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 -4.440892099e-16 0)
+(2.775557562e-17 0 -5.551115123e-17)
+(0 0 0)
+(2.775557562e-17 -2.220446049e-16 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 -4.440892099e-16 -5.551115123e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 -2.220446049e-16 0)
+(0 -2.220446049e-16 -2.775557562e-17)
+(2.775557562e-17 -4.440892099e-16 0)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 0 2.775557562e-17)
+(0 2.220446049e-16 2.775557562e-17)
+(-2.775557562e-17 2.220446049e-16 -2.775557562e-17)
+(0 0 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 -5.551115123e-17)
+(0 -2.220446049e-16 -5.551115123e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 -4.440892099e-16 0)
+(2.775557562e-17 -2.220446049e-16 0)
+(2.775557562e-17 0 0)
+(0 0 2.775557562e-17)
+(0 2.220446049e-16 2.775557562e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(2.775557562e-17 -2.220446049e-16 0)
+(2.775557562e-17 -4.440892099e-16 0)
+(2.775557562e-17 -4.440892099e-16 0)
+(0 0 2.775557562e-17)
+(0 2.220446049e-16 2.775557562e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(2.775557562e-17 -4.440892099e-16 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 4.440892099e-16 0)
+(0 0 2.775557562e-17)
+(0 4.440892099e-16 2.775557562e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 0 2.775557562e-17)
+(2.775557562e-17 0 0)
+(0 0 0)
+(0 0 2.775557562e-17)
+(0 -2.220446049e-16 2.775557562e-17)
+(0 -2.220446049e-16 2.775557562e-17)
+(0 1.110223025e-16 0)
+(0 0 0)
+(2.775557562e-17 0 0)
+(0 -4.440892099e-16 -2.775557562e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 -6.661338148e-16 0)
+(0 -1.110223025e-16 0)
+(2.775557562e-17 -6.661338148e-16 -5.551115123e-17)
+(0 -2.220446049e-16 0)
+(0 2.220446049e-16 2.775557562e-17)
+(0 1.110223025e-16 2.775557562e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 0 -2.775557562e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 0 0)
+(2.775557562e-17 0 0)
+(0 0 0)
+(2.775557562e-17 -4.440892099e-16 0)
+(0 0 2.775557562e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(2.775557562e-17 -2.220446049e-16 0)
+(2.775557562e-17 -2.220446049e-16 -5.551115123e-17)
+(2.775557562e-17 -2.220446049e-16 2.775557562e-17)
+(0 0 0)
+(0 2.220446049e-16 -2.775557562e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(2.775557562e-17 0 5.551115123e-17)
+(2.775557562e-17 -6.938893904e-18 0)
+(0 2.220446049e-16 -2.775557562e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(2.775557562e-17 0 0)
+(0 -1.387778781e-17 1.387778781e-17)
+(2.775557562e-17 -2.220446049e-16 5.551115123e-17)
+(2.775557562e-17 -2.220446049e-16 -5.551115123e-17)
+(0 -2.220446049e-16 -2.775557562e-17)
+(2.775557562e-17 -1.387778781e-17 -2.081668171e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 -2.220446049e-16 2.775557562e-17)
+(2.775557562e-17 -2.220446049e-16 5.551115123e-17)
+(0 0 1.387778781e-17)
+(0 0 -2.775557562e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 5.551115123e-17)
+(0 0 -2.775557562e-17)
+(0 2.220446049e-16 -2.775557562e-17)
+(2.775557562e-17 -5.551115123e-17 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 -2.220446049e-16 5.551115123e-17)
+(2.775557562e-17 -2.775557562e-17 0)
+(0 0 -2.775557562e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(2.775557562e-17 -2.220446049e-16 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 -2.220446049e-16 5.551115123e-17)
+(2.775557562e-17 -6.661338148e-16 0)
+(0 -2.220446049e-16 -2.775557562e-17)
+(0 0 1.387778781e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(2.775557562e-17 -2.220446049e-16 0)
+(2.775557562e-17 -2.220446049e-16 5.551115123e-17)
+(2.775557562e-17 0 0)
+(0 -2.220446049e-16 2.775557562e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 -2.220446049e-16 5.551115123e-17)
+(0 -5.551115123e-17 1.387778781e-17)
+(2.775557562e-17 -4.440892099e-16 0)
+(2.775557562e-17 -2.220446049e-16 -5.551115123e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 -5.551115123e-17 6.938893904e-18)
+(0 2.220446049e-16 -2.775557562e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 2.220446049e-16 -2.775557562e-17)
+(2.775557562e-17 0 0)
+(-2.775557562e-17 2.220446049e-16 -2.775557562e-17)
+(2.775557562e-17 0 0)
+(0 -2.220446049e-16 0)
+(0 5.551115123e-17 1.387778781e-17)
+(2.775557562e-17 0 5.551115123e-17)
+(2.775557562e-17 -4.440892099e-16 -5.551115123e-17)
+(0 2.220446049e-16 -2.775557562e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 0)
+(0 -2.220446049e-16 2.775557562e-17)
+(0 -2.220446049e-16 2.775557562e-17)
+(0 0 1.387778781e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 -4.440892099e-16 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 -2.220446049e-16 -2.775557562e-17)
+(2.775557562e-17 0 0)
+(0 -1.110223025e-16 1.387778781e-17)
+(0 0 -2.775557562e-17)
+(2.775557562e-17 0 0)
+(0 2.220446049e-16 -2.775557562e-17)
+(0 0 -6.938893904e-18)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 -4.440892099e-16 0)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 -1.110223025e-16 0)
+(2.775557562e-17 -4.440892099e-16 0)
+(0 0 -2.775557562e-17)
+(2.775557562e-17 -4.440892099e-16 0)
+(0 0 1.387778781e-17)
+(0 -2.220446049e-16 -2.775557562e-17)
+(0 0 0)
+(0 2.220446049e-16 -2.775557562e-17)
+(0 -1.110223025e-16 0)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 0 0)
+(2.775557562e-17 -4.440892099e-16 0)
+(0 -1.110223025e-16 1.387778781e-17)
+(2.775557562e-17 0 0)
+(0 0 -2.775557562e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 0 1.387778781e-17)
+(0 -4.440892099e-16 -2.775557562e-17)
+(2.775557562e-17 -4.440892099e-16 -2.775557562e-17)
+(0 4.440892099e-16 -2.775557562e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 0)
+(0 -8.881784197e-16 0)
+(2.775557562e-17 0 0)
+(0 -1.110223025e-16 1.387778781e-17)
+(2.775557562e-17 -4.440892099e-16 0)
+(0 0 -2.775557562e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 0 0)
+(0 0 1.387778781e-17)
+(0 -4.440892099e-16 0)
+(2.775557562e-17 -1.110223025e-16 -1.387778781e-17)
+(0 -4.440892099e-16 -2.775557562e-17)
+(2.775557562e-17 0 -1.387778781e-17)
+(2.775557562e-17 0 -2.775557562e-17)
+(2.775557562e-17 0 -1.387778781e-17)
+(0 -4.440892099e-16 0)
+(2.775557562e-17 0 -1.387778781e-17)
+(0 -4.440892099e-16 -2.775557562e-17)
+(2.775557562e-17 2.220446049e-16 -1.387778781e-17)
+(0 0 0)
+(2.775557562e-17 0 -1.387778781e-17)
+(0 0 0)
+(2.775557562e-17 0 -1.387778781e-17)
+(0 -8.881784197e-16 -2.775557562e-17)
+(2.775557562e-17 -2.220446049e-16 -1.387778781e-17)
+(2.775557562e-17 0 -2.775557562e-17)
+(2.775557562e-17 2.220446049e-16 0)
+(0 -4.440892099e-16 0)
+(2.775557562e-17 0 0)
+(0 -4.440892099e-16 -2.775557562e-17)
+(2.775557562e-17 0 -1.387778781e-17)
+(0 0 0)
+(0 -2.220446049e-16 -6.938893904e-18)
+(0 -4.440892099e-16 0)
+(2.775557562e-17 -4.440892099e-16 0)
+(0 0 -2.775557562e-17)
+(2.775557562e-17 0 0)
+(0 -4.440892099e-16 -5.551115123e-17)
+(2.775557562e-17 0 0)
+(0 -4.440892099e-16 0)
+(2.775557562e-17 2.220446049e-16 0)
+(0 0 0)
+(2.775557562e-17 0 0)
+(0 -4.440892099e-16 -5.551115123e-17)
+(2.775557562e-17 -4.440892099e-16 0)
+(-2.775557562e-17 4.440892099e-16 2.775557562e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 -4.440892099e-16 -2.775557562e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 -8.881784197e-16 -5.551115123e-17)
+(2.775557562e-17 0 0)
+(0 4.440892099e-16 0)
+(2.775557562e-17 0 -1.387778781e-17)
+(0 0 0)
+(2.775557562e-17 0 -1.387778781e-17)
+(0 0 -5.551115123e-17)
+(2.775557562e-17 4.440892099e-16 -1.387778781e-17)
+(2.775557562e-17 -4.440892099e-16 -5.551115123e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 -4.440892099e-16 -2.775557562e-17)
+(0 0 -2.775557562e-17)
+(2.775557562e-17 -6.661338148e-16 -1.387778781e-17)
+(0 0 -2.775557562e-17)
+(0 -3.469446952e-18 0)
+(0 0 2.775557562e-17)
+(2.775557562e-17 0 -1.387778781e-17)
+(0 -4.440892099e-16 5.551115123e-17)
+(2.775557562e-17 -6.938893904e-18 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 -2.220446049e-16 -1.387778781e-17)
+(0 -4.440892099e-16 -2.775557562e-17)
+(0 -3.469446952e-18 0)
+(2.775557562e-17 -6.661338148e-16 0)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 2.220446049e-16 2.775557562e-17)
+(5.551115123e-17 -1.387778781e-17 -5.551115123e-17)
+(0 2.220446049e-16 -2.775557562e-17)
+(2.775557562e-17 -2.220446049e-16 -1.387778781e-17)
+(0 0 -2.775557562e-17)
+(-2.775557562e-17 -6.938893904e-18 5.551115123e-17)
+(2.775557562e-17 -4.440892099e-16 5.551115123e-17)
+(2.775557562e-17 0 -1.387778781e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(2.775557562e-17 -6.938893904e-18 -5.551115123e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 -4.440892099e-16 0)
+(2.775557562e-17 -4.440892099e-16 5.551115123e-17)
+(0 1.387778781e-17 0)
+(0 0 -2.775557562e-17)
+(-2.775557562e-17 0 1.387778781e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 -1.387778781e-17 -5.551115123e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 -4.440892099e-16 0)
+(0 0 -2.775557562e-17)
+(0 -1.387778781e-17 -1.110223025e-16)
+(2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 4.440892099e-16 1.387778781e-17)
+(0 -2.220446049e-16 2.775557562e-17)
+(0 -1.387778781e-17 -5.551115123e-17)
+(0 0 -2.775557562e-17)
+(0 0 0)
+(0 0 -2.775557562e-17)
+(5.551115123e-17 -2.775557562e-17 -5.551115123e-17)
+(2.775557562e-17 0 5.551115123e-17)
+(-2.775557562e-17 4.440892099e-16 1.387778781e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 -4.440892099e-16 0)
+(2.775557562e-17 -2.220446049e-16 5.551115123e-17)
+(0 2.775557562e-17 0)
+(0 -2.220446049e-16 -2.775557562e-17)
+(0 0 -6.938893904e-18)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 0 -5.551115123e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 -4.440892099e-16 -6.938893904e-18)
+(0 -2.220446049e-16 -2.775557562e-17)
+(2.775557562e-17 0 -5.551115123e-17)
+(2.775557562e-17 -4.440892099e-16 0)
+(0 -4.440892099e-16 -6.938893904e-18)
+(0 -2.220446049e-16 2.775557562e-17)
+(0 -2.775557562e-17 0)
+(0 2.220446049e-16 -2.775557562e-17)
+(0 -8.881784197e-16 -6.938893904e-18)
+(0 -2.220446049e-16 -2.775557562e-17)
+(2.775557562e-17 0 -5.551115123e-17)
+(2.775557562e-17 0 5.551115123e-17)
+(0 0 -5.551115123e-17)
+(0 -4.440892099e-16 2.775557562e-17)
+(2.775557562e-17 2.775557562e-17 -5.551115123e-17)
+(0 0 5.551115123e-17)
+(0 -2.775557562e-17 -5.551115123e-17)
+(0 0 0)
+(2.775557562e-17 0 0)
+(0 0 2.775557562e-17)
+(2.775557562e-17 0 -5.551115123e-17)
+(0 0 5.551115123e-17)
+(0 -5.551115123e-17 -5.551115123e-17)
+(2.775557562e-17 -4.440892099e-16 2.775557562e-17)
+(2.775557562e-17 -5.551115123e-17 0)
+(0 -8.881784197e-16 2.775557562e-17)
+(0 5.551115123e-17 0)
+(0 0 5.551115123e-17)
+(2.775557562e-17 0 -5.551115123e-17)
+(0 0 0)
+(0 0 -5.551115123e-17)
+(0 -4.440892099e-16 2.775557562e-17)
+(0 0 0)
+(0 -4.440892099e-16 5.551115123e-17)
+(5.551115123e-17 -5.551115123e-17 -5.551115123e-17)
+(2.775557562e-17 0 2.775557562e-17)
+(0 5.551115123e-17 -5.551115123e-17)
+(0 -4.440892099e-16 2.775557562e-17)
+(0 0 0)
+(0 -4.440892099e-16 5.551115123e-17)
+(2.775557562e-17 -5.551115123e-17 -5.551115123e-17)
+(0 0 0)
+(0 5.551115123e-17 -5.551115123e-17)
+(0 0 2.775557562e-17)
+(0 0 0)
+(0 -8.881784197e-16 5.551115123e-17)
+(0 -5.551115123e-17 -5.551115123e-17)
+(2.775557562e-17 0 2.775557562e-17)
+(2.775557562e-17 0 0)
+(0 -4.440892099e-16 2.775557562e-17)
+(-2.775557562e-17 -5.551115123e-17 0)
+(0 -4.440892099e-16 5.551115123e-17)
+(0 -1.110223025e-16 -5.551115123e-17)
+(0 0 0)
+(2.775557562e-17 0 0)
+(0 -4.440892099e-16 2.775557562e-17)
+(0 -5.551115123e-17 0)
+(0 0 5.551115123e-17)
+(2.775557562e-17 -5.551115123e-17 -5.551115123e-17)
+(0 -4.440892099e-16 2.775557562e-17)
+(0 5.551115123e-17 -5.551115123e-17)
+(0 0 0)
+(0 5.551115123e-17 0)
+(0 4.440892099e-16 0)
+(5.551115123e-17 -5.551115123e-17 -1.665334537e-16)
+(0 -4.440892099e-16 2.775557562e-17)
+(0 0 -5.551115123e-17)
+(-2.775557562e-17 4.440892099e-16 -2.775557562e-17)
+(0 1.110223025e-16 0)
+(2.775557562e-17 -4.440892099e-16 2.775557562e-17)
+(2.775557562e-17 -1.110223025e-16 -5.551115123e-17)
+(0 -8.881784197e-16 2.775557562e-17)
+(0 0 -5.551115123e-17)
+(0 4.440892099e-16 0)
+(0 0 0)
+(0 0 0)
+(0 0 -5.551115123e-17)
+(0 0 2.775557562e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 -4.440892099e-16 2.775557562e-17)
+(0 -1.110223025e-16 0)
+(2.775557562e-17 -4.440892099e-16 2.775557562e-17)
+(2.775557562e-17 0 -5.551115123e-17)
+(0 -1.110223025e-16 -5.551115123e-17)
+(0 -1.110223025e-16 0)
+(0 -1.110223025e-16 -5.551115123e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 -5.551115123e-17)
+(2.775557562e-17 -1.110223025e-16 -5.551115123e-17)
+(2.775557562e-17 -1.110223025e-16 0)
+(0 0 -5.551115123e-17)
+(5.551115123e-17 -2.220446049e-16 -1.110223025e-16)
+(0 1.110223025e-16 0)
+(0 0 0)
+(2.775557562e-17 -1.110223025e-16 -5.551115123e-17)
+(2.775557562e-17 0 0)
+(0 -1.110223025e-16 -5.551115123e-17)
+(5.551115123e-17 -2.220446049e-16 -1.110223025e-16)
+(0 3.330669074e-16 0)
+(0 -1.110223025e-16 0)
+(0 1.734723476e-18 1.387778781e-17)
+(2.775557562e-17 -2.220446049e-16 -5.551115123e-17)
+(2.775557562e-17 0 1.387778781e-17)
+(2.775557562e-17 -1.110223025e-16 0)
+(0 -2.775557562e-17 -1.387778781e-17)
+(2.775557562e-17 0 0)
+(0 -4.163336342e-17 -1.387778781e-17)
+(2.775557562e-17 0 0)
+(0 -2.775557562e-17 -1.387778781e-17)
+(0 -2.220446049e-16 0)
+(0 0 0)
+(0 1.110223025e-16 0)
+(0 -5.551115123e-17 -1.387778781e-17)
+(2.775557562e-17 0 -5.551115123e-17)
+(0 -2.775557562e-17 -1.387778781e-17)
+(0 1.110223025e-16 -5.551115123e-17)
+(0 0 0)
+(0 -1.110223025e-16 0)
+(0 0 -1.387778781e-17)
+(0 -2.220446049e-16 -5.551115123e-17)
+(0 0 0)
+(2.775557562e-17 0 0)
+(0 -1.110223025e-16 -1.387778781e-17)
+(0 1.110223025e-16 0)
+(-2.775557562e-17 0 1.387778781e-17)
+(2.775557562e-17 0 -5.551115123e-17)
+(0 0 0)
+(0 0 -5.551115123e-17)
+(0 5.551115123e-17 -1.387778781e-17)
+(0 0 0)
+(0 0 0)
+(0 -3.330669074e-16 -5.551115123e-17)
+(0 0 -1.387778781e-17)
+(2.775557562e-17 0 0)
+(0 0 0)
+(0 1.110223025e-16 0)
+(-2.775557562e-17 1.734723476e-18 2.775557562e-17)
+(0 -1.110223025e-16 -1.387778781e-17)
+(-2.775557562e-17 0 0)
+(-2.775557562e-17 2.220446049e-16 5.551115123e-17)
+(0 -3.469446952e-18 -5.551115123e-17)
+(0 0 -1.387778781e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 -5.551115123e-17)
+(0 6.938893904e-18 -2.775557562e-17)
+(0 -1.110223025e-16 0)
+(2.775557562e-17 -6.938893904e-18 8.326672685e-17)
+(2.775557562e-17 -2.220446049e-16 -5.551115123e-17)
+(0 2.775557562e-17 0)
+(2.775557562e-17 0 -1.387778781e-17)
+(0 -1.387778781e-17 2.775557562e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 -1.387778781e-17 0)
+(0 -1.110223025e-16 0)
+(0 1.387778781e-17 0)
+(0 2.220446049e-16 -5.551115123e-17)
+(2.775557562e-17 -2.775557562e-17 8.326672685e-17)
+(2.775557562e-17 -1.110223025e-16 -1.387778781e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 -5.551115123e-17)
+(0 2.775557562e-17 0)
+(2.775557562e-17 0 -1.387778781e-17)
+(0 2.775557562e-17 -2.775557562e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(2.775557562e-17 0 2.775557562e-17)
+(0 0 0)
+(2.775557562e-17 0 2.775557562e-17)
+(0 -2.220446049e-16 -5.551115123e-17)
+(0 -5.551115123e-17 2.775557562e-17)
+(0 -1.110223025e-16 -1.387778781e-17)
+(0 0 2.775557562e-17)
+(2.775557562e-17 -4.440892099e-16 -5.551115123e-17)
+(2.775557562e-17 2.775557562e-17 -2.775557562e-17)
+(0 -2.220446049e-16 0)
+(0 -2.775557562e-17 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 2.775557562e-17)
+(0 -2.220446049e-16 -1.387778781e-17)
+(2.775557562e-17 2.775557562e-17 0)
+(0 -2.220446049e-16 -5.551115123e-17)
+(0 5.551115123e-17 0)
+(2.775557562e-17 1.110223025e-16 0)
+(2.775557562e-17 -5.551115123e-17 2.775557562e-17)
+(2.775557562e-17 -2.220446049e-16 -5.551115123e-17)
+(2.775557562e-17 0 2.775557562e-17)
+(2.775557562e-17 0 0)
+(0 0 2.775557562e-17)
+(2.775557562e-17 -4.440892099e-16 0)
+(0 0 2.775557562e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 0 0)
+(0 -2.220446049e-16 -5.551115123e-17)
+(0 -5.551115123e-17 2.775557562e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 5.551115123e-17 -5.551115123e-17)
+(2.775557562e-17 -4.440892099e-16 -5.551115123e-17)
+(2.775557562e-17 0 2.775557562e-17)
+(2.775557562e-17 0 0)
+(0 0 2.775557562e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 5.551115123e-17 2.775557562e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 0 0)
+(0 -2.220446049e-16 -5.551115123e-17)
+(0 0 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 2.775557562e-17)
+(2.775557562e-17 -2.220446049e-16 -5.551115123e-17)
+(-5.551115123e-17 5.551115123e-17 -2.775557562e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 -5.551115123e-17 0)
+(2.775557562e-17 -2.220446049e-16 0)
+(2.775557562e-17 0 2.775557562e-17)
+(2.775557562e-17 0 -1.387778781e-17)
+(2.775557562e-17 0 2.775557562e-17)
+(0 2.220446049e-16 -5.551115123e-17)
+(0 5.551115123e-17 2.775557562e-17)
+(2.775557562e-17 0 -1.387778781e-17)
+(0 5.551115123e-17 2.775557562e-17)
+(2.775557562e-17 0 -5.551115123e-17)
+(0 0 0)
+(2.775557562e-17 0 0)
+(0 -5.551115123e-17 5.551115123e-17)
+(5.551115123e-17 0 -5.551115123e-17)
+(0 0 -5.551115123e-17)
+(0 -2.220446049e-16 -1.387778781e-17)
+(2.775557562e-17 0 2.775557562e-17)
+(2.775557562e-17 -4.440892099e-16 -5.551115123e-17)
+(0 0 2.775557562e-17)
+(2.775557562e-17 -4.440892099e-16 -1.387778781e-17)
+(0 0 2.775557562e-17)
+(0 -2.220446049e-16 5.551115123e-17)
+(0 0 0)
+(2.775557562e-17 0 -1.387778781e-17)
+(0 0 0)
+(2.775557562e-17 0 -5.551115123e-17)
+(2.775557562e-17 0 2.775557562e-17)
+(2.775557562e-17 0 -1.387778781e-17)
+(2.775557562e-17 -1.110223025e-16 2.775557562e-17)
+(0 -2.220446049e-16 0)
+(0 0 2.775557562e-17)
+(2.775557562e-17 0 -1.387778781e-17)
+(0 -1.110223025e-16 2.775557562e-17)
+(0 2.220446049e-16 1.110223025e-16)
+(0 -1.110223025e-16 0)
+(2.775557562e-17 0 -1.387778781e-17)
+(0 0 0)
+(0 -2.220446049e-16 -5.551115123e-17)
+(2.775557562e-17 0 2.775557562e-17)
+(2.775557562e-17 0 -1.387778781e-17)
+(-2.775557562e-17 1.110223025e-16 0)
+(2.775557562e-17 2.220446049e-16 -5.551115123e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 2.220446049e-16 -1.387778781e-17)
+(2.775557562e-17 -1.110223025e-16 2.775557562e-17)
+(2.775557562e-17 0 -5.551115123e-17)
+(2.775557562e-17 0 2.775557562e-17)
+(2.775557562e-17 -2.220446049e-16 -1.387778781e-17)
+(2.775557562e-17 -1.110223025e-16 2.775557562e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 1.110223025e-16 0)
+(2.775557562e-17 -2.220446049e-16 -1.387778781e-17)
+(0 0 0)
+(0 0 -5.551115123e-17)
+(2.775557562e-17 -1.110223025e-16 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 2.775557562e-17)
+(0 -2.220446049e-16 -5.551115123e-17)
+(2.775557562e-17 -1.110223025e-16 2.775557562e-17)
+(2.775557562e-17 -4.440892099e-16 0)
+(2.775557562e-17 -1.110223025e-16 2.775557562e-17)
+(2.775557562e-17 -2.220446049e-16 -5.551115123e-17)
+(0 3.330669074e-16 0)
+(2.775557562e-17 0 0)
+(0 -1.110223025e-16 0)
+(0 -4.440892099e-16 -5.551115123e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 -2.220446049e-16 -1.387778781e-17)
+(0 2.220446049e-16 5.551115123e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(2.775557562e-17 0 -5.551115123e-17)
+(2.775557562e-17 0 0)
+(0 0 0)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 4.440892099e-16 1.110223025e-16)
+(2.775557562e-17 -2.220446049e-16 -1.387778781e-17)
+(2.775557562e-17 -2.220446049e-16 -5.551115123e-17)
+(2.775557562e-17 -4.440892099e-16 0)
+(0 -2.220446049e-16 -5.551115123e-17)
+(2.775557562e-17 0 0)
+(0 0 5.551115123e-17)
+(2.775557562e-17 0 -1.387778781e-17)
+(2.775557562e-17 -4.440892099e-16 -5.551115123e-17)
+(0 0 0)
+(0 -2.220446049e-16 0)
+(2.775557562e-17 -4.440892099e-16 -1.387778781e-17)
+(0 2.220446049e-16 1.110223025e-16)
+(0 -4.440892099e-16 0)
+(2.775557562e-17 -4.440892099e-16 -5.551115123e-17)
+(2.775557562e-17 -4.440892099e-16 -1.387778781e-17)
+(0 -4.440892099e-16 -5.551115123e-17)
+(0 4.440892099e-16 0)
+(0 0 5.551115123e-17)
+(2.775557562e-17 -4.440892099e-16 -1.387778781e-17)
+(2.775557562e-17 -2.220446049e-16 -5.551115123e-17)
+(0 0 -1.387778781e-17)
+(0 -2.220446049e-16 0)
+(0 -4.440892099e-16 -1.387778781e-17)
+(0 2.220446049e-16 1.110223025e-16)
+(0 -4.440892099e-16 -1.387778781e-17)
+(2.775557562e-17 -2.220446049e-16 -5.551115123e-17)
+(0 -8.881784197e-16 -1.387778781e-17)
+(0 -2.220446049e-16 -5.551115123e-17)
+(0 -2.220446049e-16 5.551115123e-17)
+(2.775557562e-17 -4.440892099e-16 -5.551115123e-17)
+(0 0 0)
+(0 8.881784197e-16 1.110223025e-16)
+(5.551115123e-17 -2.220446049e-16 -5.551115123e-17)
+(2.775557562e-17 0 -5.551115123e-17)
+(0 -2.220446049e-16 5.551115123e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 -4.440892099e-16 -5.551115123e-17)
+(2.775557562e-17 2.220446049e-16 0)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 0 0)
+(2.775557562e-17 0 -5.551115123e-17)
+(2.775557562e-17 -2.220446049e-16 -5.551115123e-17)
+(0 -2.220446049e-16 -5.551115123e-17)
+(2.775557562e-17 -2.220446049e-16 -5.551115123e-17)
+(2.775557562e-17 0 0)
+(0 0 -5.551115123e-17)
+(2.775557562e-17 -1.110223025e-16 2.775557562e-17)
+(0 2.220446049e-16 5.551115123e-17)
+(0 0 0)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 -2.220446049e-16 2.775557562e-17)
+(0 -6.661338148e-16 -5.551115123e-17)
+(0 -2.220446049e-16 2.775557562e-17)
+(2.775557562e-17 2.220446049e-16 0)
+(2.775557562e-17 0 2.775557562e-17)
+(2.775557562e-17 0 0)
+(0 0 2.775557562e-17)
+(0 -2.220446049e-16 0)
+(0 1.110223025e-16 2.775557562e-17)
+(2.775557562e-17 -4.440892099e-16 -5.551115123e-17)
+(0 -1.110223025e-16 0)
+(2.775557562e-17 -4.440892099e-16 -5.551115123e-17)
+(0 0 0)
+(0 -4.440892099e-16 -5.551115123e-17)
+(2.775557562e-17 0 2.775557562e-17)
+(2.775557562e-17 -4.440892099e-16 -5.551115123e-17)
+(2.775557562e-17 -2.220446049e-16 2.775557562e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 0 2.775557562e-17)
+(0 -4.440892099e-16 -5.551115123e-17)
+(0 0 2.775557562e-17)
+(0 2.220446049e-16 5.551115123e-17)
+(0 0 0)
+(2.775557562e-17 -6.661338148e-16 0)
+(0 2.220446049e-16 0)
+(0 0 -5.551115123e-17)
+(2.775557562e-17 0 2.775557562e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 -2.220446049e-16 2.775557562e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(2.775557562e-17 -2.220446049e-16 2.775557562e-17)
+(0 2.220446049e-16 0)
+(2.775557562e-17 0 2.775557562e-17)
+(2.775557562e-17 0 -5.551115123e-17)
+(2.775557562e-17 0 2.775557562e-17)
+(5.551115123e-17 -4.440892099e-16 -5.551115123e-17)
+(0 2.220446049e-16 0)
+(2.775557562e-17 -4.440892099e-16 -5.551115123e-17)
+(0 2.220446049e-16 0)
+(-5.551115123e-17 8.881784197e-16 5.551115123e-17)
+(2.775557562e-17 -2.220446049e-16 2.775557562e-17)
+(5.551115123e-17 -4.440892099e-16 -5.551115123e-17)
+(0 0 0)
+(2.775557562e-17 0 -5.551115123e-17)
+(0 -2.220446049e-16 0)
+(-2.775557562e-17 0 -5.551115123e-17)
+(2.775557562e-17 0 2.775557562e-17)
+(5.551115123e-17 0 -5.551115123e-17)
+(0 0 0)
+(2.775557562e-17 0 -5.551115123e-17)
+(0 -2.220446049e-16 0)
+(-5.551115123e-17 0 5.551115123e-17)
+(2.775557562e-17 0 2.775557562e-17)
+(5.551115123e-17 0 -5.551115123e-17)
+(0 2.220446049e-16 0)
+(2.775557562e-17 -4.440892099e-16 -5.551115123e-17)
+(0 -2.220446049e-16 0)
+(-2.775557562e-17 0 -5.551115123e-17)
+(2.775557562e-17 -2.220446049e-16 2.775557562e-17)
+(5.551115123e-17 -4.440892099e-16 -5.551115123e-17)
+(0 -2.220446049e-16 0)
+(2.775557562e-17 0 -5.551115123e-17)
+(0 -2.220446049e-16 0)
+(-5.551115123e-17 8.881784197e-16 5.551115123e-17)
+(2.775557562e-17 -2.220446049e-16 2.775557562e-17)
+(5.551115123e-17 0 -5.551115123e-17)
+(0 -2.220446049e-16 0)
+(0 1.734723476e-18 0)
+(0 2.220446049e-16 0)
+(2.775557562e-17 0 -5.551115123e-17)
+(2.775557562e-17 -2.220446049e-16 2.775557562e-17)
+(2.775557562e-17 0 2.775557562e-17)
+(0 -2.220446049e-16 2.775557562e-17)
+(-2.775557562e-17 -4.440892099e-16 -5.551115123e-17)
+(2.775557562e-17 -4.440892099e-16 0)
+(0 -2.775557562e-17 0)
+(2.775557562e-17 0 2.775557562e-17)
+(5.551115123e-17 0 -5.551115123e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(2.775557562e-17 -5.551115123e-17 -8.326672685e-17)
+(0 -2.220446049e-16 0)
+(2.775557562e-17 0 -5.551115123e-17)
+(2.775557562e-17 0 2.775557562e-17)
+(0 -2.775557562e-17 0)
+(-2.775557562e-17 2.220446049e-16 -2.775557562e-17)
+(-5.551115123e-17 0 5.551115123e-17)
+(2.775557562e-17 2.220446049e-16 -2.775557562e-17)
+(0 0 -2.775557562e-17)
+(2.775557562e-17 0 2.775557562e-17)
+(5.551115123e-17 0 -5.551115123e-17)
+(0 2.220446049e-16 0)
+(0 -2.775557562e-17 2.775557562e-17)
+(0 0 0)
+(2.775557562e-17 -4.440892099e-16 -5.551115123e-17)
+(0 -4.440892099e-16 2.775557562e-17)
+(0 0 2.775557562e-17)
+(2.775557562e-17 -2.220446049e-16 2.775557562e-17)
+(0 -4.440892099e-16 -5.551115123e-17)
+(0 -4.440892099e-16 0)
+(0 -5.551115123e-17 -2.775557562e-17)
+(2.775557562e-17 0 2.775557562e-17)
+(2.775557562e-17 0 -5.551115123e-17)
+(2.775557562e-17 0 0)
+(0 0 0)
+(0 0 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 2.775557562e-17)
+(0 0 -2.775557562e-17)
+(2.775557562e-17 0 2.775557562e-17)
+(0 -8.881784197e-16 -5.551115123e-17)
+(0 -2.220446049e-16 0)
+(0 -1.110223025e-16 0)
+(2.775557562e-17 0 2.775557562e-17)
+(2.775557562e-17 -8.881784197e-16 0)
+(2.775557562e-17 -4.440892099e-16 0)
+(0 -5.551115123e-17 -2.775557562e-17)
+(0 -2.220446049e-16 0)
+(5.551115123e-17 0 0)
+(2.775557562e-17 -2.220446049e-16 2.775557562e-17)
+(0 0 -2.775557562e-17)
+(2.775557562e-17 0 2.775557562e-17)
+(0 -8.881784197e-16 -5.551115123e-17)
+(0 -4.440892099e-16 0)
+(0 0 0)
+(2.775557562e-17 0 2.775557562e-17)
+(2.775557562e-17 0 -5.551115123e-17)
+(2.775557562e-17 -6.661338148e-16 0)
+(0 0 -2.775557562e-17)
+(0 -2.220446049e-16 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 2.775557562e-17)
+(0 0 0)
+(2.775557562e-17 0 2.775557562e-17)
+(0 -4.440892099e-16 -5.551115123e-17)
+(0 -2.220446049e-16 0)
+(0 0 -2.775557562e-17)
+(2.775557562e-17 -4.440892099e-16 2.775557562e-17)
+(0 0 0)
+(0 -1.110223025e-16 0)
+(5.551115123e-17 0 0)
+(0 -2.220446049e-16 -2.775557562e-17)
+(0 -1.110223025e-16 -2.775557562e-17)
+(2.775557562e-17 0 0)
+(0 -1.110223025e-16 -2.775557562e-17)
+(2.775557562e-17 -1.110223025e-16 0)
+(2.775557562e-17 0 0)
+(0 0 -2.775557562e-17)
+(0 -1.110223025e-16 0)
+(0 0 -2.775557562e-17)
+(0 0 0)
+(2.775557562e-17 1.110223025e-16 -2.775557562e-17)
+(0 2.220446049e-16 0)
+(0 -2.220446049e-16 0)
+(0 0 0)
+(0 0 0)
+(0 -2.220446049e-16 0)
+(0 2.220446049e-16 0)
+(0 0 0)
+(2.775557562e-17 0 -2.775557562e-17)
+(2.775557562e-17 0 0)
+(0 0 0)
+(0 0 -2.775557562e-17)
+(2.775557562e-17 -4.440892099e-16 -2.775557562e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 -2.775557562e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 -2.775557562e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 -2.220446049e-16 -2.775557562e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(2.775557562e-17 -2.220446049e-16 -2.775557562e-17)
+(0 2.220446049e-16 2.775557562e-17)
+(0 0 0)
+(0 -2.220446049e-16 0)
+(2.775557562e-17 -2.220446049e-16 -2.775557562e-17)
+(0 2.220446049e-16 2.775557562e-17)
+(0 2.220446049e-16 0)
+(0 0 0)
+(2.775557562e-17 -2.220446049e-16 -2.775557562e-17)
+(0 -2.220446049e-16 2.775557562e-17)
+(0 0 0)
+(2.775557562e-17 0 0)
+(0 0 2.775557562e-17)
+(2.775557562e-17 -4.440892099e-16 0)
+(0 0 2.775557562e-17)
+(2.775557562e-17 -4.440892099e-16 0)
+(0 4.440892099e-16 2.775557562e-17)
+(2.775557562e-17 -4.440892099e-16 0)
+(0 0 -2.775557562e-17)
+(0 0 -2.775557562e-17)
+(0 -4.440892099e-16 -2.775557562e-17)
+(2.775557562e-17 0 0)
+(0 -8.881784197e-16 -2.775557562e-17)
+(0 0 0)
+(0 1.734723476e-18 -2.775557562e-17)
+(2.775557562e-17 -2.220446049e-16 2.775557562e-17)
+(2.775557562e-17 0 0)
+(0 0 2.775557562e-17)
+(2.775557562e-17 -2.775557562e-17 -2.775557562e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 -2.775557562e-17 -8.326672685e-17)
+(2.775557562e-17 2.220446049e-16 2.775557562e-17)
+(0 0 0)
+(0 -4.440892099e-16 0)
+(2.775557562e-17 0 0)
+(0 -4.440892099e-16 0)
+(2.775557562e-17 2.775557562e-17 0)
+(2.775557562e-17 0 2.775557562e-17)
+(2.775557562e-17 0 0)
+(0 2.220446049e-16 -2.775557562e-17)
+(2.775557562e-17 -5.551115123e-17 0)
+(0 0 0)
+(0 0 0)
+(2.775557562e-17 -2.220446049e-16 2.775557562e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 2.775557562e-17)
+(0 -5.551115123e-17 0)
+(0 -2.220446049e-16 0)
+(-2.775557562e-17 0 0)
+(2.775557562e-17 -4.440892099e-16 2.775557562e-17)
+(2.775557562e-17 0 0)
+(0 0 0)
+(0 -1.110223025e-16 0)
+(0 0 0)
+(2.775557562e-17 1.110223025e-16 0)
+(2.775557562e-17 -2.220446049e-16 2.775557562e-17)
+(0 0 0)
+(0 -2.220446049e-16 0)
+(2.775557562e-17 0 0)
+(0 -6.661338148e-16 0)
+(0 -1.110223025e-16 0)
+(2.775557562e-17 -6.661338148e-16 2.775557562e-17)
+(0 -1.110223025e-16 -2.775557562e-17)
+(0 -2.220446049e-16 -2.775557562e-17)
+(0 -1.110223025e-16 0)
+(0 -2.220446049e-16 0)
+(0 0 0)
+(2.775557562e-17 0 2.775557562e-17)
+(0 -1.110223025e-16 0)
+(2.775557562e-17 -2.220446049e-16 2.775557562e-17)
+(0 -1.110223025e-16 0)
+(0 -4.440892099e-16 0)
+(0 0 0)
+(2.775557562e-17 -2.220446049e-16 2.775557562e-17)
+(2.775557562e-17 0 0)
+(0 -2.220446049e-16 0)
+(0 -1.110223025e-16 0)
+(0 -4.440892099e-16 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 -4.440892099e-16 2.775557562e-17)
+(0 0 0)
+(0 -2.220446049e-16 0)
+(2.775557562e-17 1.110223025e-16 0)
+(0 0 0)
+(0 2.220446049e-16 2.775557562e-17)
+(2.775557562e-17 -4.440892099e-16 2.775557562e-17)
+(0 -2.220446049e-16 2.775557562e-17)
+(0 2.220446049e-16 -2.775557562e-17)
+(0 2.220446049e-16 2.775557562e-17)
+(0 2.220446049e-16 0)
+(0 2.220446049e-16 2.775557562e-17)
+(2.775557562e-17 0 2.775557562e-17)
+(0 -2.220446049e-16 2.775557562e-17)
+(0 -4.440892099e-16 2.775557562e-17)
+(0 2.220446049e-16 2.775557562e-17)
+(2.775557562e-17 -4.440892099e-16 0)
+(0 0 2.775557562e-17)
+(-2.775557562e-17 4.440892099e-16 0)
+(2.775557562e-17 0 0)
+(0 0 2.775557562e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 0)
+(0 0 2.775557562e-17)
+(0 0 2.775557562e-17)
+(0 -2.220446049e-16 -2.775557562e-17)
+(0 -8.881784197e-16 2.775557562e-17)
+(2.775557562e-17 -4.440892099e-16 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 0)
+(-2.775557562e-17 4.440892099e-16 0)
+(2.775557562e-17 0 0)
+(0 -4.440892099e-16 2.775557562e-17)
+(2.775557562e-17 2.220446049e-16 0)
+(2.775557562e-17 -4.440892099e-16 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 2.775557562e-17)
+(2.775557562e-17 -4.440892099e-16 0)
+(0 0 2.775557562e-17)
+(2.775557562e-17 -4.440892099e-16 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 -2.220446049e-16 0)
+(-2.775557562e-17 4.440892099e-16 0)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 -4.440892099e-16 2.775557562e-17)
+(0 4.440892099e-16 2.775557562e-17)
+(2.775557562e-17 0 0)
+(0 4.440892099e-16 2.775557562e-17)
+(0 0 2.775557562e-17)
+(0 -2.220446049e-16 2.775557562e-17)
+(0 -4.440892099e-16 2.775557562e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(2.775557562e-17 0 0)
+(0 2.220446049e-16 2.775557562e-17)
+(-2.775557562e-17 4.440892099e-16 0)
+(0 2.220446049e-16 2.775557562e-17)
+(0 0 2.775557562e-17)
+(0 0 2.775557562e-17)
+(2.775557562e-17 -4.440892099e-16 0)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 -8.881784197e-16 2.775557562e-17)
+(0 -2.220446049e-16 2.775557562e-17)
+(2.775557562e-17 0 0)
+(0 0 2.775557562e-17)
+(2.775557562e-17 0 2.775557562e-17)
+(0 4.440892099e-16 0)
+(0 -4.440892099e-16 2.775557562e-17)
+(-2.775557562e-17 4.440892099e-16 2.775557562e-17)
+(0 0 -2.775557562e-17)
+(0 4.440892099e-16 0)
+(5.551115123e-17 0 2.775557562e-17)
+(2.775557562e-17 0 -2.775557562e-17)
+(0 -8.881784197e-16 2.775557562e-17)
+(0 0 0)
+(2.775557562e-17 -4.440892099e-16 0)
+(-2.775557562e-17 4.440892099e-16 2.775557562e-17)
+(2.775557562e-17 0 2.775557562e-17)
+(0 0 0)
+(0 0 2.775557562e-17)
+(0 -4.440892099e-16 -2.775557562e-17)
+(0 0 -2.775557562e-17)
+(0 0 -2.775557562e-17)
+(5.551115123e-17 0 2.775557562e-17)
+(0 -4.440892099e-16 -2.775557562e-17)
+(0 -8.881784197e-16 -2.775557562e-17)
+(0 0 0)
+(0 -6.938893904e-18 -5.551115123e-17)
+(2.775557562e-17 -1.387778781e-17 -5.551115123e-17)
+(2.775557562e-17 -1.387778781e-17 -5.551115123e-17)
+(2.775557562e-17 0 0)
+(0 0 5.551115123e-17)
+(5.551115123e-17 -5.551115123e-17 -5.551115123e-17)
+(5.551115123e-17 0 -5.551115123e-17)
+(0 0 5.551115123e-17)
+(2.775557562e-17 0 0)
+(0 0 5.551115123e-17)
+(2.775557562e-17 5.551115123e-17 0)
+(0 0 1.110223025e-16)
+(0 -1.110223025e-16 5.551115123e-17)
+(2.775557562e-17 -5.551115123e-17 0)
+(0 1.110223025e-16 5.551115123e-17)
+(2.775557562e-17 0 0)
+(0 1.110223025e-16 5.551115123e-17)
+(2.775557562e-17 -1.110223025e-16 0)
+(0 0 0)
+(0 0 0)
+(2.775557562e-17 0 5.551115123e-17)
+(0 -2.220446049e-16 0)
+(2.775557562e-17 -1.110223025e-16 5.551115123e-17)
+(2.775557562e-17 -2.220446049e-16 -5.551115123e-17)
+(0 -1.110223025e-16 5.551115123e-17)
+(2.775557562e-17 -1.110223025e-16 0)
+(0 -2.220446049e-16 5.551115123e-17)
+(2.775557562e-17 0 0)
+(-2.775557562e-17 1.110223025e-16 5.551115123e-17)
+(0 2.220446049e-16 0)
+(0 0 0)
+(0 0 0)
+(0 0 0)
+(0 -2.220446049e-16 0)
+(0 0 0)
+(0 0 0)
+(0 -2.220446049e-16 0)
+(0 -2.220446049e-16 0)
+(0 -4.440892099e-16 0)
+(2.775557562e-17 -2.220446049e-16 -5.551115123e-17)
+(0 -2.220446049e-16 0)
+(0 0 0)
+(0 0 0)
+(0 -2.220446049e-16 0)
+(0 -2.220446049e-16 0)
+(0 -2.220446049e-16 0)
+(0 0 0)
+(0 0 0)
+(0 -4.440892099e-16 0)
+(0 2.220446049e-16 0)
+(0 -2.220446049e-16 0)
+(-2.775557562e-17 1.734723476e-18 1.387778781e-17)
+(0 4.440892099e-16 0)
+(0 0 1.387778781e-17)
+(0 -6.661338148e-16 0)
+(-2.775557562e-17 0 -2.775557562e-17)
+(0 -2.220446049e-16 0)
+(2.775557562e-17 -6.938893904e-18 0)
+(0 0 0)
+(0 -6.938893904e-18 -1.387778781e-17)
+(0 2.220446049e-16 0)
+(5.551115123e-17 -1.387778781e-17 2.775557562e-17)
+(0 0 0)
+(0 2.775557562e-17 -1.387778781e-17)
+(0 -4.440892099e-16 0)
+(2.775557562e-17 -1.387778781e-17 1.387778781e-17)
+(0 4.440892099e-16 0)
+(5.551115123e-17 -1.387778781e-17 2.775557562e-17)
+(2.775557562e-17 0 0)
+(0 1.387778781e-17 1.387778781e-17)
+(0 8.881784197e-16 0)
+(0 0 1.387778781e-17)
+(2.775557562e-17 0 0)
+(0 0 0)
+(0 0 0)
+(0 2.775557562e-17 1.387778781e-17)
+(2.775557562e-17 4.440892099e-16 0)
+(0 0 1.387778781e-17)
+(0 0 0)
+(2.775557562e-17 2.775557562e-17 -2.775557562e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 -4.440892099e-16 -5.551115123e-17)
+(0 -5.551115123e-17 0)
+(2.775557562e-17 -4.440892099e-16 -5.551115123e-17)
+(2.775557562e-17 5.551115123e-17 0)
+(2.775557562e-17 0 -5.551115123e-17)
+(0 -2.775557562e-17 0)
+(2.775557562e-17 -4.440892099e-16 -5.551115123e-17)
+(0 -2.775557562e-17 1.387778781e-17)
+(0 -2.775557562e-17 2.775557562e-17)
+(0 2.775557562e-17 0)
+(0 5.551115123e-17 1.387778781e-17)
+(0 -5.551115123e-17 2.775557562e-17)
+(2.775557562e-17 0 0)
+(0 0 0)
+(2.775557562e-17 0 0)
+(0 0 1.387778781e-17)
+(-2.775557562e-17 0 -1.387778781e-17)
+(-5.551115123e-17 5.551115123e-17 -2.775557562e-17)
+(2.775557562e-17 0 0)
+(0 0 0)
+(2.775557562e-17 0 0)
+(0 0 1.387778781e-17)
+(0 0 1.387778781e-17)
+(0 0 2.775557562e-17)
+(-5.551115123e-17 -5.551115123e-17 -1.387778781e-17)
+(0 -5.551115123e-17 1.387778781e-17)
+(0 -5.551115123e-17 2.775557562e-17)
+(2.775557562e-17 0 0)
+(0 0 0)
+(2.775557562e-17 -1.110223025e-16 0)
+(0 -1.110223025e-16 1.387778781e-17)
+(-2.775557562e-17 5.551115123e-17 -1.387778781e-17)
+(-5.551115123e-17 1.665334537e-16 -2.775557562e-17)
+(2.775557562e-17 0 0)
+(0 0 0)
+(2.775557562e-17 0 0)
+(0 0 1.387778781e-17)
+(0 0 1.387778781e-17)
+(0 0 2.775557562e-17)
+(2.775557562e-17 -1.110223025e-16 0)
+(0 0 0)
+(2.775557562e-17 -1.110223025e-16 0)
+(0 -1.110223025e-16 1.387778781e-17)
+(0 -1.110223025e-16 1.387778781e-17)
+(0 -1.110223025e-16 2.775557562e-17)
+(-2.775557562e-17 0 0)
+(2.775557562e-17 0 1.387778781e-17)
+(0 -1.110223025e-16 2.775557562e-17)
+(2.775557562e-17 0 4.163336342e-17)
+(2.775557562e-17 -1.110223025e-16 0)
+(2.775557562e-17 -1.110223025e-16 0)
+(0 0 1.387778781e-17)
+(2.775557562e-17 -1.110223025e-16 1.387778781e-17)
+(0 -2.220446049e-16 2.775557562e-17)
+(2.775557562e-17 -1.110223025e-16 4.163336342e-17)
+(2.775557562e-17 -1.110223025e-16 0)
+(2.775557562e-17 -1.110223025e-16 0)
+(0 -1.110223025e-16 1.387778781e-17)
+(2.775557562e-17 0 1.387778781e-17)
+(0 0 2.775557562e-17)
+(0 0 1.387778781e-17)
+(0 -1.110223025e-16 1.387778781e-17)
+(-2.775557562e-17 2.220446049e-16 0)
+(2.775557562e-17 0 0)
+(0 0 0)
+(2.775557562e-17 0 0)
+(0 -1.110223025e-16 1.387778781e-17)
+(0 0 1.387778781e-17)
+(0 0 2.775557562e-17)
+(2.775557562e-17 1.110223025e-16 0)
+(0 0 0)
+(2.775557562e-17 0 0)
+(0 2.220446049e-16 1.387778781e-17)
+(0 2.220446049e-16 1.387778781e-17)
+(0 -2.220446049e-16 2.775557562e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(2.775557562e-17 -2.220446049e-16 2.775557562e-17)
+(-2.775557562e-17 4.440892099e-16 -5.551115123e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 2.220446049e-16 0)
+(2.775557562e-17 0 2.775557562e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 2.220446049e-16 0)
+(2.775557562e-17 -2.220446049e-16 2.775557562e-17)
+(2.775557562e-17 2.220446049e-16 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 -2.220446049e-16 2.775557562e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(2.775557562e-17 2.220446049e-16 0)
+(2.775557562e-17 0 2.775557562e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 -4.440892099e-16 0)
+(2.775557562e-17 0 2.775557562e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(2.775557562e-17 -4.440892099e-16 0)
+(2.775557562e-17 0 2.775557562e-17)
+(2.775557562e-17 0 0)
+(0 -2.220446049e-16 1.387778781e-17)
+(0 -2.220446049e-16 0)
+(2.775557562e-17 0 -1.387778781e-17)
+(2.775557562e-17 -2.220446049e-16 1.387778781e-17)
+(2.775557562e-17 -4.440892099e-16 2.775557562e-17)
+(2.775557562e-17 0 0)
+(0 2.220446049e-16 -1.387778781e-17)
+(-2.775557562e-17 2.220446049e-16 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 2.775557562e-17)
+(0 -2.220446049e-16 1.387778781e-17)
+(2.775557562e-17 0 1.387778781e-17)
+(2.775557562e-17 -4.440892099e-16 2.775557562e-17)
+(2.775557562e-17 2.220446049e-16 -1.387778781e-17)
+(2.775557562e-17 2.220446049e-16 1.387778781e-17)
+(2.775557562e-17 -2.220446049e-16 2.775557562e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 1.387778781e-17)
+(2.775557562e-17 -2.220446049e-16 2.775557562e-17)
+(2.775557562e-17 0 -1.387778781e-17)
+(2.775557562e-17 -4.440892099e-16 1.387778781e-17)
+(2.775557562e-17 -2.220446049e-16 2.775557562e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(2.775557562e-17 0 1.387778781e-17)
+(2.775557562e-17 -4.440892099e-16 2.775557562e-17)
+(2.775557562e-17 0 -1.387778781e-17)
+(2.775557562e-17 0 1.387778781e-17)
+(2.775557562e-17 4.440892099e-16 2.775557562e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 1.387778781e-17)
+(2.775557562e-17 2.220446049e-16 2.775557562e-17)
+(2.775557562e-17 -4.440892099e-16 -1.387778781e-17)
+(2.775557562e-17 0 1.387778781e-17)
+(2.775557562e-17 0 2.775557562e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(0 -6.661338148e-16 1.387778781e-17)
+(0 -4.440892099e-16 0)
+(2.775557562e-17 2.220446049e-16 -1.387778781e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 2.775557562e-17)
+(2.775557562e-17 0 1.387778781e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 -2.220446049e-16 2.775557562e-17)
+(2.775557562e-17 2.220446049e-16 0)
+(2.775557562e-17 0 1.387778781e-17)
+(2.775557562e-17 0 2.775557562e-17)
+(2.775557562e-17 -4.440892099e-16 0)
+(2.775557562e-17 -4.440892099e-16 0)
+(2.775557562e-17 -2.220446049e-16 2.775557562e-17)
+(2.775557562e-17 -2.220446049e-16 -1.387778781e-17)
+(2.775557562e-17 -4.440892099e-16 0)
+(2.775557562e-17 -2.220446049e-16 2.775557562e-17)
+(2.775557562e-17 -2.220446049e-16 1.387778781e-17)
+(2.775557562e-17 -4.440892099e-16 0)
+(2.775557562e-17 -2.220446049e-16 2.775557562e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 -2.220446049e-16 1.387778781e-17)
+(2.775557562e-17 -6.661338148e-16 2.775557562e-17)
+(2.775557562e-17 -2.220446049e-16 0)
+(2.775557562e-17 -4.440892099e-16 0)
+(2.775557562e-17 -2.220446049e-16 2.775557562e-17)
+(2.775557562e-17 -4.440892099e-16 -1.387778781e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 0 2.775557562e-17)
+(2.775557562e-17 -2.220446049e-16 1.387778781e-17)
+(2.775557562e-17 0 0)
+(2.775557562e-17 -4.440892099e-16 2.775557562e-17)
+(2.775557562e-17 0 0)
+(0 -4.440892099e-16 1.387778781e-17)
+(0 -4.440892099e-16 0)
+(-2.775557562e-17 4.440892099e-16 -2.775557562e-17)
+(0 -4.440892099e-16 1.387778781e-17)
+(0 0 0)
+(0 0 0)
+(0 -8.881784197e-16 1.387778781e-17)
+(0 4.440892099e-16 0)
+(-2.775557562e-17 0 -2.775557562e-17)
+(0 -4.440892099e-16 1.387778781e-17)
+(0 -4.440892099e-16 0)
+(2.775557562e-17 0 1.387778781e-17)
+(0 -4.440892099e-16 1.387778781e-17)
+(0 -8.881784197e-16 0)
+(-2.775557562e-17 4.440892099e-16 -2.775557562e-17)
+(0 -8.881784197e-16 1.387778781e-17)
+(0 -4.440892099e-16 0)
+(0 -4.440892099e-16 0)
+(0 -4.440892099e-16 1.387778781e-17)
+(0 -4.440892099e-16 0)
+(-2.775557562e-17 4.440892099e-16 -2.775557562e-17)
+(0 0 1.387778781e-17)
+(0 0 0)
+(0 -8.881784197e-16 1.387778781e-17)
+(2.775557562e-17 -4.440892099e-16 1.387778781e-17)
+(-2.775557562e-17 0 -5.551115123e-17)
+(0 -4.440892099e-16 1.387778781e-17)
+(0 -4.440892099e-16 0)
+(0 0 0)
+(0 -8.881784197e-16 1.387778781e-17)
+(2.775557562e-17 -4.440892099e-16 1.387778781e-17)
+(-2.775557562e-17 0 -5.551115123e-17)
+(0 0 1.387778781e-17)
+(0 0 0)
+(2.775557562e-17 -4.440892099e-16 2.775557562e-17)
 )
 ;
     }
diff --git a/tutorials/compressible/sonicFoam/laminar/forwardStep/0/U b/tutorials/compressible/sonicFoam/laminar/forwardStep/0/U
index f4a916551d1382118698fd0d48ae58e85f1d5567..108d3b176d362320371ea8cf6fdd841938e0f6c7 100644
--- a/tutorials/compressible/sonicFoam/laminar/forwardStep/0/U
+++ b/tutorials/compressible/sonicFoam/laminar/forwardStep/0/U
@@ -16,7 +16,7 @@ FoamFile
 
 dimensions      [0 1 -1 0 0 0 0];
 
-internalField   uniform (0 0 0);
+internalField   uniform (3 0 0);
 
 boundaryField
 {
diff --git a/tutorials/compressible/sonicFoam/laminar/forwardStep/system/fvSchemes b/tutorials/compressible/sonicFoam/laminar/forwardStep/system/fvSchemes
index 51799627c881c59a26a6af79531717e41daf7497..ae78848653a5068d308dd44a2e3360f8b32e8604 100644
--- a/tutorials/compressible/sonicFoam/laminar/forwardStep/system/fvSchemes
+++ b/tutorials/compressible/sonicFoam/laminar/forwardStep/system/fvSchemes
@@ -33,7 +33,7 @@ divSchemes
     div(phi,U)      Gauss upwind;
     div(phid,p)     Gauss limitedLinear 1;
     div(phi,e)      Gauss limitedLinear 1;
-    div(phi,K)      Gauss limitedLinear 1;
+    div(phi,Ekp)    Gauss limitedLinear 1;
     div((muEff*dev2(T(grad(U))))) Gauss linear 1;
 }
 
diff --git a/tutorials/compressible/sonicFoam/laminar/shockTube/system/fvSchemes b/tutorials/compressible/sonicFoam/laminar/shockTube/system/fvSchemes
index 52cd9397231b9b09a6a718aa674299f30e7e9202..e4ef732976abce98c58e97af6fe8f476cdf3a038 100644
--- a/tutorials/compressible/sonicFoam/laminar/shockTube/system/fvSchemes
+++ b/tutorials/compressible/sonicFoam/laminar/shockTube/system/fvSchemes
@@ -33,7 +33,7 @@ divSchemes
     div(phi,U)      Gauss upwind;
     div(phid,p)     Gauss limitedLinear 1;
     div(phi,e)      Gauss limitedLinear 1;
-    div(phi,K)      Gauss limitedLinear 1;
+    div(phi,Ekp)    Gauss limitedLinear 1;
     div((muEff*dev2(T(grad(U))))) Gauss linear 1;
 }
 
diff --git a/tutorials/compressible/sonicFoam/ras/nacaAirfoil/system/fvSchemes b/tutorials/compressible/sonicFoam/ras/nacaAirfoil/system/fvSchemes
index 4f1434c4797986ad7e8fcf905340a7c01a2423c7..1103448ca87f3445e201437ce3c92a7ae0424e81 100644
--- a/tutorials/compressible/sonicFoam/ras/nacaAirfoil/system/fvSchemes
+++ b/tutorials/compressible/sonicFoam/ras/nacaAirfoil/system/fvSchemes
@@ -29,25 +29,17 @@ divSchemes
 {
     default         none;
     div(phi,U)      Gauss limitedLinearV 1;
+    div(phi,e)      Gauss limitedLinear 1;
+    div(phi,Ekp)    Gauss limitedLinear 1;
+    div(phid,p)     Gauss limitedLinear 1;
     div(phi,k)      Gauss upwind;
     div(phi,epsilon) Gauss upwind;
-    div(phi,R)      Gauss upwind;
-    div(R)          Gauss linear;
-    div(phid,p)     Gauss limitedLinear 1;
-    div(phi,K)      Gauss limitedLinear 1;
-    div(phi,e)      Gauss limitedLinear 1;
     div((muEff*dev2(T(grad(U))))) Gauss linear;
 }
 
 laplacianSchemes
 {
-    default         none;
-    laplacian(muEff,U) Gauss linear limited 0.5;
-    laplacian(DkEff,k) Gauss linear limited 0.5;
-    laplacian(DREff,R) Gauss linear limited 0.5;
-    laplacian(DepsilonEff,epsilon) Gauss linear limited 0.5;
-    laplacian(Dp,p) Gauss linear limited 0.5;
-    laplacian(alphaEff,e) Gauss linear limited 0.5;
+    default         Gauss linear limited 0.5;
 }
 
 interpolationSchemes
diff --git a/tutorials/compressible/sonicFoam/ras/nacaAirfoil/system/fvSolution b/tutorials/compressible/sonicFoam/ras/nacaAirfoil/system/fvSolution
index 7c31faeadb24ffa805e69da6416d6b9ede855ecf..530a5bbd34bf71661fd8fc91815d685d199a6cc7 100644
--- a/tutorials/compressible/sonicFoam/ras/nacaAirfoil/system/fvSolution
+++ b/tutorials/compressible/sonicFoam/ras/nacaAirfoil/system/fvSolution
@@ -17,6 +17,11 @@ FoamFile
 
 solvers
 {
+    rho
+    {
+        solver          diagonal;
+    }
+
     p
     {
         solver          PBiCG;
@@ -25,26 +30,23 @@ solvers
         relTol          0;
     }
 
-    rho
+    "(U|e)"
     {
-        solver          PCG;
-        preconditioner  DIC;
-        tolerance       1e-08;
-        relTol          0;
+        $p;
+        tolerance       1e-9;
     }
 
-    "(U|e|k|epsilon|R)"
+    "(k|epsilon)"
     {
         $p;
-        tolerance       1e-08;
-        relTol          0;
+        tolerance       1e-10;
     }
 }
 
 PISO
 {
     nCorrectors     2;
-    nNonOrthogonalCorrectors 2;
+    nNonOrthogonalCorrectors 0;
 }
 
 
diff --git a/tutorials/compressible/sonicFoam/ras/prism/system/fvSchemes b/tutorials/compressible/sonicFoam/ras/prism/system/fvSchemes
index 6aa61d831af8b7e2f1f8c47350bfba0ff2b592f3..9f2b7136ac5870181e382d041126ca2927ee7bf3 100644
--- a/tutorials/compressible/sonicFoam/ras/prism/system/fvSchemes
+++ b/tutorials/compressible/sonicFoam/ras/prism/system/fvSchemes
@@ -29,25 +29,17 @@ divSchemes
 {
     default         none;
     div(phi,U)      Gauss limitedLinearV 1;
+    div(phi,e)      Gauss limitedLinear 1;
+    div(phi,Ekp)    Gauss limitedLinear 1;
+    div(phid,p)     Gauss limitedLinear 1;
     div(phi,k)      Gauss upwind;
     div(phi,epsilon) Gauss upwind;
-    div(phi,R)      Gauss upwind;
-    div(R)          Gauss linear;
-    div(phid,p)     Gauss limitedLinear 1;
-    div(phi,K)      Gauss limitedLinear 1;
-    div(phi,e)      Gauss limitedLinear 1;
     div((muEff*dev2(T(grad(U))))) Gauss linear;
 }
 
 laplacianSchemes
 {
-    default         none;
-    laplacian(muEff,U) Gauss linear corrected;
-    laplacian(DkEff,k) Gauss linear corrected;
-    laplacian(DREff,R) Gauss linear corrected;
-    laplacian(DepsilonEff,epsilon) Gauss linear corrected;
-    laplacian(Dp,p) Gauss linear corrected;
-    laplacian(alphaEff,e) Gauss linear corrected;
+    default         Gauss linear corrected;
 }
 
 interpolationSchemes
diff --git a/tutorials/compressible/sonicFoam/ras/prism/system/fvSolution b/tutorials/compressible/sonicFoam/ras/prism/system/fvSolution
index fc9fc84695078acb73ae01ce57b08b9d5d0ea5de..3f46bc0a2508c392334e84ad38e3884d205739d6 100644
--- a/tutorials/compressible/sonicFoam/ras/prism/system/fvSolution
+++ b/tutorials/compressible/sonicFoam/ras/prism/system/fvSolution
@@ -17,6 +17,11 @@ FoamFile
 
 solvers
 {
+    rho
+    {
+        solver          diagonal;
+    }
+
     p
     {
         solver          PBiCG;
@@ -25,34 +30,23 @@ solvers
         relTol          0;
     }
 
-    rho
-    {
-        solver          PCG;
-        preconditioner  DIC;
-        tolerance       1e-05;
-        relTol          0;
-    }
-
     "(U|e|R)"
     {
         $p;
         tolerance       1e-05;
-        relTol          0;
     }
 
     "(k|epsilon)"
     {
         $p;
         tolerance       1e-08;
-        relTol          0;
     }
-
 }
 
 PISO
 {
     nCorrectors     2;
-    nNonOrthogonalCorrectors 2;
+    nNonOrthogonalCorrectors 0;
 }
 
 
diff --git a/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/system/changeDictionaryDict b/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/system/changeDictionaryDict
index 254687533158b58902e8bc91a1d84d998444d710..2b5f43bcd4973c693a5b682ab0623928e716e44f 100644
--- a/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/system/changeDictionaryDict
+++ b/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/system/changeDictionaryDict
@@ -88,7 +88,7 @@ dictionaryReplacement
         {
             "baffle.*"
             {
-                type        compressible::temperatureThermoBaffle1D<constSolidThermoPhysics>;
+                type        compressible::temperatureThermoBaffle1D<hConstSolidThermoPhysics>;
                 baffleActivated yes;
                 thickness       uniform 0.005;  // thickness [m]
                 Qs              uniform 100;    // heat flux [W/m2]
@@ -107,7 +107,7 @@ dictionaryReplacement
                     Hf              0;
                     Cp              0;
                 }
-                density
+                equationOfState
                 {
                     rho             0;
                 }
diff --git a/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/system/changeDictionaryDict.baffle b/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/system/changeDictionaryDict.baffle
index 66f2a165e9a7c45c9806f88c1fce98867ac581f8..dcdadf9491ee2761e752752ef5988cb077beb038 100644
--- a/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/system/changeDictionaryDict.baffle
+++ b/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/system/changeDictionaryDict.baffle
@@ -88,7 +88,7 @@ dictionaryReplacement
         {
             "baffle1Wall.*"
             {
-                type   compressible::temperatureThermoBaffle1D<constSolidThermoPhysics>;
+                type   compressible::temperatureThermoBaffle1D<hConstSolidThermoPhysics>;
                 baffleActivated yes;
                 thickness       uniform 0.005;  // thickness [m]
                 Qs              uniform 100;    // heat flux [W/m2]
@@ -112,7 +112,7 @@ dictionaryReplacement
                     Hf              0;
                     Cp              10;
                 }
-                density
+                equationOfState
                 {
                     rho             10;
                 }
diff --git a/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/system/changeDictionaryDict.baffleRegion b/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/system/changeDictionaryDict.baffleRegion
index 8210154038f199288078f7a1ce86f8b4dd696bcd..5ab7e81015a19176e0ca2b696257eb25351aa47b 100644
--- a/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/system/changeDictionaryDict.baffleRegion
+++ b/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/system/changeDictionaryDict.baffleRegion
@@ -95,7 +95,7 @@ dictionaryReplacement
 
                 // Coupled BC.
                 neighbourFieldName  T;
-                kappa               basicThermo;
+                kappa               fluidThermo;
                 kappaName           none;
 
 
@@ -110,7 +110,7 @@ dictionaryReplacement
 
 
                 // Solid thermo
-                thermoType heSolidThermo<pureSolidMixture<constIsoSolidTransport<constSolidRad<specieThermo<constSolidThermo<constRho>,sensibleEnthalpy>>>>>;
+                thermoType heSolidThermo<pureSolidMixture<constIsoSolidTransport<constSolidRad<specieThermo<hConstThermo<rhoConst>,sensibleEnthalpy>>>>>;
 
 
                 mixture
@@ -135,7 +135,7 @@ dictionaryReplacement
                         Hf              0;
                         Cp              15;
                     }
-                    density
+                    equationOfState
                     {
                         rho             80;
                     }
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/constant/heater/thermophysicalProperties b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/constant/heater/thermophysicalProperties
index b9946a6b2106800f12b0b09b8f4dadb881ed15c4..cdcb5bdf4997a594e44ebf6a3ebe8ebda798ccf6 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/constant/heater/thermophysicalProperties
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/constant/heater/thermophysicalProperties
@@ -14,8 +14,7 @@ FoamFile
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-thermoType heSolidThermo<pureSolidMixture<constIsoSolidTransport<constSolidRad<specieThermo<constSolidThermo<constRho>,sensibleEnthalpy>>>>>;
-//thermoType heSolidThermo<multiComponentSolidMixture<constIsoSolidTransport<constSolidRad<specieThermo<constSolidThermo<constRho>,sensibleEnthalpy>>>>>;
+thermoType heSolidThermo<pureSolidMixture<constIsoSolidTransport<constSolidRad<specieThermo<hConstThermo<rhoConst>,sensibleEnthalpy>>>>>;
 
 mixture
 {
@@ -24,23 +23,26 @@ mixture
         nMoles      1;
         molWeight   12;
     }
+
     transport
     {
         kappa   80;
-        //kappa  (80 80 80);
     }
+
     radiation
     {
         sigmaS      0.0;
         kappaRad    0.0;
         emissivity  0.0;
     }
+
     thermodynamics
     {
         Hf      0;
         Cp      450;
     }
-    density
+
+    equationOfState
     {
         rho     8000;
     }
@@ -58,22 +60,26 @@ pmmaCoeffs
         nMoles      1;
         molWeight   100;
     }
+
     transport
     {
         kappa   0.152;
     }
+
     radiation
     {
         sigmaS      0.0;
         kappaRad    0.0;
         emissivity  0.1;
     }
+
     thermodynamics
     {
         Hf      0;
         Cp      1462;
     }
-    density
+
+    equationOfState
     {
         rho     1114.0;
     }
@@ -104,9 +110,11 @@ charCoeffs
         Cp      611.0;
     }
 
-    density
+    equationOfState
     {
         rho     11.5;
     }
 }
+
+
 // ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/bottomAir/changeDictionaryDict b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/bottomAir/changeDictionaryDict
index a736e341f62764e7fea3cc6d0769b3457dbd409e..df3988847815c66cdee90c06c2a47ee5b5f4272e 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/bottomAir/changeDictionaryDict
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/bottomAir/changeDictionaryDict
@@ -57,7 +57,7 @@ dictionaryReplacement
             {
                 type            compressible::turbulentTemperatureCoupledBaffleMixed;
                 neighbourFieldName T;
-                kappa           basicThermo;
+                kappa           fluidThermo;
                 kappaName       none;
                 value           uniform 300;
             }
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/topAir/changeDictionaryDict b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/topAir/changeDictionaryDict
index 787c1147d8fe51b83896187f272d052e6795caab..c1a4e6bf16904cbea90ad006193bbbac231a07d0 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/topAir/changeDictionaryDict
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/topAir/changeDictionaryDict
@@ -68,7 +68,7 @@ dictionaryReplacement
             {
                 type            compressible::turbulentTemperatureCoupledBaffleMixed;
                 neighbourFieldName T;
-                kappa           basicThermo;
+                kappa           fluidThermo;
                 kappaName       none;
                 value           uniform 300;
             }
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/constant/bottomWater/thermophysicalProperties b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/constant/bottomWater/thermophysicalProperties
index 128f32aaf08a1edc5dc4e2bb10ff00288326670b..3bbae3211369ca18198bc75a2c869e107a66a781 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/constant/bottomWater/thermophysicalProperties
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/constant/bottomWater/thermophysicalProperties
@@ -14,7 +14,7 @@ FoamFile
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-thermoType heRhoThermo<pureMixture<constTransport<specieThermo<hConstThermo<incompressible>,sensibleEnthalpy>>>>;
+thermoType heRhoThermo<pureMixture<constTransport<specieThermo<hConstThermo<rhoConst>,sensibleEnthalpy>>>>;
 
 mixture
 {
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/constant/heater/thermophysicalProperties b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/constant/heater/thermophysicalProperties
index b9946a6b2106800f12b0b09b8f4dadb881ed15c4..15b8d00f3de31a50043d21781f934a2285975b33 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/constant/heater/thermophysicalProperties
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/constant/heater/thermophysicalProperties
@@ -14,8 +14,7 @@ FoamFile
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-thermoType heSolidThermo<pureSolidMixture<constIsoSolidTransport<constSolidRad<specieThermo<constSolidThermo<constRho>,sensibleEnthalpy>>>>>;
-//thermoType heSolidThermo<multiComponentSolidMixture<constIsoSolidTransport<constSolidRad<specieThermo<constSolidThermo<constRho>,sensibleEnthalpy>>>>>;
+thermoType heSolidThermo<pureSolidMixture<constIsoSolidTransport<constSolidRad<specieThermo<hConstThermo<rhoConst>,sensibleEnthalpy>>>>>;
 
 mixture
 {
@@ -24,23 +23,26 @@ mixture
         nMoles      1;
         molWeight   12;
     }
+
     transport
     {
         kappa   80;
-        //kappa  (80 80 80);
     }
+
     radiation
     {
         sigmaS      0.0;
         kappaRad    0.0;
         emissivity  0.0;
     }
+
     thermodynamics
     {
         Hf      0;
         Cp      450;
     }
-    density
+
+    equationOfState
     {
         rho     8000;
     }
@@ -58,22 +60,26 @@ pmmaCoeffs
         nMoles      1;
         molWeight   100;
     }
+
     transport
     {
         kappa   0.152;
     }
+
     radiation
     {
         sigmaS      0.0;
         kappaRad    0.0;
         emissivity  0.1;
     }
+
     thermodynamics
     {
         Hf      0;
         Cp      1462;
     }
-    density
+
+    equationOfState
     {
         rho     1114.0;
     }
@@ -86,6 +92,7 @@ charCoeffs
         nMoles      1;
         molWeight   50;
     }
+
     transport
     {
         kappa   0.4;
@@ -104,9 +111,11 @@ charCoeffs
         Cp      611.0;
     }
 
-    density
+    equationOfState
     {
         rho     11.5;
     }
 }
+
+
 // ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/bottomWater/changeDictionaryDict b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/bottomWater/changeDictionaryDict
index 4c53b4cb8aa05d21efe07a798b2cf9a78f5b6406..1a7f5ecdd54c364ca6f18c8657be819c6485d5de 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/bottomWater/changeDictionaryDict
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/bottomWater/changeDictionaryDict
@@ -70,7 +70,7 @@ dictionaryReplacement
             {
                 type            compressible::turbulentTemperatureCoupledBaffleMixed;
                 neighbourFieldName T;
-                kappa           basicThermo;
+                kappa           fluidThermo;
                 kappaName       none;
                 value           uniform 300;
             }
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/bottomWater/changeDictionaryDict.save b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/bottomWater/changeDictionaryDict.save
index 35bf28b902080f15e0bf42baa1fee727e1ecc10b..797ef03aa283f1f94ce3c2b2a68c293d0e64de03 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/bottomWater/changeDictionaryDict.save
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/bottomWater/changeDictionaryDict.save
@@ -57,7 +57,7 @@ dictionaryReplacement
             {
                 type            compressible::turbulentTemperatureCoupledBaffleMixed;
                 neighbourFieldName T;
-                kappa           basicThermo;
+                kappa           fluidThermo;
                 kappaName       none;
                 value           uniform 300;
             }
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/topAir/changeDictionaryDict b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/topAir/changeDictionaryDict
index e4f2256b3cc71febc6b2971ee4b513191910fe74..18b85ea2e9ec25e3ba690c48c50a105db78370cb 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/topAir/changeDictionaryDict
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/topAir/changeDictionaryDict
@@ -69,7 +69,7 @@ dictionaryReplacement
             {
                 type            compressible::turbulentTemperatureCoupledBaffleMixed;
                 neighbourFieldName T;
-                kappa           basicThermo;
+                kappa           fluidThermo;
                 kappaName       none;
                 value           uniform 300;
             }
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/constant/heater/thermophysicalProperties b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/constant/heater/thermophysicalProperties
index b9946a6b2106800f12b0b09b8f4dadb881ed15c4..15b8d00f3de31a50043d21781f934a2285975b33 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/constant/heater/thermophysicalProperties
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/constant/heater/thermophysicalProperties
@@ -14,8 +14,7 @@ FoamFile
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-thermoType heSolidThermo<pureSolidMixture<constIsoSolidTransport<constSolidRad<specieThermo<constSolidThermo<constRho>,sensibleEnthalpy>>>>>;
-//thermoType heSolidThermo<multiComponentSolidMixture<constIsoSolidTransport<constSolidRad<specieThermo<constSolidThermo<constRho>,sensibleEnthalpy>>>>>;
+thermoType heSolidThermo<pureSolidMixture<constIsoSolidTransport<constSolidRad<specieThermo<hConstThermo<rhoConst>,sensibleEnthalpy>>>>>;
 
 mixture
 {
@@ -24,23 +23,26 @@ mixture
         nMoles      1;
         molWeight   12;
     }
+
     transport
     {
         kappa   80;
-        //kappa  (80 80 80);
     }
+
     radiation
     {
         sigmaS      0.0;
         kappaRad    0.0;
         emissivity  0.0;
     }
+
     thermodynamics
     {
         Hf      0;
         Cp      450;
     }
-    density
+
+    equationOfState
     {
         rho     8000;
     }
@@ -58,22 +60,26 @@ pmmaCoeffs
         nMoles      1;
         molWeight   100;
     }
+
     transport
     {
         kappa   0.152;
     }
+
     radiation
     {
         sigmaS      0.0;
         kappaRad    0.0;
         emissivity  0.1;
     }
+
     thermodynamics
     {
         Hf      0;
         Cp      1462;
     }
-    density
+
+    equationOfState
     {
         rho     1114.0;
     }
@@ -86,6 +92,7 @@ charCoeffs
         nMoles      1;
         molWeight   50;
     }
+
     transport
     {
         kappa   0.4;
@@ -104,9 +111,11 @@ charCoeffs
         Cp      611.0;
     }
 
-    density
+    equationOfState
     {
         rho     11.5;
     }
 }
+
+
 // ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/bottomAir/changeDictionaryDict b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/bottomAir/changeDictionaryDict
index a13bf04501645ae3ab5e7c544e0d2ee46da5b612..7abf71ca46718d2f4c250543ffa8ad993c4e918e 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/bottomAir/changeDictionaryDict
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/bottomAir/changeDictionaryDict
@@ -57,7 +57,7 @@ dictionaryReplacement
             {
                 type            compressible::turbulentTemperatureCoupledBaffleMixed;
                 neighbourFieldName T;
-                kappa           basicThermo;
+                kappa           fluidThermo;
                 kappaName       none;
                 value           uniform 300;
             }
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/topAir/changeDictionaryDict b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/topAir/changeDictionaryDict
index 787c1147d8fe51b83896187f272d052e6795caab..c1a4e6bf16904cbea90ad006193bbbac231a07d0 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/topAir/changeDictionaryDict
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/topAir/changeDictionaryDict
@@ -68,7 +68,7 @@ dictionaryReplacement
             {
                 type            compressible::turbulentTemperatureCoupledBaffleMixed;
                 neighbourFieldName T;
-                kappa           basicThermo;
+                kappa           fluidThermo;
                 kappaName       none;
                 value           uniform 300;
             }
diff --git a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeater/constant/heater/thermophysicalProperties b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeater/constant/heater/thermophysicalProperties
index b9946a6b2106800f12b0b09b8f4dadb881ed15c4..15b8d00f3de31a50043d21781f934a2285975b33 100644
--- a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeater/constant/heater/thermophysicalProperties
+++ b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeater/constant/heater/thermophysicalProperties
@@ -14,8 +14,7 @@ FoamFile
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-thermoType heSolidThermo<pureSolidMixture<constIsoSolidTransport<constSolidRad<specieThermo<constSolidThermo<constRho>,sensibleEnthalpy>>>>>;
-//thermoType heSolidThermo<multiComponentSolidMixture<constIsoSolidTransport<constSolidRad<specieThermo<constSolidThermo<constRho>,sensibleEnthalpy>>>>>;
+thermoType heSolidThermo<pureSolidMixture<constIsoSolidTransport<constSolidRad<specieThermo<hConstThermo<rhoConst>,sensibleEnthalpy>>>>>;
 
 mixture
 {
@@ -24,23 +23,26 @@ mixture
         nMoles      1;
         molWeight   12;
     }
+
     transport
     {
         kappa   80;
-        //kappa  (80 80 80);
     }
+
     radiation
     {
         sigmaS      0.0;
         kappaRad    0.0;
         emissivity  0.0;
     }
+
     thermodynamics
     {
         Hf      0;
         Cp      450;
     }
-    density
+
+    equationOfState
     {
         rho     8000;
     }
@@ -58,22 +60,26 @@ pmmaCoeffs
         nMoles      1;
         molWeight   100;
     }
+
     transport
     {
         kappa   0.152;
     }
+
     radiation
     {
         sigmaS      0.0;
         kappaRad    0.0;
         emissivity  0.1;
     }
+
     thermodynamics
     {
         Hf      0;
         Cp      1462;
     }
-    density
+
+    equationOfState
     {
         rho     1114.0;
     }
@@ -86,6 +92,7 @@ charCoeffs
         nMoles      1;
         molWeight   50;
     }
+
     transport
     {
         kappa   0.4;
@@ -104,9 +111,11 @@ charCoeffs
         Cp      611.0;
     }
 
-    density
+    equationOfState
     {
         rho     11.5;
     }
 }
+
+
 // ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeater/system/bottomAir/changeDictionaryDict b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeater/system/bottomAir/changeDictionaryDict
index a736e341f62764e7fea3cc6d0769b3457dbd409e..df3988847815c66cdee90c06c2a47ee5b5f4272e 100644
--- a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeater/system/bottomAir/changeDictionaryDict
+++ b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeater/system/bottomAir/changeDictionaryDict
@@ -57,7 +57,7 @@ dictionaryReplacement
             {
                 type            compressible::turbulentTemperatureCoupledBaffleMixed;
                 neighbourFieldName T;
-                kappa           basicThermo;
+                kappa           fluidThermo;
                 kappaName       none;
                 value           uniform 300;
             }
diff --git a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeater/system/topAir/changeDictionaryDict b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeater/system/topAir/changeDictionaryDict
index 787c1147d8fe51b83896187f272d052e6795caab..c1a4e6bf16904cbea90ad006193bbbac231a07d0 100644
--- a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeater/system/topAir/changeDictionaryDict
+++ b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeater/system/topAir/changeDictionaryDict
@@ -68,7 +68,7 @@ dictionaryReplacement
             {
                 type            compressible::turbulentTemperatureCoupledBaffleMixed;
                 neighbourFieldName T;
-                kappa           basicThermo;
+                kappa           fluidThermo;
                 kappaName       none;
                 value           uniform 300;
             }
diff --git a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/constant/heater/thermophysicalProperties b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/constant/heater/thermophysicalProperties
index e7a2619776aa2056bb3a9607d673b4b28e5fd59c..5008ddbcebcc9f140c54a17a084a05cdfa9e8f9d 100644
--- a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/constant/heater/thermophysicalProperties
+++ b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/constant/heater/thermophysicalProperties
@@ -14,8 +14,7 @@ FoamFile
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-thermoType heSolidThermo<pureSolidMixture<constIsoSolidTransport<constSolidRad<specieThermo<constSolidThermo<constRho>,sensibleEnthalpy>>>>>;
-//thermoType heSolidThermo<multiComponentSolidMixture<constIsoSolidTransport<constSolidRad<specieThermo<constSolidThermo<constRho>,sensibleEnthalpy>>>>>;
+thermoType heSolidThermo<pureSolidMixture<constIsoSolidTransport<constSolidRad<specieThermo<hConstThermo<rhoConst>,sensibleEnthalpy>>>>>;
 
 mixture
 {
@@ -24,23 +23,26 @@ mixture
         nMoles      1;
         molWeight   12;
     }
+
     transport
     {
         kappa   80;
-        //kappa  (80 80 80);
     }
+
     radiation
     {
         sigmaS      0.0;
         kappaRad    0.0;
         emissivity  0.5;
     }
+
     thermodynamics
     {
         Hf      0;
         Cp      450;
     }
-    density
+
+    equationOfState
     {
         rho     8000;
     }
@@ -58,22 +60,26 @@ pmmaCoeffs
         nMoles      1;
         molWeight   100;
     }
+
     transport
     {
         kappa   0.152;
     }
+
     radiation
     {
         sigmaS      0.0;
         kappaRad    0.0;
         emissivity  0.1;
     }
+
     thermodynamics
     {
         Hf      0;
         Cp      1462;
     }
-    density
+
+    equationOfState
     {
         rho     1114.0;
     }
@@ -86,6 +92,7 @@ charCoeffs
         nMoles      1;
         molWeight   50;
     }
+
     transport
     {
         kappa   0.4;
@@ -104,9 +111,11 @@ charCoeffs
         Cp      611.0;
     }
 
-    density
+    equationOfState
     {
         rho     11.5;
     }
 }
+
+
 // ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/bottomAir/changeDictionaryDict b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/bottomAir/changeDictionaryDict
index fb0130ea256d9b813708b8bd244b681bd10818af..c9197f1b246665ed83b4152d21e81e6438ca9252 100644
--- a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/bottomAir/changeDictionaryDict
+++ b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/bottomAir/changeDictionaryDict
@@ -55,7 +55,7 @@ dictionaryReplacement
             {
                 type            compressible::turbulentTemperatureRadCoupledMixed;
                 Tnbr            T;
-                kappa           basicThermo;
+                kappa           fluidThermo;
                 QrNbr           none;
                 Qr              Qr;
                 kappaName       none;
diff --git a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/topAir/changeDictionaryDict b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/topAir/changeDictionaryDict
index 369915887eca8e731698b99192f6c5856f862761..704d77ce7005ba08e0141c1bc5610b03ff359588 100644
--- a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/topAir/changeDictionaryDict
+++ b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/topAir/changeDictionaryDict
@@ -66,7 +66,7 @@ dictionaryReplacement
             {
                 type            compressible::turbulentTemperatureRadCoupledMixed;
                 Tnbr            T;
-                kappa           basicThermo;
+                kappa           fluidThermo;
                 QrNbr           none;
                 Qr              Qr;
                 kappaName       none;
diff --git a/tutorials/incompressible/pimpleDyMFoam/movingCone/constant/dynamicMeshDict b/tutorials/incompressible/pimpleDyMFoam/movingCone/constant/dynamicMeshDict
index 9044e3d0610312d683c34132bcc9c39cbcef9775..c411cc1e95a4172af755ce6e3cf955b13fc99066 100644
--- a/tutorials/incompressible/pimpleDyMFoam/movingCone/constant/dynamicMeshDict
+++ b/tutorials/incompressible/pimpleDyMFoam/movingCone/constant/dynamicMeshDict
@@ -19,9 +19,13 @@ dynamicFvMesh   dynamicMotionSolverFvMesh;
 
 motionSolverLibs ( "libfvMotionSolvers.so" );
 
-solver          velocityComponentLaplacian x;
+solver          velocityComponentLaplacian;
 
-diffusivity     directional ( 1 200 0 );
+velocityComponentLaplacianCoeffs
+{
+    component       x;
+    diffusivity     directional ( 1 200 0 );
+}
 
 
 // ************************************************************************* //
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/dynamicMeshDict b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/dynamicMeshDict
index 8923bedcf7996c0572fa94cdc7f81b9fb35a0e8e..4fad53756a4d1f21464878a4a8856c72de76d64d 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/dynamicMeshDict
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/dynamicMeshDict
@@ -20,7 +20,10 @@ motionSolverLibs ("libfvMotionSolvers.so");
 
 solver            displacementLaplacian;
 
-diffusivity       inverseDistance (wing);
+displacementLaplacianCoeffs
+{
+    diffusivity       inverseDistance (wing);
+}
 
 
 // ************************************************************************* //
diff --git a/tutorials/incompressible/potentialFreeSurfaceFoam/oscillatingBox/system/controlDict b/tutorials/incompressible/potentialFreeSurfaceFoam/oscillatingBox/system/controlDict
index 841980b5d801c0173def40ebbe6d62fd4aea3946..7ca125be5bdff367771bea3d0823fcf42d460679 100644
--- a/tutorials/incompressible/potentialFreeSurfaceFoam/oscillatingBox/system/controlDict
+++ b/tutorials/incompressible/potentialFreeSurfaceFoam/oscillatingBox/system/controlDict
@@ -55,17 +55,17 @@ functions
 {
     forces
     {
-	type 		forces;
-	functionObjectLibs ("libforces.so");
-	outputControl	outputTime;
-	outputInterval	1;
-	patches 	(floatingObject);
-	pName		p;
-	UName		U;
-	rhoName		rhoInf;
-	log		true;
-	rhoInf		1000;
-	CofR		(0 0 0);
+        type            forces;
+        functionObjectLibs ("libforces.so");
+        outputControl   outputTime;
+        outputInterval  1;
+        patches         (floatingObject);
+        pName           p;
+        UName           U;
+        rhoName         rhoInf;
+        log             true;
+        rhoInf          1000;
+        CofR            (0 0 0);
     }
 
     poolHeight
@@ -84,7 +84,7 @@ functions
         (
             zeta
         );
-        
+
     }
 };
 
diff --git a/tutorials/incompressible/simpleFoam/motorBike/0.org/U b/tutorials/incompressible/simpleFoam/motorBike/0.org/U
index 1073e4ca4aaf44292885b5af31e1c61fd23bcdf2..635097121830b8f88d0a5b59d3c30072c18bc1f4 100644
--- a/tutorials/incompressible/simpleFoam/motorBike/0.org/U
+++ b/tutorials/incompressible/simpleFoam/motorBike/0.org/U
@@ -23,6 +23,9 @@ internalField   uniform $flowVelocity;
 
 boundaryField
 {
+    //- Set patchGroups for constraint patches
+    #include "${WM_PROJECT_DIR}/etc/caseDicts/setConstraintTypes"
+
     #include "include/fixedInlet"
 
     outlet
diff --git a/tutorials/incompressible/simpleFoam/motorBike/0.org/k b/tutorials/incompressible/simpleFoam/motorBike/0.org/k
index f7382c2d80252d8f3f49f94d09f909dac315d460..834d2ad52c2afbf990bab910a1b7884eaaead3f3 100644
--- a/tutorials/incompressible/simpleFoam/motorBike/0.org/k
+++ b/tutorials/incompressible/simpleFoam/motorBike/0.org/k
@@ -22,6 +22,10 @@ internalField   uniform $turbulentKE;
 
 boundaryField
 {
+    //- Set patchGroups for constraint patches
+    #include "${WM_PROJECT_DIR}/etc/caseDicts/setConstraintTypes"
+
+    //- Define inlet conditions
     #include "include/fixedInlet"
 
     outlet
diff --git a/tutorials/incompressible/simpleFoam/motorBike/0.org/nut b/tutorials/incompressible/simpleFoam/motorBike/0.org/nut
index 36bdb52b40e86a8441fdfacbef8b7b4a21f6b2b5..999d0b331ea7193114a3bfd0fe39a0b9dd7c2375 100644
--- a/tutorials/incompressible/simpleFoam/motorBike/0.org/nut
+++ b/tutorials/incompressible/simpleFoam/motorBike/0.org/nut
@@ -21,6 +21,9 @@ internalField   uniform 0;
 
 boundaryField
 {
+    //- Set patchGroups for constraint patches
+    #include "${WM_PROJECT_DIR}/etc/caseDicts/setConstraintTypes"
+
     frontAndBack
     {
         type            calculated;
diff --git a/tutorials/incompressible/simpleFoam/motorBike/0.org/omega b/tutorials/incompressible/simpleFoam/motorBike/0.org/omega
index 0c563f487fe63c1611fe9004dbb3ec4e0c7156d4..5362d6c44e1c87b97d88cd93c1e040724ab07674 100644
--- a/tutorials/incompressible/simpleFoam/motorBike/0.org/omega
+++ b/tutorials/incompressible/simpleFoam/motorBike/0.org/omega
@@ -22,6 +22,9 @@ internalField   uniform $turbulentOmega;
 
 boundaryField
 {
+    //- Set patchGroups for constraint patches
+    #include "${WM_PROJECT_DIR}/etc/caseDicts/setConstraintTypes"
+
     #include "include/fixedInlet"
 
     outlet
diff --git a/tutorials/incompressible/simpleFoam/motorBike/0.org/p b/tutorials/incompressible/simpleFoam/motorBike/0.org/p
index eaf35d93269be03aa05f2850a1f09c2d70200e6b..e6eb255c41d060020335b314f126a956eec66256 100644
--- a/tutorials/incompressible/simpleFoam/motorBike/0.org/p
+++ b/tutorials/incompressible/simpleFoam/motorBike/0.org/p
@@ -22,6 +22,9 @@ internalField   uniform $pressure;
 
 boundaryField
 {
+    //- Set patchGroups for constraint patches
+    #include "${WM_PROJECT_DIR}/etc/caseDicts/setConstraintTypes"
+
     inlet
     {
         type            zeroGradient;
diff --git a/tutorials/incompressible/simpleFoam/motorBike/Allrun b/tutorials/incompressible/simpleFoam/motorBike/Allrun
index d8fdb9d007a75fc3add9c3585a9199a4f0be229a..714dba48dc36754d69f2c7400414afb8a3a785fc 100755
--- a/tutorials/incompressible/simpleFoam/motorBike/Allrun
+++ b/tutorials/incompressible/simpleFoam/motorBike/Allrun
@@ -7,12 +7,19 @@ cd ${0%/*} || exit 1    # run from this directory
 # copy motorbike surface from resources folder
 cp $FOAM_TUTORIALS/resources/geometry/motorBike.obj.gz constant/triSurface/
 
-cp -r 0.org 0 > /dev/null 2>&1
-
 runApplication blockMesh
-runApplication snappyHexMesh -overwrite
 
-runApplication potentialFoam -noFunctionObjects -writep
-runApplication `getApplication`
+runApplication decomposePar
+runParallel snappyHexMesh 6 -overwrite
+
+#- For non-parallel running
+#cp -r 0.org 0 > /dev/null 2>&1
+
+#- For parallel running
+ls -d processor* | xargs -i rm -rf ./{}/0 $1
+ls -d processor* | xargs -i cp -r 0.org ./{}/0 $1
+
+runParallel potentialFoam 6 -noFunctionObjects -writep
+runParallel `getApplication` 6
 
 # ----------------------------------------------------------------- end-of-file
diff --git a/tutorials/mesh/cvMesh/flange/system/cvMeshDict b/tutorials/mesh/cvMesh/flange/system/cvMeshDict
index cbd86c379d4f08a8008b6e76ad3b062b93305dd8..e0dace7c28388a91b23c8f0ad12e712d419d8594 100644
--- a/tutorials/mesh/cvMesh/flange/system/cvMeshDict
+++ b/tutorials/mesh/cvMesh/flange/system/cvMeshDict
@@ -217,7 +217,9 @@ polyMeshFiltering
 }
 
 
-#include "meshQualityControls"
-
+meshQualityControls
+{
+    #include "meshQualityDict"
+}
 
 // ************************************************************************* //
diff --git a/tutorials/mesh/cvMesh/flange/system/meshQualityControls b/tutorials/mesh/cvMesh/flange/system/meshQualityControls
deleted file mode 100644
index 09ebbb2458e42e23f5b07ed411ce74493f1d7d2b..0000000000000000000000000000000000000000
--- a/tutorials/mesh/cvMesh/flange/system/meshQualityControls
+++ /dev/null
@@ -1,76 +0,0 @@
-/*--------------------------------*- 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;
-
-    root            "";
-    case            "";
-    instance        "";
-    local           "";
-
-    class           dictionary;
-    object          meshQualityControls;
-}
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-meshQualityControls
-{
-    //- Maximum non-orthogonality allowed. Set to 180 to disable.
-    maxNonOrtho         65;
-
-    //- Max skewness allowed. Set to <0 to disable.
-    maxBoundarySkewness 50;
-    maxInternalSkewness 10;
-
-    //- Max concaveness allowed. Is angle (in degrees) below which concavity
-    //  is allowed. 0 is straight face, <0 would be convex face.
-    //  Set to 180 to disable.
-    maxConcave          80;
-
-    //- Minimum quality of the tet formed by the face-centre
-    //  and variable base point minimum decomposition triangles and
-    //  the cell centre. This has to be a positive number for tracking
-    //  to work. Set to very negative number (e.g. -1E30) to
-    //  disable.
-    //     <0 = inside out tet,
-    //      0 = flat tet
-    //      1 = regular tet
-    minTetQuality       1e-30;
-
-    //- Minimum pyramid volume. Is absolute volume of cell pyramid.
-    //  Set to a sensible fraction of the smallest cell volume expected.
-    //  Set to very negative number (e.g. -1E30) to disable.
-    minVol              0;
-
-    //- Minimum face area. Set to <0 to disable.
-    minArea             -1;
-
-    //- Minimum face twist. Set to <-1 to disable. dot product of face normal
-    //- and face centre triangles normal
-    minTwist            0.001;
-
-    //- minimum normalised cell determinant
-    //- 1 = hex, <= 0 = folded or flattened illegal cell
-    minDeterminant      0.001;
-
-    //- minFaceWeight (0 -> 0.5)
-    minFaceWeight       0.02;
-
-    //- minVolRatio (0 -> 1)
-    minVolRatio         0.01;
-
-    //must be >0 for Fluent compatibility
-    minTriangleTwist    -1;
-}
-
-
-// ************************************************************************* //
diff --git a/tutorials/mesh/cvMesh/flange/system/meshQualityDict b/tutorials/mesh/cvMesh/flange/system/meshQualityDict
new file mode 100644
index 0000000000000000000000000000000000000000..1b83e2bd87b647e97cf8b39d2dccbb30af267c8e
--- /dev/null
+++ b/tutorials/mesh/cvMesh/flange/system/meshQualityDict
@@ -0,0 +1,73 @@
+/*--------------------------------*- 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;
+
+    root            "";
+    case            "";
+    instance        "";
+    local           "";
+
+    class           dictionary;
+    object          meshQualityDict;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+//- Maximum non-orthogonality allowed. Set to 180 to disable.
+maxNonOrtho         65;
+
+//- Max skewness allowed. Set to <0 to disable.
+maxBoundarySkewness 50;
+maxInternalSkewness 10;
+
+//- Max concaveness allowed. Is angle (in degrees) below which concavity
+//  is allowed. 0 is straight face, <0 would be convex face.
+//  Set to 180 to disable.
+maxConcave          80;
+
+//- Minimum quality of the tet formed by the face-centre
+//  and variable base point minimum decomposition triangles and
+//  the cell centre. This has to be a positive number for tracking
+//  to work. Set to very negative number (e.g. -1E30) to
+//  disable.
+//     <0 = inside out tet,
+//      0 = flat tet
+//      1 = regular tet
+minTetQuality       1e-30;
+
+//- Minimum pyramid volume. Is absolute volume of cell pyramid.
+//  Set to a sensible fraction of the smallest cell volume expected.
+//  Set to very negative number (e.g. -1E30) to disable.
+minVol              0;
+
+//- Minimum face area. Set to <0 to disable.
+minArea             -1;
+
+//- Minimum face twist. Set to <-1 to disable. dot product of face normal
+//- and face centre triangles normal
+minTwist            0.001;
+
+//- minimum normalised cell determinant
+//- 1 = hex, <= 0 = folded or flattened illegal cell
+minDeterminant      0.001;
+
+//- minFaceWeight (0 -> 0.5)
+minFaceWeight       0.02;
+
+//- minVolRatio (0 -> 1)
+minVolRatio         0.01;
+
+//must be >0 for Fluent compatibility
+minTriangleTwist    -1;
+
+
+// ************************************************************************* //
diff --git a/tutorials/mesh/cvMesh/flange/system/snappyHexMeshDict b/tutorials/mesh/cvMesh/flange/system/snappyHexMeshDict
index 034e3c0e749d95c36508975773bcddabbd49a150..9da7fabcafea5f7ef0e7951a190148200f5a701c 100644
--- a/tutorials/mesh/cvMesh/flange/system/snappyHexMeshDict
+++ b/tutorials/mesh/cvMesh/flange/system/snappyHexMeshDict
@@ -278,12 +278,12 @@ addLayersControls
 
 
 
-// Generic mesh quality settings. At any undoable phase these determine
-// where to undo.
-#include "meshQualityControls"
-
 meshQualityControls
 {
+    // Generic mesh quality settings. At any undoable phase these determine
+    // where to undo.
+    #include "meshQualityDict"
+
     //- Number of error distribution iterations
     nSmoothScale 4;
     //- amount to scale back displacement at error points
diff --git a/tutorials/mesh/moveDynamicMesh/SnakeRiverCanyon/constant/dynamicMeshDict b/tutorials/mesh/moveDynamicMesh/SnakeRiverCanyon/constant/dynamicMeshDict
index 534ea483fed24e0f1ea7db8b291ff775b77afbf9..4aaa9e488c04de64b979f32dcabdd83f3b760577 100644
--- a/tutorials/mesh/moveDynamicMesh/SnakeRiverCanyon/constant/dynamicMeshDict
+++ b/tutorials/mesh/moveDynamicMesh/SnakeRiverCanyon/constant/dynamicMeshDict
@@ -23,10 +23,13 @@ motionSolverLibs ("libfvMotionSolvers.so");
 solver displacementSBRStress;   //displacementLaplacian;
 //solver velocityComponentLaplacian z;
 
-//diffusivity  uniform;
-//diffusivity  directional (1 200 0);
-//diffusivity  motionDirectional (1 1000 0);
-//diffusivity  file motionDiffusivity;
-diffusivity  quadratic inverseDistance 1(minZ);
+displacementSBRStressCoeffs
+{
+    // diffusivity  uniform;
+    // diffusivity  directional (1 200 0);
+    // diffusivity  motionDirectional (1 1000 0);
+    // diffusivity  file motionDiffusivity;
+    diffusivity  quadratic inverseDistance 1(minZ);
+}
 
 // ************************************************************************* //
diff --git a/tutorials/mesh/moveDynamicMesh/simpleHarmonicMotion/constant/dynamicMeshDict b/tutorials/mesh/moveDynamicMesh/simpleHarmonicMotion/constant/dynamicMeshDict
index 6562e1525db99724ca853b712e0518ffded2356e..b4afb71442198246bea160a90756a68d8d1d807c 100644
--- a/tutorials/mesh/moveDynamicMesh/simpleHarmonicMotion/constant/dynamicMeshDict
+++ b/tutorials/mesh/moveDynamicMesh/simpleHarmonicMotion/constant/dynamicMeshDict
@@ -20,7 +20,10 @@ motionSolverLibs ("libfvMotionSolvers.so");
 
 solver            displacementLaplacian;
 
-diffusivity       inverseDistance (movingBlock);
+displacementLaplacianCoeffs
+{
+    diffusivity       inverseDistance (movingBlock);
+}
 
 
 // ************************************************************************* //
diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/dynamicMeshDict b/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/dynamicMeshDict
index 17487971f45b5d4a5cd9fbf1d71e3995aa815ca6..8001efbebcfad0057065cd89baeff3e54c58b6bb 100644
--- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/dynamicMeshDict
+++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/dynamicMeshDict
@@ -20,7 +20,10 @@ motionSolverLibs ("libfvMotionSolvers.so");
 
 solver            displacementLaplacian;
 
-diffusivity       inverseDistance (floatingObject);
+displacementLaplacianCoeffs
+{
+    diffusivity       inverseDistance (floatingObject);
+}
 
 
 // ************************************************************************* //