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); +} // ************************************************************************* //